securityos/node_modules/webamp/built/webamp.bundle.min.js.map

1 line
2.5 MiB
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{"version":3,"sources":["webpack://Webamp/webpack/universalModuleDefinition","webpack://Webamp/webpack/bootstrap","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/react/jsx-runtime.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/react/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/prop-types/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/@babel/runtime/helpers/defineProperty.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/classnames/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/reselect/lib/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/helpers/extends.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/helpers/defineProperty.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/react-dom/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/helpers/possibleConstructorReturn.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/helpers/classCallCheck.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/helpers/inherits.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/helpers/createClass.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/token-types/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_core.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/helpers/objectWithoutProperties.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/debug/src/browser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/node-libs-browser/node_modules/buffer/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_wks.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/warning/warning.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/css-loader/lib/css-base.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/style-loader/lib/addStyles.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/redux/es/redux.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/fscreen/lib/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_export.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_global.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-dp.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_descriptors.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/common/Util.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/common/FourCC.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_has.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_to-iobject.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/helpers/toConsumableArray.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/endianness/endianness.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/utf8-buffer/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/byte-data/lib/int-parser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/ieee754-buffer/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/byte-data/index.js","webpack://Webamp/(webpack)/buildin/global.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/assert/assert.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_hide.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_an-object.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_is-object.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_fails.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/invariant/browser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/common/BasicParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_property-desc.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_to-object.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_iterators.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/helpers/get.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/object-assign/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/common/GenericTagMapper.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-keys.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_library.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_uid.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-pie.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/helpers/typeof.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/strtok3/lib/type.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/lib/_stream_duplex.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/_Symbol.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_ctx.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_to-primitive.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_cof.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_defined.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_to-integer.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_shared-key.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_shared.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_enum-bug-keys.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-gops.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-create.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_set-to-string-tag.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_wks-ext.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_wks-define.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-gopd.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/react-is/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/add-dom-event-listener/lib/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/symbol-observable/es/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/winamp-eqf/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/process/browser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/inherits/inherits_browser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/id3v2/ID3v2Parser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/id3v2/ID3v2.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-util-is/lib/util.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/winamp-eqf/constants.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_dom-create.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-keys-internal.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_iobject.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_to-length.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/core-js/object/define-property.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/es6.string.iterator.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_iter-define.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_redefine.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-gpo.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-gopn.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-sap.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-util/lib/Dom/addEventListener.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/lib/utils.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/component-indexof/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/symbol-observable/es/ponyfill.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/redux-devtools-extension/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/tinyqueue/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/deburr.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/lib/Slider.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/shallowequal/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/component-classes/index.js","webpack://Webamp/../src/index.ts","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/strtok3/lib/core.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/process-nextick-args/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/apev2/APEv2Parser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/id3v2/AbstractID3Parser.js","webpack://Webamp/./node_modules/react-redux/es/components/Context.js","webpack://Webamp/./node_modules/react-redux/es/utils/batch.js","webpack://Webamp/./node_modules/react-redux/es/utils/Subscription.js","webpack://Webamp/./node_modules/react-redux/es/components/Provider.js","webpack://Webamp/./node_modules/react-redux/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://Webamp/./node_modules/react-redux/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://Webamp/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack://Webamp/./node_modules/react-redux/es/components/connectAdvanced.js","webpack://Webamp/./node_modules/react-redux/es/utils/shallowEqual.js","webpack://Webamp/./node_modules/react-redux/es/utils/isPlainObject.js","webpack://Webamp/./node_modules/react-redux/es/utils/warning.js","webpack://Webamp/./node_modules/react-redux/es/utils/verifyPlainObject.js","webpack://Webamp/./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack://Webamp/./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack://Webamp/./node_modules/react-redux/es/connect/mapStateToProps.js","webpack://Webamp/./node_modules/react-redux/es/connect/mergeProps.js","webpack://Webamp/./node_modules/react-redux/es/connect/verifySubselectors.js","webpack://Webamp/./node_modules/react-redux/es/connect/selectorFactory.js","webpack://Webamp/./node_modules/react-redux/es/connect/connect.js","webpack://Webamp/./node_modules/react-redux/es/hooks/useReduxContext.js","webpack://Webamp/./node_modules/react-redux/es/hooks/useStore.js","webpack://Webamp/./node_modules/react-redux/es/hooks/useDispatch.js","webpack://Webamp/./node_modules/react-redux/es/hooks/useSelector.js","webpack://Webamp/./node_modules/react-redux/es/utils/reactBatchedUpdates.js","webpack://Webamp/./node_modules/react-redux/es/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/redux-thunk/es/index.js","webpack://Webamp/./js/actionTypes.ts","webpack://Webamp/./js/constants.ts","webpack://Webamp/./js/utils.ts","webpack://Webamp/./js/reducers/playlist.ts","webpack://Webamp/./js/reducers/windows.ts","webpack://Webamp/./js/reducers/media.ts","webpack://Webamp/./js/reducers/display.ts","webpack://Webamp/./js/reducers/userInput.ts","webpack://Webamp/./js/reducers/equalizer.ts","webpack://Webamp/./js/reducers/network.ts","webpack://Webamp/./js/reducers/settings.ts","webpack://Webamp/./js/fileUtils.ts","webpack://Webamp/./js/trackUtils.ts","webpack://Webamp/./js/reducers/tracks.ts","webpack://Webamp/./js/types.ts","webpack://Webamp/./js/reducers/milkdrop.ts","webpack://Webamp/./js/reducers/index.ts","webpack://Webamp/./js/playlistHtml.tsx","webpack://Webamp/./js/marqueeUtils.tsx","webpack://Webamp/./js/resizeUtils.ts","webpack://Webamp/./js/selectors.ts","webpack://Webamp/./js/snapUtils.ts","webpack://Webamp/./js/actionCreators/windows.ts","webpack://Webamp/./js/actionCreators/media.ts","webpack://Webamp/./js/actionCreators/equalizer.ts","webpack://Webamp/./js/skinSprites.ts","webpack://Webamp/./js/regionParser.ts","webpack://Webamp/./js/skinParserUtils.ts","webpack://Webamp/./js/skinParser.js","webpack://Webamp/./js/loadQueue.js","webpack://Webamp/./js/actionCreators/playlist.ts","webpack://Webamp/./js/actionCreators/files.ts","webpack://Webamp/./js/actionCreators/milkdrop.ts","webpack://Webamp/./js/actionCreators/index.ts","webpack://Webamp/./js/mediaMiddleware.ts","webpack://Webamp/./js/store.ts","webpack://Webamp/./js/components/Fullscreen.tsx","webpack://Webamp/./js/hooks.ts","webpack://Webamp/./js/components/ResizeTarget.tsx","webpack://Webamp/./js/components/FocusTarget.tsx","webpack://Webamp/./js/components/GenWindow/index.tsx","webpack://Webamp/./js/components/MilkdropWindow/Visualizer.tsx","webpack://Webamp/./js/components/MilkdropWindow/Background.tsx","webpack://Webamp/./js/components/MilkdropWindow/PresetOverlay.tsx","webpack://Webamp/./js/components/DropTarget.tsx","webpack://Webamp/./js/components/ContextMenu.tsx","webpack://Webamp/./js/components/ContextMenuWrapper.tsx","webpack://Webamp/./js/components/MilkdropWindow/MilkdropContextMenu.tsx","webpack://Webamp/./js/components/MilkdropWindow/Desktop.tsx","webpack://Webamp/./js/components/MilkdropWindow/index.tsx","webpack://Webamp/./js/components/PlaybackContextMenu.tsx","webpack://Webamp/./js/components/SkinsContextMenu.tsx","webpack://Webamp/./js/components/OptionsContextMenu.tsx","webpack://Webamp/./js/components/MainWindow/MainContextMenu.tsx","webpack://Webamp/./js/components/WindowManager.tsx","webpack://Webamp/./js/components/Character.tsx","webpack://Webamp/./js/components/MiniTime.tsx","webpack://Webamp/./js/components/ClickedDiv.tsx","webpack://Webamp/./js/components/ContextMenuTarget.tsx","webpack://Webamp/./js/components/useOscilloscopeVisualizer.ts","webpack://Webamp/./js/components/useBarVisualizer.ts","webpack://Webamp/./js/components/Visualizer.tsx","webpack://Webamp/./js/components/MainWindow/ActionButtons.tsx","webpack://Webamp/./js/components/Balance.tsx","webpack://Webamp/./js/components/MainWindow/MainBalance.tsx","webpack://Webamp/./js/components/MainWindow/Close.tsx","webpack://Webamp/./js/components/MainWindow/ClutterBar.tsx","webpack://Webamp/./js/components/MainWindow/Eject.tsx","webpack://Webamp/./js/components/MainWindow/EqToggleButton.tsx","webpack://Webamp/./js/components/MainWindow/PlaylistToggleButton.tsx","webpack://Webamp/./js/components/CharacterString.tsx","webpack://Webamp/./js/components/MainWindow/Kbps.tsx","webpack://Webamp/./js/components/MainWindow/Khz.tsx","webpack://Webamp/./js/components/MainWindow/Marquee.tsx","webpack://Webamp/./js/components/MainWindow/MonoStereo.tsx","webpack://Webamp/./js/components/MainWindow/Position.tsx","webpack://Webamp/./js/components/MainWindow/Repeat.tsx","webpack://Webamp/./js/components/MainWindow/Shade.tsx","webpack://Webamp/./js/components/MainWindow/Minimize.tsx","webpack://Webamp/./js/components/MainWindow/Shuffle.tsx","webpack://Webamp/./js/components/MainWindow/Time.tsx","webpack://Webamp/./js/components/Volume.tsx","webpack://Webamp/./js/components/MainWindow/MainVolume.tsx","webpack://Webamp/./js/components/MainWindow/index.tsx","webpack://Webamp/./js/components/PlaylistWindow/PlaylistResizeTarget.tsx","webpack://Webamp/./js/components/PlaylistWindow/PlaylistShade.tsx","webpack://Webamp/./js/components/PlaylistWindow/PlaylistMenuEntry.tsx","webpack://Webamp/./js/components/PlaylistWindow/PlaylistMenu.tsx","webpack://Webamp/./js/components/PlaylistWindow/AddMenu.tsx","webpack://Webamp/./js/components/PlaylistWindow/RemoveMenu.tsx","webpack://Webamp/./js/components/PlaylistWindow/SelectionMenu.tsx","webpack://Webamp/./js/components/PlaylistWindow/SortContextMenu.tsx","webpack://Webamp/./js/components/PlaylistWindow/MiscOptionsContextMenu.tsx","webpack://Webamp/./js/components/PlaylistWindow/MiscMenu.tsx","webpack://Webamp/./js/components/PlaylistWindow/ListMenu.tsx","webpack://Webamp/./js/components/PlaylistWindow/RunningTimeDisplay.tsx","webpack://Webamp/./js/components/PlaylistWindow/PlaylistActionArea.tsx","webpack://Webamp/./js/components/PlaylistWindow/TrackCell.tsx","webpack://Webamp/./js/components/PlaylistWindow/TrackTitle.tsx","webpack://Webamp/./js/components/PlaylistWindow/TrackList.tsx","webpack://Webamp/./js/components/PlaylistWindow/ScrollBar.tsx","webpack://Webamp/./js/components/PlaylistWindow/index.tsx","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/es/common/Track.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-util/es/Dom/addEventListener.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/es/common/Steps.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/es/common/Marks.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/es/Handle.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-util/es/KeyCode.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/es/utils.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/es/common/createSlider.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/es/Slider.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/es/Range.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-util/es/Dom/contains.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-util/es/ContainerRender.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-util/es/Portal.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-trigger/es/utils.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/dom-align/dist-web/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-align/es/util.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-align/es/Align.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-align/es/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-util/es/unsafeLifecyclesPolyfill.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-animate/es/ChildrenUtils.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/css-animation/es/Event.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/css-animation/es/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-animate/es/util/animate.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-animate/es/AnimateChild.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-animate/es/Animate.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-trigger/es/LazyRenderBox.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-trigger/es/PopupInner.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-trigger/es/Popup.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-trigger/es/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-tooltip/es/placements.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-tooltip/es/Content.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-tooltip/es/Tooltip.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-tooltip/es/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/es/createSliderWithTooltip.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/es/index.js","webpack://Webamp/./js/components/EqualizerWindow/Band.tsx","webpack://Webamp/./js/components/EqualizerWindow/EqOn.tsx","webpack://Webamp/./js/components/EqualizerWindow/EqAuto.tsx","webpack://Webamp/./js/components/EqualizerWindow/spline.js","webpack://Webamp/./js/components/EqualizerWindow/EqGraph.tsx","webpack://Webamp/./js/components/EqualizerWindow/PresetsContextMenu.tsx","webpack://Webamp/./js/components/EqualizerWindow/EqTitleButtons.tsx","webpack://Webamp/./js/components/EqualizerWindow/EqualizerShade.tsx","webpack://Webamp/./js/components/EqualizerWindow/index.tsx","webpack://Webamp/./js/skinSelectors.ts","webpack://Webamp/./js/components/Css.tsx","webpack://Webamp/./js/components/ClipPaths.tsx","webpack://Webamp/./js/components/Skin.tsx","webpack://Webamp/./js/components/App.tsx","webpack://Webamp/./js/hotkeys.ts","webpack://Webamp/./js/emitter.ts","webpack://Webamp/./js/media/StereoBalanceNode.js","webpack://Webamp/./js/media/elementSource.ts","webpack://Webamp/./js/media/index.ts","webpack://Webamp/./js/Disposable.ts","webpack://Webamp/./js/webampLazy.tsx","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/id3v1/ID3v1Parser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/id3v2/ID3Stream.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/node-libs-browser/node_modules/events/events.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/readable-browser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/node_modules/safe-buffer/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/lib/_stream_writable.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/ogg/vorbis/VorbisParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/react/cjs/react.production.min.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/react-dom/cjs/react-dom.production.min.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/scheduler/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/scheduler/cjs/scheduler.production.min.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/prop-types/factoryWithThrowingShims.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/react-is/cjs/react-is.production.min.js","webpack://Webamp/(webpack)/buildin/harmony-module.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/winamp-eqf/parser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/winamp-eqf/creator.js","webpack://Webamp/./css/gen-window.css?95e1","webpack://Webamp/./css/gen-window.css","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/style-loader/lib/urls.js","webpack://Webamp/./css/milkdrop-window.css?e362","webpack://Webamp/./css/milkdrop-window.css","webpack://Webamp/./css/context-menu.css?44e8","webpack://Webamp/./css/context-menu.css","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/_deburrLetter.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/_basePropertyOf.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/toString.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/_baseToString.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/_root.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/_freeGlobal.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/_arrayMap.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/isArray.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/isSymbol.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/_baseGetTag.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/_getRawTag.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/_objectToString.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/lodash/isObjectLike.js","webpack://Webamp/./css/mini-time.css?e0d0","webpack://Webamp/./css/mini-time.css","webpack://Webamp/./css/main-window.css?888e","webpack://Webamp/./css/main-window.css","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/core-js/object/assign.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/fn/object/assign.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/es6.object.assign.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_a-function.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-assign.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_array-includes.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_to-absolute-index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/fn/object/define-property.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/es6.object.define-property.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/core-js/symbol/iterator.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/fn/symbol/iterator.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_string-at.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_iter-create.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-dps.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_html.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/web.dom.iterable.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/es6.array.iterator.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_add-to-unscopables.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_iter-step.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/core-js/symbol.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/fn/symbol/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/es6.symbol.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_meta.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_enum-keys.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_is-array.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_object-gopn-ext.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/es7.symbol.observable.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/core-js/object/set-prototype-of.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/fn/object/set-prototype-of.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/es6.object.set-prototype-of.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_set-proto.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/core-js/object/create.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/fn/object/create.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/es6.object.create.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/lib/common/Track.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/lib/common/createSlider.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/core-js/object/get-prototype-of.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/fn/object/get-prototype-of.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/es6.object.get-prototype-of.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/fn/object/get-own-property-descriptor.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/add-dom-event-listener/lib/EventObject.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/add-dom-event-listener/lib/EventBaseObject.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/lib/common/Steps.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/lib/common/Marks.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-slider/lib/Handle.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/babel-runtime/core-js/array/from.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/fn/array/from.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/es6.array.from.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_iter-call.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_is-array-iter.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_create-property.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/core.get-iterator-method.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_classof.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/core-js/library/modules/_iter-detect.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/rc-util/lib/KeyCode.js","webpack://Webamp/./css/playlist-window.css?2f39","webpack://Webamp/./css/playlist-window.css","webpack://Webamp/./css/equalizer-window.css?2475","webpack://Webamp/./css/equalizer-window.css","webpack://Webamp/../src/parser.ts","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/riff-file/index.js","webpack://Webamp/./css/webamp.css?6321","webpack://Webamp/./css/webamp.css","webpack://Webamp/./css/base-skin.css?5a6a","webpack://Webamp/./css/base-skin.css","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/ieee754/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/isarray/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/timers-browserify/main.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/node_modules/file-type/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/stream-browserify/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/lib/_stream_readable.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/string_decoder/lib/string_decoder.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/lib/_stream_transform.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/asf/GUID.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/ogg/vorbis/Vorbis.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/mp4/AtomToken.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/jszip/dist/jszip.min.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata-browser/dist/index.js","webpack://Webamp/./js/webamp.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/base64-js/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/setimmediate/setImmediate.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/debug/src/common.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/ms/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/core.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/strtok3/lib/ReadStreamTokenizer.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/strtok3/lib/AbstractTokenizer.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/then-read-stream/lib/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/node-libs-browser/node_modules/util/util.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/strtok3/lib/BufferTokenizer.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/ParserFactory.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/node_modules/file-type/util.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/media-typer/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/common/MetadataCollector.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/common/GenericTagTypes.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/common/CombinedTagMapper.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/id3v1/ID3v1TagMap.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/common/Windows1292Decoder.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/id3v2/ID3v24TagMapper.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/asf/AsfTagMapper.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/id3v2/ID3v22TagMapper.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/apev2/APEv2TagMapper.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/mp4/MP4TagMapper.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/ogg/vorbis/VorbisTagMapper.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/riff/RiffInfoTagMap.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/aiff/AiffParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/id3v2/FrameParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/aiff/AiffToken.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/iff/index.js","webpack://Webamp/util (ignored)","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack://Webamp/util (ignored)?ba25","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/util-deprecate/browser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/safe-buffer/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/lib/_stream_passthrough.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/writable-browser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/duplex-browser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/transform.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/readable-stream/passthrough.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/apev2/APEv2Token.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/asf/AsfParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/asf/AsfObject.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/asf/AsfUtil.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/flac/FlacParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/mp4/MP4Parser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/mp4/Atom.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/mpeg/MpegParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/mpeg/XingTag.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/musepack/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/musepack/sv8/MpcSv8Parser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/musepack/sv8/StreamVersion8.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/musepack/sv7/MpcSv7Parser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/musepack/sv7/StreamVersion7.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/musepack/sv7/BitReader.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/ogg/OggParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/ogg/opus/OpusParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/ogg/opus/Opus.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/ogg/speex/SpeexParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/ogg/speex/Speex.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/riff/WaveParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/riff/RiffChunk.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/wav/WaveChunk.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/wavpack/WavPackParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/wavpack/WavPackToken.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/dsf/DsfParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/dsf/DsfChunk.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/dsdiff/DsdiffParser.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata/lib/dsdiff/DsdiffToken.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/typedarray-to-buffer/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/is-typedarray/index.js","webpack://Webamp//Users/jordaneldredge/projects/webamp/node_modules/music-metadata-browser/dist/fetch/Browser2NodeStream.js"],"names":["ADD_TRACK_FROM_URL","CLOSE_WINAMP","OPEN_WINAMP","MINIMIZE_WINAMP","IS_PLAYING","IS_STOPPED","PAUSE","PLAY","SEEK_TO_PERCENT_COMPLETE","SET_BALANCE","SET_BAND_VALUE","SET_FOCUS","SET_BAND_FOCUS","SET_FOCUSED_WINDOW","SET_MEDIA","SET_SCRUB_POSITION","SET_SKIN_DATA","SET_VOLUME","START_WORKING","STEP_MARQUEE","STOP","STOP_WORKING","TOGGLE_DOUBLESIZE_MODE","SET_EQ_AUTO","SET_EQ_ON","SET_EQ_OFF","TOGGLE_LLAMA_MODE","TOGGLE_REPEAT","TOGGLE_SHUFFLE","TOGGLE_TIME_MODE","TOGGLE_VISUALIZER_STYLE","UNSET_FOCUS","UPDATE_TIME_ELAPSED","SET_USER_MESSAGE","UNSET_USER_MESSAGE","SET_PLAYLIST_SCROLL_POSITION","CLICKED_TRACK","CTRL_CLICKED_TRACK","SHIFT_CLICKED_TRACK","SELECT_ALL","SELECT_ZERO","INVERT_SELECTION","REMOVE_ALL_TRACKS","CROP_TRACKS","FILE_INFO","REMOVE_TRACKS","SET_AVAILABLE_SKINS","REVERSE_LIST","RANDOMIZE_LIST","SET_TRACK_ORDER","PLAY_TRACK","BUFFER_TRACK","DRAG_SELECTED","SET_MEDIA_TAGS","SET_MEDIA_DURATION","TOGGLE_WINDOW","CLOSE_WINDOW","MEDIA_TAG_REQUEST_INITIALIZED","MEDIA_TAG_REQUEST_FAILED","NETWORK_CONNECTED","NETWORK_DISCONNECTED","UPDATE_WINDOW_POSITIONS","WINDOW_SIZE_CHANGED","TOGGLE_WINDOW_SHADE_MODE","LOADED","SET_Z_INDEX","DISABLE_MARQUEE","SET_DUMMY_VIZ_DATA","SET_WINDOW_VISIBILITY","LOADING","CLOSE_REQUESTED","LOAD_SERIALIZED_STATE","RESET_WINDOW_SIZES","BROWSER_WINDOW_SIZE_CHANGED","LOAD_DEFAULT_SKIN","ENABLE_MILKDROP","SET_MILKDROP_DESKTOP","SET_VISUALIZER_STYLE","GOT_BUTTERCHURN_PRESETS","GOT_BUTTERCHURN","RESOLVE_PRESET_AT_INDEX","SELECT_PRESET_AT_INDEX","TOGGLE_PRESET_OVERLAY","PRESET_REQUESTED","TOGGLE_RANDOMIZE_PRESETS","TOGGLE_PRESET_CYCLING","SCHEDULE_MILKDROP_MESSAGE","SET_MILKDROP_FULLSCREEN","BANDS","WINDOWS","MAIN","PLAYLIST","EQUALIZER","MILKDROP","LOAD_STYLE","BUFFER","NONE","MEDIA_TAG_REQUEST_STATUS","INITIALIZED","FAILED","COMPLETE","NOT_REQUESTED","UTF8_ELLIPSIS","CHARACTER_WIDTH","WINDOW_RESIZE_SEGMENT_WIDTH","WINDOW_RESIZE_SEGMENT_HEIGHT","WINDOW_HEIGHT","WINDOW_WIDTH","TRACK_HEIGHT","LETTERS","split","DEFAULT_SKIN","baseSkin","VISUALIZERS","OSCILLOSCOPE","BAR","VISUALIZER_ORDER","TIME_MODE","ELAPSED","REMAINING","MEDIA_STATUS","PLAYING","STOPPED","PAUSED","imgFromUrl","url","Promise","resolve","reject","img","Image","onload","onerror","src","getTimeObj","time","minutesFirstDigit","minutesSecondDigit","secondsFirstDigit","secondsSecondDigit","minutes","Math","floor","seconds","digits","String","getTimeStr","truncate","join","parseViscolors","text","entries","regex","colors","map","line","exec","filter","Boolean","matches","slice","rgb","i","SECTION_REGEX","PROPERTY_REGEX","parseIni","section","match","reduce","data","key","trim","toLowerCase","value","replace","clamp","min","max","sum","values","total","base64FromDataArray","dataArray","window","btoa","fromCharCode","base64FromArrayBuffer","arrayBuffer","Uint8Array","downloadURI","uri","name","link","document","createElement","download","href","body","appendChild","click","removeChild","toPercent","percentToRange","percent","round","percentToIndex","length","rebound","oldMin","oldMax","newMin","newMax","oldValue","normalizeEqBand","denormalizeEqBand","merge","target","source","s","t","Object","keys","assign","segment","newValues","ratio","shuffle","array","sorted","m","random","val","sort","iteratee","a","b","aKey","bKey","moveSelected","arr","isSelected","offset","newArr","Array","next","from","spliceIn","original","start","splice","replaceAtIndex","index","newValue","debounce","func","delay","timeout","callbackArgs","context","args","clearTimeout","setTimeout","apply","throttle","counter","uniqueId","objectForEach","obj","cb","forEach","objectMap","modified","objectFilter","predicate","newObj","calculateBoundingBox","windows","windowSizes","w","left","x","top","y","bottom","height","right","width","findLastIndex","getWindowSize","scrollWidth","documentElement","offsetWidth","clientWidth","scrollHeight","offsetHeight","clientHeight","getScreenSize","screen","weakMapMemoize","cache","WeakMap","has","set","get","defaultPlaylistState","trackOrder","currentTrack","lastSelectedIndex","selectedTracks","Set","toggleSetMembership","delete","add","playlist","state","action","type","id","newSelectedTracks","clickedIndex","end","actionIds","ids","Number","trackId","reverse","atIndex","defaultWindowsState","focused","positionsAreRelative","genWindows","title","size","open","hidden","shade","canResize","canShade","canDouble","hotkey","position","browserWindowSize","windowOrder","windowId","Error","windowState","absolute","Utils","newPosition","positions","serializedState","serializedW","getSerializedState","defaultState","timeMode","timeElapsed","volume","balance","repeat","status","media","newMode","elapsed","defaultSkinGenExColors","itemBackground","itemForeground","windowBackground","buttonText","windowText","divider","playlistSelection","listHeaderBackground","listHeaderText","listHeaderFrameTopAndLeft","listHeaderFrameBottomAndRight","listHeaderFramePressed","listHeaderDeadArea","scrollbarOne","scrollbarTwo","pressedScrollbarOne","pressedScrollbarTwo","scrollbarDeadArea","listTextHighlighted","listTextHighlightedBackground","listTextSelected","listTextSelectedBackground","defaultDisplayState","doubled","marqueeStep","disableMarquee","loading","llama","closed","working","skinImages","images","skinColors","skinCursors","skinPlaylistStyle","skinRegion","visualizerStyle","dummyVizData","playlistScrollPosition","skinGenLetterWidths","skinGenExColors","additionalVisualizers","zIndex","display","rest","upgrade","newSkinCursors","newCursors","cursor","undefined","getVisualizerStyle","createSelector","visualizationStyle","defaultUserInput","focus","bandFocused","scrubPosition","userMessage","userInput","input","message","on","auto","sliders","preamp","equalizer","newSliders","band","network","connected","defaultSettingsState","availableSkins","settings","skins","genMediaTags","file","musicMetadata","invariant","options","duration","skipPostHeaders","fetchFromUrl","parseBlob","genMediaDuration","audio","crossOrigin","durationChange","removeEventListener","addEventListener","e","genArrayBufferFromFileReference","fileReference","reader","FileReader","result","readAsArrayBuffer","genStringFromFileReference","readAsText","promptForFileReferences","accept","directory","fileInput","setAttribute","multiple","webkitdirectory","mozdirectory","files","urlIsBlobUrl","test","curUrlFromByteArray","base64","filenameFromUrl","lastSegment","pop","trackName","track","artist","defaultName","filename","FileUtils","trackFilename","urlFilename","tracks","mediaTagsRequestStatus","newTrack","sampleRate","bitrate","numberOfChannels","album","albumArtUrl","kbps","khz","channels","getTrackDisplayName","TrackUtils","TransitionType","defaultMilkdropState","overlay","presetHistory","presets","currentPresetIndex","butterchurn","transitionType","DEFAULT","randomize","cycling","milkdrop","enabled","concat","addToHistory","preset","json","Date","now","reducer","combineReducers","getAsDataURI","noshadeStyle","borderWidth","color","backgroundColor","Body","props","Font","Hr","Div","Table","Playlist","numberOfTracks","averageTrackLength","playlistLengthMinutes","playlistLengthSeconds","createPlaylistHTML","node","render","innerHTML","createPlaylistURL","getBalanceText","direction","abs","getVolumeText","getPositionText","seekToPercent","newElapsedStr","durationStr","getDoubleSizeModeText","formatHz","hz","ensureSign","num","toString","roundToTenths","toFixed","getEqText","level","db","label","getPositionDiff","graph","sizeDiff","newGraph","positionDiff","above","neighbors","below","push","walkRight","nodeSizeDiff","walkDown","generateGraph","bottoms","rights","edges","tops","lefts","isToTheLeft","isToTheRight","overlapsInX","isAbove","isBelow","overlapsInY","getSliders","getEqfData","eqfData","getTracks","getTrackUrl","getTrackOrder","getTrackCount","getOrderedTracks","getUserTracks","metaData","getOrderedTrackObjects","getSelectedTrackIds","getSelectedTrackObjects","selectedIds","runningTimeFromTracks","getTotalRunningTime","getSelectedRunningTime","getRunningTimeMessage","totalRunningTime","selectedRunningTime","getCurrentTrackIndex","indexOf","getCurrentTrackNumber","currentTrackIndex","getCurrentTrackId","getRandomTrackId","nextId","getNextTrackId","n","trackCount","currentIndex","nextIndex","getGenWindows","getWindowOpen","getWindowHidden","getWindowShade","getWindowPositions","BASE_WINDOW_HEIGHT","getNumberOfVisibleTracks","getWindowSize_","playlistSize","getOverflowTrackCount","numberOfVisibleTracks","_getPlaylistScrollPosition","getPlaylistScrollPosition","overflowTrackCount","getScrollOffset","overflow","getVisibleTrackIds","getAllTracksAreVisible","getTrackIsVisibleFunction","visibleTrackIds","includes","getVisibleTracks","getPlaylist","getDuration","defaultMemoize","fromTracks","getCurrentTrackDisplayName","getName","getMediaStatus","getMediaIsPlaying","getCurrentTrack","getCurrentlyPlayingTrackIdIfLoaded","mediaIsPlaying","getCurrentTrackInfo","getMinimalMediaText","trackNumber","getMediaText","minimalMediaText","getNumberOfTracks","getPlaylistDuration","getPlaylistURL","playlistDuration","getDisplayName","SHADE_WINDOW_HEIGHT","getWPixelSize","doubledMultiplier","pix","getFocusedWindow","getWindowPosition","getPositionsAreRelative","getDoubled","getLlamaMode","getZIndex","getWindowSizes","getWindowPixelSize","sizes","getWindowOrder","getNormalizedWindowOrder","getWindowsInfo","getWindowGraph","defaultPlaylistStyle","normal","current","normalbg","selectedbg","font","getSkinColors","getSkinPlaylistStyle","fromDisplay","getVolume","getBalance","getShuffle","getRepeat","getChannels","getTimeElapsed","getSerlializedState","version","fromMedia","fromEqualizer","fromWindows","getEqualizerEnabled","getEqualizerAuto","getBrowserWindowSize","getOpenWindows","getStackedLayoutPositions","openWindows","getUserInputFocus","getUserInputScrubPosition","getMarqueeText","defaultText","MarqueeUtils","mediaText","getKbps","getKhz","getDebugData","getMilkdropMessage","getMilkdropDesktopEnabled","getMilkdropFullscreenEnabled","getPresets","getButterchurn","getPresetTransitionType","getCurrentPresetIndex","getCurrentPreset","getPresetNames","getPresetOverlayOpen","getPresetsAreCycling","getRandomizePresets","getClosed","getSkinImages","getSkinCursors","getSkinRegion","getSkinLetterWidths","getPreampLineUrl","EQ_PREAMP_LINE","getLineColorsUrl","EQ_GRAPH_LINE_COLORS","getPreampLineImage","getLineColorsImage","getDummyVizData","getMarqueeStep","getNetworkConnected","getTimeMode","getLoading","getWorking","getAvaliableSkins","SNAP_DISTANCE","box","near","overlapX","overlapY","snap","boxA","boxB","snapDiff","newPos","snapDiffManyToMany","as","bs","diff","snapToMany","otherBoxes","snapWithin","boundingBox","snapWithinDiff","applySnap","snaps","previous","snapped","nodes","boxes","firstNode","bounding","traceConnection","areConnected","candidates","checkNode","candidate","applyDiff","applyMultipleDiffs","initial","diffs","metaDiff","withWindowGraphIntegrity","dispatch","getState","Selectors","originalSizes","newSizes","windowPositions","newPositions","updateWindowPositions","toggleDoubleSizeMode","toggleLlamaMode","toggleEqualizerShadeMode","toggleMainWindowShadeMode","togglePlaylistShadeMode","closeWindow","hideWindow","showWindow","setFocusedWindow","setWindowSize","toggleWindow","centerWindowsInContainer","container","getBoundingClientRect","centerWindows","centerWindowsInView","scrollX","scrollY","innerWidth","innerHeight","windowsInfo","getOpen","offsetLeft","offsetTop","boxHeight","boxWidth","move","ceil","pos","browserWindowSizeChanged","ensureWindowsAreOnScreen","resetWindowSizes","stackWindows","boundingHeight","boundingWidth","moveY","moveX","playTrack","isStopped","playTrackNow","play","openMediaFileDialog","pause","stop","nextN","nextTrackId","seekToTime","seekForward","seekBackward","setVolume","adjustVolume","volumeDiff","currentVolume","scrollVolume","preventDefault","deltaY","setBalance","toggleRepeat","toggleShuffle","toggleTimeMode","BAND_SNAP_DISTANCE","BAND_MID_POINT_VALUE","_snapBandValue","setEqBand","_setEqTo","setEqToMax","setEqToMid","setEqToMin","setPreamp","toggleEq","toggleEqAuto","FONT_LOOKUP","c","d","f","g","h","j","k","l","o","p","q","r","u","v","z","_","$","Å","Ö","Ä","imageConstFromChar","char","charCodeAt","CHAR_X","CHAR_Y","characterSprites","hasOwnProperty","sprites","BALANCE","CBUTTONS","MONOSTER","NUMBERS","NUMS_EX","PLAYPAUS","PLEDIT","EQ_EX","EQMAIN","POSBAR","SHUFREP","TEXT","TITLEBAR","VOLUME","GEN","pointPairs","pairedValues","regionParser","regionStr","iniData","numpoints","pointlist","pointCounts","points","pointIndex","polygons","numStr","polygon","validPolygons","getFileExtension","fileName","getFilenameRegex","base","ext","RegExp","getFileFromZip","zip","mode","lastFile","contents","async","console","warn","fallbackGetImgFromBlob","blob","URL","createObjectURL","getImgFromBlob","createImageBitmap","ee","getSpriteUrisFromImg","canvas","getContext","sprite","drawImage","image","toDataURL","getImgFromFilename","mimeType","typedBlob","Blob","getSpriteUrisFromFilename","SKIN_SPRITES","RIFF_MAGIC","arrayStartsWith","matcher","every","item","getCursorFromFilename","aniData","error","getPlaylistStyle","playlistStyle","ini","colorKey","getGenExColors","getColorAt","getImageData","shallowMerge","objs","prev","CURSORS","genVizColors","viscolor","SkinParserUtils","genImages","imageObjs","all","genCursors","cursorObjs","cursorName","genRegion","region","genGenTextSprites","getLetters","prefix","letter","nextBackground","letterWidths","skinParser","zipFileBuffer","JSZip","loadAsync","cursors","genTextSprites","genExColors","genLetterWidths","genTextImages","LoadQueue","constructor","threads","_queue","TinyQueue","priority","_availableThreads","task","_run","t1","promise","then","cropPlaylist","selectedTrackIds","removeSelectedTracks","removeAllTracks","reverseList","randomizeList","sortListByTitle","setPlaylistScrollPosition","scrollNTracks","currentOffset","scrollPlaylistByDelta","stopPropagation","totalPixelHeight","percentDelta","scrollUpFourTracks","scrollDownFourTracks","dragSelected","firstSelected","findIndex","lastSelected","normalizedOffset","invertSelection","selectZero","selectAll","DURATION_VISIBLE_PRIORITY","META_DATA_VISIBLE_PRIORITY","DURATION_PRIORITY","META_DATA_PRIORITY","loadQueue","addTracksFromReferences","fileReferences","loadStyle","loadMediaFiles","SKIN_FILENAME_MATCHER","EQF_FILENAME_MATCHER","loadFilesFromReferences","setSkinFromBlob","setEqFromFileReference","requireJSZip","alert","skinData","setSkinFromUrl","response","fetch","ok","statusText","_openFileDialog","expectedType","count","firstFileName","openEqfFileDialog","openSkinFileDialog","fetchMediaDuration","trackIsVisible","loadMedia","dataTransfer","handleTrackDropEvent","loadMediaFile","canonicalUrl","fetchMediaTags","queueFetchingMediaTags","requireMusicMetadata","metadata","picture","common","format","byteArray","eqf","parser","setEqFromObject","downloadPreset","creator","dataURI","downloadHtmlPlaylist","el","DIR_SUPPORT","addFilesAtIndex","addDirAtIndex","addFilesFromUrl","handleAddUrlEvent","addFilesFromList","handleLoadListEvent","saveFilesToList","handleSaveListEvent","droppedFiles","normalizePresetTypes","butterchurnPresetObject","getPreset","getButterchrunPresetObject","resp","butterchurnPresetUrl","initializePresets","presetOptions","importButterchurn","default","normalizePresets","loadPresets","presetsLength","selectRandomPreset","requestPresetAtIndex","IMMEDIATE","appendPresetFileList","fileList","convertPreset","JSON_EXT","MILK_EXT","endsWith","str","JSON","parse","selectNextPreset","nextPresetIndex","selectPreviousPreset","lastPresetIndex","randomIndex","handlePresetDrop","toggleRandomizePresets","togglePresetCycling","scheduleMilkdropMessage","close","defaultPrevented","cancel","toggleVisualizerStyle","minimize","setFocus","unsetFocus","focusBand","loadSerializedState","loadDefaultSkin","toggleMilkdropDesktop","setMilkdropFullscreen","toggleMilkdropFullscreen","togglePresetOverlay","stepMarquee","store","nextTrack","returnValue","seekToPercentComplete","loadFromUrl","disableEq","enableEq","slider","compose","composeWithDevTools","actionsBlacklist","actionEmitter","customMiddlewares","stateOverrides","extras","initialState","emitterMiddleware","trigger","enhancer","applyMiddleware","thunk","withExtraArgument","mediaMiddleware","createStore","leaveFullScreen","fscreen","fullscreenEnabled","exitFullscreen","enterFullScreen","requestFullscreen","FullScreen","onChange","ref","useRef","useEffect","detectFullScreen","fullscreenElement","useLayoutEffect","isEnabled","children","useUnmountedRef","unmountedRef","usePromiseValueOrNull","propValue","setValue","useState","disposed","resolvedValue","useScreenSize","useWindowSize","setSize","handler","useCallback","cursorPositionRef","pageX","pageY","useCursorPositionRef","useIsHovered","cursorRef","hover","setHover","setNode","domRect","enter","leave","useOnClickAway","callback","handleClickOut","clickOutTarget","Element","contains","capture","useTypedSelector","selector","useSelector","useActionCreator","actionCreator","useDispatch","useTypedDispatch","ResizeTarget","currentSize","widthOnly","passThroughProps","mouseDown","setMouseDown","mouseStart","setMouseStart","handleMove","clientX","clientY","newWidth","newHeight","newSize","handleMouseUp","handleMouseDown","memo","FocusTarget","onKeyDown","focusedWindowId","Actions","focusHandler","setRef","observer","MutationObserver","mutations","activeElement","some","mutation","removedNodes","observe","subtree","attributes","childList","disconnect","Text","letters","CHROME_WIDTH","CHROME_HEIGHT","GenWindow","focusedWindow","windowSize","selected","classnames","TRANSITION_TYPE_DURATIONS","USER_PRESET","Visualizer","analyser","playing","trackTitle","currentPreset","isEnabledVisualizer","canvasRef","visualizer","setVisualizer","_visualizer","createVisualizer","meshWidth","meshHeight","pixelRatio","devicePixelRatio","connectAudio","setRendererSize","hasLoadedPreset","loadPreset","launchSongTitleAnim","lastShownMessage","shouldAnimate","animationFrameRequest","loop","requestAnimationFrame","cancelAnimationFrame","Background","innerRef","ENTRY_HEIGHT","HEIGHT_PADDING","WIDTH_PADDING","LOADING_STYLE","background","OUTER_WRAPPER_STYLE","padding","INNER_WRAPPER_STYLE","whiteSpace","fontSize","presetIndexFromListIndex","listIndex","listIndexFromPresetIndex","PresetOverlay","presetKeys","selectedListIndex","setSelectedListIndex","maxListIndex","renderList","maxVisibleRows","rowsToShow","startIndex","endIndex","getRangeCenteredOnIndex","presetElms","presetIndex","isCurrent","lineHeight","loadLocalDir","handleFocusedKeyboardInput","keyCode","handleNode","maxHeight","listStyleType","margin","maxRangeSize","indexToCenter","rangeSize","halfRangeSize","idealStartIndex","supress","dropEffect","effectAllowed","DropTarget","handleDrop","onDrop","currentTarget","Portal","useMemo","div","style","createPortal","Parent","LinkNode","Node","checked","className","ContextMenu","ContextMenuWraper","renderContents","openPosition","setOpenPosition","closeMenu","handleGlobalClick","button","handleRightClick","MilkdropContextMenu","desktop","toggleDesktop","toggleFullscreen","Desktop","React","desktopNode","classList","ReactDOM","MILLISECONDS_BETWEEN_PRESET_TRANSITIONS","useKeyHandler","toggleRandomize","toggleCycling","Milkdrop","fullscreen","presetsAreCycling","setFullscreen","handleKeyDown","intervalId","setInterval","clearInterval","screenSize","genWindowSize","PlaybackContextMenu","SkinContextMenu","setSkin","skin","OptionsContextMenu","MainContextMenu","filePickers","networkConnected","menuOpened","picker","requiresNetwork","filePicker","contextMenuName","abuts","wouldMoveTo","SnapUtils","useHandleMouseDown","propsWindows","draggingState","setDraggingState","moving","stationary","handleMouseMove","proposedDiff","proposedWindows","proposedBox","withinDiff","finalDiff","windowPositionDiff","targetNode","find","movingSet","findAllConnected","WindowManager","onBlur","relatedTarget","transform","characterClassName","deburr","Character","passThrough","MiniTime","toggle","timeObj","showMinus","blinking","ClickedDiv","clicked","setClicked","onMouseDown","getNodeOffset","rect","scrollLeft","pageXOffset","scrollTop","pageYOffset","ContextMenuTarget","setSelected","renderMenu","PIXEL_DENSITY","sliceAverage","sliceWidth","sliceNumber","usePaintOscilloscopeFrame","renderWidth","bufferLength","fftSize","canvasCtx","getByteTimeDomainData","lineWidth","strokeStyle","beginPath","amplitude","percentAmplitude","moveTo","lineTo","stroke","BAR_WIDTH","GRADIENT_COLOR_COUNT","PEAK_COLOR_INDEX","BAR_PEAK_DROP_RATE","NUM_BARS","octaveBucketsForBufferLength","octaveBuckets","fill","minHz","maxHz","octaveStep","pow","octaveIdx","preRenderBar","renderHeight","barCanvas","gradientColors","barCanvasCtx","multiplier","colorIndex","fillStyle","fillRect","usePaintBar","windowShade","ctx","barHeight","peakHeight","peakY","usePaintBarFrame","barPeaks","barPeakFrames","frequencyBinCount","paintBar","getByteFrequencyData","heightMultiplier","xOffset","barPeak","preRenderBg","bgColor","fgColor","bgCanvas","distance","bgCanvasCtx","paintOscilloscopeFrame","paintBarFrame","paintFrame","clearRect","setCanvas","imageSmoothingEnabled","animationRequest","ActionButtons","Balance","offsetFromBalance","MainBalance","backgroundPosition","Close","setFocusDouble","mouseUp","ClutterBar","Eject","toggleEqualizer","EqToggleButton","handleClick","windowOpen","togglePlaylist","PlaylistToggleButton","CharacterString","chars","character","Kbps","Khz","SEPARATOR","CHAR_WIDTH","MARQUEE_MAX_LENGTH","mod","isLong","stepOffset","step","pixels","stepOffsetWidth","stringLength","pixelUnits","loopText","padEnd","useStepper","dragging","stepping","setStepping","stepHandle","steppingTimeout","useDragX","mouseDownX","setMouseDownX","dragOffset","setDragOffset","xStart","cleanedUp","Marquee","offsetPixels","willChange","MonoStereo","usePosition","userInputFocus","displayedPosition","Position","setPosition","Repeat","Shade","Minimize","Shuffle","Time","Volume","MainVolume","loadMediaAndPlay","MainWindow","mainShade","draggable","PlaylistResizeTarget","PlaylistShade","toggleShade","focusWindow","addedWidth","trimmedName","MIN_NAME_WIDTH","nameLength","PlaylistMenuEntry","PlaylistMenu","selected_","Children","child","AddMenu","RemoveMenu","removeSelected","removeAll","crop","SelectionMenu","invert","zero","SortContextMenu","MiscOptionsContextMenu","MiscMenu","ListMenu","rightPad","len","fillChar","RunningTimeDisplay","runningTimeMessage","PlaylistWindow","TrackCell","handleMoveClick","currentTrackId","shiftKey","metaKey","ctrlKey","TrackTitle","paddedTrackNumber","getNumberLength","number","TrackList","trackIds","setMoving","mouseStartY","setMouseStartY","_handleMoveClick","lastDiff","diffDiff","_renderTracks","maxTrackNumberLength","paddedTrackNumForIndex","padStart","Slider","SliderComponent","Handle","ScrollBar","allTracksAreVisible","_maxTrackIndex","selectedWindow","maxTrackIndex","playlistShade","playlistWindowPixelSize","showVisualizer","activateVisualizer","targetCoords","fontFamily","classes","showSpacers","MAX_VALUE","spriteNumber","spriteOffsets","Band","yOffset","usetFocus","EqOn","EqAuto","toggleAuto","spline","xs","ys","ks","getNaturalKs","maxX","allYs","matrix","zerosMatrix","solve","iMax","vali","NEGATIVE_INFINITY","swapRows","rows","columns","GRAPH_HEIGHT","GRAPH_WIDTH","EqGraph","preampLineImagePromise","preampLineImage","canvasNode","setCanvasNode","colorPattern","useColorPattern","drawEqLine","lineColorsImagePromise","lineColorsImage","createPattern","preampValue","amplitudes","paddingLeft","lastY","yTop","PresetsContextMenu","builtin","EqTitleButtons","EqualizerShade","eqVolumeClassName","eqBalanceClassName","bandClassName","EqualizerWindow","setPreampValue","setHertzValue","hertz","imageSelectors","MAIN_BALANCE_BACKGROUND","MAIN_BALANCE_THUMB","MAIN_BALANCE_THUMB_ACTIVE","MAIN_PREVIOUS_BUTTON","MAIN_PREVIOUS_BUTTON_ACTIVE","MAIN_PLAY_BUTTON","MAIN_PLAY_BUTTON_ACTIVE","MAIN_PAUSE_BUTTON","MAIN_PAUSE_BUTTON_ACTIVE","MAIN_STOP_BUTTON","MAIN_STOP_BUTTON_ACTIVE","MAIN_NEXT_BUTTON","MAIN_NEXT_BUTTON_ACTIVE","MAIN_EJECT_BUTTON","MAIN_EJECT_BUTTON_ACTIVE","MAIN_WINDOW_BACKGROUND","MAIN_STEREO","MAIN_STEREO_SELECTED","MAIN_MONO","MAIN_MONO_SELECTED","NO_MINUS_SIGN","MINUS_SIGN","DIGIT_0","DIGIT_1","DIGIT_2","DIGIT_3","DIGIT_4","DIGIT_5","DIGIT_6","DIGIT_7","DIGIT_8","DIGIT_9","NO_MINUS_SIGN_EX","MINUS_SIGN_EX","DIGIT_0_EX","DIGIT_1_EX","DIGIT_2_EX","DIGIT_3_EX","DIGIT_4_EX","DIGIT_5_EX","DIGIT_6_EX","DIGIT_7_EX","DIGIT_8_EX","DIGIT_9_EX","MAIN_PLAYING_INDICATOR","MAIN_PAUSED_INDICATOR","MAIN_STOPPED_INDICATOR","MAIN_NOT_WORKING_INDICATOR","MAIN_WORKING_INDICATOR","PLAYLIST_TOP_TILE","PLAYLIST_TOP_LEFT_CORNER","PLAYLIST_TITLE_BAR","PLAYLIST_TOP_RIGHT_CORNER","PLAYLIST_TOP_TILE_SELECTED","PLAYLIST_TOP_LEFT_SELECTED","PLAYLIST_TITLE_BAR_SELECTED","PLAYLIST_TOP_RIGHT_CORNER_SELECTED","PLAYLIST_LEFT_TILE","PLAYLIST_RIGHT_TILE","PLAYLIST_SCROLL_HANDLE","PLAYLIST_SCROLL_HANDLE_SELECTED","PLAYLIST_BOTTOM_TILE","PLAYLIST_BOTTOM_LEFT_CORNER","PLAYLIST_BOTTOM_RIGHT_CORNER","PLAYLIST_VISUALIZER_BACKGROUND","PLAYLIST_SHADE_BACKGROUND","PLAYLIST_SHADE_BACKGROUND_LEFT","PLAYLIST_SHADE_BACKGROUND_RIGHT","PLAYLIST_SHADE_BACKGROUND_RIGHT_SELECTED","PLAYLIST_ADD_MENU_BAR","PLAYLIST_ADD_URL","PLAYLIST_ADD_URL_SELECTED","PLAYLIST_ADD_DIR","PLAYLIST_ADD_DIR_SELECTED","PLAYLIST_ADD_FILE","PLAYLIST_ADD_FILE_SELECTED","PLAYLIST_REMOVE_MENU_BAR","PLAYLIST_REMOVE_ALL","PLAYLIST_REMOVE_ALL_SELECTED","PLAYLIST_CROP","PLAYLIST_CROP_SELECTED","PLAYLIST_REMOVE_SELECTED","PLAYLIST_REMOVE_SELECTED_SELECTED","PLAYLIST_REMOVE_MISC","PLAYLIST_REMOVE_MISC_SELECTED","PLAYLIST_SELECT_MENU_BAR","PLAYLIST_INVERT_SELECTION","PLAYLIST_INVERT_SELECTION_SELECTED","PLAYLIST_SELECT_ZERO","PLAYLIST_SELECT_ZERO_SELECTED","PLAYLIST_SELECT_ALL","PLAYLIST_SELECT_ALL_SELECTED","PLAYLIST_CLOSE_SELECTED","PLAYLIST_COLLAPSE_SELECTED","PLAYLIST_EXPAND_SELECTED","PLAYLIST_MISC_MENU_BAR","PLAYLIST_MISC_OPTIONS","PLAYLIST_MISC_OPTIONS_SELECTED","PLAYLIST_FILE_INFO","PLAYLIST_FILE_INFO_SELECTED","PLAYLIST_SORT_LIST","PLAYLIST_SORT_LIST_SELECTED","PLAYLIST_LIST_BAR","PLAYLIST_NEW_LIST","PLAYLIST_NEW_LIST_SELECTED","PLAYLIST_LOAD_LIST","PLAYLIST_LOAD_LIST_SELECTED","PLAYLIST_SAVE_LIST","PLAYLIST_SAVE_LIST_SELECTED","EQ_WINDOW_BACKGROUND","EQ_TITLE_BAR","EQ_TITLE_BAR_SELECTED","EQ_SLIDER_BACKGROUND","EQ_SLIDER_THUMB","EQ_SLIDER_THUMB_SELECTED","EQ_ON_BUTTON","EQ_ON_BUTTON_DEPRESSED","EQ_ON_BUTTON_SELECTED","EQ_ON_BUTTON_SELECTED_DEPRESSED","EQ_AUTO_BUTTON","EQ_AUTO_BUTTON_DEPRESSED","EQ_AUTO_BUTTON_SELECTED","EQ_AUTO_BUTTON_SELECTED_DEPRESSED","EQ_GRAPH_BACKGROUND","EQ_PRESETS_BUTTON","EQ_PRESETS_BUTTON_SELECTED","EQ_SHADE_BACKGROUND","EQ_SHADE_BACKGROUND_SELECTED","EQ_SHADE_VOLUME_SLIDER_LEFT","EQ_SHADE_VOLUME_SLIDER_CENTER","EQ_SHADE_VOLUME_SLIDER_RIGHT","EQ_SHADE_BALANCE_SLIDER_LEFT","EQ_SHADE_BALANCE_SLIDER_CENTER","EQ_SHADE_BALANCE_SLIDER_RIGHT","EQ_MAXIMIZE_BUTTON_ACTIVE","EQ_MINIMIZE_BUTTON_ACTIVE","EQ_CLOSE_BUTTON","EQ_CLOSE_BUTTON_ACTIVE","EQ_SHADE_CLOSE_BUTTON","EQ_SHADE_CLOSE_BUTTON_ACTIVE","MAIN_POSITION_SLIDER_BACKGROUND","MAIN_POSITION_SLIDER_THUMB","MAIN_POSITION_SLIDER_THUMB_SELECTED","MAIN_SHUFFLE_BUTTON","MAIN_SHUFFLE_BUTTON_DEPRESSED","MAIN_SHUFFLE_BUTTON_SELECTED","MAIN_SHUFFLE_BUTTON_SELECTED_DEPRESSED","MAIN_REPEAT_BUTTON","MAIN_REPEAT_BUTTON_DEPRESSED","MAIN_REPEAT_BUTTON_SELECTED","MAIN_REPEAT_BUTTON_SELECTED_DEPRESSED","MAIN_EQ_BUTTON","MAIN_EQ_BUTTON_SELECTED","MAIN_EQ_BUTTON_DEPRESSED","MAIN_EQ_BUTTON_DEPRESSED_SELECTED","MAIN_PLAYLIST_BUTTON","MAIN_PLAYLIST_BUTTON_SELECTED","MAIN_PLAYLIST_BUTTON_DEPRESSED","MAIN_PLAYLIST_BUTTON_DEPRESSED_SELECTED","MAIN_TITLE_BAR","MAIN_TITLE_BAR_SELECTED","MAIN_EASTER_EGG_TITLE_BAR","MAIN_EASTER_EGG_TITLE_BAR_SELECTED","MAIN_OPTIONS_BUTTON","MAIN_OPTIONS_BUTTON_DEPRESSED","MAIN_MINIMIZE_BUTTON","MAIN_MINIMIZE_BUTTON_DEPRESSED","MAIN_SHADE_BUTTON","MAIN_SHADE_BUTTON_DEPRESSED","MAIN_CLOSE_BUTTON","MAIN_CLOSE_BUTTON_DEPRESSED","MAIN_CLUTTER_BAR_BACKGROUND","MAIN_CLUTTER_BAR_BACKGROUND_DISABLED","MAIN_CLUTTER_BAR_BUTTON_O_SELECTED","MAIN_CLUTTER_BAR_BUTTON_A_SELECTED","MAIN_CLUTTER_BAR_BUTTON_I_SELECTED","MAIN_CLUTTER_BAR_BUTTON_D_SELECTED","MAIN_CLUTTER_BAR_BUTTON_V_SELECTED","MAIN_SHADE_BACKGROUND","MAIN_SHADE_BACKGROUND_SELECTED","MAIN_SHADE_BUTTON_SELECTED","MAIN_SHADE_BUTTON_SELECTED_DEPRESSED","MAIN_SHADE_POSITION_BACKGROUND","MAIN_SHADE_POSITION_THUMB","MAIN_SHADE_POSITION_THUMB_LEFT","MAIN_SHADE_POSITION_THUMB_RIGHT","MAIN_VOLUME_BACKGROUND","MAIN_VOLUME_THUMB","MAIN_VOLUME_THUMB_SELECTED","GEN_TOP_CENTER_FILL","GEN_TOP_LEFT","GEN_TOP_LEFT_END","GEN_TOP_RIGHT","GEN_TOP_RIGHT_END","GEN_TOP_LEFT_RIGHT_FILL","GEN_TOP_CENTER_FILL_SELECTED","GEN_TOP_LEFT_SELECTED","GEN_TOP_LEFT_END_SELECTED","GEN_TOP_RIGHT_SELECTED","GEN_TOP_RIGHT_END_SELECTED","GEN_TOP_LEFT_RIGHT_FILL_SELECTED","GEN_BOTTOM_LEFT","GEN_BOTTOM_RIGHT","GEN_BOTTOM_FILL","GEN_MIDDLE_LEFT","GEN_MIDDLE_LEFT_BOTTOM","GEN_MIDDLE_RIGHT","GEN_MIDDLE_RIGHT_BOTTOM","GEN_CLOSE_SELECTED","code","cursorSelectors","CLOSE","EQSLID","EQNORMAL","EQCLOSE","EQTITLE","MAINMENU","MIN","NORMAL","MMENU","PNORMAL","PTBAR","PCLOSE","PWINBUT","PSIZE","PWSSIZE","PWSNORM","PVSCROLL","SONGNAME","VOLBAL","WINBUT","WSNORMAL","WSPOSBAR","Css","head","remove","ClipPaths","paths","CSS_PREFIX","mapRegionNamesToIds","windowshade","equalizerws","mapRegionNamesToMatcher","numExIsUsed","FALLBACKS","normalizeCursorSelector","startsWith","getCssRules","cssRules","imageName","imageUrl","selectedWidth","cursorSelector","cursorRules","convertAniBinaryToCSS","regionName","getClipPaths","clipPaths","Skin","App","genWindowsInfo","webampNode","role","handleWindowResize","renderWindows","getAnalyser","handleBlur","IGNORE_EVENTS_FROM_TAGS","bindHotkeys","currentPos","listener","tagName","altKey","Emitter","_listeners","event","eventListeners","unsubscribe","callbacks","dispose","StereoBalanceNode","upMixer","createGain","channelCount","channelCountMode","channelInterpretation","splitter","createChannelSplitter","leftGain","rightGain","merger","createChannelMerger","connect","rawValue","gain","audioParam","defineProperties","enumerable","configurable","writable","AudioNode","prototype","bind","ElementSource","eventType","_emitter","destination","_context","_destination","_audio","_stalled","_status","_setStalled","_setStatus","_source","createMediaElementSource","stalled","loadUrl","err","currentTime","getStalled","getStatus","isNaN","Infinity","Media","AudioContext","webkitAudioContext","resume","_staticSource","_balance","_preamp","_analyser","createAnalyser","smoothingTimeConstant","_gainNode","output","_bands","createBiquadFilter","frequency","timeRemaining","percentComplete","seekTime","autoPlay","Disposable","teardowns","_teardowns","teardown","storeHas","subscribe","Winamp","browserIsSupported","supportsAudioApi","supportsCanvas","supportsPromises","_node","_disposable","_actionEmitter","initialTracks","initialSkin","avaliableSkins","enableHotkeys","__butterchurnOptions","__customMediaClass","importConvertPreset","presetConverterEndpoint","convert","getStore","__customMiddlewares","__initialState","navigator","onLine","butterchurnOpen","handleOnline","handleOffline","_bufferTracks","layout","__initialWindowLayout","previousTrack","appendTracks","setTracksToPlay","onWillClose","onClose","reopen","onTrackDidChange","previousTrackId","onMinimize","skinIsLoaded","__loadSerializedState","__getSerializedState","__onStateChange","renderWhenReady","unmountComponentAtNode","Webamp","WebampLazy","musicMetadataBrowser"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;AClFa;;AAEb,IAAI,IAAqC;AACzC,mBAAmB,mBAAO,CAAC,GAA2C;AACtE,CAAC,MAAM,EAEN;;;;;;;;ACNY;;AAEb,IAAI,IAAqC;AACzC,mBAAmB,mBAAO,CAAC,GAA+B;AAC1D,CAAC,MAAM,EAEN;;;;;;;ACND;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,KAAqC,EAAE,qCAO1C;AACD;AACA;AACA,mBAAmB,mBAAO,CAAC,GAA4B;AACvD;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,iC;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB;;AAEhB;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,KAAK,KAA6B;AAClC;AACA;AACA,EAAE,UAAU,IAA4E;AACxF;AACA,EAAE,iCAAqB,EAAE,mCAAE;AAC3B;AACA,GAAG;AAAA,oGAAC;AACJ,EAAE,MAAM,EAEN;AACF,CAAC;;;;;;;;ACnDY;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,8FAA8F,aAAa;AAC3G;AACA;;AAEA;AACA,uEAAuE,eAAe;AACtF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA,qBAAqB,YAAY;AACjC;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,wEAAwE,eAAe;AACvF;AACA;;AAEA;AACA;AACA;AACA,KAAK,IAAI;AACT,GAAG;AACH,C;;;;;;;AC5Ha;;AAEb;;AAEA,cAAc,mBAAO,CAAC,GAA0B;;AAEhD;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,E;;;;;;;ACtBa;;AAEb;;AAEA,sBAAsB,mBAAO,CAAC,EAAmC;;AAEjE;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA,E;;;;;;;ACvBa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,KAAqC,EAAE,EAS1C;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,IAAI,IAAqC;AACzC;AACA;AACA;AACA,mBAAmB,mBAAO,CAAC,GAAmC;AAC9D,CAAC,MAAM,EAEN;;;;;;;;ACrCY;;AAEb;;AAEA,eAAe,mBAAO,CAAC,EAAmB;;AAE1C;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;;AAEA;AACA,E;;;;;;;AChBa;;AAEb;;AAEA;AACA;AACA;AACA;AACA,E;;;;;;;ACRa;;AAEb;;AAEA,sBAAsB,mBAAO,CAAC,GAAoC;;AAElE;;AAEA,cAAc,mBAAO,CAAC,GAA0B;;AAEhD;;AAEA,eAAe,mBAAO,CAAC,EAAmB;;AAE1C;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,E;;;;;;;AChCa;;AAEb;;AAEA,sBAAsB,mBAAO,CAAC,EAAmC;;AAEjE;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,G;;;;;;;AC1BY;AACb,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAQ;AAC/B,gBAAgB,mBAAO,CAAC,GAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,WAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;AC9oBA,mCAAmC,mBAAO,CAAC,GAAgC;;AAE3E;AACA;AACA;AACA;;AAEA;AACA;;AAEA,eAAe,6BAA6B;AAC5C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0C;;;;;;ACrBA,6BAA6B;AAC7B,uCAAuC;;;;;;;;ACD1B;;AAEb;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,E;;;;;;ACdA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAAU;;AAEnC,OAAO,WAAW;;AAElB;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEY;;AAEZ,aAAa,mBAAO,CAAC,GAAW;AAChC,cAAc,mBAAO,CAAC,GAAS;AAC/B,cAAc,mBAAO,CAAC,GAAS;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,mDAAmD;AACxE;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;AACA,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,EAAE;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,wBAAwB,QAAQ;AAChC;AACA,qBAAqB,eAAe;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA,GAAG;AACH;AACA,eAAe,SAAS;AACxB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,YAAY;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;AC5vDA,YAAY,mBAAO,CAAC,EAAW;AAC/B,UAAU,mBAAO,CAAC,EAAQ;AAC1B,aAAa,mBAAO,CAAC,EAAW;AAChC;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,YAAoB;;AAElC;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD,IAAI;AACJ;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA,YAAY,oBAAoB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAoD,cAAc;;AAElE;AACA;;;;;;;AC3EA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,cAAc,mBAAO,CAAC,GAAQ;;AAE9B;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA,KAAK,KAAwC,EAAE,EAE7C;;AAEF,QAAQ,sBAAiB;AACzB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;AC/YA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,IAAI;AACf,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA,WAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe,SAAS;AACxB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe;AACf;;;AAGA;AACA;AACA;AACA;;AAEA,iCAAiC;AACjC;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,WAAW;AAC1B;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA,mBAAmB,aAAa;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,OAAO,iEAAY;AACxB;AACA,KAAK;AACL,GAAG;AACH;AACA;;;AAGA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG,QAAQ,iEAAY;AACvB;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,GAAG,aAAa;;AAEhB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oEAAoE;AACpE;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;;;AAGA;AACA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;;AAEA,QAAQ,KAAqC,EAAE,EAI1C;;AAEL;AACA;AACA;AACA;;AAEA,oDAAoD;AACpD;;AAEA;;AAEA,MAAM,KAAqC,EAAE,EAE1C;;AAEH;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAQ,KAAqC,EAAE,uBAM1C;;AAEL;AACA;;AAEA,oBAAoB,8BAA8B;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA,sEAAsE,aAAa;AACnF;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa,SAAS;AACtB;;AAEA;AACA,4EAA4E,aAAa;AACzF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,8BAA8B;AAC9B;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,IAAI,KAA6G,EAAE,EAElH;;AAE+H;;;;;;;;ACtpBnH;;AAEb;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH,+BAA+B;AAC/B;AACA;AACA,GAAG;AACH,+BAA+B;AAC/B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,E;;;;;;AC7DA,aAAa,mBAAO,CAAC,EAAW;AAChC,WAAW,mBAAO,CAAC,EAAS;AAC5B,UAAU,mBAAO,CAAC,EAAQ;AAC1B,WAAW,mBAAO,CAAC,EAAS;AAC5B,UAAU,mBAAO,CAAC,EAAQ;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE;AACjE;AACA,kFAAkF;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,eAAe;AACf,eAAe;AACf,eAAe;AACf,gBAAgB;AAChB;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA,yCAAyC;;;;;;;ACLzC,eAAe,mBAAO,CAAC,EAAc;AACrC,qBAAqB,mBAAO,CAAC,EAAmB;AAChD,kBAAkB,mBAAO,CAAC,EAAiB;AAC3C;;AAEA,YAAY,mBAAO,CAAC,EAAgB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;AACA;AACA;;;;;;;ACfA;AACA,kBAAkB,mBAAO,CAAC,EAAU;AACpC,iCAAiC,QAAQ,mBAAmB,UAAU,EAAE,EAAE;AAC1E,CAAC;;;;;;;;ACHY;AACb,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAQ;AAC/B,6BAA6B,mBAAO,CAAC,GAAsB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gC;;;;;;;ACzIA,8CAAa;AACb,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,yBAAyB;AAC5F;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kC;;;;;;;ACxBA,uBAAuB;AACvB;AACA;AACA;;;;;;;ACHA;AACA,cAAc,mBAAO,CAAC,EAAY;AAClC,cAAc,mBAAO,CAAC,EAAY;AAClC;AACA;AACA;;;;;;;;ACLa;;AAEb;;AAEA,YAAY,mBAAO,CAAC,GAAuB;;AAE3C;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA,6CAA6C,gBAAgB;AAC7D;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA,E;;;;;;;;;;;;;;;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,MAAM;AAClB;AACe;AACf;AACA;AACA;AACA,yBAAyB,aAAa;AACtC;AACA;AACA;;AAEA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,2BAA2B;AACtC,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB;AACA,YAAY;AACZ;AACO;AACP,aAAa,OAAO;AACpB;AACA,wBAAwB,aAAa;AACrC,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,KAAK;AACL,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,O;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,2BAA2B;AACtC,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACO;AACP,mCAAmC,SAAS;AAC5C,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL,iBAAiB,OAAO;AACxB;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO;;AAEP;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,4BAA4B;AACzC,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,4BAA4B;AACzC,aAAa,OAAO;AACpB,cAAc;AACd;AACA;AACA,eAAe,OAAO;AACtB;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,aAAa,4BAA4B;AACzC,aAAa,OAAO;AACpB,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACO;;AAEP;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,2BAA2B;AACxC,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB,cAAc,UAAU;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,O;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,2BAA2B;AACxC,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,mCAAmC,SAAS;AAC5C,iBAAiB,OAAO;AACxB;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,6B;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,2BAA2B;AACxC,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,cAAc;AACd;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACjPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEoC;AACiC;AACxB;AACE;;AAE/C;AA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AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,kBAAkB;AAC7B,WAAW,kBAAkB;AAC7B,WAAW,kBAAkB;AAC7B,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,eAAe,aAAa;AAC5B,GAAG;AACH,eAAe,aAAa;AAC5B,GAAG;AACH,eAAe,aAAa;AAC5B;AACA,aAAa,SAAS;AACtB;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChWA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;ACnBA,8CAAa;;AAEb,mBAAmB,mBAAO,CAAC,EAAe;;AAE1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uCAAuC,SAAS;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,mBAAO,CAAC,GAAO;AAC1B;AACA;AACA;AACA,0BAA0B;AAC1B,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,8BAA8B;AAC9B;AACA,mDAAmD;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gDAAgD;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gCAAgC,oBAAoB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzfA,SAAS,mBAAO,CAAC,EAAc;AAC/B,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,iBAAiB,mBAAO,CAAC,EAAgB;AACzC;AACA,CAAC;AACD;AACA;AACA;;;;;;;ACPA,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;;;;;;;ACFA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,KAAqC,EAAE,EAI1C;;AAEH;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,0CAA0C,yBAAyB,EAAE;AACrE;AACA;AACA;;AAEA,0BAA0B;AAC1B;AACA;AACA;;AAEA;;;;;;;;AChDa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,eAAe,yBAAyB;AACxC,eAAe,WAAW;AAC1B,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uC;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA,cAAc,mBAAO,CAAC,EAAY;AAClC;AACA;AACA;;;;;;;ACJA;;;;;;;;ACAa;;AAEb;;AAEA,sBAAsB,mBAAO,CAAC,GAAoC;;AAElE;;AAEA,gCAAgC,mBAAO,CAAC,GAA+C;;AAEvF;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA,E;;;;;;;ACrCA;AACA;AACA;AACA;AACA;;AAEa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,kCAAkC;AAClC;AACA;AACA;;AAEA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,oBAAoB;AACtC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;ACzFa;AACb,8CAA8C,cAAc;AAC5D,sBAAsB,mBAAO,CAAC,GAAsB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gCAAgC;AAC/C;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO,eAAe;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4C;;;;;;AChFA;AACA,YAAY,mBAAO,CAAC,EAAyB;AAC7C,kBAAkB,mBAAO,CAAC,EAAkB;;AAE5C;AACA;AACA;;;;;;;ACNA;;;;;;;ACAA;AACA;AACA;AACA;AACA;;;;;;;ACJA,cAAc;;;;;;;;ACAD;;AAEb;;AAEA,gBAAgB,mBAAO,CAAC,GAA4B;;AAEpD;;AAEA,cAAc,mBAAO,CAAC,GAAmB;;AAEzC;;AAEA,iHAAiH,mBAAmB,EAAE,mBAAmB,4JAA4J;;AAErT,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA,CAAC;AACD;AACA,E;;;;;;;ACpBa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA,UAAU;AACV;AACA;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA,UAAU,mBAAO,CAAC,GAAsB;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA,yBAAyB,mBAAO,CAAC,EAAc;AAC/C,gBAAgB,mBAAO,CAAC,EAAU;AAClC;;AAEA,eAAe,mBAAO,CAAC,GAAoB;AAC3C,eAAe,mBAAO,CAAC,GAAoB;;AAE3C;;AAEA;AACA;AACA;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA,E;;;;;;AClIA,WAAW,mBAAO,CAAC,GAAS;;AAE5B;AACA;;AAEA;;;;;;;ACLA;AACA,gBAAgB,mBAAO,CAAC,GAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnBA;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACXA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA,aAAa,mBAAO,CAAC,EAAW;AAChC,UAAU,mBAAO,CAAC,EAAQ;AAC1B;AACA;AACA;;;;;;;ACJA,WAAW,mBAAO,CAAC,EAAS;AAC5B,aAAa,mBAAO,CAAC,EAAW;AAChC;AACA,kDAAkD;;AAElD;AACA,qEAAqE;AACrE,CAAC;AACD;AACA,QAAQ,mBAAO,CAAC,EAAY;AAC5B;AACA,CAAC;;;;;;;ACXD;AACA;AACA;AACA;;;;;;;ACHA;;;;;;;ACAA;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC,UAAU,mBAAO,CAAC,GAAe;AACjC,kBAAkB,mBAAO,CAAC,EAAkB;AAC5C,eAAe,mBAAO,CAAC,EAAe;AACtC,yBAAyB;AACzB;;AAEA;AACA;AACA;AACA,eAAe,mBAAO,CAAC,EAAe;AACtC;AACA;AACA;AACA;AACA;AACA,EAAE,mBAAO,CAAC,GAAS;AACnB,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;ACxCA,UAAU,mBAAO,CAAC,EAAc;AAChC,UAAU,mBAAO,CAAC,EAAQ;AAC1B,UAAU,mBAAO,CAAC,EAAQ;;AAE1B;AACA,oEAAoE,iCAAiC;AACrG;;;;;;;ACNA,YAAY,mBAAO,CAAC,EAAQ;;;;;;;ACA5B,aAAa,mBAAO,CAAC,EAAW;AAChC,WAAW,mBAAO,CAAC,EAAS;AAC5B,cAAc,mBAAO,CAAC,EAAY;AAClC,aAAa,mBAAO,CAAC,EAAY;AACjC,qBAAqB,mBAAO,CAAC,EAAc;AAC3C;AACA,0DAA0D,sBAAsB;AAChF,kFAAkF,wBAAwB;AAC1G;;;;;;;ACRA,UAAU,mBAAO,CAAC,EAAe;AACjC,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,gBAAgB,mBAAO,CAAC,EAAe;AACvC,kBAAkB,mBAAO,CAAC,EAAiB;AAC3C,UAAU,mBAAO,CAAC,EAAQ;AAC1B,qBAAqB,mBAAO,CAAC,EAAmB;AAChD;;AAEA,YAAY,mBAAO,CAAC,EAAgB;AACpC;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;;;;;;;;ACfa;;AAEb,IAAI,IAAqC;AACzC,mBAAmB,mBAAO,CAAC,GAAkC;AAC7D,CAAC,MAAM,EAEN;;;;;;;;ACNY;;AAEb;AACA;AACA,CAAC;AACD;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F,mBAAmB,mBAAO,CAAC,GAAe;;AAE1C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oC;;;;;;;AClDa;;AAEb,cAAc,mBAAO,CAAC,EAAU;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;;;;;;;;ACtGA;AAAA;AACqC;;AAErC;;AAEA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC,UAAU,IAA6B;AACxC;AACA,CAAC,MAAM,EAEN;;AAED,aAAa,oEAAQ;AACN,+DAAM,EAAC;;;;;;;;AClBtB,aAAa,mBAAO,CAAC,GAAU;AAC/B,cAAc,mBAAO,CAAC,GAAW;;AAEjC;AACA;AACA;AACA;;;;;;;ACNA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;ACvLtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA,8CAAa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,EAAgB;AACvC,sBAAsB,mBAAO,CAAC,GAAe;AAC7C,gBAAgB,mBAAO,CAAC,EAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oCAAoC;AAC3D;AACA;AACA;AACA;AACA;AACA,uC;;;;;;;;AC7Ma;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,EAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wFAAwF;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;;;;;ACnBA,kBAAkB,mBAAO,CAAC,EAAgB,MAAM,mBAAO,CAAC,EAAU;AAClE,+BAA+B,mBAAO,CAAC,EAAe,gBAAgB,mBAAmB,UAAU,EAAE,EAAE;AACvG,CAAC;;;;;;;ACFD,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAW;AAClC;AACA;AACA;AACA;AACA;;;;;;;ACNA,UAAU,mBAAO,CAAC,EAAQ;AAC1B,gBAAgB,mBAAO,CAAC,EAAe;AACvC,mBAAmB,mBAAO,CAAC,GAAmB;AAC9C,eAAe,mBAAO,CAAC,EAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChBA;AACA,UAAU,mBAAO,CAAC,EAAQ;AAC1B;AACA;AACA;AACA;;;;;;;ACLA;AACA,gBAAgB,mBAAO,CAAC,EAAe;AACvC;AACA;AACA,2DAA2D;AAC3D;;;;;;;ACLA,kBAAkB,YAAY,mBAAO,CAAC,GAA2C,sB;;;;;;;ACApE;AACb,UAAU,mBAAO,CAAC,GAAc;;AAEhC;AACA,mBAAO,CAAC,EAAgB;AACxB,6BAA6B;AAC7B,cAAc;AACd;AACA,CAAC;AACD;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,UAAU;AACV,CAAC;;;;;;;;AChBY;AACb,cAAc,mBAAO,CAAC,EAAY;AAClC,cAAc,mBAAO,CAAC,EAAW;AACjC,eAAe,mBAAO,CAAC,EAAa;AACpC,WAAW,mBAAO,CAAC,EAAS;AAC5B,gBAAgB,mBAAO,CAAC,EAAc;AACtC,kBAAkB,mBAAO,CAAC,GAAgB;AAC1C,qBAAqB,mBAAO,CAAC,EAAsB;AACnD,qBAAqB,mBAAO,CAAC,EAAe;AAC5C,eAAe,mBAAO,CAAC,EAAQ;AAC/B,8CAA8C;AAC9C;AACA;AACA;;AAEA,8BAA8B,aAAa;;AAE3C;AACA;AACA;AACA;AACA;AACA,yCAAyC,oCAAoC;AAC7E,6CAA6C,oCAAoC;AACjF,KAAK,4BAA4B,oCAAoC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA,kCAAkC,2BAA2B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;;;;;ACpEA,iBAAiB,mBAAO,CAAC,EAAS;;;;;;;ACAlC;AACA,UAAU,mBAAO,CAAC,EAAQ;AAC1B,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAe;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;ACZA;AACA,YAAY,mBAAO,CAAC,EAAyB;AAC7C,iBAAiB,mBAAO,CAAC,EAAkB;;AAE3C;AACA;AACA;;;;;;;ACNA;AACA,cAAc,mBAAO,CAAC,EAAW;AACjC,WAAW,mBAAO,CAAC,EAAS;AAC5B,YAAY,mBAAO,CAAC,EAAU;AAC9B;AACA,6BAA6B;AAC7B;AACA;AACA,qDAAqD,OAAO,EAAE;AAC9D;;;;;;;;ACTa;;AAEb;AACA;AACA,CAAC;AACD;;AAEA,kDAAkD,mBAAO,CAAC,EAAwB;;AAElF,uCAAuC,mBAAO,CAAC,CAAW;;AAE1D,sCAAsC,uCAAuC,gBAAgB;;AAE7F;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,C;;;;;;;ACnBa;;AAEb;AACA;AACA,CAAC;;AAED,0BAA0B,mBAAO,CAAC,EAAyC;;AAE3E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,mBAAO,CAAC,CAAW;;AAEnC,eAAe,mBAAO,CAAC,GAAqB;;AAE5C;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6FAA6F;AAC7F;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA,0DAA0D;AAC1D;AACA,yDAAyD;AACzD;AACA,0DAA0D;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;ACjLA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA,E;;;;;;;ACNA;AAAe;AACf;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;;;;;;;;AChBa;;AAEb,cAAc,mBAAO,CAAC,EAAO;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,wBAAwB,aAAa,EAAE;AACvD;;;;;;;;;;;;;;ACnBa;;AAEb;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,QAAQ;AACpD;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;ACvFA,mBAAmB,mBAAO,CAAC,GAAiB;AAC5C,eAAe,mBAAO,CAAC,GAAY;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC5Ca;;AAEb;AACA;AACA,CAAC;;AAED,gBAAgB,mBAAO,CAAC,CAA+B;;AAEvD;;AAEA,uBAAuB,mBAAO,CAAC,EAAsC;;AAErE;;AAEA,oBAAoB,mBAAO,CAAC,EAAmC;;AAE/D;;AAEA,kCAAkC,mBAAO,CAAC,CAAiD;;AAE3F;;AAEA,iBAAiB,mBAAO,CAAC,EAAgC;;AAEzD;;AAEA,aAAa,mBAAO,CAAC,CAAO;;AAE5B;;AAEA,iBAAiB,mBAAO,CAAC,CAAY;;AAErC;;AAEA,eAAe,mBAAO,CAAC,EAAS;;AAEhC;;AAEA,aAAa,mBAAO,CAAC,GAAgB;;AAErC;;AAEA,oBAAoB,mBAAO,CAAC,GAAuB;;AAEnD;;AAEA,aAAa,mBAAO,CAAC,EAAS;;AAE9B;;AAEA,uCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9Q,sCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB;AACxC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,iFAAiF,UAAU,wBAAwB;AACnH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,qBAAqB,eAAe;AACpC;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,eAAe;AACpC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oDAAoD;AACpD;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,OAAO;;AAEP,cAAc;AACd;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;AC3QA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,mBAAmB,oBAAoB;AACvC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;AC7CA;AACA;AACA;;AAEA;AACA,cAAc,mBAAO,CAAC,EAAS;AAC/B,CAAC;AACD,cAAc,mBAAO,CAAC,EAAmB;AACzC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA,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ACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA,+CAAa;;AAEb;AACA;AACA;AACA;AACA,oBAAoB;AACpB,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;AC3CA,8CAAa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,kBAAkB,mBAAO,CAAC,EAAO;AACjC,iBAAiB,mBAAO,CAAC,GAAW;AACpC,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,EAAQ;AAC/B,eAAe,mBAAO,CAAC,EAAgB;AACvC,sBAAsB,mBAAO,CAAC,EAAuB;AACrD,qBAAqB,mBAAO,CAAC,GAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yBAAyB;AACxC,eAAe,WAAW;AAC1B,eAAe,SAAS;AACxB,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,mBAAmB;AAC7E;AACA;AACA,8EAA8E;AAC9E;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,cAAc;AACvF;AACA;AACA;AACA,mFAAmF,IAAI;AACvF;AACA;AACA;AACA;AACA,kDAAkD,IAAI;AACtD;AACA;AACA,6DAA6D,6BAA6B;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uC;;;;;;;;AC/Ja;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAkB;AACzC,gBAAgB,mBAAO,CAAC,EAAS;AACjC,sBAAsB,mBAAO,CAAC,EAAe;AAC7C,sBAAsB,mBAAO,CAAC,GAAsB;AACpD,eAAe,mBAAO,CAAC,EAAO;AAC9B,sBAAsB,mBAAO,CAAC,EAAuB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,6C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrE0B;AACnB,qCAAqC,eAAK;;AAEjD,IAAI,KAAqC,EAAE,EAE1C;;AAEc,wEAAiB,E;;ACPhC;AACA;AACA;AACA;;AAEA,IAAI,WAAK,oBAAoB;;AAEtB;AACP,SAAS,WAAK;AACd,EAAE;;AAEK;AACP,SAAS,WAAK;AACd,E;;ACbmC;AACnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;;ACvHiD;AACf;AACW;AACG;;AAEjD;AACA;AACA;AACA;AACA,qBAAqB,wBAAO;AAC5B,2BAA2B,YAAY;AACvC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,sBAAsB,wBAAO;AAC7B;AACA,GAAG;AACH,EAAE,0BAAS;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,2BAA2B,iBAAiB;AAC5C,sBAAsB,eAAK;AAC3B;AACA,GAAG;AACH;;AAEA,IAAI,KAAqC,EAAE,EAU1C;;AAEc,gEAAQ,E;;ACnDR;AACf;AACA,mBAAmB,sBAAsB;AACzC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,C;;AChBe;AACf;AACA;AACA;AACA;;AAEA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;;;ACbmD;AACnD;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;;AAEO,kKAAkK,wBAAe,GAAG,kBAAS,C;;ACT1I;AAC0C;AACjD;AACoB;AACN;AAChB;AAC8B;AACjC;;AAE9C;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE,yBAAyB;AAC3B;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC;;AAExC;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,IAAI;;;AAGJ;AACA,8BAA8B;AAC9B;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,iBAAiB;AAC5D,uBAAuB,6BAA6B;;AAEpD,MAAM,KAAqC,EAAE,kCAc1C;;AAEH;AACA;AACA,QAAQ,KAA8E,EAAE,EAEnF;;AAEL;AACA;;AAEA,iCAAiC,QAAQ,GAAG;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA,KAAK;AACL;AACA;;;AAGA,iCAAiC,gBAAO;AACxC;AACA;;AAEA;AACA,qBAAqB,wBAAO;AAC5B;AACA;AACA;AACA;AACA,2BAA2B,6BAA6B;;AAExD;AACA,OAAO;AACP;AACA;AACA;;AAEA,yBAAyB,wBAAO;AAChC;AACA;AACA,wDAAwD,qCAAiB,eAAe,eAAK;AAC7F,OAAO,2BAA2B;;AAElC,yBAAyB,2BAAU,eAAe;AAClD;AACA;;AAEA;AACA;;AAEA,UAAU,KAA2F,EAAE,EAEhG;;;AAGP;AACA,+BAA+B,wBAAO;AACtC;AACA;AACA;AACA,OAAO;;AAEP,sBAAsB,wBAAO;AAC7B,oEAAoE;AACpE;;AAEA,+BAA+B,YAAY,kEAAkE;AAC7G;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,0CAA0C,oBAAoB,oBAAoB;AAClF;;;AAGA,mCAAmC,wBAAO;AAC1C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;;AAGA,eAAe,QAAQ,GAAG;AAC1B;AACA,SAAS;AACT,OAAO,uDAAuD;AAC9D;;AAEA,wBAAwB,2BAAU;AAClC;AACA;AACA,wDAAwD;;;AAGxD;AACA;AACA,OAAO;;;AAGP,2BAA2B,uBAAM;AACjC,6BAA6B,uBAAM;AACnC,sCAAsC,uBAAM;AAC5C,8BAA8B,uBAAM;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;AAGA;AACA,OAAO,oDAAoD;AAC3D;AACA;;AAEA,iMAAiM;;AAEjM,0SAA0S;AAC1S;;AAEA,qCAAqC,wBAAO;AAC5C,4BAA4B,eAAK,iCAAiC,QAAQ,GAAG;AAC7E;AACA,SAAS;AACT,OAAO,gEAAgE;AACvE;;AAEA,0BAA0B,wBAAO;AACjC;AACA;AACA;AACA;AACA,8BAA8B,eAAK;AACnC;AACA,WAAW;AACX;;AAEA;AACA,OAAO;AACP;AACA,KAAK;;;AAGL,yBAAyB,eAAK;AAC9B;AACA;;AAEA;AACA,sBAAsB,eAAK;AAC3B,4BAA4B,eAAK,wBAAwB,QAAQ,GAAG;AACpE;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA,aAAa,qCAAY;AACzB;;AAEA,WAAW,qCAAY;AACvB;AACA,C;;AChXA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;;AAEA;AACA,C;;;;;AC1BA;AACA,WAAW,IAAI;AACf,aAAa,QAAQ;AACrB;AACe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,C;;ACfA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACe;AACf;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,C;;ACvB4C;AACZ;AACjB;AACf,OAAO,aAAa;AACpB,IAAI,OAAO;AACX;AACA,C;;ACN2D;AACpD;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,UAAU,KAAqC,EAAE,EAAkD;AACnG;AACA;;AAEA;AACA;AACA,C;;AC/D2C;AACmC;AACvE;AACP,oDAAoD,kBAAkB;AACtE;AACO;AACP,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA,GAAG;AACH;AACO;AACP,wEAAwE,sBAAsB;AAC9F,WAAW,mCAAkB;AAC7B,GAAG;AACH;AACe,kKAAmG,E;;ACjBpC;AACvE;AACP,iDAAiD,kBAAkB;AACnE;AACO;AACP,4BAA4B,sBAAsB;AAClD;AACA,GAAG;AACH;AACe,yHAA6D,E;;ACTlB;AACC;AACpD;AACP,SAAS,QAAQ,GAAG;AACpB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,YAAY,KAAqC,EAAE,EAA0D;AAC7G;;AAEA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA,GAAG;AACH;AACe,0GAAmD,E;;ACnC3B;;AAEvC;AACA;AACA;AACA,GAAG;AACH;AACA,MAAM,OAAO;AACb;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA,C;;AChBoG;AAC9C;AAC/C;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA,gBAAgB,6BAA6B;;AAE7C;AACA;AACA;;AAEA,MAAM,KAAqC,EAAE,EAE1C;;AAEH;AACA;AACA,C;;ACtF0D;AAC0C;AACxC;AACX;AACqB;AACN;AACV;AACC;AACvD;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;;;AAGO;AACP,kCAAkC;AAClC;AACA,gDAAgD,eAAe;AAC/D;AACA,oEAAoE,uBAA+B;AACnG;AACA,uEAAuE,0BAAkC;AACzG;AACA,+DAA+D,kBAA0B;AACzF;AACA,0DAA0D,yBAAsB;;AAEhF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,YAAY;AAC1E;AACA,gEAAgE,YAAY;AAC5E;AACA,iEAAiE,YAAY;AAC7E,uBAAuB,6BAA6B;;AAEpD;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AAC4B,gFAAe,E;;ACjGR;AACuB;AAC1D;AACA;AACA;AACA;AACA,aAAa,IAAI;AACjB;AACA;AA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C;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,yCAAwB;;AAE9C,sBAAsB,oBAAU,uBAAuB,gCAAe,GAAG;AACzE,gDAAgD,EAAE,gCAAe,mDAAmD,gCAAe,6CAA6C,gCAAe,8DAA8D,EAAE,gCAAe,mDAAmD,gCAAe,6CAA6C,gCAAe;AAC5Y,oBAAoB,iBAAQ,GAAG;;AAE/B;AACA;AACA;AACA;;AAEA,aAAa,eAAK,sBAAsB,iBAAQ;AAChD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC,CAAC,eAAK;;AAEQ,2DAAM,EAAC;;;AAGtB,aAAM;AACN,aAAa,oBAAS;AACtB,aAAa,oBAAS;AACtB,YAAY,oBAAS;AACrB,UAAU,oBAAS;AACnB,SAAS,oBAAS;AAClB,YAAY,oBAAS;AACrB,OAAO,oBAAS;AAChB,OAAO,oBAAS;AAChB,SAAS,oBAAS;AAClB,YAAY,oBAAS;AACrB,WAAW,oBAAS;AACpB,E;;;;;;AChJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACe,sDAAO,E;;AC9mBmD;AACjC;AACC;;AAElC;AACP;AACA;AACA,0BAA0B,gCAAW;AACrC,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,mDAAmD,2BAAkB;AACrE;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA,6FAA6F;AAC7F;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,SAAS,UAAO;AAChB,yDAAyD;AACzD,SAAS,UAAO;AAChB,0DAA0D;AAC1D,SAAS,UAAO;AAChB,yDAAyD;AACzD,SAAS,UAAO;AAChB,0DAA0D;;AAE1D,SAAS,UAAO;AAChB;AACA;AACA;AACA,SAAS,UAAO;AAChB;AACA;AACA;AACA,SAAS,UAAO;AAChB;AACA;AACA;AACA,SAAS,UAAO;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,C;;ACrJqF;AAChC;AACc;AACA;AACN;AAC4B;AAC5C;AACU;AAC7B;AACS;AAC4B;AAC3B;AACN;AACF;AACA;AACG;AACG;;AAElC;;AAEe;AACf;;AAEA;AACA,IAAI,kBAAS;;AAEb;AACA,MAAM,wBAAe;;AAErB,kBAAkB,mCAA0B;;AAE5C;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,gBAAsB;AAC7C,aAAa,iBAAuB;AACpC;AACA,SAAS;AACT,+BAA+B,uBAA6B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY,eAAqB;;AAEjC;AACA,uBAAuB,gBAAsB;AAC7C,aAAa,iBAAuB;AACpC;AACA,SAAS;AACT,+BAA+B,uBAA6B;AAC5D;AACA;AACA;AACA;AACA;AACA,QAAQ,UAAgB;AACxB;;AAEA;AACA;AACA;AACA;;AAEA,YAAY,iBAAuB;AACnC,+BAA+B,uBAA6B;AAC5D;AACA;AACA,UAAU,UAAgB;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAsB;AAC7C;AACA;;AAEA;AACA,YAAY,eAAqB;AACjC;AACA;AACA;;AAEA,uBAAuB,gBAAsB;AAC7C;AACA;;AAEA;AACA,+BAA+B,iBAAuB;AACtD;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,eAAe;AACvC,wBAAwB,eAAe;AACvC;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kFAAkF;AAClF,MAAM,iBAAO;AACb;AACA;AACA;;AAEA,IAAI,qBAAY;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,YAAY,aAAI,6HAA6H,aAAI;AACjJ;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,mCAAmC,oBAAgB;AACnD,iCAAiC,oBAAgB;AACjD;AACA,KAAK;AACL;AACA;AACA,mCAAmC,oBAAgB;AACnD,iCAAiC,oBAAgB;AACjD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,aAAI;AAC5B;AACA;;AAEA,8BAA8B,oBAAU,6BAA6B,EAAE,gCAAe,qEAAqE,gCAAe,kDAAkD,gCAAe,kDAAkD,gCAAe;AAC5S,eAAe,eAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU,eAAK;AACf;AACA,mBAAmB,iBAAQ,GAAG;AAC9B,WAAW;AACX;AACA,UAAU,eAAK,eAAe,YAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,UAAU,eAAK,eAAe,YAAK;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG,yGAAyG,iBAAQ,GAAG;AACvH,SAAS,oBAAS;AAClB,SAAS,oBAAS;AAClB,UAAU,oBAAS;AACnB,WAAW,oBAAS;AACpB,cAAc,oBAAS;AACvB,eAAe,oBAAS;AACxB,eAAe,oBAAS;AACxB,cAAc,oBAAS;AACvB,cAAc,oBAAS;AACvB,oBAAoB,oBAAS;AAC7B,cAAc,oBAAS;AACvB,mBAAmB,oBAAS;AAC5B,YAAY,oBAAS;AACrB,UAAU,oBAAS;AACnB,cAAc,oBAAS;AACvB,WAAW,oBAAS;AACpB,aAAa,oBAAS;AACtB,uBAAuB,oBAAS;AAChC,uBAAuB,oBAAS;AAChC,iBAAiB,oBAAS,YAAY,oBAAS,SAAS,oBAAS,SAAS,oBAAS;AACnF,gBAAgB,oBAAS,YAAY,oBAAS,SAAS,oBAAS,SAAS,oBAAS;AAClF,eAAe,oBAAS;AACxB,cAAc,oBAAS;AACvB,oBAAoB,oBAAS;AAC7B,eAAe,oBAAS;AACxB,aAAa,oBAAS;AACtB,YAAY,oBAAS;AACrB,GAAG,yBAAyB,iBAAQ,GAAG;AACvC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,sBAAsB,yCAAwB;;AAE9C;AACA;AACA;AACA;;AAEA,aAAa,eAAK,eAAe,SAAM,EAAE,iBAAQ,GAAG,cAAc,aAAa;AAC/E,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,oBAAoB;AACpB,iBAAiB;AACjB,gBAAgB;AAChB;AACA,GAAG;AACH,C;;AC3ZqD;AACc;AACN;AAC4B;AAClC;AACvD;AAC0B;AACS;AACL;AACK;AACc;AAChB;;AAEjC,IAAI,aAAM;AACV,EAAE,kBAAS;;AAEX;AACA,IAAI,wBAAe;;AAEnB,gBAAgB,mCAA0B;;AAE1C;AACA;;AAEA;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB;AACxC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,IAAI,iBAAO;AACX,IAAI,iBAAO;AACX;AACA;;AAEA,EAAE,qBAAY;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C,YAAY,iBAAuB;AACnC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,qDAAqD,iBAAQ,GAAG,UAAU,wBAAwB;AAClG;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA,qBAAqB,eAAe;AACpC;AACA,GAAG;AACH;AACA;AACA,MAAM,UAAgB;AACtB;;AAEA;AACA;;AAEA,qBAAqB,eAAe;AACpC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,uBAA6B;AACtD;AACA,QAAQ,UAAgB;AACxB;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wBAAwB,iBAAQ,GAAG;AACnC,gBAAgB,kBAAwB;AACxC,aAAa,oBAA0B;AACvC;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,kBAAkB,eAAK,eAAe,YAAK;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAQ,GAAG;AAC1B,OAAO;;AAEP,cAAc;AACd;AACA,GAAG;;AAEH;AACA,CAAC,CAAC,eAAK;;AAEP,aAAM;AACN,gBAAgB,oBAAS;AACzB,SAAS,oBAAS;AAClB,YAAY,oBAAS;AACrB,aAAa,oBAAS;AACtB,YAAY,oBAAS;AACrB,WAAW,oBAAS;AACpB,OAAO,oBAAS;AAChB,OAAO,oBAAS;AAChB;;;AAGe,0DAAY,CAAC,aAAM,CAAC,E;;ACnOnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,oDAAyB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oDAAyB;AACzB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0CAA0C,oDAAyB;AACnE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEoB;;;;;;;AC7J+C;AACd;AACoB;AACN;AACN;AAC4B;AAClC;AACvD;AAC0B;AACS;AACC;AACe;AACX;AACL;AACc;AAChB;;AAEjC,IAAI,oBAAe;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,kBAAwB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,oBAA0B;AACnC;;AAEA,IAAI,WAAK;AACT,EAAE,kBAAS;;AAEX;AACA,IAAI,wBAAe;;AAEnB,gBAAgB,mCAA0B;;AAE1C;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA,8CAA8C,2BAAkB;AAChE;AACA,KAAK;AACL;AACA;AACA;AACA,aAAa,oBAAe;AAC5B;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,qBAAY;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,kFAAkF,sBAAY;AAC9F;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,iBAAuB;AACtC,OAAO;AACP;AACA,iBAAiB,kBAAwB;AACzC,SAAS;AACT;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA,iBAAiB,iBAAQ,GAAG;AAC5B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;;AAEA,iCAAiC,2BAAkB;AACnD;AACA,qBAAqB,qBAAqB;AAC1C;AACA,GAAG;AACH;AACA;AACA,MAAM,UAAgB;AACtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,uBAA6B;;AAEtD;AACA,QAAQ,UAAgB;AACxB;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,oBAAe;AACnC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,iBAAQ,GAAG;AACtC;AACA,+BAA+B,cAAc;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gCAAgC;AAChC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA,iCAAiC,2BAAkB;AACnD;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,aAAa,oBAAe;AAC5B;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB,oBAAU,kBAAkB,EAAE,gCAAe,sCAAsC,gCAAe;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP;AACA;;AAEA;AACA,6BAA6B,oBAAU,mBAAmB,EAAE,gCAAe,4CAA4C,gCAAe;AACtI,eAAe,eAAK,eAAe,YAAK;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;;AAEP,cAAc;AACd;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,iBAAiB,oBAAe;AAChC;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,iBAAQ,GAAG;AAC1B;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC,CAAC,eAAK;;AAEP,WAAK;AACL,WAAK;AACL,aAAa,oBAAS;AACtB,gBAAgB,oBAAS,SAAS,oBAAS;AAC3C,SAAS,oBAAS,SAAS,oBAAS;AACpC,SAAS,oBAAS;AAClB,YAAY,oBAAS,YAAY,oBAAS,OAAO,oBAAS;AAC1D,cAAc,oBAAS;AACvB,YAAY,oBAAS;AACrB,WAAW,oBAAS;AACpB,YAAY,oBAAS,SAAS,oBAAS;AACvC,OAAO,oBAAS;AAChB,OAAO,oBAAS;AAChB;AACA,WAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA,QAAQ,CA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ACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,eAAe,mBAAQ;AACvB;;AAEA;AACA;AACA,GAAG;;AAEH;AACA,CAAC,CAAC,eAAK;;AAEP,aAAM;AACN,gBAAgB,oBAAS;AACzB,YAAY,oBAAS;AACrB,aAAa,oBAAS;AACtB;;;ACvFqD;AACrD;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,SAAS,iBAAQ,GAAG;AACpB;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA,C;;AC3BA,SAAS,eAAO;AAChB;AACA,IAAI,eAAO;AACX;AACA;AACA,GAAG;AACH,IAAI,eAAO;AACX;AACA;AACA;;AAEA,SAAS,eAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA,SAAS,gBAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,MAAM,gBAAO;AACb;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK;AACL,MAAM,gBAAO;AACb;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;;AAEA;AACA;;AAEA,MAAM,eAAO;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C,qCAAqC;AACrC;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uBAAuB;;AAEvB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8EAA8E;;AAE9E;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C,0DAA0D;;AAE1D;AACA,+BAA+B;;AAE/B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA,2BAA2B;;AAE3B;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,aAAa,kBAAkB;AAC/B;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,SAAS,OAAO;AAChB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;;AAE/B;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,EAAE;;AAEF;AACA,sEAAsE,cAAc;AACpF;AACA;;AAEA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,uCAAuC;AACvC,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA,2BAA2B,cAAc;AACzC,2BAA2B,cAAc,mBAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mCAAmC,oDAAoD;AACvF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qCAAqC,2BAA2B;AAChE;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,GAAG;AACH;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;;AAEnE,uEAAuE;;AAEvE,mCAAmC;;AAEnC;AACA,2CAA2C;;AAE3C,sFAAsF;;AAEtF,uDAAuD;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE;;AAEX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE;;;AAGX;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA,mEAAmE;AACnE;;AAEA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA,8DAA8D;;AAE9D;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,eAAe,KAAK,mBAAmB;AACvD;AACA;;AAEA,SAAS,mBAAU;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sHAAsH;;AAEtH;AACA,iDAAiD;AACjD;AACA,GAAG;AACH;;AAEe,yDAAY,EAAC;AACQ;AACpC;;;ACxyC+C;;AAExC;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO,SAAS,aAAQ;AACxB;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA,kDAAkD,QAAQ;AAC1D;AACA;AACA,C;;ACpDmE;AACN;AAC4B;AAClC;AACd;AACN;AACF;AACoB;AACU;;AAEsB;;AAErF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,IAAI,WAAK;AACT,EAAE,kBAAS;;AAEX;AACA;;AAEA;;AAEA,IAAI,wBAAe;;AAEnB,mEAAmE,aAAa;AAChF;AACA;;AAEA,oCAAoC,mCAA0B;AAC9D;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,mBAAQ;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mBAAmB,YAAY;AAC/B,SAAS;AACT,mBAAmB,mBAAU;AAC7B;;AAEA,QAAQ,YAAY;;AAEpB;AACA;AACA;AACA;AACA,KAAK,UAAU,mCAA0B;AACzC;;AAEA,EAAE,qBAAY;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,mBAAQ;AAC7B;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,cAAc,aAAQ,iBAAiB,aAAQ;AAC/C;AACA;AACA,WAAW;AACX;AACA;AACA,2BAA2B,WAAW;AACtC;AACA;;AAEA;AACA;AACA,sCAAsC,cAAc,sCAAsC,cAAc;AACxG;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,6BAA6B,MAAM;AACnC,6BAA6B,oBAAgB;AAC7C;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kBAAkB,eAAK;AACvB;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET,eAAe,eAAK;AACpB;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC,CAAC,kBAAS;;AAEX,WAAK;AACL,iBAAiB,oBAAS;AAC1B,SAAS,oBAAS;AAClB,UAAU,oBAAS,YAAY,oBAAS,OAAO,oBAAS;AACxD,aAAa,oBAAS;AACtB,aAAa,oBAAS;AACtB,WAAW,oBAAS;AACpB,WAAW,oBAAS;AACpB,GAAG;AACH,WAAW,oBAAS;AACpB,qBAAqB,oBAAS;AAC9B,uBAAuB,oBAAS;AAChC,YAAY,oBAAS;AACrB,YAAY,oBAAS;AACrB;AACA,WAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;AAGe,wDAAK,E;;ACxMpB;AAC4B;;AAEb,wDAAK,E;;ACHM;;AAE1B,IAAI,iDAAwB;AAC5B;;AAEA;AACA;AACA,GAAG;;;AAGH;AACA;AACA,GAAG;AACH;;;AAGA,OAAO,eAAK;AACZ;AACA,GAAG;;;AAGH;AACA;AACA;AACA;;AAEe,iHAAwB,E;;AC1Bb;;AAEnB;AACP;AACA,EAAE,eAAK;AACP;AACA,GAAG;AACH;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA,C;;;;;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEe,0DAAgB,E;;;;;;AChIoB;AACvB;AACY;;AAExC,8BAA8B,KAAK;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,eAAY;AAChB,yEAAyE,gBAAO;AAChF;AACA;AACA;AACA;AACA;AACA,oBAAoB,2BAAO;;AAE3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA,IAAI,KAAK;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,KAAK;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,IAAI,KAAK;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,EAAE,KAAK;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,eAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,eAAY;;AAEuB;;AAEpB,oEAAY,E;;AC9K3B;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACe,gDAAI,E;;ACpBgD;AACN;AAC4B;AAClC;AAC7B;AACO;AACE;AACiC;AAC9B;;AAEtC;AACA;AACA;AACA;AACA;;AAEA,IAAI,yBAAY;AAChB,EAAE,kBAAS;;AAEX;AACA,IAAI,wBAAe;;AAEnB,WAAW,mCAA0B;AACrC;;AAEA,EAAE,qBAAY;AACd;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,UAAU,OAAQ;AAClB;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,UAAU,OAAQ;AAClB;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,UAAU,OAAQ;AAClB;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,iBAAiB,mBAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,uBAAuB;AAClC;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAU;AACjC;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC,CAAC,eAAK;;AAEP,yBAAY;AACZ,YAAY,oBAAS;AACrB,aAAa,oBAAS;AACtB,kBAAkB,oBAAS;AAC3B;AACe,6EAAY,E;;AChH0B;AACc;AACA;AACN;AAC4B;AAClC;AAC7B;AACS;AACwC;AAC+D;AAChG;AACJ;;AAEtC;;AAEA;AACA;AACA,MAAM,eAAK;AACX;AACA,aAAa,eAAK;AAClB;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA,SAAS,YAAI;;AAEb,IAAI,eAAO;AACX,EAAE,kBAAS;;AAEX;;AAEA;AACA,IAAI,wBAAe;;AAEnB,gBAAgB,mCAA0B;;AAE1C,IAAI,uBAAgB;;AAEpB;AACA;AACA;;AAEA;AACA,gBAAgB,eAAe;AAC/B;;AAEA;AACA;AACA;;AAEA,EAAE,qBAAY;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,yBAAyB,eAAe;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,8CAA8C,eAAe;AAC7D;AACA;AACA;AACA;AACA,0CAA0C,wBAAwB;AAClE;AACA;AACA,uBAAuB,eAAK,yCAAyC,gCAAe,GAAG;AACvF,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B,wBAAwB;AACrD;AACA;AACA,SAAS;AACT,OAAO;AACP,sBAAsB,aAAa;AACnC;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,+BAA+B,wBAAwB;AACvD;AACA;AACA;AACA,4BAA4B,6BAA6B;AACzD;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,+BAA+B,wBAAwB;AACvD;AACA;AACA;AACA,6BAA6B,6BAA6B;AAC1D;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,eAAe,6BAA6B;AAC5C;AACA,aAAa,wBAAwB;AACrC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,eAAK;AACtB,YAAY,eAAY;AACxB;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAQ;AAChC;AACA;AACA,WAAW;AACX;AACA,eAAe,eAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC,CAAC,eAAK;;AAEP,eAAO;AACP,eAAO;AACP,aAAa,oBAAS;AACtB,SAAS,oBAAS;AAClB,aAAa,oBAAS;AACtB,kBAAkB,oBAAS;AAC3B,aAAa,oBAAS;AACtB,kBAAkB,oBAAS,YAAY,oBAAS,SAAS,oBAAS;AAClE,mBAAmB,oBAAS;AAC5B,oBAAoB,oBAAS;AAC7B,aAAa,oBAAS;AACtB,mBAAmB,oBAAS;AAC5B,SAAS,oBAAS;AAClB,WAAW,oBAAS;AACpB,WAAW,oBAAS;AACpB,YAAY,oBAAS;AACrB,YAAY,oBAAS;AACrB,YAAY,oBAAS;AACrB;AACA,eAAO;AACP,eAAe;AACf;AACA,oBAAoB;AACpB;AACA;AACA;AACA,SAAS,YAAI;AACb,WAAW,YAAI;AACf,WAAW,YAAI;AACf,YAAY,YAAI;AAChB;;AAEA,IAAI,uBAAgB;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,eAAe;AACzC;AACA;AACA;AACA,KAAK;AACL,UAAU,OAAQ;AAClB;AACA;AACA;AACA,KAAK,UAAU,OAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,eAAe;AACzC;AACA;AACA;AACA,KAAK;AACL;AACA,YAAY,OAAQ;AACpB;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEe,0EAAwB,CAAC,eAAO,CAAC,E;;ACjWqC;AAClB;AACsB;AAClC;AACd;AACN;;AAEnC,IAAI,2BAAa;AACjB,EAAE,kBAAS;;AAEX;AACA,IAAI,wBAAe;;AAEnB,WAAW,mCAA0B;AACrC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,yCAAwB;;AAExC,2BAA2B,eAAK;AAChC;AACA;AACA;AACA,aAAa,eAAK;AAClB;;AAEA,WAAW,eAAK;AAChB;;AAEA;AACA,CAAC,CAAC,kBAAS;;AAEX,2BAAa;AACb,YAAY,oBAAS;AACrB,aAAa,oBAAS;AACtB,WAAW,oBAAS;AACpB,mBAAmB,oBAAS;AAC5B;;;AAGe,gFAAa,E;;AC/CuC;AACsB;AAClC;AACd;AACN;AACS;;AAE5C,IAAI,qBAAU;AACd,EAAE,kBAAS;;AAEX;AACA,IAAI,wBAAe;;AAEnB,WAAW,mCAA0B;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAK;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM,eAAK;AACX,QAAQ,gBAAa;AACrB,SAAS,kEAAkE;AAC3E;AACA;AACA;AACA;;AAEA;AACA,CAAC,CAAC,kBAAS;;AAEX,qBAAU;AACV,mBAAmB,oBAAS;AAC5B,aAAa,oBAAS;AACtB,aAAa,oBAAS;AACtB,gBAAgB,oBAAS;AACzB,gBAAgB,oBAAS;AACzB,eAAe,oBAAS;AACxB,gBAAgB,oBAAS;AACzB,YAAY,oBAAS;AACrB;;;AAGe,uEAAU,E;;ACvD4B;AACc;AACsB;AAClC;AACd;AACN;AACF;AACJ;AACI;AACK;AACM;AACV;;AAElC,IAAI,WAAK;AACT,EAAE,kBAAS;;AAEX;AACA,IAAI,wBAAe;;AAEnB,gBAAgB,mCAA0B;;AAE1C,IAAI,qBAAgB;;AAEpB;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,OAAO;AAChC,yBAAyB,OAAO;AAChC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA,WAAW,mBAAQ;AACnB;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,mBAAmB,iBAAQ,GAAG;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,eAAK;AAClB,QAAQ,UAAO;AACf;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kBAAkB,eAAK;AACvB,UAAU,WAAK;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU,eAAK;AACf,YAAY,aAAU;AACtB,YAAY,iBAAQ;AACpB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA,WAAW,eAAK;AAChB,MAAM,UAAO;AACb;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM,eAAK;AACX,QAAQ,WAAK;AACb;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sBAAsB;AAChD;AACA;AACA;AACA,SAAS;AACT,QAAQ,eAAK;AACb,UAAU,aAAU;AACpB,UAAU,iBAAQ;AAClB;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,eAAK,eAAe,gBAAa;AACrD;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,sBAAsB,eAAK;AAC3B,UAAU,UAAO;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,eAAK;AAChB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC,CAAC,kBAAS;;AAEX,WAAK;AACL,WAAW,oBAAS;AACpB,SAAS,oBAAS;AAClB,yBAAyB,oBAAS;AAClC,WAAW,oBAAS;AACpB,kBAAkB,oBAAS;AAC3B,SAAS,oBAAS;AAClB,sBAAsB,oBAAS;AAC/B,aAAa,oBAAS;AACtB,aAAa,oBAAS;AACtB,gBAAgB,oBAAS;AACzB,gBAAgB,oBAAS;AACzB,eAAe,oBAAS;AACxB,gBAAgB,oBAAS;AACzB,WAAW,oBAAS;AACpB,YAAY,oBAAS;AACrB,SAAS,oBAAS;AAClB,WAAW,oBAAS;AACpB,WAAW,oBAAS;AACpB,GAAG;AACH;;AAEA,IAAI,qBAAgB;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,yBAAyB,wBAAwB;AACjD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe,wDAAK,E;;ACrViC;AACc;AACsB;AAClC;AAC7B;AACS;AACmB;AACH;AACJ;AACgB;AACN;AAClB;AACH;;AAEoC;AAC5C;;AAE5B,SAAS,OAAI;;AAEb;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,oBAAoB,yBAAY;;AAEhC;AACA,aAAa,oBAAS;AACtB,sBAAsB,oBAAS;AAC/B,GAAG;AACH;;AAEA,IAAI,UAAO;AACX,EAAE,kBAAS;;AAEX;AACA,IAAI,wBAAe;;AAEnB,gBAAgB,mCAA0B;;AAE1C,IAAI,kBAAgB;;AAEpB;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,oBAAgB;AACnD;AACA;AACA;AACA;AACA,mCAAmC,oBAAgB;AACnD;AACA;AACA;AACA;AACA,0CAA0C,oBAAgB;AAC1D;AACA;AACA;AACA,0CAA0C,oBAAgB;AAC1D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA,uBAAuB,iEAAiE;AACxF;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,yCAAyC;AACpE;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,eAAK;AACrB,yBAAyB;;AAEzB;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,4BAA4B,oBAAU;AACtC;AACA;AACA;AACA,kBAAkB,eAAK;;AAEvB;AACA,aAAa,eAAK;AAClB,QAAQ,+BAAe;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,eAAK;AACpB,QAAQ,aAAM;AACd,SAAS,qFAAqF;AAC9F;AACA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC,CAAC,eAAK;;AAEP,UAAO;AACP,YAAY,oBAAS;AACrB,UAAU,oBAAS,YAAY,oBAAS,SAAS,oBAAS,SAAS,oBAAS;AAC5E,cAAc,oBAAS;AACvB,cAAc,oBAAS;AACvB,8BAA8B,oBAAS;AACvC,wBAAwB,oBAAS;AACjC,2BAA2B,oBAAS;AACpC,SAAS,oBAAS,YAAY,oBAAS,OAAO,oBAAS;AACvD,cAAc,oBAAS;AACvB,aAAa,oBAAS;AACtB,kBAAkB,oBAAS;AAC3B,aAAa,oBAAS;AACtB,kBAAkB,oBAAS;AAC3B,qBAAqB,oBAAS;AAC9B,uBAAuB,oBAAS,YAAY,oBAAS,SAAS,oBAAS;AACvE,kBAAkB,oBAAS;AAC3B,mBAAmB,oBAAS;AAC5B,mBAAmB,oBAAS;AAC5B,UAAU,oBAAS;AACnB,cAAc,oBAAS;AACvB,aAAa,oBAAS;AACtB,qBAAqB,oBAAS;AAC9B,eAAe,oBAAS;AACxB,eAAe,oBAAS;AACxB,sBAAsB,oBAAS;AAC/B,QAAQ,oBAAS;AACjB,gBAAgB,oBAAS;AACzB,gBAAgB,oBAAS;AACzB,cAAc,oBAAS;AACvB,gBAAgB,oBAAS;AACzB,uBAAuB,oBAAS;AAChC,sBAAsB,oBAAS,YAAY,oBAAS,SAAS,oBAAS;AACtE,iBAAiB,oBAAS;AAC1B,WAAW,oBAAS;AACpB,cAAc,oBAAS;AACvB;AACA,UAAO;AACP,UAAO;AACP,UAAO;AACP;AACA;AACA;AACA,wBAAwB,OAAI;AAC5B,2BAA2B,OAAI;AAC/B,gBAAgB,OAAI;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,kBAAgB;AACpB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,oHAAoH,QAAQ;AAC5H;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yDAAyD;;AAEzD;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,eAAe,gCAAW;AAC1B,SAAS,QAAQ;AACjB;AACA;AACA;;AAEA;AACA,WAAW,gCAAW;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,WAAW,eAAK;AAChB,MAAM,QAAK;AACX,MAAM,iBAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,gCAAW;AACjF;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,QAAQ,CAAC,UAAO;;AAED,4DAAO,E;;ACztBtB;AACA;AACA;AACA;;AAEA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,4DAAU,E;;AClF0C;AACsB;AAClC;AAC7B;AACS;;AAEnC,IAAI,eAAO;AACX,EAAE,kBAAS;;AAEX;AACA,IAAI,wBAAe;;AAEnB,WAAW,mCAA0B;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,WAAW,eAAK;AAChB;AACA,OAAO,2DAA2D;AAClE;AACA;AACA;;AAEA;AACA,CAAC,CAAC,eAAK;;AAEP,eAAO;AACP,aAAa,oBAAS;AACtB,WAAW,oBAAS,YAAY,oBAAS,OAAO,oBAAS;AACzD,MAAM,oBAAS;AACf,WAAW,oBAAS;AACpB;AACe,8DAAO,E;;AC7C+B;AACgC;AAClB;AACsB;AAClC;AACd;AACN;AACF;AACS;AACV;;AAEhC,IAAI,eAAO;AACX,EAAE,kBAAS;;AAEX;AACA;;AAEA,IAAI,wBAAe;;AAEnB,mEAAmE,aAAa;AAChF;AACA;;AAEA,oCAAoC,mCAA0B;AAC9D;AACA;AACA;AACA;AACA;;AAEA,cAAc,eAAK;AACnB;AACA,SAAS,gDAAgD;AACzD;AACA,SAAS,eAAK,eAAe,UAAO;AACpC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,KAAK,UAAU,mCAA0B;AACzC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yCAAwB;;AAE5C,qBAAqB,iBAAQ,GAAG;AAChC;AACA;AACA;AACA,WAAW,eAAK;AAChB,MAAM,aAAO;AACb,MAAM,iBAAQ;AACd;AACA;AACA;AACA;AACA;AACA,2BAA2B,UAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA,CAAC,CAAC,kBAAS;;AAEX,eAAO;AACP,WAAW,oBAAS;AACpB,YAAY,oBAAS;AACrB,kBAAkB,oBAAS;AAC3B,WAAW,oBAAS;AACpB,aAAa,oBAAS;AACtB,kBAAkB,oBAAS,YAAY,oBAAS,SAAS,oBAAS;AAClE,aAAa,oBAAS;AACtB,mBAAmB,oBAAS;AAC5B,sBAAsB,oBAAS;AAC/B,WAAW,oBAAS,YAAY,oBAAS,OAAO,oBAAS;AACzD,gBAAgB,oBAAS;AACzB,oBAAoB,oBAAS;AAC7B,aAAa,oBAAS;AACtB,mBAAmB,oBAAS;AAC5B,mBAAmB,oBAAS;AAC5B,uBAAuB,oBAAS;AAChC,wBAAwB,oBAAS;AACjC,SAAS,oBAAS;AAClB,gBAAgB,oBAAS;AACzB,MAAM,oBAAS;AACf;AACA,eAAO;AACP;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;;AAGe,8DAAO,E;;ACzIU;;AAEjB,4DAAO,E;;ACF+D;AAClB;AACd;AACc;AACN;AAC4B;AAClC;AAC7B;AACS;AACF;AACH;;AAEf;AACf;;AAEA;AACA,IAAI,kBAAS;;AAEb;AACA;;AAEA;;AAEA,MAAM,wBAAe;;AAErB,qEAAqE,aAAa;AAClF;AACA;;AAEA,sCAAsC,mCAA0B;AAChE;AACA,OAAO;AACP;AACA;AACA,sBAAsB,iBAAQ,GAAG,sBAAsB,gCAAe,GAAG;AACzE;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,wBAAwB,yCAAwB;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,yCAAwB;;AAEvD;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA,eAAe,eAAK;AACpB,UAAU,aAAO;AACjB,UAAU,iBAAQ,GAAG;AACrB;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU,eAAK,eAAe,SAAM,EAAE,iBAAQ,GAAG;AACjD,mBAAmB,iBAAQ,GAAG;AAC9B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO,UAAU,mCAA0B;AAC3C;;AAEA,IAAI,qBAAY;AAChB;AACA;AACA,eAAe,eAAK,0BAA0B,iBAAQ,GAAG,eAAe,iCAAiC;AACzG;AACA,KAAK;;AAEL;AACA,GAAG,CAAC,eAAK;AACT,kBAAkB,oBAAS;AAC3B,iBAAiB,oBAAS,YAAY,oBAAS,SAAS,oBAAS,SAAS,oBAAS;AACnF,cAAc,oBAAS;AACvB,GAAG;AACH;AACA;AACA,KAAK;;AAEL,oBAAoB;AACpB;AACA,GAAG;AACH,C;;AC7G8B;AACF;AACE;AACkC;;AAEhE,SAAM,SAAS,QAAK;AACpB,SAAM,UAAU,SAAM;AACtB,SAAM,2BAA2B,uBAAuB;AACzC,0DAAM,EAAC;;;;ACRtB;AACA;AAEA;AACA;AACA;AAQA,MAAMuC,SAAS,GAAG,GAAlB,C,CACA;;AACO,MAAMC,YAAY,GAAIn8C,KAAD,IAA2B;AACrD,QAAM8B,OAAO,GAAG9B,KAAK,GAAG,GAAxB;AACA,SAAOhC,IAAI,CAAC+D,KAAL,CAAWD,OAAO,GAAG,EAArB,CAAP;AACD,CAHM,C,CAKP;;AACO,MAAMs6C,aAAa,GAAI/B,MAAD,IAA8C;AACzE,QAAM1zC,CAAC,GAAG0zC,MAAM,GAAG,EAAnB;AACA,QAAMxzC,CAAC,GAAG7I,IAAI,CAACC,KAAL,CAAWo8C,MAAM,GAAG,EAApB,CAAV;AACA,SAAO;AAAE1zC,KAAF;AAAKE;AAAL,GAAP;AACD,CAJM;;AAMP,MAAMu0C,WAAM,GAAG,mBAAM;AAAK,WAAS,EAAC;AAAf,EAArB;;AAEe,SAASiB,IAAT,CAAc;AAAErzC,IAAF;AAAMw1B,UAAN;AAAgBtuB;AAAhB,CAAd,EAA6C;AAC1D,QAAMJ,OAAO,GAAGmxB,gBAAgB,CAAChb,UAAD,CAAhC;AACA,QAAMjmB,KAAK,GAAG8P,OAAO,CAACI,IAAD,CAArB;AACA,QAAM4jC,kBAAkB,GAAG5K,wBAAO,CAAC,MAAM;AACvC,UAAM;AAAEviC,OAAF;AAAKE;AAAL,QAAWu1C,aAAa,CAACD,YAAY,CAACn8C,KAAD,CAAb,CAA9B;AACA,UAAM2yC,OAAO,GAAGhsC,CAAC,GAAG,EAApB,CAFuC,CAEf;;AACxB,UAAM21C,OAAO,GAAGz1C,CAAC,GAAG,EAApB,CAHuC,CAGf;;AACxB,WAAQ,IAAG8rC,OAAQ,OAAM2J,OAAQ,IAAjC;AACD,GALiC,EAK/B,CAACt8C,KAAD,CAL+B,CAAlC;AAMA,QAAMi8B,SAAS,GAAGmF,gBAAgB,CAACwB,wBAAD,CAAlC;AACA,QAAM2Z,SAAS,GAAGnb,gBAAgB,CAACwB,yBAAD,CAAlC;;AAEA,QAAML,eAAe,GAAG,MAAMtG,SAAS,CAAC/rB,IAAD,CAAvC;;AAEA,sBACE;AAAK,MAAE,EAAElH,EAAT;AAAa,aAAS,EAAC,MAAvB;AAA8B,SAAK,EAAE;AAAE8qC;AAAF,KAArC;AAAA,2BACE,2BAAC,YAAD;AACE,SAAG,EAAE,CADP;AAEE,SAAG,EAAEoI,SAFP;AAGE,UAAI,EAAE,CAHR;AAIE,WAAK,EAAEA,SAAS,GAAGl8C,KAJrB;AAKE,cAAQ,MALV;AAME,cAAQ,EAAEw+B,QANZ;AAOE,oBAAc,EAAE+D,eAPlB;AAQE,mBAAa,EAAEga,SARjB;AASE,YAAM,EAAEnB,WAAMA;AAThB;AADF,IADF;AAeD,C;;;AC1DD;AAEA;AACA;AACA;;AAEA,MAAMoB,IAAI,GAAG,MAAM;AACjB,QAAM5xB,QAAQ,GAAGwW,gBAAgB,CAACwB,kBAAD,CAAjC;AACA,QAAMhzB,EAAE,GAAGqxB,gBAAgB,CAAChb,mBAAD,CAA3B;AACA,sBACE;AAAK,MAAE,EAAC,IAAR;AAAa,aAAS,EAAEke,oBAAU,CAAC;AAAED,cAAQ,EAAEt0B;AAAZ,KAAD,CAAlC;AAAsD,WAAO,EAAEgb;AAA/D,IADF;AAGD,CAND;;AAQe4xB,6DAAf,E;;;ACdA;AACA;AAEA;AACA;AAEA,MAAMC,MAAM,GAAGja,qBAAI,CAAC,MAAM;AACxB,QAAM0B,QAAQ,GAAGjD,gBAAgB,CAAEp4B,KAAD,IAAWA,KAAK,CAACmH,SAAN,CAAgBH,IAA5B,CAAjC;AACA,QAAM6sC,UAAU,GAAGtb,gBAAgB,CAACwB,YAAD,CAAnC;AACA,sBACE;AAAK,MAAE,EAAC,MAAR;AAAe,aAAS,EAAEuB,oBAAU,CAAC;AAAED;AAAF,KAAD,CAApC;AAAoD,WAAO,EAAEwY;AAA7D,IADF;AAGD,CANkB,CAAnB;AAQeD,iEAAf,E;;ACdA;AAEe,SAASE,MAAT,CAAgBC,EAAhB,EAAoBC,EAApB,EAAwB;AACrC,QAAMC,EAAE,GAAGC,YAAY,CAACH,EAAD,EAAKC,EAAL,CAAvB;AACA,QAAMG,IAAI,GAAGJ,EAAE,CAACA,EAAE,CAAC36C,MAAH,GAAY,CAAb,CAAf;AACA,QAAMg7C,KAAK,GAAG,EAAd;AACA,MAAI59C,CAAC,GAAG,CAAR;;AACA,OAAK,IAAIsH,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIq2C,IAArB,EAA2Br2C,CAAC,EAA5B,EAAgC;AAC9B,WAAOi2C,EAAE,CAACv9C,CAAD,CAAF,GAAQsH,CAAf,EAAkBtH,CAAC;;AACnB,UAAMyD,CAAC,GAAG,CAAC6D,CAAC,GAAGi2C,EAAE,CAACv9C,CAAC,GAAG,CAAL,CAAP,KAAmBu9C,EAAE,CAACv9C,CAAD,CAAF,GAAQu9C,EAAE,CAACv9C,CAAC,GAAG,CAAL,CAA7B,CAAV;AACA,UAAMwE,CAAC,GAAGi5C,EAAE,CAACz9C,CAAC,GAAG,CAAL,CAAF,IAAau9C,EAAE,CAACv9C,CAAD,CAAF,GAAQu9C,EAAE,CAACv9C,CAAC,GAAG,CAAL,CAAvB,KAAmCw9C,EAAE,CAACx9C,CAAD,CAAF,GAAQw9C,EAAE,CAACx9C,CAAC,GAAG,CAAL,CAA7C,CAAV;AACA,UAAMyE,CAAC,GAAG,CAACg5C,EAAE,CAACz9C,CAAD,CAAH,IAAUu9C,EAAE,CAACv9C,CAAD,CAAF,GAAQu9C,EAAE,CAACv9C,CAAC,GAAG,CAAL,CAApB,KAAgCw9C,EAAE,CAACx9C,CAAD,CAAF,GAAQw9C,EAAE,CAACx9C,CAAC,GAAG,CAAL,CAA1C,CAAV;AACA,UAAMosB,CAAC,GACL,CAAC,IAAI3oB,CAAL,IAAU+5C,EAAE,CAACx9C,CAAC,GAAG,CAAL,CAAZ,GAAsByD,CAAC,GAAG+5C,EAAE,CAACx9C,CAAD,CAA5B,GAAkCyD,CAAC,IAAI,IAAIA,CAAR,CAAD,IAAee,CAAC,IAAI,IAAIf,CAAR,CAAD,GAAcgB,CAAC,GAAGhB,CAAjC,CADpC;AAEAm6C,SAAK,CAACrkC,IAAN,CAAW6S,CAAX;AACD;;AACD,SAAOwxB,KAAP;AACD;;AAED,SAASF,YAAT,CAAsBH,EAAtB,EAA0BC,EAA1B,EAA8B;AAC5B,QAAMC,EAAE,GAAGF,EAAE,CAAC/9C,GAAH,CAAO,MAAM,CAAb,CAAX;AACA,QAAM2c,CAAC,GAAGohC,EAAE,CAAC36C,MAAH,GAAY,CAAtB;AACA,QAAMi7C,MAAM,GAAGC,WAAW,CAAC3hC,CAAC,GAAG,CAAL,EAAQA,CAAC,GAAG,CAAZ,CAA1B;;AAEA,OACE,IAAInc,CAAC,GAAG,CADV,EAEEA,CAAC,GAAGmc,CAFN,EAGEnc,CAAC,EAHH,CAGM;AAHN,IAIE;AACA69C,UAAM,CAAC79C,CAAD,CAAN,CAAUA,CAAC,GAAG,CAAd,IAAmB,KAAKu9C,EAAE,CAACv9C,CAAD,CAAF,GAAQu9C,EAAE,CAACv9C,CAAC,GAAG,CAAL,CAAf,CAAnB;AACA69C,UAAM,CAAC79C,CAAD,CAAN,CAAUA,CAAV,IAAe,KAAK,KAAKu9C,EAAE,CAACv9C,CAAD,CAAF,GAAQu9C,EAAE,CAACv9C,CAAC,GAAG,CAAL,CAAf,IAA0B,KAAKu9C,EAAE,CAACv9C,CAAC,GAAG,CAAL,CAAF,GAAYu9C,EAAE,CAACv9C,CAAD,CAAnB,CAA/B,CAAf;AACA69C,UAAM,CAAC79C,CAAD,CAAN,CAAUA,CAAC,GAAG,CAAd,IAAmB,KAAKu9C,EAAE,CAACv9C,CAAC,GAAG,CAAL,CAAF,GAAYu9C,EAAE,CAACv9C,CAAD,CAAnB,CAAnB;AACA69C,UAAM,CAAC79C,CAAD,CAAN,CAAUmc,CAAC,GAAG,CAAd,IACE,KACC,CAACqhC,EAAE,CAACx9C,CAAD,CAAF,GAAQw9C,EAAE,CAACx9C,CAAC,GAAG,CAAL,CAAX,KAAuB,CAACu9C,EAAE,CAACv9C,CAAD,CAAF,GAAQu9C,EAAE,CAACv9C,CAAC,GAAG,CAAL,CAAX,KAAuBu9C,EAAE,CAACv9C,CAAD,CAAF,GAAQu9C,EAAE,CAACv9C,CAAC,GAAG,CAAL,CAAjC,CAAvB,IACC,CAACw9C,EAAE,CAACx9C,CAAC,GAAG,CAAL,CAAF,GAAYw9C,EAAE,CAACx9C,CAAD,CAAf,KAAuB,CAACu9C,EAAE,CAACv9C,CAAC,GAAG,CAAL,CAAF,GAAYu9C,EAAE,CAACv9C,CAAD,CAAf,KAAuBu9C,EAAE,CAACv9C,CAAC,GAAG,CAAL,CAAF,GAAYu9C,EAAE,CAACv9C,CAAD,CAArC,CAAvB,CAFF,CADF;AAID;;AAED69C,QAAM,CAAC,CAAD,CAAN,CAAU,CAAV,IAAe,KAAKN,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAAf,CAAf;AACAM,QAAM,CAAC,CAAD,CAAN,CAAU,CAAV,IAAe,KAAKN,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAAf,CAAf;AACAM,QAAM,CAAC,CAAD,CAAN,CAAU1hC,CAAC,GAAG,CAAd,IACG,KAAKqhC,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAAf,CAAD,IAAyB,CAACD,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAAX,KAAmBA,EAAE,CAAC,CAAD,CAAF,GAAQA,EAAE,CAAC,CAAD,CAA7B,CAAzB,CADF;AAGAM,QAAM,CAAC1hC,CAAD,CAAN,CAAUA,CAAC,GAAG,CAAd,IAAmB,KAAKohC,EAAE,CAACphC,CAAD,CAAF,GAAQohC,EAAE,CAACphC,CAAC,GAAG,CAAL,CAAf,CAAnB;AACA0hC,QAAM,CAAC1hC,CAAD,CAAN,CAAUA,CAAV,IAAe,KAAKohC,EAAE,CAACphC,CAAD,CAAF,GAAQohC,EAAE,CAACphC,CAAC,GAAG,CAAL,CAAf,CAAf;AACA0hC,QAAM,CAAC1hC,CAAD,CAAN,CAAUA,CAAC,GAAG,CAAd,IACG,KAAKqhC,EAAE,CAACrhC,CAAD,CAAF,GAAQqhC,EAAE,CAACrhC,CAAC,GAAG,CAAL,CAAf,CAAD,IAA6B,CAACohC,EAAE,CAACphC,CAAD,CAAF,GAAQohC,EAAE,CAACphC,CAAC,GAAG,CAAL,CAAX,KAAuBohC,EAAE,CAACphC,CAAD,CAAF,GAAQohC,EAAE,CAACphC,CAAC,GAAG,CAAL,CAAjC,CAA7B,CADF;AAGA,SAAO4hC,KAAK,CAACF,MAAD,EAASJ,EAAT,CAAZ;AACD;;AAED,SAASM,KAAT,CAAeF,MAAf,EAAuBJ,EAAvB,EAA2B;AACzB,QAAMt5C,CAAC,GAAG05C,MAAM,CAACj7C,MAAjB,CADyB,CAEzB;;AACA,OAAK,IAAIopB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG7nB,CAApB,EAAuB6nB,CAAC,EAAxB,EAA4B;AAC1B;AACA,QAAIgyB,IAAI,GAAG,CAAX;AACA,QAAIC,IAAI,GAAGh0C,MAAM,CAACi0C,iBAAlB;;AACA,SAAK,IAAIl+C,CAAC,GAAGgsB,CAAb,EAAgBhsB,CAAC,GAAGmE,CAApB,EAAuBnE,CAAC,EAAxB,EACE,IAAI69C,MAAM,CAAC79C,CAAD,CAAN,CAAUgsB,CAAV,IAAeiyB,IAAnB,EAAyB;AACvBD,UAAI,GAAGh+C,CAAP;AACAi+C,UAAI,GAAGJ,MAAM,CAAC79C,CAAD,CAAN,CAAUgsB,CAAV,CAAP;AACD;;AACHmyB,YAAQ,CAACN,MAAD,EAAS7xB,CAAT,EAAYgyB,IAAZ,CAAR,CAT0B,CAW1B;;AACA,SAAK,IAAIh+C,CAAC,GAAGgsB,CAAC,GAAG,CAAjB,EAAoBhsB,CAAC,GAAGmE,CAAxB,EAA2BnE,CAAC,EAA5B,EAAgC;AAC9B,WAAK,IAAI+rB,CAAC,GAAGC,CAAC,GAAG,CAAjB,EAAoBD,CAAC,GAAG5nB,CAAC,GAAG,CAA5B,EAA+B4nB,CAAC,EAAhC,EACE8xB,MAAM,CAAC79C,CAAD,CAAN,CAAU+rB,CAAV,IACE8xB,MAAM,CAAC79C,CAAD,CAAN,CAAU+rB,CAAV,IAAe8xB,MAAM,CAAC7xB,CAAD,CAAN,CAAUD,CAAV,KAAgB8xB,MAAM,CAAC79C,CAAD,CAAN,CAAUgsB,CAAV,IAAe6xB,MAAM,CAAC7xB,CAAD,CAAN,CAAUA,CAAV,CAA/B,CADjB;;AAEF6xB,YAAM,CAAC79C,CAAD,CAAN,CAAUgsB,CAAV,IAAe,CAAf;AACD;AACF,GArBwB,CAsBzB;;;AACA,OAAK,IAAIhsB,CAAC,GAAGmE,CAAC,GAAG,CAAjB,EAAoBnE,CAAC,IAAI,CAAzB,EAA4BA,CAAC,EAA7B,EAAiC;AAC/B,UAAMusB,CAAC,GAAGsxB,MAAM,CAAC79C,CAAD,CAAN,CAAUmE,CAAV,IAAe05C,MAAM,CAAC79C,CAAD,CAAN,CAAUA,CAAV,CAAzB;AACAy9C,MAAE,CAACz9C,CAAD,CAAF,GAAQusB,CAAR,CAF+B,CAG/B;;AACA,SAAK,IAAIR,CAAC,GAAG/rB,CAAC,GAAG,CAAjB,EAAoB+rB,CAAC,IAAI,CAAzB,EAA4BA,CAAC,EAA7B,EAAiC;AAC/B8xB,YAAM,CAAC9xB,CAAD,CAAN,CAAU5nB,CAAV,KAAgB05C,MAAM,CAAC9xB,CAAD,CAAN,CAAU/rB,CAAV,IAAeusB,CAA/B;AACAsxB,YAAM,CAAC9xB,CAAD,CAAN,CAAU/rB,CAAV,IAAe,CAAf;AACD;AACF;;AACD,SAAOy9C,EAAP;AACD;;AAED,SAASK,WAAT,CAAqBM,IAArB,EAA2BC,OAA3B,EAAoC;AAClC,QAAMR,MAAM,GAAG,EAAf;;AACA,OAAK,IAAI79C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGo+C,IAApB,EAA0Bp+C,CAAC,EAA3B,EAA+B;AAC7B69C,UAAM,CAACtkC,IAAP,CAAY,EAAZ;;AACA,SAAK,IAAIwS,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsyB,OAApB,EAA6BtyB,CAAC,EAA9B,EAAkC;AAChC8xB,YAAM,CAAC79C,CAAD,CAAN,CAAUuZ,IAAV,CAAe,CAAf;AACD;AACF;;AACD,SAAOskC,MAAP;AACD;;AAED,SAASM,QAAT,CAAkBh6C,CAAlB,EAAqB6nB,CAArB,EAAwBC,CAAxB,EAA2B;AACzB,QAAME,CAAC,GAAGhoB,CAAC,CAAC6nB,CAAD,CAAX;AACA7nB,GAAC,CAAC6nB,CAAD,CAAD,GAAO7nB,CAAC,CAAC8nB,CAAD,CAAR;AACA9nB,GAAC,CAAC8nB,CAAD,CAAD,GAAOE,CAAP;AACD,C;;;ACrGD;AACA;AACA;AACA;AACA;AACA;AAGA,MAAMmyB,YAAY,GAAG,EAArB;AACA,MAAMC,WAAW,GAAG,GAApB;;AAEA,SAASC,OAAT,GAAmB;AACjB,QAAM/tC,OAAO,GAAGmxB,gBAAgB,CAAChb,UAAD,CAAhC;AAEA,QAAM63B,sBAAsB,GAAG7c,gBAAgB,CAAChb,kBAAD,CAA/C;AACA,QAAM83B,eAAe,GAAG5e,qBAAqB,CAAC2e,sBAAD,CAA7C;AAEA,QAAM,CAACE,UAAD,EAAaC,aAAb,IAA8B3e,yBAAQ,CAA2B,IAA3B,CAA5C;AAEA,QAAMwQ,SAAS,GAAG5G,wBAAO,CAAC;AAAA;;AAAA,oCAAM8U,UAAN,aAAMA,UAAN,uBAAMA,UAAU,CAAEjuB,UAAZ,CAAuB,IAAvB,CAAN,yEAAsC,IAAtC;AAAA,GAAD,EAA6C,CACpEiuB,UADoE,CAA7C,CAAzB;AAGA,QAAME,YAAY,GAAGC,eAAe,CAACrO,SAAD,CAApC;AAEAhR,kCAAe,CAAC,MAAM;AACpB,QACEgR,SAAS,IAAI,IAAb,IACAkO,UAAU,IAAI,IADd,IAEAD,eAAe,IAAI,IAFnB,IAGAG,YAAY,IAAI,IAJlB,EAKE;AACA;AACD;;AACD,UAAMj3C,KAAK,GAAGqC,MAAM,CAAC00C,UAAU,CAAC/2C,KAAZ,CAApB;AACA,UAAMF,MAAM,GAAGuC,MAAM,CAAC00C,UAAU,CAACj3C,MAAZ,CAArB;AACA+oC,aAAS,CAACwD,SAAV,CAAoB,CAApB,EAAuB,CAAvB,EAA0BrsC,KAA1B,EAAiCF,MAAjC;AACAq3C,cAAU,CAAC;AAAEF,kBAAF;AAAgBpuC,aAAhB;AAAyBggC,eAAzB;AAAoCiO;AAApC,KAAD,CAAV;AACD,GAbc,EAaZ,CAACjO,SAAD,EAAYkO,UAAZ,EAAwBE,YAAxB,EAAsCH,eAAtC,EAAuDjuC,OAAvD,CAbY,CAAf;AAeA,sBACE;AACE,MAAE,EAAC,SADL;AAEE,OAAG,EAAEmuC,aAFP;AAGE,SAAK,EAAEL,WAHT;AAIE,UAAM,EAAED;AAJV,IADF;AAQD;;AAED,SAASQ,eAAT,CAAyBrO,SAAzB,EAAqE;AACnE,QAAMuO,sBAAsB,GAAGpd,gBAAgB,CAAChb,kBAAD,CAA/C;AACA,QAAMq4B,eAAe,GAAGnf,qBAAqB,CAACkf,sBAAD,CAA7C;AACA,SAAOnV,wBAAO,CAAC,MAAM;AACnB,QAAI4G,SAAS,IAAI,IAAb,IAAqBwO,eAAe,IAAI,IAA5C,EAAkD;AAChD,aAAO,IAAP;AACD;;AACD,WAAOxO,SAAS,CAACyO,aAAV,CAAwBD,eAAxB,EAAyC,UAAzC,CAAP;AACD,GALa,EAKX,CAACxO,SAAD,EAAYwO,eAAZ,CALW,CAAd;AAMD;;AAED,SAASF,UAAT,CAAoB;AAClBF,cADkB;AAElBpuC,SAFkB;AAGlBggC,WAHkB;AAIlBiO;AAJkB,CAApB,EAUG;AACD,QAAMS,WAAW,GAAG38C,cAAc,CAACiO,OAAO,CAACC,MAAR,GAAiB,GAAlB,EAAuB,CAAvB,EAA0B4tC,YAAY,GAAG,CAAzC,CAAlC;AACA7N,WAAS,CAAC7f,SAAV,CACE8tB,eADF,EAEE,CAFF,EAGES,WAHF,EAIET,eAAe,CAAC92C,KAJlB,EAKE82C,eAAe,CAACh3C,MALlB;AAQA,QAAM03C,UAAU,GAAG9jD,KAAK,CAACkE,GAAN,CAAWqR,IAAD,IAAUJ,OAAO,CAACI,IAAD,CAA3B,CAAnB;AAEA4/B,WAAS,CAAC8B,SAAV,GAAsBsM,YAAtB;AACA,QAAMQ,WAAW,GAAG,CAApB,CAbC,CAasB;;AAEvB,QAAMv+C,GAAG,GAAG,CAAZ;AACA,QAAMC,GAAG,GAAGu9C,YAAY,GAAG,CAA3B;AAEA,QAAMf,EAAY,GAAG,EAArB;AACA,QAAMC,EAAY,GAAG,EAArB;AACA4B,YAAU,CAACz4C,OAAX,CAAmB,CAAChG,KAAD,EAAQX,CAAR,KAAc;AAC/B,UAAMyC,OAAO,GAAG,CAAC,MAAM9B,KAAP,IAAgB,GAAhC,CAD+B,CAE/B;;AACA48C,MAAE,CAAChkC,IAAH,CAAQvZ,CAAC,GAAG,EAAZ;AACAw9C,MAAE,CAACjkC,IAAH,CAAQ/W,cAAc,CAACC,OAAD,EAAU3B,GAAV,EAAeC,GAAf,CAAtB;AACD,GALD;AAOA,QAAM68C,KAAK,GAAGN,MAAM,CAACC,EAAD,EAAKC,EAAL,CAApB;AAEA,QAAMG,IAAI,GAAGJ,EAAE,CAACA,EAAE,CAAC36C,MAAH,GAAY,CAAb,CAAf;AACA,MAAI08C,KAAK,GAAG9B,EAAE,CAAC,CAAD,CAAd;;AACA,OAAK,IAAIl2C,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIq2C,IAArB,EAA2Br2C,CAAC,EAA5B,EAAgC;AAC9B,UAAME,CAAC,GAAG3G,KAAK,CAAClC,IAAI,CAAC+D,KAAL,CAAWk7C,KAAK,CAACt2C,CAAD,CAAhB,CAAD,EAAuB,CAAvB,EAA0Bg3C,YAAY,GAAG,CAAzC,CAAf;AACA,UAAMiB,IAAI,GAAG5gD,IAAI,CAACmC,GAAL,CAAS0G,CAAT,EAAY83C,KAAZ,CAAb;AACA,UAAM53C,MAAM,GAAG,IAAI/I,IAAI,CAACkZ,GAAL,CAASynC,KAAK,GAAG93C,CAAjB,CAAnB;AACAipC,aAAS,CAAC+B,QAAV,CAAmB6M,WAAW,GAAG/3C,CAAjC,EAAoCi4C,IAApC,EAA0C,CAA1C,EAA6C73C,MAA7C;AACA43C,SAAK,GAAG93C,CAAR;AACD;AACF;;AAEcg3C,mEAAf,E;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;;AAEA,MAAMgB,kBAAkB,GAAG,MAAM;AAC/B,QAAMxnB,iBAAiB,GAAG+J,gBAAgB,CAACwB,uBAAD,CAA1C;AACA,QAAMnK,cAAc,GAAG2I,gBAAgB,CAACwB,oBAAD,CAAvC;AACA,QAAMpK,eAAe,GAAG4I,gBAAgB,CAACwB,qBAAD,CAAxC;AACA,sBACE,2BAAC,4BAAD;AACE,OAAG,MADL;AAEE,MAAE,EAAC,iBAFL;AAGE,cAAU,EAAE,mBACV;AAAA,8BACE,4BAAC,MAAD;AAAQ,aAAK,EAAC,MAAd;AAAA,mBACGkc,OAAO,CAACpqC,OAAR,CAAgB7V,GAAhB,CAAqBwW,MAAD,iBACnB,2BAAC,IAAD;AAEE,iBAAO,EAAE,MAAMmjB,eAAe,CAACnjB,MAAD,CAFhC;AAGE,eAAK,EAAEA,MAAM,CAACnU;AAHhB,WACOmU,MAAM,CAACnU,IADd,CADD,CADH,eAQE,2BAAC,cAAD,KARF,eASE,2BAAC,IAAD;AAAM,iBAAO,EAAEm2B,iBAAf;AAAkC,eAAK,EAAC;AAAxC,UATF;AAAA,QADF,eAYE,2BAAC,IAAD;AAAM,eAAO,EAAEoB,cAAf;AAA+B,aAAK,EAAC;AAArC,QAZF;AAAA,MAJJ;AAAA,2BAoBE;AAAK,QAAE,EAAC;AAAR;AApBF,IADF;AAwBD,CA5BD;;AA8BeomB,yFAAf,E;;;;ACpCA;AACA;AACA;AACA;AACA;AAEe,SAASE,cAAT,GAA0B;AACvC,QAAM/a,aAAa,GAAG/C,gBAAgB,CAAChb,gBAAD,CAAtC;AAEA,QAAMie,QAAQ,GAAGF,aAAa,KAAKppC,OAAO,CAACG,SAA3C;AACA,QAAM6rB,WAAW,GAAGwa,gBAAgB,CAACwB,mBAAD,CAApC;AACA,QAAMnc,wBAAwB,GAAG2a,gBAAgB,CAC/CwB,gCAD+C,CAAjD;AAGA,sBACE,4BAAC,qBAAD;AAAY,MAAE,EAAC,YAAf;AAAA,4BACE;AAAK,QAAE,EAAC,iBAAR;AAA0B,aAAO,EAAEnc;AAAnC,MADF,eAEE;AACE,QAAE,EAAC,iBADL;AAEE,aAAO,EAAE,MAAMG,WAAW,CAAChsB,OAAO,CAACG,SAAT;AAF5B,MAFF;AAAA,KAAiCmpC,QAAQ,GAAG,UAAH,GAAgB,YAAzD,CADF;AASD,C;;;;ACvBD;AACA;AACA;AACA;AAEA;AACA;AACA;;AAEA,MAAM8a,cAAc,GAAG,MAAM;AAC3B,QAAMzzC,MAAM,GAAG01B,gBAAgB,CAAChb,SAAD,CAA/B;AACA,QAAMza,OAAO,GAAGy1B,gBAAgB,CAAChb,UAAD,CAAhC;AACA,QAAMQ,wBAAwB,GAAG2a,gBAAgB,CAC/CwB,gCAD+C,CAAjD;AAIA,QAAMoZ,OAAO,GAAG,CAAC,MAAD,EAAS,QAAT,EAAmB,OAAnB,CAAhB;AACA,QAAMiD,iBAAiB,GAAG/7C,OAAO,CAAC,CAAD,EAAI,GAAJ,EAASqI,MAAT,EAAiBywC,OAAjB,CAAjC;AACA,QAAMkD,kBAAkB,GAAGh8C,OAAO,CAAC,CAAC,GAAF,EAAO,GAAP,EAAYsI,OAAZ,EAAqBwwC,OAArB,CAAlC;AACA,sBACE;AACE,aAAS,EAAC,WADZ;AAEE,iBAAa,EAAEv1B,wBAFjB;AAGE,SAAK,EAAE;AAAExf,WAAK,EAAE,MAAT;AAAiBF,YAAM,EAAE;AAAzB,KAHT;AAAA,4BAKE,2BAAC,cAAD,KALF,eAME,2BAAC,MAAD;AAAQ,QAAE,EAAC,kBAAX;AAA8B,eAAS,EAAEk4C;AAAzC,MANF,eAOE,2BAAC,OAAD;AAAS,QAAE,EAAC,mBAAZ;AAAgC,eAAS,EAAEC;AAA3C,MAPF;AAAA,IADF;AAWD,CArBD;;AAsBeF,iFAAf,E;;;;;;;AC/BA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;;AAEA,MAAMG,aAAa,GAAIjvC,IAAD,IAAqB,QAAOA,IAAK,EAAvD;;AAEA,MAAMkvC,eAAe,GAAG,MAAM;AAC5B,QAAM9xC,OAAO,GAAG2zB,gBAAgB,CAAChb,UAAD,CAAhC;AACA,QAAM+d,aAAa,GAAG/C,gBAAgB,CAAChb,gBAAD,CAAtC;AACA,QAAMlK,cAAc,GAAGklB,gBAAgB,CAAChb,wBAAD,CAAvC;AAEA,QAAMie,QAAQ,GAAGF,aAAa,KAAKppC,OAAO,CAACG,SAA3C;AACA,QAAMmP,KAAK,GAAG6R,cAAc,CAACnhB,OAAO,CAACG,SAAT,CAA5B;AAEA,QAAMskD,cAAc,GAAGje,gBAAgB,CAACwB,SAAD,CAAvC;AACA,QAAMlY,UAAU,GAAG0W,gBAAgB,CAACwB,oBAAD,CAAnC;AACA,QAAMnY,UAAU,GAAG2W,gBAAgB,CAACwB,oBAAD,CAAnC;AACA,QAAMpY,UAAU,GAAG4W,gBAAgB,CAACwB,oBAAD,CAAnC;AACA,QAAM0c,aAAa,GAAGle,gBAAgB,CAACwB,SAAD,CAAtC;AACA,QAAMnc,wBAAwB,GAAG2a,gBAAgB,CAC/CwB,gCAD+C,CAAjD;AAIA,QAAM8G,SAAS,GAAGvF,oBAAU,CAAC;AAC3BD,YAD2B;AAE3B52B,WAF2B;AAG3BpD,SAH2B;AAI3BxJ,UAAM,EAAE,IAJmB;AAK3Bk3C,aAAS,EAAE;AALgB,GAAD,CAA5B;AAOA,sBACE;AAAK,MAAE,EAAC,kBAAR;AAA2B,aAAS,EAAElO,SAAtC;AAAA,2BACE,2BAAC,sBAAD;AAAa,cAAQ,EAAE9uC,OAAO,CAACG,SAA/B;AAAA,gBACGmP,KAAK,gBACJ,2BAAC,8BAAD,KADI,gBAGJ;AAAA,gCACE;AACE,mBAAS,EAAC,mCADZ;AAEE,uBAAa,EAAEuc,wBAFjB;AAAA,iCAIE,2BAAC,cAAD;AAJF,UADF,eAOE,2BAAC,oBAAD,KAPF,eAQE,2BAAC,sBAAD,KARF,eASE,2BAAC,uBAAD,KATF,eAUE,2BAAC,kCAAD,KAVF,eAWE,2BAAC,IAAD;AAAM,YAAE,EAAC,QAAT;AAAkB,cAAI,EAAC,QAAvB;AAAgC,kBAAQ,EAAE44B;AAA1C,UAXF,eAYE;AAAK,YAAE,EAAC,UAAR;AAAmB,iBAAO,EAAE70B;AAA5B,UAZF,eAaE;AAAK,YAAE,EAAC,QAAR;AAAiB,iBAAO,EAAEC;AAA1B,UAbF,eAcE;AAAK,YAAE,EAAC,WAAR;AAAoB,iBAAO,EAAEC;AAA7B,UAdF,EAeG/vB,KAAK,CAACkE,GAAN,CAAW0gD,KAAD,iBACT,2BAAC,IAAD;AAEE,YAAE,EAAEJ,aAAa,CAACI,KAAD,CAFnB;AAGE,cAAI,EAAEA,KAHR;AAIE,kBAAQ,EAAGv/C,KAAD,IAAWs/C,aAAa,CAACC,KAAD,EAAQv/C,KAAR;AAJpC,WACOu/C,KADP,CADD,CAfH;AAAA;AAJJ;AADF,IADF;AAkCD,CA1DD;;AA2DeH,8EAAf,E;;AChFA;AACA;AAMO,MAAMI,cAAyB,GAAG;AACvCC,yBAAuB,EAAE,CAAC,UAAD,CADc;AAEvCC,oBAAkB,EAAE,CAClB,gCADkB,EAElB,4BAFkB,CAFmB;AAMvCC,2BAAyB,EAAE,CACzB,uCADyB,EAEzB,mCAFyB,CANY;AAUvCC,sBAAoB,EAAE,CAAC,oBAAD,CAViB;AAWvCC,6BAA2B,EAAE,CAAC,2BAAD,CAXU;AAYvCC,kBAAgB,EAAE,CAAC,gBAAD,CAZqB;AAavCC,yBAAuB,EAAE,CAAC,uBAAD,CAbc;AAcvCC,mBAAiB,EAAE,CAAC,iBAAD,CAdoB;AAevCC,0BAAwB,EAAE,CAAC,wBAAD,CAfa;AAgBvCC,kBAAgB,EAAE,CAAC,gBAAD,CAhBqB;AAiBvCC,yBAAuB,EAAE,CAAC,uBAAD,CAjBc;AAkBvCC,kBAAgB,EAAE,CAAC,gBAAD,CAlBqB;AAmBvCC,yBAAuB,EAAE,CAAC,uBAAD,CAnBc;AAoBvCC,mBAAiB,EAAE,CAAC,QAAD,CApBoB;AAqBvCC,0BAAwB,EAAE,CAAC,eAAD,CArBa;AAsBvCC,wBAAsB,EAAE,CAAC,cAAD,CAtBe;AAuBvCC,aAAW,EAAE,CAAC,qBAAD,EAAwB,oCAAxB,CAvB0B;AAwBvCC,sBAAoB,EAAE,CAAC,8BAAD,CAxBiB;AAyBvCC,WAAS,EAAE,CAAC,mBAAD,EAAsB,kCAAtB,CAzB4B;AA0BvCC,oBAAkB,EAAE,CAAC,4BAAD,CA1BmB;AA2BvCC,eAAa,EAAE,CAAC,mBAAD,CA3BwB;AA4BvCC,YAAU,EAAE,CAAC,6BAAD,CA5B2B;AA6BvCC,SAAO,EAAE,CAAC,UAAD,CA7B8B;AA8BvCC,SAAO,EAAE,CAAC,UAAD,CA9B8B;AA+BvCC,SAAO,EAAE,CAAC,UAAD,CA/B8B;AAgCvCC,SAAO,EAAE,CAAC,UAAD,CAhC8B;AAiCvCC,SAAO,EAAE,CAAC,UAAD,CAjC8B;AAkCvCC,SAAO,EAAE,CAAC,UAAD,CAlC8B;AAmCvCC,SAAO,EAAE,CAAC,UAAD,CAnC8B;AAoCvCC,SAAO,EAAE,CAAC,UAAD,CApC8B;AAqCvCC,SAAO,EAAE,CAAC,UAAD,CArC8B;AAsCvCC,SAAO,EAAE,CAAC,UAAD,CAtC8B;AAuCvCC,kBAAgB,EAAE,CAAC,mBAAD,CAvCqB;AAwCvCC,eAAa,EAAE,CAAC,6BAAD,CAxCwB;AAyCvCC,YAAU,EAAE,CAAC,UAAD,CAzC2B;AA0CvCC,YAAU,EAAE,CAAC,UAAD,CA1C2B;AA2CvCC,YAAU,EAAE,CAAC,UAAD,CA3C2B;AA4CvCC,YAAU,EAAE,CAAC,UAAD,CA5C2B;AA6CvCC,YAAU,EAAE,CAAC,UAAD,CA7C2B;AA8CvCC,YAAU,EAAE,CAAC,UAAD,CA9C2B;AA+CvCC,YAAU,EAAE,CAAC,UAAD,CA/C2B;AAgDvCC,YAAU,EAAE,CAAC,UAAD,CAhD2B;AAiDvCC,YAAU,EAAE,CAAC,UAAD,CAjD2B;AAkDvCC,YAAU,EAAE,CAAC,UAAD,CAlD2B;AAmDvCC,wBAAsB,EAAE,CAAC,mBAAD,CAnDe;AAoDvCC,uBAAqB,EAAE,CAAC,oBAAD,CApDgB;AAqDvCC,wBAAsB,EAAE,CAAC,mBAAD,CArDe;AAsDvCC,4BAA0B,EAAE,CAAC,iBAAD,CAtDW;AAuDvCC,wBAAsB,EAAE,CAAC,0BAAD,CAvDe;AAwDvCC,mBAAiB,EAAE,CACjB,yBADiB,EAEjB,2BAFiB,EAGjB,0BAHiB,EAIjB,4BAJiB,CAxDoB;AA8DvCC,0BAAwB,EAAE,CAAC,oBAAD,CA9Da;AA+DvCC,oBAAkB,EAAE,CAAC,qBAAD,CA/DmB;AAgEvCC,2BAAyB,EAAE,CAAC,qBAAD,CAhEY;AAiEvCC,4BAA0B,EAAE,CAC1B,mCAD0B,EAE1B,qCAF0B,EAG1B,oCAH0B,EAI1B,sCAJ0B,CAjEW;AAuEvCC,4BAA0B,EAAE,CAAC,8BAAD,CAvEW;AAwEvCC,6BAA2B,EAAE,CAAC,+BAAD,CAxEU;AAyEvCC,oCAAkC,EAAE,CAAC,+BAAD,CAzEG;AA0EvCC,oBAAkB,EAAE,CAAC,uBAAD,CA1EmB;AA2EvCC,qBAAmB,EAAE,CAAC,wBAAD,CA3EkB;AA4EvCC,wBAAsB,EAAE,CAAC,4BAAD,CA5Ee;AA6EvCC,iCAA+B,EAAE,CAC/B,0DAD+B,CA7EM;AAgFvCC,sBAAoB,EAAE,CAAC,kBAAD,CAhFiB;AAiFvCC,6BAA2B,EAAE,CAAC,uBAAD,CAjFU;AAkFvCC,8BAA4B,EAAE,CAAC,wBAAD,CAlFS;AAmFvCC,gCAA8B,EAAE,CAAC,sBAAD,CAnFO;AAoFvCC,2BAAyB,EAAE,CAAC,wBAAD,CApFY;AAqFvCC,gCAA8B,EAAE,CAAC,8BAAD,CArFO;AAsFvCC,iCAA+B,EAAE,CAAC,+BAAD,CAtFM;AAuFvCC,0CAAwC,EAAE,CACxC,wCADwC,CAvFH;AA2FvCC,uBAAqB,EAAE,CAAC,kCAAD,CA3FgB;AA4FvCC,kBAAgB,EAAE,CAAC,6BAAD,CA5FqB;AA6FvCC,2BAAyB,EAAE,CAAC,oCAAD,CA7FY;AA8FvCC,kBAAgB,EAAE,CAAC,6BAAD,CA9FqB;AA+FvCC,2BAAyB,EAAE,CAAC,oCAAD,CA/FY;AAgGvCC,mBAAiB,EAAE,CAAC,8BAAD,CAhGoB;AAiGvCC,4BAA0B,EAAE,CAAC,qCAAD,CAjGW;AAmGvCC,0BAAwB,EAAE,CAAC,qCAAD,CAnGa;AAoGvCC,qBAAmB,EAAE,CAAC,mCAAD,CApGkB;AAqGvCC,8BAA4B,EAAE,CAAC,0CAAD,CArGS;AAsGvCC,eAAa,EAAE,CAAC,6BAAD,CAtGwB;AAuGvCC,wBAAsB,EAAE,CAAC,oCAAD,CAvGe;AAwGvCC,0BAAwB,EAAE,CAAC,wCAAD,CAxGa;AAyGvCC,mCAAiC,EAAE,CACjC,+CADiC,CAzGI;AA4GvCC,sBAAoB,EAAE,CAAC,oCAAD,CA5GiB;AA6GvCC,+BAA6B,EAAE,CAAC,2CAAD,CA7GQ;AA+GvCC,0BAAwB,EAAE,CAAC,wCAAD,CA/Ga;AAgHvCC,2BAAyB,EAAE,CAAC,4CAAD,CAhHY;AAiHvCC,oCAAkC,EAAE,CAClC,mDADkC,CAjHG;AAoHvCC,sBAAoB,EAAE,CAAC,uCAAD,CApHiB;AAqHvCC,+BAA6B,EAAE,CAC7B,8CAD6B,CArHQ;AAwHvCC,qBAAmB,EAAE,CAAC,sCAAD,CAxHkB;AAyHvCC,8BAA4B,EAAE,CAAC,6CAAD,CAzHS;AA0HvCC,yBAAuB,EAAE,CAAC,+BAAD,CA1Hc;AA2HvCC,4BAA0B,EAAE,CAC1B,gDAD0B,CA3HW;AA8HvCC,0BAAwB,EAAE,CACxB,sDADwB,CA9Ha;AAkIvCC,wBAAsB,EAAE,CAAC,mCAAD,CAlIe;AAmIvCC,uBAAqB,EAAE,CAAC,mCAAD,CAnIgB;AAoIvCC,gCAA8B,EAAE,CAAC,0CAAD,CApIO;AAqIvCC,oBAAkB,EAAE,CAAC,gCAAD,CArImB;AAsIvCC,6BAA2B,EAAE,CAAC,uCAAD,CAtIU;AAuIvCC,oBAAkB,EAAE,CAAC,gCAAD,CAvImB;AAwIvCC,6BAA2B,EAAE,CAAC,uCAAD,CAxIU;AA0IvCC,mBAAiB,EAAE,CAAC,mCAAD,CA1IoB;AA2IvCC,mBAAiB,EAAE,CAAC,+BAAD,CA3IoB;AA4IvCC,4BAA0B,EAAE,CAAC,sCAAD,CA5IW;AA6IvCC,oBAAkB,EAAE,CAAC,gCAAD,CA7ImB;AA8IvCC,6BAA2B,EAAE,CAAC,uCAAD,CA9IU;AA+IvCC,oBAAkB,EAAE,CAAC,gCAAD,CA/ImB;AAgJvCC,6BAA2B,EAAE,CAAC,uCAAD,CAhJU;AAkJvCC,sBAAoB,EAAE,CAAC,+BAAD,CAlJiB;AAmJvCC,cAAY,EAAE,CAAC,gBAAD,CAnJyB;AAoJvCC,uBAAqB,EAAE,CAAC,0BAAD,CApJgB;AAqJvCC,sBAAoB,EAAE,CAAC,OAAD,CArJiB;AAsJvCC,iBAAe,EAAE,CAAC,yBAAD,CAtJsB;AAuJvC;AACA;AACAC,0BAAwB,EAAE,CAAC,2CAAD,CAzJa;AA0JvCC,cAAY,EAAE,CAAC,KAAD,CA1JyB;AA2JvCC,wBAAsB,EAAE,CAAC,YAAD,CA3Je;AA4JvCC,uBAAqB,EAAE,CAAC,cAAD,CA5JgB;AA6JvCC,iCAA+B,EAAE,CAAC,qBAAD,CA7JM;AA8JvCC,gBAAc,EAAE,CAAC,OAAD,CA9JuB;AA+JvCC,0BAAwB,EAAE,CAAC,cAAD,CA/Ja;AAgKvCC,yBAAuB,EAAE,CAAC,gBAAD,CAhKc;AAiKvCC,mCAAiC,EAAE,CAAC,uBAAD,CAjKI;AAkKvCC,qBAAmB,EAAE,CAAC,UAAD,CAlKkB;AAmKvCC,mBAAiB,EAAE,CAAC,UAAD,CAnKoB;AAoKvCC,4BAA0B,EAAE,CAAC,iBAAD,CApKW;AAqKvCzkC,gBAAc,EAAE,CAAC,cAAD,CArKuB;AAsKvC0kC,qBAAmB,EAAE,CAAC,yBAAD,CAtKkB;AAuKvCC,8BAA4B,EAAE,CAAC,kCAAD,CAvKS;AAwKvCC,6BAA2B,EAAE,CAC3B,8CAD2B,EAE3B,0CAF2B,CAxKU;AA4KvCC,+BAA6B,EAAE,CAC7B,gDAD6B,EAE7B,4CAF6B,CA5KQ;AAgLvCC,8BAA4B,EAAE,CAC5B,+CAD4B,EAE5B,2CAF4B,CAhLS;AAoLvCC,8BAA4B,EAAE,CAC5B,+CAD4B,EAE5B,2CAF4B,CApLS;AAwLvCC,gCAA8B,EAAE,CAC9B,iDAD8B,EAE9B,6CAF8B,CAxLO;AA4LvCC,+BAA6B,EAAE,CAC7B,gDAD6B,EAE7B,4CAF6B,CA5LQ;AAgMvCC,2BAAyB,EAAE,CAAC,yBAAD,CAhMY;AAiMvCC,2BAAyB,EAAE,CACzB,iDADyB,CAjMY;AAoMvCC,iBAAe,EAAE,CACf,iEADe,CApMsB;AAuMvCC,wBAAsB,EAAE,CACtB,wEADsB,CAvMe;AA0MvCC,uBAAqB,EAAE,CACrB,uEADqB,CA1MgB;AA6MvCC,8BAA4B,EAAE,CAC5B,8EAD4B,CA7MS;AAgNvCC,iCAA+B,EAAE,CAAC,WAAD,CAhNM;AAiNvCC,4BAA0B,EAAE,CAC1B,iCAD0B,EAE1B,6BAF0B,CAjNW;AAqNvCC,qCAAmC,EAAE,CACnC,wCADmC,EAEnC,oCAFmC,CArNE;AAyNvCC,qBAAmB,EAAE,CAAC,UAAD,CAzNkB;AA0NvCC,+BAA6B,EAAE,CAAC,iBAAD,CA1NQ;AA2NvCC,8BAA4B,EAAE,CAAC,mBAAD,CA3NS;AA4NvCC,wCAAsC,EAAE,CAAC,0BAAD,CA5ND;AA6NvCC,oBAAkB,EAAE,CAAC,SAAD,CA7NmB;AA8NvCC,8BAA4B,EAAE,CAAC,gBAAD,CA9NS;AA+NvCC,6BAA2B,EAAE,CAAC,kBAAD,CA/NU;AAgOvCC,uCAAqC,EAAE,CAAC,yBAAD,CAhOA;AAiOvCC,gBAAc,EAAE,CAAC,mBAAD,CAjOuB;AAkOvCC,yBAAuB,EAAE,CAAC,4BAAD,CAlOc;AAmOvCC,0BAAwB,EAAE,CAAC,0BAAD,CAnOa;AAoOvCC,mCAAiC,EAAE,CAAC,mCAAD,CApOI;AAqOvCC,sBAAoB,EAAE,CAAC,kBAAD,CArOiB;AAsOvCC,+BAA6B,EAAE,CAAC,2BAAD,CAtOQ;AAuOvCC,gCAA8B,EAAE,CAAC,yBAAD,CAvOO;AAwOvCC,yCAAuC,EAAE,CAAC,kCAAD,CAxOF;AAyOvCC,gBAAc,EAAE,CAAC,YAAD,CAzOuB;AA0OvCC,yBAAuB,EAAE,CAAC,sBAAD,CA1Oc;AA2OvCC,2BAAyB,EAAE,CAAC,mBAAD,CA3OY;AA4OvCC,oCAAkC,EAAE,CAAC,4BAAD,CA5OG;AA6OvCC,qBAAmB,EAAE,CAAC,sCAAD,CA7OkB;AA8OvCC,+BAA6B,EAAE,CAC7B,qCAD6B,EAE7B,uCAF6B,CA9OQ;AAkPvCC,sBAAoB,EAAE,CAAC,wCAAD,CAlPiB;AAmPvCC,gCAA8B,EAAE,CAAC,uCAAD,CAnPO;AAoPvCC,mBAAiB,EAAE,CAAC,qCAAD,CApPoB;AAqPvCC,6BAA2B,EAAE,CAAC,oCAAD,CArPU;AAsPvCC,mBAAiB,EAAE,CAAC,qCAAD,CAtPoB;AAuPvCC,6BAA2B,EAAE,CAAC,oCAAD,CAvPU;AAwPvCC,6BAA2B,EAAE,CAAC,cAAD,CAxPU;AAyPvCC,sCAAoC,EAAE,CAAC,uBAAD,CAzPC;AA0PvCC,oCAAkC,EAAE,CAClC,kBADkC,EAElC,oBAFkC,CA1PG;AA8PvCC,oCAAkC,EAAE,CAClC,kBADkC,EAElC,oBAFkC,CA9PG;AAkQvCC,oCAAkC,EAAE,CAClC,kBADkC,EAElC,oBAFkC,CAlQG;AAsQvCC,oCAAkC,EAAE,CAClC,kBADkC,EAElC,oBAFkC,CAtQG;AA0QvCC,oCAAkC,EAAE,CAClC,kBADkC,EAElC,oBAFkC,CA1QG;AA8QvCC,uBAAqB,EAAE,CAAC,mBAAD,CA9QgB;AA+QvCC,gCAA8B,EAAE,CAAC,4BAAD,CA/QO;AAgRvCC,4BAA0B,EAAE,CAAC,mCAAD,CAhRW;AAiRvCC,sCAAoC,EAAE,CAAC,iCAAD,CAjRC;AAkRvCC,gCAA8B,EAAE,CAAC,kBAAD,CAlRO;AAmRvCC,2BAAyB,EAAE,CACzB,oCADyB,EAEzB,wCAFyB,CAnRY;AAuRvCC,gCAA8B,EAAE,CAC9B,yCAD8B,EAE9B,6CAF8B,CAvRO;AA2RvCC,iCAA+B,EAAE,CAC/B,0CAD+B,EAE/B,8CAF+B,CA3RM;AA+RvCC,wBAAsB,EAAE,CAAC,SAAD,CA/Re;AAgSvCC,mBAAiB,EAAE,CACjB,qCADiB,EAEjB,iCAFiB,CAhSoB;AAoSvCC,4BAA0B,EAAE,CAC1B,4CAD0B,EAE1B,wCAF0B,CApSW;AAwSvCC,qBAAmB,EAAE,CAAC,sBAAD,CAxSkB;AAySvCC,cAAY,EAAE,CAAC,2BAAD,CAzSyB;AA0SvCC,kBAAgB,EAAE,CAAC,+BAAD,CA1SqB;AA2SvCC,eAAa,EAAE,CAAC,4BAAD,CA3SwB;AA4SvCC,mBAAiB,EAAE,CAAC,gCAAD,CA5SoB;AA6SvCC,yBAAuB,EAAE,CACvB,gCADuB,EAEvB,iCAFuB,CA7Sc;AAkTvCC,8BAA4B,EAAE,CAAC,+BAAD,CAlTS;AAmTvCC,uBAAqB,EAAE,CAAC,oCAAD,CAnTgB;AAoTvCC,2BAAyB,EAAE,CAAC,wCAAD,CApTY;AAqTvCC,wBAAsB,EAAE,CAAC,qCAAD,CArTe;AAsTvCC,4BAA0B,EAAE,CAAC,yCAAD,CAtTW;AAuTvCC,kCAAgC,EAAE,CAChC,yCADgC,EAEhC,0CAFgC,CAvTK;AA2TvCC,iBAAe,EAAE,CAAC,8BAAD,CA3TsB;AA4TvCC,kBAAgB,EAAE,CAAC,+BAAD,CA5TqB;AA6TvCC,iBAAe,EAAE,CAAC,yBAAD,CA7TsB;AA8TvCC,iBAAe,EAAE,CAAC,8BAAD,CA9TsB;AA+TvCC,wBAAsB,EAAE,CAAC,qCAAD,CA/Te;AAgUvCC,kBAAgB,EAAE,CAAC,+BAAD,CAhUqB;AAiUvCC,yBAAuB,EAAE,CAAC,sCAAD,CAjUc;AAkUvCC,oBAAkB,EAAE,CAAC,+BAAD;AAlUmB,CAAlC;AAqUP1pD,MAAM,CAACC,IAAP,CAAY8nB,WAAZ,EAAyB9kB,OAAzB,CAAkC4uC,SAAD,IAAe;AAC9C,QAAM/0C,GAAG,GAAGssB,kBAAkB,CAACyoB,SAAD,CAA9B;AACA,QAAM8X,IAAI,GAAG9X,SAAS,CAACvoB,UAAV,CAAqB,CAArB,CAAb;AACAmzB,gBAAc,CAAC3/C,GAAD,CAAd,GAAsB,CAAE,cAAa6sD,IAAK,EAApB,CAAtB;AACD,CAJD;AAMA1wD,OAAO,CAACgK,OAAR,CAAiB4uC,SAAD,IAAe;AAC7B4K,gBAAc,CAAE,YAAW5K,SAAU,EAAvB,CAAd,GAA0C,CACvC,aAAYA,SAAS,CAAC70C,WAAV,EAAwB,EADG,CAA1C;AAGAy/C,gBAAc,CAAE,qBAAoB5K,SAAU,EAAhC,CAAd,GAAmD,CAChD,kCAAiCA,SAAS,CAAC70C,WAAV,EAAwB,EADT,CAAnD;AAGD,CAPD;AASO,MAAM4sD,eAA0B,GAAG;AACxCC,OAAK,EAAE,CAAC,mBAAD,CADiC;AAExC;AACA;AACAC,QAAM,EAAE,CAAC,oCAAD,CAJgC;AAKxCC,UAAQ,EAAE,CAAC,mBAAD,CAL8B;AAMxCC,SAAO,EAAE,CAAC,oCAAD,CAN+B;AAOxCC,SAAO,EAAE,CACP,8BADO,EAEP,yBAFO,EAGP,+BAHO,CAP+B;AAYxCC,UAAQ,EAAE,CAAC,sBAAD,EAAyB,oCAAzB,CAZ8B;AAaxCC,KAAG,EAAE,CAAC,wBAAD,CAbmC;AAcxCC,QAAM,EAAE,CACN;AACA,WAFM,EAGN,eAHM,EAGW;AACjB,gBAJM,EAKN,+BALM,CAdgC;AAqBxCC,OAAK,EAAE,CAAC,4BAAD,CArBiC;AAsBxCC,SAAO,EAAE,CAAC,kBAAD,CAtB+B;AAuBxC;AACA;AACA;AACAC,OAAK,EAAE,CAAC,gCAAD,CA1BiC;AA2BxCC,QAAM,EAAE,CACN,yCADM,EAEN,+CAFM,CA3BgC;AA+BxCC,SAAO,EAAE,CACP,yCADO,EAEP,+CAFO,CA/B+B;AAmCxCpgC,QAAM,EAAE,CAAC,wBAAD,CAnCgC;AAoCxCqgC,OAAK,EAAE,CAAC,0CAAD,CApCiC;AAqCxCC,SAAO,EAAE,CAAC,gDAAD,CArC+B;AAsCxCC,SAAO,EAAE,CAAC,wBAAD,CAtC+B;AAuCxC;AACAC,UAAQ,EAAE,CAAC,sCAAD,CAxC8B;AAyCxCC,UAAQ,EAAE,CAAC,uBAAD,CAzC8B;AA0CxCtgC,UAAQ,EAAE,CAAC,yBAAD,CA1C8B;AA2CxCugC,QAAM,EAAE,CAAC,SAAD,EAAY,eAAZ,EAA6B,UAA7B,CA3CgC;AA4CxCC,QAAM,EAAE,CAAC,qBAAD,CA5CgC;AA6CxCC,UAAQ,EAAE,CAAC,+BAAD,CA7C8B;AA8CxCC,UAAQ,EAAE,CAAC,8BAAD;AA9C8B,CAAnC,C;;AC3VP;AACA;AAOe,SAASC,GAAT,CAAa;AAAElvB,UAAF;AAAYh2B;AAAZ,CAAb,EAAsC;AACnD,QAAMogC,KAAK,GAAGF,wBAAO,CAAC,MAAM;AAC1B,UAAMrmC,CAAC,GAAGzB,QAAQ,CAACC,aAAT,CAAuB,OAAvB,CAAV;AACAwB,KAAC,CAACkG,IAAF,GAAS,UAAT;AACAlG,KAAC,CAACmG,EAAF,GAAOA,EAAP;AACA,WAAOnG,CAAP;AACD,GALoB,EAKlB,CAACmG,EAAD,CALkB,CAArB;AAOA81B,kCAAe,CAAC,MAAM;AACpB19B,YAAQ,CAAC+sD,IAAT,CAAc1sD,WAAd,CAA0B2nC,KAA1B;AACA,WAAO,MAAMA,KAAK,CAACglB,MAAN,EAAb;AACD,GAHc,EAGZ,CAAChlB,KAAD,CAHY,CAAf;AAKA,SAAOC,iCAAY,CAACrK,QAAD,EAAWoK,KAAX,CAAnB;AACD,C;;;ACtBD;AACA;AAMA;AACA;AACe,SAASilB,SAAT,CAAmB;AAAErvB;AAAF,CAAnB,EAAwC;AACrD,QAAMsvB,KAAK,GAAGplB,wBAAO,CAAC,MAAM;AAC1B,WAAO9nC,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAP;AACD,GAFoB,EAElB,EAFkB,CAArB;AAIAy9B,kCAAe,CAAC,MAAM;AACpB19B,YAAQ,CAACI,IAAT,CAAcC,WAAd,CAA0B6sD,KAA1B;AACA,WAAO,MAAMA,KAAK,CAACF,MAAN,EAAb;AACD,GAHc,EAGZ,CAACE,KAAD,CAHY,CAAf;AAKA,SAAOjlB,iCAAY,eACjB;AAAK,UAAM,EAAE,CAAb;AAAgB,SAAK,EAAE,CAAvB;AAAA,2BACE;AAAA,gBACGtmC,MAAM,CAACC,IAAP,CAAYg8B,QAAZ,EAAsBngC,GAAtB,CAA2BmK,EAAD,iBACzB;AAAU,UAAE,EAAEA,EAAd;AAAA,kBACGg2B,QAAQ,CAACh2B,EAAD,CAAR,CAAanK,GAAb,CAAiB,CAACqvB,MAAD,EAAS7uB,CAAT,kBAChB;AAAS,gBAAM,EAAE6uB;AAAjB,WAA8B7uB,CAA9B,CADD;AADH,SAAuB2J,EAAvB,CADD;AADH;AADF,IADiB,EAYjBslD,KAZiB,CAAnB;AAcD,C;;;;;;;;ACjCD;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA,MAAMC,UAAU,GAAG,SAAnB;AAEA,MAAMC,mBAA8C,GAAG;AACrD/uC,QAAM,EAAE,oBAD6C;AAErDgvC,aAAW,EAAE,yBAFwC;AAGrDz+C,WAAS,EAAE,yBAH0C;AAIrD0+C,aAAW,EAAE;AAJwC,CAAvD;AAOA,MAAMC,uBAAkD,GAAG;AACzDlvC,QAAM,EAAE,0BADiD;AAEzDgvC,aAAW,EAAE,oBAF4C;AAGzDz+C,WAAS,EAAE,+BAH8C;AAIzD0+C,aAAW,EAAE;AAJ4C,CAA3D;;AAOA,MAAME,WAAW,GAAI/gD,UAAD,IAA4B5O,OAAO,CAAC4O,UAAU,CAAC8zC,UAAZ,CAAvD;;AAEA,MAAMkN,SAAoC,GAAG;AAC3CpP,yBAAuB,EAAE,wBADkB;AAE3CC,oBAAkB,EAAE,mBAFuB;AAG3CC,2BAAyB,EAAE,4BAHgB;AAI3CoI,2BAAyB,EAAE;AAJgB,CAA7C,C,CAOA;;AACA,SAAS+G,uBAAT,CAAiC5tB,QAAjC,EAA2D;AACzD,SAAQ,GACN;AACA;AACA;AACA;AACAA,UAAQ,CAAC6tB,UAAT,CAAoB,sBAApB,IAA8C,EAA9C,GAAmDR,UACpD,IAAGrtB,QAAS,EANb;AAOD;;AAED,MAAM8tB,WAAW,GAAG9/C,6BAAc,CAChC+W,aADgC,EAEhCA,cAFgC,EAGhCA,mBAHgC,EAIhCA,aAJgC,EAKhC,CAACpY,UAAD,EAAaG,WAAb,EAA0BM,mBAA1B,EAA+CJ,UAA/C,KAA6E;AAC3E,MAAI,CAACL,UAAD,IAAe,CAACG,WAApB,EAAiC;AAC/B,WAAO,IAAP;AACD;;AACD,QAAMihD,QAAQ,GAAG,EAAjB;AACAlsD,QAAM,CAACC,IAAP,CAAYw8C,cAAZ,EAA4Bx5C,OAA5B,CAAqCkpD,SAAD,IAAe;AACjD,UAAMC,QAAQ,GACZthD,UAAU,CAACqhD,SAAD,CAAV,IAAyBrhD,UAAU,CAACghD,SAAS,CAACK,SAAD,CAAV,CADrC;;AAEA,QAAIC,QAAJ,EAAc;AACZ3P,oBAAc,CAAC0P,SAAD,CAAd,CAA0BlpD,OAA1B,CAAmCk7B,QAAD,IAAc;AAC9C+tB,gBAAQ,CAACr2C,IAAT,CACG,GAAE21C,UAAW,IAAGrtB,QAAS,2BAA0BiuB,QAAS,IAD/D;AAGD,OAJD;AAKD;AACF,GAVD;;AAYA,MAAI7gD,mBAAmB,IAAI,IAA3B,EAAiC;AAC/BtS,WAAO,CAACgK,OAAR,CAAiB2sB,MAAD,IAAY;AAC1B,YAAM1rB,KAAK,GAAGqH,mBAAmB,CAAE,YAAWqkB,MAAO,EAApB,CAAjC;AACA,YAAMy8B,aAAa,GACjB9gD,mBAAmB,CAAE,qBAAoBqkB,MAAO,EAA7B,CADrB;AAEAs8B,cAAQ,CAACr2C,IAAT,CACG,GAAE21C,UAAW,cAAa57B,MAAM,CAAC5yB,WAAP,EAAqB,YAAWkH,KAAM,MADnE;AAGAgoD,cAAQ,CAACr2C,IAAT,CACG,GAAE21C,UAAW,wBAAuB57B,MAAM,CAAC5yB,WAAP,EAAqB,YAAWqvD,aAAc,MADrF;AAGD,KAVD;AAWD;;AAEDrsD,QAAM,CAACrE,OAAP,CAAeiuD,eAAf,EAAgC3mD,OAAhC,CAAwC,CAAC,CAACqsB,UAAD,EAAag9B,cAAb,CAAD,KAAkC;AACxE,UAAMtgD,MAAM,GAAGf,WAAW,CAACqkB,UAAD,CAA1B;;AACA,QAAItjB,MAAM,IAAI,IAAd,EAAoB;AAClB;AACD;;AACD,UAAMugD,WAAW,GAAGD,cAAc,CAC/BxwD,GADiB,CACbiwD,uBADa,EAEjBjwD,GAFiB,CAEZqiC,QAAD,IAAc;AACjB,cAAQnyB,MAAM,CAAChG,IAAf;AACE,aAAK,KAAL;AACE,iBAAQ,GAAEm4B,QAAS,iBAAgBnyB,MAAM,CAAC/R,GAAI,UAA9C;;AACF,aAAK,KAAL;AAAY;AACV,mBAAOuyD,qCAAqB,CAACruB,QAAD,EAAWnyB,MAAM,CAACiiB,OAAlB,CAA5B;AACD;AALH;AAOD,KAViB,CAApB;AAWAi+B,YAAQ,CAACr2C,IAAT,CAAc,GAAG02C,WAAjB;AACD,GAjBD;;AAmBA,MAAIV,WAAW,CAAC/gD,UAAD,CAAf,EAA6B;AAC3B;AACA;AACAohD,YAAQ,CAACr2C,IAAT,CACG,GAAE21C,UAAW,gFADhB;AAGD;;AAED,OAAK,MAAM,CAACiB,UAAD,EAAaphC,QAAb,CAAX,IAAqCrrB,MAAM,CAACrE,OAAP,CAAewP,UAAf,CAArC,EAAiE;AAC/D,QAAIkgB,QAAJ,EAAc;AACZ,YAAMwC,OAAO,GAAG+9B,uBAAuB,CAACa,UAAD,CAAvC;AACA,YAAMxmD,EAAE,GAAGwlD,mBAAmB,CAACgB,UAAD,CAA9B;AACAP,cAAQ,CAACr2C,IAAT,CAAe,GAAE21C,UAAW,IAAG39B,OAAQ,sBAAqB5nB,EAAG,MAA/D;AACD;AACF;;AAED,SAAOimD,QAAQ,CAAC1wD,IAAT,CAAc,IAAd,CAAP;AACD,CAxE+B,CAAlC;AA2EA,MAAMkxD,YAAY,GAAGvgD,6BAAc,CAAC+W,aAAD,EAA2B/X,UAAD,IAAgB;AAC3E,QAAMwhD,SAAqC,GAAG,EAA9C;;AACA,OAAK,MAAM,CAACF,UAAD,EAAaphC,QAAb,CAAX,IAAqCrrB,MAAM,CAACrE,OAAP,CAAewP,UAAf,CAArC,EAAiE;AAC/D,QAAIkgB,QAAJ,EAAc;AACZ,YAAMplB,EAAE,GAAGwlD,mBAAmB,CAACgB,UAAD,CAA9B;AACAE,eAAS,CAAC1mD,EAAD,CAAT,GAAgBolB,QAAhB;AACD;AACF;;AACD,SAAOshC,SAAP;AACD,CATkC,CAAnC;AAWe,SAASC,IAAT,GAAgB;AAC7B,QAAMV,QAAQ,GAAGhuB,gBAAgB,CAAC+tB,WAAD,CAAjC;AACA,QAAMU,SAAS,GAAGzuB,gBAAgB,CAACwuB,YAAD,CAAlC;;AACA,MAAIR,QAAQ,IAAI,IAAhB,EAAsB;AACpB,WAAO,IAAP;AACD;;AACD,sBACE;AAAA,4BACE,2BAAC,GAAD;AAAK,QAAE,EAAC,aAAR;AAAA,gBAAuBA;AAAvB,MADF,eAEE,2BAAC,SAAD;AAAA,gBAAYS;AAAZ,MAFF;AAAA,IADF;AAMD,C;;;;;;;ACjJD;AAOA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;;AAOA;;;AAGe,SAASE,GAAT,CAAa;AAAEjkD,OAAF;AAASsgC;AAAT,CAAb,EAA4C;AACzD,QAAMt+B,MAAM,GAAGszB,gBAAgB,CAAChb,SAAD,CAA/B;AACA,QAAM4pC,cAAc,GAAG5uB,gBAAgB,CAAChb,aAAD,CAAvC;AACA,QAAMxX,MAAM,GAAGwyB,gBAAgB,CAAChb,SAAD,CAA/B;AAEA,QAAMmC,wBAAwB,GAAGgZ,gBAAgB,CAC/CwB,gCAD+C,CAAjD;AAGA,QAAM7b,gBAAgB,GAAGqa,gBAAgB,CAACwB,wBAAD,CAAzC;AAEA,QAAM,CAACktB,UAAD,IAAexwB,yBAAQ,CAAC,MAAM;AAClC,UAAM1oB,IAAI,GAAGxV,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAb;AACAuV,QAAI,CAAC5N,EAAL,GAAU,QAAV,CAFkC,CAGlC;;AACA4N,QAAI,CAACm5C,IAAL,GAAY,aAAZ;AACA,WAAOn5C,IAAP;AACD,GAN4B,CAA7B;AAQAkoB,kCAAe,CAAC,MAAM;AACpBgxB,cAAU,CAAC1mB,KAAX,CAAiB36B,MAAjB,GAA0BrQ,MAAM,CAACqQ,MAAD,CAAhC;AACD,GAFc,EAEZ,CAACqhD,UAAD,EAAarhD,MAAb,CAFY,CAAf;AAIAqwB,kCAAe,CAAC,MAAM;AACpB19B,YAAQ,CAACI,IAAT,CAAcC,WAAd,CAA0BquD,UAA1B;AACA,WAAO,MAAM;AACX1uD,cAAQ,CAACI,IAAT,CAAcG,WAAd,CAA0BmuD,UAA1B;AACD,KAFD;AAGD,GALc,EAKZ,CAACA,UAAD,CALY,CAAf;AAOAnxB,4BAAS,CAAC,MAAM;AACd,UAAMqxB,kBAAkB,GAAG,MAAM;AAC/B,UAAIF,UAAU,IAAI,IAAlB,EAAwB;AACtB;AACD,OAH8B,CAI/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAA,gBAAU,CAAC1mB,KAAX,CAAiBpiC,KAAjB,GAAyB,GAAzB;AACA8oD,gBAAU,CAAC1mB,KAAX,CAAiBtiC,MAAjB,GAA0B,GAA1B;AACAgpD,gBAAU,CAAC1mB,KAAX,CAAiBzsB,QAAjB,GAA4B,QAA5B;AACAyL,8BAAwB,CAACtd,mBAAA,EAAD,CAAxB;AACAglD,gBAAU,CAAC1mB,KAAX,CAAiBpiC,KAAjB,GAAyB,MAAzB;AACA8oD,gBAAU,CAAC1mB,KAAX,CAAiBtiC,MAAjB,GAA0B,MAA1B;AACAgpD,gBAAU,CAAC1mB,KAAX,CAAiBzsB,QAAjB,GAA4B,SAA5B;AACD,KAnBD;;AAqBAqzC,sBAAkB;AAElBtvD,UAAM,CAAC6Q,gBAAP,CAAwB,QAAxB,EAAkCy+C,kBAAlC;AAEA,WAAO,MAAM;AACXtvD,YAAM,CAAC4Q,mBAAP,CAA2B,QAA3B,EAAqC0+C,kBAArC;AACD,KAFD;AAGD,GA7BQ,EA6BN,CAAC5nC,wBAAD,EAA2B0nC,UAA3B,CA7BM,CAAT;AA+BA,QAAMG,aAAa,GAAGpwB,4BAAW,CAAC,MAAM;AACtC,WAAO/0B,SAAA,CAAgB+kD,cAAhB,EAAgC,CAACppD,CAAD,EAAIuC,EAAJ,KAAW;AAChD,UAAI,CAACvC,CAAC,CAACuD,IAAP,EAAa;AACX,eAAO,IAAP;AACD;;AACD,cAAQhB,EAAR;AACE,aAAKpO,OAAO,CAACC,IAAb;AACE,8BACE,2BAAC,qBAAD;AACE,oBAAQ,EAAE8Q,KAAK,CAACukD,WAAN,EADZ;AAEE,uBAAW,EAAEjkB;AAFf,YADF;;AAMF,aAAKrxC,OAAO,CAACG,SAAb;AACE,8BAAO,2BAAC,0BAAD,KAAP;;AACF,aAAKH,OAAO,CAACE,QAAb;AACE,8BAAO,2BAAC,yBAAD;AAAgB,oBAAQ,EAAE6Q,KAAK,CAACukD,WAAN;AAA1B,YAAP;;AACF,aAAKt1D,OAAO,CAACI,QAAb;AACE,8BAAO,2BAAC,cAAD;AAAgB,oBAAQ,EAAE2Q,KAAK,CAACukD,WAAN;AAA1B,YAAP;;AACF;AACE,gBAAM,IAAIvlD,KAAJ,CAAW,sCAAqC3B,EAAG,EAAnD,CAAN;AAfJ;AAiBD,KArBM,CAAP;AAsBD,GAvBgC,EAuB9B,CAAC2C,KAAD,EAAQsgC,WAAR,EAAqB4jB,cAArB,CAvB8B,CAAjC;;AAyBA,QAAMM,UAAU,GAAI3+C,CAAD,IAAsC;AACvD,QAAI,CAACA,CAAC,CAACw3B,aAAF,CAAgBjI,QAAhB,CAAyBvvB,CAAC,CAACs8B,aAA3B,CAAL,EAA2D;AACzD/mB,sBAAgB,CAAC,IAAD,CAAhB;AACD;AACF,GAJD;;AAMA,MAAIpZ,MAAJ,EAAY;AACV,WAAO,IAAP;AACD;;AAED,SAAOi9B,mBAAQ,CAACvB,YAAT,eACL,2BAAC,mBAAD;AAAA,2BACE;AAAK,YAAM,EAAE8mB,UAAb;AAAA,8BACE,2BAAC,IAAD,KADF,eAEE,2BAAC,iBAAD;AACE,sBAAc,EAAE,mBAAM,2BAAC,0BAAD;AAAiB,qBAAW,EAAElkB;AAA9B,UADxB;AAAA,+BAGE,2BAAC,aAAD;AAAe,iBAAO,EAAEgkB,aAAa;AAArC;AAHF,QAFF;AAAA;AADF,IADK,EAWLH,UAXK,CAAP;AAaD,C;;AC9ID;AAkBA;AAIA,MAAMM,uBAAuB,GAAG,IAAI5nD,GAAJ,CAAQ,CAAC,OAAD,EAAU,UAAV,EAAsB,QAAtB,CAAR,CAAhC;AAEO,SAAS6nD,WAAT,CAAqBtqC,QAArB,EAAqD;AAC1D,MAAIuqC,UAAkB,GAAG,CAAzB;AACA,QAAM5yB,OAAO,GAAG,CACd,EADc,EACV;AACJ,IAFc,EAEV;AACJ,IAHc,EAGV;AACJ,IAJc,EAIV;AACJ,IALc,EAKV;AACJ,IANc,EAMV;AACJ,IAPc,EAOV;AACJ,IARc,CAQV;AARU,GAAhB;;AAWA,QAAM6yB,QAAQ,GAAI/+C,CAAD,IAAsB;AACrC,QACEA,CAAC,CAAC7O,MAAF,YAAoBm+B,OAApB,IACAsvB,uBAAuB,CAACpoD,GAAxB,CAA4BwJ,CAAC,CAAC7O,MAAF,CAAS6tD,OAAT,CAAiBzwD,WAAjB,EAA5B,CAFF,EAGE;AACA;AACD;;AACD,QAAIyR,CAAC,CAACyoC,OAAN,EAAe;AACb,cAAQzoC,CAAC,CAACw2B,OAAV;AACE,aAAK,EAAL;AAAS;AACPjiB,kBAAQ,CAACQ,4BAAoB,EAArB,CAAR;AACA/U,WAAC,CAACqY,cAAF,GAFF,CAEsB;;AACpB;;AACF,aAAK,EAAL;AAAS;AACP;;AACF,aAAK,EAAL;AAAS;AACP9D,kBAAQ,CAACwO,oBAAW,EAAZ,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPxO,kBAAQ,CAAC;AAAEhd,gBAAI,EAAE/R,gBAAgBA;AAAxB,WAAD,CAAR;AACA;AAZJ;AAcD,KAfD,MAeO,IAAIwa,CAAC,CAACi/C,MAAN,EAAc;AACnB,cAAQj/C,CAAC,CAACw2B,OAAV;AACE,aAAK,EAAL;AAAS;AACPjiB,kBAAQ,CAACkB,oBAAY,CAAC,MAAD,CAAb,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPlB,kBAAQ,CAACkB,oBAAY,CAAC,UAAD,CAAb,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPlB,kBAAQ,CAACkB,oBAAY,CAAC,WAAD,CAAb,CAAR;AACA;AATJ;AAWD,KAZM,MAYA;AACL,cAAQzV,CAAC,CAACw2B,OAAV;AACE,aAAK,EAAL;AAAS;AACPjiB,kBAAQ,CAACwD,kBAAY,CAAC,CAAD,CAAb,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPxD,kBAAQ,CAAC0D,YAAY,CAAC,CAAD,CAAb,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACP1D,kBAAQ,CAACuD,iBAAW,CAAC,CAAD,CAAZ,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPvD,kBAAQ,CAAC0D,YAAY,CAAC,CAAC,CAAF,CAAb,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACP1D,kBAAQ,CAACxhB,UAAI,EAAL,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPwhB,kBAAQ,CAACkD,WAAK,EAAN,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPlD,kBAAQ,CAACiD,yBAAmB,EAApB,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPjD,kBAAQ,CAACiE,kBAAY,EAAb,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPjE,kBAAQ,CAACkE,mBAAa,EAAd,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPlE,kBAAQ,CAACmD,UAAI,EAAL,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPnD,kBAAQ,CAACgD,UAAI,EAAL,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPhD,kBAAQ,CAACjB,cAAQ,EAAT,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPiB,kBAAQ,CAACiD,yBAAmB,EAApB,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPjD,kBAAQ,CAACoD,WAAK,CAAC,CAAC,EAAF,CAAN,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACPpD,kBAAQ,CAAC0D,YAAY,CAAC,CAAC,CAAF,CAAb,CAAR;AACA;;AACF,aAAK,EAAL;AAAS;AACP1D,kBAAQ,CAACoD,WAAK,CAAC,EAAD,CAAN,CAAR;AACA;;AACF,aAAK,GAAL;AAAU;AACRpD,kBAAQ,CAACjB,cAAQ,EAAT,CAAR;AACA;;AACF,aAAK,GAAL;AAAU;AACRiB,kBAAQ,CAACgD,UAAI,EAAL,CAAR;AACA;;AACF,aAAK,GAAL;AAAU;AACRhD,kBAAQ,CAACxhB,UAAI,EAAL,CAAR;AACA;;AACF,aAAK,GAAL;AAAU;AACRwhB,kBAAQ,CAACwD,kBAAY,CAAC,CAAD,CAAb,CAAR;AACA;;AACF,aAAK,GAAL;AAAU;AACRxD,kBAAQ,CAAC0D,YAAY,CAAC,CAAD,CAAb,CAAR;AACA;;AACF,aAAK,GAAL;AAAU;AACR1D,kBAAQ,CAACuD,iBAAW,CAAC,CAAD,CAAZ,CAAR;AACA;AAlEJ;AAoED,KAvGoC,CAyGrC;AAEA;;;AACA,QAAI9X,CAAC,CAACw2B,OAAF,KAAc,EAAlB,EAAsB;AACpBsoB,gBAAU,GAAG9+C,CAAC,CAACw2B,OAAF,KAActK,OAAO,CAAC4yB,UAAD,CAArB,GAAoCA,UAAU,GAAG,CAAjD,GAAqD,CAAlE;;AACA,UAAIA,UAAU,KAAK5yB,OAAO,CAACz7B,MAA3B,EAAmC;AACjC8jB,gBAAQ,CAAC;AAAEhd,cAAI,EAAElS,iBAAiBA;AAAzB,SAAD,CAAR;AACD;AACF;AACF,GAlHD;;AAmHAuK,UAAQ,CAACmQ,gBAAT,CAA0B,SAA1B,EAAqCg/C,QAArC;AAEA,SAAO,MAAM;AACXnvD,YAAQ,CAACkQ,mBAAT,CAA6B,SAA7B,EAAwCi/C,QAAxC;AACD,GAFD;AAGD,C;;;AC7Jc,MAAMG,eAAN,CAAc;AAG3Bl9B,aAAW,GAAG;AAAA;;AACZ,SAAKm9B,UAAL,GAAkB,EAAlB;AACD;;AAED/gD,IAAE,CAACghD,KAAD,EAAgBjwB,QAAhB,EAAoD;AACpD,UAAMkwB,cAAc,GAAG,KAAKF,UAAL,CAAgBC,KAAhB,KAA0B,EAAjD;AACAC,kBAAc,CAACj4C,IAAf,CAAoB+nB,QAApB;AACA,SAAKgwB,UAAL,CAAgBC,KAAhB,IAAyBC,cAAzB;;AACA,UAAMC,WAAW,GAAG,MAAM;AACxB,WAAKH,UAAL,CAAgBC,KAAhB,IAAyBC,cAAc,CAAC7xD,MAAf,CAAuB+G,EAAD,IAAQA,EAAE,KAAK46B,QAArC,CAAzB;AACD,KAFD;;AAGA,WAAOmwB,WAAP;AACD;;AAEDpzB,SAAO,CAACkzB,KAAD,EAAgB,GAAGtrD,IAAnB,EAAgC;AACrC,UAAMyrD,SAAS,GAAG,KAAKJ,UAAL,CAAgBC,KAAhB,CAAlB;;AACA,QAAIG,SAAJ,EAAe;AACbA,eAAS,CAAC/qD,OAAV,CAAmBD,EAAD,IAAQA,EAAE,CAAC,GAAGT,IAAJ,CAA5B;AACD;AACF;;AAED0rD,SAAO,GAAG;AACR,SAAKL,UAAL,GAAkB,EAAlB;AACD;;AA1B0B,C;;ACA7B;AACA;AACA;AACe,SAASM,iBAAT,CAA2B5rD,OAA3B,EAAoCwL,OAAO,GAAG;AAAErF,SAAO,EAAE;AAAX,CAA9C,EAA8D;AAC3E,MAAIA,OAAO,GAAG,CAAd,CAD2E,CAG3E;AACA;AACA;AACA;AACA;AACA;;AACA,QAAM0lD,OAAO,GAAG7rD,OAAO,CAAC8rD,UAAR,EAAhB;AACAD,SAAO,CAACE,YAAR,GAAuB,CAAvB;AACAF,SAAO,CAACG,gBAAR,GAA2B,UAA3B;AACAH,SAAO,CAACI,qBAAR,GAAgC,UAAhC;AAEA,QAAMC,QAAQ,GAAGlsD,OAAO,CAACmsD,qBAAR,CAA8B,CAA9B,CAAjB,CAd2E,CAgB3E;;AACA,QAAMC,QAAQ,GAAGpsD,OAAO,CAAC8rD,UAAR,EAAjB;AACA,QAAMO,SAAS,GAAGrsD,OAAO,CAAC8rD,UAAR,EAAlB;AAEA,QAAMQ,MAAM,GAAGtsD,OAAO,CAACusD,mBAAR,CAA4B,CAA5B,CAAf;AAEAV,SAAO,CAACW,OAAR,CAAgBN,QAAhB;AAEAA,UAAQ,CAACM,OAAT,CAAiBJ,QAAjB,EAA2B,CAA3B;AACAF,UAAQ,CAACM,OAAT,CAAiBH,SAAjB,EAA4B,CAA5B;AAEAD,UAAQ,CAACI,OAAT,CAAiBF,MAAjB,EAAyB,CAAzB,EAA4B,CAA5B;AACAD,WAAS,CAACG,OAAV,CAAkBF,MAAlB,EAA0B,CAA1B,EAA6B,CAA7B,EA5B2E,CA8B3E;;AACA,WAAS1pD,GAAT,CAAa6pD,QAAb,EAAuB;AACrB,UAAM9xD,KAAK,GAAGsJ,MAAM,CAACwoD,QAAD,CAApB;AACAL,YAAQ,CAACM,IAAT,CAAc/xD,KAAd,GAAsBA,KAAK,GAAG,CAAR,GAAY,IAAIA,KAAhB,GAAwB,CAA9C;AACA0xD,aAAS,CAACK,IAAV,CAAe/xD,KAAf,GAAuBA,KAAK,GAAG,CAAR,GAAY,CAAZ,GAAgB,IAAIA,KAA3C;AACAwL,WAAO,GAAGxL,KAAV;AACD;;AAED,WAASkI,GAAT,GAAe;AACb,WAAOsD,OAAP;AACD,GAxC0E,CA0C3E;AACA;AACA;;;AACA,QAAMwmD,UAAU,GAAG,EAAnB;AACAjvD,QAAM,CAACkvD,gBAAP,CAAwBD,UAAxB,EAAoC;AAClChyD,SAAK,EAAE;AAAEkI,SAAF;AAAOD,SAAP;AAAYiqD,gBAAU,EAAE,IAAxB;AAA8BC,kBAAY,EAAE;AAA5C;AAD2B,GAApC,EA9C2E,CAkD3E;AACA;;AACApvD,QAAM,CAACkvD,gBAAP,CAAwBf,OAAxB,EAAiC;AAC/B1lD,WAAO,EAAE;AACPxL,WAAK,EAAEgyD,UADA;AAEPE,gBAAU,EAAE,IAFL;AAGPE,cAAQ,EAAE,KAHH;AAIPD,kBAAY,EAAE;AAJP,KADsB;AAO/BN,WAAO,EAAE;AACP7xD,WAAK,EAAEqyD,SAAS,CAACC,SAAV,CAAoBT,OAApB,CAA4BU,IAA5B,CAAiCZ,MAAjC,CADA;AAEPO,gBAAU,EAAE,KAFL;AAGPE,cAAQ,EAAE,KAHH;AAIPD,kBAAY,EAAE;AAJP,KAPsB;AAa/BzuB,cAAU,EAAE;AACV1jC,WAAK,EAAEqyD,SAAS,CAACC,SAAV,CAAoB5uB,UAApB,CAA+B6uB,IAA/B,CAAoCZ,MAApC,CADG;AAEVO,gBAAU,EAAE,KAFF;AAGVE,cAAQ,EAAE,KAHA;AAIVD,kBAAY,EAAE;AAJJ;AAbmB,GAAjC;;AAqBA,MAAI3mD,OAAO,KAAKqF,OAAO,CAACrF,OAAxB,EAAiC;AAC/BvD,OAAG,CAAC4I,OAAO,CAACrF,OAAT,CAAH;AACD;;AAED,SAAO0lD,OAAP;AACD,C;;;ACjFD;AACA;AACA;AAGe,MAAMsB,2BAAN,CAAoB;AASjC5iD,IAAE,CAAC6iD,SAAD,EAAoB1sD,EAApB,EAAkD;AAClD,WAAO,KAAK2sD,QAAL,CAAc9iD,EAAd,CAAiB6iD,SAAjB,EAA4B1sD,EAA5B,CAAP;AACD;;AAEDytB,aAAW,CAACnuB,OAAD,EAAwBstD,WAAxB,EAAgD;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AACzD,SAAKD,QAAL,GAAgB,IAAIhC,eAAJ,EAAhB;AACA,SAAKkC,QAAL,GAAgBvtD,OAAhB;AACA,SAAKwtD,YAAL,GAAoBF,WAApB;AACA,SAAKG,MAAL,GAAc1xD,QAAQ,CAACC,aAAT,CAAuB,OAAvB,CAAd;AACA,SAAKyxD,MAAL,CAAY1hD,WAAZ,GAA0B,WAA1B;AACA,SAAK2hD,QAAL,GAAgB,KAAhB;AACA,SAAKC,OAAL,GAAer2D,YAAY,CAACE,OAA5B,CAPyD,CASzD;;AACA,SAAKi2D,MAAL,CAAYvhD,gBAAZ,CAA6B,SAA7B,EAAwC,MAAM;AAC5C,WAAK0hD,WAAL,CAAiB,IAAjB;AACD,KAFD,EAVyD,CAczD;;;AACA,SAAKH,MAAL,CAAYvhD,gBAAZ,CAA6B,gBAA7B,EAA+C,MAAM;AACnD,WAAKmhD,QAAL,CAAch1B,OAAd,CAAsB,QAAtB;;AACA,WAAKu1B,WAAL,CAAiB,KAAjB;AACD,KAHD,EAfyD,CAoBzD;;;AACA,SAAKH,MAAL,CAAYvhD,gBAAZ,CAA6B,OAA7B,EAAsC,MAAM;AAC1C,WAAKmhD,QAAL,CAAch1B,OAAd,CAAsB,OAAtB;;AACA,WAAKw1B,UAAL,CAAgBv2D,YAAY,CAACE,OAA7B;AACD,KAHD,EArByD,CA0BzD;AACA;;;AACA,SAAKi2D,MAAL,CAAYvhD,gBAAZ,CAA6B,YAA7B,EAA2C,MAAM;AAC/C,WAAKmhD,QAAL,CAAch1B,OAAd,CAAsB,gBAAtB;AACD,KAFD,EA5ByD,CAgCzD;;;AACA,SAAKo1B,MAAL,CAAYvhD,gBAAZ,CAA6B,OAA7B,EAAuCC,CAAD,IAAO;AAC3C,cAAQ,KAAKshD,MAAL,CAAY7hC,KAAZ,CAAmBy7B,IAA3B;AACE,aAAK,CAAL;AACE;AACAt9B,iBAAO,CAAC6B,KAAR,CAAc,mBAAd,EAAmCzf,CAAnC;AACA;;AACF,aAAK,CAAL;AACE4d,iBAAO,CAAC6B,KAAR,CAAc,mBAAd,EAAmCzf,CAAnC,EADF,CAEE;;AACA;;AACF,aAAK,CAAL;AACE;AAEA;AACA;AACA;AACA4d,iBAAO,CAAC6B,KAAR,CAAc,uBAAd,EAAuCzf,CAAvC;AACA;;AACF,aAAK,CAAL;AACE4d,iBAAO,CAAC6B,KAAR,CAAc,6BAAd,EAA6Czf,CAA7C,EADF,CAEE;;AACA;AApBJ,OAD2C,CAuB3C;AACA;;;AAEA,WAAKkhD,QAAL,CAAch1B,OAAd,CAAsB,OAAtB;;AACA,WAAKw1B,UAAL,CAAgBv2D,YAAY,CAACE,OAA7B;AACD,KA5BD;;AA8BA,SAAKs2D,OAAL,GAAe,KAAKP,QAAL,CAAcQ,wBAAd,CAAuC,KAAKN,MAA5C,CAAf;;AACA,SAAKK,OAAL,CAAatB,OAAb,CAAqBc,WAArB;AACD;;AAEDM,aAAW,CAACI,OAAD,EAAmB;AAC5B,SAAKN,QAAL,GAAgBM,OAAhB;;AACA,SAAKX,QAAL,CAAch1B,OAAd,CAAsB,cAAtB;AACD;;AAEDgG,YAAU,GAAG;AACX,SAAKyvB,OAAL,CAAazvB,UAAb;AACD,GAvFgC,CAyFjC;AACA;;;AACA,QAAM4vB,OAAN,CAAct2D,GAAd,EAA2B;AACzB,SAAK81D,MAAL,CAAYt1D,GAAZ,GAAkBR,GAAlB;AACD;;AAED,QAAM+rB,IAAN,GAAa;AACX,QAAI,KAAKiqC,OAAL,KAAiBr2D,YAAY,CAACG,MAAlC,EAA0C;AACxC,WAAKusB,UAAL,CAAgB,CAAhB;AACD;;AACD,QAAI;AACF,YAAM,KAAKypC,MAAL,CAAY/pC,IAAZ,EAAN,CADE,CAEF;AACD,KAHD,CAGE,OAAOwqC,GAAP,EAAY,CACZ;AACD;;AACD,SAAKL,UAAL,CAAgBv2D,YAAY,CAACC,OAA7B;AACD;;AAEDqsB,OAAK,GAAG;AACN,SAAK6pC,MAAL,CAAY7pC,KAAZ;;AACA,SAAKiqC,UAAL,CAAgBv2D,YAAY,CAACG,MAA7B;AACD;;AAEDosB,MAAI,GAAG;AACL,SAAK4pC,MAAL,CAAY7pC,KAAZ;;AACA,SAAK6pC,MAAL,CAAYU,WAAZ,GAA0B,CAA1B;;AACA,SAAKN,UAAL,CAAgBv2D,YAAY,CAACE,OAA7B;AACD;;AAEDwsB,YAAU,CAAC3rB,IAAD,EAAe;AACvB;;;;;;AAMA,SAAKo1D,MAAL,CAAYU,WAAZ,GAA0BtzD,KAAK,CAACxC,IAAD,EAAO,CAAP,EAAU,KAAKyf,WAAL,EAAV,CAA/B;;AACA,SAAKu1C,QAAL,CAAch1B,OAAd,CAAsB,gBAAtB;AACD;;AAED+1B,YAAU,GAAG;AACX,WAAO,KAAKV,QAAZ;AACD;;AAEDW,WAAS,GAAG;AACV,WAAO,KAAKV,OAAZ;AACD;;AAED71C,aAAW,GAAG;AACZ,UAAM;AAAErM;AAAF,QAAe,KAAKgiD,MAA1B,CADY,CAEZ;AACA;AACA;;AACA,WAAOa,KAAK,CAAC7iD,QAAD,CAAL,IAAmBA,QAAQ,KAAK8iD,QAAhC,GAA2C,CAA3C,GAA+C9iD,QAAtD;AACD;;AAEDwP,gBAAc,GAAG;AACf,WAAO,KAAKwyC,MAAL,CAAYU,WAAnB;AACD;;AAEDN,YAAU,CAACxnD,MAAD,EAAsB;AAC9B,SAAKsnD,OAAL,GAAetnD,MAAf;;AACA,SAAKgnD,QAAL,CAAch1B,OAAd,CAAsB,cAAtB;AACD;;AAEDszB,SAAO,GAAG;AACR;AACA,SAAK9nC,IAAL;;AACA,SAAKwpC,QAAL,CAAc1B,OAAd;AACD;;AA/JgC,C;;;;ACLnC;AACA;AAEA;AACA;AACA;AASA;AACA;AACA;AACe,MAAM6C,WAAN,CAAY;AAWzBrgC,aAAW,GAAG;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AACZ,SAAKk/B,QAAL,GAAgB,IAAIhC,eAAJ,EAAhB,CADY,CAEZ;;AACA,SAAKkC,QAAL,GAAgB,KAAKlyD,MAAM,CAACozD,YAAP,IAAuBpzD,MAAM,CAACqzD,kBAAnC,GAAhB,CAHY,CAIZ;AACA;AACA;AACA;AACA;AACA;;AACA,QAAI,KAAKnB,QAAL,CAAc/pD,KAAd,KAAwB,WAA5B,EAAyC;AACvC,YAAMmrD,MAAM,GAAG,YAAY;AACzB,cAAM,KAAKpB,QAAL,CAAcoB,MAAd,EAAN;;AAEA,YAAI,KAAKpB,QAAL,CAAc/pD,KAAd,KAAwB,SAA5B,EAAuC;AACrC;AACAzH,kBAAQ,CAACI,IAAT,CAAc8P,mBAAd,CAAkC,UAAlC,EAA8C0iD,MAA9C,EAAsD,KAAtD;AACA5yD,kBAAQ,CAACI,IAAT,CAAc8P,mBAAd,CAAkC,OAAlC,EAA2C0iD,MAA3C,EAAmD,KAAnD;AACA5yD,kBAAQ,CAACI,IAAT,CAAc8P,mBAAd,CAAkC,SAAlC,EAA6C0iD,MAA7C,EAAqD,KAArD;AACD;AACF,OATD;;AAWA5yD,cAAQ,CAACI,IAAT,CAAc+P,gBAAd,CAA+B,UAA/B,EAA2CyiD,MAA3C,EAAmD,KAAnD;AACA5yD,cAAQ,CAACI,IAAT,CAAc+P,gBAAd,CAA+B,OAA/B,EAAwCyiD,MAAxC,EAAgD,KAAhD;AACA5yD,cAAQ,CAACI,IAAT,CAAc+P,gBAAd,CAA+B,SAA/B,EAA0CyiD,MAA1C,EAAkD,KAAlD;AACD,KAzBW,CA2BZ;;;AACA,SAAKC,aAAL,GAAqB,KAAKrB,QAAL,CAAczB,UAAd,EAArB,CA5BY,CA4BqC;AAEjD;;AACA,SAAK+C,QAAL,GAAgB,IAAIjD,iBAAJ,CAAsB,KAAK2B,QAA3B,CAAhB,CA/BY,CAiCZ;;AACA,SAAKuB,OAAL,GAAe,KAAKvB,QAAL,CAAczB,UAAd,EAAf,CAlCY,CAoCZ;;AACA,SAAKiD,SAAL,GAAiB,KAAKxB,QAAL,CAAcyB,cAAd,EAAjB;AACA,SAAKD,SAAL,CAAevkB,OAAf,GAAyB,IAAzB,CAtCY,CAuCZ;;AACA,SAAKukB,SAAL,CAAeE,qBAAf,GAAuC,GAAvC,CAxCY,CA0CZ;;AACA,SAAKC,SAAL,GAAiB,KAAK3B,QAAL,CAAczB,UAAd,EAAjB,CA3CY,CA6CZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAKgC,OAAL,GAAe,IAAIX,2BAAJ,CAAkB,KAAKI,QAAvB,EAAiC,KAAKqB,aAAtC,CAAf;;AAEA,SAAKd,OAAL,CAAavjD,EAAb,CAAgB,gBAAhB,EAAkC,MAAM;AACtC,WAAK8iD,QAAL,CAAch1B,OAAd,CAAsB,YAAtB;AACD,KAFD;;AAGA,SAAKy1B,OAAL,CAAavjD,EAAb,CAAgB,OAAhB,EAAyB,MAAM;AAC7B,WAAK8iD,QAAL,CAAch1B,OAAd,CAAsB,OAAtB;AACD,KAFD;;AAGA,SAAKy1B,OAAL,CAAavjD,EAAb,CAAgB,cAAhB,EAAgC,MAAM;AACpC,cAAQ,KAAKujD,OAAL,CAAaO,SAAb,EAAR;AACE,aAAK/2D,YAAY,CAACC,OAAlB;AACE,eAAK81D,QAAL,CAAch1B,OAAd,CAAsB,SAAtB;;AACA;AAHJ;;AAKA,WAAKg1B,QAAL,CAAch1B,OAAd,CAAsB,YAAtB;AACD,KAPD;;AAQA,SAAKy1B,OAAL,CAAavjD,EAAb,CAAgB,QAAhB,EAA0B,MAAM;AAC9B,WAAK8iD,QAAL,CAAch1B,OAAd,CAAsB,YAAtB;AACD,KAFD;;AAIA,SAAKu2B,aAAL,CAAmBpC,OAAnB,CAA2B,KAAKsC,OAAhC;;AAEA,QAAIK,MAAM,GAAG,KAAKL,OAAlB;AACA,SAAKM,MAAL,GAAc,EAAd;AAEA95D,SAAK,CAACqL,OAAN,CAAc,CAACkK,IAAD,EAAO7Q,CAAP,KAAa;AACzB,YAAML,MAAM,GAAG,KAAK4zD,QAAL,CAAc8B,kBAAd,EAAf;;AAEA,WAAKD,MAAL,CAAYvkD,IAAZ,IAAoBlR,MAApB;;AAEA,UAAIK,CAAC,KAAK,CAAV,EAAa;AACX;AACAL,cAAM,CAAC+J,IAAP,GAAc,UAAd;AACD,OAHD,MAGO,IAAI1J,CAAC,KAAK1E,KAAK,CAACsH,MAAN,GAAe,CAAzB,EAA4B;AACjC;AACAjD,cAAM,CAAC+J,IAAP,GAAc,WAAd;AACD,OAHM,MAGA;AACL/J,cAAM,CAAC+J,IAAP,GAAc,SAAd;AACD;;AACD/J,YAAM,CAAC21D,SAAP,CAAiB30D,KAAjB,GAAyBkQ,IAAzB;AACAlR,YAAM,CAAC+yD,IAAP,CAAY/xD,KAAZ,GAAoB,CAApB;AAEAw0D,YAAM,CAAC3C,OAAP,CAAe7yD,MAAf;AACAw1D,YAAM,GAAGx1D,MAAT;AACD,KAnBD;AAqBAw1D,UAAM,CAAC3C,OAAP,CAAe,KAAKqC,QAApB;;AAEA,SAAKA,QAAL,CAAcrC,OAAd,CAAsB,KAAK0C,SAA3B;;AACA,SAAKL,QAAL,CAAcrC,OAAd,CAAsB,KAAKuC,SAA3B;;AAEA,SAAKG,SAAL,CAAe1C,OAAf,CAAuB,KAAKe,QAAL,CAAcD,WAArC;AACD;;AAEDzC,aAAW,GAAG;AACZ,WAAO,KAAKkE,SAAZ;AACD;AAED;;;AACAtjD,UAAQ,GAAG;AACT,WAAO,KAAKqiD,OAAL,CAAah2C,WAAb,EAAP;AACD;;AAED7R,aAAW,GAAG;AACZ,WAAO,KAAK6nD,OAAL,CAAa7yC,cAAb,EAAP;AACD;;AAEDs0C,eAAa,GAAG;AACd,WAAO,KAAK9jD,QAAL,KAAkB,KAAKxF,WAAL,EAAzB;AACD;;AAEDupD,iBAAe,GAAG;AAChB,WAAQ,KAAKvpD,WAAL,KAAqB,KAAKwF,QAAL,EAAtB,GAAyC,GAAhD;AACD;AAED;;;AACA,QAAMiY,IAAN,GAAa;AACX,UAAM,KAAKoqC,OAAL,CAAapqC,IAAb,EAAN;AACD;;AAEDE,OAAK,GAAG;AACN,SAAKkqC,OAAL,CAAalqC,KAAb;AACD;;AAEDC,MAAI,GAAG;AACL,SAAKiqC,OAAL,CAAajqC,IAAb;AACD;AAED;;;AACA0T,uBAAqB,CAAC96B,OAAD,EAAkB;AACrC,UAAMgzD,QAAQ,GAAG,KAAKhkD,QAAL,MAAmBhP,OAAO,GAAG,GAA7B,CAAjB;AACA,SAAKunB,UAAL,CAAgByrC,QAAhB;AACD,GA1KwB,CA4KzB;;;AACAtrC,WAAS,CAACje,MAAD,EAAiB;AACxB,SAAKgpD,SAAL,CAAexC,IAAf,CAAoB/xD,KAApB,GAA4BuL,MAAM,GAAG,GAArC;AACD,GA/KwB,CAiLzB;AACA;AACA;AACA;;;AACAof,WAAS,CAAC3qB,KAAD,EAAgB;AACvB,UAAMkY,EAAE,GAAIlY,KAAK,GAAG,GAAT,GAAgB,EAAhB,GAAqB,EAAhC;AACA,SAAKm0D,OAAL,CAAapC,IAAb,CAAkB/xD,KAAlB,GAA0BhC,IAAI,CAACmzC,GAAL,CAAS,EAAT,EAAaj5B,EAAE,GAAG,EAAlB,CAA1B;AACD,GAxLwB,CA0LzB;;;AACA6R,YAAU,CAACve,OAAD,EAAkB;AAC1B;AACA,SAAK0oD,QAAL,CAAc1oD,OAAd,CAAsBxL,KAAtB,GAA8BwL,OAAO,GAAG,GAAxC;AACD;;AAED8e,WAAS,CAACpa,IAAD,EAAalQ,KAAb,EAA4B;AACnC,UAAMkY,EAAE,GAAIlY,KAAK,GAAG,GAAT,GAAgB,EAAhB,GAAqB,EAAhC;AACA,SAAKy0D,MAAL,CAAYvkD,IAAZ,EAAkB6hD,IAAlB,CAAuB/xD,KAAvB,GAA+BkY,EAA/B;AACD;;AAED4kB,WAAS,GAAG;AACV,SAAKm3B,aAAL,CAAmBvwB,UAAnB;;AACA,SAAKuwB,aAAL,CAAmBpC,OAAnB,CAA2B,KAAKqC,QAAhC;AACD;;AAEDn3B,UAAQ,GAAG;AACT,SAAKk3B,aAAL,CAAmBvwB,UAAnB;;AACA,SAAKuwB,aAAL,CAAmBpC,OAAnB,CAA2B,KAAKsC,OAAhC;AACD;AAED;;;AACAvkD,IAAE,CAACghD,KAAD,EAAgBjwB,QAAhB,EAAoD;AACpD,SAAK+xB,QAAL,CAAc9iD,EAAd,CAAiBghD,KAAjB,EAAwBjwB,QAAxB;AACD;;AAEDtX,YAAU,CAAC3rB,IAAD,EAAe;AACvB,SAAKy1D,OAAL,CAAa9pC,UAAb,CAAwB3rB,IAAxB;AACD,GAtNwB,CAwNzB;;;AACA,QAAMm/B,WAAN,CAAkB7/B,GAAlB,EAA+B+3D,QAA/B,EAAkD;AAChD,SAAKrC,QAAL,CAAch1B,OAAd,CAAsB,SAAtB;;AACA,UAAM,KAAKy1B,OAAL,CAAaG,OAAb,CAAqBt2D,GAArB,CAAN,CAFgD,CAGhD;;AACA,SAAK01D,QAAL,CAAch1B,OAAd,CAAsB,aAAtB;;AACA,QAAIq3B,QAAJ,EAAc;AACZ,WAAKhsC,IAAL;AACD;AACF;;AAEDioC,SAAO,GAAG;AACR,SAAKmC,OAAL,CAAanC,OAAb;;AACA,SAAK0B,QAAL,CAAc1B,OAAd;AACD;;AAtOwB,C;;;;;;ACfZ,MAAMgE,qBAAN,CAAiB;AAI9BxhC,aAAW,GAAG;AAAA,iDAHW,EAGX;;AAAA;;AACZ,SAAK+L,QAAL,GAAgB,KAAhB;AACD;;AAED52B,KAAG,CAAC,GAAGssD,SAAJ,EAAiC;AAClC,QAAI,KAAK11B,QAAT,EAAmB;AACjB,YAAM,IAAI50B,KAAJ,CACJ,2DADI,CAAN;AAGD;;AACD,SAAKuqD,UAAL,CAAgBt8C,IAAhB,CAAqB,GAAGq8C,SAAxB;AACD;;AAEDjE,SAAO,GAAG;AACR,QAAI,KAAKzxB,QAAT,EAAmB;AACjB,YAAM,IAAI50B,KAAJ,CACJ,4DADI,CAAN;AAGD;;AACD,SAAKuqD,UAAL,CAAgBlvD,OAAhB,CAAyBmvD,QAAD,IAAc;AACpC,UAAI,OAAOA,QAAP,KAAoB,UAAxB,EAAoC;AAClCA,gBAAQ;AACT,OAFD,MAEO,IAAI,OAAOA,QAAQ,CAACnE,OAAhB,KAA4B,UAAhC,EAA4C;AACjDmE,gBAAQ,CAACnE,OAAT;AACD;AACF,KAND;;AAOA,SAAKkE,UAAL,GAAkB,EAAlB;AACA,SAAK31B,QAAL,GAAgB,IAAhB;AACD;;AAhC6B,C;;;;ACFhC;AACA;AACA;AAYA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AAWA;AAEA;AAEA;;AA4FA;AACA;AACA,MAAM61B,QAAQ,GAAG,CACf34B,KADe,EAEfr2B,SAFe,KAIf,IAAInJ,OAAJ,CAAaC,OAAD,IAAa;AACvB,MAAIkJ,SAAS,CAACq2B,KAAK,CAACzW,QAAN,EAAD,CAAb,EAAiC;AAC/B9oB,WAAO;AACP;AACD;;AACD,QAAM4zD,WAAW,GAAGr0B,KAAK,CAAC44B,SAAN,CAAgB,MAAM;AACxC,QAAIjvD,SAAS,CAACq2B,KAAK,CAACzW,QAAN,EAAD,CAAb,EAAiC;AAC/B9oB,aAAO;AACP4zD,iBAAW;AACZ;AACF,GALmB,CAApB;AAMD,CAXD,CAJF;;AAiBA,MAAMwE,iBAAN,CAAa;AAIwB;AACrB;AACA;AACd,SAAOC,kBAAP,GAA4B;AAC1B,UAAMC,gBAAgB,GAAG,CAAC,EACxB90D,MAAM,CAACozD,YAAP,IACA;AACApzD,UAAM,CAACqzD,kBAHiB,CAA1B;AAKA,UAAM0B,cAAc,GAAG,CAAC,CAAC/0D,MAAM,CAACU,QAAP,CAAgBC,aAAhB,CAA8B,QAA9B,EAAwC0uB,UAAjE;AACA,UAAM2lC,gBAAgB,GAAG,OAAOz4D,OAAP,KAAmB,WAA5C;AACA,WAAOu4D,gBAAgB,IAAIC,cAApB,IAAsCC,gBAA7C;AACD;;AAEDliC,aAAW,CAAC3iB,OAAD,EAAoC;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAC7C,SAAK8kD,KAAL,GAAa,IAAb;AACA,SAAKC,WAAL,GAAmB,IAAIZ,qBAAJ,EAAnB;AACA,SAAKa,cAAL,GAAsB,IAAInF,eAAJ,EAAtB;AACA,SAAK7/C,OAAL,GAAeA,OAAf;AACA,UAAM;AACJilD,mBADI;AAEJC,iBAFI;AAGJC,oBAHI;AAGY;AAChB1lD,oBAJI;AAKJ2lD,mBAAa,GAAG,KALZ;AAMJxnD,YANI;AAOJgoB,kBAPI;AAQJuB,0BARI;AASJL,0BATI;AAUJuB,uBAVI;AAWJE,yBAXI;AAYJE,yBAZI;AAaJ48B,0BAbI;AAcJC;AAdI,QAeF,KAAKtlD,OAfT,CAL6C,CAsB7C;;AACA,QAAI6pB,aAAa,GAAG,IAApB;;AACA,QAAIw7B,oBAAoB,IAAI,IAA5B,EAAkC;AAChC,YAAM;AACJE,2BADI;AAEJC;AAFI,UAGFH,oBAHJ;;AAKA,UAAIE,mBAAmB,IAAI,IAAvB,IAA+BC,uBAAuB,IAAI,IAA9D,EAAoE;AAClE37B,qBAAa,GAAG,MAAOhqB,IAAP,IAAuC;AACrD,gBAAM;AAAEgqB,yBAAa,EAAE47B;AAAjB,cAA6B,MAAMF,mBAAmB,EAA5D;AACA,iBAAOE,OAAO,CACZ,MAAMhjD,0BAAA,CAAqC5C,IAArC,CADM,EAEZ2lD,uBAFY,CAAd;AAID,SAND;AAOD;AACF,KAvC4C,CAyC7C;;;AAEA,SAAK1qD,KAAL,GAAa,KAAKwqD,kBAAkB,IAAItC,WAA3B,GAAb;AACA,SAAKp3B,KAAL,GAAa85B,QAAQ,CACnB,KAAK5qD,KADc,EAEnB,KAAKkqD,cAFc,EAGnB,KAAKhlD,OAAL,CAAa2lD,mBAHM,EAInB,KAAK3lD,OAAL,CAAa4lD,cAJM,EAKnB;AACEhgC,kBADF;AAEEuB,0BAFF;AAGE0C,mBAHF;AAIE;AACA/C,0BALF;AAMEuB,uBANF;AAOEE,yBAPF;AAQEE;AARF,KALmB,CAArB;;AAiBA,QAAIo9B,SAAS,CAACC,MAAd,EAAsB;AACpB,WAAKl6B,KAAL,CAAW1W,QAAX,CAAoB;AAAEhd,YAAI,EAAEjQ,iBAAiBA;AAAzB,OAApB;AACD,KAFD,MAEO;AACL,WAAK2jC,KAAL,CAAW1W,QAAX,CAAoB;AAAEhd,YAAI,EAAEhQ,oBAAoBA;AAA5B,OAApB;AACD;;AAED,QAAI0V,MAAM,IAAI,IAAd,EAAoB;AAClB,WAAKguB,KAAL,CAAW1W,QAAX,CAAoB;AAAEhd,YAAI,EAAE3P,WAAR;AAAqBqV;AAArB,OAApB;AACD;;AAED,QAAIoC,OAAO,CAACqlD,oBAAZ,EAAkC;AAChC,WAAKz5B,KAAL,CAAW1W,QAAX,CAAoB;AAClBhd,YAAI,EAAEjP,eADY;AAElBkQ,YAAI,EAAE6G,OAAO,CAACqlD,oBAAR,CAA6BU;AAFjB,OAApB;AAIA,WAAKn6B,KAAL,CAAW1W,QAAX,CACE6c,iBAAA,CAA0B/xB,OAAO,CAACqlD,oBAAlC,CADF;AAGD;;AAED,UAAMW,YAAY,GAAG,MAAM,KAAKp6B,KAAL,CAAW1W,QAAX,CAAoB;AAAEhd,UAAI,EAAEjQ,iBAAiBA;AAAzB,KAApB,CAA3B;;AACA,UAAMg+D,aAAa,GAAG,MACpB,KAAKr6B,KAAL,CAAW1W,QAAX,CAAoB;AAAEhd,UAAI,EAAEhQ,oBAAoBA;AAA5B,KAApB,CADF;;AAGA2H,UAAM,CAAC6Q,gBAAP,CAAwB,QAAxB,EAAkCslD,YAAlC;AACAn2D,UAAM,CAAC6Q,gBAAP,CAAwB,SAAxB,EAAmCulD,aAAnC;;AAEA,SAAKlB,WAAL,CAAiBjtD,GAAjB,CAAqB,MAAM;AACzBjI,YAAM,CAAC4Q,mBAAP,CAA2B,QAA3B,EAAqCulD,YAArC;AACAn2D,YAAM,CAAC4Q,mBAAP,CAA2B,SAA3B,EAAsCwlD,aAAtC;AACD,KAHD;;AAKA,QAAIf,WAAJ,EAAiB;AACf,WAAKt5B,KAAL,CAAW1W,QAAX,CAAoB6c,cAAA,CAAuBmzB,WAAW,CAAC/4D,GAAnC,CAApB;AACD,KAFD,MAEO;AACL;AACA,WAAKy/B,KAAL,CAAW1W,QAAX,CAAoB;AAAEhd,YAAI,EAAE5P,MAAMA;AAAd,OAApB;AACD;;AAED,QAAI28D,aAAJ,EAAmB;AACjB,WAAKiB,aAAL,CAAmBjB,aAAnB;AACD;;AAED,QAAIE,cAAc,IAAI,IAAtB,EAA4B;AAC1B5mC,aAAO,CAACC,IAAR,CACE,4FADF;AAGA,WAAKoN,KAAL,CAAW1W,QAAX,CAAoB;AAAEhd,YAAI,EAAE9Q,mBAAR;AAA6BuY,aAAK,EAAEwlD;AAApC,OAApB;AACD,KALD,MAKO,IAAI1lD,cAAc,IAAI,IAAtB,EAA4B;AACjC,WAAKmsB,KAAL,CAAW1W,QAAX,CAAoB;AAAEhd,YAAI,EAAE9Q,mBAAR;AAA6BuY,aAAK,EAAEF;AAApC,OAApB;AACD;;AAED,UAAM0mD,MAAM,GAAGnmD,OAAO,CAAComD,qBAAvB;;AACA,QAAID,MAAM,IAAI,IAAd,EAAoB;AAClB,WAAKv6B,KAAL,CAAW1W,QAAX,CAAoB6c,YAAA,EAApB;AACD,KAFD,MAEO;AACL93B,mBAAA,CAAoBksD,MAApB,EAA4B,CAACvwD,CAAD,EAAIiE,QAAJ,KAAiB;AAC3C,YAAIjE,CAAC,CAACsD,IAAF,IAAU,IAAd,EAAoB;AAClB,eAAK0yB,KAAL,CAAW1W,QAAX,CAAoB6c,qBAAA,CAAsBl4B,QAAtB,EAAgCjE,CAAC,CAACsD,IAAlC,CAApB;AACD;AACF,OAJD;AAKA,WAAK0yB,KAAL,CAAW1W,QAAX,CACE6c,6BAAA,CACE93B,SAAA,CAAgBksD,MAAhB,EAAyBvwD,CAAD,IAAOA,CAAC,CAAC8D,QAAjC,CADF,EAEE,KAFF,CADF;AAMD;;AAED,QAAI0rD,aAAJ,EAAmB;AACjB,WAAKL,WAAL,CAAiBjtD,GAAjB,CAAqB0nD,WAAW,CAAC,KAAK5zB,KAAL,CAAW1W,QAAZ,CAAhC;AACD;AACF;;AAEDgD,MAAI,GAAG;AACL,SAAK0T,KAAL,CAAW1W,QAAX,CAAoB6c,UAAA,EAApB;AACD;;AAED3Z,OAAK,GAAG;AACN,SAAKwT,KAAL,CAAW1W,QAAX,CAAoB6c,WAAA,EAApB;AACD;;AAED1Z,MAAI,GAAG;AACL,SAAKuT,KAAL,CAAW1W,QAAX,CAAoB6c,UAAA,EAApB;AACD;;AAEDrZ,cAAY,CAACrrB,OAAD,EAAkB;AAC5B,SAAKu+B,KAAL,CAAW1W,QAAX,CAAoB6c,kBAAA,CAAqB1kC,OAArB,CAApB;AACD;;AAEDorB,aAAW,CAACprB,OAAD,EAAkB;AAC3B,SAAKu+B,KAAL,CAAW1W,QAAX,CAAoB6c,iBAAA,CAAoB1kC,OAApB,CAApB;AACD;;AAEDmrB,YAAU,CAACnrB,OAAD,EAAkB;AAC1B,SAAKu+B,KAAL,CAAW1W,QAAX,CAAoB6c,UAAA,CAAmB1kC,OAAnB,CAApB;AACD;;AAEDw+B,WAAS,GAAG;AACV,SAAKD,KAAL,CAAW1W,QAAX,CAAoB6c,UAAA,EAApB;AACD;;AAEDs0B,eAAa,GAAG;AACd,SAAKz6B,KAAL,CAAW1W,QAAX,CAAoB6c,cAAA,EAApB;AACD;;AAEDm0B,eAAa,CAACtjD,MAAD,EAAwB;AACnC,UAAMkI,SAAS,GAAGsK,aAAA,CAAwB,KAAKwW,KAAL,CAAWzW,QAAX,EAAxB,CAAlB;AACA,SAAKyW,KAAL,CAAW1W,QAAX,CACE6c,oBAAA,CAAuBnvB,MAAvB,EAA+BxY,UAAU,CAACC,MAA1C,EAAkDygB,SAAlD,CADF;AAGD,GA9LU,CAgMX;;;AACAw7C,cAAY,CAAC1jD,MAAD,EAAwB;AAClC,UAAMkI,SAAS,GAAGsK,aAAA,CAAwB,KAAKwW,KAAL,CAAWzW,QAAX,EAAxB,CAAlB;AACA,SAAKyW,KAAL,CAAW1W,QAAX,CACE6c,oBAAA,CAAuBnvB,MAAvB,EAA+BxY,UAAU,CAACE,IAA1C,EAAgDwgB,SAAhD,CADF;AAGD,GAtMU,CAwMX;;;AACAy7C,iBAAe,CAAC3jD,MAAD,EAAwB;AACrC,SAAKgpB,KAAL,CAAW1W,QAAX,CAAoB6c,oBAAA,CAAuBnvB,MAAvB,EAA+BxY,UAAU,CAACvF,IAA1C,CAApB;AACD;;AAED8nB,gBAAc,GAAG;AACf,WAAOyI,cAAA,CAAyB,KAAKwW,KAAL,CAAWzW,QAAX,EAAzB,CAAP;AACD;;AAEDqxC,aAAW,CAACtxD,EAAD,EAA+C;AACxD,WAAO,KAAK8vD,cAAL,CAAoBjmD,EAApB,CAAuBnW,eAAvB,EAAyCqP,MAAD,IAAY;AACzD/C,QAAE,CAAC+C,MAAM,CAAC8yB,MAAR,CAAF;AACD,KAFM,CAAP;AAGD;;AAED07B,SAAO,CAACvxD,EAAD,EAA6B;AAClC,WAAO,KAAK8vD,cAAL,CAAoBjmD,EAApB,CAAuBxa,YAAvB,EAAqC2Q,EAArC,CAAP;AACD;;AAED21B,OAAK,GAAS;AACZ,SAAKe,KAAL,CAAW1W,QAAX,CAAoB6c,oBAAA,EAApB;AACD;;AAED20B,QAAM,GAAS;AACb,SAAK96B,KAAL,CAAW1W,QAAX,CAAoB6c,mBAAA,EAApB;AACD;;AAED40B,kBAAgB,CAACzxD,EAAD,EAA6D;AAC3E,QAAI0xD,eAA8B,GAAG,IAArC,CAD2E,CAE3E;;AACA,WAAO,KAAKh7B,KAAL,CAAW44B,SAAX,CAAqB,MAAM;AAChC,YAAMxsD,KAAK,GAAG,KAAK4zB,KAAL,CAAWzW,QAAX,EAAd;AACA,YAAMzc,OAAO,GAAG0c,kCAAA,CAA6Cpd,KAA7C,CAAhB;;AACA,UAAIU,OAAO,KAAKkuD,eAAhB,EAAiC;AAC/B;AACD;;AACDA,qBAAe,GAAGluD,OAAlB;AACAxD,QAAE,CAACwD,OAAO,IAAI,IAAX,GAAkB,IAAlB,GAAyB0c,mBAAA,CAA8Bpd,KAA9B,CAA1B,CAAF;AACD,KARM,CAAP;AASD;;AAED6uD,YAAU,CAAC3xD,EAAD,EAA6B;AACrC,WAAO,KAAK8vD,cAAL,CAAoBjmD,EAApB,CAAuBta,eAAvB,EAAwCyQ,EAAxC,CAAP;AACD;;AAED6wB,gBAAc,CAAC55B,GAAD,EAAoB;AAChC,SAAKy/B,KAAL,CAAW1W,QAAX,CAAoB6c,cAAA,CAAuB5lC,GAAvB,CAApB;AACD;;AAED,QAAM26D,YAAN,GAAoC;AAClC;AACA;AACA,UAAMvC,QAAQ,CAAC,KAAK34B,KAAN,EAAc5zB,KAAD,IAAW,CAACA,KAAK,CAAC6F,OAAN,CAAcjB,OAAvC,CAAd,CAHkC,CAIlC;AACA;AACA;AACA;AACA;AACA;;AACA,UAAMxQ,OAAO,CAACi1B,GAAR,CAAY,CAChBjM,kBAAA,CAA6B,KAAKwW,KAAL,CAAWzW,QAAX,EAA7B,CADgB,EAEhBC,kBAAA,CAA6B,KAAKwW,KAAL,CAAWzW,QAAX,EAA7B,CAFgB,CAAZ,CAAN;AAIA;AACD;;AAED4xC,uBAAqB,CAAC3sD,eAAD,EAA2C;AAC9D,SAAKwxB,KAAL,CAAW1W,QAAX,CAAoB6c,mBAAA,CAA4B33B,eAA5B,CAApB;AACD;;AAED4sD,sBAAoB,GAAG;AACrB,WAAO5xC,mBAAA,CAA8B,KAAKwW,KAAL,CAAWzW,QAAX,EAA9B,CAAP;AACD;;AAED8xC,iBAAe,CAAC/xD,EAAD,EAA6B;AAC1C;AACA,WAAO,KAAK02B,KAAL,CAAW44B,SAAX,CAAqBtvD,EAArB,CAAP;AACD;;AAED,QAAMgyD,eAAN,CAAsBnhD,IAAtB,EAAwD;AACtD,SAAK6lB,KAAL,CAAW1W,QAAX,CAAoB6c,wBAAA,CAAiChsB,IAAjC,CAApB;AACA,UAAM,KAAK+gD,YAAL,EAAN,CAFsD,CAGtD;;AACA,QAAI,KAAKhC,KAAL,IAAc,IAAlB,EAAwB;AACtB,YAAM,IAAIhrD,KAAJ,CAAU,uCAAV,CAAN;AACD;;AACD,SAAKgrD,KAAL,GAAa/+C,IAAb;;AACA,SAAKg/C,WAAL,CAAiBjtD,GAAjB,CAAqB,MAAM;AACzB,UAAI,KAAKgtD,KAAL,IAAc,IAAlB,EAAwB;AACtB/qB,2BAAQ,CAACotB,sBAAT,CAAgC,KAAKrC,KAArC;AACA,aAAKA,KAAL,GAAa,IAAb;AACD;AACF,KALD;;AAOA/qB,uBAAQ,CAAC/zB,MAAT,eACE,2BAAC,mBAAD;AAAkB,WAAK,EAAE,KAAK4lB,KAA9B;AAAA,6BACE,2BAAC,GAAD;AAAK,aAAK,EAAE,KAAK9wB,KAAjB;AAAwB,mBAAW,EAAE,KAAKkF,OAAL,CAAao7B,WAAb,IAA4B;AAAjE;AADF,MADF,EAIEr1B,IAJF;AAMD;;AAEDo6C,SAAO,GAAS;AACd;AACA;AACA,SAAKrlD,KAAL,CAAWqlD,OAAX;;AACA,SAAK6E,cAAL,CAAoB7E,OAApB;;AACA,SAAK4E,WAAL,CAAiB5E,OAAjB;AACD;;AApTU;;AAuTEsE,iGAAf,E;;;;;;;AC9ca;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,kBAAkB,mBAAO,CAAC,EAAO;AACjC,eAAe,mBAAO,CAAC,EAAgB;AACvC,cAAc,mBAAO,CAAC,EAAa;AACnC,sBAAsB,mBAAO,CAAC,EAAuB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,uC;;;;;;;AC/Ha;AACb,8CAA8C,cAAc;AAC5D,iBAAiB,mBAAO,CAAC,GAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,qC;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,cAAc;AACd;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA,iCAAiC,QAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA,sCAAsC,QAAQ;AAC9C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEA;AACA,QAAQ,yBAAyB;AACjC;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;;;;;;;AC7bA,2BAA2B,mBAAO,CAAC,GAA2B;AAC9D;AACA;AACA,mBAAmB,mBAAO,CAAC,GAA2B;AACtD,iBAAiB,mBAAO,CAAC,EAAyB;AAClD,oBAAoB,mBAAO,CAAC,GAA4B;AACxD,sBAAsB,mBAAO,CAAC,GAA8B;;;;;;;ACN5D;AACA,aAAa,mBAAO,CAAC,EAAQ;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEa;;AAEb;;AAEA,UAAU,mBAAO,CAAC,GAAsB;AACxC;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,yBAAyB,mBAAO,CAAC,EAAc;AAC/C,gBAAgB,mBAAO,CAAC,EAAU;AAClC;;AAEA;AACA;AACA,aAAa,mBAAO,CAAC,GAAgB;AACrC;AACA;;AAEA;AACA,aAAa,mBAAO,CAAC,GAA2B;AAChD;;AAEA;;AAEA,aAAa,mBAAO,CAAC,GAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,kBAAkB,mBAAO,CAAC,GAA4B;;AAEtD;;AAEA;;AAEA;AACA,qBAAqB,mBAAO,CAAC,EAAkB;;AAE/C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,0FAA0F;;AAE3I;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,mBAAO,CAAC,EAAkB;;AAE/C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iCAAiC;;AAEjC;;AAEA,2CAA2C;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,oDAAoD;AACpD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,E;;;;;;;;AC9qBA,8CAAa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,EAAO;AAC9B,eAAe,mBAAO,CAAC,GAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3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ACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;;AAEA;;;;;;;ACtEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACbA,mBAAmB,mBAAO,CAAC,GAAiB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA,aAAa,mBAAO,CAAC,EAAW;AAChC,eAAe,mBAAO,CAAC,GAAa;AACpC,cAAc,mBAAO,CAAC,GAAW;AACjC,eAAe,mBAAO,CAAC,GAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpCA,iBAAiB,mBAAO,CAAC,GAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;ACRA;AACA;;AAEA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACzBA,iBAAiB,mBAAO,CAAC,GAAe;AACxC,mBAAmB,mBAAO,CAAC,GAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AA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,CAAC,EAAW;AAChC,qBAAqB,mBAAO,CAAC,EAAsB;AACnD,UAAU,mBAAO,CAAC,EAAQ;AAC1B,UAAU,mBAAO,CAAC,EAAQ;AAC1B,aAAa,mBAAO,CAAC,EAAY;AACjC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,eAAe,mBAAO,CAAC,GAAc;AACrC,cAAc,mBAAO,CAAC,GAAa;AACnC,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC,gBAAgB,mBAAO,CAAC,EAAe;AACvC,kBAAkB,mBAAO,CAAC,EAAiB;AAC3C,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,cAAc,mBAAO,CAAC,EAAkB;AACxC,cAAc,mBAAO,CAAC,GAAoB;AAC1C,YAAY,mBAAO,CAAC,EAAgB;AACpC,YAAY,mBAAO,CAAC,EAAgB;AACpC,UAAU,mBAAO,CAAC,EAAc;AAChC,YAAY,mBAAO,CAAC,EAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB,sBAAsB,uBAAuB,WAAW,IAAI;AAC5D,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,KAAK;AACL;AACA,sBAAsB,mCAAmC;AACzD,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,gCAAgC;AAChG;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,EAAE,mBAAO,CAAC,EAAgB;AAC1B,EAAE,mBAAO,CAAC,EAAe;AACzB;;AAEA,sBAAsB,mBAAO,CAAC,EAAY;AAC1C;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0DAA0D,kBAAkB;;AAE5E;AACA;AACA;AACA,oBAAoB,uBAAuB;;AAE3C,oDAAoD,6BAA6B;;AAEjF;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH,0BAA0B,eAAe,EAAE;AAC3C,0BAA0B,gBAAgB;AAC1C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,8CAA8C,YAAY,EAAE;;AAE5D;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO,QAAQ,iCAAiC;AACpG,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA,oCAAoC,mBAAO,CAAC,EAAS;AACrD;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrPA,WAAW,mBAAO,CAAC,EAAQ;AAC3B,eAAe,mBAAO,CAAC,EAAc;AACrC,UAAU,mBAAO,CAAC,EAAQ;AAC1B,cAAc,mBAAO,CAAC,EAAc;AACpC;AACA;AACA;AACA;AACA,cAAc,mBAAO,CAAC,EAAU;AAChC,iDAAiD;AACjD,CAAC;AACD;AACA,qBAAqB;AACrB;AACA,SAAS;AACT,GAAG,EAAE;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpDA;AACA,cAAc,mBAAO,CAAC,EAAgB;AACtC,WAAW,mBAAO,CAAC,EAAgB;AACnC,UAAU,mBAAO,CAAC,EAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;ACdA;AACA,UAAU,mBAAO,CAAC,EAAQ;AAC1B;AACA;AACA;;;;;;;ACJA;AACA,gBAAgB,mBAAO,CAAC,EAAe;AACvC,WAAW,mBAAO,CAAC,EAAgB;AACnC,iBAAiB;;AAEjB;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;AClBA,mBAAO,CAAC,EAAe;;;;;;;ACAvB,mBAAO,CAAC,EAAe;;;;;;;ACAvB,kBAAkB,YAAY,mBAAO,CAAC,GAA4C,sB;;;;;;ACAlF,mBAAO,CAAC,GAA2C;AACnD,iBAAiB,mBAAO,CAAC,EAAqB;;;;;;;ACD9C;AACA,cAAc,mBAAO,CAAC,EAAW;AACjC,8BAA8B,iBAAiB,mBAAO,CAAC,GAAc,OAAO;;;;;;;ACF5E;AACA;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,cAAc,mBAAO,CAAC,EAAQ,iBAAiB,mBAAO,CAAC,EAAgB;AACvE;AACA;AACA,OAAO,YAAY,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,GAAG;AACR;AACA;;;;;;;ACxBA,kBAAkB,YAAY,mBAAO,CAAC,GAAkC,sB;;;;;;ACAxE,mBAAO,CAAC,GAAiC;AACzC,cAAc,mBAAO,CAAC,EAAqB;AAC3C;AACA;AACA;;;;;;;ACJA,cAAc,mBAAO,CAAC,EAAW;AACjC;AACA,8BAA8B,SAAS,mBAAO,CAAC,EAAkB,GAAG;;;;;;;;ACFvD;;AAEb;AACA;AACA,CAAC;;AAED,gBAAgB,mBAAO,CAAC,CAA+B;;AAEvD;;AAEA,uBAAuB,mBAAO,CAAC,CAAsC;;AAErE;;AAEA,aAAa,mBAAO,CAAC,CAAO;;AAE5B;;AAEA,sCAAsC,uCAAuC,kBAAkB;;AAE/F;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0CAA0C,mPAAmP;;AAE7R,4CAA4C;AAC5C,6DAA6D,uCAAuC;AACpG,EAAE;AACF;AACA,oC;;;;;;;ACrCa;;AAEb;AACA;AACA,CAAC;;AAED,gCAAgC,mBAAO,CAAC,EAA+C;;AAEvF;;AAEA,gBAAgB,mBAAO,CAAC,CAA+B;;AAEvD;;AAEA,uBAAuB,mBAAO,CAAC,CAAsC;;AAErE;;AAEA,uBAAuB,mBAAO,CAAC,EAAsC;;AAErE;;AAEA,oBAAoB,mBAAO,CAAC,EAAmC;;AAE/D;;AAEA,kCAAkC,mBAAO,CAAC,CAAiD;;AAE3F;;AAEA,YAAY,mBAAO,CAAC,EAA2B;;AAE/C;;AAEA,iBAAiB,mBAAO,CAAC,EAAgC;;AAEzD;;AAEA;;AAEA,aAAa,mBAAO,CAAC,CAAO;;AAE5B;;AAEA,iBAAiB,mBAAO,CAAC,CAAY;;AAErC;;AAEA,wBAAwB,mBAAO,CAAC,EAAkC;;AAElE;;AAEA,kBAAkB,mBAAO,CAAC,CAAY;;AAEtC;;AAEA,eAAe,mBAAO,CAAC,EAAS;;AAEhC;;AAEA,aAAa,mBAAO,CAAC,GAAS;;AAE9B;;AAEA,aAAa,mBAAO,CAAC,GAAS;;AAE9B;;AAEA,cAAc,mBAAO,CAAC,GAAW;;AAEjC;;AAEA,aAAa,mBAAO,CAAC,EAAU;;AAE/B;;AAEA,uCAAuC,6BAA6B,YAAY,EAAE,OAAO,iBAAiB,mBAAmB,uBAAuB,4EAA4E,EAAE,EAAE,yBAAyB,eAAe,EAAE;;AAE9Q,sCAAsC,uCAAuC,kBAAkB;;AAE/F;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,eAAe;AACvC,wBAAwB,eAAe;AACvC;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,kFAAkF;AAClF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,uFAAuF;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,+CAA+C;AAC/C,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG,qIAAqI;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,qDAAqD;AACxD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,+FAA+F,cAAc,aAAa;AAC1H,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,oBAAoB;AACpB,iBAAiB;AACjB,gBAAgB;AAChB;AACA,GAAG;AACH;AACA,oC;;;;;;ACzdA,kBAAkB,YAAY,mBAAO,CAAC,GAA4C,sB;;;;;;ACAlF,mBAAO,CAAC,GAA2C;AACnD,iBAAiB,mBAAO,CAAC,EAAqB;;;;;;;ACD9C;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC,sBAAsB,mBAAO,CAAC,EAAe;;AAE7C,mBAAO,CAAC,EAAe;AACvB;AACA;AACA;AACA,CAAC;;;;;;;ACRD,kBAAkB,YAAY,mBAAO,CAAC,GAAuD,sB;;;;;;ACA7F,mBAAO,CAAC,GAAsD;AAC9D,cAAc,mBAAO,CAAC,EAAqB;AAC3C;AACA;AACA;;;;;;;ACJA;AACA,gBAAgB,mBAAO,CAAC,EAAe;AACvC,gCAAgC,mBAAO,CAAC,EAAgB;;AAExD,mBAAO,CAAC,EAAe;AACvB;AACA;AACA;AACA,CAAC;;;;;;;;ACRD;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA,CAAC;;AAED,sCAAsC,uCAAuC,kBAAkB;;AAE/F,uBAAuB,mBAAO,CAAC,GAAmB;;AAElD;;AAEA,oBAAoB,mBAAO,CAAC,EAAe;;AAE3C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qDAAqD;AACrD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA,oC;;;;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AqB,wBAAwB;AAC7C;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,4GAA4G;AAC5G,gDAAgD,gQAAgQ;AAChT,gDAAgD;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA,CAAC;;AAED;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;ACzLA,kBAAkB,YAAY,mBAAO,CAAC,GAA+B,sB;;;;;;ACArE,mBAAO,CAAC,EAAmC;AAC3C,mBAAO,CAAC,GAA8B;AACtC,iBAAiB,mBAAO,CAAC,EAAqB;;;;;;;;ACFjC;AACb,UAAU,mBAAO,CAAC,EAAQ;AAC1B,cAAc,mBAAO,CAAC,EAAW;AACjC,eAAe,mBAAO,CAAC,EAAc;AACrC,WAAW,mBAAO,CAAC,GAAc;AACjC,kBAAkB,mBAAO,CAAC,GAAkB;AAC5C,eAAe,mBAAO,CAAC,EAAc;AACrC,qBAAqB,mBAAO,CAAC,GAAoB;AACjD,gBAAgB,mBAAO,CAAC,GAA4B;;AAEpD,iCAAiC,mBAAO,CAAC,GAAgB,mBAAmB,kBAAkB,EAAE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,gCAAgC;AACvF;AACA;AACA,KAAK;AACL;AACA,kCAAkC,gBAAgB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;ACpCD;AACA,eAAe,mBAAO,CAAC,EAAc;AACrC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;;;;;;ACXA;AACA,gBAAgB,mBAAO,CAAC,EAAc;AACtC,eAAe,mBAAO,CAAC,EAAQ;AAC/B;;AAEA;AACA;AACA;;;;;;;;ACPa;AACb,sBAAsB,mBAAO,CAAC,EAAc;AAC5C,iBAAiB,mBAAO,CAAC,EAAkB;;AAE3C;AACA;AACA;AACA;;;;;;;ACPA,cAAc,mBAAO,CAAC,GAAY;AAClC,eAAe,mBAAO,CAAC,EAAQ;AAC/B,gBAAgB,mBAAO,CAAC,EAAc;AACtC,iBAAiB,mBAAO,CAAC,EAAS;AAClC;AACA;AACA;AACA;;;;;;;ACPA;AACA,UAAU,mBAAO,CAAC,EAAQ;AAC1B,UAAU,mBAAO,CAAC,EAAQ;AAC1B;AACA,2BAA2B,kBAAkB,EAAE;;AAE/C;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA,eAAe,mBAAO,CAAC,EAAQ;AAC/B;;AAEA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA,iCAAiC,SAAS,EAAE;AAC5C,CAAC,YAAY;;AAEb;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS,qBAAqB;AAC3D,iCAAiC,aAAa;AAC9C;AACA,GAAG,YAAY;AACf;AACA;;;;;;;;ACrBa;;AAEb;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,2B;;;;;;;ACrnBA,cAAc,mBAAO,CAAC,GAAyI;;AAE/J,4CAA4C,QAAS;;AAErD;AACA;;;;AAIA,eAAe;;AAEf;AACA;;AAEA,aAAa,mBAAO,CAAC,EAAsD;;AAE3E;;AAEA,GAAG,KAAU,EAAE,E;;;;;;ACnBf,2BAA2B,mBAAO,CAAC,EAAkD;AACrF;;;AAGA;AACA,cAAc,QAAS,4BAA4B,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C,CAAC,SAAF,CAAY,KAA9B,EAAqC,CAAC,CAAC,SAAF,CAAY,GAAjD,CAAR;AACA;;AACF,aAAK,MAAL;AACE,gBAAM,GAAG,yBAAa,GAAb,EAAkB,CAAC,CAAC,SAAF,CAAY,KAA9B,EAAqC,CAAC,CAAC,SAAF,CAAY,GAAjD,CAAT;AACA;;AACF,gBAPF,CAQE;;AARF;AAUD,KAXD;AAYD;;AAED,SAAO;AAAE,UAAM,QAAR;AAAU,QAAI,MAAd;AAAgB,OAAG,KAAnB;AAAqB,YAAQ,UAA7B;AAA+B,UAAM,QAArC;AAAuC,SAAK;AAA5C,GAAP;AACD;;AA9ED,4B;;;;;;;ACrCA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAE+C;;AAE/C;AACA;AACA;AACO;;AAEP;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,2BAA2B;AAC7C;AACA,OAAO;AACP;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB;AACA,eAAe;AACf;AACA;AACA;AACA,eAAe,YAAY;AAC3B;AACA,eAAe,gBAAgB;AAC/B;AACA,iBAAiB,iBAAiB;AAClC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,a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CA;;AAEA,QAAQ,WAAW;;AAEnB;AACA;AACA,QAAQ,UAAU;;AAElB;AACA;;;;;;;ACnFA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA,mBAAO,CAAC,GAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA,8CAAa;AACb,OAAO,gFAAgF,GAAG,mBAAO,CAAC,GAAQ;;AAE1G;AACA;AACA;;AAEA;AACA;AACA,8HAA8H,aAAa;AAC3I;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,UAAU;AAChD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oLAAoL,WAAW;AAC/L;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6BAA6B,WAAW;AACxC;AACA;AACA;AACA;AACA;;AAEA,sEAAsE,WAAW;AACjF;AACA;AACA;AACA;AACA;;AAEA,6EAA6E,WAAW;AACxF;AACA;AACA;AACA;AACA;;AAEA,8EAA8E,WAAW;AACzF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA,0CAA0C,OAAO,sBAAsB,OAAO;AAC9E;;AAEA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;AACA;AACA,KAAK,+BAA+B,OAAO;AAC3C;AACA;AACA;AACA;AACA,KAAK,8BAA8B,OAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+CAA+C,wDAAwD;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,UAAU;AAC7C,mCAAmC,UAAU;AAC7C,mCAAmC,UAAU;AAC7C,mCAAmC,UAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,UAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA,cAAc;AACd;;AAEA,aAAa;AACb;;AAEA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iCAAiC,UAAU;AAC3C;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,UAAU;AACjD;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,UAAU;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,gHAAgH,OAAO;AACvH;AACA,iHAAiH,oBAAoB;AACrI;AACA;AACA;AACA;AACA;AACA;;AAEA,iHAAiH,oBAAoB;AACrI;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,2CAA2C;AAC/D;AACA,8BAA8B,cAAc;AAC5C,wBAAwB,kCAAkC;AAC1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,kCAAkC;AAC1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,kCAAkC;AAC1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,kCAAkC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8DAA8D,WAAW;AACzE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,yDAAyD,WAAW;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA,yDAAyD,WAAW;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,WAAW;AACxD;AACA;AACA;AACA;AACA;;AAEA;AACA,yDAAyD,WAAW;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA,yDAAyD,WAAW;AACpE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;;AAEA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,WAAW;AAClC;AACA,8BAA8B,UAAU;AACxC,8BAA8B,UAAU;AACxC,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,UAAU,qBAAqB,YAAY,oBAAoB,YAAY;AAC/F;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,uCAAuC,WAAW;AAClD;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,WAAW;AAClD;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,WAAW;AAClD;AACA;AACA;AACA;AACA;;AAEA,uCAAuC,WAAW;AAClD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,8DAA8D,WAAW;AACzE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,iDAAiD,YAAY;;AAE7D;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA,yDAAyD;AACzD,GAAG;AACH;AACA;AACA,EAAE;AACF,CAAC;;;;;;;;AC99BD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,SAAS,mBAAO,CAAC,GAAQ;AACzB,eAAe,mBAAO,CAAC,EAAU;;AAEjC;AACA,kBAAkB,mBAAO,CAAC,GAA6B;AACvD,kBAAkB,mBAAO,CAAC,GAA6B;AACvD,gBAAgB,mBAAO,CAAC,GAA2B;AACnD,mBAAmB,mBAAO,CAAC,GAA8B;AACzD,qBAAqB,mBAAO,CAAC,GAAgC;;AAE7D;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;;;;;;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA,UAAU,mBAAO,CAAC,GAAsB;AACxC;;AAEA;;AAEA;AACA,cAAc,mBAAO,CAAC,GAAS;AAC/B;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS,mBAAO,CAAC,GAAQ;;AAEzB;AACA;AACA;AACA;;AAEA;AACA,aAAa,mBAAO,CAAC,GAA2B;AAChD;;AAEA;;AAEA,aAAa,mBAAO,CAAC,GAAa;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,yBAAyB,mBAAO,CAAC,EAAc;AAC/C,gBAAgB,mBAAO,CAAC,EAAU;AAClC;;AAEA;AACA,gBAAgB,mBAAO,CAAC,GAAM;AAC9B;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA,iBAAiB,mBAAO,CAAC,GAA+B;AACxD,kBAAkB,mBAAO,CAAC,GAA4B;AACtD;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yEAAyE,6EAA6E;AACtJ;;AAEA;AACA,qBAAqB,mBAAO,CAAC,EAAkB;;AAE/C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,iDAAiD,0FAA0F;;AAE3I;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,wCAAwC,mBAAO,CAAC,GAAiB;AACjE;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,mBAAO,CAAC,EAAkB;;AAE/C;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,kGAAkG;AAClG,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,4FAA4F;AAC5F,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,mBAAO,CAAC,GAAiB;AAC/D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC;;AAEtC;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,4CAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,SAAS;AAC5B;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA,4EAA4E;;AAE5E;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD;AACnD;AACA,mDAAmD,iEAAiE;AACpH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,uCAAuC;AACvC,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,OAAO;AACvC;AACA;AACA;AACA,C;;;;;;;AC1/BA,iBAAiB,mBAAO,CAAC,GAAQ;;;;;;;;ACApB;;AAEb;;AAEA,UAAU,mBAAO,CAAC,GAAsB;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,E;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA,aAAa,mBAAO,CAAC,GAAa;AAClC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,sCAAsC,sCAAsC;AACzG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,C;;;;;;;ACvSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;;AAEA,aAAa,mBAAO,CAAC,EAAkB;;AAEvC;AACA,yBAAyB,mBAAO,CAAC,EAAc;AAC/C,gBAAgB,mBAAO,CAAC,EAAU;AAClC;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,C;;;;;;;ACrNA,8CAAa;AACb;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gC;;;;;;;;AC5HA,8CAAa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,gBAAgB,mBAAO,CAAC,EAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kC;;;;;;;;AC5Ea;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,kBAAkB,mBAAO,CAAC,EAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,oCAAoC,OAAO,kBAAkB,OAAO,kBAAkB,IAAI;AAC1F;AACA;AACA,mCAAmC,OAAO,kBAAkB,OAAO,qBAAqB,IAAI;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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ACL;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,eAAe;AAC5B;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;;;;;;;;;;;;;;;;;;;;;;;AC/HA;AACA;AACA;AAEe,MAAM2C,MAAN,SAAqBC,mDAArB,CAAgC;AAC7C1kC,aAAW,CAAC3iB,OAAD,EAAU;AACnB,0CACKA,OADL;AAEE4lB,kBAAY,EAAE,MAAMzD,4CAFtB;AAGEgF,0BAAoB,EAAE,MAAMmgC,mDAAoBA;AAHlD;AAKD;;AAP4C,C;;;;;;;ACJnC;;AAEZ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kCAAkC,SAAS;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,SAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,UAAU;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;ACvJA;AACA;;AAEA;AACA;AACA;;AAEA,uBAAuB;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,sBAAsB,EAAE;AAClE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;;;;;ACxLD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAO,CAAC,GAAI;;AAEpC;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,cAAc;AAC1B;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA,aAAa,kCAAkC;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;;AAEA,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;;;;;;ACzQA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACjKa;AACb,8CAA8C,cAAc;AAC5D,gBAAgB,mBAAO,CAAC,GAAkB;AAC1C,wBAAwB,mBAAO,CAAC,GAAiB;AACjD;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa;AACb;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,aAAa;AACb;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,gC;;;;;;;AChEA,8CAAa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,4BAA4B,mBAAO,CAAC,GAAqB;AACzD,eAAe,mBAAO,CAAC,EAAQ;AAC/B,2BAA2B,mBAAO,CAAC,GAAkB;AACrD,eAAe,mBAAO,CAAC,EAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,QAAQ,KAAK,qBAAqB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,6BAA6B,QAAQ,KAAK,qBAAqB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B,cAAc,KAAK,2BAA2B;AAC1E,+BAA+B,OAAO;AACtC;AACA,wCAAwC;AACxC,SAAS;AACT;AACA;AACA;;;;;;;;;AChHA,8CAAa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;ACxDa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,0EAA0E;AAC1E;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,SAAS;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,KAAK;;AAEjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,GAAoB;;AAE/C;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,mBAAmB,mBAAO,CAAC,GAAU;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kCAAkC;AAC7D,2BAA2B,mDAAmD;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9rBA;AACA;AACA;AACA;AACA;AACA,C;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;AC3GA,8CAAa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,iBAAiB,mBAAO,CAAC,GAAW;AACpC,iBAAiB,mBAAO,CAAC,GAAa;AACtC,eAAe,mBAAO,CAAC,EAAO;AAC9B,4BAA4B,mBAAO,CAAC,GAA4B;AAChE,qBAAqB,mBAAO,CAAC,GAAmB;AAChD,sBAAsB,mBAAO,CAAC,GAAqB;AACnD,oBAAoB,mBAAO,CAAC,GAAiB;AAC7C,qBAAqB,mBAAO,CAAC,GAAmB;AAChD,oBAAoB,mBAAO,CAAC,GAAiB;AAC7C,qBAAqB,mBAAO,CAAC,GAAmB;AAChD,mBAAmB,mBAAO,CAAC,GAAY;AACvC,oBAAoB,mBAAO,CAAC,GAAiB;AAC7C,qBAAqB,mBAAO,CAAC,GAAmB;AAChD,wBAAwB,mBAAO,CAAC,GAAyB;AACzD,oBAAoB,mBAAO,CAAC,GAAiB;AAC7C,uBAAuB,mBAAO,CAAC,GAAuB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,WAAW;AAC1B,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,iBAAiB,cAAc,gBAAgB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,WAAW;AACvE;AACA,SAAS;AACT;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yC;;;;;;;;ACnOa;;AAEb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,8CAA8C;AAC9C,2BAA2B;AAC3B;AACA;;AAEA;;AAEA,eAAe;AACf,sBAAsB;;AAEtB,gBAAgB,SAAS;AACzB;AACA;AACA,sCAAsC;AACtC;;AAEA;;AAEA,kBAAkB,SAAS;AAC3B;AACA;AACA,sCAAsC;AACtC;;AAEA,yEAAyE;;AAEzE;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;;;;;;ACzDA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,qBAAqB,MAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,iCAAiC;AACjC,iCAAiC;AACjC,iCAAiC;AACjC,iCAAiC;AACjC,iCAAiC;AACjC;AACA,yDAAyD,MAAM;AAC/D,qDAAqD,MAAM;AAC3D,oDAAoD,MAAM,oCAAoC,MAAM;;AAEpG;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;;AAEA;AACA;AACA;;AAEA,kBAAkB;AAClB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,cAAc;AACzB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,+BAA+B;AAC/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;AC7Qa;AACb,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAO;AAC9B,0BAA0B,mBAAO,CAAC,GAAmB;AACrD,4BAA4B,mBAAO,CAAC,GAAqB;AACzD,2BAA2B,mBAAO,CAAC,EAAoB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,wCAAwC;AACxC;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,IAAI,KAAK,MAAM;AACxC,iCAAiC;AACjC;AACA,gCAAgC,uBAAuB,iCAAiC,EAAE;AAC1F;AACA;AACA;AACA,qBAAqB,QAAQ,GAAG,MAAM,KAAK,MAAM;AACjD;AACA;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,kCAAkC;AACzF;AACA;AACA;AACA,sDAAsD,kCAAkC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,QAAQ;AACvB;AACA;AACA;AACA,wBAAwB,OAAO,KAAK,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,QAAQ,GAAG,OAAO,KAAK,UAAU;AAChG;AACA;AACA;A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BAAuB,mBAAO,CAAC,GAAqB;AACpD,0BAA0B,mBAAO,CAAC,GAA+B;AACjE,yBAAyB,mBAAO,CAAC,GAAwB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6C;;;;;;;AC/Ca;AACb,8CAA8C,cAAc;AAC5D,2BAA2B,mBAAO,CAAC,EAA4B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uC;;;;;;;ACrBa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8C;;;;;;;AChDa;AACb,8CAA8C,cAAc;AAC5D,2BAA2B,mBAAO,CAAC,EAA4B;AAC/D,eAAe,mBAAO,CAAC,EAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2C;;;;;;;AC9Ka;AACb,8CAA8C,cAAc;AAC5D,2BAA2B,mBAAO,CAAC,EAA4B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wC;;;;;;;AC9Fa;AACb,8CAA8C,cAAc;AAC5D,2BAA2B,mBAAO,CAAC,EAA4B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2C;;;;;;;AC5Ca;AACb,8CAA8C,cAAc;AAC5D,2BAA2B,mBAAO,CAAC,EAA4B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0C;;;;;;;AC5Fa;AACb,8CAA8C,cAAc;AAC5D,2BAA2B,mBAAO,CAAC,EAA4B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wC;;;;;;;AC/Fa;AACb,8CAA8C,cAAc;AAC5D,2BAA2B,mBAAO,CAAC,EAA+B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2C;;;;;;;AC1Ha;AACb,8CAA8C,cAAc;AAC5D,2BAA2B,mBAAO,CAAC,EAA4B;AAC/D;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0C;;;;;;;ACpCa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,kBAAkB,mBAAO,CAAC,EAAO;AACjC,eAAe,mBAAO,CAAC,EAAkB;AACzC,gBAAgB,mBAAO,CAAC,GAAkB;AAC1C,sBAAsB,mBAAO,CAAC,EAAsB;AACpD,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,sBAAsB,mBAAO,CAAC,EAAuB;AACrD,kBAAkB,mBAAO,CAAC,GAAa;AACvC,YAAY,mBAAO,CAAC,GAAQ;AAC5B,oBAAoB,mBAAO,CAAC,GAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,oBAAoB;AAC1D;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sC;;;;;;;AC/FA,8CAAa;AACb,8CAA8C,cAAc;AAC5D,kBAAkB,mBAAO,CAAC,EAAO;AACjC,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,EAAgB;AACvC,gBAAgB,mBAAO,CAAC,EAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,OAAO;AACtB,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uC;;;;;;;;ACzPa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,EAAQ;AAC/B,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C;AACA;AACA;AACA;AACA,uGAAuG,iBAAiB;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;AC1Ca;AACb,8CAA8C,cAAc;AAC5D,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;ACjBA,e;;;;;;;ACAa;;AAEb,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,aAAa,mBAAO,CAAC,GAAa;AAClC,WAAW,mBAAO,CAAC,GAAM;;AAEzB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA,C;;;;;;AC9EA,e;;;;;;;ACCA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,aAAa,SAAS;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClEA;AACA;AACA,aAAa,mBAAO,CAAC,EAAQ;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEa;;AAEb;;AAEA,gBAAgB,mBAAO,CAAC,GAAqB;;AAE7C;AACA,yBAAyB,mBAAO,CAAC,EAAc;AAC/C,gBAAgB,mBAAO,CAAC,EAAU;AAClC;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,E;;;;;;AC9CA,iBAAiB,mBAAO,CAAC,GAA2B;;;;;;;ACApD,iBAAiB,mBAAO,CAAC,EAAyB;;;;;;;ACAlD,iBAAiB,mBAAO,CAAC,GAAY;;;;;;;ACArC,iBAAiB,mBAAO,CAAC,GAAY;;;;;;;;ACAxB;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,uDAAuD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA,YAAY,QAAQ,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA,sC;;;;;;;AC5Ha;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,GAAQ;AAC/B,kBAAkB,mBAAO,CAAC,GAAa;AACvC,eAAe,mBAAO,CAAC,EAAO;AAC9B,sBAAsB,mBAAO,CAAC,EAAuB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,mBAAmB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,qC;;;;;;;AC1IA;AACa;AACb,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAgB;AACvC,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,GAAQ;AAC/B,kBAAkB,mBAAO,CAAC,GAAW;AACrC,gBAAgB,mBAAO,CAAC,EAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,uDAAuD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mDAAmD;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,mCAAmC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0DAA0D;AACjF;AACA;AACA;AACA;AACA,2BAA2B,8EAA8E;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6BAA6B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;;AC7UA,8CAAa;AACb,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAgB;AACvC,cAAc,mBAAO,CAAC,EAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mC;;;;;;;;ACvCa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAgB;AACvC,cAAc,mBAAO,CAAC,EAAa;AACnC,iBAAiB,mBAAO,CAAC,GAAsB;AAC/C,4BAA4B,mBAAO,CAAC,GAA4B;AAChE,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,eAAe,mBAAO,CAAC,EAAO;AAC9B;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,kCAAkC,iBAAiB,WAAW,mBAAmB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,2BAA2B,uBAAuB;AAClD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;;;;;;ACtMA,8CAAa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,kBAAkB,mBAAO,CAAC,EAAO;AACjC,cAAc,mBAAO,CAAC,EAAa;AACnC,sBAAsB,mBAAO,CAAC,EAAuB;AACrD,eAAe,mBAAO,CAAC,GAAQ;AAC/B,kBAAkB,mBAAO,CAAC,GAAa;AACvC,sBAAsB,mBAAO,CAAC,GAAsB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,+CAA+C;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,gBAAgB;AACvD;AACA;AACA;AACA;AACA,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,cAAc,gBAAgB,aAAa;AAC3F,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G,mBAAmB;AAC/H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO,6CAA6C,mBAAmB;AACvH;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,mBAAmB;AACtE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qC;;;;;;;;AChRa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAkB;AACzC,kBAAkB,mBAAO,CAAC,EAAO;AACjC,cAAc,mBAAO,CAAC,EAAa;AACnC,kBAAkB,mBAAO,CAAC,GAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qDAAqD,OAAO,MAAM;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,kBAAkB,aAAa,kBAAkB,WAAW,OAAO,QAAQ,uBAAuB,GAAG;AAC1I;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gC;;;;;;;ACzFA,8CAAa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAQ;AAC/B,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,EAAkB;AACzC,kBAAkB,mBAAO,CAAC,EAAO;AACjC,eAAe,mBAAO,CAAC,EAAgB;AACvC,4BAA4B,mBAAO,CAAC,GAA4B;AAChE,kBAAkB,mBAAO,CAAC,GAAW;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,WAAW;AAC/C;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA,gCAAgC,gCAAgC;AAChE;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,+CAA+C;AAC1D,WAAW,iDAAiD;AAC5D,WAAW,iDAAiD;AAC5D,WAAW,kDAAkD;AAC7D,WAAW,kDAAkD;AAC7D,WAAW,kDAAkD;AAC7D,WAAW,oDAAoD;AAC/D,WAAW,qDAAqD;AAChE,WAAW,qDAAqD;AAChE,WAAW,qDAAqD;AAChE,WAAW,uDAAuD;AAClE,WAAW,uDAAuD;AAClE,WAAW,uDAAuD;AAClE,WAAW;AACX;AACA;AACA,QAAQ,wCAAwC;AAChD,QAAQ,wCAAwC;AAChD,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,4BAA4B,eAAe,gBAAgB;AAC3G;AACA,uEAAuE,gBAAgB;AACvF;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kBAAkB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,gCAAgC;AAChC;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mBAAmB,mBAAmB,QAAQ;AACxE,yCAAyC;AACzC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,sC;;;;;;;;ACvgBa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mC;;;;;;;AC3Ca;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,kBAAkB,mBAAO,CAAC,EAAO;AACjC,cAAc,mBAAO,CAAC,EAAa;AACnC,uBAAuB,mBAAO,CAAC,GAAoB;AACnD,uBAAuB,mBAAO,CAAC,GAAoB;AACnD,4BAA4B,mBAAO,CAAC,GAA4B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,iC;;;;;;;AC1Ca;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,kBAAkB,mBAAO,CAAC,EAAO;AACjC,eAAe,mBAAO,CAAC,EAAQ;AAC/B,sBAAsB,mBAAO,CAAC,EAA0B;AACxD,YAAY,mBAAO,CAAC,GAAkB;AACtC,sBAAsB,mBAAO,CAAC,GAAyB;AACvD,iBAAiB,mBAAO,CAAC,EAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,WAAW,kBAAkB,qBAAqB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,WAAW;AACzE;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,wC;;;;;;;AClEa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,EAAmB;AAC1C,kBAAkB,mBAAO,CAAC,EAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,0CAA0C,wBAAwB;AAClE;AACA;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,0C;;;;;;;AC7Fa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,kBAAkB,mBAAO,CAAC,EAAO;AACjC,eAAe,mBAAO,CAAC,EAAQ;AAC/B,sBAAsB,mBAAO,CAAC,EAA0B;AACxD,YAAY,mBAAO,CAAC,GAAkB;AACtC,sBAAsB,mBAAO,CAAC,GAAyB;AACvD,oBAAoB,mBAAO,CAAC,GAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,0BAA0B,GAAG,0BAA0B;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,wBAAwB;AAC7F;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wC;;;;;;;ACzDa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,EAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0C;;;;;;;ACxCa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qC;;;;;;;ACjEa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,kBAAkB,mBAAO,CAAC,EAAO;AACjC,eAAe,mBAAO,CAAC,EAAQ;AAC/B,eAAe,mBAAO,CAAC,EAAgB;AACvC,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,uBAAuB,mBAAO,CAAC,GAAuB;AACtD,qBAAqB,mBAAO,CAAC,GAAmB;AAChD,sBAAsB,mBAAO,CAAC,GAAqB;AACnD,sBAAsB,mBAAO,CAAC,EAAuB;AACrD;AACA;AACA;AACA;AACA,yBAAyB,eAAe;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;ACzHa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,aAAa,mBAAO,CAAC,GAAQ;AAC7B,uBAAuB,mBAAO,CAAC,GAAwB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sC;;;;;;;ACtDa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gC;;;;;;;AC3Ba;AACb,8CAA8C,cAAc;AAC5D,kBAAkB,mBAAO,CAAC,EAAO;AACjC,cAAc,mBAAO,CAAC,GAAS;AAC/B,uBAAuB,mBAAO,CAAC,GAAwB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uC;;;;;;;ACrCa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,EAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iC;;;;;;;AC9Ba;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAkB;AACzC,gBAAgB,mBAAO,CAAC,GAAkB;AAC1C,cAAc,mBAAO,CAAC,EAAa;AACnC,kBAAkB,mBAAO,CAAC,EAAO;AACjC,aAAa,mBAAO,CAAC,GAAa;AAClC,kBAAkB,mBAAO,CAAC,GAAoB;AAC9C,sBAAsB,mBAAO,CAAC,EAAsB;AACpD,eAAe,mBAAO,CAAC,EAAgB;AACvC,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,sBAAsB,mBAAO,CAAC,EAAuB;AACrD,oBAAoB,mBAAO,CAAC,GAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,wBAAwB,mBAAmB,mBAAmB;AACvF;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,KAAK;AAC1E;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wBAAwB,iCAAiC,eAAe;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sJAAsJ;AACtJ;AACA;AACA;AACA,oDAAoD,eAAe,MAAM,iBAAiB;AAC1F;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sC;;;;;;;ACtJa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;AChCa;AACb,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,6DAA6D;AAC9D;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qC;;;;;;;AC9DA,8CAAa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,eAAe,mBAAO,CAAC,EAAQ;AAC/B,sBAAsB,mBAAO,CAAC,GAAsB;AACpD,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,sBAAsB,mBAAO,CAAC,EAAuB;AACrD,uBAAuB,mBAAO,CAAC,GAAgB;AAC/C,kBAAkB,mBAAO,CAAC,EAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,kBAAkB,QAAQ,4CAA4C;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,2BAA2B,kBAAkB,cAAc,aAAa,YAAY;AAC9I;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,qBAAqB;AAClF;AACA;AACA,mFAAmF,2BAA2B;AAC9G;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,yC;;;;;;;;ACpHa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wC;;;;;;;AC3Ea;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,4BAA4B,mBAAO,CAAC,GAA4B;AAChE,eAAe,mBAAO,CAAC,EAAQ;AAC/B,eAAe,mBAAO,CAAC,EAAO;AAC9B,mBAAmB,mBAAO,CAAC,GAAY;AACvC,sBAAsB,mBAAO,CAAC,EAAsB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,yBAAyB;AACzE;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,4CAA4C,eAAe,QAAQ,iBAAiB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qC;;;;;;;ACnEa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gEAAgE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;ACrDa;AACb;AACA;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;AACA,8CAA8C,cAAc;AAC5D,eAAe,mBAAO,CAAC,EAAQ;AAC/B,cAAc,mBAAO,CAAC,EAAa;AACnC,kBAAkB,mBAAO,CAAC,EAAO;AACjC,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C,sBAAsB,mBAAO,CAAC,EAAuB;AACrD,oBAAoB,mBAAO,CAAC,GAAoB;AAChD,sBAAsB,mBAAO,CAAC,GAAe;AAC7C,gBAAgB,mBAAO,CAAC,GAAkB;AAC1C,sBAAsB,mBAAO,CAAC,EAAsB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,KAAK;AACzE;AACA;AACA;AACA,4DAA4D,KAAK;AACjE;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,8CAA8C,eAAe,SAAS,iBAAiB;AACvF;AACA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,eAAe,SAAS,iBAAiB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,UAAU;AAClE;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kEAAkE,cAAc;AAChF;AACA;AACA,iDAAiD,sBAAsB,SAAS,wBAAwB;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,kBAAkB,IAAI,gBAAgB;AACpG;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ;AAC7E;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA,iEAAiE,sBAAsB,SAAS,wBAAwB;AACxH;AACA;AACA;AACA;AACA,gEAAgE,wBAAwB,cAAc,UAAU;AAChH;AACA;AACA;AACA,sEAAsE,cAAc;AACpF;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2DAA2D,cAAc;AACzE;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA,+BAA+B,oBAAoB;AACnD;AACA,SAAS;AACT;AACA;AACA;AACA,wC;;;;;;;ACjKa;AACb,8CAA8C,cAAc;AAC5D,cAAc,mBAAO,CAAC,EAAa;AACnC,iBAAiB,mBAAO,CAAC,EAAkB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uC;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,GAAe;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACxCa;AACb,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,GAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA","file":"webamp.bundle.min.js","sourcesContent":["(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 if(typeof exports === 'object')\n\t\texports[\"Webamp\"] = factory();\n\telse\n\t\troot[\"Webamp\"] = factory();\n})(window, function() {\nreturn "," \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 = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 239);\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","'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","/**\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","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}\n\nmodule.exports = _defineProperty;","/*!\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","'use strict';\n\nexports.__esModule = true;\nexports.defaultMemoize = defaultMemoize;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = createStructuredSelector;\nfunction defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = defaultMemoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nvar createSelector = exports.createSelector = createSelectorCreator(defaultMemoize);\n\nfunction createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || 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};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(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};","'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","\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\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 (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst assert = require(\"assert\");\nconst ieee754 = require(\"ieee754\");\n// Possibly call flush()\nconst maybeFlush = (b, o, len, flush) => {\n if (o + len > b.length) {\n if (typeof (flush) !== 'function') {\n throw new Error('Buffer out of space and no valid flush() function found');\n }\n flush(b, o);\n return 0;\n }\n return o;\n};\n// Primitive types\n/**\n * 8-bit unsigned integer\n */\nexports.UINT8 = {\n len: 1,\n get(buf, off) {\n return buf.readUInt8(off);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= 0 && v <= 0xff);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeUInt8(v, no);\n return (no - o) + this.len;\n }\n};\n/**\n * 16-bit unsigned integer, Little Endian byte order\n */\nexports.UINT16_LE = {\n len: 2,\n get(buf, off) {\n return buf.readUInt16LE(off);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= 0 && v <= 0xffff);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeUInt16LE(v, no);\n return (no - o) + this.len;\n }\n};\n/**\n * 16-bit unsigned integer, Big Endian byte order\n */\nexports.UINT16_BE = {\n len: 2,\n get(buf, off) {\n return buf.readUInt16BE(off);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= 0 && v <= 0xffff);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeUInt16BE(v, no);\n return (no - o) + this.len;\n }\n};\n/**\n * 24-bit unsigned integer, Little Endian byte order\n */\nexports.UINT24_LE = {\n len: 3,\n get(buf, off) {\n return buf.readUIntLE(off, 3);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= 0 && v <= 0xffffff);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeUIntLE(v, no, 3);\n return (no - o) + this.len;\n }\n};\n/**\n * 24-bit unsigned integer, Big Endian byte order\n */\nexports.UINT24_BE = {\n len: 3,\n get(buf, off) {\n return buf.readUIntBE(off, 3);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= 0 && v <= 0xffffff);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeUIntBE(v, no, 3);\n return (no - o) + this.len;\n }\n};\n/**\n * 32-bit unsigned integer, Little Endian byte order\n */\nexports.UINT32_LE = {\n len: 4,\n get(buf, off) {\n return buf.readUInt32LE(off);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= 0 && v <= 0xffffffff);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeUInt32LE(v, no);\n return (no - o) + this.len;\n }\n};\n/**\n * 32-bit unsigned integer, Big Endian byte order\n */\nexports.UINT32_BE = {\n len: 4,\n get(buf, off) {\n return buf.readUInt32BE(off);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= 0 && v <= 0xffffffff);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeUInt32BE(v, no);\n return (no - o) + this.len;\n }\n};\n/**\n * 8-bit signed integer\n */\nexports.INT8 = {\n len: 1,\n get(buf, off) {\n return buf.readInt8(off);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= -128 && v <= 127);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeInt8(v, no);\n return (no - o) + this.len;\n }\n};\n/**\n * 16-bit signed integer, Big Endian byte order\n */\nexports.INT16_BE = {\n len: 2,\n get(buf, off) {\n return buf.readInt16BE(off);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= -32768 && v <= 32767);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeInt16BE(v, no);\n return (no - o) + this.len;\n }\n};\n/**\n * 16-bit signed integer, Little Endian byte order\n */\nexports.INT16_LE = {\n len: 2,\n get(buf, off) {\n return buf.readInt16LE(off);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= -32768 && v <= 32767);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeInt16LE(v, no);\n return (no - o) + this.len;\n }\n};\n/**\n * 24-bit signed integer, Little Endian byte order\n */\nexports.INT24_LE = {\n len: 3,\n get(buf, off) {\n return buf.readIntLE(off, 3);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= -0x800000 && v <= 0x7fffff);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeIntLE(v, no, 3);\n return (no - o) + this.len;\n }\n};\n/**\n * 24-bit signed integer, Big Endian byte order\n */\nexports.INT24_BE = {\n len: 3,\n get(buf, off) {\n return buf.readIntBE(off, 3);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= -0x800000 && v <= 0x7fffff);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeIntBE(v, no, 3);\n return (no - o) + this.len;\n }\n};\n/**\n * 32-bit signed integer, Big Endian byte order\n */\nexports.INT32_BE = {\n len: 4,\n get(buf, off) {\n return buf.readInt32BE(off);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= -2147483648 && v <= 2147483647);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeInt32BE(v, no);\n return (no - o) + this.len;\n }\n};\n/**\n * 32-bit signed integer, Big Endian byte order\n */\nexports.INT32_LE = {\n len: 4,\n get(buf, off) {\n return buf.readInt32LE(off);\n },\n put(b, o, v, flush) {\n assert.equal(typeof o, 'number');\n assert.equal(typeof v, 'number');\n assert.ok(v >= -2147483648 && v <= 2147483647);\n assert.ok(o >= 0);\n assert.ok(this.len <= b.length);\n const no = maybeFlush(b, o, this.len, flush);\n b.writeInt32LE(v, no);\n return (no - o) + this.len;\n }\n};\n/**\n * 64-bit unsigned integer, Little Endian byte order\n */\nexports.UINT64_LE = {\n len: 8,\n get(buf, off) {\n return readUIntLE(buf, off, this.len);\n },\n put(b, o, v) {\n return writeUIntLE(b, v, o, this.len);\n }\n};\n/**\n * 64-bit signed integer, Little Endian byte order\n */\nexports.INT64_LE = {\n len: 8,\n get(buf, off) {\n return readIntLE(buf, off, this.len);\n },\n put(b, off, v) {\n return writeIntLE(b, v, off, this.len);\n }\n};\n/**\n * 64-bit unsigned integer, Big Endian byte order\n */\nexports.UINT64_BE = {\n len: 8,\n get(b, off) {\n return readUIntBE(b, off, this.len);\n },\n put(b, o, v) {\n return writeUIntBE(b, v, o, this.len);\n }\n};\n/**\n * 64-bit signed integer, Big Endian byte order\n */\nexports.INT64_BE = {\n len: 8,\n get(b, off) {\n return readIntBE(b, off, this.len);\n },\n put(b, off, v) {\n return writeIntBE(b, v, off, this.len);\n }\n};\n/**\n * IEEE 754 16-bit (half precision) float, big endian\n */\nexports.Float16_BE = {\n len: 2,\n get(b, off) {\n return ieee754.read(b, off, false, 10, this.len);\n },\n put(b, off, v) {\n return ieee754.write(b, v, off, false, 10, this.len);\n }\n};\n/**\n * IEEE 754 16-bit (half precision) float, little endian\n */\nexports.Float16_LE = {\n len: 2,\n get(b, off) {\n return ieee754.read(b, off, true, 10, this.len);\n },\n put(b, off, v) {\n return ieee754.write(b, v, off, true, 10, this.len);\n }\n};\n/**\n * IEEE 754 32-bit (single precision) float, big endian\n */\nexports.Float32_BE = {\n len: 4,\n get(b, off) {\n return b.readFloatBE(off);\n },\n put(b, off, v) {\n return b.writeFloatBE(v, off);\n }\n};\n/**\n * IEEE 754 32-bit (single precision) float, little endian\n */\nexports.Float32_LE = {\n len: 4,\n get(b, off) {\n return b.readFloatLE(off);\n },\n put(b, off, v) {\n return b.writeFloatLE(v, off);\n }\n};\n/**\n * IEEE 754 64-bit (double precision) float, big endian\n */\nexports.Float64_BE = {\n len: 8,\n get(b, off) {\n return b.readDoubleBE(off);\n },\n put(b, off, v) {\n return b.writeDoubleBE(v, off);\n }\n};\n/**\n * IEEE 754 64-bit (double precision) float, little endian\n */\nexports.Float64_LE = {\n len: 8,\n get(b, off) {\n return b.readDoubleLE(off);\n },\n put(b, off, v) {\n return b.writeDoubleLE(v, off);\n }\n};\n/**\n * IEEE 754 80-bit (extended precision) float, big endian\n */\nexports.Float80_BE = {\n len: 10,\n get(b, off) {\n return ieee754.read(b, off, false, 63, this.len);\n },\n put(b, off, v) {\n return ieee754.write(b, v, off, false, 63, this.len);\n }\n};\n/**\n * IEEE 754 80-bit (extended precision) float, little endian\n */\nexports.Float80_LE = {\n len: 10,\n get(b, off) {\n return ieee754.read(b, off, true, 63, this.len);\n },\n put(b, off, v) {\n return ieee754.write(b, v, off, true, 63, this.len);\n }\n};\n/**\n * Ignore a given number of bytes\n */\nclass IgnoreType {\n /**\n * @param len number of bytes to ignore\n */\n constructor(len) {\n this.len = len;\n }\n // ToDo: don't read, but skip data\n get(buf, off) {\n }\n}\nexports.IgnoreType = IgnoreType;\nclass BufferType {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n return buf.slice(off, off + this.len);\n }\n}\nexports.BufferType = BufferType;\n/**\n * Consume a fixed number of bytes from the stream and return a string with a specified encoding.\n */\nclass StringType {\n constructor(len, encoding) {\n this.len = len;\n this.encoding = encoding;\n }\n get(buf, off) {\n return buf.toString(this.encoding, off, off + this.len);\n }\n}\nexports.StringType = StringType;\n/**\n * ANSI Latin 1 String\n * Using windows-1252 / ISO 8859-1 decoding\n */\nclass AnsiStringType {\n constructor(len) {\n this.len = len;\n }\n static decode(buffer, off, until) {\n let str = '';\n for (let i = off; i < until; ++i) {\n str += AnsiStringType.codePointToString(AnsiStringType.singleByteDecoder(buffer[i]));\n }\n return str;\n }\n static inRange(a, min, max) {\n return min <= a && a <= max;\n }\n static codePointToString(cp) {\n if (cp <= 0xFFFF) {\n return String.fromCharCode(cp);\n }\n else {\n cp -= 0x10000;\n return String.fromCharCode((cp >> 10) + 0xD800, (cp & 0x3FF) + 0xDC00);\n }\n }\n static singleByteDecoder(bite) {\n if (AnsiStringType.inRange(bite, 0x00, 0x7F)) {\n return bite;\n }\n const codePoint = AnsiStringType.windows1252[bite - 0x80];\n if (codePoint === null) {\n throw Error('invaliding encoding');\n }\n return codePoint;\n }\n get(buf, off = 0) {\n return AnsiStringType.decode(buf, off, off + this.len);\n }\n}\nexports.AnsiStringType = AnsiStringType;\nAnsiStringType.windows1252 = [8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352,\n 8249, 338, 141, 381, 143, 144, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732,\n 8482, 353, 8250, 339, 157, 382, 376, 160, 161, 162, 163, 164, 165, 166, 167, 168,\n 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,\n 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,\n 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,\n 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,\n 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,\n 248, 249, 250, 251, 252, 253, 254, 255];\n/**\n * Best effort approach to read up to 64 bit unsigned integer, little endian.\n * Note that JavasScript is limited to 2^53 - 1 bit.\n */\nfunction readUIntLE(buf, offset, byteLength) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n let val = buf[offset];\n let mul = 1;\n let i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += buf[offset + i] * mul;\n }\n return val;\n}\n/**\n * Best effort approach to write up to 64 bit unsigned integer, little endian.\n * Note that JavasScript is limited to 2^53 - 1 bit.\n */\nfunction writeUIntLE(buf, value, offset, byteLength) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n let mul = 1;\n let i = 0;\n buf[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n buf[offset + i] = (value / mul) & 0xFF;\n }\n return offset + byteLength;\n}\n/**\n * Best effort approach to read 64 but signed integer, little endian.\n * Note that JavasScript is limited to 2^53 - 1 bit.\n */\nfunction readIntLE(buf, offset, byteLength) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n let val = buf[offset];\n let mul = 1;\n let i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += buf[offset + i] * mul;\n }\n mul *= 0x80;\n if (val >= mul)\n val -= Math.pow(2, 8 * byteLength);\n return val;\n}\n/**\n * Best effort approach to write 64 but signed integer, little endian.\n * Note that JavasScript is limited to 2^53 - 1 bit.\n */\nfunction writeIntLE(buf, value, offset, byteLength) {\n value = +value;\n offset = offset >>> 0;\n let i = 0;\n let mul = 1;\n let sub = 0;\n buf[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && buf[offset + i - 1] !== 0) {\n sub = 1;\n }\n buf[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n return offset + byteLength;\n}\nexports.writeIntLE = writeIntLE;\n/**\n * Best effort approach to read up to 64 bit unsigned integer, big endian.\n * Note that JavasScript is limited to 2^53 - 1 bit.\n */\nfunction readUIntBE(buf, offset, byteLength) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n let val = buf[offset + --byteLength];\n let mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += buf[offset + --byteLength] * mul;\n }\n return val;\n}\nexports.readUIntBE = readUIntBE;\n/**\n * Best effort approach to write up to 64 bit unsigned integer, big endian.\n * Note that JavasScript is limited to 2^53 - 1 bit.\n */\nfunction writeUIntBE(buf, value, offset, byteLength) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n let i = byteLength - 1;\n let mul = 1;\n buf[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n buf[offset + i] = (value / mul) & 0xFF;\n }\n return offset + byteLength;\n}\nexports.writeUIntBE = writeUIntBE;\n/**\n * Best effort approach to read 64 but signed integer, big endian.\n * Note that JavasScript is limited to 2^53 - 1 bit.\n */\nfunction readIntBE(buf, offset, byteLength) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n let i = byteLength;\n let mul = 1;\n let val = buf[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += buf[offset + --i] * mul;\n }\n mul *= 0x80;\n if (val >= mul)\n val -= Math.pow(2, 8 * byteLength);\n return val;\n}\nexports.readIntBE = readIntBE;\n/**\n * Best effort approach to write 64 but signed integer, big endian.\n * Note that JavasScript is limited to 2^53 - 1 bit.\n */\nfunction writeIntBE(buf, value, offset, byteLength) {\n value = +value;\n offset = offset >>> 0;\n let i = byteLength - 1;\n let mul = 1;\n let sub = 0;\n buf[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && buf[offset + i + 1] !== 0) {\n sub = 1;\n }\n buf[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n return offset + byteLength;\n}\nexports.writeIntBE = writeIntBE;\n//# sourceMappingURL=index.js.map","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose\");\n\nfunction _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}\n\nmodule.exports = _objectWithoutProperties;","var core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\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.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\nfunction log(...args) {\n\t// This hackery is required for IE8/9, where\n\t// the `console.log` function doesn't have 'apply'\n\treturn typeof console === 'object' &&\n\t\tconsole.log &&\n\t\tconsole.log(...args);\n}\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","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","/**\n * Copyright (c) 2014-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 * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target, parent) {\n if (parent){\n return parent.querySelector(target);\n }\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target, parent) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target, parent);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertAt.before, target);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\n\tif(options.attrs.nonce === undefined) {\n\t\tvar nonce = getNonce();\n\t\tif (nonce) {\n\t\t\toptions.attrs.nonce = nonce;\n\t\t}\n\t}\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\tif(options.attrs.type === undefined) {\n\t\toptions.attrs.type = \"text/css\";\n\t}\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction getNonce() {\n\tif (typeof __webpack_nonce__ === 'undefined') {\n\t\treturn null;\n\t}\n\n\treturn __webpack_nonce__;\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = typeof options.transform === 'function'\n\t\t ? options.transform(obj.css) \n\t\t : options.transform.default(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n","import $$observable from 'symbol-observable';\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error('It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error('You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected the listener to be a function.');\n }\n\n if (isDispatching) {\n throw new Error('You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error('You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api-reference/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionDescription = actionType && \"action \\\"\" + String(actionType) + \"\\\"\" || 'an action';\n return \"Given \" + actionDescription + \", reducer \\\"\" + key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\";\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(\"Reducer \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle \" + ActionTypes.INIT + \" or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(_key, action);\n throw new Error(errorMessage);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(\"bindActionCreators expected an object or a function, instead received \" + (actionCreators === null ? 'null' : typeof actionCreators) + \". \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\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 keys.push.apply(keys, Object.getOwnPropertySymbols(object));\n }\n\n if (enumerableOnly) keys = keys.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\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(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(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore };\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar key = {\n fullscreenEnabled: 0,\n fullscreenElement: 1,\n requestFullscreen: 2,\n exitFullscreen: 3,\n fullscreenchange: 4,\n fullscreenerror: 5\n};\n\nvar webkit = ['webkitFullscreenEnabled', 'webkitFullscreenElement', 'webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitfullscreenchange', 'webkitfullscreenerror'];\n\nvar moz = ['mozFullScreenEnabled', 'mozFullScreenElement', 'mozRequestFullScreen', 'mozCancelFullScreen', 'mozfullscreenchange', 'mozfullscreenerror'];\n\nvar ms = ['msFullscreenEnabled', 'msFullscreenElement', 'msRequestFullscreen', 'msExitFullscreen', 'MSFullscreenChange', 'MSFullscreenError'];\n\n// so it doesn't throw if no window or document\nvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\n\nvar vendor = 'fullscreenEnabled' in document && Object.keys(key) || webkit[0] in document && webkit || moz[0] in document && moz || ms[0] in document && ms || [];\n\nexports.default = {\n requestFullscreen: function requestFullscreen(element) {\n return element[vendor[key.requestFullscreen]]();\n },\n requestFullscreenFunction: function requestFullscreenFunction(element) {\n return element[vendor[key.requestFullscreen]];\n },\n get exitFullscreen() {\n return document[vendor[key.exitFullscreen]].bind(document);\n },\n addEventListener: function addEventListener(type, handler, options) {\n return document.addEventListener(vendor[key[type]], handler, options);\n },\n removeEventListener: function removeEventListener(type, handler, options) {\n return document.removeEventListener(vendor[key[type]], handler, options);\n },\n get fullscreenEnabled() {\n return Boolean(document[vendor[key.fullscreenEnabled]]);\n },\n set fullscreenEnabled(val) {},\n get fullscreenElement() {\n return document[vendor[key.fullscreenElement]];\n },\n set fullscreenElement(val) {},\n get onfullscreenchange() {\n return document[('on' + vendor[key.fullscreenchange]).toLowerCase()];\n },\n set onfullscreenchange(handler) {\n return document[('on' + vendor[key.fullscreenchange]).toLowerCase()] = handler;\n },\n get onfullscreenerror() {\n return document[('on' + vendor[key.fullscreenerror]).toLowerCase()];\n },\n set onfullscreenerror(handler) {\n return document[('on' + vendor[key.fullscreenerror]).toLowerCase()] = handler;\n }\n};","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst assert = require(\"assert\");\nconst Windows1292Decoder_1 = require(\"./Windows1292Decoder\");\nclass Util {\n /**\n *\n * @param buffer\n * @param start\n * @param end\n * @param encoding // ToDo: ts.enum\n * @return {number}\n */\n static findZero(buffer, start, end, encoding) {\n let i = start;\n if (encoding === 'utf16') {\n while (buffer[i] !== 0 || buffer[i + 1] !== 0) {\n if (i >= end)\n return end;\n i += 2;\n }\n return i;\n }\n else {\n while (buffer[i] !== 0) {\n if (i >= end)\n return end;\n i++;\n }\n return i;\n }\n }\n static trimRightNull(x) {\n const pos0 = x.indexOf('\\0');\n return pos0 === -1 ? x : x.substr(0, pos0);\n }\n static swapBytes(buffer) {\n const l = buffer.length;\n assert.ok((l & 1) === 0, 'Buffer length must be even');\n for (let i = 0; i < l; i += 2) {\n const a = buffer[i];\n buffer[i] = buffer[i + 1];\n buffer[i + 1] = a;\n }\n return buffer;\n }\n static readUTF16String(buffer) {\n let offset = 0;\n if (buffer[0] === 0xFE && buffer[1] === 0xFF) { // big endian\n buffer = Util.swapBytes(buffer);\n offset = 2;\n }\n else if (buffer[0] === 0xFF && buffer[1] === 0xFE) { // little endian\n offset = 2;\n }\n return buffer.toString('ucs2', offset);\n }\n /**\n *\n * @param buffer Decoder input data\n * @param encoding 'utf16le' | 'utf16' | 'utf8' | 'iso-8859-1'\n * @return {string}\n */\n static decodeString(buffer, encoding) {\n // annoying workaround for a double BOM issue\n // https://github.com/leetreveil/musicmetadata/issues/84\n if (buffer[0] === 0xFF && buffer[1] === 0xFE && buffer[2] === 0xFE && buffer[3] === 0xFF) {\n buffer = buffer.slice(2);\n }\n if (encoding === 'utf16le' || encoding === 'utf16') {\n return Util.readUTF16String(buffer);\n }\n else if (encoding === 'utf8') {\n return buffer.toString('utf8');\n }\n else if (encoding === 'iso-8859-1') {\n return Windows1292Decoder_1.Windows1292Decoder.decode(buffer);\n }\n throw Error(encoding + ' encoding is not supported!');\n }\n static stripNulls(str) {\n str = str.replace(/^\\x00+/g, '');\n str = str.replace(/\\x00+$/g, '');\n return str;\n }\n /**\n * Read bit-aligned number start from buffer\n * Total offset in bits = byteOffset * 8 + bitOffset\n * @param buf Byte buffer\n * @param byteOffset Starting offset in bytes\n * @param bitOffset Starting offset in bits: 0 = lsb\n * @param len Length of number in bits\n * @return {number} decoded bit aligned number\n */\n static getBitAllignedNumber(buf, byteOffset, bitOffset, len) {\n const byteOff = byteOffset + ~~(bitOffset / 8);\n const bitOff = bitOffset % 8;\n let value = buf[byteOff];\n value &= 0xff >> bitOff;\n const bitsRead = 8 - bitOff;\n const bitsLeft = len - bitsRead;\n if (bitsLeft < 0) {\n value >>= (8 - bitOff - len);\n }\n else if (bitsLeft > 0) {\n value <<= bitsLeft;\n value |= Util.getBitAllignedNumber(buf, byteOffset, bitOffset + bitsRead, bitsLeft);\n }\n return value;\n }\n /**\n * Read bit-aligned number start from buffer\n * Total offset in bits = byteOffset * 8 + bitOffset\n * @param buf Byte buffer\n * @param byteOffset Starting offset in bytes\n * @param bitOffset Starting offset in bits: 0 = most significant bit, 7 is least significant bit\n * @return {number} decoded bit aligned number\n */\n static isBitSet(buf, byteOffset, bitOffset) {\n return Util.getBitAllignedNumber(buf, byteOffset, bitOffset, 1) === 1;\n }\n static a2hex(str) {\n const arr = [];\n for (let i = 0, l = str.length; i < l; i++) {\n const hex = Number(str.charCodeAt(i)).toString(16);\n arr.push(hex.length === 1 ? '0' + hex : hex);\n }\n return arr.join(' ');\n }\n}\nUtil.strtokBITSET = {\n get: (buf, off, bit) => {\n return (buf[off] & (1 << bit)) !== 0;\n },\n len: 1\n};\nexports.default = Util;\n//# sourceMappingURL=Util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Util_1 = require(\"./Util\");\nconst validFourCC = /^[\\w-©][\\w-\\x000-3]/;\n/**\n * Token for read FourCC\n * Ref: https://en.wikipedia.org/wiki/FourCC\n */\nexports.FourCcToken = {\n len: 4,\n get: (buf, off) => {\n const id = buf.toString(\"binary\", off, off + exports.FourCcToken.len);\n if (!id.match(validFourCC)) {\n throw new Error(`FourCC contains invalid characters: ${Util_1.default.a2hex(id)}`);\n }\n return id;\n },\n put: (buffer, offset, id) => {\n const str = Buffer.from(id, 'binary');\n if (str.length !== 4)\n throw new Error(\"Invalid length\");\n return str.copy(buffer, offset);\n }\n};\n//# sourceMappingURL=FourCC.js.map","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};","/*\r\n * Copyright (c) 2017-2018 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview A function to swap endianness in byte buffers.\r\n * @see https://github.com/rochars/endianness\r\n */\r\n\r\n/** @module endianness */\r\n\r\n/**\r\n * Swap the byte ordering in a buffer. The buffer is modified in place.\r\n * @param {!Array|!Uint8Array} bytes The bytes.\r\n * @param {number} offset The byte offset.\r\n * @param {number=} start The start index. Assumes 0.\r\n * @param {number=} end The end index. Assumes the buffer length.\r\n * @throws {Error} If the buffer length is not valid.\r\n */\r\nexport default function endianness(bytes, offset, start=0, end=bytes.length) {\r\n if (end % offset) {\r\n throw new Error(\"Bad buffer length.\");\r\n }\r\n for (let index = start; index < end; index += offset) {\r\n swap(bytes, offset, index);\r\n }\r\n}\r\n\r\n/**\r\n * Swap the byte order of a value in a buffer. The buffer is modified in place.\r\n * @param {!Array|!Uint8Array} bytes The bytes.\r\n * @param {number} offset The byte offset.\r\n * @param {number} index The start index.\r\n * @private\r\n */\r\nfunction swap(bytes, offset, index) {\r\n offset--;\r\n for(let x = 0; x < offset; x++) {\r\n /** @type {*} */\r\n let theByte = bytes[index + x];\r\n bytes[index + x] = bytes[index + offset];\r\n bytes[index + offset] = theByte;\r\n offset--;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2018 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview Functions to serialize and deserialize UTF-8 strings.\r\n * @see https://github.com/rochars/utf8-buffer\r\n * @see https://encoding.spec.whatwg.org/#the-encoding\r\n * @see https://encoding.spec.whatwg.org/#utf-8-encoder\r\n */\r\n\r\n/** @module utf8-buffer */\r\n\r\n/**\r\n * Read a string of UTF-8 characters from a byte buffer.\r\n * Invalid characters are replaced with 'REPLACEMENT CHARACTER' (U+FFFD).\r\n * @see https://encoding.spec.whatwg.org/#the-encoding\r\n * @see https://stackoverflow.com/a/34926911\r\n * @param {!Uint8Array|!Array<number>} buffer A byte buffer.\r\n * @param {number=} start The buffer index to start reading.\r\n * @param {?number=} end The buffer index to stop reading.\r\n * Assumes the buffer length if undefined.\r\n * @return {string}\r\n */\r\nexport function unpack(buffer, start=0, end=buffer.length) {\r\n /** @type {string} */\r\n let str = '';\r\n for(let index = start; index < end;) {\r\n /** @type {number} */\r\n let lowerBoundary = 0x80;\r\n /** @type {number} */\r\n let upperBoundary = 0xBF;\r\n /** @type {boolean} */\r\n let replace = false;\r\n /** @type {number} */\r\n let charCode = buffer[index++];\r\n if (charCode >= 0x00 && charCode <= 0x7F) {\r\n str += String.fromCharCode(charCode);\r\n } else {\r\n /** @type {number} */\r\n let count = 0;\r\n if (charCode >= 0xC2 && charCode <= 0xDF) {\r\n count = 1;\r\n } else if (charCode >= 0xE0 && charCode <= 0xEF ) {\r\n count = 2;\r\n if (buffer[index] === 0xE0) {\r\n lowerBoundary = 0xA0;\r\n }\r\n if (buffer[index] === 0xED) {\r\n upperBoundary = 0x9F;\r\n }\r\n } else if (charCode >= 0xF0 && charCode <= 0xF4 ) {\r\n count = 3;\r\n if (buffer[index] === 0xF0) {\r\n lowerBoundary = 0x90;\r\n }\r\n if (buffer[index] === 0xF4) {\r\n upperBoundary = 0x8F;\r\n }\r\n } else {\r\n replace = true;\r\n }\r\n charCode = charCode & (1 << (8 - count - 1)) - 1;\r\n for (let i = 0; i < count; i++) {\r\n if (buffer[index] < lowerBoundary || buffer[index] > upperBoundary) {\r\n replace = true;\r\n }\r\n charCode = (charCode << 6) | (buffer[index] & 0x3f);\r\n index++;\r\n }\r\n if (replace) {\r\n str += String.fromCharCode(0xFFFD);\r\n } \r\n else if (charCode <= 0xffff) {\r\n str += String.fromCharCode(charCode);\r\n } else {\r\n charCode -= 0x10000;\r\n str += String.fromCharCode(\r\n ((charCode >> 10) & 0x3ff) + 0xd800,\r\n (charCode & 0x3ff) + 0xdc00);\r\n }\r\n }\r\n }\r\n return str;\r\n}\r\n\r\n/**\r\n * Write a string of UTF-8 characters to a byte buffer.\r\n * @see https://encoding.spec.whatwg.org/#utf-8-encoder\r\n * @param {string} str The string to pack.\r\n * @param {!Uint8Array|!Array<number>} buffer The buffer to pack the string to.\r\n * @param {number=} index The buffer index to start writing.\r\n * @return {number} The next index to write in the buffer.\r\n */\r\nexport function pack(str, buffer, index=0) {\r\n for (let i = 0, len = str.length; i < len; i++) {\r\n /** @type {number} */\r\n let codePoint = str.codePointAt(i);\r\n if (codePoint < 128) {\r\n buffer[index] = codePoint;\r\n index++;\r\n } else {\r\n /** @type {number} */\r\n let count = 0;\r\n /** @type {number} */\r\n let offset = 0;\r\n if (codePoint <= 0x07FF) {\r\n count = 1;\r\n offset = 0xC0;\r\n } else if(codePoint <= 0xFFFF) {\r\n count = 2;\r\n offset = 0xE0;\r\n } else if(codePoint <= 0x10FFFF) {\r\n count = 3;\r\n offset = 0xF0;\r\n i++;\r\n }\r\n buffer[index] = (codePoint >> (6 * count)) + offset;\r\n index++;\r\n while (count > 0) {\r\n buffer[index] = 0x80 | (codePoint >> (6 * (count - 1)) & 0x3F);\r\n index++;\r\n count--;\r\n }\r\n }\r\n }\r\n return index;\r\n}\r\n","/*\r\n * Copyright (c) 2017-2018 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview Encode and decode int numbers to and from byte buffers.\r\n * @see https://github.com/rochars/byte-data\r\n */\r\n\r\n/**\r\n * A class to write and read integer numbers to and from byte buffers.\r\n */\r\nexport class IntParser {\r\n \r\n /**\r\n * @param {number} bits The number of bits used by the integer.\r\n * @param {boolean} [signed=false] True for signed, false otherwise.\r\n * @param {boolean} [clamp=false] True to clamp on overflow.\r\n */\r\n constructor(bits, signed=false, clamp=false) {\r\n /**\r\n * The number of bits used by one number.\r\n * @type {number}\r\n */\r\n this.bits = bits;\r\n /**\r\n * The number of bytes used by one number.\r\n * @type {number}\r\n */\r\n this.bytes = bits < 8 ? 1 : Math.ceil(bits / 8);\r\n /**\r\n * @type {number}\r\n * @protected\r\n */\r\n this.max = Math.pow(2, bits) - 1;\r\n /**\r\n * @type {number}\r\n * @protected\r\n */\r\n this.min = 0;\r\n /** @type {number} */\r\n let r = 8 - ((((bits - 1) | 7) + 1) - bits);\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.lastByteMask_ = Math.pow(2, r > 0 ? r : 8) - 1;\r\n /**\r\n * @type {Function}\r\n * @protected\r\n */\r\n this.unpack = this.unpackUnsigned_;\r\n if (signed) {\r\n this.max = Math.pow(2, bits) / 2 - 1;\r\n this.min = -this.max - 1;\r\n this.unpack = this.unpackSigned_;\r\n }\r\n if (clamp) {\r\n this.overflow_ = this.overflowClamp_;\r\n }\r\n }\r\n\r\n /**\r\n * Write one unsigned integer to a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer An array of bytes.\r\n * @param {number} num The number. Overflows are truncated.\r\n * @param {number} [index=0] The index being written in the byte buffer.\r\n * @return {number} The next index to write on the byte buffer.\r\n */\r\n pack(buffer, num, index=0) {\r\n if (num !== num || num.constructor != Number) {\r\n throw new TypeError();\r\n }\r\n num = this.overflow_(num);\r\n buffer[index] = (num < 0 ? num + Math.pow(2, this.bits) : num) & 255;\r\n index++;\r\n for (let i = 2, len = this.bytes; i < len; i++) {\r\n buffer[index] = Math.floor(num / Math.pow(2, ((i - 1) * 8))) & 255;\r\n index++;\r\n }\r\n if (this.bits > 8) {\r\n buffer[index] = Math.floor(\r\n num / Math.pow(2, ((this.bytes - 1) * 8))) & this.lastByteMask_;\r\n index++;\r\n }\r\n return index;\r\n }\r\n\r\n /**\r\n * Read one unsigned integer from a byte buffer.\r\n * Does not check for overflows.\r\n * @param {!(Uint8Array|Array<number>)} buffer An array of bytes.\r\n * @param {number} [index=0] The index to read.\r\n * @return {number}\r\n */\r\n unpack_(buffer, index=0) {\r\n /** @type {number} */\r\n let num = 0;\r\n for(let x = 0; x < this.bytes; x++) {\r\n num += buffer[index + x] * Math.pow(256, x);\r\n }\r\n return num;\r\n }\r\n\r\n unpackUnsigned_(buffer, index=0) {\r\n return this.overflow_(this.unpack_(buffer, index));\r\n }\r\n\r\n /**\r\n * Read one two's complement signed integer from a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer An array of bytes.\r\n * @param {number} [index=0] The index to read.\r\n * @return {number}\r\n */\r\n unpackSigned_(buffer, index=0) {\r\n return this.overflow_(this.sign_(this.unpack_(buffer, index)));\r\n }\r\n\r\n /**\r\n * Truncate values in case of overflow.\r\n * @param {number} num The number.\r\n * @private\r\n */\r\n overflow_(num) {\r\n if (num > this.max || num < this.min) {\r\n throw new RangeError();\r\n }\r\n return num;\r\n }\r\n\r\n /**\r\n * Truncate values in case of overflow.\r\n * @param {number} num The number.\r\n * @private\r\n */\r\n overflowClamp_(num) {\r\n if (num > this.max) {\r\n return this.max;\r\n } else if (num < this.min) {\r\n return this.min;\r\n }\r\n return num;\r\n }\r\n\r\n /**\r\n * Sign a number.\r\n * @param {number} num The number.\r\n * @return {number}\r\n * @private\r\n */\r\n sign_(num) {\r\n if (num > this.max) {\r\n num -= (this.max * 2) + 2;\r\n }\r\n return num;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2018-2019 Rafael da Silva Rocha.\r\n * Copyright (c) 2013 DeNA Co., Ltd.\r\n * Copyright (c) 2010, Linden Research, Inc\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview Encode and decode IEEE 754 floating point numbers.\r\n * @see https://github.com/rochars/ieee754-buffer\r\n * @see https://bitbucket.org/lindenlab/llsd/raw/7d2646cd3f9b4c806e73aebc4b32bd81e4047fdc/js/typedarray.js\r\n * @see https://github.com/kazuho/ieee754.js/blob/master/ieee754.js\r\n */\r\n\r\n/** \r\n * @module ieee754-buffer\r\n */\r\n\r\n/**\r\n * A class to encode and decode IEEE 754 floating-point numbers.\r\n */\r\nexport class IEEE754Buffer {\r\n\r\n /**\r\n * Pack a IEEE 754 floating point number.\r\n * @param {number} ebits The exponent bits.\r\n * @param {number} fbits The fraction bits.\r\n */\r\n constructor(ebits, fbits) {\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.ebits = ebits;\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.fbits = fbits;\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.bias = (1 << (ebits - 1)) - 1;\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.numBytes = Math.ceil((ebits + fbits) / 8);\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.biasP2 = Math.pow(2, this.bias + 1);\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.ebitsFbits = (ebits + fbits);\r\n /**\r\n * @type {number}\r\n * @private\r\n */\r\n this.fbias = Math.pow(2, -(8 * this.numBytes - 1 - ebits));\r\n }\r\n\r\n /**\r\n * Pack a IEEE 754 floating point number.\r\n * @param {!Uint8Array|!Array<number>} buffer The buffer.\r\n * @param {number} num The number.\r\n * @param {number} index The index to write on the buffer.\r\n * @return {number} The next index to write on the buffer.\r\n * @throws {TypeError} If input is not a number.\r\n */\r\n pack(buffer, num, index) {\r\n // Only numbers can be packed\r\n if (typeof num != 'number') {\r\n throw new TypeError();\r\n }\r\n // Round overflows\r\n if (Math.abs(num) > this.biasP2 - (this.ebitsFbits * 2)) {\r\n num = num < 0 ? -Infinity : Infinity;\r\n }\r\n /**\r\n * sign, need this to handle negative zero\r\n * @see http://cwestblog.com/2014/02/25/javascript-testing-for-negative-zero/\r\n * @type {number}\r\n */\r\n let sign = (((num = +num) || 1 / num) < 0) ? 1 : num < 0 ? 1 : 0;\r\n num = Math.abs(num);\r\n /** @type {number} */\r\n let exp = Math.min(Math.floor(Math.log(num) / Math.LN2), 1023);\r\n /** @type {number} */\r\n let fraction = roundToEven(num / Math.pow(2, exp) * Math.pow(2, this.fbits));\r\n // NaN\r\n if (num !== num) {\r\n fraction = Math.pow(2, this.fbits - 1);\r\n exp = (1 << this.ebits) - 1;\r\n // Number\r\n } else if (num !== 0) {\r\n if (num >= Math.pow(2, 1 - this.bias)) {\r\n if (fraction / Math.pow(2, this.fbits) >= 2) {\r\n exp = exp + 1;\r\n fraction = 1;\r\n }\r\n // Overflow\r\n if (exp > this.bias) {\r\n exp = (1 << this.ebits) - 1;\r\n fraction = 0;\r\n } else {\r\n exp = exp + this.bias;\r\n fraction = roundToEven(fraction) - Math.pow(2, this.fbits);\r\n }\r\n } else {\r\n fraction = roundToEven(num / Math.pow(2, 1 - this.bias - this.fbits));\r\n exp = 0;\r\n } \r\n }\r\n return this.packFloatBits_(buffer, index, sign, exp, fraction);\r\n }\r\n\r\n /**\r\n * Unpack a IEEE 754 floating point number.\r\n * Derived from IEEE754 by DeNA Co., Ltd., MIT License. \r\n * Adapted to handle NaN. Should port the solution to the original repo.\r\n * @param {!Uint8Array|!Array<number>} buffer The buffer.\r\n * @param {number} index The index to read from the buffer.\r\n * @return {number} The floating point number.\r\n */\r\n unpack(buffer, index) {\r\n /** @type {number} */\r\n let eMax = (1 << this.ebits) - 1;\r\n /** @type {number} */\r\n let significand;\r\n /** @type {string} */\r\n let leftBits = \"\";\r\n for (let i = this.numBytes - 1; i >= 0 ; i--) {\r\n /** @type {string} */\r\n let t = buffer[i + index].toString(2);\r\n leftBits += \"00000000\".substring(t.length) + t;\r\n }\r\n /** @type {number} */\r\n let sign = leftBits.charAt(0) == \"1\" ? -1 : 1;\r\n leftBits = leftBits.substring(1);\r\n /** @type {number} */\r\n let exponent = parseInt(leftBits.substring(0, this.ebits), 2);\r\n leftBits = leftBits.substring(this.ebits);\r\n if (exponent == eMax) {\r\n if (parseInt(leftBits, 2) !== 0) {\r\n return NaN;\r\n }\r\n return sign * Infinity; \r\n } else if (exponent === 0) {\r\n exponent += 1;\r\n significand = parseInt(leftBits, 2);\r\n } else {\r\n significand = parseInt(\"1\" + leftBits, 2);\r\n }\r\n return sign * significand * this.fbias * Math.pow(2, exponent - this.bias);\r\n }\r\n\r\n /**\r\n * Pack a IEEE754 from its sign, exponent and fraction bits\r\n * and place it in a byte buffer.\r\n * @param {!Uint8Array|!Array<number>} buffer The byte buffer to write to.\r\n * @param {number} index The buffer index to write.\r\n * @param {number} sign The sign.\r\n * @param {number} exp the exponent.\r\n * @param {number} fraction The fraction.\r\n * @return {number}\r\n * @private\r\n */\r\n packFloatBits_(buffer, index, sign, exp, fraction) {\r\n /** @type {!Array<number>} */\r\n let bits = [];\r\n // the sign\r\n bits.push(sign);\r\n // the exponent\r\n for (let i = this.ebits; i > 0; i -= 1) {\r\n bits[i] = (exp % 2 ? 1 : 0);\r\n exp = Math.floor(exp / 2);\r\n }\r\n // the fraction\r\n let len = bits.length;\r\n for (let i = this.fbits; i > 0; i -= 1) {\r\n bits[len + i] = (fraction % 2 ? 1 : 0);\r\n fraction = Math.floor(fraction / 2);\r\n }\r\n // pack as bytes\r\n /** @type {string} */\r\n let str = bits.join('');\r\n /** @type {number} */\r\n let numBytes = this.numBytes + index - 1;\r\n /** @type {number} */\r\n let k = index;\r\n while (numBytes >= index) {\r\n buffer[numBytes] = parseInt(str.substring(0, 8), 2);\r\n str = str.substring(8);\r\n numBytes--;\r\n k++;\r\n }\r\n return k;\r\n }\r\n}\r\n\r\n/**\r\n * Round a number to its nearest even value.\r\n * @param {number} n The number.\r\n * @return {number}\r\n * @private\r\n */\r\nfunction roundToEven(n) {\r\n /** @type {number} */\r\n let w = Math.floor(n);\r\n let f = n - w;\r\n if (f < 0.5) {\r\n return w;\r\n }\r\n if (f > 0.5) {\r\n return w + 1;\r\n }\r\n return w % 2 ? w + 1 : w;\r\n}\r\n","/*\r\n * Copyright (c) 2017-2019 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview JavaScript binary parser for any browser or environment.\r\n * @see https://github.com/rochars/byte-data\r\n */\r\n\r\n/** @module byte-data */\r\n\r\nimport endianness from 'endianness';\r\nimport { pack as packUTF8, unpack as unpackUTF8 } from 'utf8-buffer';\r\nimport { IntParser } from './lib/int-parser';\r\nimport { IEEE754Buffer } from 'ieee754-buffer';\r\n\r\n/**\r\n * Read a string of UTF-8 characters from a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer A byte buffer.\r\n * @param {number} [index=0] The buffer index to start reading.\r\n * @param {number} [end=buffer.length] The index to stop reading, non inclusive.\r\n * @return {string}\r\n */\r\nexport function unpackString(buffer, index=0, end=buffer.length) {\r\n return unpackUTF8(buffer, index, end);\r\n}\r\n\r\n/**\r\n * Write a string of UTF-8 characters as a byte buffer.\r\n * @param {string} str The string to pack.\r\n * @return {!Array<number>} The UTF-8 string bytes.\r\n */\r\nexport function packString(str) {\r\n /** @type {!Array<number>} */\r\n let buffer = [];\r\n packUTF8(str, buffer, 0);\r\n return buffer;\r\n}\r\n\r\n/**\r\n * Write a string of UTF-8 characters to a byte buffer.\r\n * @param {string} str The string to pack.\r\n * @param {!(Uint8Array|Array<number>)} buffer The output buffer.\r\n * @param {number} [index=0] The buffer index to start writing.\r\n * @return {number} The next index to write in the buffer.\r\n */\r\nexport function packStringTo(str, buffer, index=0) {\r\n return packUTF8(str, buffer, index);\r\n}\r\n\r\n// Numbers\r\n/**\r\n * Pack a array of numbers to a byte buffer.\r\n * All other packing functions are interfaces to this function.\r\n * @param {!(Array<number>|TypedArray)} values The values to pack.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {!(Uint8Array|Array<number>)} buffer The buffer to write on.\r\n * @param {number} [index=0] The buffer index to start writing.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {number} The next index to write.\r\n * @throws {Error} If the type definition is not valid.\r\n * @throws {RangeError} On overflow.\r\n * @throws {TypeError} If input is not valid.\r\n */\r\nexport function packArrayTo(values, theType, buffer, index=0, clamp=false) {\r\n theType = theType || {};\r\n /** @type {!Object} */\r\n let packer = getParser_(theType.bits, theType.fp, theType.signed, clamp);\r\n /** @type {number} */\r\n let offset = Math.ceil(theType.bits / 8);\r\n /** @type {number} */\r\n let i = 0;\r\n /** @type {number} */\r\n let start = index;\r\n try {\r\n for (let valuesLen = values.length; i < valuesLen; i++) {\r\n index = packer.pack(buffer, values[i], index);\r\n }\r\n if (theType.be) {\r\n endianness(buffer, offset, start, index);\r\n }\r\n } catch (e) {\r\n throwValueError_(e, values[i], i);\r\n }\r\n return index;\r\n}\r\n\r\n/**\r\n * Unpack a array of numbers from a byte buffer to a array or a typed array.\r\n * All other unpacking functions are interfaces to this function.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {!(TypedArray|Array<number>)} output The output array or typed array.\r\n * @param {number} [start=0] The buffer index to start reading.\r\n * @param {number} [end=buffer.length] The buffer index to stop reading.\r\n * @param {boolean} [safe=false] If set to false, extra bytes in the end of\r\n * the array are ignored and input buffers with insufficient bytes will\r\n * write nothing to the output array. If safe is set to true the function\r\n * will throw a 'Bad buffer length' error.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @throws {Error} If the type definition is not valid\r\n * @throws {RangeError} On overflow\r\n */\r\nexport function unpackArrayTo(\r\n buffer, theType, output, start=0, end=buffer.length,\r\n safe=false, clamp=false) {\r\n theType = theType || {};\r\n /** @type {!Object} */\r\n let packer = getParser_(theType.bits, theType.fp, theType.signed, clamp);\r\n /** @type {number} */\r\n let offset = Math.ceil(theType.bits / 8);\r\n // getUnpackLen_ will either fix the length of the input buffer\r\n // according to the byte offset of the type (on unsafe mode) or\r\n // throw a Error if the input buffer has a bad length (on safe mode)\r\n end = getUnpackLen_(buffer, start, end, offset, safe);\r\n /** @type {number} */\r\n let index = 0;\r\n let j = start;\r\n try {\r\n if (theType.be) {\r\n endianness(buffer, offset, start, end);\r\n }\r\n for (; j < end; j += offset, index++) {\r\n output[index] = packer.unpack(buffer, j);\r\n }\r\n if (theType.be) {\r\n endianness(buffer, offset, start, end);\r\n }\r\n } catch (e) {\r\n throwValueError_(e, buffer.slice(j, j + offset), j);\r\n }\r\n}\r\n\r\n/**\r\n * Pack a number to a byte buffer.\r\n * @param {number} value The value.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer to write on.\r\n * @param {number} [index=0] The buffer index to write.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {number} The next index to write.\r\n * @throws {Error} If the type definition is not valid.\r\n * @throws {RangeError} On overflow.\r\n * @throws {TypeError} If input is not valid.\r\n */\r\nexport function packTo(value, theType, buffer, index=0, clamp=false) {\r\n return packArrayTo([value], theType, buffer, index, clamp);\r\n}\r\n\r\n/**\r\n * Pack a number as a array of bytes.\r\n * @param {number} value The number to pack.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {!Array<number>} The packed value.\r\n * @throws {Error} If the type definition is not valid.\r\n * @throws {RangeError} On overflow.\r\n * @throws {TypeError} If input is not valid.\r\n */\r\nexport function pack(value, theType, clamp=false) {\r\n /** @type {!Array<number>} */\r\n let output = [];\r\n packTo(value, theType, output, 0, clamp);\r\n return output;\r\n}\r\n\r\n/**\r\n * Pack a array of numbers as a array of bytes.\r\n * @param {!(Array<number>|TypedArray)} values The values to pack.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {!Array<number>} The packed values.\r\n * @throws {Error} If the type definition is not valid.\r\n * @throws {RangeError} On overflow.\r\n * @throws {TypeError} If input is not valid.\r\n */\r\nexport function packArray(values, theType, clamp=false) {\r\n /** @type {!Array<number>} */\r\n let output = [];\r\n packArrayTo(values, theType, output, 0, clamp);\r\n return output;\r\n}\r\n\r\n/**\r\n * Unpack a array of numbers from a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {number} [start=0] The buffer index to start reading.\r\n * @param {number} [end=buffer.length] The buffer index to stop reading.\r\n * @param {boolean} [safe=false] If set to false, extra bytes in the end of\r\n * the array are ignored and input buffers with insufficient bytes will\r\n * output a empty array. If safe is set to true the function\r\n * will throw a 'Bad buffer length' error.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {!Array<number>}\r\n * @throws {Error} If the type definition is not valid\r\n * @throws {RangeError} On overflow\r\n */\r\nexport function unpackArray(\r\n buffer, theType, start=0, end=buffer.length, safe=false, clamp=false) {\r\n /** @type {!Array<number>} */\r\n let output = [];\r\n unpackArrayTo(buffer, theType, output, start, end, safe, clamp);\r\n return output;\r\n}\r\n\r\n/**\r\n * Unpack a number from a byte buffer.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer.\r\n * @param {!{bits:number,\r\n * fp: (boolean|undefined),\r\n * signed: (boolean|undefined),\r\n * be: (boolean|undefined)}} theType The type definition.\r\n * @param {number} [index=0] The buffer index to read.\r\n * @param {boolean} [clamp=false] True to clamp ints on overflow.\r\n * @return {number}\r\n * @throws {Error} If the type definition is not valid\r\n * @throws {Error} On bad buffer length.\r\n * @throws {RangeError} On overflow\r\n */\r\nexport function unpack(buffer, theType, index=0, clamp=false) {\r\n return unpackArray(\r\n buffer, theType, index, index + Math.ceil(theType.bits / 8),\r\n true, clamp)[0];\r\n}\r\n\r\n/**\r\n * Throw a error with information about the problem.\r\n * @param {!Object} err The Error object that is being raised.\r\n * @param {*} value The value that caused the error.\r\n * @param {number} index The index of the value that caused the error.\r\n * @throws {RangeError|TypeError|Error} A Error with a message.\r\n * @private\r\n */\r\nfunction throwValueError_(err, value, index) {\r\n err.message = err.constructor.name +\r\n ' at index ' + index + ': ' + value;\r\n throw err;\r\n}\r\n\r\n/**\r\n * Unpack a array of numbers to a typed array.\r\n * All other unpacking functions are interfaces to this function.\r\n * @param {!(Uint8Array|Array<number>)} buffer The byte buffer.\r\n * @param {number} start The buffer index to start reading.\r\n * @param {number} end The buffer index to stop reading.\r\n * @param {number} offset The number of bytes used by the type.\r\n * @param {boolean} safe True for size-safe buffer reading.\r\n * @throws {Error} On bad buffer length, if safe.\r\n * @private\r\n */\r\nfunction getUnpackLen_(buffer, start, end, offset, safe) {\r\n /** @type {number} */\r\n let extra = (end - start) % offset;\r\n if (safe && (extra || buffer.length < offset)) {\r\n throw new Error('Bad buffer length');\r\n }\r\n return end - extra;\r\n}\r\n\r\n/**\r\n * Return a parser for int, uint or fp numbers.\r\n * @param {number} bits The number of bits.\r\n * @param {boolean|undefined} fp True for fp numbers, false otherwise.\r\n * @param {boolean|undefined} signed True for signed ints, false otherwise.\r\n * @param {boolean|undefined} clamp True to clamp ints on overflow, false otherwise.\r\n * @return {!Object}\r\n * @private\r\n */\r\nfunction getParser_(bits, fp, signed, clamp) {\r\n if (fp) {\r\n validateFloatType(bits);\r\n } else {\r\n validateIntType(bits);\r\n }\r\n if (fp && bits === 16) {\r\n return new IEEE754Buffer(5, 11);\r\n } else if (fp && bits == 32) {\r\n return new IEEE754Buffer(8, 23);\r\n } else if(fp && bits == 64) {\r\n return new IEEE754Buffer(11, 52);\r\n }\r\n return new IntParser(bits, signed, clamp);\r\n}\r\n\r\n/**\r\n * The type definition error message.\r\n * @type {string}\r\n * @private\r\n */\r\nconst TYPE_ERR = 'Unsupported type';\r\n\r\n/**\r\n * Validate the type definition of floating-point numbers.\r\n * @param {number} bits The number of bits.\r\n * @throws {Error} If the type definition is not valid.\r\n * @private\r\n */\r\nfunction validateFloatType(bits) {\r\n if (!bits || bits !== 16 && bits !== 32 && bits !== 64) {\r\n throw new Error(TYPE_ERR + ': float, bits: ' + bits);\r\n }\r\n}\r\n\r\n/**\r\n * Validate the type definition of integers.\r\n * @param {number} bits The number of bits.\r\n * @throws {Error} If the type definition is not valid.\r\n * @private\r\n */\r\nfunction validateIntType(bits) {\r\n if (!bits || bits < 1 || bits > 53) {\r\n throw new Error(TYPE_ERR + ': int, bits: ' + bits);\r\n }\r\n}\r\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","'use strict';\n\nvar objectAssign = require('object-assign');\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <[email protected]> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\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\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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass BasicParser {\n constructor() {\n this.warnings = []; // ToDo: make these part of the parsing result\n }\n /**\n * Initialize parser with output (metadata), input (tokenizer) & parsing options (options).\n * @param {INativeMetadataCollector} metadata Output\n * @param {ITokenizer} tokenizer Input\n * @param {IOptions} options Parsing options\n */\n init(metadata, tokenizer, options) {\n this.metadata = metadata;\n this.tokenizer = tokenizer;\n this.options = options;\n return this;\n }\n}\nexports.BasicParser = BasicParser;\n//# sourceMappingURL=BasicParser.js.map","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","module.exports = {};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _getPrototypeOf = require(\"../core-js/object/get-prototype-of\");\n\nvar _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);\n\nvar _getOwnPropertyDescriptor = require(\"../core-js/object/get-own-property-descriptor\");\n\nvar _getOwnPropertyDescriptor2 = _interopRequireDefault(_getOwnPropertyDescriptor);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = (0, _getOwnPropertyDescriptor2.default)(object, property);\n\n if (desc === undefined) {\n var parent = (0, _getPrototypeOf2.default)(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ID3v1Parser_1 = require(\"../id3v1/ID3v1Parser\");\nclass CommonTagMapper {\n constructor(tagTypes, tagMap) {\n this.tagTypes = tagTypes;\n this.tagMap = tagMap;\n }\n static parseGenre(origVal) {\n // match everything inside parentheses\n const split = origVal.trim().split(/\\((.*?)\\)/g).filter(val => {\n return val !== '';\n });\n const array = [];\n for (let cur of split) {\n if (/^\\d+$/.test(cur) && !isNaN(parseInt(cur, 10))) {\n cur = ID3v1Parser_1.Genres[cur];\n }\n array.push(cur);\n }\n return array\n .filter(val => {\n return val !== undefined;\n }).join('/');\n }\n static fixPictureMimeType(pictureType) {\n pictureType = pictureType.toLocaleLowerCase();\n switch (pictureType) {\n case 'image/jpg':\n return 'image/jpeg'; // ToDo: register warning\n }\n return pictureType;\n }\n static toIntOrNull(str) {\n const cleaned = parseInt(str, 10);\n return isNaN(cleaned) ? null : cleaned;\n }\n // TODO: a string of 1of1 would fail to be converted\n // converts 1/10 to no : 1, of : 10\n // or 1 to no : 1, of : 0\n static normalizeTrack(origVal) {\n const split = origVal.toString().split('/');\n return {\n no: parseInt(split[0], 10) || null,\n of: parseInt(split[1], 10) || null\n };\n }\n /**\n * Process and set common tags\n * @param comTags Target metadata to\n * write common tags to\n * @param tag Native tag\n * @param value Native tag value\n * @return common name\n */\n mapGenericTag(tag) {\n tag = { id: tag.id, value: tag.value }; // clone object\n this.postMap(tag);\n // Convert native tag event to generic 'alias' tag\n const id = this.getCommonName(tag.id);\n return id ? { id, value: tag.value } : null;\n }\n /**\n * Convert native tag key to common tag key\n * @tag Native header tag\n * @return common tag name (alias)\n */\n getCommonName(tag) {\n return this.tagMap[tag];\n }\n /**\n * Handle post mapping exceptions / correction\n * @param {string} tag Tag e.g. {\"©alb\", \"Buena Vista Social Club\")\n */\n postMap(tag) {\n return;\n }\n}\nCommonTagMapper.maxRatingScore = 1;\nexports.CommonTagMapper = CommonTagMapper;\n//# sourceMappingURL=GenericTagMapper.js.map","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","module.exports = true;\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","exports.f = {}.propertyIsEnumerable;\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Used to reject read if end-of-Stream or end-of-file is reached\n * @type {Error}\n */\nexports.endOfFile = \"End-Of-File\";\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// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\n{\n // avoid scope creep, the keys array can then be collected\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n pna.nextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\nDuplex.prototype._destroy = function (err, cb) {\n this.push(null);\n this.end();\n\n pna.nextTick(cb, err);\n};","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","exports.f = Object.getOwnPropertySymbols;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports['default'] = addEventListener;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _EventObject = require('./EventObject');\n\nvar _EventObject2 = _interopRequireDefault(_EventObject);\n\nfunction addEventListener(target, eventType, callback, option) {\n function wrapCallback(e) {\n var ne = new _EventObject2['default'](e);\n callback.call(target, ne);\n }\n\n if (target.addEventListener) {\n var _ret = (function () {\n var useCapture = false;\n if (typeof option === 'object') {\n useCapture = option.capture || false;\n } else if (typeof option === 'boolean') {\n useCapture = option;\n }\n\n target.addEventListener(eventType, wrapCallback, option || false);\n\n return {\n v: {\n remove: function remove() {\n target.removeEventListener(eventType, wrapCallback, useCapture);\n }\n }\n };\n })();\n\n if (typeof _ret === 'object') return _ret.v;\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, wrapCallback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, wrapCallback);\n }\n };\n }\n}\n\nmodule.exports = exports['default'];","'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","/* global window */\nimport ponyfill from './ponyfill.js';\n\nvar root;\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = ponyfill(root);\nexport default result;\n","var parser = require(\"./parser\");\nvar creator = require(\"./creator\");\n\nmodule.exports = {\n parser: parser,\n creator: creator\n};\n","// 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","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst Util_1 = require(\"../common/Util\");\nconst FrameParser_1 = require(\"./FrameParser\");\nconst ID3v2_1 = require(\"./ID3v2\");\nclass ID3v2Parser {\n static removeUnsyncBytes(buffer) {\n let readI = 0;\n let writeI = 0;\n while (readI < buffer.length - 1) {\n if (readI !== writeI) {\n buffer[writeI] = buffer[readI];\n }\n readI += (buffer[readI] === 0xFF && buffer[readI + 1] === 0) ? 2 : 1;\n writeI++;\n }\n if (readI < buffer.length) {\n buffer[writeI++] = buffer[readI++];\n }\n return buffer.slice(0, writeI);\n }\n static readFrameHeader(v, majorVer) {\n let header;\n switch (majorVer) {\n case 2:\n header = {\n id: v.toString('ascii', 0, 3),\n length: Token.UINT24_BE.get(v, 3)\n };\n break;\n case 3:\n header = {\n id: v.toString('ascii', 0, 4),\n length: Token.UINT32_BE.get(v, 4),\n flags: ID3v2Parser.readFrameFlags(v.slice(8, 10))\n };\n break;\n case 4:\n header = {\n id: v.toString('ascii', 0, 4),\n length: ID3v2_1.ID3v2Token.UINT32SYNCSAFE.get(v, 4),\n flags: ID3v2Parser.readFrameFlags(v.slice(8, 10))\n };\n break;\n default:\n throw new Error('Unexpected majorVer: ' + majorVer);\n }\n return header;\n }\n static getFrameHeaderLength(majorVer) {\n switch (majorVer) {\n case 2:\n return 6;\n case 3:\n case 4:\n return 10;\n default:\n throw new Error('header versionIndex is incorrect');\n }\n }\n static readFrameFlags(b) {\n return {\n status: {\n tag_alter_preservation: Util_1.default.strtokBITSET.get(b, 0, 6),\n file_alter_preservation: Util_1.default.strtokBITSET.get(b, 0, 5),\n read_only: Util_1.default.strtokBITSET.get(b, 0, 4)\n },\n format: {\n grouping_identity: Util_1.default.strtokBITSET.get(b, 1, 7),\n compression: Util_1.default.strtokBITSET.get(b, 1, 3),\n encryption: Util_1.default.strtokBITSET.get(b, 1, 2),\n unsynchronisation: Util_1.default.strtokBITSET.get(b, 1, 1),\n data_length_indicator: Util_1.default.strtokBITSET.get(b, 1, 0)\n }\n };\n }\n static readFrameData(buf, frameHeader, majorVer, includeCovers) {\n switch (majorVer) {\n case 2:\n return FrameParser_1.default.readData(buf, frameHeader.id, majorVer, includeCovers);\n case 3:\n case 4:\n if (frameHeader.flags.format.unsynchronisation) {\n buf = ID3v2Parser.removeUnsyncBytes(buf);\n }\n if (frameHeader.flags.format.data_length_indicator) {\n buf = buf.slice(4, buf.length);\n }\n return FrameParser_1.default.readData(buf, frameHeader.id, majorVer, includeCovers);\n default:\n throw new Error('Unexpected majorVer: ' + majorVer);\n }\n }\n /**\n * Create a combined tag key, of tag & description\n * @param {string} tag e.g.: COM\n * @param {string} description e.g. iTunPGAP\n * @returns {string} e.g. COM:iTunPGAP\n */\n static makeDescriptionTagName(tag, description) {\n return tag + (description ? ':' + description : '');\n }\n parse(metadata, tokenizer, options) {\n return __awaiter(this, void 0, void 0, function* () {\n this.tokenizer = tokenizer;\n this.metadata = metadata;\n this.options = options;\n const id3Header = yield this.tokenizer.readToken(ID3v2_1.ID3v2Token.Header);\n if (id3Header.fileIdentifier !== 'ID3') {\n throw new Error(\"expected ID3-header file-identifier 'ID3' was not found\");\n }\n this.id3Header = id3Header;\n this.headerType = ('ID3v2.' + id3Header.version.major);\n if (id3Header.flags.isExtendedHeader) {\n return this.parseExtendedHeader();\n }\n else {\n return this.parseId3Data(id3Header.size);\n }\n });\n }\n parseExtendedHeader() {\n return __awaiter(this, void 0, void 0, function* () {\n const extendedHeader = yield this.tokenizer.readToken(ID3v2_1.ID3v2Token.ExtendedHeader);\n const dataRemaining = extendedHeader.size - ID3v2_1.ID3v2Token.ExtendedHeader.len;\n if (dataRemaining > 0) {\n return this.parseExtendedHeaderData(dataRemaining, extendedHeader.size);\n }\n else {\n return this.parseId3Data(this.id3Header.size - extendedHeader.size);\n }\n });\n }\n parseExtendedHeaderData(dataRemaining, extendedHeaderSize) {\n return __awaiter(this, void 0, void 0, function* () {\n const buffer = Buffer.alloc(dataRemaining);\n yield this.tokenizer.readBuffer(buffer, 0, dataRemaining);\n return this.parseId3Data(this.id3Header.size - extendedHeaderSize);\n });\n }\n parseId3Data(dataLen) {\n return __awaiter(this, void 0, void 0, function* () {\n const buffer = Buffer.alloc(dataLen);\n yield this.tokenizer.readBuffer(buffer, 0, dataLen);\n for (const tag of this.parseMetadata(buffer)) {\n if (tag.id === 'TXXX') {\n for (const text of tag.value.text) {\n this.addTag(ID3v2Parser.makeDescriptionTagName(tag.id, tag.value.description), text);\n }\n }\n else if (tag.id === 'COM') {\n for (const value of tag.value) {\n this.addTag(ID3v2Parser.makeDescriptionTagName(tag.id, value.description), value.text);\n }\n }\n else if (Array.isArray(tag.value)) {\n for (const value of tag.value) {\n this.addTag(tag.id, value);\n }\n }\n else {\n this.addTag(tag.id, tag.value);\n }\n }\n });\n }\n addTag(id, value) {\n this.metadata.addTag(this.headerType, id, value);\n }\n parseMetadata(data) {\n let offset = 0;\n const tags = [];\n while (true) {\n if (offset === data.length)\n break;\n const frameHeaderLength = ID3v2Parser.getFrameHeaderLength(this.id3Header.version.major);\n if (offset + frameHeaderLength > data.length) {\n // ToDo: generate WARNING: Illegal ID3v2-tag-length\n break;\n }\n const frameHeaderBytes = data.slice(offset, offset += frameHeaderLength);\n const frameHeader = ID3v2Parser.readFrameHeader(frameHeaderBytes, this.id3Header.version.major);\n // Last frame. Check first char is a letter, bit of defensive programming\n if (frameHeader.id === '' || frameHeader.id === '\\u0000\\u0000\\u0000\\u0000' ||\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(frameHeader.id[0]) === -1) {\n // ToDo: generate WARNING\n break;\n }\n const frameDataBytes = data.slice(offset, offset += frameHeader.length);\n const values = ID3v2Parser.readFrameData(frameDataBytes, frameHeader, this.id3Header.version.major, !this.options.skipCovers);\n tags.push({ id: frameHeader.id, value: values });\n }\n return tags;\n }\n}\nexports.ID3v2Parser = ID3v2Parser;\n//# sourceMappingURL=ID3v2Parser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst Util_1 = require(\"../common/Util\");\n/**\n * The picture type according to the ID3v2 APIC frame\n * Ref: http://id3.org/id3v2.3.0#Attached_picture\n */\nvar AttachedPictureType;\n(function (AttachedPictureType) {\n AttachedPictureType[AttachedPictureType[\"Other\"] = 0] = \"Other\";\n AttachedPictureType[AttachedPictureType[\"32x32 pixels 'file icon' (PNG only)\"] = 1] = \"32x32 pixels 'file icon' (PNG only)\";\n AttachedPictureType[AttachedPictureType[\"Other file icon\"] = 2] = \"Other file icon\";\n AttachedPictureType[AttachedPictureType[\"Cover (front)\"] = 3] = \"Cover (front)\";\n AttachedPictureType[AttachedPictureType[\"Cover (back)\"] = 4] = \"Cover (back)\";\n AttachedPictureType[AttachedPictureType[\"Leaflet page\"] = 5] = \"Leaflet page\";\n AttachedPictureType[AttachedPictureType[\"Media (e.g. label side of CD)\"] = 6] = \"Media (e.g. label side of CD)\";\n AttachedPictureType[AttachedPictureType[\"Lead artist/lead performer/soloist\"] = 7] = \"Lead artist/lead performer/soloist\";\n AttachedPictureType[AttachedPictureType[\"Artist/performer\"] = 8] = \"Artist/performer\";\n AttachedPictureType[AttachedPictureType[\"Conductor\"] = 9] = \"Conductor\";\n AttachedPictureType[AttachedPictureType[\"Band/Orchestra\"] = 10] = \"Band/Orchestra\";\n AttachedPictureType[AttachedPictureType[\"Composer\"] = 11] = \"Composer\";\n AttachedPictureType[AttachedPictureType[\"Lyricist/text writer\"] = 12] = \"Lyricist/text writer\";\n AttachedPictureType[AttachedPictureType[\"Recording Location\"] = 13] = \"Recording Location\";\n AttachedPictureType[AttachedPictureType[\"During recording\"] = 14] = \"During recording\";\n AttachedPictureType[AttachedPictureType[\"During performance\"] = 15] = \"During performance\";\n AttachedPictureType[AttachedPictureType[\"Movie/video screen capture\"] = 16] = \"Movie/video screen capture\";\n AttachedPictureType[AttachedPictureType[\"A bright coloured fish\"] = 17] = \"A bright coloured fish\";\n AttachedPictureType[AttachedPictureType[\"Illustration\"] = 18] = \"Illustration\";\n AttachedPictureType[AttachedPictureType[\"Band/artist logotype\"] = 19] = \"Band/artist logotype\";\n AttachedPictureType[AttachedPictureType[\"Publisher/Studio logotype\"] = 20] = \"Publisher/Studio logotype\";\n})(AttachedPictureType = exports.AttachedPictureType || (exports.AttachedPictureType = {}));\nclass ID3v2Token {\n}\n/**\n * 28 bits (representing up to 256MB) integer, the msb is 0 to avoid 'false syncsignals'.\n * 4 * %0xxxxxxx\n */\nID3v2Token.UINT32SYNCSAFE = {\n get: (buf, off) => {\n return buf[off + 3] & 0x7f | ((buf[off + 2]) << 7) |\n ((buf[off + 1]) << 14) | ((buf[off]) << 21);\n },\n len: 4\n};\n/**\n * ID3v2 header\n * Ref: http://id3.org/id3v2.3.0#ID3v2_header\n * ToDo\n */\nID3v2Token.Header = {\n len: 10,\n get: (buf, off) => {\n return {\n // ID3v2/file identifier \"ID3\"\n fileIdentifier: new Token.StringType(3, 'ascii').get(buf, off),\n // ID3v2 versionIndex\n version: {\n major: Token.INT8.get(buf, off + 3),\n revision: Token.INT8.get(buf, off + 4)\n },\n // ID3v2 flags\n flags: {\n // Raw flags value\n raw: Token.INT8.get(buf, off + 4),\n // Unsynchronisation\n unsynchronisation: Util_1.default.strtokBITSET.get(buf, off + 5, 7),\n // Extended header\n isExtendedHeader: Util_1.default.strtokBITSET.get(buf, off + 5, 6),\n // Experimental indicator\n expIndicator: Util_1.default.strtokBITSET.get(buf, off + 5, 5),\n footer: Util_1.default.strtokBITSET.get(buf, off + 5, 4)\n },\n size: ID3v2Token.UINT32SYNCSAFE.get(buf, off + 6)\n };\n }\n};\nID3v2Token.ExtendedHeader = {\n len: 10,\n get: (buf, off) => {\n return {\n // Extended header size\n size: Token.UINT32_BE.get(buf, off),\n // Extended Flags\n extendedFlags: Token.UINT16_BE.get(buf, off + 4),\n // Size of padding\n sizeOfPadding: Token.UINT32_BE.get(buf, off + 6),\n // CRC data present\n crcDataPresent: Util_1.default.strtokBITSET.get(buf, off + 4, 31)\n };\n }\n};\nexports.ID3v2Token = ID3v2Token;\n//# sourceMappingURL=ID3v2.js.map","// 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// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n","var PRESET_VALUES = [\n \"hz60\",\n \"hz170\",\n \"hz310\",\n \"hz600\",\n \"hz1000\",\n \"hz3000\",\n \"hz6000\",\n \"hz12000\",\n \"hz14000\",\n \"hz16000\",\n \"preamp\"\n];\n\nvar HEADER = \"Winamp EQ library file v1.1\";\n\nmodule.exports = {\n PRESET_VALUES: PRESET_VALUES,\n HEADER: HEADER\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","module.exports = require('./_hide');\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addEventListenerWrap;\n\nvar _addDomEventListener = _interopRequireDefault(require(\"add-dom-event-listener\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction addEventListenerWrap(target, eventType, cb, option) {\n /* eslint camelcase: 2 */\n var callback = _reactDom.default.unstable_batchedUpdates ? function run(e) {\n _reactDom.default.unstable_batchedUpdates(cb, e);\n } : cb;\n return (0, _addDomEventListener.default)(target, eventType, callback, option);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nexports.isEventFromHandle = isEventFromHandle;\nexports.isValueOutOfRange = isValueOutOfRange;\nexports.isNotTouchEvent = isNotTouchEvent;\nexports.getClosestPoint = getClosestPoint;\nexports.getPrecision = getPrecision;\nexports.getMousePosition = getMousePosition;\nexports.getTouchPosition = getTouchPosition;\nexports.getHandleCenterPosition = getHandleCenterPosition;\nexports.ensureValueInRange = ensureValueInRange;\nexports.ensureValuePrecision = ensureValuePrecision;\nexports.pauseEvent = pauseEvent;\nexports.calculateNextValue = calculateNextValue;\nexports.getKeyboardValueMutator = getKeyboardValueMutator;\n\nvar _reactDom = require('react-dom');\n\nvar _KeyCode = require('rc-util/lib/KeyCode');\n\nvar _KeyCode2 = _interopRequireDefault(_KeyCode);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction isEventFromHandle(e, handles) {\n try {\n return Object.keys(handles).some(function (key) {\n return e.target === (0, _reactDom.findDOMNode)(handles[key]);\n });\n } catch (error) {\n return false;\n }\n}\n\nfunction isValueOutOfRange(value, _ref) {\n var min = _ref.min,\n max = _ref.max;\n\n return value < min || value > max;\n}\n\nfunction isNotTouchEvent(e) {\n return e.touches.length > 1 || e.type.toLowerCase() === 'touchend' && e.touches.length > 0;\n}\n\nfunction getClosestPoint(val, _ref2) {\n var marks = _ref2.marks,\n step = _ref2.step,\n min = _ref2.min,\n max = _ref2.max;\n\n var points = Object.keys(marks).map(parseFloat);\n if (step !== null) {\n var maxSteps = Math.floor((max - min) / step);\n var steps = Math.min((val - min) / step, maxSteps);\n var closestStep = Math.round(steps) * step + min;\n points.push(closestStep);\n }\n var diffs = points.map(function (point) {\n return Math.abs(val - point);\n });\n return points[diffs.indexOf(Math.min.apply(Math, (0, _toConsumableArray3['default'])(diffs)))];\n}\n\nfunction getPrecision(step) {\n var stepString = step.toString();\n var precision = 0;\n if (stepString.indexOf('.') >= 0) {\n precision = stepString.length - stepString.indexOf('.') - 1;\n }\n return precision;\n}\n\nfunction getMousePosition(vertical, e) {\n return vertical ? e.clientY : e.pageX;\n}\n\nfunction getTouchPosition(vertical, e) {\n return vertical ? e.touches[0].clientY : e.touches[0].pageX;\n}\n\nfunction getHandleCenterPosition(vertical, handle) {\n var coords = handle.getBoundingClientRect();\n return vertical ? coords.top + coords.height * 0.5 : window.pageXOffset + coords.left + coords.width * 0.5;\n}\n\nfunction ensureValueInRange(val, _ref3) {\n var max = _ref3.max,\n min = _ref3.min;\n\n if (val <= min) {\n return min;\n }\n if (val >= max) {\n return max;\n }\n return val;\n}\n\nfunction ensureValuePrecision(val, props) {\n var step = props.step;\n\n var closestPoint = isFinite(getClosestPoint(val, props)) ? getClosestPoint(val, props) : 0; // eslint-disable-line\n return step === null ? closestPoint : parseFloat(closestPoint.toFixed(getPrecision(step)));\n}\n\nfunction pauseEvent(e) {\n e.stopPropagation();\n e.preventDefault();\n}\n\nfunction calculateNextValue(func, value, props) {\n var operations = {\n increase: function increase(a, b) {\n return a + b;\n },\n decrease: function decrease(a, b) {\n return a - b;\n }\n };\n\n var indexToGet = operations[func](Object.keys(props.marks).indexOf(JSON.stringify(value)), 1);\n var keyToGet = Object.keys(props.marks)[indexToGet];\n\n if (props.step) {\n return operations[func](value, props.step);\n } else if (!!Object.keys(props.marks).length && !!props.marks[keyToGet]) {\n return props.marks[keyToGet];\n }\n return value;\n}\n\nfunction getKeyboardValueMutator(e, vertical, reverse) {\n var increase = 'increase';\n var decrease = 'decrease';\n var method = increase;\n switch (e.keyCode) {\n case _KeyCode2['default'].UP:\n method = vertical && reverse ? decrease : increase;break;\n case _KeyCode2['default'].RIGHT:\n method = !vertical && reverse ? decrease : increase;break;\n case _KeyCode2['default'].DOWN:\n method = vertical && reverse ? increase : decrease;break;\n case _KeyCode2['default'].LEFT:\n method = !vertical && reverse ? increase : decrease;break;\n\n case _KeyCode2['default'].END:\n return function (value, props) {\n return props.max;\n };\n case _KeyCode2['default'].HOME:\n return function (value, props) {\n return props.min;\n };\n case _KeyCode2['default'].PAGE_UP:\n return function (value, props) {\n return value + props.step * 2;\n };\n case _KeyCode2['default'].PAGE_DOWN:\n return function (value, props) {\n return value - props.step * 2;\n };\n\n default:\n return undefined;\n }\n return function (value, props) {\n return calculateNextValue(method, value, props);\n };\n}","module.exports = function(arr, obj){\n if (arr.indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};","export default function symbolObservablePonyfill(root) {\n\tvar result;\n\tvar Symbol = root.Symbol;\n\n\tif (typeof Symbol === 'function') {\n\t\tif (Symbol.observable) {\n\t\t\tresult = Symbol.observable;\n\t\t} else {\n\t\t\tresult = Symbol('observable');\n\t\t\tSymbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n","\"use strict\";\n\nvar compose = require('redux').compose;\n\nexports.__esModule = true;\nexports.composeWithDevTools = (\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ :\n function() {\n if (arguments.length === 0) return undefined;\n if (typeof arguments[0] === 'object') return compose;\n return compose.apply(null, arguments);\n }\n);\n\nexports.devToolsEnhancer = (\n typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION__ ?\n window.__REDUX_DEVTOOLS_EXTENSION__ :\n function() { return function(noop) { return noop; } }\n);\n","'use strict';\n\nmodule.exports = TinyQueue;\nmodule.exports.default = TinyQueue;\n\nfunction TinyQueue(data, compare) {\n if (!(this instanceof TinyQueue)) return new TinyQueue(data, compare);\n\n this.data = data || [];\n this.length = this.data.length;\n this.compare = compare || defaultCompare;\n\n if (this.length > 0) {\n for (var i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n}\n\nfunction defaultCompare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\nTinyQueue.prototype = {\n\n push: function (item) {\n this.data.push(item);\n this.length++;\n this._up(this.length - 1);\n },\n\n pop: function () {\n if (this.length === 0) return undefined;\n\n var top = this.data[0];\n this.length--;\n\n if (this.length > 0) {\n this.data[0] = this.data[this.length];\n this._down(0);\n }\n this.data.pop();\n\n return top;\n },\n\n peek: function () {\n return this.data[0];\n },\n\n _up: function (pos) {\n var data = this.data;\n var compare = this.compare;\n var item = data[pos];\n\n while (pos > 0) {\n var parent = (pos - 1) >> 1;\n var current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n },\n\n _down: function (pos) {\n var data = this.data;\n var compare = this.compare;\n var halfLength = this.length >> 1;\n var item = data[pos];\n\n while (pos < halfLength) {\n var left = (pos << 1) + 1;\n var right = left + 1;\n var best = data[left];\n\n if (right < this.length && compare(data[right], best) < 0) {\n left = right;\n best = data[right];\n }\n if (compare(best, item) >= 0) break;\n\n data[pos] = best;\n pos = left;\n }\n\n data[pos] = item;\n }\n};\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _Track = require('./common/Track');\n\nvar _Track2 = _interopRequireDefault(_Track);\n\nvar _createSlider = require('./common/createSlider');\n\nvar _createSlider2 = _interopRequireDefault(_createSlider);\n\nvar _utils = require('./utils');\n\nvar utils = _interopRequireWildcard(_utils);\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\n/* eslint-disable react/prop-types */\nvar Slider = function (_React$Component) {\n (0, _inherits3['default'])(Slider, _React$Component);\n\n function Slider(props) {\n (0, _classCallCheck3['default'])(this, Slider);\n\n var _this = (0, _possibleConstructorReturn3['default'])(this, (Slider.__proto__ || Object.getPrototypeOf(Slider)).call(this, props));\n\n _this.onEnd = function (force) {\n var dragging = _this.state.dragging;\n\n _this.removeDocumentEvents();\n if (dragging || force) {\n _this.props.onAfterChange(_this.getValue());\n }\n _this.setState({ dragging: false });\n };\n\n var defaultValue = props.defaultValue !== undefined ? props.defaultValue : props.min;\n var value = props.value !== undefined ? props.value : defaultValue;\n\n _this.state = {\n value: _this.trimAlignValue(value),\n dragging: false\n };\n\n (0, _warning2['default'])(!('minimumTrackStyle' in props), 'minimumTrackStyle will be deprecated, please use trackStyle instead.');\n (0, _warning2['default'])(!('maximumTrackStyle' in props), 'maximumTrackStyle will be deprecated, please use railStyle instead.');\n return _this;\n }\n\n (0, _createClass3['default'])(Slider, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n if (!('value' in this.props || 'min' in this.props || 'max' in this.props)) {\n return;\n }\n var _props = this.props,\n value = _props.value,\n onChange = _props.onChange;\n\n var theValue = value !== undefined ? value : prevState.value;\n var nextValue = this.trimAlignValue(theValue, this.props);\n if (nextValue !== prevState.value) {\n // eslint-disable-next-line\n this.setState({ value: nextValue });\n if (utils.isValueOutOfRange(theValue, this.props)) {\n onChange(nextValue);\n }\n }\n }\n }, {\n key: 'onChange',\n value: function onChange(state) {\n var props = this.props;\n var isNotControlled = !('value' in props);\n var nextState = state.value > this.props.max ? (0, _extends3['default'])({}, state, { value: this.props.max }) : state;\n if (isNotControlled) {\n this.setState(nextState);\n }\n\n var changedValue = nextState.value;\n props.onChange(changedValue);\n }\n }, {\n key: 'onStart',\n value: function onStart(position) {\n this.setState({ dragging: true });\n var props = this.props;\n var prevValue = this.getValue();\n props.onBeforeChange(prevValue);\n\n var value = this.calcValueByPos(position);\n this.startValue = value;\n this.startPosition = position;\n\n if (value === prevValue) return;\n\n this.prevMovedHandleIndex = 0;\n\n this.onChange({ value: value });\n }\n }, {\n key: 'onMove',\n value: function onMove(e, position) {\n utils.pauseEvent(e);\n var oldValue = this.state.value;\n\n var value = this.calcValueByPos(position);\n if (value === oldValue) return;\n\n this.onChange({ value: value });\n }\n }, {\n key: 'onKeyboard',\n value: function onKeyboard(e) {\n var _props2 = this.props,\n reverse = _props2.reverse,\n vertical = _props2.vertical;\n\n var valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);\n if (valueMutator) {\n utils.pauseEvent(e);\n var state = this.state;\n var oldValue = state.value;\n var mutatedValue = valueMutator(oldValue, this.props);\n var value = this.trimAlignValue(mutatedValue);\n if (value === oldValue) return;\n\n this.onChange({ value: value });\n this.props.onAfterChange(value);\n this.onEnd();\n }\n }\n }, {\n key: 'getValue',\n value: function getValue() {\n return this.state.value;\n }\n }, {\n key: 'getLowerBound',\n value: function getLowerBound() {\n return this.props.min;\n }\n }, {\n key: 'getUpperBound',\n value: function getUpperBound() {\n return this.state.value;\n }\n }, {\n key: 'trimAlignValue',\n value: function trimAlignValue(v) {\n var nextProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (v === null) {\n return null;\n }\n\n var mergedProps = (0, _extends3['default'])({}, this.props, nextProps);\n var val = utils.ensureValueInRange(v, mergedProps);\n return utils.ensureValuePrecision(val, mergedProps);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props3 = this.props,\n prefixCls = _props3.prefixCls,\n vertical = _props3.vertical,\n included = _props3.included,\n disabled = _props3.disabled,\n minimumTrackStyle = _props3.minimumTrackStyle,\n trackStyle = _props3.trackStyle,\n handleStyle = _props3.handleStyle,\n tabIndex = _props3.tabIndex,\n min = _props3.min,\n max = _props3.max,\n reverse = _props3.reverse,\n handleGenerator = _props3.handle;\n var _state = this.state,\n value = _state.value,\n dragging = _state.dragging;\n\n var offset = this.calcOffset(value);\n var handle = handleGenerator({\n className: prefixCls + '-handle',\n prefixCls: prefixCls,\n vertical: vertical,\n offset: offset,\n value: value,\n dragging: dragging,\n disabled: disabled,\n min: min,\n max: max,\n reverse: reverse,\n index: 0,\n tabIndex: tabIndex,\n style: handleStyle[0] || handleStyle,\n ref: function ref(h) {\n return _this2.saveHandle(0, h);\n }\n });\n\n var _trackStyle = trackStyle[0] || trackStyle;\n var track = _react2['default'].createElement(_Track2['default'], {\n className: prefixCls + '-track',\n vertical: vertical,\n included: included,\n offset: 0,\n reverse: reverse,\n length: offset,\n style: (0, _extends3['default'])({}, minimumTrackStyle, _trackStyle)\n });\n\n return { tracks: track, handles: handle };\n }\n }]);\n return Slider;\n}(_react2['default'].Component);\n\nSlider.propTypes = {\n defaultValue: _propTypes2['default'].number,\n value: _propTypes2['default'].number,\n disabled: _propTypes2['default'].bool,\n autoFocus: _propTypes2['default'].bool,\n tabIndex: _propTypes2['default'].number,\n reverse: _propTypes2['default'].bool,\n min: _propTypes2['default'].number,\n max: _propTypes2['default'].number\n};\nexports['default'] = (0, _createSlider2['default'])(Slider);\nmodule.exports = exports['default'];","//\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","/**\n * Module dependencies.\n */\n\ntry {\n var index = require('indexof');\n} catch (err) {\n var index = require('component-indexof');\n}\n\n/**\n * Whitespace regexp.\n */\n\nvar re = /\\s+/;\n\n/**\n * toString reference.\n */\n\nvar toString = Object.prototype.toString;\n\n/**\n * Wrap `el` in a `ClassList`.\n *\n * @param {Element} el\n * @return {ClassList}\n * @api public\n */\n\nmodule.exports = function(el){\n return new ClassList(el);\n};\n\n/**\n * Initialize a new ClassList for `el`.\n *\n * @param {Element} el\n * @api private\n */\n\nfunction ClassList(el) {\n if (!el || !el.nodeType) {\n throw new Error('A DOM element reference is required');\n }\n this.el = el;\n this.list = el.classList;\n}\n\n/**\n * Add class `name` if not already present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.add = function(name){\n // classList\n if (this.list) {\n this.list.add(name);\n return this;\n }\n\n // fallback\n var arr = this.array();\n var i = index(arr, name);\n if (!~i) arr.push(name);\n this.el.className = arr.join(' ');\n return this;\n};\n\n/**\n * Remove class `name` when present, or\n * pass a regular expression to remove\n * any which match.\n *\n * @param {String|RegExp} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.remove = function(name){\n if ('[object RegExp]' == toString.call(name)) {\n return this.removeMatching(name);\n }\n\n // classList\n if (this.list) {\n this.list.remove(name);\n return this;\n }\n\n // fallback\n var arr = this.array();\n var i = index(arr, name);\n if (~i) arr.splice(i, 1);\n this.el.className = arr.join(' ');\n return this;\n};\n\n/**\n * Remove all classes matching `re`.\n *\n * @param {RegExp} re\n * @return {ClassList}\n * @api private\n */\n\nClassList.prototype.removeMatching = function(re){\n var arr = this.array();\n for (var i = 0; i < arr.length; i++) {\n if (re.test(arr[i])) {\n this.remove(arr[i]);\n }\n }\n return this;\n};\n\n/**\n * Toggle class `name`, can force state via `force`.\n *\n * For browsers that support classList, but do not support `force` yet,\n * the mistake will be detected and corrected.\n *\n * @param {String} name\n * @param {Boolean} force\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.toggle = function(name, force){\n // classList\n if (this.list) {\n if (\"undefined\" !== typeof force) {\n if (force !== this.list.toggle(name, force)) {\n this.list.toggle(name); // toggle again to correct\n }\n } else {\n this.list.toggle(name);\n }\n return this;\n }\n\n // fallback\n if (\"undefined\" !== typeof force) {\n if (!force) {\n this.remove(name);\n } else {\n this.add(name);\n }\n } else {\n if (this.has(name)) {\n this.remove(name);\n } else {\n this.add(name);\n }\n }\n\n return this;\n};\n\n/**\n * Return an array of classes.\n *\n * @return {Array}\n * @api public\n */\n\nClassList.prototype.array = function(){\n var className = this.el.getAttribute('class') || '';\n var str = className.replace(/^\\s+|\\s+$/g, '');\n var arr = str.split(re);\n if ('' === arr[0]) arr.shift();\n return arr;\n};\n\n/**\n * Check if class `name` is present.\n *\n * @param {String} name\n * @return {ClassList}\n * @api public\n */\n\nClassList.prototype.has =\nClassList.prototype.contains = function(name){\n return this.list\n ? this.list.contains(name)\n : !! ~index(this.array(), name);\n};\n","\"use strict\";\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertAniBinaryToCSS = void 0;\nvar parser_1 = require(\"./parser\");\nvar JIFFIES_PER_MS = 1000 / 60;\n// Generate CSS for an animated cursor.\n//\n// This function returns CSS containing a set of keyframes with embedded Data\n// URIs as well as a CSS rule to the given selector.\nfunction convertAniBinaryToCSS(selector, aniBinary) {\n var ani = readAni(aniBinary);\n var animationName = \"ani-cursor-\" + uniqueId();\n var keyframes = ani.frames.map(function (_a) {\n var url = _a.url, percents = _a.percents;\n var percent = percents.map(function (num) { return num + \"%\"; }).join(\", \");\n return percent + \" { cursor: url(\" + url + \"), auto; }\";\n });\n // CSS properties with a animation type of \"discrete\", like `cursor`, actually\n // switch half-way _between_ each keyframe percentage. Luckily this half-way\n // measurement is applied _after_ the easing function is applied. So, we can\n // force the frames to appear at exactly the % that we specify by using\n // `timing-function` of `step-end`.\n //\n // https://drafts.csswg.org/web-animations-1/#discrete\n var timingFunction = \"step-end\";\n // Winamp (re)starts the animation cycle when your mouse enters an element. By\n // default this approach would cause the animation to run continuously, even\n // when the cursor is not visible. To match Winamp's behavior we add a\n // `:hover` pseudo selector so that the animation only runs when the cursor is\n // visible.\n var pseudoSelector = \":hover\";\n // prettier-ignore\n return \"\\n @keyframes \" + animationName + \" {\\n \" + keyframes.join(\"\\n\") + \"\\n }\\n \" + selector + pseudoSelector + \" {\\n animation: \" + animationName + \" \" + ani.duration + \"ms \" + timingFunction + \" infinite;\\n }\\n \";\n}\nexports.convertAniBinaryToCSS = convertAniBinaryToCSS;\nfunction readAni(contents) {\n var _a;\n var ani = parser_1.parseAni(contents);\n var rate = (_a = ani.rate) !== null && _a !== void 0 ? _a : ani.images.map(function () { return ani.metadata.iDispRate; });\n var duration = sum(rate);\n var frames = ani.images.map(function (image) { return ({\n url: curUrlFromByteArray(image),\n percents: [],\n }); });\n var elapsed = 0;\n rate.forEach(function (r, i) {\n var frameIdx = ani.seq ? ani.seq[i] : i;\n frames[frameIdx].percents.push((elapsed / duration) * 100);\n elapsed += r;\n });\n return { duration: duration * JIFFIES_PER_MS, frames: frames };\n}\n/* Utility Functions */\nvar i = 0;\nvar uniqueId = function () { return i++; };\nfunction base64FromDataArray(dataArray) {\n return window.btoa(String.fromCharCode.apply(String, __spread(dataArray)));\n}\nfunction curUrlFromByteArray(arr) {\n var base64 = base64FromDataArray(arr);\n return \"data:image/x-win-bitmap;base64,\" + base64;\n}\nfunction sum(values) {\n return values.reduce(function (total, value) { return total + value; }, 0);\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ReadStreamTokenizer_1 = require(\"./ReadStreamTokenizer\");\nconst BufferTokenizer_1 = require(\"./BufferTokenizer\");\n/**\n * Construct ReadStreamTokenizer from given Stream.\n * Will set fileSize, if provided given Stream has set the .path property/\n * @param stream Stream.Readable\n * @param size If known the 'file' size in bytes, maybe required to calculate the duration.\n * @returns ReadStreamTokenizer\n */\nfunction fromStream(stream, size) {\n return new ReadStreamTokenizer_1.ReadStreamTokenizer(stream, size);\n}\nexports.fromStream = fromStream;\n/**\n * Construct ReadStreamTokenizer from given Buffer.\n * @param buffer Buffer to tokenize\n * @returns BufferTokenizer\n */\nfunction fromBuffer(buffer) {\n return new BufferTokenizer_1.BufferTokenizer(buffer);\n}\nexports.fromBuffer = fromBuffer;\n","'use strict';\n\nif (typeof process === 'undefined' ||\n !process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = { nextTick: nextTick };\n} else {\n module.exports = process\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n","'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst initDebug = require(\"debug\");\nconst FileType = require(\"file-type\");\nconst Token = require(\"token-types\");\nconst assert = require(\"assert\");\nconst Util_1 = require(\"../common/Util\");\nconst BasicParser_1 = require(\"../common/BasicParser\");\nconst APEv2Token_1 = require(\"./APEv2Token\");\nconst debug = initDebug('music-metadata:parser:APEv2');\nconst tagFormat = 'APEv2';\nconst preamble = 'APETAGEX';\nclass APEv2Parser extends BasicParser_1.BasicParser {\n constructor() {\n super(...arguments);\n this.ape = {};\n }\n /**\n * Calculate the media file duration\n * @param ah ApeHeader\n * @return {number} duration in seconds\n */\n static calculateDuration(ah) {\n let duration = ah.totalFrames > 1 ? ah.blocksPerFrame * (ah.totalFrames - 1) : 0;\n duration += ah.finalFrameBlocks;\n return duration / ah.sampleRate;\n }\n /**\n * @param {INativeMetadataCollector} metadata\n * @param {ITokenizer} tokenizer\n * @param {IOptions} options\n * @returns {Promise<boolean>} True if tags have been found\n */\n static parseTagHeader(metadata, tokenizer, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (tokenizer.fileSize && tokenizer.fileSize - tokenizer.position < APEv2Token_1.TagFooter.len) {\n debug(`No APEv2 header found, end-of-file reached`);\n return;\n }\n const footer = yield tokenizer.peekToken(APEv2Token_1.TagFooter);\n if (footer.ID === preamble) {\n yield tokenizer.ignore(APEv2Token_1.TagFooter.len);\n const tags = yield tokenizer.readToken(APEv2Token_1.TagField(footer));\n APEv2Parser.parseTags(metadata, footer, tags, 0, !options.skipCovers);\n }\n else {\n debug(`APEv2 header not found at offset=${tokenizer.position}`);\n if (tokenizer.fileSize) {\n // Try to read the APEv2 header using just the footer-header\n const remaining = tokenizer.fileSize - tokenizer.position; // ToDo: take ID3v1 into account\n const buffer = Buffer.alloc(remaining);\n yield tokenizer.readBuffer(buffer);\n return APEv2Parser.parseTagFooter(metadata, buffer, !options.skipCovers);\n }\n }\n });\n }\n static parseTagFooter(metadata, buffer, includeCovers) {\n const footer = APEv2Token_1.TagFooter.get(buffer, buffer.length - APEv2Token_1.TagFooter.len);\n assert.equal(footer.ID, preamble, 'APEv2 Footer preamble');\n this.parseTags(metadata, footer, buffer, buffer.length - footer.size, includeCovers);\n }\n static parseTags(metadata, footer, buffer, offset, includeCovers) {\n for (let i = 0; i < footer.fields; i++) {\n // Only APEv2 tag has tag item headers\n const tagItemHeader = APEv2Token_1.TagItemHeader.get(buffer, offset);\n offset += APEv2Token_1.TagItemHeader.len;\n let zero = Util_1.default.findZero(buffer, offset, buffer.length);\n const key = buffer.toString('ascii', offset, zero);\n offset = zero + 1;\n switch (tagItemHeader.flags.dataType) {\n case APEv2Token_1.DataType.text_utf8: { // utf-8 textstring\n const value = buffer.toString('utf8', offset, offset += tagItemHeader.size);\n const values = value.split(/\\x00/g);\n /*jshint loopfunc:true */\n for (const val of values) {\n metadata.addTag(tagFormat, key, val);\n }\n break;\n }\n case APEv2Token_1.DataType.binary: // binary (probably artwork)\n if (includeCovers) {\n const picData = buffer.slice(offset, offset + tagItemHeader.size);\n let off = 0;\n zero = Util_1.default.findZero(picData, off, picData.length);\n const description = picData.toString('utf8', off, zero);\n off = zero + 1;\n const data = Buffer.from(picData.slice(off));\n const fileType = FileType(data);\n if (fileType) {\n if (fileType.mime.indexOf('image/') === 0) {\n const picture = {\n description,\n data,\n format: fileType.mime\n };\n offset += tagItemHeader.size;\n metadata.addTag(tagFormat, key, picture);\n }\n else {\n debug(`Unexpected binary tag of type': ${fileType.mime}`);\n }\n }\n else {\n debug(`Failed to determine file type for binary tag: ${key}`);\n }\n }\n break;\n case APEv2Token_1.DataType.external_info:\n debug(`Ignore external info ${key}`);\n break;\n default:\n throw new Error(`Unexpected data-type: ${tagItemHeader.flags.dataType}`);\n }\n }\n }\n parse() {\n return __awaiter(this, void 0, void 0, function* () {\n const descriptor = yield this.tokenizer.readToken(APEv2Token_1.DescriptorParser);\n assert.equal(descriptor.ID, 'MAC ', 'descriptor.ID');\n this.ape.descriptor = descriptor;\n const lenExp = descriptor.descriptorBytes - APEv2Token_1.DescriptorParser.len;\n const header = yield (lenExp > 0 ? this.parseDescriptorExpansion(lenExp) : this.parseHeader());\n yield this.tokenizer.readToken(new Token.IgnoreType(header.forwardBytes));\n return APEv2Parser.parseTagHeader(this.metadata, this.tokenizer, this.options);\n });\n }\n parseDescriptorExpansion(lenExp) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.tokenizer.readToken(new Token.IgnoreType(lenExp));\n return this.parseHeader();\n });\n }\n parseHeader() {\n return __awaiter(this, void 0, void 0, function* () {\n const header = yield this.tokenizer.readToken(APEv2Token_1.Header);\n // ToDo before\n this.metadata.setFormat('lossless', true);\n this.metadata.setFormat('dataformat', 'Monkey\\'s Audio');\n this.metadata.setFormat('bitsPerSample', header.bitsPerSample);\n this.metadata.setFormat('sampleRate', header.sampleRate);\n this.metadata.setFormat('numberOfChannels', header.channel);\n this.metadata.setFormat('duration', APEv2Parser.calculateDuration(header));\n return {\n forwardBytes: this.ape.descriptor.seekTableBytes + this.ape.descriptor.headerDataBytes +\n this.ape.descriptor.apeFrameDataBytes + this.ape.descriptor.terminatingDataBytes\n };\n });\n }\n}\nexports.APEv2Parser = APEv2Parser;\n//# sourceMappingURL=APEv2Parser.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst type_1 = require(\"strtok3/lib/type\");\nconst ID3v2_1 = require(\"./ID3v2\");\nconst ID3v2Parser_1 = require(\"./ID3v2Parser\");\nconst ID3v1Parser_1 = require(\"../id3v1/ID3v1Parser\");\nconst _debug = require(\"debug\");\nconst BasicParser_1 = require(\"../common/BasicParser\");\nconst debug = _debug('music-metadata:parser:ID3');\n/**\n * Abstract parser which tries take ID3v2 and ID3v1 headers.\n */\nclass AbstractID3Parser extends BasicParser_1.BasicParser {\n constructor() {\n super(...arguments);\n this.id3parser = new ID3v2Parser_1.ID3v2Parser();\n }\n static startsWithID3v2Header(tokenizer) {\n return __awaiter(this, void 0, void 0, function* () {\n return (yield tokenizer.peekToken(ID3v2_1.ID3v2Token.Header)).fileIdentifier === 'ID3';\n });\n }\n parse() {\n return this.parseID3v2().catch(err => {\n if (err.message === type_1.endOfFile)\n // ToDo: maybe a warning?\n return;\n else\n throw err;\n });\n }\n finalize() {\n return;\n }\n parseID3v2() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.tryReadId3v2Headers();\n debug(\"End of ID3v2 header, go to MPEG-parser: pos=%s\", this.tokenizer.position);\n yield this._parse();\n if (this.options.skipPostHeaders && this.metadata.hasAny()) {\n this.finalize();\n }\n else {\n const id3v1parser = new ID3v1Parser_1.ID3v1Parser();\n yield id3v1parser.init(this.metadata, this.tokenizer, this.options).parse();\n this.finalize();\n }\n });\n }\n tryReadId3v2Headers() {\n return __awaiter(this, void 0, void 0, function* () {\n const id3Header = yield this.tokenizer.peekToken(ID3v2_1.ID3v2Token.Header);\n if (id3Header.fileIdentifier === \"ID3\") {\n debug(\"Found ID3v2 header, pos=%s\", this.tokenizer.position);\n yield this.id3parser.parse(this.metadata, this.tokenizer, this.options);\n return this.tryReadId3v2Headers();\n }\n });\n }\n}\nexports.AbstractID3Parser = AbstractID3Parser;\n//# sourceMappingURL=AbstractID3Parser.js.map","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nvar nullListeners = {\n notify: function notify() {}\n};\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(store, parentSub) {\n this.store = store;\n this.parentSub = parentSub;\n this.unsubscribe = null;\n this.listeners = nullListeners;\n this.handleChangeWrapper = this.handleChangeWrapper.bind(this);\n }\n\n var _proto = Subscription.prototype;\n\n _proto.addNestedSub = function addNestedSub(listener) {\n this.trySubscribe();\n return this.listeners.subscribe(listener);\n };\n\n _proto.notifyNestedSubs = function notifyNestedSubs() {\n this.listeners.notify();\n };\n\n _proto.handleChangeWrapper = function handleChangeWrapper() {\n if (this.onStateChange) {\n this.onStateChange();\n }\n };\n\n _proto.isSubscribed = function isSubscribed() {\n return Boolean(this.unsubscribe);\n };\n\n _proto.trySubscribe = function trySubscribe() {\n if (!this.unsubscribe) {\n this.unsubscribe = this.parentSub ? this.parentSub.addNestedSub(this.handleChangeWrapper) : this.store.subscribe(this.handleChangeWrapper);\n this.listeners = createListenerCollection();\n }\n };\n\n _proto.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n this.listeners.clear();\n this.listeners = nullListeners;\n }\n };\n\n return Subscription;\n}();\n\nexport { Subscription as default };","import React, { useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport Subscription from '../utils/Subscription';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = new Subscription(store);\n subscription.onStateChange = subscription.notifyNestedSubs;\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useEffect(function () {\n var subscription = contextValue.subscription;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","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 _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 { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\n selectorFactory is a func that is responsible for returning the selector function used to\n compute new props from state, props, and dispatch. For example:\n export default connectAdvanced((dispatch, options) => (state, props) => ({\n thing: state.things[props.thingId],\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\n }))(YourComponent)\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\n props. Do not use connectAdvanced directly without memoizing results between calls to your\n selector, otherwise the Connect component will re-render on every state or props change.\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: <Provider context={MyContext}><ConnectedComponent context={MyContext} /></Provider>. ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, [\"reactReduxForwardedRef\"]);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a <Provider>, \") + \"or pass a custom React context provider to <Provider> and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n var subscription = new Subscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nexport default function isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n var baseProto = proto;\n\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n\n return proto === baseProto;\n}","/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nexport default function warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n\n}","import isPlainObject from './isPlainObject';\nimport warning from './warning';\nexport default function verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n warning(methodName + \"() in \" + displayName + \" must return a plain object. Instead received \" + value + \".\");\n }\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import { bindActionCreators } from 'redux';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import warning from '../utils/warning';\n\nfunction verify(selector, methodName, displayName) {\n if (!selector) {\n throw new Error(\"Unexpected value for \" + methodName + \" in \" + displayName + \".\");\n } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n if (!Object.prototype.hasOwnProperty.call(selector, 'dependsOnOwnProps')) {\n warning(\"The selector for \" + methodName + \" of \" + displayName + \" did not specify a value for dependsOnOwnProps.\");\n }\n }\n}\n\nexport default function verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, displayName) {\n verify(mapStateToProps, 'mapStateToProps', displayName);\n verify(mapDispatchToProps, 'mapDispatchToProps', displayName);\n verify(mergeProps, 'mergeProps', displayName);\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"]);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\n connect is a facade over connectAdvanced. It turns its args into a compatible\n selectorFactory, which has the signature:\n\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\n \n connect passes its args to connectAdvanced as options, which will in turn pass them to\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\n\n selectorFactory returns a final props selector from its mapStateToProps,\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\n mergePropsFactories, and pure args.\n\n The resulting final props selector is called by the Connect component instance whenever\n it receives new props or store state.\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"]);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default /*#__PURE__*/createConnect();","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\n * hook that you should usually not need to call directly.\n *\n * @returns {any} the value of the `ReactReduxContext`\n *\n * @example\n *\n * import React from 'react'\n * import { useReduxContext } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const { store } = useReduxContext()\n * return <div>{store.getState()}</div>\n * }\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\n * Hook factory, which creates a `useStore` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useStore` hook bound to the specified context.\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\n * A hook to access the redux store.\n *\n * @returns {any} the redux store\n *\n * @example\n *\n * import React from 'react'\n * import { useStore } from 'react-redux'\n *\n * export const ExampleComponent = () => {\n * const store = useStore()\n * return <div>{store.getState()}</div>\n * }\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useDispatch` hook bound to the specified context.\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\n * A hook to access the redux `dispatch` function.\n *\n * @returns {any|function} redux store's `dispatch` function\n *\n * @example\n *\n * import React, { useCallback } from 'react'\n * import { useDispatch } from 'react-redux'\n *\n * export const CounterComponent = ({ value }) => {\n * const dispatch = useDispatch()\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\n * return (\n * <div>\n * <span>{value}</span>\n * <button onClick={increaseCounter}>Increase counter</button>\n * </div>\n * )\n * }\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport Subscription from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return new Subscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n selectedState = selector(storeState);\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newSelectedState = latestSelector.current(store.getState());\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = newSelectedState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\n * Hook factory, which creates a `useSelector` hook bound to a given context.\n *\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\n * @returns {Function} A `useSelector` hook bound to the specified context.\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production' && !selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\n * A hook to access the redux store's state. This hook takes a selector function\n * as an argument. The selector is called with the store state.\n *\n * This hook takes an optional equality comparison function as the second parameter\n * that allows you to customize the way the selected state is compared to determine\n * whether the component needs to be re-rendered.\n *\n * @param {Function} selector the selector function\n * @param {Function=} equalityFn the function that will be used to determine equality\n *\n * @returns {any} the selected state\n *\n * @example\n *\n * import React from 'react'\n * import { useSelector } from 'react-redux'\n *\n * export const CounterComponent = () => {\n * const counter = useSelector(state => state.counter)\n * return <div>{counter}</div>\n * }\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","/* eslint-disable import/no-unresolved */\nexport { unstable_batchedUpdates } from 'react-dom';","import Provider from './components/Provider';\nimport connectAdvanced from './components/connectAdvanced';\nimport { ReactReduxContext } from './components/Context';\nimport connect from './connect/connect';\nimport { useDispatch, createDispatchHook } from './hooks/useDispatch';\nimport { useSelector, createSelectorHook } from './hooks/useSelector';\nimport { useStore, createStoreHook } from './hooks/useStore';\nimport { setBatch } from './utils/batch';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport shallowEqual from './utils/shallowEqual';\nsetBatch(batch);\nexport { Provider, connectAdvanced, ReactReduxContext, connect, batch, useDispatch, createDispatchHook, useSelector, createSelectorHook, useStore, createStoreHook, shallowEqual };","function createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexport default thunk;","export const ADD_TRACK_FROM_URL = \"ADD_TRACK_FROM_URL\";\nexport const CLOSE_WINAMP = \"CLOSE_WINAMP\";\nexport const OPEN_WINAMP = \"OPEN_WINAMP\";\nexport const MINIMIZE_WINAMP = \"MINIMIZE_WINAMP\";\nexport const IS_PLAYING = \"IS_PLAYING\";\nexport const IS_STOPPED = \"IS_STOPPED\";\nexport const PAUSE = \"PAUSE\";\nexport const PLAY = \"PLAY\";\nexport const SEEK_TO_PERCENT_COMPLETE = \"SEEK_TO_PERCENT_COMPLETE\";\nexport const SET_BALANCE = \"SET_BALANCE\";\nexport const SET_BAND_VALUE = \"SET_BAND_VALUE\";\nexport const SET_FOCUS = \"SET_FOCUS\";\nexport const SET_BAND_FOCUS = \"SET_BAND_FOCUS\";\nexport const SET_FOCUSED_WINDOW = \"SET_FOCUSED_WINDOW\";\nexport const SET_MEDIA = \"SET_MEDIA\";\nexport const SET_SCRUB_POSITION = \"SET_SCRUB_POSITION\";\nexport const SET_SKIN_DATA = \"SET_SKIN_DATA\";\nexport const SET_VOLUME = \"SET_VOLUME\";\nexport const START_WORKING = \"START_WORKING\";\nexport const STEP_MARQUEE = \"STEP_MARQUEE\";\nexport const STOP = \"STOP\";\nexport const STOP_WORKING = \"STOP_WORKING\";\nexport const TOGGLE_DOUBLESIZE_MODE = \"TOGGLE_DOUBLESIZE_MODE\";\nexport const SET_EQ_AUTO = \"SET_EQ_AUTO\";\nexport const SET_EQ_ON = \"SET_EQ_ON\";\nexport const SET_EQ_OFF = \"SET_EQ_OFF\";\nexport const TOGGLE_LLAMA_MODE = \"TOGGLE_LLAMA_MODE\";\nexport const TOGGLE_REPEAT = \"TOGGLE_REPEAT\";\nexport const TOGGLE_SHUFFLE = \"TOGGLE_SHUFFLE\";\nexport const TOGGLE_TIME_MODE = \"TOGGLE_TIME_MODE\";\nexport const TOGGLE_VISUALIZER_STYLE = \"TOGGLE_VISUALIZER_STYLE\";\nexport const UNSET_FOCUS = \"UNSET_FOCUS\";\nexport const UPDATE_TIME_ELAPSED = \"UPDATE_TIME_ELAPSED\";\nexport const SET_USER_MESSAGE = \"SET_USER_MESSAGE\";\nexport const UNSET_USER_MESSAGE = \"UNSET_USER_MESSAGE\";\nexport const SET_PLAYLIST_SCROLL_POSITION = \"SET_PLAYLIST_SCROLL_POSITION\";\nexport const CLICKED_TRACK = \"CLICKED_TRACK\";\nexport const CTRL_CLICKED_TRACK = \"CTRL_CLICKED_TRACK\";\nexport const SHIFT_CLICKED_TRACK = \"SHIFT_CLICKED_TRACK\";\nexport const SELECT_ALL = \"SELECT_ALL\";\nexport const SELECT_ZERO = \"SELECT_ZERO\";\nexport const INVERT_SELECTION = \"INVERT_SELECTION\";\nexport const REMOVE_ALL_TRACKS = \"REMOVE_ALL_TRACKS\";\nexport const CROP_TRACKS = \"CROP_TRACKS\";\nexport const FILE_INFO = \"FILE_INFO\";\nexport const REMOVE_TRACKS = \"REMOVE_TRACKS\";\nexport const SET_AVAILABLE_SKINS = \"SET_AVAILABLE_SKINS\";\nexport const REVERSE_LIST = \"REVERSE_LIST\";\nexport const RANDOMIZE_LIST = \"RANDOMIZE_LIST\";\nexport const SET_TRACK_ORDER = \"SET_TRACK_ORDER\";\nexport const PLAY_TRACK = \"PLAY_TRACK\";\nexport const BUFFER_TRACK = \"BUFFER_TRACK\";\nexport const DRAG_SELECTED = \"DRAG_SELECTED\";\nexport const SET_MEDIA_TAGS = \"SET_MEDIA_TAGS\";\nexport const SET_MEDIA_DURATION = \"SET_MEDIA_DURATION\";\nexport const TOGGLE_WINDOW = \"TOGGLE_WINDOW\";\nexport const CLOSE_WINDOW = \"CLOSE_WINDOW\";\nexport const MEDIA_TAG_REQUEST_INITIALIZED = \"MEDIA_TAG_REQUEST_INITIALIZED\";\nexport const MEDIA_TAG_REQUEST_FAILED = \"MEDIA_TAG_REQUEST_FAILED\";\nexport const NETWORK_CONNECTED = \"NETWORK_CONNECTED\";\nexport const NETWORK_DISCONNECTED = \"NETWORK_DISCONNECTED\";\nexport const UPDATE_WINDOW_POSITIONS = \"UPDATE_WINDOW_POSITIONS\";\nexport const WINDOW_SIZE_CHANGED = \"WINDOW_SIZE_CHANGED\";\nexport const TOGGLE_WINDOW_SHADE_MODE = \"TOGGLE_WINDOW_SHADE_MODE\";\nexport const LOADED = \"LOADED\";\nexport const SET_Z_INDEX = \"SET_Z_INDEX\";\nexport const DISABLE_MARQUEE = \"DISABLE_MARQUEE\";\nexport const SET_DUMMY_VIZ_DATA = \"SET_DUMMY_VIZ_DATA\";\nexport const SET_WINDOW_VISIBILITY = \"SET_WINDOW_VISIBILITY\";\nexport const LOADING = \"LOADING\";\nexport const CLOSE_REQUESTED = \"CLOSE_REQUESTED\";\nexport const LOAD_SERIALIZED_STATE = \"LOAD_SERIALIZED_STATE\";\nexport const RESET_WINDOW_SIZES = \"RESET_WINDOW_SIZES\";\nexport const BROWSER_WINDOW_SIZE_CHANGED = \"BROWSER_WINDOW_SIZE_CHANGED\";\nexport const LOAD_DEFAULT_SKIN = \"LOAD_DEFAULT_SKIN\";\nexport const ENABLE_MILKDROP = \"ENABLE_MILKDROP\";\nexport const SET_MILKDROP_DESKTOP = \"SET_MILKDROP_DESKTOP\";\nexport const SET_VISUALIZER_STYLE = \"SET_VISUALIZER_STYLE\";\nexport const GOT_BUTTERCHURN_PRESETS = \"GOT_BUTTERCHURN_PRESETS\";\nexport const GOT_BUTTERCHURN = \"GOT_BUTTERCHURN\";\nexport const RESOLVE_PRESET_AT_INDEX = \"RESOLVE_PRESET_AT_INDEX\";\nexport const SELECT_PRESET_AT_INDEX = \"SELECT_PRESET_AT_INDEX\";\nexport const TOGGLE_PRESET_OVERLAY = \"TOGGLE_PRESET_OVERLAY\";\nexport const PRESET_REQUESTED = \"PRESET_REQUESTED\";\nexport const TOGGLE_RANDOMIZE_PRESETS = \"TOGGLE_RANDOMIZE_PRESETS\";\nexport const TOGGLE_PRESET_CYCLING = \"TOGGLE_PRESET_CYCLING\";\nexport const SCHEDULE_MILKDROP_MESSAGE = \"SCHEDULE_MILKDROP_MESSAGE\";\nexport const SET_MILKDROP_FULLSCREEN = \"SET_MILKDROP_FULLSCREEN\";\n","import {\n Band,\n MediaTagRequestStatus,\n MediaStatus,\n LoadStyle,\n TimeMode,\n} from \"./types\";\nimport baseSkin from \"./baseSkin.json\";\nexport const BANDS: Band[] = [\n 60,\n 170,\n 310,\n 600,\n 1000,\n 3000,\n 6000,\n 12000,\n 14000,\n 16000,\n];\n\nexport const WINDOWS = {\n MAIN: \"main\",\n PLAYLIST: \"playlist\",\n EQUALIZER: \"equalizer\",\n MILKDROP: \"milkdrop\",\n};\n\nexport const LOAD_STYLE: Record<LoadStyle, LoadStyle> = {\n BUFFER: \"BUFFER\",\n PLAY: \"PLAY\",\n NONE: \"NONE\",\n};\n\n// TODO: Make this an enum?\nexport const MEDIA_TAG_REQUEST_STATUS: Record<\n MediaTagRequestStatus,\n MediaTagRequestStatus\n> = {\n INITIALIZED: \"INITIALIZED\",\n FAILED: \"FAILED\",\n COMPLETE: \"COMPLETE\",\n NOT_REQUESTED: \"NOT_REQUESTED\",\n};\n\nexport const UTF8_ELLIPSIS = \"\\u2026\";\nexport const CHARACTER_WIDTH = 5;\nexport const WINDOW_RESIZE_SEGMENT_WIDTH = 25;\nexport const WINDOW_RESIZE_SEGMENT_HEIGHT = 29;\nexport const WINDOW_HEIGHT = 116;\nexport const WINDOW_WIDTH = 275;\nexport const TRACK_HEIGHT = 13;\nexport const LETTERS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".split(\"\");\n\nexport const DEFAULT_SKIN = baseSkin;\n\nexport const VISUALIZERS = {\n OSCILLOSCOPE: \"OSCILLOSCOPE\",\n BAR: \"BAR\",\n NONE: \"NONE\",\n MILKDROP: \"MILKDROP\",\n};\n\nexport const VISUALIZER_ORDER = [\n VISUALIZERS.BAR,\n VISUALIZERS.OSCILLOSCOPE, // TODO: Verify the order\n VISUALIZERS.NONE,\n];\n\nexport const TIME_MODE: Record<TimeMode, TimeMode> = {\n ELAPSED: \"ELAPSED\",\n REMAINING: \"REMAINING\",\n};\n\n// TODO: Convert to enum once we are fully Typescript\nexport const MEDIA_STATUS: Record<MediaStatus, MediaStatus> = {\n PLAYING: \"PLAYING\",\n STOPPED: \"STOPPED\",\n PAUSED: \"PAUSED\",\n};\n","import { DEFAULT_SKIN } from \"./constants\";\nimport { WindowInfo } from \"./types\";\n\ninterface Time {\n minutesFirstDigit: string;\n minutesSecondDigit: string;\n secondsFirstDigit: string;\n secondsSecondDigit: string;\n}\n\ninterface IniData {\n [section: string]: {\n [key: string]: string;\n };\n}\n\nexport function imgFromUrl(url: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve(img);\n };\n img.onerror = reject;\n img.src = url;\n });\n}\n\nexport const getTimeObj = (time: number | null): Time => {\n if (time == null) {\n // If we clean up `<MiniTime />` we don't need to do this any more.\n return {\n minutesFirstDigit: \" \",\n minutesSecondDigit: \" \",\n secondsFirstDigit: \" \",\n secondsSecondDigit: \" \",\n };\n }\n const minutes = Math.floor(time / 60);\n const seconds = time % 60;\n\n const digits =\n time == null\n ? [\" \", \" \", \" \", \" \"]\n : [\n String(Math.floor(minutes / 10)),\n String(Math.floor(minutes % 10)),\n String(Math.floor(seconds / 10)),\n String(Math.floor(seconds % 10)),\n ];\n\n const [\n minutesFirstDigit,\n minutesSecondDigit,\n secondsFirstDigit,\n secondsSecondDigit,\n ] = digits;\n\n return {\n minutesFirstDigit,\n minutesSecondDigit,\n secondsFirstDigit,\n secondsSecondDigit,\n };\n};\n\nexport const getTimeStr = (\n time: number | null,\n truncate: boolean = true\n): string => {\n if (time == null) {\n return \"\";\n }\n const {\n minutesFirstDigit,\n minutesSecondDigit,\n secondsFirstDigit,\n secondsSecondDigit,\n } = getTimeObj(time);\n\n return [\n truncate && minutesFirstDigit === \"0\" ? \"\" : minutesFirstDigit,\n minutesSecondDigit,\n \":\",\n secondsFirstDigit,\n secondsSecondDigit,\n ].join(\"\");\n};\n\nexport const parseViscolors = (text: string): string[] => {\n const entries = text.split(\"\\n\");\n const regex = /^\\s*(\\d+)\\s*,?\\s*(\\d+)\\s*,?\\s*(\\d+)/;\n const colors = [...DEFAULT_SKIN.colors];\n entries\n .map((line) => regex.exec(line))\n .filter(Boolean)\n .map((matches) => (matches as RegExpExecArray).slice(1, 4).join(\",\"))\n .map((rgb, i) => {\n colors[i] = `rgb(${rgb})`;\n });\n return colors;\n};\n\nconst SECTION_REGEX = /^\\s*\\[(.+?)\\]\\s*$/;\nconst PROPERTY_REGEX = /^\\s*([^;][^=]*)\\s*=\\s*(.*)\\s*$/;\n\nexport const parseIni = (text: string): IniData => {\n let section: string, match;\n return text.split(/[\\r\\n]+/g).reduce((data: IniData, line) => {\n if ((match = line.match(PROPERTY_REGEX)) && section != null) {\n const key = match[1].trim().toLowerCase();\n const value = match[2]\n // Ignore anything after a second `=`\n // TODO: What if this is inside quotes or escaped?\n .replace(/\\=.*$/g, \"\")\n .trim()\n // Strip quotes\n // TODO: What about escaped quotes?\n // TODO: What about unbalanced quotes?\n .replace(/(^\")|(\"$)|(^')|('$)/g, \"\");\n data[section][key] = value;\n } else if ((match = line.match(SECTION_REGEX))) {\n section = match[1].trim().toLowerCase();\n data[section] = {};\n }\n return data;\n }, {});\n};\n\nexport const clamp = (value: number, min: number, max: number): number =>\n Math.min(Math.max(value, min), max);\n\nexport const sum = (values: number[]): number =>\n values.reduce((total, value) => total + value, 0);\n\nexport const base64FromDataArray = (dataArray: Uint8Array): string => {\n return window.btoa(String.fromCharCode(...dataArray));\n};\n\nexport const base64FromArrayBuffer = (arrayBuffer: ArrayBuffer): string => {\n return base64FromDataArray(new Uint8Array(arrayBuffer));\n};\n\n// https://stackoverflow.com/a/15832662/1263117\nexport function downloadURI(uri: string, name: string): void {\n const link = document.createElement(\"a\");\n link.download = name;\n link.href = uri;\n window.document.body.appendChild(link);\n link.click();\n window.document.body.removeChild(link);\n}\n\nexport const toPercent = (min: number, max: number, value: number): number =>\n (value - min) / (max - min);\n\nexport const percentToRange = (percent: number, min: number, max: number) =>\n min + Math.round(percent * (max - min));\n\nexport const percentToIndex = (percent: number, length: number): number =>\n percentToRange(percent, 0, length - 1);\n\nconst rebound = (\n oldMin: number,\n oldMax: number,\n newMin: number,\n newMax: number\n) => (oldValue: number): number =>\n percentToRange(toPercent(oldMin, oldMax, oldValue), newMin, newMax);\n\n// Convert an .eqf value to a 0-100\nexport const normalizeEqBand = rebound(1, 64, 0, 100);\n\n// Convert a 0-100 to an .eqf value\nexport const denormalizeEqBand = rebound(0, 100, 1, 64);\n\n// Merge a `source` object to a `target` recursively\n// TODO: The typing here is a bit of a disaster.\nexport function merge<T extends object, S extends object>(\n target: T,\n source: S\n): T & S {\n const s = source as any;\n const t = target as any;\n // Iterate through `source` properties and if an `Object` set property to merge of `target` and `source` properties\n for (const key of Object.keys(s as any)) {\n if (s[key] instanceof Object) Object.assign(s[key], merge(t[key], s[key]));\n }\n\n // Join `target` and modified `source`\n Object.assign(target || {}, source);\n return target as any;\n}\n\n// Maps a value in a range (defined my min/max) to a value in an array (options).\nexport function segment<V>(\n min: number,\n max: number,\n value: number,\n newValues: V[]\n): V {\n const ratio = toPercent(min, max, value);\n /*\n | 0 | 1 | 2 |\n 0 1 2 3\n */\n return newValues[percentToIndex(ratio, newValues.length)];\n}\n\n// https://bost.ocks.org/mike/shuffle/\n// Shuffle an array in O(n)\nexport function shuffle<T>(array: T[]): T[] {\n const sorted = [...array];\n let m = sorted.length;\n\n // While there remain elements to shuffle…\n while (m) {\n // Pick a remaining element…\n const i = Math.floor(Math.random() * m--);\n\n // And swap it with the current element.\n const val = sorted[m];\n sorted[m] = sorted[i];\n sorted[i] = val;\n }\n\n return sorted;\n}\n\nexport function sort<T>(\n array: T[],\n iteratee: (value: T) => number | string\n): T[] {\n return [...array].sort((a, b) => {\n const aKey = iteratee(a);\n const bKey = iteratee(b);\n if (aKey < bKey) {\n return -1;\n } else if (aKey > bKey) {\n return 1;\n }\n return 0;\n });\n}\n\nexport function moveSelected<V>(\n arr: V[],\n isSelected: (index: number) => boolean,\n offset: number\n): V[] {\n const newArr = new Array(arr.length);\n let next = 0;\n for (let i = 0; i < newArr.length; i++) {\n const from = i - offset;\n // Is a value supposed to move here?\n if (from >= 0 && from < arr.length && isSelected(from)) {\n newArr[i] = arr[from];\n } else {\n while (next < arr.length && isSelected(next)) {\n next++;\n }\n newArr[i] = arr[next];\n next++;\n }\n }\n return newArr;\n}\n\nexport function spliceIn<T>(original: T[], start: number, newValues: T[]): T[] {\n const newArr = [...original];\n newArr.splice(start, 0, ...newValues);\n return newArr;\n}\n\nexport function replaceAtIndex<T>(arr: T[], index: number, newValue: T): T[] {\n return [...arr.slice(0, index), newValue, ...arr.slice(index + 1)];\n}\n\nexport function debounce(func: Function, delay: number): Function {\n let timeout: number;\n let callbackArgs: any[] = [];\n\n return function (context: Object, ...args: any[]): void {\n callbackArgs = args;\n\n if (timeout != null) {\n clearTimeout(timeout);\n }\n timeout = window.setTimeout(() => {\n func.apply(context, callbackArgs);\n }, delay);\n };\n}\n\n// Trailing edge only throttle\nexport function throttle(func: Function, delay: number): Function {\n let timeout: number | null = null;\n let callbackArgs: any[] = [];\n\n return function (context: Object, ...args: any[]): void {\n callbackArgs = args;\n\n if (!timeout) {\n timeout = window.setTimeout(() => {\n func.apply(context, callbackArgs);\n timeout = null;\n }, delay);\n }\n };\n}\n\nlet counter = 0;\nexport function uniqueId() {\n return counter++;\n}\n\nexport function objectForEach<V>(\n obj: { [key: string]: V },\n cb: (value: V, key: string) => void\n): void {\n Object.keys(obj).forEach((key) => cb(obj[key], key));\n}\n\nexport function objectMap<V, N>(\n obj: { [key: string]: V },\n cb: (value: V, key: string) => N\n): { [key: string]: N } {\n const modified: { [key: string]: N } = {};\n Object.keys(obj).forEach((key) => (modified[key] = cb(obj[key], key)));\n return modified;\n}\n\nexport function objectFilter<V>(\n obj: { [key: string]: V },\n predicate: (value: V, key: string) => boolean\n): { [key: string]: V } {\n // TODO: Could return the original reference if no values change\n return Object.keys(obj).reduce((newObj: { [key: string]: V }, key) => {\n if (predicate(obj[key], key)) {\n newObj[key] = obj[key];\n }\n return newObj;\n }, {});\n}\n\nexport const calculateBoundingBox = (windows: WindowInfo[]) => {\n if (windows.length === 0) {\n return null;\n }\n const windowSizes = windows.map((w) => ({\n left: w.x,\n top: w.y,\n bottom: w.y + w.height,\n right: w.x + w.width,\n }));\n return windowSizes.reduce((b, w) => ({\n left: Math.min(b.left, w.left),\n top: Math.min(b.top, w.top),\n bottom: Math.max(b.bottom, w.bottom),\n right: Math.max(b.right, w.right),\n }));\n};\n\nexport function findLastIndex<T>(arr: T[], cb: (val: T) => boolean) {\n for (let i = arr.length - 1; i >= 0; i--) {\n if (cb(arr[i])) {\n return i;\n }\n }\n return -1;\n}\n\nexport function getWindowSize(): { width: number; height: number } {\n // Aparently this is crazy across browsers.\n return {\n width: Math.max(\n document.body.scrollWidth,\n document.documentElement!.scrollWidth,\n document.body.offsetWidth,\n document.documentElement!.offsetWidth,\n document.body.clientWidth,\n document.documentElement!.clientWidth\n ),\n height: Math.max(\n document.body.scrollHeight,\n document.documentElement!.scrollHeight,\n document.body.offsetHeight,\n document.documentElement!.offsetHeight,\n document.body.clientHeight,\n document.documentElement!.clientHeight\n ),\n };\n}\n\nexport function getScreenSize(): { width: number; height: number } {\n return {\n width: window.screen.width,\n height: window.screen.height,\n };\n}\n\nexport function weakMapMemoize<T extends object, R>(\n func: (value: T) => R\n): (value: T) => R {\n const cache = new WeakMap();\n return (value: T) => {\n if (!cache.has(value)) {\n cache.set(value, func(value));\n }\n return cache.get(value);\n };\n}\n","import { Action } from \"../types\";\nimport {\n CLICKED_TRACK,\n CTRL_CLICKED_TRACK,\n SHIFT_CLICKED_TRACK,\n SELECT_ALL,\n SELECT_ZERO,\n INVERT_SELECTION,\n REMOVE_ALL_TRACKS,\n REMOVE_TRACKS,\n ADD_TRACK_FROM_URL,\n REVERSE_LIST,\n RANDOMIZE_LIST,\n SET_TRACK_ORDER,\n PLAY_TRACK,\n BUFFER_TRACK,\n DRAG_SELECTED,\n} from \"../actionTypes\";\nimport { shuffle, moveSelected } from \"../utils\";\n\nexport interface PlaylistState {\n trackOrder: number[];\n lastSelectedIndex: number | null;\n currentTrack: number | null;\n selectedTracks: Set<number>;\n}\n\nconst defaultPlaylistState: PlaylistState = {\n trackOrder: [],\n currentTrack: null,\n lastSelectedIndex: null,\n selectedTracks: new Set(),\n};\n\nfunction toggleSetMembership<T>(set: Set<T>, value: T): void {\n if (set.has(value)) {\n set.delete(value);\n } else {\n set.add(value);\n }\n}\n\nconst playlist = (\n state: PlaylistState = defaultPlaylistState,\n action: Action\n): PlaylistState => {\n switch (action.type) {\n case CLICKED_TRACK:\n return {\n ...state,\n selectedTracks: new Set([state.trackOrder[action.index]]),\n lastSelectedIndex: action.index,\n };\n case CTRL_CLICKED_TRACK: {\n const id = state.trackOrder[action.index];\n const newSelectedTracks = new Set(state.selectedTracks);\n toggleSetMembership(newSelectedTracks, id);\n return {\n ...state,\n selectedTracks: newSelectedTracks,\n // Using this as the lastClickedIndex is kinda funny, since you\n // may have just _un_selected the track. However, this is what\n // Winamp 2 does, so we'll copy it.\n lastSelectedIndex: action.index,\n };\n }\n case SHIFT_CLICKED_TRACK:\n if (state.lastSelectedIndex == null) {\n return state;\n }\n const clickedIndex = action.index;\n const start = Math.min(clickedIndex, state.lastSelectedIndex);\n const end = Math.max(clickedIndex, state.lastSelectedIndex);\n const selectedTracks = new Set(state.trackOrder.slice(start, end + 1));\n return {\n ...state,\n selectedTracks,\n };\n case SELECT_ALL:\n return {\n ...state,\n selectedTracks: new Set(state.trackOrder),\n };\n case SELECT_ZERO:\n return {\n ...state,\n selectedTracks: new Set(),\n };\n case INVERT_SELECTION:\n return {\n ...state,\n selectedTracks: new Set(\n state.trackOrder.filter((id) => !state.selectedTracks.has(id))\n ),\n };\n case REMOVE_ALL_TRACKS:\n // TODO: Consider disposing of ObjectUrls\n return {\n ...state,\n trackOrder: [],\n currentTrack: null,\n selectedTracks: new Set(),\n lastSelectedIndex: null,\n };\n case REMOVE_TRACKS:\n // TODO: Consider disposing of ObjectUrls\n const actionIds = new Set(action.ids.map(Number));\n const { currentTrack } = state;\n return {\n ...state,\n trackOrder: state.trackOrder.filter(\n (trackId) => !actionIds.has(trackId)\n ),\n currentTrack: actionIds.has(Number(currentTrack)) ? null : currentTrack,\n selectedTracks: new Set(\n Array.from(state.selectedTracks).filter((id) => actionIds.has(id))\n ),\n // TODO: This could probably be made to work, but we clear it just to be safe.\n lastSelectedIndex: null,\n };\n case REVERSE_LIST:\n return {\n ...state,\n trackOrder: [...state.trackOrder].reverse(),\n // TODO: This could probably be made to work, but we clear it just to be safe.\n lastSelectedIndex: null,\n };\n case RANDOMIZE_LIST:\n return {\n ...state,\n trackOrder: shuffle(state.trackOrder),\n };\n case SET_TRACK_ORDER:\n const { trackOrder } = action;\n return { ...state, trackOrder };\n case ADD_TRACK_FROM_URL:\n const atIndex =\n action.atIndex == null ? state.trackOrder.length : action.atIndex;\n return {\n ...state,\n trackOrder: [\n ...state.trackOrder.slice(0, atIndex),\n Number(action.id),\n ...state.trackOrder.slice(atIndex),\n ],\n // TODO: This could probably be made to work, but we clear it just to be safe.\n lastSelectedIndex: null,\n };\n case PLAY_TRACK:\n case BUFFER_TRACK:\n return {\n ...state,\n currentTrack: action.id,\n };\n case DRAG_SELECTED:\n return {\n ...state,\n trackOrder: moveSelected(\n state.trackOrder,\n (i) => state.selectedTracks.has(state.trackOrder[i]),\n action.offset\n ),\n // TODO: This could probably be made to work, but we clear it just to be safe.\n lastSelectedIndex: null,\n };\n default:\n return state;\n }\n};\n\nexport default playlist;\n","import { Action, WindowId, Box, Point } from \"../types\";\nimport { WINDOWS } from \"../constants\";\nimport {\n SET_FOCUSED_WINDOW,\n TOGGLE_WINDOW,\n CLOSE_WINDOW,\n SET_WINDOW_VISIBILITY,\n UPDATE_WINDOW_POSITIONS,\n WINDOW_SIZE_CHANGED,\n TOGGLE_WINDOW_SHADE_MODE,\n LOAD_SERIALIZED_STATE,\n BROWSER_WINDOW_SIZE_CHANGED,\n RESET_WINDOW_SIZES,\n ENABLE_MILKDROP,\n} from \"../actionTypes\";\nimport * as Utils from \"../utils\";\nimport { WindowsSerializedStateV1 } from \"../serializedStates/v1Types\";\n\nexport type WindowPosition = Point;\n\nexport type WindowPositions = {\n [windowId: string]: WindowPosition;\n};\n\nexport interface WebampWindow {\n title: string;\n size: [number, number];\n open: boolean;\n hidden: boolean;\n shade?: boolean;\n canResize: boolean;\n canShade: boolean;\n canDouble: boolean;\n hotkey?: string;\n position: WindowPosition;\n}\n\nexport interface WindowInfo extends Box {\n key: WindowId;\n}\nexport interface WindowsState {\n focused: WindowId | null;\n genWindows: { [name: string]: WebampWindow };\n browserWindowSize: { height: number; width: number };\n positionsAreRelative: boolean;\n windowOrder: WindowId[];\n}\n\nconst defaultWindowsState: WindowsState = {\n focused: WINDOWS.MAIN,\n positionsAreRelative: true,\n genWindows: {\n // TODO: Remove static capabilites and derive them from ids/generic\n [WINDOWS.MAIN]: {\n title: \"Main Window\",\n size: [0, 0],\n open: true,\n hidden: false,\n shade: false,\n canResize: false,\n canShade: true,\n canDouble: true,\n hotkey: \"Alt+W\",\n position: { x: 0, y: 0 },\n },\n [WINDOWS.EQUALIZER]: {\n title: \"Equalizer\",\n size: [0, 0],\n open: true,\n hidden: false,\n shade: false,\n canResize: false,\n canShade: true,\n canDouble: true,\n hotkey: \"Alt+G\",\n position: { x: 0, y: 0 },\n },\n [WINDOWS.PLAYLIST]: {\n title: \"Playlist Editor\",\n size: [0, 0],\n open: true,\n hidden: false,\n shade: false,\n canResize: true,\n canShade: true,\n canDouble: false,\n hotkey: \"Alt+E\",\n position: { x: 0, y: 0 },\n },\n },\n browserWindowSize: { width: 0, height: 0 },\n windowOrder: [\n WINDOWS.PLAYLIST,\n WINDOWS.EQUALIZER,\n WINDOWS.MILKDROP,\n WINDOWS.MAIN,\n ],\n};\n\nconst windows = (\n state: WindowsState = defaultWindowsState,\n action: Action\n): WindowsState => {\n switch (action.type) {\n case ENABLE_MILKDROP:\n return {\n ...state,\n genWindows: {\n ...state.genWindows,\n [WINDOWS.MILKDROP]: {\n title: \"Milkdrop\",\n size: [0, 0],\n open: action.open,\n hidden: false,\n shade: false,\n canResize: true,\n canShade: false,\n canDouble: false,\n position: { x: 0, y: 0 },\n },\n },\n };\n case SET_FOCUSED_WINDOW:\n let windowOrder = state.windowOrder;\n if (action.window != null) {\n windowOrder = [\n ...state.windowOrder.filter((windowId) => windowId !== action.window),\n action.window,\n ];\n }\n return { ...state, focused: action.window, windowOrder };\n case TOGGLE_WINDOW_SHADE_MODE:\n const { canShade } = state.genWindows[action.windowId];\n if (!canShade) {\n throw new Error(\n `Tried to shade/unshade a window that cannot be shaded: ${action.windowId}`\n );\n }\n return {\n ...state,\n genWindows: {\n ...state.genWindows,\n [action.windowId]: {\n ...state.genWindows[action.windowId],\n shade: !state.genWindows[action.windowId].shade,\n },\n },\n };\n case TOGGLE_WINDOW:\n const windowState = state.genWindows[action.windowId];\n return {\n ...state,\n genWindows: {\n ...state.genWindows,\n [action.windowId]: {\n ...windowState,\n open: !windowState.open,\n // Reset hidden state when opening window\n hidden: windowState.open ? windowState.hidden : false,\n },\n },\n };\n case CLOSE_WINDOW:\n return {\n ...state,\n genWindows: {\n ...state.genWindows,\n [action.windowId]: {\n ...state.genWindows[action.windowId],\n open: false,\n },\n },\n };\n case SET_WINDOW_VISIBILITY:\n return {\n ...state,\n genWindows: {\n ...state.genWindows,\n [action.windowId]: {\n ...state.genWindows[action.windowId],\n hidden: action.hidden,\n },\n },\n };\n case WINDOW_SIZE_CHANGED:\n const { canResize } = state.genWindows[action.windowId];\n if (!canResize) {\n throw new Error(\n `Tried to resize a window that cannot be resized: ${action.windowId}`\n );\n }\n return {\n ...state,\n genWindows: {\n ...state.genWindows,\n [action.windowId]: {\n ...state.genWindows[action.windowId],\n size: action.size,\n },\n },\n };\n case UPDATE_WINDOW_POSITIONS:\n return {\n ...state,\n positionsAreRelative:\n action.absolute === true ? false : state.positionsAreRelative,\n genWindows: Utils.objectMap(state.genWindows, (w, windowId) => {\n const newPosition = action.positions[windowId];\n if (newPosition == null) {\n return w;\n }\n return { ...w, position: newPosition };\n }),\n };\n case RESET_WINDOW_SIZES:\n return {\n ...state,\n genWindows: Utils.objectMap(state.genWindows, (w) => ({\n ...w,\n // Not sure why TypeScript can't figure this out for itself.\n size: [0, 0] as [number, number],\n })),\n };\n case LOAD_SERIALIZED_STATE: {\n const {\n genWindows,\n focused,\n positionsAreRelative,\n } = action.serializedState.windows;\n return {\n ...state,\n positionsAreRelative,\n genWindows: Utils.objectMap(state.genWindows, (w, windowId) => {\n const serializedW = genWindows[windowId];\n if (serializedW == null) {\n return w;\n }\n return { ...w, ...serializedW };\n }),\n focused,\n };\n }\n case BROWSER_WINDOW_SIZE_CHANGED:\n return {\n ...state,\n browserWindowSize: { height: action.height, width: action.width },\n };\n\n default:\n return state;\n }\n};\n\nexport function getSerializedState(\n state: WindowsState\n): WindowsSerializedStateV1 {\n return {\n positionsAreRelative: state.positionsAreRelative,\n genWindows: Utils.objectMap(state.genWindows, (w) => {\n return {\n size: w.size,\n open: w.open,\n hidden: w.hidden,\n shade: w.shade || false,\n position: w.position,\n };\n }),\n focused: state.focused,\n };\n}\n\nexport default windows;\n","import { Action, MediaStatus, TimeMode } from \"../types\";\nimport {\n PLAY,\n STOP,\n PAUSE,\n IS_STOPPED,\n IS_PLAYING,\n SET_VOLUME,\n SET_BALANCE,\n SET_MEDIA,\n TOGGLE_REPEAT,\n TOGGLE_SHUFFLE,\n TOGGLE_TIME_MODE,\n UPDATE_TIME_ELAPSED,\n LOAD_SERIALIZED_STATE,\n} from \"../actionTypes\";\nimport { TIME_MODE, MEDIA_STATUS } from \"../constants\";\nimport { MediaSerializedStateV1 } from \"../serializedStates/v1Types\";\n\nexport interface MediaState {\n timeMode: TimeMode; // TODO: Convert this to an enum\n timeElapsed: number;\n volume: number;\n balance: number;\n shuffle: boolean;\n repeat: boolean;\n status: MediaStatus;\n}\n\nconst defaultState = {\n timeMode: TIME_MODE.ELAPSED,\n timeElapsed: 0,\n\n // The winamp ini file declares the default volume as \"200\".\n // The UI seems to show a default volume near 78, which would\n // math with the default value being 200 out of 255.\n volume: Math.round((200 / 255) * 100),\n balance: 0,\n shuffle: false,\n repeat: false,\n // TODO: Enforce possible values\n status: MEDIA_STATUS.STOPPED,\n};\n\nconst media = (\n state: MediaState = defaultState,\n action: Action\n): MediaState => {\n switch (action.type) {\n // TODO: Make these constants\n case PLAY:\n case IS_PLAYING:\n return { ...state, status: MEDIA_STATUS.PLAYING };\n case PAUSE:\n return { ...state, status: MEDIA_STATUS.PAUSED };\n case STOP:\n case IS_STOPPED:\n return { ...state, status: MEDIA_STATUS.STOPPED };\n case TOGGLE_TIME_MODE:\n const newMode =\n state.timeMode === TIME_MODE.REMAINING\n ? TIME_MODE.ELAPSED\n : TIME_MODE.REMAINING;\n return { ...state, timeMode: newMode };\n case UPDATE_TIME_ELAPSED:\n return { ...state, timeElapsed: action.elapsed };\n case SET_MEDIA:\n return {\n ...state,\n };\n case SET_VOLUME:\n return { ...state, volume: action.volume };\n case SET_BALANCE:\n return { ...state, balance: action.balance };\n case TOGGLE_REPEAT:\n return { ...state, repeat: !state.repeat };\n case TOGGLE_SHUFFLE:\n return { ...state, shuffle: !state.shuffle };\n case LOAD_SERIALIZED_STATE:\n return { ...state, ...action.serializedState.media };\n default:\n return state;\n }\n};\n\nexport function getSerializedState(state: MediaState): MediaSerializedStateV1 {\n const { volume, balance, shuffle, repeat } = state;\n return { volume, balance, shuffle, repeat };\n}\n\nexport default media;\n","import {\n Action,\n SkinImages,\n Cursors,\n SkinRegion,\n GenLetterWidths,\n PlaylistStyle,\n SkinGenExColors,\n DummyVizData,\n} from \"../types\";\nimport * as Utils from \"../utils\";\nimport { createSelector } from \"reselect\";\n\nimport {\n CLOSE_WINAMP,\n OPEN_WINAMP,\n SET_SKIN_DATA,\n START_WORKING,\n STEP_MARQUEE,\n STOP_WORKING,\n TOGGLE_DOUBLESIZE_MODE,\n TOGGLE_LLAMA_MODE,\n TOGGLE_VISUALIZER_STYLE,\n SET_PLAYLIST_SCROLL_POSITION,\n LOADED,\n SET_Z_INDEX,\n DISABLE_MARQUEE,\n SET_DUMMY_VIZ_DATA,\n LOADING,\n LOAD_SERIALIZED_STATE,\n LOAD_DEFAULT_SKIN,\n} from \"../actionTypes\";\nimport { DEFAULT_SKIN, VISUALIZER_ORDER } from \"../constants\";\nimport { DisplaySerializedStateV1 } from \"../serializedStates/v1Types\";\n\nexport interface DisplayState {\n visualizerStyle: number;\n doubled: boolean;\n llama: boolean;\n disableMarquee: boolean;\n marqueeStep: number;\n skinImages: SkinImages;\n skinCursors: Cursors | null;\n skinRegion: SkinRegion;\n skinGenLetterWidths: GenLetterWidths | null;\n skinColors: string[]; // Theoretically this could be a tuple of a specific length\n skinPlaylistStyle: PlaylistStyle | null;\n skinGenExColors: SkinGenExColors;\n working: boolean;\n closed: boolean;\n loading: boolean;\n playlistScrollPosition: number;\n zIndex: number;\n dummyVizData: DummyVizData | null;\n}\n\nconst defaultSkinGenExColors = {\n itemBackground: \"rgb(0,0,0)\",\n itemForeground: \"rgb(0,255,0)\",\n windowBackground: \"rgb(56,55,87)\",\n buttonText: \"rgb(57,57,66)\",\n windowText: \"rgb(255,255,255)\",\n divider: \"rgb(117,116,139)\",\n playlistSelection: \"rgb(0,0,198)\",\n listHeaderBackground: \"rgb(72,72,120)\",\n listHeaderText: \"rgb(255,255,255)\",\n listHeaderFrameTopAndLeft: \"rgb(108,108,180)\",\n listHeaderFrameBottomAndRight: \"rgb(36,36,60)\",\n listHeaderFramePressed: \"rgb(18,18,30)\",\n listHeaderDeadArea: \"rgb(36,36,60)\",\n scrollbarOne: \"rgb(36,36,60)\",\n scrollbarTwo: \"rgb(36,36,60)\",\n pressedScrollbarOne: \"rgb(121,130,150)\",\n pressedScrollbarTwo: \"rgb(78,88,110)\",\n scrollbarDeadArea: \"rgb(36,36,60)\",\n listTextHighlighted: \"rgb(0,198,255)\",\n listTextHighlightedBackground: \"rgb(0,198,255)\",\n listTextSelected: \"rgb(0,198,255)\",\n listTextSelectedBackground: \"rgb(0,198,255)\",\n};\n\nconst defaultDisplayState = {\n doubled: false,\n marqueeStep: 0,\n disableMarquee: false,\n loading: true,\n llama: false,\n closed: false,\n working: false,\n skinImages: DEFAULT_SKIN.images,\n skinColors: DEFAULT_SKIN.colors,\n skinCursors: null,\n skinPlaylistStyle: null,\n skinRegion: {},\n visualizerStyle: 0, // Index into VISUALIZER_ORDER\n dummyVizData: null,\n playlistScrollPosition: 0,\n skinGenLetterWidths: null, // TODO: Get the default value for this?\n skinGenExColors: defaultSkinGenExColors,\n additionalVisualizers: [],\n zIndex: 0,\n};\n\nconst display = (\n state: DisplayState = defaultDisplayState,\n action: Action\n): DisplayState => {\n switch (action.type) {\n case LOAD_DEFAULT_SKIN: {\n const {\n skinImages,\n skinColors,\n skinCursors,\n skinPlaylistStyle,\n skinRegion,\n skinGenLetterWidths,\n skinGenExColors,\n } = defaultDisplayState;\n return {\n ...state,\n skinImages,\n skinColors,\n skinCursors,\n skinPlaylistStyle,\n skinRegion,\n skinGenLetterWidths,\n skinGenExColors,\n };\n }\n case TOGGLE_DOUBLESIZE_MODE:\n return { ...state, doubled: !state.doubled };\n case TOGGLE_LLAMA_MODE:\n return { ...state, llama: !state.llama };\n case STEP_MARQUEE:\n return state.disableMarquee\n ? state\n : { ...state, marqueeStep: state.marqueeStep + 1 };\n case DISABLE_MARQUEE:\n return { ...state, disableMarquee: true };\n case STOP_WORKING:\n return { ...state, working: false };\n case START_WORKING:\n return { ...state, working: true };\n case CLOSE_WINAMP:\n return { ...state, closed: true };\n case OPEN_WINAMP:\n return { ...state, closed: false };\n case LOADING:\n return { ...state, loading: true };\n case LOADED:\n return { ...state, loading: false };\n case SET_SKIN_DATA:\n const { data } = action;\n return {\n ...state,\n loading: false,\n skinImages: data.skinImages,\n skinColors: data.skinColors,\n skinPlaylistStyle: data.skinPlaylistStyle,\n skinCursors: data.skinCursors,\n skinRegion: data.skinRegion,\n skinGenLetterWidths: data.skinGenLetterWidths,\n skinGenExColors: data.skinGenExColors || defaultSkinGenExColors,\n };\n case TOGGLE_VISUALIZER_STYLE:\n return {\n ...state,\n visualizerStyle: (state.visualizerStyle + 1) % VISUALIZER_ORDER.length,\n };\n case SET_PLAYLIST_SCROLL_POSITION:\n return { ...state, playlistScrollPosition: action.position };\n case SET_Z_INDEX:\n return { ...state, zIndex: action.zIndex };\n case SET_DUMMY_VIZ_DATA:\n return { ...state, dummyVizData: action.data };\n case LOAD_SERIALIZED_STATE: {\n const { skinCursors, ...rest } = action.serializedState.display;\n const upgrade = (url: string) => ({ type: \"cur\", url } as const);\n const newSkinCursors =\n skinCursors == null ? null : Utils.objectMap(skinCursors, upgrade);\n return { ...state, skinCursors: newSkinCursors, ...rest };\n }\n default:\n return state;\n }\n};\nexport default display;\n\nexport const getSerializedState = (\n state: DisplayState\n): DisplaySerializedStateV1 => {\n // My kingdom for a type-safe `_.pick`.\n const {\n visualizerStyle,\n doubled,\n llama,\n marqueeStep,\n skinImages,\n skinCursors,\n skinRegion,\n skinGenLetterWidths,\n skinColors,\n skinPlaylistStyle,\n } = state;\n\n let newCursors: { [cursor: string]: string } | null = null;\n if (skinCursors != null) {\n // @ts-ignore Typescript does not like that we can have `undefined` as\n // values here. Since this is going to get serialized to JSON (which will\n // drop undefined) it's fine.\n // This code is geting removed soon anyway.\n newCursors = Utils.objectMap(skinCursors, (cursor) => {\n return cursor.type === \"cur\" ? cursor.url : undefined;\n });\n }\n return {\n visualizerStyle,\n doubled,\n llama,\n marqueeStep,\n skinImages,\n skinCursors: newCursors,\n skinRegion,\n skinGenLetterWidths,\n skinColors,\n skinPlaylistStyle,\n };\n};\n\nexport const getVisualizerStyle = createSelector(\n (state: DisplayState) => state.visualizerStyle,\n (visualizationStyle): string => {\n return VISUALIZER_ORDER[visualizationStyle];\n }\n);\n","import { Action, Slider } from \"../types\";\nimport {\n SET_FOCUS,\n SET_BAND_FOCUS,\n SET_SCRUB_POSITION,\n UNSET_FOCUS,\n SET_USER_MESSAGE,\n UNSET_USER_MESSAGE,\n} from \"../actionTypes\";\n\nexport interface UserInputState {\n focus: string | null; // TODO: Convert this to an enum?\n bandFocused: Slider | null;\n scrubPosition: number;\n userMessage: string | null;\n}\n\nconst defaultUserInput = {\n focus: null,\n bandFocused: null,\n scrubPosition: 0,\n userMessage: null,\n};\n\nexport const userInput = (\n state: UserInputState = defaultUserInput,\n action: Action\n): UserInputState => {\n switch (action.type) {\n case SET_FOCUS:\n return { ...state, focus: action.input, bandFocused: null };\n case SET_BAND_FOCUS:\n return { ...state, focus: action.input, bandFocused: action.bandFocused };\n case UNSET_FOCUS:\n return { ...state, focus: null, bandFocused: null };\n case SET_SCRUB_POSITION:\n return { ...state, scrubPosition: action.position };\n case SET_USER_MESSAGE:\n return { ...state, userMessage: action.message };\n case UNSET_USER_MESSAGE:\n return { ...state, userMessage: null };\n default:\n return state;\n }\n};\n\nexport default userInput;\n","import { Slider, Action } from \"./../types\";\n\nimport {\n SET_BAND_VALUE,\n SET_EQ_AUTO,\n SET_EQ_ON,\n SET_EQ_OFF,\n LOAD_SERIALIZED_STATE,\n} from \"../actionTypes\";\nimport { EqualizerSerializedStateV1 } from \"../serializedStates/v1Types\";\n\nexport interface EqualizerState {\n on: boolean;\n auto: boolean;\n sliders: Record<Slider, number>;\n}\n\nconst defaultState = {\n on: true,\n auto: false,\n sliders: {\n preamp: 50,\n 60: 50,\n 170: 50,\n 310: 50,\n 600: 50,\n 1000: 50,\n 3000: 50,\n 6000: 50,\n 12000: 50,\n 14000: 50,\n 16000: 50,\n },\n};\n\nconst equalizer = (\n state: EqualizerState = defaultState,\n action: Action\n): EqualizerState => {\n switch (action.type) {\n case SET_BAND_VALUE:\n const newSliders = { ...state.sliders, [action.band]: action.value };\n return { ...state, sliders: newSliders };\n case SET_EQ_ON:\n return { ...state, on: true };\n case SET_EQ_OFF:\n return { ...state, on: false };\n case SET_EQ_AUTO:\n return { ...state, auto: action.value };\n case LOAD_SERIALIZED_STATE:\n return action.serializedState.equalizer || state;\n default:\n return state;\n }\n};\n\nexport function getSerializedState(\n state: EqualizerState\n): EqualizerSerializedStateV1 {\n return state;\n}\n\nexport default equalizer;\n","import { Action } from \"../types\";\nimport { NETWORK_CONNECTED, NETWORK_DISCONNECTED } from \"../actionTypes\";\n\nexport interface NetworkState {\n connected: boolean;\n}\n\nconst network = (\n state: NetworkState = { connected: true },\n action: Action\n): NetworkState => {\n switch (action.type) {\n case NETWORK_CONNECTED:\n return { ...state, connected: true };\n case NETWORK_DISCONNECTED:\n return { ...state, connected: false };\n default:\n return state;\n }\n};\n\nexport default network;\n","import { Action, Skin } from \"../types\";\nimport { SET_AVAILABLE_SKINS } from \"../actionTypes\";\n\nexport interface SettingsState {\n availableSkins: Array<Skin>;\n}\n\nconst defaultSettingsState = {\n availableSkins: [],\n};\n\nconst settings = (\n state: SettingsState = defaultSettingsState,\n action: Action\n): SettingsState => {\n switch (action.type) {\n case SET_AVAILABLE_SKINS:\n return { ...state, availableSkins: action.skins };\n default:\n return state;\n }\n};\n\nexport default settings;\n","import invariant from \"invariant\";\nimport { IMusicMetadataBrowserApi } from \"./types\";\nimport { IAudioMetadata } from \"music-metadata-browser\"; // Import music-metadata type definitions\nimport * as Utils from \"./utils\";\n\ntype MediaDataType = string | ArrayBuffer | Blob;\n\nexport function genMediaTags(\n file: MediaDataType,\n musicMetadata: IMusicMetadataBrowserApi\n): Promise<IAudioMetadata> {\n invariant(\n file != null,\n \"Attempted to get the tags of media file without passing a file\"\n );\n\n const options = {\n duration: true,\n skipPostHeaders: true, // avoid unnecessary data to be read\n };\n\n if (typeof file === \"string\") {\n return musicMetadata.fetchFromUrl(file, options);\n }\n // Assume Blob\n return musicMetadata.parseBlob(file as Blob, options);\n}\n\nexport function genMediaDuration(url: string): Promise<number> {\n invariant(\n typeof url === \"string\",\n \"Attempted to get the duration of media file without passing a url\"\n );\n return new Promise((resolve, reject) => {\n // TODO: Does this actually stop downloading the file once it's\n // got the duration?\n const audio = document.createElement(\"audio\");\n audio.crossOrigin = \"anonymous\";\n const durationChange = () => {\n resolve(audio.duration);\n audio.removeEventListener(\"durationchange\", durationChange);\n audio.src = \"\";\n // TODO: Not sure if this really gets cleaned up.\n };\n audio.addEventListener(\"durationchange\", durationChange);\n audio.addEventListener(\"error\", (e) => {\n reject(e);\n });\n audio.src = url;\n });\n}\n\nexport async function genArrayBufferFromFileReference(\n fileReference: File\n): Promise<any> {\n invariant(\n fileReference != null,\n \"Attempt to get an ArrayBuffer without assigning a fileReference\"\n );\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result as ArrayBuffer);\n };\n reader.onerror = reject;\n reader.readAsArrayBuffer(fileReference);\n });\n}\n\nexport async function genStringFromFileReference(\n fileReference: File\n): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result as string);\n };\n reader.onerror = reject;\n reader.readAsText(fileReference);\n });\n}\n\ninterface PromptForFileReferenceOptions {\n accept?: string | null;\n directory?: boolean;\n}\n\nexport async function promptForFileReferences(\n { accept, directory = false }: PromptForFileReferenceOptions = {\n accept: null,\n directory: false,\n }\n): Promise<FileList> {\n return new Promise<FileList>((resolve) => {\n // Does this represent a memory leak somehow?\n // Can this fail? Do we ever reject?\n const fileInput = document.createElement(\"input\");\n if (accept) fileInput.setAttribute(\"accept\", accept);\n fileInput.type = \"file\";\n fileInput.multiple = true;\n // @ts-ignore Non-standard\n fileInput.webkitdirectory = directory;\n // @ts-ignore Non-standard\n fileInput.directory = directory;\n // @ts-ignore Non-standard\n fileInput.mozdirectory = directory;\n // Not entirely sure why this is needed, since the input\n // was just created, but somehow this helps prevent change\n // events from getting swallowed.\n // https://stackoverflow.com/a/12102992/1263117\n\n // @ts-ignore Technically you can't set this to null, it has to be a string.\n // But I don't feel like retesting it, so I'll leave it as null\n fileInput.value = null;\n fileInput.addEventListener(\"change\", (e: Event) => {\n const files = (<HTMLInputElement>e.target).files;\n resolve(files as FileList);\n });\n fileInput.click();\n });\n}\n\nfunction urlIsBlobUrl(url: string): boolean {\n return /^blob:/.test(url);\n}\n\nexport function curUrlFromByteArray(arr: Uint8Array) {\n const base64 = Utils.base64FromDataArray(arr);\n return `data:image/x-win-bitmap;base64,${base64}`;\n}\n\n// This is not perfect, but... meh: https://stackoverflow.com/a/36756650/1263117\nexport function filenameFromUrl(url: string): string | null {\n if (urlIsBlobUrl(url)) {\n return null;\n }\n\n const lastSegment = url.split(\"/\").pop();\n if (lastSegment == null) {\n return null;\n }\n return lastSegment.split(\"#\")[0].split(\"?\")[0];\n}\n","import { PlaylistTrack } from \"./types\";\nimport * as Utils from \"./utils\";\nimport * as FileUtils from \"./fileUtils\";\n\nexport const trackName = Utils.weakMapMemoize(\n (track: PlaylistTrack): string => {\n const { artist, title, defaultName, url } = track;\n if (artist && title) {\n return `${artist} - ${title}`;\n } else if (title) {\n return title;\n } else if (defaultName) {\n return defaultName;\n } else if (url) {\n const filename = FileUtils.filenameFromUrl(url);\n if (filename) {\n return filename;\n }\n }\n return \"???\";\n }\n);\n\nexport const trackFilename = Utils.weakMapMemoize(\n (track: PlaylistTrack): string => {\n if (track.url) {\n const urlFilename = FileUtils.filenameFromUrl(track.url);\n if (urlFilename != null) {\n return urlFilename;\n }\n }\n if (track.defaultName) {\n return track.defaultName;\n }\n return \"???\";\n }\n);\n","import { PlaylistTrack, Action } from \"../types\";\nimport {\n SET_MEDIA,\n SET_MEDIA_TAGS,\n SET_MEDIA_DURATION,\n MEDIA_TAG_REQUEST_INITIALIZED,\n MEDIA_TAG_REQUEST_FAILED,\n ADD_TRACK_FROM_URL,\n} from \"../actionTypes\";\nimport { MEDIA_TAG_REQUEST_STATUS } from \"../constants\";\nimport * as TrackUtils from \"../trackUtils\";\n\nexport interface TracksState {\n [id: string]: PlaylistTrack;\n}\n\nconst defaultPlaylistState: TracksState = {};\n\nconst tracks = (\n state: TracksState = defaultPlaylistState,\n action: Action\n): TracksState => {\n switch (action.type) {\n case ADD_TRACK_FROM_URL:\n return {\n ...state,\n [action.id]: {\n id: action.id,\n defaultName: action.defaultName || null,\n duration: action.duration ?? null,\n url: action.url,\n mediaTagsRequestStatus: MEDIA_TAG_REQUEST_STATUS.INITIALIZED,\n },\n };\n case SET_MEDIA: {\n const newTrack = {\n ...state[action.id],\n duration: action.length,\n };\n return {\n ...state,\n [action.id]: newTrack,\n };\n }\n case MEDIA_TAG_REQUEST_INITIALIZED:\n return {\n ...state,\n [action.id]: {\n ...state[action.id],\n mediaTagsRequestStatus: MEDIA_TAG_REQUEST_STATUS.INITIALIZED,\n },\n };\n case MEDIA_TAG_REQUEST_FAILED:\n return {\n ...state,\n [action.id]: {\n ...state[action.id],\n mediaTagsRequestStatus: MEDIA_TAG_REQUEST_STATUS.FAILED,\n },\n };\n case SET_MEDIA_DURATION: {\n return {\n ...state,\n [action.id]: {\n ...state[action.id],\n duration: action.duration,\n },\n };\n }\n case SET_MEDIA_TAGS:\n const track = state[action.id];\n const {\n sampleRate,\n bitrate,\n numberOfChannels,\n title,\n artist,\n album,\n albumArtUrl,\n } = action;\n const { kbps, khz, channels } = track;\n return {\n ...state,\n [action.id]: {\n ...track,\n mediaTagsRequestStatus: MEDIA_TAG_REQUEST_STATUS.COMPLETE,\n title,\n artist,\n album,\n albumArtUrl,\n kbps: bitrate != null ? String(Math.round(bitrate / 1000)) : kbps,\n khz: sampleRate != null ? String(Math.round(sampleRate / 1000)) : khz,\n channels: numberOfChannels != null ? numberOfChannels : channels,\n },\n };\n default:\n return state;\n }\n};\n\nexport default tracks;\n\nexport const getTrackDisplayName = (\n state: TracksState,\n id: number | null = null\n): string | null => {\n if (id == null) {\n return null;\n }\n const track = state[id];\n if (track == null) {\n return null;\n }\n\n return TrackUtils.trackName(track);\n};\n","import { PlaylistState } from \"./reducers/playlist\";\nimport { SettingsState } from \"./reducers/settings\";\nimport { UserInputState } from \"./reducers/userInput\";\nimport { MediaState } from \"./reducers/media\";\nimport { ThunkDispatch, ThunkAction } from \"redux-thunk\";\nimport { DisplayState } from \"./reducers/display\";\nimport {\n WindowsState,\n WindowPositions as _WindowPositions,\n WebampWindow as _WebampWindow,\n WindowInfo as _WindowInfo,\n WindowPosition as _WindowPosition,\n} from \"./reducers/windows\";\nimport { EqualizerState } from \"./reducers/equalizer\";\nimport { NetworkState } from \"./reducers/network\";\nimport { MilkdropState } from \"./reducers/milkdrop\";\nimport { SerializedStateV1 } from \"./serializedStates/v1Types\";\nimport { TracksState } from \"./reducers/tracks\";\nimport { IAudioMetadata, IOptions } from \"music-metadata-browser\";\nimport { Store as ReduxStore } from \"redux\";\n\n// Avoid warnings from Webpack: https://github.com/webpack/webpack/issues/7378\nexport type WebampWindow = _WebampWindow;\nexport type WindowInfo = _WindowInfo;\nexport type WindowPosition = _WindowPosition;\nexport type WindowPositions = _WindowPositions;\n\nexport interface Point {\n x: number;\n y: number;\n}\n\nexport interface Diff {\n x?: number;\n y?: number;\n}\n\nexport interface BoundingBox {\n width: number;\n height: number;\n}\n\nexport interface Box extends Point {\n width: number;\n height: number;\n}\n\nexport interface FilePicker {\n contextMenuName: string;\n filePicker: () => Promise<Track[]>;\n requiresNetwork: boolean;\n}\n\nexport type Skin = {\n url: string;\n name: string;\n};\n\nexport interface MilkdropMessage {\n text: string;\n time: number;\n}\n\nexport type Band =\n | 60\n | 170\n | 310\n | 600\n | 1000\n | 3000\n | 6000\n | 12000\n | 14000\n | 16000;\n\nexport type Slider = Band | \"preamp\";\n\nexport type CursorImage =\n | {\n type: \"cur\";\n url: string;\n }\n | {\n type: \"ani\";\n aniData: Uint8Array;\n };\n\n// TODO: Use a type to ensure these keys mirror the CURSORS constant in\n// skinParser.js\nexport type Cursors = { [cursor: string]: CursorImage };\n\nexport type GenLetterWidths = { [letter: string]: number };\n\nexport interface PlaylistStyle {\n normal: string;\n current: string;\n normalbg: string;\n selectedbg: string;\n font: string;\n}\n\n// TODO: Type these keys.\nexport type SkinImages = { [sprite: string]: string };\n\n// TODO: type these keys\nexport type SkinRegion = { [windowName: string]: string[] };\n\nexport type DummyVizData = {\n 0: 11.75;\n 8: 11.0625;\n 16: 8.5;\n 24: 7.3125;\n 32: 6.75;\n 40: 6.4375;\n 48: 6.25;\n 56: 5.875;\n 64: 5.625;\n 72: 5.25;\n 80: 5.125;\n 88: 4.875;\n 96: 4.8125;\n 104: 4.375;\n 112: 3.625;\n 120: 1.5625;\n};\n\nexport interface SkinGenExColors {\n itemBackground: string;\n itemForeground: string;\n windowBackground: string;\n buttonText: string;\n windowText: string;\n divider: string;\n playlistSelection: string;\n listHeaderBackground: string;\n listHeaderText: string;\n listHeaderFrameTopAndLeft: string;\n listHeaderFrameBottomAndRight: string;\n listHeaderFramePressed: string;\n listHeaderDeadArea: string;\n scrollbarOne: string;\n scrollbarTwo: string;\n pressedScrollbarOne: string;\n pressedScrollbarTwo: string;\n scrollbarDeadArea: string;\n listTextHighlighted: string;\n listTextHighlightedBackground: string;\n listTextSelected: string;\n listTextSelectedBackground: string;\n}\n\nexport type WindowId = string;\n\n// TODO: Fill these out once we actually use them.\nexport type SkinData = {\n skinImages: SkinImages;\n skinColors: string[];\n skinPlaylistStyle: PlaylistStyle;\n skinCursors: Cursors;\n skinRegion: SkinRegion;\n skinGenLetterWidths: GenLetterWidths;\n skinGenExColors: SkinGenExColors | null;\n};\n\n// This is what we actually pass to butterchurn\ntype ButterchurnPresetJson = {\n name: string;\n butterchurnPresetObject: Object;\n};\n\n// A URL that points to a Butterchurn preset\ninterface ButterchurnPresetUrl {\n name: string;\n butterchurnPresetUrl: string;\n}\n\nexport type LazyButterchurnPresetJson = {\n name: string;\n getButterchrunPresetObject: () => Promise<Object>;\n};\n\nexport type Preset =\n | ButterchurnPresetJson\n | ButterchurnPresetUrl\n | LazyButterchurnPresetJson;\n\nexport type StatePreset =\n | { type: \"RESOLVED\"; name: string; preset: Object }\n | { type: \"UNRESOLVED\"; name: string; getPreset: () => Promise<Object> };\n\nexport interface ButterchurnOptions {\n getPresets(): Promise<Preset[]>;\n importButterchurn(): Promise<any>;\n importConvertPreset?: () => Promise<{\n convertPreset(file: string, endpoint: string): Promise<Object>;\n }>;\n presetConverterEndpoint?: string;\n butterchurnOpen: boolean;\n}\n\nexport interface EqfPreset {\n name: string;\n hz60: number;\n hz170: number;\n hz310: number;\n hz600: number;\n hz1000: number;\n hz3000: number;\n hz12000: number;\n hz14000: number;\n hz16000: number;\n hz6000: number;\n preamp: number;\n}\n\nexport enum TransitionType {\n IMMEDIATE,\n DEFAULT,\n USER_PRESET,\n}\n\nexport interface Size {\n width: number;\n height: number;\n}\n\nexport type Action =\n | {\n type: \"@@init\";\n }\n | {\n type: \"NETWORK_CONNECTED\";\n }\n | {\n type: \"NETWORK_DISCONNECTED\";\n }\n | {\n type: \"SET_AVAILABLE_SKINS\";\n skins: Array<Skin>;\n }\n | {\n type: \"PLAY\";\n }\n | {\n type: \"IS_PLAYING\";\n }\n | {\n type: \"PAUSE\";\n }\n | {\n type: \"STOP\";\n }\n | {\n type: \"IS_STOPPED\";\n }\n | {\n type: \"TOGGLE_TIME_MODE\";\n }\n | {\n type: \"UPDATE_TIME_ELAPSED\";\n elapsed: number;\n }\n | {\n type: \"ADD_TRACK_FROM_URL\";\n atIndex: number | null;\n id: number;\n defaultName?: string;\n duration?: number;\n url: string;\n }\n | {\n type: \"SET_MEDIA\";\n id: number;\n length: number;\n kbps: string;\n khz: string;\n channels: number;\n }\n | {\n type: \"SET_VOLUME\";\n volume: number;\n }\n | {\n type: \"SET_BALANCE\";\n balance: number;\n }\n | {\n type: \"TOGGLE_REPEAT\";\n }\n | {\n type: \"TOGGLE_SHUFFLE\";\n }\n | {\n type: \"SET_FOCUS\";\n input: string;\n }\n | {\n type: \"SET_BAND_FOCUS\";\n input: string;\n bandFocused: Slider;\n }\n | {\n type: \"UNSET_FOCUS\";\n }\n | {\n type: \"SET_SCRUB_POSITION\";\n position: number;\n }\n | {\n type: \"SET_USER_MESSAGE\";\n message: string;\n }\n | {\n type: \"UNSET_USER_MESSAGE\";\n }\n | {\n type: \"TOGGLE_DOUBLESIZE_MODE\";\n }\n | {\n type: \"TOGGLE_LLAMA_MODE\";\n }\n | {\n type: \"STEP_MARQUEE\";\n }\n | {\n type: \"DISABLE_MARQUEE\";\n }\n | {\n type: \"STOP_WORKING\";\n }\n | {\n type: \"START_WORKING\";\n }\n | {\n type: \"CLOSE_WINAMP\";\n }\n | {\n type: \"OPEN_WINAMP\";\n }\n | {\n type: \"LOADING\";\n }\n | {\n type: \"LOADED\";\n }\n | {\n type: \"SET_SKIN_DATA\";\n data: SkinData;\n }\n | {\n type: \"TOGGLE_VISUALIZER_STYLE\";\n }\n | {\n type: \"SET_PLAYLIST_SCROLL_POSITION\";\n position: number;\n }\n | {\n type: \"SET_Z_INDEX\";\n zIndex: number;\n }\n | {\n type: \"SET_DUMMY_VIZ_DATA\";\n data: null;\n }\n | {\n type: \"SET_BAND_VALUE\";\n band: Slider;\n value: number;\n }\n | {\n type: \"SET_EQ_ON\";\n }\n | {\n type: \"SET_EQ_OFF\";\n }\n | {\n type: \"SET_EQ_AUTO\";\n value: boolean;\n }\n | {\n type: \"SET_FOCUSED_WINDOW\";\n window: WindowId | null;\n }\n | {\n type: \"TOGGLE_WINDOW_SHADE_MODE\";\n windowId: WindowId;\n }\n | {\n type: \"TOGGLE_WINDOW\";\n windowId: WindowId;\n }\n | {\n type: \"CLOSE_WINDOW\";\n windowId: WindowId;\n }\n | {\n type: \"SET_WINDOW_VISIBILITY\";\n windowId: WindowId;\n hidden: boolean;\n }\n | {\n type: \"ADD_GEN_WINDOW\";\n windowId: WindowId;\n title: string;\n open: boolean;\n }\n | {\n type: \"WINDOW_SIZE_CHANGED\";\n windowId: WindowId;\n size: [number, number];\n }\n | {\n type: \"UPDATE_WINDOW_POSITIONS\";\n positions: WindowPositions;\n absolute?: boolean;\n }\n | {\n type: \"CLICKED_TRACK\";\n index: number;\n }\n | {\n type: \"CTRL_CLICKED_TRACK\";\n index: number;\n }\n | {\n type: \"SHIFT_CLICKED_TRACK\";\n index: number;\n }\n | {\n type: \"SELECT_ALL\";\n }\n | {\n type: \"SELECT_ZERO\";\n }\n | {\n type: \"INVERT_SELECTION\";\n }\n | {\n type: \"REMOVE_ALL_TRACKS\";\n }\n | {\n type: \"REMOVE_TRACKS\";\n ids: number[];\n }\n | {\n type: \"REVERSE_LIST\";\n }\n | {\n type: \"RANDOMIZE_LIST\";\n }\n | {\n type: \"SET_TRACK_ORDER\";\n trackOrder: number[];\n }\n | {\n type: \"SET_MEDIA_TAGS\";\n id: number;\n title: string;\n artist: string;\n album?: string;\n albumArtUrl?: string | null;\n numberOfChannels?: number;\n bitrate?: number;\n sampleRate?: number;\n }\n | {\n type: \"MEDIA_TAG_REQUEST_INITIALIZED\";\n id: number;\n }\n | {\n type: \"MEDIA_TAG_REQUEST_FAILED\";\n id: number;\n }\n | {\n type: \"SET_MEDIA_DURATION\";\n id: number;\n duration: number;\n }\n | {\n type: \"PLAY_TRACK\";\n id: number;\n }\n | {\n type: \"BUFFER_TRACK\";\n id: number;\n }\n | {\n type: \"DRAG_SELECTED\";\n offset: number;\n }\n | {\n type: \"PLAY\";\n }\n | {\n type: \"PAUSE\";\n }\n | {\n type: \"SEEK_TO_PERCENT_COMPLETE\";\n percent: number;\n }\n | {\n type: \"MINIMIZE_WINAMP\";\n }\n | {\n type: \"CLOSE_REQUESTED\";\n cancel: () => void;\n }\n | {\n type: \"LOAD_SERIALIZED_STATE\";\n serializedState: SerializedStateV1;\n }\n | { type: \"RESET_WINDOW_SIZES\" }\n | { type: \"BROWSER_WINDOW_SIZE_CHANGED\"; height: number; width: number }\n | { type: \"LOAD_DEFAULT_SKIN\" }\n | { type: \"ENABLE_MILKDROP\"; open: boolean }\n | { type: \"SCHEDULE_MILKDROP_MESSAGE\"; message: string }\n | {\n type: \"SET_MILKDROP_DESKTOP\";\n enabled: boolean;\n }\n | {\n type: \"SET_MILKDROP_FULLSCREEN\";\n enabled: boolean;\n }\n | { type: \"PRESET_REQUESTED\"; index: number; addToHistory: boolean }\n | {\n type: \"GOT_BUTTERCHURN_PRESETS\";\n presets: StatePreset[];\n }\n | {\n type: \"GOT_BUTTERCHURN\";\n butterchurn: any;\n }\n | {\n type: \"TOGGLE_RANDOMIZE_PRESETS\";\n }\n | { type: \"TOGGLE_PRESET_CYCLING\" }\n | {\n type: \"RESOLVE_PRESET_AT_INDEX\";\n index: number;\n json: Object;\n }\n | {\n type: \"SELECT_PRESET_AT_INDEX\";\n index: number;\n transitionType: TransitionType;\n }\n | { type: \"TOGGLE_PRESET_OVERLAY\" }\n | { type: \"MAIN_CONTEXT_MENU_OPENED\" }\n | {\n type: \"DROPPED_FILES\";\n count: number;\n firstFileName: string | null;\n windowId: WindowId;\n }\n | {\n type: \"OPENED_FILES\";\n expectedType: \"SKIN\" | \"MEDIA\" | \"EQ\";\n count: number;\n firstFileName: string | null;\n };\n\nexport type MediaTagRequestStatus =\n | \"INITIALIZED\"\n | \"FAILED\"\n | \"COMPLETE\"\n | \"NOT_REQUESTED\";\n\nexport type MediaStatus = \"PLAYING\" | \"STOPPED\" | \"PAUSED\";\n\nexport type LoadStyle = \"BUFFER\" | \"PLAY\" | \"NONE\";\n\nexport type TimeMode = \"ELAPSED\" | \"REMAINING\";\n\ninterface TrackInfo {\n /**\n * Name to be used until ID3 tags can be resolved.\n *\n * If the track has a `url`, and this property is not given,\n * the filename will be used instead.\n *\n * Example: `'My Song'`\n */\n defaultName?: string;\n\n /**\n * Data to be used _instead_ of trying to fetch ID3 tags.\n *\n * Example: `{ artist: 'Jordan Eldredge', title: \"Jordan's Song\" }`\n */\n metaData?: {\n artist: string;\n title: string;\n album?: string;\n albumArtUrl?: string;\n };\n\n /**\n * Duration (in seconds) to be used instead of fetching enough of the file to measure its length.\n *\n * Example: 95\n */\n duration?: number;\n}\n\nexport interface URLTrack extends TrackInfo {\n /**\n * Source URL of the track\n *\n * Note: This URL must be served the with correct CORs headers.\n *\n * Example: `'https://example.com/song.mp3'`\n */\n url: string;\n}\n\nexport interface BlobTrack extends TrackInfo {\n /**\n * Blob source of the track\n */\n blob: Blob;\n}\n\nexport interface LoadedURLTrack {\n url: string;\n metaData: {\n artist: string | null;\n title: string | null;\n album: string | null;\n albumArtUrl: string | null;\n };\n}\n\n/**\n * Many methods on the webamp instance deal with track.\n *\n * Either `url` or `blob` must be specified\n */\nexport type Track = URLTrack | BlobTrack;\n\nexport interface PlaylistTrack {\n id: number;\n artist?: string;\n title?: string;\n album?: string;\n url: string;\n defaultName: string | null;\n albumArtUrl?: string | null;\n mediaTagsRequestStatus: MediaTagRequestStatus;\n duration: number | null;\n kbps?: string;\n khz: string;\n channels?: number;\n}\n\nexport interface AppState {\n userInput: UserInputState;\n windows: WindowsState;\n display: DisplayState;\n settings: SettingsState;\n equalizer: EqualizerState;\n playlist: PlaylistState;\n media: MediaState;\n network: NetworkState;\n tracks: TracksState;\n milkdrop: MilkdropState;\n}\n\n/**\n * Type definition of the music-metadata-browser module.\n * Ref: https://github.com/Borewit/music-metadata-browser/blob/master/src/index.ts\n */\nexport interface IMusicMetadataBrowserApi {\n /**\n * Parse Web API File\n * @param {Blob} blob\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\n parseBlob(blob: Blob, options?: IOptions): Promise<IAudioMetadata>;\n\n /**\n * Parse fetched file, using the Web Fetch API\n * @param {string} audioTrackUrl URL to download the audio track from\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\n fetchFromUrl(\n audioTrackUrl: string,\n options?: IOptions\n ): Promise<IAudioMetadata>;\n\n /**\n * Parse audio from Node Buffer\n * @param {Stream.Readable} stream Audio input stream\n * @param {string} mimeType <string> Content specification MIME-type, e.g.: 'audio/mpeg'\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\n parseBuffer(\n buf: Buffer,\n mimeType?: string,\n options?: IOptions\n ): Promise<IAudioMetadata>;\n}\n\nexport interface Extras {\n requireJSZip(): Promise<never>;\n requireMusicMetadata(): Promise<IMusicMetadataBrowserApi>;\n convertPreset: ((file: File) => Promise<Object>) | null;\n handleTrackDropEvent?: (\n e: React.DragEvent<HTMLDivElement>\n ) => Track[] | null | Promise<Track[] | null>;\n handleAddUrlEvent?: () => Track[] | null | Promise<Track[] | null>;\n handleLoadListEvent?: () => Track[] | null | Promise<Track[] | null>;\n handleSaveListEvent?: (tracks: Track[]) => null | Promise<null>;\n}\n\nexport type GetState = () => AppState;\n\nexport type Thunk = ThunkAction<void, AppState, Extras, Action>;\n\nexport type Dispatch = ThunkDispatch<AppState, Extras, Action>;\n\nexport type Reducer = (state: AppState, action: Action) => AppState;\n\nexport type Middleware = (\n store: MiddlewareStore\n) => (next: Dispatch) => (action: Action) => any;\n\nexport interface Store extends ReduxStore {\n subscribe(cb: () => void): () => void;\n dispatch: Dispatch;\n getState: GetState;\n replaceReducer(reducer: Reducer): void;\n}\n\nexport interface MiddlewareStore {\n dispatch: Dispatch;\n getState: GetState;\n}\n","import { Action, StatePreset, TransitionType, MilkdropMessage } from \"../types\";\nimport {\n SET_MILKDROP_DESKTOP,\n SET_MILKDROP_FULLSCREEN,\n GOT_BUTTERCHURN_PRESETS,\n GOT_BUTTERCHURN,\n RESOLVE_PRESET_AT_INDEX,\n SELECT_PRESET_AT_INDEX,\n TOGGLE_PRESET_OVERLAY,\n PRESET_REQUESTED,\n TOGGLE_RANDOMIZE_PRESETS,\n TOGGLE_PRESET_CYCLING,\n SCHEDULE_MILKDROP_MESSAGE,\n} from \"../actionTypes\";\nimport * as Utils from \"../utils\";\n\nexport interface MilkdropState {\n display: \"WINDOW\" | \"DESKTOP\" | \"FULLSCREEN\";\n overlay: boolean;\n presetHistory: number[];\n presets: StatePreset[];\n currentPresetIndex: number | null;\n butterchurn: any;\n transitionType: TransitionType;\n randomize: boolean;\n cycling: boolean;\n // TODO: This could probably be simplified to just a date and we could assume\n // the song title is the message.\n message: MilkdropMessage | null;\n}\n\nconst defaultMilkdropState: MilkdropState = {\n display: \"WINDOW\",\n overlay: false,\n presetHistory: [],\n presets: [],\n currentPresetIndex: null,\n butterchurn: null,\n transitionType: TransitionType.DEFAULT,\n randomize: true,\n cycling: true,\n message: null,\n};\n\nexport const milkdrop = (\n state: MilkdropState = defaultMilkdropState,\n action: Action\n): MilkdropState => {\n switch (action.type) {\n case SET_MILKDROP_DESKTOP:\n return { ...state, display: action.enabled ? \"DESKTOP\" : \"WINDOW\" };\n case SET_MILKDROP_FULLSCREEN:\n return { ...state, display: action.enabled ? \"FULLSCREEN\" : \"WINDOW\" };\n case GOT_BUTTERCHURN:\n return { ...state, butterchurn: action.butterchurn };\n case GOT_BUTTERCHURN_PRESETS:\n return {\n ...state,\n presets: state.presets.concat(action.presets),\n };\n case PRESET_REQUESTED:\n if (action.addToHistory) {\n return {\n ...state,\n presetHistory: [...state.presetHistory, action.index],\n };\n }\n return {\n ...state,\n presetHistory: state.presetHistory.slice(0, -1),\n };\n case RESOLVE_PRESET_AT_INDEX:\n const preset = state.presets[action.index];\n return {\n ...state,\n presets: Utils.replaceAtIndex(state.presets, action.index, {\n type: \"RESOLVED\",\n name: preset.name,\n preset: action.json,\n }),\n };\n case SELECT_PRESET_AT_INDEX:\n return {\n ...state,\n currentPresetIndex: action.index,\n transitionType: action.transitionType,\n };\n case TOGGLE_PRESET_OVERLAY:\n return { ...state, overlay: !state.overlay };\n case TOGGLE_RANDOMIZE_PRESETS:\n return { ...state, randomize: !state.randomize };\n case TOGGLE_PRESET_CYCLING:\n return { ...state, cycling: !state.cycling };\n case SCHEDULE_MILKDROP_MESSAGE:\n return {\n ...state,\n message: {\n text: action.message,\n time: Date.now(),\n },\n };\n default:\n return state;\n }\n};\n\nexport default milkdrop;\n","import { AppState, Action } from \"../types\";\nimport { combineReducers } from \"redux\";\n\nimport playlist from \"./playlist\";\nimport windows from \"./windows\";\nimport media from \"./media\";\nimport display from \"./display\";\nimport userInput from \"./userInput\";\nimport equalizer from \"./equalizer\";\nimport network from \"./network\";\nimport settings from \"./settings\";\nimport tracks from \"./tracks\";\nimport milkdrop from \"./milkdrop\";\n\nconst reducer = combineReducers<AppState, Action>({\n userInput,\n windows,\n display,\n settings,\n equalizer,\n playlist,\n media,\n network,\n tracks,\n milkdrop,\n});\n\nexport default reducer;\n","import { render } from \"react-dom\";\n\ninterface Props {\n averageTrackLength: string;\n numberOfTracks: number;\n playlistLengthSeconds: number;\n playlistLengthMinutes: number;\n tracks: string[];\n}\n\nexport const getAsDataURI = (text: string): string =>\n `data:text/html;base64,${window.btoa(text)}`;\n\n// Replaces deprecated \"noshade\" attribute\nconst noshadeStyle = {\n height: \"2px\",\n borderWidth: 0,\n color: \"gray\",\n backgroundColor: \"gray\",\n};\n\n// We use all kinds of non-standard attributes and tags. So we create these fake\n// components to trick Typescript.\nconst Body = (props: any) => {\n // @ts-ignore\n return <body {...props} />;\n};\n\nconst Font = (props: any) => {\n // @ts-ignore\n return <font {...props} />;\n};\n\nconst Hr = (props: any) => {\n // @ts-ignore\n return <hr {...props} />;\n};\n\nconst Div = (props: any) => {\n // @ts-ignore\n return <div {...props} />;\n};\n\nconst Table = (props: any) => {\n // @ts-ignore\n return <table {...props} />;\n};\n\n// TODO: Move <html> tag out to the string creation step in order\n// to avoid the warning.\nconst Playlist = (props: Props) => (\n <html>\n <head>\n <link rel=\"stylesheet\" href=\"null\" />\n <style type=\"text/css\">\n {`\n body { background: #000040; }\n .para1 { margin-top: -42px; margin-left: 145px; margin-right: 10px; font-family: \"font2, Arial\"; font-size: 30px; line-height: 35px; text-align: left; color: #E1E1E1; }\n .para2 { margin-top: 15px; margin-left: 15px; margin-right: 50px; font-family: \"font1, Arial Black\"; font-size: 50px; line-height: 40px; text-align: left; color: #004080; }\n `}\n </style>\n <title>Winamp Generated PlayList</title>\n </head>\n <Body bgcolor=\"#000080\" topmargin=\"0\" leftmargin=\"0\" text=\"#FFFFFF\">\n <Div align=\"center\">\n <Div className=\"para2\" align=\"center\">\n <p>WINAMP</p>\n </Div>\n <Div className=\"para1\" align=\"center\">\n <p>playlist</p>\n </Div>\n </Div>\n <Hr\n align=\"left\"\n width=\"90%\"\n size=\"1\"\n color=\"#FFBF00\"\n style={noshadeStyle}\n />\n <Div align=\"right\">\n <Table border=\"0\" cellSpacing=\"0\" cellPadding=\"0\" width=\"98%\">\n {/* Added <tbody> tag */}\n <tbody>\n <tr>\n <td>\n <small>\n <small>\n <Font face=\"Arial\" color=\"#FFBF00\">\n {props.numberOfTracks}\n </Font>\n <Font color=\"#409FFF\" face=\"Arial\">\n {\" track in playlist, average track length: \"}\n </Font>\n <Font face=\"Arial\" color=\"#FFBF00\">\n {props.averageTrackLength}\n </Font>\n </small>\n </small>\n <br />\n <small>\n <small>\n <Font color=\"#409FFF\" face=\"Arial\">\n {\"Playlist length: \"}\n </Font>\n <Font face=\"Arial\" color=\"#FFBF00\">\n {props.playlistLengthMinutes}\n </Font>\n <Font color=\"#409FFF\" face=\"Arial\">\n {\" minutes \"}\n </Font>\n <Font face=\"Arial\" color=\"#FFBF00\">\n {props.playlistLengthSeconds}\n </Font>\n <Font color=\"#409FFF\" face=\"Arial\">\n {\" second \"}\n </Font>\n <br />\n <Font color=\"#409FFF\" face=\"Arial\">\n Right-click <a href=\"./\">here</a> to save this HTML file.\n </Font>\n </small>\n </small>\n </td>\n </tr>\n </tbody>\n </Table>\n </Div>\n <blockquote>\n <p>\n <Font color=\"#FFBF00\" face=\"Arial\">\n <big>Playlist files:</big>\n </Font>\n {/* Added closing tag here */}\n </p>\n <ul>\n <Font face=\"Arial\" color=\"#FFFFFF\">\n <small>\n {props.tracks.map((track) => (\n <span key={track}>\n {track}\n <br />\n </span>\n ))}\n {/* Added closing tag here */}\n </small>\n </Font>\n </ul>\n </blockquote>\n <Hr\n align=\"left\"\n width=\"90%\"\n size=\"1\"\n color=\"#FFBF00\"\n style={noshadeStyle}\n />\n </Body>\n </html>\n);\n\nconst createPlaylistHTML = (props: Props): string => {\n const node = document.createElement(\"div\");\n render(<Playlist {...props} />, node);\n return node.innerHTML;\n};\n\nexport const createPlaylistURL = (props: Props): string =>\n getAsDataURI(createPlaylistHTML(props));\n","import { Slider } from \"./types\";\n\nimport * as Utils from \"./utils\";\n\nexport const getBalanceText = (balance: number): string => {\n if (balance === 0) {\n return \"Balance: Center\";\n }\n const direction = balance > 0 ? \"Right\" : \"Left\";\n return `Balance: ${Math.abs(balance)}% ${direction}`;\n};\n\nexport const getVolumeText = (volume: number): string => `Volume: ${volume}%`;\n\nexport const getPositionText = (\n duration: number,\n seekToPercent: number\n): string => {\n const newElapsedStr = Utils.getTimeStr(\n (duration * seekToPercent) / 100,\n false\n );\n const durationStr = Utils.getTimeStr(duration, false);\n return `Seek to: ${newElapsedStr}/${durationStr} (${seekToPercent}%)`;\n};\n\nexport const getDoubleSizeModeText = (enabled: boolean): string =>\n `${enabled ? \"Disable\" : \"Enable\"} doublesize mode`;\n\nconst formatHz = (hz: number): string =>\n hz < 1000 ? `${hz}HZ` : `${hz / 1000}KHZ`;\n\n// Format a number as a string, ensuring it has a + or - sign\nconst ensureSign = (num: number | string): string =>\n num > 0 ? `+${num}` : num.toString();\n\n// Round to 1 and exactly 1 decimal point\nconst roundToTenths = (num: number): string =>\n (Math.round(num * 10) / 10).toFixed(1);\n\nexport const getEqText = (band: Slider, level: number): string => {\n const db = roundToTenths(((level - 50) / 50) * 12);\n const label = band === \"preamp\" ? \"Preamp\" : formatHz(band);\n return `EQ: ${label} ${ensureSign(db)} DB`;\n};\n","import { WindowInfo, WindowId } from \"./types\";\n\ninterface NewGraph {\n [key: string]: {\n above: string[];\n left: string[];\n };\n}\n\ninterface PositionDiff {\n [key: string]: {\n x: number;\n y: number;\n };\n}\n\nexport interface SizeDiff {\n [key: string]: {\n width: number;\n height: number;\n };\n}\n\nexport function getPositionDiff(\n graph: Graph,\n sizeDiff: SizeDiff\n): PositionDiff {\n const newGraph: NewGraph = {};\n const positionDiff: PositionDiff = {};\n for (const key of Object.keys(graph)) {\n newGraph[key] = { above: [], left: [] };\n positionDiff[key] = { x: 0, y: 0 };\n }\n\n // Construct an inverted graph\n for (const [key, neighbors] of Object.entries(graph)) {\n const { below, right } = neighbors;\n if (right != null) {\n newGraph[right].left.push(key);\n }\n if (below != null) {\n newGraph[below].above.push(key);\n }\n }\n\n function walkRight(key: WindowId) {\n const node = newGraph[key];\n const nodeSizeDiff = sizeDiff[key];\n node.left.forEach((left) => {\n positionDiff[left].x += nodeSizeDiff.width + positionDiff[key].x;\n walkRight(left);\n });\n }\n\n function walkDown(key: WindowId) {\n const node = newGraph[key];\n const nodeSizeDiff = sizeDiff[key];\n node.above.forEach((above) => {\n positionDiff[above].y += nodeSizeDiff.height + positionDiff[key].y;\n walkDown(above);\n });\n }\n\n // Find disconnected nodes, and walk\n for (const [key, neighbors] of Object.entries(graph)) {\n if (neighbors.below == null) {\n walkDown(key);\n }\n if (neighbors.right == null) {\n walkRight(key);\n }\n }\n\n return positionDiff;\n}\n\ninterface Edges {\n below?: WindowId;\n right?: WindowId;\n}\n\ninterface Graph {\n // TODO: Ensure this is a WindowId\n [id: string]: Edges;\n}\n\nexport function generateGraph(windows: WindowInfo[]): Graph {\n const bottoms: { [offset: number]: WindowInfo[] } = {};\n const rights: { [offset: number]: WindowInfo[] } = {};\n for (const w of windows) {\n const bottom = w.y + w.height;\n if (bottoms[bottom]) {\n bottoms[bottom].push(w);\n } else {\n bottoms[bottom] = [w];\n }\n\n const right = w.x + w.width;\n if (rights[right]) {\n rights[right].push(w);\n } else {\n rights[right] = [w];\n }\n }\n\n const graph: Graph = {};\n for (const w of windows) {\n const edges: Edges = {};\n const top = w.y;\n const left = w.x;\n\n const tops = bottoms[top];\n const lefts = rights[left];\n if (tops) {\n for (const below of tops) {\n const isToTheLeft = below.x + below.width < w.x;\n const isToTheRight = below.x > w.x + w.width;\n\n const overlapsInX = !(isToTheLeft || isToTheRight);\n if (overlapsInX) {\n edges.below = below.key;\n break;\n }\n }\n }\n if (lefts) {\n for (const right of lefts) {\n const isAbove = right.y + right.height < w.y;\n const isBelow = right.y > w.y + w.height;\n const overlapsInY = !(isAbove || isBelow);\n if (overlapsInY) {\n edges.right = right.key;\n break;\n }\n }\n }\n\n graph[w.key] = edges;\n }\n return graph;\n}\n","import {\n AppState,\n PlaylistTrack,\n WebampWindow,\n WindowId,\n WindowInfo,\n LoadedURLTrack,\n WindowPositions,\n PlaylistStyle,\n TransitionType,\n MediaStatus,\n TimeMode,\n SkinImages,\n Cursors,\n SkinRegion,\n GenLetterWidths,\n MilkdropMessage,\n DummyVizData,\n} from \"./types\";\nimport { createSelector, defaultMemoize } from \"reselect\";\nimport * as Utils from \"./utils\";\nimport {\n BANDS,\n TRACK_HEIGHT,\n WINDOW_RESIZE_SEGMENT_WIDTH,\n WINDOW_RESIZE_SEGMENT_HEIGHT,\n WINDOW_WIDTH,\n MEDIA_STATUS,\n MEDIA_TAG_REQUEST_STATUS,\n WINDOWS,\n VISUALIZERS,\n} from \"./constants\";\nimport { createPlaylistURL } from \"./playlistHtml\";\nimport * as fromTracks from \"./reducers/tracks\";\nimport * as fromDisplay from \"./reducers/display\";\nimport * as fromEqualizer from \"./reducers/equalizer\";\nimport * as fromMedia from \"./reducers/media\";\nimport * as fromWindows from \"./reducers/windows\";\nimport * as MarqueeUtils from \"./marqueeUtils\";\nimport { generateGraph } from \"./resizeUtils\";\nimport { SerializedStateV1 } from \"./serializedStates/v1Types\";\n\nexport const getSliders = (state: AppState) => state.equalizer.sliders;\n\nexport const getEqfData = createSelector(getSliders, (sliders) => {\n const preset: { [key: string]: number | string } = {\n name: \"Entry1\",\n preamp: Utils.denormalizeEqBand(sliders.preamp),\n };\n BANDS.forEach((band) => {\n preset[`hz${band}`] = Utils.denormalizeEqBand(sliders[band]);\n });\n const eqfData = {\n presets: [preset],\n type: \"Winamp EQ library file v1.1\",\n };\n return eqfData;\n});\n\nexport const getTracks = (state: AppState) => state.tracks;\nexport const getTrackUrl = (state: AppState) => {\n return (id: number): string | null => {\n return state.tracks[id]?.url;\n };\n};\nexport const getTrackOrder = (state: AppState) => state.playlist.trackOrder;\n\nexport const getTrackCount = createSelector(\n getTrackOrder,\n (trackOrder) => trackOrder.length\n);\n\nexport const getOrderedTracks = createSelector(\n getTracks,\n getTrackOrder,\n (tracks, trackOrder) => trackOrder.filter((id) => tracks[id])\n);\n\nexport const getUserTracks = createSelector(\n getTracks,\n getTrackOrder,\n (tracks, trackOrder) =>\n trackOrder.map((id) => {\n const track = tracks[id];\n\n return {\n url: track.url,\n metaData: {\n artist: track.artist || \"\",\n title: track.title || \"\",\n album: track.album,\n albumArtUrl: track.albumArtUrl || \"\",\n },\n };\n })\n);\n\nconst getOrderedTrackObjects = createSelector(\n getTracks,\n getOrderedTracks,\n (tracks, trackOrder): PlaylistTrack[] => trackOrder.map((id) => tracks[id])\n);\n\nexport const getSelectedTrackIds = (state: AppState): Set<number> => {\n return state.playlist.selectedTracks;\n};\n\nexport const getSelectedTrackObjects = createSelector(\n getOrderedTrackObjects,\n getSelectedTrackIds,\n (tracks, selectedIds) => tracks.filter((track) => selectedIds.has(track.id))\n);\n\n// If a duration is `null`, it counts as zero, which seems fine enough.\nconst runningTimeFromTracks = (tracks: PlaylistTrack[]) =>\n tracks.reduce((time, track) => time + Number(track.duration), 0);\n\nconst getTotalRunningTime = createSelector(\n getOrderedTrackObjects,\n runningTimeFromTracks\n);\n\nconst getSelectedRunningTime = createSelector(\n getSelectedTrackObjects,\n runningTimeFromTracks\n);\n\n// Note: We should append \"+\" to these values if some of the tracks are of unknown time.\nexport const getRunningTimeMessage = createSelector(\n getTotalRunningTime,\n getSelectedRunningTime,\n (totalRunningTime, selectedRunningTime) =>\n `${Utils.getTimeStr(selectedRunningTime)}/${Utils.getTimeStr(\n totalRunningTime\n )}`\n);\n\n// TODO: use slectors to get memoization\nexport const getCurrentTrackIndex = (state: AppState): number => {\n const { playlist } = state;\n if (playlist.currentTrack == null) {\n return -1;\n }\n return playlist.trackOrder.indexOf(playlist.currentTrack);\n};\n\nexport const getCurrentTrackNumber = createSelector(\n getCurrentTrackIndex,\n (currentTrackIndex) => currentTrackIndex + 1\n);\n\nexport const getCurrentTrackId = (state: AppState) =>\n state.playlist.currentTrack;\n\n// TODO: Sigh... Technically, we should detect if we are looping only repeat if we are.\n// I think this would require pre-computing the \"random\" order of a playlist.\nexport const getRandomTrackId = (state: AppState): number | null => {\n const {\n playlist: { trackOrder, currentTrack },\n } = state;\n if (trackOrder.length === 0) {\n return null;\n }\n let nextId;\n do {\n nextId = trackOrder[Math.floor(trackOrder.length * Math.random())];\n } while (nextId === currentTrack && trackOrder.length > 1);\n return nextId;\n};\n\nexport const getNextTrackId = (state: AppState, n = 1) => {\n const {\n playlist: { trackOrder },\n media: { repeat, shuffle },\n } = state;\n if (shuffle) {\n return getRandomTrackId(state);\n }\n const trackCount = getTrackCount(state);\n if (trackCount === 0) {\n return null;\n }\n\n const currentIndex = getCurrentTrackIndex(state);\n\n let nextIndex = currentIndex + n;\n if (repeat) {\n nextIndex = nextIndex % trackCount;\n if (nextIndex < 0) {\n // Handle wrapping around backwards\n nextIndex += trackCount;\n }\n return trackOrder[nextIndex];\n }\n\n if (currentIndex === trackCount - 1 && n > 0) {\n return null;\n } else if (currentIndex === 0 && n < 0) {\n return null;\n }\n\n nextIndex = Utils.clamp(nextIndex, 0, trackCount - 1);\n return trackOrder[nextIndex];\n};\n\nexport const getGenWindows = (state: AppState) => {\n return state.windows.genWindows;\n};\n\nexport const getWindowOpen = createSelector(getGenWindows, (genWindows) => {\n return (windowId: WindowId) => genWindows[windowId].open;\n});\n\nexport const getWindowHidden = createSelector(getGenWindows, (genWindows) => {\n return (windowId: WindowId) => genWindows[windowId].hidden;\n});\n\nexport const getWindowShade = createSelector(getGenWindows, (genWindows) => {\n return (windowId: WindowId) => genWindows[windowId].shade;\n});\n\nexport const getWindowSize = createSelector(getGenWindows, (genWindows) => {\n return (windowId: WindowId) => genWindows[windowId].size;\n});\n\nexport const getWindowPositions = createSelector(\n getGenWindows,\n (windows): WindowPositions => Utils.objectMap(windows, (w) => w.position)\n);\n\nconst BASE_WINDOW_HEIGHT = 58;\nexport const getNumberOfVisibleTracks = createSelector(\n getWindowSize,\n (getWindowSize_) => {\n const playlistSize = getWindowSize_(\"playlist\");\n return Math.floor(\n (BASE_WINDOW_HEIGHT + WINDOW_RESIZE_SEGMENT_HEIGHT * playlistSize[1]) /\n TRACK_HEIGHT\n );\n }\n);\n\nexport const getOverflowTrackCount = createSelector(\n getTrackCount,\n getNumberOfVisibleTracks,\n (trackCount, numberOfVisibleTracks) =>\n Math.max(0, trackCount - numberOfVisibleTracks)\n);\n\nconst _getPlaylistScrollPosition = (state: AppState) =>\n state.display.playlistScrollPosition;\n\nexport const getPlaylistScrollPosition = createSelector(\n getOverflowTrackCount,\n _getPlaylistScrollPosition,\n (overflowTrackCount, playlistScrollPosition) => {\n if (overflowTrackCount === 0) {\n return 0;\n }\n return Math.round(\n (Math.round((overflowTrackCount * playlistScrollPosition) / 100) /\n overflowTrackCount) *\n 100\n );\n }\n);\n\nexport const getScrollOffset = createSelector(\n _getPlaylistScrollPosition,\n getTrackCount,\n getNumberOfVisibleTracks,\n (playlistScrollPosition, trackCount, numberOfVisibleTracks) => {\n const overflow = Math.max(0, trackCount - numberOfVisibleTracks);\n return Utils.percentToIndex(playlistScrollPosition / 100, overflow + 1);\n }\n);\n\nexport const getVisibleTrackIds = createSelector(\n getScrollOffset,\n getTrackOrder,\n getNumberOfVisibleTracks,\n (offset, trackOrder, numberOfVisibleTracks) =>\n trackOrder.slice(offset, offset + numberOfVisibleTracks)\n);\n\nexport function getAllTracksAreVisible(state: AppState): boolean {\n return getVisibleTrackIds(state).length === state.playlist.trackOrder.length;\n}\n\nexport const getTrackIsVisibleFunction = createSelector(\n getVisibleTrackIds,\n (visibleTrackIds) => {\n return (id: number) => visibleTrackIds.includes(id);\n }\n);\n\nexport const getVisibleTracks = createSelector(\n getVisibleTrackIds,\n getTracks,\n (visibleTrackIds, tracks) => visibleTrackIds.map((id) => tracks[id])\n);\n\nexport const getPlaylist = (state: AppState) => state.playlist;\n\nexport const getDuration = (state: AppState): number | null => {\n const { playlist, tracks } = state;\n if (playlist.currentTrack == null) {\n return null;\n }\n const currentTrack = tracks[playlist.currentTrack];\n return currentTrack && currentTrack.duration;\n};\n\nexport const getTrackDisplayName = createSelector(getTracks, (tracks) => {\n return defaultMemoize((trackId: number | null) =>\n fromTracks.getTrackDisplayName(tracks, trackId)\n );\n});\n\nexport const getCurrentTrackDisplayName = createSelector(\n getCurrentTrackId,\n getTrackDisplayName,\n (id, getName) => {\n return getName(id);\n }\n);\n\nexport const getMediaStatus = (state: AppState): MediaStatus | null => {\n return state.media.status;\n};\n\nexport const getMediaIsPlaying = (state: AppState) =>\n state.media.status === MEDIA_STATUS.PLAYING;\n\nexport const getCurrentTrack = createSelector(\n getCurrentTrackId,\n getTracks,\n (trackId, tracks): PlaylistTrack | null => {\n return trackId == null ? null : tracks[trackId];\n }\n);\nexport const getCurrentlyPlayingTrackIdIfLoaded = createSelector(\n getMediaIsPlaying,\n getCurrentTrack,\n (mediaIsPlaying, currentTrack) => {\n if (\n !mediaIsPlaying ||\n !currentTrack ||\n currentTrack.mediaTagsRequestStatus ===\n MEDIA_TAG_REQUEST_STATUS.INITIALIZED\n ) {\n return null;\n }\n return currentTrack.id;\n }\n);\n\nexport const getCurrentTrackInfo = createSelector(\n getCurrentTrack,\n (track: PlaylistTrack | null): LoadedURLTrack | null => {\n if (track == null) {\n return null;\n }\n return {\n url: track.url,\n metaData: {\n title: track.title || null,\n artist: track.artist || null,\n album: track.album || null,\n albumArtUrl: track.albumArtUrl || null,\n },\n };\n }\n);\n\nexport const getMinimalMediaText = createSelector(\n getCurrentTrackNumber,\n getCurrentTrackDisplayName,\n (trackNumber, name) => (name == null ? null : `${trackNumber}. ${name}`)\n);\n\nexport const getMediaText = createSelector(\n getMinimalMediaText,\n getDuration,\n (minimalMediaText, duration) =>\n minimalMediaText == null\n ? null\n : `${minimalMediaText} (${Utils.getTimeStr(duration)})`\n);\n\nexport const getNumberOfTracks = (state: AppState) =>\n getTrackOrder(state).length;\nconst getPlaylistDuration = createSelector(getTracks, (tracks) =>\n Object.values(tracks).reduce(\n (total, track) => total + (track.duration || 0),\n 0\n )\n);\n\nexport const getPlaylistURL = createSelector(\n getNumberOfTracks,\n getPlaylistDuration,\n getTrackOrder,\n getTracks,\n getTrackDisplayName,\n (numberOfTracks, playlistDuration, trackOrder, tracks, getDisplayName) =>\n createPlaylistURL({\n numberOfTracks,\n averageTrackLength: Utils.getTimeStr(playlistDuration / numberOfTracks),\n // TODO: Handle hours\n playlistLengthMinutes: Math.floor(playlistDuration / 60),\n playlistLengthSeconds: Math.floor(playlistDuration % 60),\n tracks: trackOrder.map(\n (id, i) =>\n `${i + 1}. ${getDisplayName(id)} (${Utils.getTimeStr(\n tracks[id].duration\n )})`\n ),\n })\n);\n\nconst WINDOW_HEIGHT = 116;\nconst SHADE_WINDOW_HEIGHT = 14;\n\nfunction getWPixelSize(w: WebampWindow, doubled: boolean) {\n const [width, height] = w.size;\n const doubledMultiplier = doubled && w.canDouble ? 2 : 1;\n const pix = {\n height: WINDOW_HEIGHT + height * WINDOW_RESIZE_SEGMENT_HEIGHT,\n width: WINDOW_WIDTH + width * WINDOW_RESIZE_SEGMENT_WIDTH,\n };\n return {\n height: (w.shade ? SHADE_WINDOW_HEIGHT : pix.height) * doubledMultiplier,\n width: pix.width * doubledMultiplier,\n };\n}\n\nexport function getFocusedWindow(state: AppState): WindowId | null {\n return state.windows.focused;\n}\n\nexport function getWindowPosition(state: AppState) {\n return (windowId: WindowId) => state.windows.genWindows[windowId].position;\n}\n\nexport function getPositionsAreRelative(state: AppState) {\n return state.windows.positionsAreRelative;\n}\n\nexport function getDoubled(state: AppState) {\n return state.display.doubled;\n}\n\nexport function getLlamaMode(state: AppState) {\n return state.display.llama;\n}\n\nexport function getZIndex(state: AppState): number {\n return state.display.zIndex;\n}\n\n// TODO: This is poorly memoized. It invalidates when a window moves.\nexport const getWindowSizes = createSelector(\n getGenWindows,\n getDoubled,\n (windows, doubled) => {\n return Utils.objectMap(windows, (w) => getWPixelSize(w, doubled));\n }\n);\n\nexport const getWindowPixelSize = createSelector(getWindowSizes, (sizes) => {\n return (windowId: WindowId) => sizes[windowId];\n});\n\nconst getWindowOrder = (state: AppState): WindowId[] =>\n state.windows.windowOrder;\n\nexport const getNormalizedWindowOrder = createSelector(\n getWindowOrder,\n getGenWindows,\n (windowOrder, genWindows): WindowId[] => {\n return [\n WINDOWS.MAIN,\n ...windowOrder.filter(\n (windowId) => windowId !== WINDOWS.MAIN && genWindows[windowId] != null\n ),\n ];\n }\n);\n\n// TODO: Now that both size and position are stored on genWindows this seems a bit silly.\nexport const getWindowsInfo = createSelector(\n getWindowSizes,\n getWindowPositions,\n getNormalizedWindowOrder,\n (sizes, positions, windowOrder): WindowInfo[] => {\n return windowOrder.map((key) => ({\n key,\n ...sizes[key],\n ...positions[key],\n }));\n }\n);\n\nexport const getWindowGraph = createSelector(getWindowsInfo, generateGraph);\n\nconst defaultPlaylistStyle = {\n normal: \"#00FF00\",\n current: \"#FFFFFF\",\n normalbg: \"#000000\",\n selectedbg: \"#0000C6\",\n font: \"Arial\",\n};\n\nexport function getSkinColors(state: AppState): string[] {\n return state.display.skinColors;\n}\n\nexport const getSkinPlaylistStyle = (state: AppState): PlaylistStyle => {\n return state.display.skinPlaylistStyle || defaultPlaylistStyle;\n};\n\nexport const getVisualizerStyle = (state: AppState): string => {\n const milkdrop = state.windows.genWindows[WINDOWS.MILKDROP];\n if (milkdrop != null && milkdrop.open) {\n return VISUALIZERS.MILKDROP;\n }\n return fromDisplay.getVisualizerStyle(state.display);\n};\n\nexport const getVolume = (state: AppState) => state.media.volume;\nexport const getBalance = (state: AppState) => state.media.balance;\nexport const getShuffle = (state: AppState) => state.media.shuffle;\nexport const getRepeat = (state: AppState) => state.media.repeat;\n\nexport const getChannels = createSelector(\n getCurrentTrack,\n (track: PlaylistTrack | null): number | null => {\n return track != null ? track.channels || null : null;\n }\n);\n\nexport const getTimeElapsed = (state: AppState): number => {\n return state.media.timeElapsed;\n};\n\nexport function getSerlializedState(state: AppState): SerializedStateV1 {\n return {\n version: 1,\n media: fromMedia.getSerializedState(state.media),\n equalizer: fromEqualizer.getSerializedState(state.equalizer),\n display: fromDisplay.getSerializedState(state.display),\n windows: fromWindows.getSerializedState(state.windows),\n };\n}\n\nexport function getEqualizerEnabled(state: AppState): boolean {\n return state.equalizer.on;\n}\n\nexport function getEqualizerAuto(state: AppState): boolean {\n return state.equalizer.auto;\n}\n\nexport function getBrowserWindowSize(\n state: AppState\n): { height: number; width: number } {\n return state.windows.browserWindowSize;\n}\n\nexport const getOpenWindows = createSelector(getGenWindows, (genWindows) =>\n Utils.objectFilter(genWindows, (w) => w.open)\n);\n\nexport const getStackedLayoutPositions = createSelector(\n getOpenWindows,\n getDoubled,\n (openWindows, doubled): WindowPositions => {\n let offset = 0;\n return Utils.objectMap(openWindows, (w) => {\n const position = { x: 0, y: offset };\n offset += getWPixelSize(w, doubled).height;\n return position;\n });\n }\n);\n\nexport const getUserInputFocus = (state: AppState): string | null => {\n return state.userInput.focus;\n};\n\nexport const getUserInputScrubPosition = (state: AppState): number => {\n return state.userInput.scrubPosition;\n};\n// TODO: Make this a reselect selector\nexport const getMarqueeText = (state: AppState): string => {\n const defaultText = \"Winamp 2.91\";\n if (state.userInput.userMessage != null) {\n return state.userInput.userMessage;\n }\n switch (getUserInputFocus(state)) {\n case \"balance\":\n return MarqueeUtils.getBalanceText(state.media.balance);\n case \"volume\":\n return MarqueeUtils.getVolumeText(state.media.volume);\n case \"position\":\n const duration = getDuration(state);\n if (duration == null) {\n // This probably can't ever happen.\n return defaultText;\n }\n return MarqueeUtils.getPositionText(\n duration,\n getUserInputScrubPosition(state)\n );\n case \"double\":\n return MarqueeUtils.getDoubleSizeModeText(state.display.doubled);\n case \"eq\":\n const band = state.userInput.bandFocused;\n if (band == null) {\n // This probably can't ever happen.\n return defaultText;\n }\n return MarqueeUtils.getEqText(band, state.equalizer.sliders[band]);\n default:\n break;\n }\n if (state.playlist.currentTrack != null) {\n const mediaText = getMediaText(state);\n if (mediaText == null) {\n // This probably can't ever happen.\n return defaultText;\n }\n return mediaText;\n }\n return defaultText;\n};\n\nexport const getKbps = createSelector(\n getCurrentTrack,\n (track: PlaylistTrack | null): string | null => {\n return track != null ? track.kbps || null : null;\n }\n);\n\nexport const getKhz = createSelector(\n getCurrentTrack,\n (track: PlaylistTrack | null): string | null => {\n return track != null ? track.khz || null : null;\n }\n);\n\nexport function getDebugData(state: AppState) {\n return {\n ...state,\n display: {\n ...state.display,\n skinGenLetterWidths: \"[[REDACTED]]\",\n skinImages: \"[[REDACTED]]\",\n skinCursors: \"[[REDACTED]]\",\n skinRegion: \"[[REDACTED]]\",\n },\n };\n}\n\nexport function getMilkdropMessage(state: AppState): MilkdropMessage | null {\n return state.milkdrop.message;\n}\n\nexport function getMilkdropDesktopEnabled(state: AppState): boolean {\n return state.milkdrop.display === \"DESKTOP\";\n}\n\nexport function getMilkdropFullscreenEnabled(state: AppState): boolean {\n return state.milkdrop.display === \"FULLSCREEN\";\n}\n\nexport function getPresets(state: AppState): any {\n return state.milkdrop.presets;\n}\n\nexport function getButterchurn(state: AppState): any {\n return state.milkdrop.butterchurn;\n}\n\nexport function getPresetTransitionType(state: AppState): TransitionType {\n return state.milkdrop.transitionType;\n}\n\nexport function getCurrentPresetIndex(state: AppState): number | null {\n return state.milkdrop.currentPresetIndex;\n}\nexport function getCurrentPreset(state: AppState): any | null {\n const index = getCurrentPresetIndex(state);\n if (index == null) {\n return null;\n }\n const preset = state.milkdrop.presets[index];\n if (preset == null || preset.type === \"UNRESOLVED\") {\n return null;\n }\n return preset.preset;\n}\n\nexport function getPresetNames(state: AppState): string[] {\n return state.milkdrop.presets.map((preset) => preset.name);\n}\n\nexport function getPresetOverlayOpen(state: AppState): boolean {\n return state.milkdrop.overlay;\n}\n\nexport function getPresetsAreCycling(state: AppState): boolean {\n return state.milkdrop.cycling;\n}\n\nexport function getRandomizePresets(state: AppState): boolean {\n return state.milkdrop.randomize;\n}\n\nexport function getClosed(state: AppState): boolean {\n return state.display.closed;\n}\n\nexport function getSkinImages(state: AppState): SkinImages {\n return state.display.skinImages;\n}\n\nexport function getSkinCursors(state: AppState): Cursors | null {\n return state.display.skinCursors;\n}\n\nexport function getSkinRegion(state: AppState): SkinRegion {\n return state.display.skinRegion;\n}\n\nexport function getSkinLetterWidths(state: AppState): GenLetterWidths | null {\n return state.display.skinGenLetterWidths;\n}\n\nexport function getPreampLineUrl(state: AppState): string | null {\n return state.display.skinImages.EQ_PREAMP_LINE;\n}\n\nexport function getLineColorsUrl(state: AppState): string | null {\n return state.display.skinImages.EQ_GRAPH_LINE_COLORS;\n}\n\nexport const getPreampLineImage = createSelector(\n getPreampLineUrl,\n async (url): Promise<HTMLImageElement | null> => {\n if (url == null) {\n return null;\n }\n return Utils.imgFromUrl(url);\n }\n);\n\nexport const getLineColorsImage = createSelector(\n getLineColorsUrl,\n async (url): Promise<HTMLImageElement | null> => {\n if (url == null) {\n return null;\n }\n return Utils.imgFromUrl(url);\n }\n);\n\nexport function getDummyVizData(state: AppState): DummyVizData | null {\n return state.display.dummyVizData;\n}\n\nexport function getMarqueeStep(state: AppState): number {\n return state.display.marqueeStep;\n}\n\nexport function getNetworkConnected(state: AppState): boolean {\n return state.network.connected;\n}\n\nexport function getTimeMode(state: AppState): TimeMode {\n return state.media.timeMode;\n}\n\nexport function getLoading(state: AppState): boolean {\n return state.display.loading;\n}\n\nexport function getWorking(state: AppState): boolean {\n return state.display.working;\n}\n\nexport function getAvaliableSkins(state: AppState) {\n return state.settings.availableSkins;\n}\n","import { Box, Point, Diff, BoundingBox } from \"./types\";\n\nexport const SNAP_DISTANCE = 15;\n\nexport const top = (box: Box) => box.y;\nexport const bottom = (box: Box) => box.y + box.height;\nexport const left = (box: Box) => box.x;\nexport const right = (box: Box) => box.x + box.width;\n\nexport const near = (a: number, b: number) => Math.abs(a - b) < SNAP_DISTANCE;\n\n// http://stackoverflow.com/a/3269471/1263117\nexport const overlapX = (a: Box, b: Box) =>\n left(a) <= right(b) + SNAP_DISTANCE && left(b) <= right(a) + SNAP_DISTANCE;\nexport const overlapY = (a: Box, b: Box) =>\n top(a) <= bottom(b) + SNAP_DISTANCE && top(b) <= bottom(a) + SNAP_DISTANCE;\n\n// Give a new position for `boxA` that snaps it to `boxB` if neede.\nexport const snap = (boxA: Box, boxB: Box) => {\n let x, y;\n\n // TODO: Refactor/simplify this code\n if (overlapY(boxA, boxB)) {\n if (near(left(boxA), right(boxB))) {\n x = right(boxB);\n } else if (near(right(boxA), left(boxB))) {\n x = left(boxB) - boxA.width;\n } else if (near(left(boxA), left(boxB))) {\n x = left(boxB);\n } else if (near(right(boxA), right(boxB))) {\n x = right(boxB) - boxA.width;\n }\n }\n\n if (overlapX(boxA, boxB)) {\n if (near(top(boxA), bottom(boxB))) {\n y = bottom(boxB);\n } else if (near(bottom(boxA), top(boxB))) {\n y = top(boxB) - boxA.height;\n } else if (near(top(boxA), top(boxB))) {\n y = top(boxB);\n } else if (near(bottom(boxA), bottom(boxB))) {\n y = bottom(boxB) - boxA.height;\n }\n }\n return { x, y };\n};\n\nexport const snapDiff = (a: Box, b: Box): Point => {\n const newPos = snap(a, b);\n return {\n x: newPos.x === undefined ? 0 : newPos.x - a.x,\n y: newPos.y === undefined ? 0 : newPos.y - a.y,\n };\n};\n\n// TODO: Use the first x and y combo\nexport const snapDiffManyToMany = (as: Box[], bs: Box[]): Point => {\n let x: number | undefined = 0;\n let y: number | undefined = 0;\n for (const a of as) {\n for (const b of bs) {\n const diff = snapDiff(a, b);\n x = x || diff.x;\n y = y || diff.y;\n if (x !== undefined && x > 0 && y !== undefined && y > 0) {\n break;\n }\n }\n }\n return { x, y };\n};\n\nexport const snapToMany = (boxA: Box, otherBoxes: Box[]): Diff => {\n let x: number | undefined;\n let y: number | undefined;\n\n otherBoxes.forEach((boxB) => {\n const newPos = snap(boxA, boxB);\n x = newPos.x || x;\n y = newPos.y || y;\n });\n\n return { x, y };\n};\n\nexport const snapWithin = (boxA: Box, boundingBox: BoundingBox): Diff => {\n let x, y;\n\n if (boxA.x - SNAP_DISTANCE < 0) {\n x = 0;\n } else if (boxA.x + boxA.width + SNAP_DISTANCE > boundingBox.width) {\n x = boundingBox.width - boxA.width;\n }\n\n if (boxA.y - SNAP_DISTANCE < 0) {\n y = 0;\n } else if (boxA.y + boxA.height + SNAP_DISTANCE > boundingBox.height) {\n y = boundingBox.height - boxA.height;\n }\n\n return { x, y };\n};\n\nexport const snapWithinDiff = (a: Box, b: BoundingBox) => {\n const newPos = snapWithin(a, b);\n return {\n x: newPos.x === undefined ? 0 : newPos.x - a.x,\n y: newPos.y === undefined ? 0 : newPos.y - a.y,\n };\n};\n\nexport const applySnap = (original: Point, ...snaps: Diff[]) =>\n snaps.reduce(\n (previous, snapped) => ({\n ...previous,\n x: typeof snapped.x !== \"undefined\" ? snapped.x : previous.x,\n y: typeof snapped.y !== \"undefined\" ? snapped.y : previous.y,\n }),\n original\n );\n\nexport const boundingBox = (nodes: Box[]): Box => {\n const boxes = nodes.slice();\n const firstNode = boxes.pop();\n if (firstNode == null) {\n throw new Error(\"boundingBox must be called with at least one node\");\n }\n const bounding = {\n top: top(firstNode),\n right: right(firstNode),\n bottom: bottom(firstNode),\n left: left(firstNode),\n };\n\n boxes.forEach((node) => {\n bounding.top = Math.min(bounding.top, top(node));\n bounding.right = Math.max(bounding.right, right(node));\n bounding.bottom = Math.max(bounding.bottom, bottom(node));\n bounding.left = Math.min(bounding.left, left(node));\n });\n\n return {\n x: bounding.left,\n y: bounding.top,\n width: bounding.right - bounding.left,\n height: bounding.bottom - bounding.top,\n };\n};\n\nexport function traceConnection<B extends Box>(\n areConnected: (candidate: Box, n: Box) => boolean\n) {\n return (candidates: B[], node: B): Set<B> => {\n const connected = new Set<B>();\n const checkNode = (n: B) => {\n for (const candidate of candidates) {\n if (!connected.has(candidate) && areConnected(candidate, n)) {\n connected.add(candidate);\n checkNode(candidate);\n }\n }\n };\n checkNode(node);\n return connected;\n };\n}\n\nexport const applyDiff = (a: Point, b: Point) => ({\n x: a.x + b.x,\n y: a.y + b.y,\n});\n\n// TODO: This should not\nexport const applyMultipleDiffs = (initial: Point, ...diffs: Point[]) => {\n const metaDiff = diffs.reduce((m, diff) => ({\n // Use the smallest non-zero diff for each axis.\n // TODO: Min should be the absolute value\n x: m.x === 0 || diff.x === 0 ? m.x + diff.x : Math.min(m.x, diff.x),\n y: m.y === 0 || diff.y === 0 ? m.y + diff.y : Math.min(m.y, diff.y),\n }));\n return applyDiff(initial, metaDiff);\n};\n","import * as Selectors from \"../selectors\";\n\nimport * as Utils from \"../utils\";\nimport {\n UPDATE_WINDOW_POSITIONS,\n TOGGLE_DOUBLESIZE_MODE,\n WINDOW_SIZE_CHANGED,\n TOGGLE_WINDOW,\n CLOSE_WINDOW,\n TOGGLE_WINDOW_SHADE_MODE,\n SET_WINDOW_VISIBILITY,\n BROWSER_WINDOW_SIZE_CHANGED,\n RESET_WINDOW_SIZES,\n TOGGLE_LLAMA_MODE,\n SET_FOCUSED_WINDOW,\n} from \"../actionTypes\";\n\nimport { getPositionDiff, SizeDiff } from \"../resizeUtils\";\nimport { applyDiff } from \"../snapUtils\";\nimport { Action, Thunk, WindowId, WindowPositions, Dispatch } from \"../types\";\n\n// Dispatch an action and, if needed rearrange the windows to preserve\n// the existing edge relationship.\n//\n// Works by checking the edges before the action is dispatched. Then,\n// after disatching, calculating what position change would be required\n// to restore those relationships.\nfunction withWindowGraphIntegrity(action: Action): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const graph = Selectors.getWindowGraph(state);\n const originalSizes = Selectors.getWindowSizes(state);\n\n dispatch(action);\n\n const newSizes = Selectors.getWindowSizes(getState());\n const sizeDiff: SizeDiff = {};\n for (const window of Object.keys(newSizes)) {\n const original = originalSizes[window];\n const current = newSizes[window];\n sizeDiff[window] = {\n height: current.height - original.height,\n width: current.width - original.width,\n };\n }\n\n const positionDiff = getPositionDiff(graph, sizeDiff);\n const windowPositions = Selectors.getWindowPositions(state);\n\n const newPositions = Utils.objectMap(windowPositions, (position, key) =>\n applyDiff(position, positionDiff[key])\n );\n\n dispatch(updateWindowPositions(newPositions));\n };\n}\n\nexport function toggleDoubleSizeMode(): Thunk {\n return withWindowGraphIntegrity({ type: TOGGLE_DOUBLESIZE_MODE });\n}\n\nexport function toggleLlamaMode(): Action {\n return { type: TOGGLE_LLAMA_MODE };\n}\n\nexport function toggleEqualizerShadeMode(): Thunk {\n return withWindowGraphIntegrity({\n type: TOGGLE_WINDOW_SHADE_MODE,\n windowId: \"equalizer\",\n });\n}\n\nexport function toggleMainWindowShadeMode(): Thunk {\n return withWindowGraphIntegrity({\n type: TOGGLE_WINDOW_SHADE_MODE,\n windowId: \"main\",\n });\n}\n\nexport function togglePlaylistShadeMode(): Thunk {\n return withWindowGraphIntegrity({\n type: TOGGLE_WINDOW_SHADE_MODE,\n windowId: \"playlist\",\n });\n}\n\nexport function closeWindow(windowId: WindowId): Action {\n return { type: CLOSE_WINDOW, windowId };\n}\n\nexport function hideWindow(windowId: WindowId): Action {\n return { type: SET_WINDOW_VISIBILITY, windowId, hidden: true };\n}\n\nexport function showWindow(windowId: WindowId): Action {\n return { type: SET_WINDOW_VISIBILITY, windowId, hidden: false };\n}\n\nexport function setFocusedWindow(window: WindowId | null): Action {\n return { type: SET_FOCUSED_WINDOW, window };\n}\n\nexport function setWindowSize(\n windowId: WindowId,\n size: [number, number]\n): Action {\n return { type: WINDOW_SIZE_CHANGED, windowId, size };\n}\n\nexport function toggleWindow(windowId: WindowId): Action {\n return { type: TOGGLE_WINDOW, windowId };\n}\n\nexport function updateWindowPositions(\n positions: WindowPositions,\n absolute?: boolean\n): Action {\n return { type: UPDATE_WINDOW_POSITIONS, positions, absolute };\n}\n\nexport function centerWindowsInContainer(container: HTMLElement): Thunk {\n return (dispatch, getState) => {\n if (!Selectors.getPositionsAreRelative(getState())) {\n return;\n }\n const { left, top } = container.getBoundingClientRect();\n const { scrollWidth: width, scrollHeight: height } = container;\n dispatch(centerWindows({ left, top, width, height }));\n };\n}\n\nexport function centerWindowsInView(): Thunk {\n return centerWindows({\n left: window.scrollX,\n top: window.scrollY,\n width: window.innerWidth,\n height: window.innerHeight,\n });\n}\n\nexport function centerWindows(box: {\n left: number;\n top: number;\n width: number;\n height: number;\n}): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const windowsInfo = Selectors.getWindowsInfo(state);\n const getOpen = Selectors.getWindowOpen(state);\n const { top, left, width, height } = box;\n\n const offsetLeft = left + window.scrollX;\n const offsetTop = top + window.scrollY;\n\n // A layout has been suplied. We will compute the bounding box and\n // center the given layout.\n const bounding = Utils.calculateBoundingBox(\n windowsInfo.filter((w) => getOpen(w.key))\n );\n\n if (bounding == null) {\n // There are no windows to center\n return;\n }\n\n const boxHeight = bounding.bottom - bounding.top;\n const boxWidth = bounding.right - bounding.left;\n\n const move = {\n x: Math.ceil(offsetLeft - bounding.left + (width - boxWidth) / 2),\n y: Math.ceil(offsetTop - bounding.top + (height - boxHeight) / 2),\n };\n\n const newPositions = windowsInfo.reduce(\n (pos, w) => ({\n ...pos,\n [w.key]: { x: move.x + w.x, y: move.y + w.y },\n }),\n {}\n );\n\n dispatch(updateWindowPositions(newPositions, true));\n };\n}\n\nexport function browserWindowSizeChanged(size: {\n height: number;\n width: number;\n}): Thunk {\n return (dispatch: Dispatch) => {\n dispatch({ type: BROWSER_WINDOW_SIZE_CHANGED, ...size });\n dispatch(ensureWindowsAreOnScreen());\n };\n}\n\nexport function resetWindowSizes(): Action {\n return { type: RESET_WINDOW_SIZES };\n}\n\nexport function stackWindows(): Thunk {\n return (dispatch, getState) => {\n dispatch(\n updateWindowPositions(Selectors.getStackedLayoutPositions(getState()))\n );\n };\n}\n\nexport function ensureWindowsAreOnScreen(): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n\n const windowsInfo = Selectors.getWindowsInfo(state);\n const getOpen = Selectors.getWindowOpen(state);\n const { height, width } = Utils.getWindowSize();\n const bounding = Utils.calculateBoundingBox(\n windowsInfo.filter((w) => getOpen(w.key))\n );\n if (bounding == null) {\n // There are no windows visible, so there's no work to do.\n return;\n }\n const positions = Selectors.getWindowPositions(state);\n\n // Are we good?\n if (\n bounding.left >= 0 &&\n bounding.top >= 0 &&\n bounding.right <= width &&\n bounding.bottom <= height\n ) {\n // My work here is done.\n return;\n }\n\n const boundingHeight = bounding.bottom - bounding.top;\n const boundingWidth = bounding.right - bounding.left;\n\n // Could we simply shift all the windows by a constant offset?\n if (boundingWidth <= width && boundingHeight <= height) {\n let moveY = 0;\n let moveX = 0;\n if (bounding.top <= 0) {\n moveY = bounding.top;\n } else if (bounding.bottom > height) {\n moveY = bounding.bottom - height;\n }\n\n if (bounding.left <= 0) {\n moveX = bounding.left;\n } else if (bounding.right > width) {\n moveX = bounding.right - width;\n }\n\n const newPositions = Utils.objectMap(positions, (position) => ({\n x: position.x - moveX,\n y: position.y - moveY,\n }));\n\n dispatch(updateWindowPositions(newPositions));\n return;\n }\n\n // TODO: Try moving the individual groups to try to fit them in\n\n // I give up. Just reset everything.\n dispatch(resetWindowSizes());\n dispatch(stackWindows());\n dispatch(centerWindowsInView());\n };\n}\n","import { clamp } from \"../utils\";\nimport {\n SEEK_TO_PERCENT_COMPLETE,\n SET_BALANCE,\n SET_VOLUME,\n STOP,\n TOGGLE_REPEAT,\n TOGGLE_SHUFFLE,\n PLAY,\n PAUSE,\n PLAY_TRACK,\n TOGGLE_TIME_MODE,\n BUFFER_TRACK,\n IS_STOPPED,\n} from \"../actionTypes\";\n\nimport { MEDIA_STATUS } from \"../constants\";\nimport { openMediaFileDialog } from \"./\";\nimport { GetState, Dispatch, Thunk, Action } from \"../types\";\nimport * as Selectors from \"../selectors\";\n\nexport function playTrack(id: number): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const isStopped = Selectors.getMediaStatus(state) === MEDIA_STATUS.STOPPED;\n if (isStopped) {\n dispatch({ type: BUFFER_TRACK, id });\n } else {\n dispatch({ type: PLAY_TRACK, id });\n }\n };\n}\n\nexport function playTrackNow(id: number): Action {\n return { type: PLAY_TRACK, id };\n}\n\nexport function play(): Thunk {\n return (dispatch: Dispatch, getState: GetState) => {\n const state = getState();\n if (\n state.media.status === MEDIA_STATUS.STOPPED &&\n state.playlist.currentTrack == null &&\n state.playlist.trackOrder.length === 0\n ) {\n dispatch(openMediaFileDialog());\n } else {\n dispatch({ type: PLAY });\n }\n };\n}\n\nexport function pause(): Thunk {\n return (dispatch, getState) => {\n const { status } = getState().media;\n if (status === MEDIA_STATUS.PLAYING) {\n dispatch({ type: PAUSE });\n } else {\n dispatch({ type: PLAY });\n }\n };\n}\n\nexport function stop(): Action {\n return { type: STOP };\n}\n\nexport function nextN(n: number): Thunk {\n return (dispatch, getState) => {\n const nextTrackId = Selectors.getNextTrackId(getState(), n);\n if (nextTrackId == null) {\n dispatch({ type: IS_STOPPED });\n return;\n }\n dispatch(playTrack(nextTrackId));\n };\n}\n\nexport function next(): Thunk {\n return nextN(1);\n}\n\nexport function previous(): Thunk {\n return nextN(-1);\n}\n\nexport function seekToTime(seconds: number): Thunk {\n return function (dispatch, getState) {\n const state = getState();\n const duration = Selectors.getDuration(state);\n if (duration == null) {\n return;\n }\n dispatch({\n type: SEEK_TO_PERCENT_COMPLETE,\n percent: (seconds / duration) * 100,\n });\n };\n}\nexport function seekForward(seconds: number): Thunk {\n return function (dispatch, getState) {\n const timeElapsed = Selectors.getTimeElapsed(getState());\n dispatch(seekToTime(timeElapsed + seconds));\n };\n}\n\nexport function seekBackward(seconds: number): Thunk {\n return seekForward(-seconds);\n}\n\nexport function setVolume(volume: number): Action {\n return {\n type: SET_VOLUME,\n volume: clamp(volume, 0, 100),\n };\n}\n\nexport function adjustVolume(volumeDiff: number): Thunk {\n return (dispatch, getState) => {\n const currentVolume = getState().media.volume;\n return dispatch(setVolume(currentVolume + volumeDiff));\n };\n}\n\nexport function scrollVolume(e: React.WheelEvent<HTMLDivElement>): Thunk {\n e.preventDefault();\n return (dispatch, getState) => {\n const currentVolume = getState().media.volume;\n // Using pixels as percentage difference here is a bit arbirary, but... oh well.\n return dispatch(setVolume(currentVolume + e.deltaY));\n };\n}\n\nexport function setBalance(balance: number): Action {\n balance = clamp(balance, -100, 100);\n // The balance clips to the center\n if (Math.abs(balance) < 25) {\n balance = 0;\n }\n return {\n type: SET_BALANCE,\n balance,\n };\n}\n\nexport function toggleRepeat(): Action {\n return { type: TOGGLE_REPEAT };\n}\n\nexport function toggleShuffle(): Action {\n return { type: TOGGLE_SHUFFLE };\n}\n\nexport function toggleTimeMode(): Action {\n return { type: TOGGLE_TIME_MODE };\n}\n","import { BANDS } from \"../constants\";\n\nimport {\n SET_EQ_ON,\n SET_EQ_OFF,\n SET_BAND_VALUE,\n SET_EQ_AUTO,\n} from \"../actionTypes\";\nimport { Band, Thunk, Action } from \"../types\";\n\nconst BAND_SNAP_DISTANCE = 5;\nconst BAND_MID_POINT_VALUE = 50;\n\nfunction _snapBandValue(value: number): number {\n if (\n value < BAND_MID_POINT_VALUE + BAND_SNAP_DISTANCE &&\n value > BAND_MID_POINT_VALUE - BAND_SNAP_DISTANCE\n ) {\n return BAND_MID_POINT_VALUE;\n }\n return value;\n}\n\nexport function setEqBand(band: Band, value: number): Action {\n return { type: SET_BAND_VALUE, band, value: _snapBandValue(value) };\n}\n\nfunction _setEqTo(value: number): Thunk {\n return (dispatch) => {\n Object.values(BANDS).forEach((band) => {\n dispatch({\n type: SET_BAND_VALUE,\n value,\n band: band,\n });\n });\n };\n}\n\nexport function setEqToMax(): Thunk {\n return _setEqTo(100);\n}\n\nexport function setEqToMid(): Thunk {\n return _setEqTo(50);\n}\n\nexport function setEqToMin(): Thunk {\n return _setEqTo(0);\n}\n\nexport function setPreamp(value: number): Action {\n return { type: SET_BAND_VALUE, band: \"preamp\", value: _snapBandValue(value) };\n}\n\nexport function toggleEq(): Thunk {\n return (dispatch, getState) => {\n if (getState().equalizer.on) {\n dispatch({ type: SET_EQ_OFF });\n } else {\n dispatch({ type: SET_EQ_ON });\n }\n };\n}\n\nexport function toggleEqAuto(): Thunk {\n return (dispatch) => {\n // We don't actually support this feature yet so don't let the user ever turn it on.\n // dispatch({ type: SET_EQ_AUTO, value: !getState().equalizer.auto });\n dispatch({ type: SET_EQ_AUTO, value: false });\n };\n}\n","import { UTF8_ELLIPSIS } from \"./constants\";\n\nexport type SpriteName = string;\n\nexport interface Sprite {\n name: SpriteName;\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n/* TODO: There are too many \" \" and \"_\" characters */\nexport const FONT_LOOKUP: { [letter: string]: [number, number] } = {\n a: [0, 0],\n b: [0, 1],\n c: [0, 2],\n d: [0, 3],\n e: [0, 4],\n f: [0, 5],\n g: [0, 6],\n h: [0, 7],\n i: [0, 8],\n j: [0, 9],\n k: [0, 10],\n l: [0, 11],\n m: [0, 12],\n n: [0, 13],\n o: [0, 14],\n p: [0, 15],\n q: [0, 16],\n r: [0, 17],\n s: [0, 18],\n t: [0, 19],\n u: [0, 20],\n v: [0, 21],\n w: [0, 22],\n x: [0, 23],\n y: [0, 24],\n z: [0, 25],\n '\"': [0, 26],\n \"@\": [0, 27],\n \" \": [0, 30],\n \"0\": [1, 0],\n \"1\": [1, 1],\n \"2\": [1, 2],\n \"3\": [1, 3],\n \"4\": [1, 4],\n \"5\": [1, 5],\n \"6\": [1, 6],\n \"7\": [1, 7],\n \"8\": [1, 8],\n \"9\": [1, 9],\n [UTF8_ELLIPSIS]: [1, 10],\n \".\": [1, 11],\n \":\": [1, 12],\n \"(\": [1, 13],\n \")\": [1, 14],\n \"-\": [1, 15],\n \"'\": [1, 16],\n \"!\": [1, 17],\n _: [1, 18],\n \"+\": [1, 19],\n \"\\\\\": [1, 20],\n \"/\": [1, 21],\n \"[\": [1, 22],\n \"]\": [1, 23],\n \"^\": [1, 24],\n \"&\": [1, 25],\n \"%\": [1, 26],\n \",\": [1, 27],\n \"=\": [1, 28],\n $: [1, 29],\n \"#\": [1, 30],\n Å: [2, 0],\n Ö: [2, 1],\n Ä: [2, 2],\n \"?\": [2, 3],\n \"*\": [2, 4],\n \"<\": [1, 22],\n \">\": [1, 23],\n \"{\": [1, 22],\n \"}\": [1, 23],\n};\n\nexport const imageConstFromChar = (char: string) =>\n `CHARACTER_${char.charCodeAt(0)}`;\n\nconst CHAR_X = 5;\nconst CHAR_Y = 6;\n\nconst characterSprites = [];\nfor (const key in FONT_LOOKUP) {\n if (FONT_LOOKUP.hasOwnProperty(key)) {\n const position = FONT_LOOKUP[key];\n characterSprites.push({\n name: imageConstFromChar(key),\n y: position[0] * CHAR_Y,\n x: position[1] * CHAR_X,\n width: CHAR_X,\n height: CHAR_Y,\n });\n }\n}\n\ninterface SpriteMap {\n [sheet: string]: Sprite[];\n}\n\nconst sprites: SpriteMap = {\n BALANCE: [\n { name: \"MAIN_BALANCE_BACKGROUND\", x: 9, y: 0, width: 38, height: 420 },\n { name: \"MAIN_BALANCE_THUMB\", x: 15, y: 422, width: 14, height: 11 },\n { name: \"MAIN_BALANCE_THUMB_ACTIVE\", x: 0, y: 422, width: 14, height: 11 },\n ],\n CBUTTONS: [\n { name: \"MAIN_PREVIOUS_BUTTON\", x: 0, y: 0, width: 23, height: 18 },\n {\n name: \"MAIN_PREVIOUS_BUTTON_ACTIVE\",\n x: 0,\n y: 18,\n width: 23,\n height: 18,\n },\n { name: \"MAIN_PLAY_BUTTON\", x: 23, y: 0, width: 23, height: 18 },\n { name: \"MAIN_PLAY_BUTTON_ACTIVE\", x: 23, y: 18, width: 23, height: 18 },\n { name: \"MAIN_PAUSE_BUTTON\", x: 46, y: 0, width: 23, height: 18 },\n { name: \"MAIN_PAUSE_BUTTON_ACTIVE\", x: 46, y: 18, width: 23, height: 18 },\n { name: \"MAIN_STOP_BUTTON\", x: 69, y: 0, width: 23, height: 18 },\n { name: \"MAIN_STOP_BUTTON_ACTIVE\", x: 69, y: 18, width: 23, height: 18 },\n { name: \"MAIN_NEXT_BUTTON\", x: 92, y: 0, width: 23, height: 18 },\n { name: \"MAIN_NEXT_BUTTON_ACTIVE\", x: 92, y: 18, width: 22, height: 18 },\n { name: \"MAIN_EJECT_BUTTON\", x: 114, y: 0, width: 22, height: 16 },\n { name: \"MAIN_EJECT_BUTTON_ACTIVE\", x: 114, y: 16, width: 22, height: 16 },\n ],\n MAIN: [\n { name: \"MAIN_WINDOW_BACKGROUND\", x: 0, y: 0, width: 275, height: 116 },\n ],\n MONOSTER: [\n { name: \"MAIN_STEREO\", x: 0, y: 12, width: 29, height: 12 },\n { name: \"MAIN_STEREO_SELECTED\", x: 0, y: 0, width: 29, height: 12 },\n { name: \"MAIN_MONO\", x: 29, y: 12, width: 27, height: 12 },\n { name: \"MAIN_MONO_SELECTED\", x: 29, y: 0, width: 27, height: 12 },\n ],\n NUMBERS: [\n { name: \"NO_MINUS_SIGN\", x: 9, y: 6, width: 5, height: 1 },\n { name: \"MINUS_SIGN\", x: 20, y: 6, width: 5, height: 1 },\n { name: \"DIGIT_0\", x: 0, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_1\", x: 9, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_2\", x: 18, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_3\", x: 27, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_4\", x: 36, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_5\", x: 45, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_6\", x: 54, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_7\", x: 63, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_8\", x: 72, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_9\", x: 81, y: 0, width: 9, height: 13 },\n ],\n NUMS_EX: [\n { name: \"NO_MINUS_SIGN_EX\", x: 90, y: 0, width: 9, height: 13 },\n { name: \"MINUS_SIGN_EX\", x: 99, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_0_EX\", x: 0, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_1_EX\", x: 9, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_2_EX\", x: 18, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_3_EX\", x: 27, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_4_EX\", x: 36, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_5_EX\", x: 45, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_6_EX\", x: 54, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_7_EX\", x: 63, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_8_EX\", x: 72, y: 0, width: 9, height: 13 },\n { name: \"DIGIT_9_EX\", x: 81, y: 0, width: 9, height: 13 },\n ],\n PLAYPAUS: [\n { name: \"MAIN_PLAYING_INDICATOR\", x: 0, y: 0, width: 9, height: 9 },\n { name: \"MAIN_PAUSED_INDICATOR\", x: 9, y: 0, width: 9, height: 9 },\n { name: \"MAIN_STOPPED_INDICATOR\", x: 18, y: 0, width: 9, height: 9 },\n { name: \"MAIN_NOT_WORKING_INDICATOR\", x: 36, y: 0, width: 9, height: 9 },\n { name: \"MAIN_WORKING_INDICATOR\", x: 39, y: 0, width: 9, height: 9 },\n ],\n PLEDIT: [\n { name: \"PLAYLIST_TOP_TILE\", x: 127, y: 21, width: 25, height: 20 },\n { name: \"PLAYLIST_TOP_LEFT_CORNER\", x: 0, y: 21, width: 25, height: 20 },\n { name: \"PLAYLIST_TITLE_BAR\", x: 26, y: 21, width: 100, height: 20 },\n {\n name: \"PLAYLIST_TOP_RIGHT_CORNER\",\n x: 153,\n y: 21,\n width: 25,\n height: 20,\n },\n {\n name: \"PLAYLIST_TOP_TILE_SELECTED\",\n x: 127,\n y: 0,\n width: 25,\n height: 20,\n },\n { name: \"PLAYLIST_TOP_LEFT_SELECTED\", x: 0, y: 0, width: 25, height: 20 },\n {\n name: \"PLAYLIST_TITLE_BAR_SELECTED\",\n x: 26,\n y: 0,\n width: 100,\n height: 20,\n },\n {\n name: \"PLAYLIST_TOP_RIGHT_CORNER_SELECTED\",\n x: 153,\n y: 0,\n width: 25,\n height: 20,\n },\n { name: \"PLAYLIST_LEFT_TILE\", x: 0, y: 42, width: 12, height: 29 },\n { name: \"PLAYLIST_RIGHT_TILE\", x: 31, y: 42, width: 20, height: 29 },\n { name: \"PLAYLIST_BOTTOM_TILE\", x: 179, y: 0, width: 25, height: 38 },\n {\n name: \"PLAYLIST_BOTTOM_LEFT_CORNER\",\n x: 0,\n y: 72,\n width: 125,\n height: 38,\n },\n {\n name: \"PLAYLIST_BOTTOM_RIGHT_CORNER\",\n x: 126,\n y: 72,\n width: 150,\n height: 38,\n },\n {\n name: \"PLAYLIST_VISUALIZER_BACKGROUND\",\n x: 205,\n y: 0,\n width: 75,\n height: 38,\n },\n { name: \"PLAYLIST_SHADE_BACKGROUND\", x: 72, y: 57, width: 25, height: 14 },\n {\n name: \"PLAYLIST_SHADE_BACKGROUND_LEFT\",\n x: 72,\n y: 42,\n width: 25,\n height: 14,\n },\n {\n name: \"PLAYLIST_SHADE_BACKGROUND_RIGHT\",\n x: 99,\n y: 57,\n width: 50,\n height: 14,\n },\n {\n name: \"PLAYLIST_SHADE_BACKGROUND_RIGHT_SELECTED\",\n x: 99,\n y: 42,\n width: 50,\n height: 14,\n },\n {\n name: \"PLAYLIST_SCROLL_HANDLE_SELECTED\",\n x: 61,\n y: 53,\n width: 8,\n height: 18,\n },\n { name: \"PLAYLIST_SCROLL_HANDLE\", x: 52, y: 53, width: 8, height: 18 },\n { name: \"PLAYLIST_ADD_URL\", x: 0, y: 111, width: 22, height: 18 },\n { name: \"PLAYLIST_ADD_URL_SELECTED\", x: 23, y: 111, width: 22, height: 18 },\n { name: \"PLAYLIST_ADD_DIR\", x: 0, y: 130, width: 22, height: 18 },\n { name: \"PLAYLIST_ADD_DIR_SELECTED\", x: 23, y: 130, width: 22, height: 18 },\n { name: \"PLAYLIST_ADD_FILE\", x: 0, y: 149, width: 22, height: 18 },\n {\n name: \"PLAYLIST_ADD_FILE_SELECTED\",\n x: 23,\n y: 149,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_REMOVE_ALL\", x: 54, y: 111, width: 22, height: 18 },\n {\n name: \"PLAYLIST_REMOVE_ALL_SELECTED\",\n x: 77,\n y: 111,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_CROP\", x: 54, y: 130, width: 22, height: 18 },\n { name: \"PLAYLIST_CROP_SELECTED\", x: 77, y: 130, width: 22, height: 18 },\n { name: \"PLAYLIST_REMOVE_SELECTED\", x: 54, y: 149, width: 22, height: 18 },\n {\n name: \"PLAYLIST_REMOVE_SELECTED_SELECTED\",\n x: 77,\n y: 149,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_REMOVE_MISC\", x: 54, y: 168, width: 22, height: 18 },\n {\n name: \"PLAYLIST_REMOVE_MISC_SELECTED\",\n x: 77,\n y: 168,\n width: 22,\n height: 18,\n },\n {\n name: \"PLAYLIST_INVERT_SELECTION\",\n x: 104,\n y: 111,\n width: 22,\n height: 18,\n },\n {\n name: \"PLAYLIST_INVERT_SELECTION_SELECTED\",\n x: 127,\n y: 111,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_SELECT_ZERO\", x: 104, y: 130, width: 22, height: 18 },\n {\n name: \"PLAYLIST_SELECT_ZERO_SELECTED\",\n x: 127,\n y: 130,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_SELECT_ALL\", x: 104, y: 149, width: 22, height: 18 },\n {\n name: \"PLAYLIST_SELECT_ALL_SELECTED\",\n x: 127,\n y: 149,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_SORT_LIST\", x: 154, y: 111, width: 22, height: 18 },\n {\n name: \"PLAYLIST_SORT_LIST_SELECTED\",\n x: 177,\n y: 111,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_FILE_INFO\", x: 154, y: 130, width: 22, height: 18 },\n {\n name: \"PLAYLIST_FILE_INFO_SELECTED\",\n x: 177,\n y: 130,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_MISC_OPTIONS\", x: 154, y: 149, width: 22, height: 18 },\n {\n name: \"PLAYLIST_MISC_OPTIONS_SELECTED\",\n x: 177,\n y: 149,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_NEW_LIST\", x: 204, y: 111, width: 22, height: 18 },\n {\n name: \"PLAYLIST_NEW_LIST_SELECTED\",\n x: 227,\n y: 111,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_SAVE_LIST\", x: 204, y: 130, width: 22, height: 18 },\n {\n name: \"PLAYLIST_SAVE_LIST_SELECTED\",\n x: 227,\n y: 130,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_LOAD_LIST\", x: 204, y: 149, width: 22, height: 18 },\n {\n name: \"PLAYLIST_LOAD_LIST_SELECTED\",\n x: 227,\n y: 149,\n width: 22,\n height: 18,\n },\n { name: \"PLAYLIST_ADD_MENU_BAR\", x: 48, y: 111, width: 3, height: 54 },\n { name: \"PLAYLIST_REMOVE_MENU_BAR\", x: 100, y: 111, width: 3, height: 72 },\n { name: \"PLAYLIST_SELECT_MENU_BAR\", x: 150, y: 111, width: 3, height: 54 },\n { name: \"PLAYLIST_MISC_MENU_BAR\", x: 200, y: 111, width: 3, height: 54 },\n { name: \"PLAYLIST_LIST_BAR\", x: 250, y: 111, width: 3, height: 54 },\n { name: \"PLAYLIST_CLOSE_SELECTED\", x: 52, y: 42, width: 9, height: 9 },\n { name: \"PLAYLIST_COLLAPSE_SELECTED\", x: 62, y: 42, width: 9, height: 9 },\n { name: \"PLAYLIST_EXPAND_SELECTED\", x: 150, y: 42, width: 9, height: 9 },\n ],\n EQ_EX: [\n {\n name: \"EQ_SHADE_BACKGROUND_SELECTED\",\n x: 0,\n y: 0,\n width: 275,\n height: 14,\n },\n { name: \"EQ_SHADE_BACKGROUND\", x: 0, y: 15, width: 275, height: 14 },\n { name: \"EQ_SHADE_VOLUME_SLIDER_LEFT\", x: 1, y: 30, width: 3, height: 7 },\n { name: \"EQ_SHADE_VOLUME_SLIDER_CENTER\", x: 4, y: 30, width: 3, height: 7 },\n { name: \"EQ_SHADE_VOLUME_SLIDER_RIGHT\", x: 7, y: 30, width: 3, height: 7 },\n { name: \"EQ_SHADE_BALANCE_SLIDER_LEFT\", x: 11, y: 30, width: 3, height: 7 },\n {\n name: \"EQ_SHADE_BALANCE_SLIDER_CENTER\",\n x: 14,\n y: 30,\n width: 3,\n height: 7,\n },\n {\n name: \"EQ_SHADE_BALANCE_SLIDER_RIGHT\",\n x: 17,\n y: 30,\n width: 3,\n height: 7,\n },\n { name: \"EQ_MAXIMIZE_BUTTON_ACTIVE\", x: 1, y: 38, width: 9, height: 9 },\n { name: \"EQ_MINIMIZE_BUTTON_ACTIVE\", x: 1, y: 47, width: 9, height: 9 },\n { name: \"EQ_SHADE_CLOSE_BUTTON\", x: 11, y: 38, width: 9, height: 9 },\n { name: \"EQ_SHADE_CLOSE_BUTTON_ACTIVE\", x: 11, y: 47, width: 9, height: 9 },\n ],\n EQMAIN: [\n { name: \"EQ_WINDOW_BACKGROUND\", x: 0, y: 0, width: 275, height: 116 },\n { name: \"EQ_TITLE_BAR\", x: 0, y: 149, width: 275, height: 14 },\n { name: \"EQ_TITLE_BAR_SELECTED\", x: 0, y: 134, width: 275, height: 14 },\n { name: \"EQ_SLIDER_BACKGROUND\", x: 13, y: 164, width: 209, height: 129 },\n { name: \"EQ_SLIDER_THUMB\", x: 0, y: 164, width: 11, height: 11 },\n { name: \"EQ_SLIDER_THUMB_SELECTED\", x: 0, y: 176, width: 11, height: 11 },\n { name: \"EQ_CLOSE_BUTTON\", x: 0, y: 116, width: 9, height: 9 },\n { name: \"EQ_CLOSE_BUTTON_ACTIVE\", x: 0, y: 125, width: 9, height: 9 },\n // This is technically not a sprite, it's just part of the background.\n // However, we extract it to use it as a fallback for\n // `EQ_MAXIMIZE_BUTTON_ACTIVE`. Without this, skins that don't implement\n // `eq_ex.bmp` would show the default skin's `EQ_MAXIMIZE_BUTTON_ACTIVE`\n // instead of showing no sprite aka, just showing through to this portion of\n // the title bar image.\n {\n name: \"EQ_MAXIMIZE_BUTTON_ACTIVE_FALLBACK\",\n x: 254,\n y: 152,\n width: 9,\n height: 9,\n },\n { name: \"EQ_ON_BUTTON\", x: 10, y: 119, width: 26, height: 12 },\n { name: \"EQ_ON_BUTTON_DEPRESSED\", x: 128, y: 119, width: 26, height: 12 },\n { name: \"EQ_ON_BUTTON_SELECTED\", x: 69, y: 119, width: 26, height: 12 },\n {\n name: \"EQ_ON_BUTTON_SELECTED_DEPRESSED\",\n x: 187,\n y: 119,\n width: 26,\n height: 12,\n },\n { name: \"EQ_AUTO_BUTTON\", x: 36, y: 119, width: 32, height: 12 },\n {\n name: \"EQ_AUTO_BUTTON_DEPRESSED\",\n x: 154,\n y: 119,\n width: 32,\n height: 12,\n },\n { name: \"EQ_AUTO_BUTTON_SELECTED\", x: 95, y: 119, width: 32, height: 12 },\n {\n name: \"EQ_AUTO_BUTTON_SELECTED_DEPRESSED\",\n x: 213,\n y: 119,\n width: 32,\n height: 12,\n },\n { name: \"EQ_GRAPH_BACKGROUND\", x: 0, y: 294, width: 113, height: 19 },\n { name: \"EQ_GRAPH_LINE_COLORS\", x: 115, y: 294, width: 1, height: 19 },\n { name: \"EQ_PRESETS_BUTTON\", x: 224, y: 164, width: 44, height: 12 },\n {\n name: \"EQ_PRESETS_BUTTON_SELECTED\",\n x: 224,\n y: 176,\n width: 44,\n height: 12,\n },\n { name: \"EQ_PREAMP_LINE\", x: 0, y: 314, width: 113, height: 1 },\n ],\n POSBAR: [\n {\n name: \"MAIN_POSITION_SLIDER_BACKGROUND\",\n x: 0,\n y: 0,\n width: 248,\n height: 10,\n },\n {\n name: \"MAIN_POSITION_SLIDER_THUMB\",\n x: 248,\n y: 0,\n width: 29,\n height: 10,\n },\n {\n name: \"MAIN_POSITION_SLIDER_THUMB_SELECTED\",\n x: 278,\n y: 0,\n width: 29,\n height: 10,\n },\n ],\n SHUFREP: [\n { name: \"MAIN_SHUFFLE_BUTTON\", x: 28, y: 0, width: 47, height: 15 },\n {\n name: \"MAIN_SHUFFLE_BUTTON_DEPRESSED\",\n x: 28,\n y: 15,\n width: 47,\n height: 15,\n },\n {\n name: \"MAIN_SHUFFLE_BUTTON_SELECTED\",\n x: 28,\n y: 30,\n width: 47,\n height: 15,\n },\n {\n name: \"MAIN_SHUFFLE_BUTTON_SELECTED_DEPRESSED\",\n x: 28,\n y: 45,\n width: 47,\n height: 15,\n },\n { name: \"MAIN_REPEAT_BUTTON\", x: 0, y: 0, width: 28, height: 15 },\n {\n name: \"MAIN_REPEAT_BUTTON_DEPRESSED\",\n x: 0,\n y: 15,\n width: 28,\n height: 15,\n },\n {\n name: \"MAIN_REPEAT_BUTTON_SELECTED\",\n x: 0,\n y: 30,\n width: 28,\n height: 15,\n },\n {\n name: \"MAIN_REPEAT_BUTTON_SELECTED_DEPRESSED\",\n x: 0,\n y: 45,\n width: 28,\n height: 15,\n },\n { name: \"MAIN_EQ_BUTTON\", x: 0, y: 61, width: 23, height: 12 },\n { name: \"MAIN_EQ_BUTTON_SELECTED\", x: 0, y: 73, width: 23, height: 12 },\n { name: \"MAIN_EQ_BUTTON_DEPRESSED\", x: 46, y: 61, width: 23, height: 12 },\n {\n name: \"MAIN_EQ_BUTTON_DEPRESSED_SELECTED\",\n x: 46,\n y: 73,\n width: 23,\n height: 12,\n },\n { name: \"MAIN_PLAYLIST_BUTTON\", x: 23, y: 61, width: 23, height: 12 },\n {\n name: \"MAIN_PLAYLIST_BUTTON_SELECTED\",\n x: 23,\n y: 73,\n width: 23,\n height: 12,\n },\n {\n name: \"MAIN_PLAYLIST_BUTTON_DEPRESSED\",\n x: 69,\n y: 61,\n width: 23,\n height: 12,\n },\n {\n name: \"MAIN_PLAYLIST_BUTTON_DEPRESSED_SELECTED\",\n x: 69,\n y: 73,\n width: 23,\n height: 12,\n },\n ],\n TEXT: characterSprites,\n TITLEBAR: [\n { name: \"MAIN_TITLE_BAR\", x: 27, y: 15, width: 275, height: 14 },\n { name: \"MAIN_TITLE_BAR_SELECTED\", x: 27, y: 0, width: 275, height: 14 },\n {\n name: \"MAIN_EASTER_EGG_TITLE_BAR\",\n x: 27,\n y: 72,\n width: 275,\n height: 14,\n },\n {\n name: \"MAIN_EASTER_EGG_TITLE_BAR_SELECTED\",\n x: 27,\n y: 57,\n width: 275,\n height: 14,\n },\n { name: \"MAIN_OPTIONS_BUTTON\", x: 0, y: 0, width: 9, height: 9 },\n {\n name: \"MAIN_OPTIONS_BUTTON_DEPRESSED\",\n x: 0,\n y: 9,\n width: 9,\n height: 9,\n },\n { name: \"MAIN_MINIMIZE_BUTTON\", x: 9, y: 0, width: 9, height: 9 },\n {\n name: \"MAIN_MINIMIZE_BUTTON_DEPRESSED\",\n x: 9,\n y: 9,\n width: 9,\n height: 9,\n },\n { name: \"MAIN_SHADE_BUTTON\", x: 0, y: 18, width: 9, height: 9 },\n { name: \"MAIN_SHADE_BUTTON_DEPRESSED\", x: 9, y: 18, width: 9, height: 9 },\n { name: \"MAIN_CLOSE_BUTTON\", x: 18, y: 0, width: 9, height: 9 },\n { name: \"MAIN_CLOSE_BUTTON_DEPRESSED\", x: 18, y: 9, width: 9, height: 9 },\n {\n name: \"MAIN_CLUTTER_BAR_BACKGROUND\",\n x: 304,\n y: 0,\n width: 8,\n height: 43,\n },\n {\n name: \"MAIN_CLUTTER_BAR_BACKGROUND_DISABLED\",\n x: 312,\n y: 0,\n width: 8,\n height: 43,\n },\n {\n name: \"MAIN_CLUTTER_BAR_BUTTON_O_SELECTED\",\n x: 304,\n y: 47,\n width: 8,\n height: 8,\n },\n {\n name: \"MAIN_CLUTTER_BAR_BUTTON_A_SELECTED\",\n x: 312,\n y: 55,\n width: 8,\n height: 7,\n },\n {\n name: \"MAIN_CLUTTER_BAR_BUTTON_I_SELECTED\",\n x: 320,\n y: 62,\n width: 8,\n height: 7,\n },\n {\n name: \"MAIN_CLUTTER_BAR_BUTTON_D_SELECTED\",\n x: 328,\n y: 69,\n width: 8,\n height: 8,\n },\n {\n name: \"MAIN_CLUTTER_BAR_BUTTON_V_SELECTED\",\n x: 336,\n y: 77,\n width: 8,\n height: 7,\n },\n { name: \"MAIN_SHADE_BACKGROUND\", x: 27, y: 42, width: 275, height: 14 },\n {\n name: \"MAIN_SHADE_BACKGROUND_SELECTED\",\n x: 27,\n y: 29,\n width: 275,\n height: 14,\n },\n { name: \"MAIN_SHADE_BUTTON_SELECTED\", x: 0, y: 27, width: 9, height: 9 },\n {\n name: \"MAIN_SHADE_BUTTON_SELECTED_DEPRESSED\",\n x: 9,\n y: 27,\n width: 9,\n height: 9,\n },\n {\n name: \"MAIN_SHADE_POSITION_BACKGROUND\",\n x: 0,\n y: 36,\n width: 17,\n height: 7,\n },\n { name: \"MAIN_SHADE_POSITION_THUMB\", x: 20, y: 36, width: 3, height: 7 },\n {\n name: \"MAIN_SHADE_POSITION_THUMB_LEFT\",\n x: 17,\n y: 36,\n width: 3,\n height: 7,\n },\n {\n name: \"MAIN_SHADE_POSITION_THUMB_RIGHT\",\n x: 23,\n y: 36,\n width: 3,\n height: 7,\n },\n ],\n VOLUME: [\n { name: \"MAIN_VOLUME_BACKGROUND\", x: 0, y: 0, width: 68, height: 420 },\n { name: \"MAIN_VOLUME_THUMB\", x: 15, y: 422, width: 14, height: 11 },\n {\n name: \"MAIN_VOLUME_THUMB_SELECTED\",\n x: 0,\n y: 422,\n width: 14,\n height: 11,\n },\n ],\n GEN: [\n { name: \"GEN_TOP_LEFT_SELECTED\", x: 0, y: 0, width: 25, height: 20 },\n { name: \"GEN_TOP_LEFT_END_SELECTED\", x: 26, y: 0, width: 25, height: 20 },\n {\n name: \"GEN_TOP_CENTER_FILL_SELECTED\",\n x: 52,\n y: 0,\n width: 25,\n height: 20,\n },\n { name: \"GEN_TOP_RIGHT_END_SELECTED\", x: 78, y: 0, width: 25, height: 20 },\n {\n name: \"GEN_TOP_LEFT_RIGHT_FILL_SELECTED\",\n x: 104,\n y: 0,\n width: 25,\n height: 20,\n },\n { name: \"GEN_TOP_RIGHT_SELECTED\", x: 130, y: 0, width: 25, height: 20 },\n\n { name: \"GEN_TOP_LEFT\", x: 0, y: 21, width: 25, height: 20 },\n { name: \"GEN_TOP_LEFT_END\", x: 26, y: 21, width: 25, height: 20 },\n { name: \"GEN_TOP_CENTER_FILL\", x: 52, y: 21, width: 25, height: 20 },\n { name: \"GEN_TOP_RIGHT_END\", x: 78, y: 21, width: 25, height: 20 },\n { name: \"GEN_TOP_LEFT_RIGHT_FILL\", x: 104, y: 21, width: 25, height: 20 },\n { name: \"GEN_TOP_RIGHT\", x: 130, y: 21, width: 25, height: 20 },\n { name: \"GEN_BOTTOM_LEFT\", x: 0, y: 42, width: 125, height: 14 },\n { name: \"GEN_BOTTOM_RIGHT\", x: 0, y: 57, width: 125, height: 14 },\n { name: \"GEN_BOTTOM_FILL\", x: 127, y: 72, width: 25, height: 14 },\n { name: \"GEN_MIDDLE_LEFT\", x: 127, y: 42, width: 11, height: 29 },\n { name: \"GEN_MIDDLE_LEFT_BOTTOM\", x: 158, y: 42, width: 11, height: 24 },\n { name: \"GEN_MIDDLE_RIGHT\", x: 139, y: 42, width: 8, height: 29 },\n { name: \"GEN_MIDDLE_RIGHT_BOTTOM\", x: 170, y: 42, width: 8, height: 24 },\n { name: \"GEN_CLOSE_SELECTED\", x: 148, y: 42, width: 9, height: 9 },\n ],\n /*\n\n We don't currently support the Media Library, so there are disabled\n GENEX: [\n {\n name: \"GENEX_BUTTON_BACKGROUND_LEFT_UNPRESSED\",\n x: 0,\n y: 0,\n height: 15,\n width: 4,\n },\n {\n name: \"GENEX_BUTTON_BACKGROUND_CENTER_UNPRESSED\",\n x: 4,\n y: 0,\n height: 15,\n width: 39,\n },\n {\n name: \"GENEX_BUTTON_BACKGROUND_RIGHT_UNPRESSED\",\n x: 43,\n y: 0,\n height: 15,\n width: 4,\n },\n {\n name: \"GENEX_BUTTON_BACKGROUND_PRESSED\",\n x: 0,\n y: 1,\n height: 15,\n width: 47,\n },\n { name: \"GENEX_SCROLL_UP_UNPRESSED\", x: 0, y: 31, height: 14, width: 14 },\n {\n name: \"GENEX_SCROLL_DOWN_UNPRESSED\",\n x: 14,\n y: 31,\n height: 14,\n width: 14,\n },\n { name: \"GENEX_SCROLL_UP_PRESSED\", x: 28, y: 31, height: 14, width: 14 },\n { name: \"GENEX_SCROLL_DOWN_PRESSED\", x: 42, y: 31, height: 14, width: 14 },\n { name: \"GENEX_SCROLL_LEFT_UNPRESSED\", x: 0, y: 45, height: 14, width: 14 },\n {\n name: \"GENEX_SCROLL_RIGHT_UNPRESSED\",\n x: 14,\n y: 45,\n height: 14,\n width: 14,\n },\n { name: \"GENEX_SCROLL_LEFT_PRESSED\", x: 28, y: 45, height: 14, width: 14 },\n { name: \"GENEX_SCROLL_RIGHT_PRESSED\", x: 42, y: 45, height: 14, width: 14 },\n {\n name: \"GENEX_VERTICAL_SCROLL_HANDLE_UNPRESSED\",\n x: 56,\n y: 31,\n height: 28,\n width: 14,\n },\n {\n name: \"GENEX_VERTICAL_SCROLL_HANDLE_PRESSED\",\n x: 70,\n y: 31,\n height: 28,\n width: 14,\n },\n {\n name: \"GENEX_HORIZONTAL_SCROLL_HANDLE_UNPRESSED\",\n x: 84,\n y: 31,\n height: 14,\n width: 28,\n },\n {\n name: \"GENEX_HORIZONTAL_SCROLL_HANDLE_PRESSED\",\n x: 84,\n y: 45,\n height: 14,\n width: 28,\n },\n ],\n */\n};\n\nexport default sprites;\n","import { parseIni } from \"./utils\";\n\nexport function pointPairs(arr: string[]) {\n const pairedValues = [];\n for (let i = 0; i < arr.length; i += 2) {\n pairedValues.push(`${arr[i]},${arr[i + 1]}`);\n }\n return pairedValues;\n}\n\ntype RegionData = { [section: string]: string[] };\n\nexport default function regionParser(regionStr: string): RegionData {\n const iniData = parseIni(regionStr);\n const data: RegionData = {};\n Object.keys(iniData).forEach((section) => {\n const { numpoints, pointlist } = iniData[section];\n if (!numpoints || !pointlist) {\n return;\n }\n const pointCounts = numpoints.split(/\\s*,\\s*/).filter((val) => val !== \"\");\n const points = pointPairs(\n // points can be separated by spaces, or by commas\n pointlist.split(/\\s*[, ]\\s*/).filter((val) => val !== \"\")\n );\n let pointIndex = 0;\n const polygons = pointCounts.map((numStr) => {\n const num = Number(numStr);\n if (num < 3) {\n // What use is a polygon with less than three sides?\n pointIndex += num;\n return null;\n }\n const polygon = points.slice(pointIndex, pointIndex + num).join(\" \");\n if (!polygon.length) {\n // It's possible that the skin author specified more polygons than provided points.\n return null;\n }\n pointIndex += num;\n return polygon;\n });\n const validPolygons = polygons.filter(\n (polygon) => polygon != null\n ) as string[];\n if (validPolygons.length) {\n data[section] = validPolygons;\n }\n });\n\n return data;\n}\n","import JSZip from \"jszip\";\nimport { PlaylistStyle, SkinGenExColors, CursorImage } from \"./types\";\nimport SKIN_SPRITES, { Sprite } from \"./skinSprites\";\nimport { DEFAULT_SKIN } from \"./constants\";\nimport * as Utils from \"./utils\";\nimport * as FileUtils from \"./fileUtils\";\n\nexport const getFileExtension = (fileName: string): string | null => {\n const matches = /\\.([a-z]{3,4})$/i.exec(fileName);\n return matches ? matches[1].toLowerCase() : null;\n};\n\nfunction getFilenameRegex(base: string, ext: string): RegExp {\n return new RegExp(`^(.*/)?${base}.(${ext})$`, \"i\");\n}\n\nexport async function getFileFromZip(\n zip: JSZip,\n fileName: string,\n ext: string,\n mode: \"blob\" | \"text\" | \"base64\" | \"uint8array\"\n) {\n const files = zip.file(getFilenameRegex(fileName, ext));\n if (!files.length) {\n return null;\n }\n\n // Windows file system is case insensitve, but zip files are not.\n // This means that it's possible for a zip to contain both `main.bmp` _and_\n // `main.BMP` but in Winamp only one will be materialized onto disk when\n // decompressing. I suspect that in this case later files in the archive\n // overwrite earlier ones. To mimic that behavior we use the last matching\n // file.\n //\n // This works because `JSZip.file` filters the files by iterating the\n // underlying `files` object under the hood:\n // https://github.com/Stuk/jszip/blob/25d401e104926fef8528d670ecfe53f14e77a297/lib/object.js#L182\n // Since JavaScript objects are iterable in the order that the keys were\n // added this _should_ mean that by taking the last file here we will get\n // the last file that JSZip extracted.\n const lastFile = files[files.length - 1];\n\n try {\n const contents = await lastFile.async(mode);\n return { contents, name: lastFile.name };\n } catch (e) {\n console.warn(\n `Failed to extract \"${fileName}.${ext}\" from the skin archive.`\n );\n return null;\n }\n}\n\nfunction fallbackGetImgFromBlob(blob: Blob): Promise<HTMLImageElement> {\n return Utils.imgFromUrl(URL.createObjectURL(blob));\n}\n\nexport async function getImgFromBlob(\n blob: Blob\n): Promise<ImageBitmap | HTMLImageElement | null> {\n try {\n // Use this faster native browser API if available.\n // NOTE: In some browsers `window.createImageBitmap` may not exist so this will throw.\n return await window.createImageBitmap(blob);\n } catch (e) {\n try {\n return await fallbackGetImgFromBlob(blob);\n } catch (ee) {\n // Like Winamp we will silently fail on images that don't parse.\n return null;\n }\n }\n}\n\nexport function getSpriteUrisFromImg(\n img: HTMLImageElement | ImageBitmap,\n sprites: Sprite[]\n): { [spriteName: string]: string } {\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n if (context == null) {\n throw new Error(\"Failed to get canvas context\");\n }\n const images: { [spriteName: string]: string } = {};\n sprites.forEach((sprite) => {\n canvas.height = sprite.height;\n canvas.width = sprite.width;\n\n context.drawImage(img, -sprite.x, -sprite.y);\n const image = canvas.toDataURL();\n images[sprite.name] = image;\n });\n return images;\n}\n\nexport async function getImgFromFilename(\n zip: JSZip,\n fileName: string\n): Promise<HTMLImageElement | ImageBitmap | null> {\n // Winamp only supports .bmp images, but WACUP set a precidence of supporting\n // .png as well to reduce size. Since we care about size as well, we follow\n // suit. Our default skin uses .png to save 14kb.\n const file = await getFileFromZip(zip, fileName, \"(png|bmp)\", \"blob\");\n if (!file) {\n return null;\n }\n\n const mimeType = `image/${getFileExtension(file.name) || \"*\"}`;\n // The spec for createImageBitmap() says the browser should try to sniff the\n // mime type, but it looks like Firefox does not. So we specify it here\n // explicitly.\n const typedBlob = new Blob([file.contents], { type: mimeType });\n return getImgFromBlob(typedBlob);\n}\n\nexport async function getSpriteUrisFromFilename(\n zip: JSZip,\n fileName: string\n): Promise<{ [spriteName: string]: string }> {\n const img = await getImgFromFilename(zip, fileName);\n if (img == null) {\n return {};\n }\n return getSpriteUrisFromImg(img, SKIN_SPRITES[fileName]);\n}\n\n// https://docs.microsoft.com/en-us/windows/win32/xaudio2/resource-interchange-file-format--riff-\nconst RIFF_MAGIC = \"RIFF\".split(\"\").map((c) => c.charCodeAt(0));\n\nfunction arrayStartsWith(arr: Uint8Array, matcher: number[]): boolean {\n return matcher.every((item, i) => arr[i] === item);\n}\n\nexport async function getCursorFromFilename(\n zip: JSZip,\n fileName: string\n): Promise<CursorImage | null> {\n const file = await getFileFromZip(zip, fileName, \"CUR\", \"uint8array\");\n if (file == null) {\n return null;\n }\n const contents = file.contents as Uint8Array;\n if (arrayStartsWith(contents, RIFF_MAGIC)) {\n try {\n return { type: \"ani\", aniData: contents };\n } catch (e) {\n console.error(e);\n return null;\n }\n }\n\n return { type: \"cur\", url: FileUtils.curUrlFromByteArray(contents) };\n}\n\nexport async function getPlaylistStyle(zip: JSZip): Promise<PlaylistStyle> {\n const files = zip.file(getFilenameRegex(\"PLEDIT\", \"txt\"));\n const file = files[0];\n if (file == null) {\n return DEFAULT_SKIN.playlistStyle;\n }\n const ini = await file.async(\"text\");\n if (ini == null) {\n return DEFAULT_SKIN.playlistStyle;\n }\n const data = ini && Utils.parseIni(ini).text;\n if (!data) {\n // Corrupt or missing PLEDIT.txt file.\n return DEFAULT_SKIN.playlistStyle;\n }\n\n // Winamp seems to permit colors that contain too many characters.\n // For compatibility with existing skins, we normalize them here.\n [\"normal\", \"current\", \"normalbg\", \"selectedbg\", \"mbFG\", \"mbBG\"].forEach(\n (colorKey) => {\n let color = data[colorKey];\n if (!color) {\n return;\n }\n if (color[0] !== \"#\") {\n color = `#${color}`;\n }\n data[colorKey] = color.slice(0, 7);\n }\n );\n\n return { ...DEFAULT_SKIN.playlistStyle, ...data };\n}\n\nexport async function getGenExColors(\n zip: JSZip\n): Promise<null | SkinGenExColors> {\n const img = await getImgFromFilename(zip, \"GENEX\");\n if (img == null) {\n return null;\n }\n\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n if (context == null) {\n return null;\n }\n canvas.width = img.width;\n canvas.height = img.height;\n context.drawImage(img, 0, 0);\n\n const getColorAt = (x: number): string =>\n `rgb(${context\n .getImageData(x, 0, 1, 1)\n // Discard the alpha channel\n .data.slice(0, 3)\n .join(\",\")})`;\n\n // Ideally we would just have a map from key to the x value and map over\n // that with getColorAt, but I don't know a great way to make that type\n // safe. So, we'll just do this for now, where we explicitly call getColorAt\n // for each key.\n return {\n // (1) x=48: item background (background to edits, listviews, etc.)\n itemBackground: getColorAt(48),\n // (2) x=50: item foreground (text colour of edits, listviews, etc.)\n itemForeground: getColorAt(50),\n // (3) x=52: window background (used to set the bg color for the dialog)\n windowBackground: getColorAt(52),\n // (4) x=54: button text colour\n buttonText: getColorAt(54),\n // (5) x=56: window text colour\n windowText: getColorAt(56),\n // (6) x=58: colour of dividers and sunken borders\n divider: getColorAt(58),\n // (7) x=60: selection colour for entries inside playlists (nothing else yet)\n playlistSelection: getColorAt(60),\n // (8) x=62: listview header background colour\n listHeaderBackground: getColorAt(62),\n // (9) x=64: listview header text colour\n listHeaderText: getColorAt(64),\n // (10) x=66: listview header frame top and left colour\n listHeaderFrameTopAndLeft: getColorAt(66),\n // (11) x=68: listview header frame bottom and right colour\n listHeaderFrameBottomAndRight: getColorAt(68),\n // (12) x=70: listview header frame colour, when pressed\n listHeaderFramePressed: getColorAt(70),\n // (13) x=72: listview header dead area colour\n listHeaderDeadArea: getColorAt(72),\n // (14) x=74: scrollbar colour #1\n scrollbarOne: getColorAt(74),\n // (15) x=76: scrollbar colour #2\n scrollbarTwo: getColorAt(76),\n // (16) x=78: pressed scrollbar colour #1\n pressedScrollbarOne: getColorAt(78),\n // (17) x=80: pressed scrollbar colour #2\n pressedScrollbarTwo: getColorAt(80),\n // (18) x=82: scrollbar dead area colour\n scrollbarDeadArea: getColorAt(82),\n // (19) x=84 List view text colour highlighted\n listTextHighlighted: getColorAt(84),\n // (20) x=86 List view background colour highlighted\n listTextHighlightedBackground: getColorAt(86),\n // (21) x=88 List view text colour selected\n listTextSelected: getColorAt(88),\n // (22) x=90 List view background colour selected\n listTextSelectedBackground: getColorAt(90),\n };\n}\n","import SKIN_SPRITES from \"./skinSprites\";\nimport regionParser from \"./regionParser\";\nimport { LETTERS, DEFAULT_SKIN } from \"./constants\";\nimport { parseViscolors } from \"./utils\";\nimport * as SkinParserUtils from \"./skinParserUtils\";\n\nconst shallowMerge = (objs) =>\n objs.reduce((prev, img) => Object.assign(prev, img), {});\n\nconst CURSORS = [\n \"CLOSE\",\n \"EQCLOSE\",\n \"EQNORMAL\",\n \"EQSLID\",\n \"EQTITLE\",\n \"MAINMENU\",\n \"MMENU\",\n \"MIN\",\n \"NORMAL\",\n \"PCLOSE\",\n \"PNORMAL\",\n \"POSBAR\",\n \"PSIZE\",\n \"PTBAR\",\n \"PVSCROLL\",\n \"PWINBUT\",\n \"PWSNORM\",\n \"PWSSIZE\",\n \"SONGNAME\",\n \"TITLEBAR\",\n \"VOLBAL\",\n \"WINBUT\",\n \"WSNORMAL\",\n \"WSPOSBAR\",\n /*\n * > There are usually 4 more cursors in the skins: volbar.cur, wsclose.cur,\n * > wswinbut.cur, wsmin.cur, but they are never used, at least in the last\n * > versions of winamp, so there's no need of including them. The cursors\n * > shown when the mouse is over the app-buttons are the same in normal and\n * > winshade mode, except for the main menu button. You can make animated\n * > cursors, but you have to name them with the extension .cur (animated\n * > cursors are usually .ani files).\n *\n * -- Skinners Atlas\n *\n * \"VOLBAR\",\n * \"WSCLOSE\",\n * \"WSWINBUT\",\n * \"WSMIN\",\n *\n */\n];\n\nasync function genVizColors(zip) {\n const viscolor = await SkinParserUtils.getFileFromZip(\n zip,\n \"VISCOLOR\",\n \"txt\",\n \"text\"\n );\n return viscolor ? parseViscolors(viscolor.contents) : DEFAULT_SKIN.colors;\n}\n\nasync function genImages(zip) {\n const imageObjs = await Promise.all(\n Object.keys(SKIN_SPRITES).map((fileName) =>\n SkinParserUtils.getSpriteUrisFromFilename(zip, fileName)\n )\n );\n // Merge all the objects into a single object. Tests assert that sprite keys are unique.\n return shallowMerge(imageObjs);\n}\nasync function genCursors(zip) {\n const cursorObjs = await Promise.all(\n CURSORS.map(async (cursorName) => ({\n [cursorName]: await SkinParserUtils.getCursorFromFilename(\n zip,\n cursorName\n ),\n }))\n );\n return shallowMerge(cursorObjs);\n}\n\nasync function genRegion(zip) {\n const region = await SkinParserUtils.getFileFromZip(\n zip,\n \"REGION\",\n \"txt\",\n \"text\"\n );\n return region ? regionParser(region.contents) : {};\n}\n\nasync function genGenTextSprites(zip) {\n const img = await SkinParserUtils.getImgFromFilename(zip, \"GEN\");\n if (img == null) {\n return null;\n }\n\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n canvas.width = img.width;\n canvas.height = img.height;\n context.drawImage(img, 0, 0);\n\n const getLetters = (y, prefix) => {\n const getColorAt = (x) => context.getImageData(x, y, 1, 1).data.join(\",\");\n\n let x = 1;\n const backgroundColor = getColorAt(0);\n\n const height = 7;\n return LETTERS.map((letter) => {\n let nextBackground = x;\n while (\n getColorAt(nextBackground) !== backgroundColor &&\n nextBackground < canvas.width\n ) {\n nextBackground++;\n }\n const width = nextBackground - x;\n const name = `${prefix}_${letter}`;\n const sprite = { x, y, height, width, name };\n x = nextBackground + 1;\n return sprite;\n });\n };\n\n const letterWidths = {};\n const sprites = [\n ...getLetters(88, \"GEN_TEXT_SELECTED\"),\n ...getLetters(96, \"GEN_TEXT\"),\n ];\n sprites.forEach((sprite) => {\n letterWidths[sprite.name] = sprite.width;\n });\n return [letterWidths, SkinParserUtils.getSpriteUrisFromImg(img, sprites)];\n}\n\n// A promise that, given an array buffer returns a skin style object\nasync function skinParser(zipFileBuffer, JSZip) {\n const zip = await JSZip.loadAsync(zipFileBuffer);\n\n const [\n colors,\n playlistStyle,\n images,\n cursors,\n region,\n genTextSprites,\n genExColors,\n ] = await Promise.all([\n genVizColors(zip),\n SkinParserUtils.getPlaylistStyle(zip),\n genImages(zip),\n genCursors(zip),\n genRegion(zip),\n genGenTextSprites(zip),\n SkinParserUtils.getGenExColors(zip),\n ]);\n\n const [genLetterWidths, genTextImages] = genTextSprites || [null, {}];\n\n return {\n colors,\n playlistStyle,\n images: { ...images, ...genTextImages },\n genLetterWidths,\n cursors,\n region,\n genExColors,\n };\n}\n\nexport default skinParser;\n","import invariant from \"invariant\";\nimport TinyQueue from \"tinyqueue\";\n\n// Push promises onto a queue with a priority.\n// Run a given number of jobs in parallel\n// Useful for prioritizing network requests\nexport default class LoadQueue {\n constructor({ threads }) {\n // TODO: Consider not running items with zero priority\n // Priority is a function so that items can change their priority between\n // when their priority is evaluated.\n // For example, we might add a track to the playlist and then scroll to/away\n // from it before it gets processed.\n this._queue = new TinyQueue([], (a, b) => a.priority() - b.priority());\n this._availableThreads = threads;\n }\n\n push(task, priority) {\n const t = { task, priority };\n this._queue.push(t);\n // Wait until the next event loop to pick a task to run. This way, we can\n // enqueue multiple items in an event loop, and be sure they will be run in\n // priority order.\n setTimeout(() => {\n this._run();\n }, 0);\n return () => {\n // TODO: Could return a boolean representing if the task has already been\n // kicked off.\n this._queue = this._queue.filter((t1) => t1 !== t);\n };\n }\n\n _run() {\n while (this._availableThreads > 0) {\n if (this._queue.length === 0) {\n return;\n }\n this._availableThreads--;\n const t = this._queue.pop();\n const promise = t.task();\n invariant(\n typeof promise.then === \"function\",\n `LoadQueue only supports loading Promises. Got ${promise}`\n );\n promise.then(() => {\n this._availableThreads++;\n this._run();\n });\n }\n }\n}\n","import { TRACK_HEIGHT } from \"../constants\";\nimport * as Selectors from \"../selectors\";\n\nimport { clamp, sort, findLastIndex } from \"../utils\";\nimport {\n STOP,\n REMOVE_TRACKS,\n REMOVE_ALL_TRACKS,\n REVERSE_LIST,\n RANDOMIZE_LIST,\n SET_TRACK_ORDER,\n SET_PLAYLIST_SCROLL_POSITION,\n DRAG_SELECTED,\n SELECT_ALL,\n SELECT_ZERO,\n INVERT_SELECTION,\n} from \"../actionTypes\";\nimport { Thunk, Action } from \"../types\";\n\nexport function cropPlaylist(): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n if (Selectors.getSelectedTrackObjects(state).length === 0) {\n return;\n }\n const selectedTrackIds = Selectors.getSelectedTrackIds(state);\n const {\n playlist: { trackOrder },\n } = state;\n dispatch({\n type: REMOVE_TRACKS,\n // @ts-ignore The keys are numbers, but TypeScript does not trust us.\n // https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\n ids: trackOrder.filter((id) => !selectedTrackIds.has(id)),\n });\n };\n}\n\nexport function removeSelectedTracks(): Thunk {\n return (dispatch, getState) => {\n dispatch({\n type: REMOVE_TRACKS,\n // @ts-ignore The keys are numbers, but TypeScript does not trust us.\n // https://github.com/Microsoft/TypeScript/pull/12253#issuecomment-263132208\n ids: Array.from(Selectors.getSelectedTrackIds(getState())),\n });\n };\n}\n\nexport function removeAllTracks(): Thunk {\n return (dispatch) => {\n // It's a bit funky that we need to do both of these.\n dispatch({ type: STOP });\n dispatch({ type: REMOVE_ALL_TRACKS });\n };\n}\n\nexport function reverseList(): Action {\n return { type: REVERSE_LIST };\n}\n\nexport function randomizeList(): Action {\n return { type: RANDOMIZE_LIST };\n}\n\nexport function sortListByTitle(): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const tracks = Selectors.getTracks(state);\n const trackOrder = sort(Selectors.getTrackOrder(state), (i) =>\n `${tracks[i].title}`.toLowerCase()\n );\n return dispatch({ type: SET_TRACK_ORDER, trackOrder });\n };\n}\n\nexport function setPlaylistScrollPosition(position: number): Action {\n return { type: SET_PLAYLIST_SCROLL_POSITION, position };\n}\n\nexport function scrollNTracks(n: number): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const overflow = Selectors.getOverflowTrackCount(state);\n const currentOffset = Selectors.getScrollOffset(state);\n const position = overflow ? clamp((currentOffset + n) / overflow, 0, 1) : 0;\n return dispatch({\n type: SET_PLAYLIST_SCROLL_POSITION,\n position: position * 100,\n });\n };\n}\n\nexport function scrollPlaylistByDelta(\n e: React.WheelEvent<HTMLDivElement>\n): Thunk {\n e.preventDefault();\n return (dispatch, getState) => {\n const state = getState();\n if (Selectors.getOverflowTrackCount(state)) {\n e.stopPropagation();\n }\n const totalPixelHeight = state.playlist.trackOrder.length * TRACK_HEIGHT;\n const percentDelta = (e.deltaY / totalPixelHeight) * 100;\n dispatch({\n type: SET_PLAYLIST_SCROLL_POSITION,\n position: clamp(\n state.display.playlistScrollPosition + percentDelta,\n 0,\n 100\n ),\n });\n };\n}\n\nexport function scrollUpFourTracks(): Thunk {\n return scrollNTracks(-4);\n}\n\nexport function scrollDownFourTracks(): Thunk {\n return scrollNTracks(4);\n}\n\nexport function dragSelected(offset: number): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const tracks = Selectors.getTracks(state);\n const trackOrder = Selectors.getTrackOrder(state);\n const selectedIds = Selectors.getSelectedTrackIds(state);\n const firstSelected = trackOrder.findIndex(\n (trackId) => tracks[trackId] && selectedIds.has(trackId)\n );\n if (firstSelected === -1) {\n return;\n }\n const lastSelected = findLastIndex(\n trackOrder,\n (trackId) => tracks[trackId] && selectedIds.has(trackId)\n );\n if (lastSelected === -1) {\n throw new Error(\"We found a first selected, but not a last selected.\");\n }\n // Ensure we don't try to drag off either end.\n const min = -firstSelected;\n const max = trackOrder.length - 1 - lastSelected;\n const normalizedOffset = clamp(offset, min, max);\n if (normalizedOffset !== 0) {\n dispatch({ type: DRAG_SELECTED, offset: normalizedOffset });\n }\n };\n}\n\nexport function invertSelection(): Action {\n return { type: INVERT_SELECTION };\n}\nexport function selectZero(): Action {\n return { type: SELECT_ZERO };\n}\n\nexport function selectAll(): Action {\n return { type: SELECT_ALL };\n}\n","import { parser, creator } from \"winamp-eqf\";\nimport { BANDS, LOAD_STYLE } from \"../constants\";\n\nimport * as Utils from \"../utils\";\n\nimport {\n promptForFileReferences,\n genArrayBufferFromFileReference,\n genMediaDuration,\n genMediaTags,\n} from \"../fileUtils\";\nimport skinParser from \"../skinParser\";\nimport {\n getTracks,\n getUserTracks,\n getTrackIsVisibleFunction,\n getEqfData,\n getPlaylistURL,\n} from \"../selectors\";\n\nimport {\n ADD_TRACK_FROM_URL,\n PLAY_TRACK,\n BUFFER_TRACK,\n SET_MEDIA_TAGS,\n SET_MEDIA_DURATION,\n MEDIA_TAG_REQUEST_INITIALIZED,\n MEDIA_TAG_REQUEST_FAILED,\n SET_SKIN_DATA,\n LOADED,\n LOADING,\n} from \"../actionTypes\";\nimport LoadQueue from \"../loadQueue\";\n\nimport { removeAllTracks } from \"./playlist\";\nimport { setPreamp, setEqBand } from \"./equalizer\";\nimport {\n LoadStyle,\n Thunk,\n Track,\n EqfPreset,\n SkinData,\n WindowId,\n} from \"../types\";\n\n// Lower is better\nconst DURATION_VISIBLE_PRIORITY = 5;\nconst META_DATA_VISIBLE_PRIORITY = 10;\nconst DURATION_PRIORITY = 15;\nconst META_DATA_PRIORITY = 20;\n\nconst loadQueue = new LoadQueue({ threads: 4 });\n\nexport function addTracksFromReferences(\n fileReferences: FileList,\n loadStyle: LoadStyle,\n atIndex: number | undefined\n): Thunk {\n const tracks: Track[] = Array.from(fileReferences).map((file) => ({\n blob: file,\n defaultName: file.name,\n }));\n return loadMediaFiles(tracks, loadStyle, atIndex);\n}\n\nconst SKIN_FILENAME_MATCHER = new RegExp(\"(wsz|zip)$\", \"i\");\nconst EQF_FILENAME_MATCHER = new RegExp(\"eqf$\", \"i\");\nexport function loadFilesFromReferences(\n fileReferences: FileList,\n loadStyle: LoadStyle = LOAD_STYLE.PLAY,\n atIndex: number | undefined = undefined\n): Thunk {\n return (dispatch) => {\n if (fileReferences.length < 1) {\n return;\n } else if (fileReferences.length === 1) {\n const fileReference = fileReferences[0];\n if (SKIN_FILENAME_MATCHER.test(fileReference.name)) {\n dispatch(setSkinFromBlob(fileReference));\n return;\n } else if (EQF_FILENAME_MATCHER.test(fileReference.name)) {\n dispatch(setEqFromFileReference(fileReference));\n return;\n }\n }\n dispatch(addTracksFromReferences(fileReferences, loadStyle, atIndex));\n };\n}\n\nexport function setSkinFromBlob(blob: Blob | Promise<Blob>): Thunk {\n return async (dispatch, getState, { requireJSZip }) => {\n if (!requireJSZip) {\n alert(\"Webamp has not been configured to support custom skins.\");\n return;\n }\n dispatch({ type: LOADING });\n let JSZip;\n try {\n JSZip = await requireJSZip();\n } catch (e) {\n console.error(e);\n dispatch({ type: LOADED });\n alert(\"Failed to load the skin parser.\");\n return;\n }\n try {\n const skinData = await skinParser(blob, JSZip);\n dispatch({\n type: SET_SKIN_DATA,\n data: {\n skinImages: skinData.images,\n skinColors: skinData.colors,\n skinPlaylistStyle: skinData.playlistStyle,\n skinCursors: skinData.cursors,\n skinRegion: skinData.region,\n skinGenLetterWidths: skinData.genLetterWidths,\n skinGenExColors: skinData.genExColors,\n } as SkinData,\n });\n } catch (e) {\n console.error(e);\n dispatch({ type: LOADED });\n alert(`Failed to parse skin`);\n }\n };\n}\n\nexport function setSkinFromUrl(url: string): Thunk {\n return async (dispatch) => {\n dispatch({ type: LOADING });\n try {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n dispatch(setSkinFromBlob(response.blob()));\n } catch (e) {\n console.error(e);\n dispatch({ type: LOADED });\n alert(`Failed to download skin from ${url}`);\n }\n };\n}\n\n// This function is private, since Winamp consumers can provide means for\n// opening files via other methods. Only use the file type specific\n// versions below, since they can defer to the user-defined behavior.\nfunction _openFileDialog(\n accept: string | null,\n expectedType: \"SKIN\" | \"MEDIA\" | \"EQ\"\n): Thunk {\n return async (dispatch) => {\n const fileReferences = await promptForFileReferences({ accept });\n dispatch({\n type: \"OPENED_FILES\",\n expectedType,\n count: fileReferences.length,\n firstFileName: fileReferences[0]?.name,\n });\n dispatch(loadFilesFromReferences(fileReferences));\n };\n}\n\nexport function openEqfFileDialog(): Thunk {\n return _openFileDialog(\".eqf\", \"EQ\");\n}\n\nexport function openMediaFileDialog(): Thunk {\n return _openFileDialog(null, \"MEDIA\");\n}\n\nexport function openSkinFileDialog() {\n return _openFileDialog(\".zip, .wsz\", \"SKIN\");\n}\n\nexport function fetchMediaDuration(url: string, id: number): Thunk {\n return (dispatch, getState) => {\n loadQueue.push(\n async () => {\n try {\n const duration = await genMediaDuration(url);\n dispatch({ type: SET_MEDIA_DURATION, duration, id });\n } catch (e) {\n // TODO: Should we update the state to indicate that we don't know the length?\n }\n },\n\n () => {\n const trackIsVisible = getTrackIsVisibleFunction(getState());\n return trackIsVisible(id)\n ? DURATION_VISIBLE_PRIORITY\n : DURATION_PRIORITY;\n }\n );\n };\n}\n\nexport function loadMedia(\n e: React.DragEvent<HTMLDivElement>,\n loadStyle: LoadStyle = LOAD_STYLE.NONE,\n atIndex = 0\n): Thunk {\n const { files } = e.dataTransfer;\n return async (dispatch, getState, { handleTrackDropEvent }) => {\n if (handleTrackDropEvent) {\n const tracks = await handleTrackDropEvent(e);\n\n if (tracks != null) {\n dispatch(loadMediaFiles(tracks, loadStyle, atIndex));\n return;\n }\n }\n dispatch(loadFilesFromReferences(files, loadStyle, atIndex));\n };\n}\n\nexport function loadMediaFiles(\n tracks: Track[],\n loadStyle: LoadStyle = LOAD_STYLE.NONE,\n atIndex = 0\n): Thunk {\n return (dispatch) => {\n if (loadStyle === LOAD_STYLE.PLAY) {\n // I'm the worst. It just so happens that in every case that we autoPlay,\n // we should also clear all tracks.\n dispatch(removeAllTracks());\n }\n tracks.forEach((track, i) => {\n const priority = i === 0 ? loadStyle : LOAD_STYLE.NONE;\n dispatch(loadMediaFile(track, priority, atIndex + i));\n });\n };\n}\n\nexport function loadMediaFile(\n track: Track,\n priority: LoadStyle = LOAD_STYLE.NONE,\n atIndex = 0\n): Thunk {\n return (dispatch) => {\n const id = Utils.uniqueId();\n const { defaultName, metaData, duration } = track;\n let canonicalUrl: string;\n if (\"url\" in track) {\n canonicalUrl = track.url.toString();\n } else if (\"blob\" in track) {\n canonicalUrl = URL.createObjectURL(track.blob);\n } else {\n throw new Error(\"Expected track to have either a blob or a url\");\n }\n\n dispatch({\n type: ADD_TRACK_FROM_URL,\n url: canonicalUrl,\n duration: track.duration,\n defaultName,\n id,\n atIndex,\n });\n switch (priority) {\n case LOAD_STYLE.BUFFER:\n dispatch({ type: BUFFER_TRACK, id });\n break;\n case LOAD_STYLE.PLAY:\n dispatch({ type: PLAY_TRACK, id });\n break;\n case LOAD_STYLE.NONE:\n default:\n // If we're not going to load this right away,\n // we should set duration on our own\n if (duration != null) {\n dispatch({ type: SET_MEDIA_DURATION, duration, id });\n } else {\n dispatch(fetchMediaDuration(canonicalUrl, id));\n }\n }\n\n if (metaData != null) {\n const { artist, title, album } = metaData;\n dispatch({\n type: SET_MEDIA_TAGS,\n artist,\n title,\n album,\n // For now, we lie about these next three things.\n // TODO: Ideally we would leave these as null and force a media data\n // fetch when the user starts playing.\n sampleRate: 44000,\n bitrate: 192000,\n numberOfChannels: 2,\n id,\n });\n } else if (\"blob\" in track) {\n // Blobs can be loaded quickly\n dispatch(fetchMediaTags(track.blob, id));\n } else {\n dispatch(queueFetchingMediaTags(id));\n }\n };\n}\n\nfunction queueFetchingMediaTags(id: number): Thunk {\n return (dispatch, getState) => {\n const track = getTracks(getState())[id];\n loadQueue.push(\n () => dispatch(fetchMediaTags(track.url, id)),\n () => {\n const trackIsVisible = getTrackIsVisibleFunction(getState());\n return trackIsVisible(id)\n ? META_DATA_VISIBLE_PRIORITY\n : META_DATA_PRIORITY;\n }\n );\n };\n}\n\nexport function fetchMediaTags(file: string | Blob, id: number): Thunk {\n return async (dispatch, getState, { requireMusicMetadata }) => {\n dispatch({ type: MEDIA_TAG_REQUEST_INITIALIZED, id });\n\n try {\n const metadata = await genMediaTags(file, await requireMusicMetadata());\n // There's more data here, but we don't have a use for it yet:\n const { artist, title, album, picture } = metadata.common;\n const { numberOfChannels, bitrate, sampleRate } = metadata.format;\n let albumArtUrl = null;\n if (picture && picture.length >= 1) {\n const byteArray = new Uint8Array(picture[0].data);\n const blob = new Blob([byteArray], { type: picture[0].format });\n albumArtUrl = URL.createObjectURL(blob);\n }\n dispatch({\n type: SET_MEDIA_TAGS,\n artist: artist ? artist : \"\",\n title: title ? title : \"\",\n album,\n albumArtUrl,\n numberOfChannels,\n bitrate,\n sampleRate,\n id,\n });\n } catch (e) {\n dispatch({ type: MEDIA_TAG_REQUEST_FAILED, id });\n }\n };\n}\n\nexport function setEqFromFileReference(fileReference: File): Thunk {\n return async (dispatch) => {\n const arrayBuffer = await genArrayBufferFromFileReference(fileReference);\n const eqf = parser(arrayBuffer);\n const preset: EqfPreset = eqf.presets[0];\n dispatch(setEqFromObject(preset));\n };\n}\n\nexport function setEqFromObject(preset: EqfPreset): Thunk {\n return (dispatch) => {\n dispatch(setPreamp(Utils.normalizeEqBand(preset.preamp)));\n BANDS.forEach((band) => {\n // @ts-ignore band and EqfPreset align\n dispatch(setEqBand(band, Utils.normalizeEqBand(preset[`hz${band}`])));\n });\n };\n}\n\nexport function downloadPreset(): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const data = getEqfData(state);\n const arrayBuffer = creator(data);\n const base64 = Utils.base64FromArrayBuffer(arrayBuffer);\n const dataURI = `data:application/zip;base64,${base64}`;\n Utils.downloadURI(dataURI, \"entry.eqf\");\n };\n}\n\nexport function downloadHtmlPlaylist(): Thunk {\n return (dispatch, getState) => {\n const uri = getPlaylistURL(getState());\n Utils.downloadURI(uri, \"Winamp Playlist.html\");\n };\n}\n\nlet el: HTMLInputElement | null = document.createElement(\"input\");\nel.type = \"file\";\n// @ts-ingore\nconst DIR_SUPPORT =\n // @ts-ignore\n typeof el.webkitdirectory !== \"undefined\" ||\n // @ts-ignore\n typeof el.mozdirectory !== \"undefined\" ||\n // @ts-ignore\n typeof el.directory !== \"undefined\";\n// Release our reference\nel = null;\n\nexport function addFilesAtIndex(nextIndex: number): Thunk {\n return async (dispatch) => {\n const fileReferences = await promptForFileReferences();\n dispatch(\n addTracksFromReferences(fileReferences, LOAD_STYLE.NONE, nextIndex)\n );\n };\n}\n\nexport function addDirAtIndex(nextIndex: number): Thunk {\n return async (dispatch) => {\n if (!DIR_SUPPORT) {\n alert(\"Not supported in your browser\");\n return;\n }\n const fileReferences = await promptForFileReferences({ directory: true });\n dispatch(\n addTracksFromReferences(fileReferences, LOAD_STYLE.NONE, nextIndex)\n );\n };\n}\n\nexport function addFilesFromUrl(atIndex = 0): Thunk {\n return async (dispatch, getState, { handleAddUrlEvent }) => {\n if (handleAddUrlEvent) {\n const tracks = await handleAddUrlEvent();\n\n if (tracks != null) {\n dispatch(loadMediaFiles(tracks, LOAD_STYLE.NONE, atIndex));\n return;\n }\n } else {\n alert(\"Not supported in Webamp\");\n }\n };\n}\n\nexport function addFilesFromList(): Thunk {\n return async (dispatch, getState, { handleLoadListEvent }) => {\n if (handleLoadListEvent) {\n const tracks = await handleLoadListEvent();\n\n if (tracks != null) {\n dispatch(removeAllTracks());\n\n dispatch(loadMediaFiles(tracks, LOAD_STYLE.NONE, 0));\n return;\n }\n } else {\n alert(\"Not supported in Webamp\");\n }\n };\n}\n\nexport function saveFilesToList(): Thunk {\n return (dispatch, getState, { handleSaveListEvent }) => {\n if (handleSaveListEvent) {\n handleSaveListEvent(getUserTracks(getState()));\n } else {\n alert(\"Not supported in Webamp\");\n }\n };\n}\n\nexport function droppedFiles(e: React.DragEvent, windowId: WindowId): Thunk {\n return (dispatch) =>\n dispatch({\n type: \"DROPPED_FILES\",\n count: e.dataTransfer.files.length,\n firstFileName: e.dataTransfer.files[0]?.name,\n windowId,\n });\n}\n","import {\n GOT_BUTTERCHURN_PRESETS,\n GOT_BUTTERCHURN,\n SELECT_PRESET_AT_INDEX,\n RESOLVE_PRESET_AT_INDEX,\n PRESET_REQUESTED,\n TOGGLE_RANDOMIZE_PRESETS,\n TOGGLE_PRESET_CYCLING,\n SCHEDULE_MILKDROP_MESSAGE,\n} from \"../actionTypes\";\nimport * as Selectors from \"../selectors\";\nimport {\n TransitionType,\n Preset,\n ButterchurnOptions,\n StatePreset,\n Thunk,\n Action,\n} from \"../types\";\nimport * as FileUtils from \"../fileUtils\";\n\nfunction normalizePresetTypes(preset: Preset): StatePreset {\n const { name } = preset;\n if (\"butterchurnPresetObject\" in preset) {\n return {\n type: \"RESOLVED\",\n name,\n preset: preset.butterchurnPresetObject,\n };\n } else if (\"getButterchrunPresetObject\" in preset) {\n return {\n type: \"UNRESOLVED\",\n name,\n getPreset: preset.getButterchrunPresetObject,\n };\n } else if (\"butterchurnPresetUrl\" in preset) {\n return {\n type: \"UNRESOLVED\",\n name,\n getPreset: async () => {\n const resp = await fetch(preset.butterchurnPresetUrl);\n return resp.json();\n },\n };\n }\n throw new Error(\"Invalid preset object\");\n}\n\nexport function initializePresets(presetOptions: ButterchurnOptions): Thunk {\n return async (dispatch) => {\n const { getPresets, importButterchurn } = presetOptions;\n importButterchurn().then((butterchurn) => {\n dispatch({ type: GOT_BUTTERCHURN, butterchurn: butterchurn.default });\n });\n\n const presets = await getPresets();\n const normalizePresets = presets.map(normalizePresetTypes);\n dispatch(loadPresets(normalizePresets));\n };\n}\n\nexport function loadPresets(presets: StatePreset[]): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const presetsLength = state.milkdrop.presets.length;\n dispatch({ type: GOT_BUTTERCHURN_PRESETS, presets });\n if (presetsLength === 0 && Selectors.getRandomizePresets(state)) {\n dispatch(selectRandomPreset());\n } else {\n dispatch(\n requestPresetAtIndex(presetsLength, TransitionType.IMMEDIATE, true)\n );\n }\n };\n}\n\nexport function appendPresetFileList(fileList: FileList): Thunk {\n return async (dispatch, getState, { convertPreset }) => {\n const presets: StatePreset[] = Array.from(fileList)\n .map((file) => {\n const JSON_EXT = \".json\";\n const MILK_EXT = \".milk\";\n const filename = file.name.toLowerCase();\n if (filename.endsWith(MILK_EXT)) {\n if (convertPreset == null) {\n throw new Error(\"Invalid type\");\n }\n return {\n type: \"UNRESOLVED\",\n name: file.name.slice(0, file.name.length - MILK_EXT.length),\n getPreset: () => convertPreset(file),\n } as StatePreset;\n } else if (filename.endsWith(JSON_EXT)) {\n return {\n type: \"UNRESOLVED\",\n name: file.name.slice(0, file.name.length - JSON_EXT.length),\n getPreset: async () => {\n const str = await FileUtils.genStringFromFileReference(file);\n // TODO: How should we handle the case where json parsing fails?\n return JSON.parse(str);\n },\n } as StatePreset;\n }\n console.error(\"Invalid type preset when loading directory\");\n\n return null as never;\n })\n .filter(Boolean);\n dispatch(loadPresets(presets));\n };\n}\n\nexport function selectNextPreset(\n transitionType: TransitionType = TransitionType.DEFAULT\n): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n if (Selectors.getRandomizePresets(state)) {\n return dispatch(selectRandomPreset(transitionType));\n }\n const currentPresetIndex = Selectors.getCurrentPresetIndex(state);\n if (currentPresetIndex == null) {\n return;\n }\n const nextPresetIndex = currentPresetIndex + 1;\n dispatch(requestPresetAtIndex(nextPresetIndex, transitionType, true));\n };\n}\n\nexport function selectPreviousPreset(\n transitionType: TransitionType = TransitionType.DEFAULT\n): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n const { presetHistory } = state.milkdrop;\n if (presetHistory.length < 1) {\n return;\n }\n // Awkward. We do -2 becuase the the last track is the current track.\n const lastPresetIndex = presetHistory[presetHistory.length - 2];\n\n dispatch(requestPresetAtIndex(lastPresetIndex, transitionType, false));\n };\n}\n\nexport function selectRandomPreset(\n transitionType: TransitionType = TransitionType.DEFAULT\n): Thunk {\n return (dispatch, getState) => {\n const state = getState();\n // TODO: Make this a selector.\n const randomIndex = Math.floor(\n Math.random() * state.milkdrop.presets.length\n );\n dispatch(requestPresetAtIndex(randomIndex, transitionType, true));\n };\n}\n\n// TODO: Technically there's a race here. If you request two presets in a row, the\n// first one may resolve before the second.\nexport function requestPresetAtIndex(\n index: number,\n transitionType: TransitionType,\n addToHistory: boolean\n): Thunk {\n return async (dispatch, getState) => {\n const state = getState();\n const preset = state.milkdrop.presets[index];\n if (preset == null) {\n // Index might be out of range.\n return;\n }\n dispatch({ type: PRESET_REQUESTED, index, addToHistory });\n switch (preset.type) {\n case \"RESOLVED\":\n dispatch({ type: SELECT_PRESET_AT_INDEX, index, transitionType });\n return;\n case \"UNRESOLVED\":\n const json = await preset.getPreset();\n // TODO: Ensure that this works correctly even if requests resolve out of order\n dispatch({ type: RESOLVE_PRESET_AT_INDEX, index, json });\n dispatch({ type: SELECT_PRESET_AT_INDEX, index, transitionType });\n return;\n }\n };\n}\n\nexport function handlePresetDrop(e: React.DragEvent): Thunk {\n return appendPresetFileList(e.dataTransfer.files);\n}\n\nexport function toggleRandomizePresets(): Action {\n return { type: TOGGLE_RANDOMIZE_PRESETS };\n}\n\nexport function togglePresetCycling(): Action {\n return { type: TOGGLE_PRESET_CYCLING };\n}\n\nexport function scheduleMilkdropMessage(message: string): Action {\n return { type: SCHEDULE_MILKDROP_MESSAGE, message };\n}\n","import {\n CLOSE_WINAMP,\n OPEN_WINAMP,\n STOP,\n TOGGLE_VISUALIZER_STYLE,\n CLOSE_REQUESTED,\n MINIMIZE_WINAMP,\n SET_FOCUS,\n UNSET_FOCUS,\n LOAD_SERIALIZED_STATE,\n LOAD_DEFAULT_SKIN,\n SET_MILKDROP_DESKTOP,\n SET_MILKDROP_FULLSCREEN,\n TOGGLE_PRESET_OVERLAY,\n STEP_MARQUEE,\n SET_BAND_FOCUS,\n} from \"../actionTypes\";\nimport { WINDOWS } from \"../constants\";\nimport { Thunk, Action, Slider } from \"../types\";\nimport { SerializedStateV1 } from \"../serializedStates/v1Types\";\nimport * as Selectors from \"../selectors\";\nimport {\n ensureWindowsAreOnScreen,\n showWindow,\n hideWindow,\n setFocusedWindow,\n} from \"./windows\";\n\nexport {\n toggleDoubleSizeMode,\n toggleEqualizerShadeMode,\n togglePlaylistShadeMode,\n closeWindow,\n hideWindow,\n showWindow,\n setWindowSize,\n toggleWindow,\n updateWindowPositions,\n toggleMainWindowShadeMode,\n centerWindowsInContainer,\n centerWindowsInView,\n resetWindowSizes,\n browserWindowSizeChanged,\n ensureWindowsAreOnScreen,\n stackWindows,\n toggleLlamaMode,\n setFocusedWindow,\n} from \"./windows\";\nexport {\n play,\n pause,\n stop,\n nextN,\n next,\n previous,\n seekToTime,\n seekForward,\n seekBackward,\n setVolume,\n playTrack,\n playTrackNow,\n adjustVolume,\n scrollVolume,\n setBalance,\n toggleRepeat,\n toggleShuffle,\n toggleTimeMode,\n} from \"./media\";\nexport {\n setEqBand,\n setEqToMax,\n setEqToMid,\n setEqToMin,\n setPreamp,\n toggleEq,\n toggleEqAuto,\n} from \"./equalizer\";\nexport {\n addTracksFromReferences,\n loadFilesFromReferences,\n setSkinFromUrl,\n openEqfFileDialog,\n openMediaFileDialog,\n openSkinFileDialog,\n fetchMediaDuration,\n loadMedia,\n loadMediaFiles,\n loadMediaFile,\n fetchMediaTags,\n setEqFromFileReference,\n downloadPreset,\n setEqFromObject,\n downloadHtmlPlaylist,\n addDirAtIndex,\n addFilesAtIndex,\n addFilesFromUrl,\n addFilesFromList,\n saveFilesToList,\n droppedFiles,\n} from \"./files\";\nexport {\n cropPlaylist,\n removeSelectedTracks,\n removeAllTracks,\n reverseList,\n randomizeList,\n sortListByTitle,\n setPlaylistScrollPosition,\n scrollNTracks,\n scrollPlaylistByDelta,\n scrollUpFourTracks,\n scrollDownFourTracks,\n dragSelected,\n selectAll,\n selectZero,\n invertSelection,\n} from \"./playlist\";\nexport {\n initializePresets,\n requestPresetAtIndex,\n selectRandomPreset,\n selectNextPreset,\n selectPreviousPreset,\n appendPresetFileList,\n handlePresetDrop,\n loadPresets,\n toggleRandomizePresets,\n togglePresetCycling,\n scheduleMilkdropMessage,\n} from \"./milkdrop\";\n\nexport function close(): Thunk {\n return (dispatch) => {\n // TODO: This could probably be improved by adding a \"PREVENT_CLOSE\" action\n // or something, but this works okay for now.\n let defaultPrevented = false;\n const cancel = () => {\n defaultPrevented = true;\n };\n dispatch({ type: CLOSE_REQUESTED, cancel });\n if (!defaultPrevented) {\n dispatch({ type: STOP });\n dispatch({ type: CLOSE_WINAMP });\n }\n };\n}\n\nexport function open(): Action {\n return { type: OPEN_WINAMP };\n}\n\nexport function toggleVisualizerStyle(): Action {\n return { type: TOGGLE_VISUALIZER_STYLE };\n}\n\nexport function minimize(): Action {\n return { type: MINIMIZE_WINAMP };\n}\n\nexport function setFocus(input: string): Action {\n return { type: SET_FOCUS, input };\n}\n\nexport function unsetFocus(): Action {\n return { type: UNSET_FOCUS };\n}\n\nexport function focusBand(band: Slider): Action {\n return { type: SET_BAND_FOCUS, input: \"eq\", bandFocused: band };\n}\n\nexport function loadSerializedState(\n // In the future this type should be the union of all versioned types.\n serializedState: SerializedStateV1\n): Thunk {\n return (dispatch) => {\n dispatch({ type: LOAD_SERIALIZED_STATE, serializedState });\n dispatch(ensureWindowsAreOnScreen());\n };\n}\n\nexport function loadDefaultSkin(): Action {\n return { type: LOAD_DEFAULT_SKIN };\n}\n\nexport function toggleMilkdropDesktop(): Thunk {\n return (dispatch, getState) => {\n if (Selectors.getMilkdropDesktopEnabled(getState())) {\n dispatch(showWindow(WINDOWS.MILKDROP));\n dispatch({ type: SET_MILKDROP_DESKTOP, enabled: false });\n } else {\n dispatch(hideWindow(WINDOWS.MILKDROP));\n dispatch({ type: SET_MILKDROP_DESKTOP, enabled: true });\n }\n };\n}\n\nexport function setMilkdropFullscreen(enabled: boolean): Action {\n return { type: SET_MILKDROP_FULLSCREEN, enabled };\n}\nexport function toggleMilkdropFullscreen(): Thunk {\n return (dispatch, getState) => {\n dispatch(\n setMilkdropFullscreen(!Selectors.getMilkdropFullscreenEnabled(getState()))\n );\n };\n}\n\nexport function togglePresetOverlay(): Thunk {\n return (dispatch, getState) => {\n if (Selectors.getPresetOverlayOpen(getState())) {\n dispatch(setFocusedWindow(WINDOWS.MILKDROP));\n }\n\n dispatch({ type: TOGGLE_PRESET_OVERLAY });\n };\n}\n\nexport function stepMarquee(): Action {\n return { type: STEP_MARQUEE };\n}\n","import Media from \"./media\";\nimport {\n IS_PLAYING,\n PAUSE,\n PLAY,\n SEEK_TO_PERCENT_COMPLETE,\n SET_BAND_VALUE,\n SET_BALANCE,\n SET_MEDIA,\n SET_VOLUME,\n START_WORKING,\n STOP,\n STOP_WORKING,\n UPDATE_TIME_ELAPSED,\n SET_EQ_OFF,\n SET_EQ_ON,\n PLAY_TRACK,\n BUFFER_TRACK,\n LOAD_SERIALIZED_STATE,\n} from \"./actionTypes\";\nimport { next as nextTrack } from \"./actionCreators\";\nimport * as Selectors from \"./selectors\";\nimport { MiddlewareStore, Action, Dispatch } from \"./types\";\nimport { objectForEach } from \"./utils\";\n\nexport default (media: Media) => (store: MiddlewareStore) => {\n const {\n media: { volume, balance },\n equalizer: { sliders },\n } = store.getState();\n\n // Ensure the default state is the canonical value.\n media.setVolume(volume);\n media.setBalance(balance);\n media.setPreamp(sliders.preamp);\n // TODO: Ensure other values like bands are in sync\n\n media.on(\"timeupdate\", () => {\n store.dispatch({\n type: UPDATE_TIME_ELAPSED,\n elapsed: media.timeElapsed(),\n });\n });\n\n media.on(\"ended\", () => {\n store.dispatch(nextTrack());\n });\n\n media.on(\"playing\", () => {\n store.dispatch({ type: IS_PLAYING });\n });\n\n media.on(\"waiting\", () => {\n store.dispatch({ type: START_WORKING });\n });\n\n media.on(\"stopWaiting\", () => {\n store.dispatch({ type: STOP_WORKING });\n });\n\n media.on(\"fileLoaded\", () => {\n const id = Selectors.getCurrentTrackId(store.getState());\n if (id == null) {\n // Attempted to set the metadata for a track that was already removed.\n // Really, the media should have been stopped when the track was removed.\n return;\n }\n store.dispatch({\n id,\n type: SET_MEDIA,\n kbps: \"128\",\n khz: \"44\",\n channels: 2,\n length: media.duration(),\n });\n });\n\n return (next: Dispatch) => (action: Action) => {\n const returnValue = next(action);\n const state = store.getState();\n switch (action.type) {\n case PLAY:\n media.play();\n break;\n case PAUSE:\n media.pause();\n break;\n case STOP:\n media.stop();\n break;\n case SET_VOLUME:\n media.setVolume(Selectors.getVolume(state));\n break;\n case SET_BALANCE:\n media.setBalance(Selectors.getBalance(state));\n break;\n case SEEK_TO_PERCENT_COMPLETE:\n media.seekToPercentComplete(action.percent);\n break;\n case PLAY_TRACK: {\n const url = Selectors.getTrackUrl(store.getState())(action.id);\n if (url != null) {\n media.loadFromUrl(url, true);\n }\n break;\n }\n case BUFFER_TRACK: {\n const url = Selectors.getTrackUrl(store.getState())(action.id);\n if (url != null) {\n media.loadFromUrl(url, false);\n }\n break;\n }\n case SET_BAND_VALUE:\n if (action.band === \"preamp\") {\n media.setPreamp(action.value);\n } else {\n media.setEqBand(action.band, action.value);\n }\n break;\n case SET_EQ_OFF:\n media.disableEq();\n break;\n case SET_EQ_ON:\n media.enableEq();\n break;\n case LOAD_SERIALIZED_STATE: {\n // Set ALL THE THINGS!\n if (Selectors.getEqualizerEnabled(state)) {\n media.enableEq();\n } else {\n media.disableEq();\n }\n media.setVolume(Selectors.getVolume(state));\n media.setBalance(Selectors.getBalance(state));\n objectForEach(state.equalizer.sliders, (value, slider) => {\n if (slider === \"preamp\") {\n media.setPreamp(value);\n } else {\n // @ts-ignore I don't know how to teach TypeScript about objects\n // that use Slider as keys\n media.setEqBand(slider, value);\n }\n });\n break;\n }\n }\n return returnValue;\n };\n};\n","import { createStore, applyMiddleware, DeepPartial } from \"redux\";\nimport thunk from \"redux-thunk\";\nimport { composeWithDevTools } from \"redux-devtools-extension\";\nimport reducer from \"./reducers\";\nimport mediaMiddleware from \"./mediaMiddleware\";\nimport { merge } from \"./utils\";\nimport { UPDATE_TIME_ELAPSED, STEP_MARQUEE } from \"./actionTypes\";\nimport Media from \"./media\";\nimport Emitter from \"./emitter\";\nimport { Extras, Dispatch, Action, AppState, Middleware } from \"./types\";\n\n// TODO: Move to demo\nconst compose = composeWithDevTools({\n actionsBlacklist: [UPDATE_TIME_ELAPSED, STEP_MARQUEE],\n});\n\nexport default function (\n media: Media,\n actionEmitter: Emitter,\n customMiddlewares: Middleware[] = [],\n stateOverrides: DeepPartial<AppState> | undefined,\n extras: Extras\n) {\n let initialState;\n if (stateOverrides) {\n initialState = merge(\n reducer(undefined, { type: \"@@init\" }),\n stateOverrides\n );\n }\n\n const emitterMiddleware = () => (next: Dispatch) => (action: Action) => {\n actionEmitter.trigger(action.type, action);\n return next(action);\n };\n\n const enhancer = compose(\n applyMiddleware(\n ...[\n thunk.withExtraArgument(extras),\n mediaMiddleware(media),\n emitterMiddleware,\n ...customMiddlewares,\n ].filter(Boolean)\n )\n );\n\n // The Redux types are a bit confused, and don't realize that passing an\n // undefined initialState is allowed.\n const store = initialState\n ? createStore(reducer, initialState, enhancer)\n : createStore(reducer, enhancer);\n return store;\n}\n","// Adapted from https://github.com/snakesilk/react-fullscreen\nimport { ReactNode, useRef, useLayoutEffect, useEffect } from \"react\";\nimport fscreen from \"fscreen\";\n\ninterface Props {\n enabled: boolean;\n children: ReactNode;\n onChange(fullscreen: boolean): void;\n}\n\nfunction leaveFullScreen() {\n if (fscreen.fullscreenEnabled) {\n fscreen.exitFullscreen();\n }\n}\n\nfunction enterFullScreen(node: HTMLDivElement) {\n if (fscreen.fullscreenEnabled) {\n fscreen.requestFullscreen(node);\n }\n}\n\nfunction FullScreen(props: Props) {\n const { onChange, enabled } = props;\n const ref = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n function detectFullScreen() {\n if (onChange) {\n onChange(fscreen.fullscreenElement === ref.current);\n }\n }\n fscreen.addEventListener(\"fullscreenchange\", detectFullScreen);\n return () => {\n fscreen.removeEventListener(\"fullscreenchange\", detectFullScreen);\n };\n }, [onChange]);\n\n // This must run in response to a click event, so we'll use useLayoutEffect just in case.\n useLayoutEffect(() => {\n const isEnabled = fscreen.fullscreenElement === ref.current;\n if (isEnabled && !enabled) {\n leaveFullScreen();\n } else if (!isEnabled && enabled && ref.current != null) {\n enterFullScreen(ref.current);\n }\n }, [enabled]);\n\n return (\n <div\n ref={ref}\n style={props.enabled ? { height: \"100%\", width: \"100%\" } : undefined}\n >\n {props.children}\n </div>\n );\n}\n\nexport default FullScreen;\n","import {\n useState,\n useEffect,\n useCallback,\n useLayoutEffect,\n useRef,\n} from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport * as Utils from \"./utils\";\nimport { Action, Thunk, AppState } from \"./types\";\n\ninterface Size {\n width: number;\n height: number;\n}\n\nexport function useUnmountedRef(): { current: boolean } {\n const unmountedRef = useRef(false);\n useEffect(() => {\n return () => {\n unmountedRef.current = true;\n };\n }, []);\n return unmountedRef;\n}\n\nexport function usePromiseValueOrNull<T>(propValue: Promise<T>): T | null {\n const [value, setValue] = useState<T | null>(null);\n useEffect(() => {\n let disposed = false;\n propValue.then((resolvedValue) => {\n if (disposed) {\n return;\n }\n setValue(resolvedValue);\n });\n\n return () => {\n disposed = true;\n };\n }, [propValue]);\n\n return value;\n}\n\nexport function useScreenSize() {\n const [size] = useState<Size>(Utils.getScreenSize());\n // TODO: We could subscribe to screen size changes.\n return size;\n}\n\nexport function useWindowSize() {\n const [size, setSize] = useState<Size>(Utils.getWindowSize());\n const handler = useCallback(\n Utils.throttle(() => {\n setSize(Utils.getWindowSize());\n }, 100) as () => void,\n []\n );\n useEffect(() => {\n window.addEventListener(\"resize\", handler);\n return () => {\n window.removeEventListener(\"resize\", handler);\n };\n }, [handler]);\n return size;\n}\n\nconst cursorPositionRef = { current: { pageX: 0, pageY: 0 } };\nwindow.document.addEventListener(\"mousemove\", ({ pageX, pageY }) => {\n cursorPositionRef.current = { pageX, pageY };\n});\n\n// We use a single global event listener because there is no way to get the\n// mouse position aside from an event. Ideally we could create/clean up the\n// event listener in the hook, but in the case where we want to check the cursor\n// position on mount, that we wouldn't have had time to capture an event.\nfunction useCursorPositionRef() {\n return cursorPositionRef;\n}\n\n// CSS hover state is not respected if the cursor is already over the node when\n// it is added to the DOM. This hook allows your component to know its hover\n// state on mount without waiting for the mouse to move.\n// https://stackoverflow.com/a/13259049/1263117\nexport function useIsHovered() {\n const cursorRef = useCursorPositionRef();\n const [hover, setHover] = useState(false);\n const [node, setNode] = useState<HTMLElement | null>(null);\n\n useLayoutEffect(() => {\n if (node == null) {\n setHover(false);\n return;\n }\n const domRect = node.getBoundingClientRect();\n const { pageX, pageY } = cursorRef.current;\n setHover(\n pageX >= domRect.left &&\n pageX <= domRect.right &&\n pageY >= domRect.top &&\n pageY <= domRect.bottom\n );\n\n const enter = () => setHover(true);\n const leave = () => setHover(false);\n node.addEventListener(\"mouseenter\", enter);\n node.addEventListener(\"mouseleave\", leave);\n\n return () => {\n node.removeEventListener(\"mouseenter\", enter);\n node.removeEventListener(\"mouseleave\", leave);\n };\n }, [node, cursorRef]);\n\n return { ref: setNode, hover };\n}\n\nexport function useOnClickAway(\n ref: Element | null,\n callback: null | (() => void)\n) {\n useEffect(() => {\n if (ref == null || callback == null) {\n return;\n }\n\n const handleClickOut = (ee: MouseEvent) => {\n const clickOutTarget = ee.target;\n if (!(clickOutTarget instanceof Element)) {\n // TypeScript doesn't realize this will always be true\n return;\n }\n if (ref.contains(clickOutTarget)) {\n return;\n }\n // If the click is _not_ inside the menu.\n callback();\n window.document.removeEventListener(\"click\", handleClickOut, {\n capture: true,\n });\n };\n\n window.document.addEventListener(\"click\", handleClickOut, {\n capture: true,\n });\n\n return () => {\n window.document.removeEventListener(\"click\", handleClickOut, {\n capture: true,\n });\n };\n }, [ref, callback]);\n}\n\n// TODO: Return useSelector directly and apply the type without wrapping\nexport function useTypedSelector<T>(selector: (state: AppState) => T): T {\n return useSelector(selector);\n}\n\nexport function useActionCreator<T extends (...args: any[]) => Action | Thunk>(\n actionCreator: T\n): (...funcArgs: Parameters<T>) => void {\n const dispatch = useDispatch();\n return useCallback((...args) => dispatch(actionCreator(...args)), [\n dispatch,\n actionCreator,\n ]);\n}\n\nexport function useTypedDispatch(): (action: Action | Thunk) => void {\n return useDispatch();\n}\n","import { useState, useEffect, memo } from \"react\";\nimport {\n WINDOW_RESIZE_SEGMENT_WIDTH,\n WINDOW_RESIZE_SEGMENT_HEIGHT,\n} from \"../constants\";\n\ntype Size = [number, number];\n\ninterface Props {\n currentSize: Size;\n setWindowSize(size: Size): void;\n widthOnly?: boolean;\n id?: string;\n}\n\nfunction ResizeTarget(props: Props) {\n const { currentSize, setWindowSize, widthOnly, ...passThroughProps } = props;\n const [mouseDown, setMouseDown] = useState(false);\n const [mouseStart, setMouseStart] = useState<null | { x: number; y: number }>(\n null\n );\n useEffect(() => {\n if (mouseDown === false || mouseStart == null) {\n return;\n }\n const [width, height] = currentSize;\n const handleMove = (ee: MouseEvent) => {\n const x = ee.clientX - mouseStart.x;\n const y = ee.clientY - mouseStart.y;\n\n const newWidth = Math.max(\n 0,\n width + Math.round(x / WINDOW_RESIZE_SEGMENT_WIDTH)\n );\n\n const newHeight = widthOnly\n ? width\n : Math.max(0, height + Math.round(y / WINDOW_RESIZE_SEGMENT_HEIGHT));\n\n const newSize: Size = [newWidth, newHeight];\n\n props.setWindowSize(newSize);\n };\n\n window.addEventListener(\"mousemove\", handleMove);\n\n const handleMouseUp = () => setMouseDown(false);\n window.addEventListener(\"mouseup\", handleMouseUp);\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n // We pruposefully close over the props from when the mouse went down\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mouseStart, mouseDown]);\n\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement>) => {\n // Prevent dragging from highlighting text.\n e.preventDefault();\n setMouseStart({\n x: e.clientX,\n y: e.clientY,\n });\n setMouseDown(true);\n };\n\n return <div onMouseDown={handleMouseDown} {...passThroughProps} />;\n}\nexport default memo(ResizeTarget);\n","import { useCallback, useState, useEffect } from \"react\";\nimport { WindowId } from \"../types\";\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { useActionCreator, useTypedSelector } from \"../hooks\";\n\ninterface Props {\n onKeyDown?(e: KeyboardEvent): void;\n windowId: WindowId;\n children: React.ReactNode;\n}\n\nfunction FocusTarget({ onKeyDown, windowId, children }: Props) {\n const focusedWindowId = useTypedSelector(Selectors.getFocusedWindow);\n const setFocus = useActionCreator(Actions.setFocusedWindow);\n\n const focusHandler = useCallback(() => {\n if (windowId !== focusedWindowId) {\n setFocus(windowId);\n }\n }, [windowId, focusedWindowId, setFocus]);\n\n const [ref, setRef] = useState<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (ref == null || onKeyDown == null) {\n return;\n }\n ref.addEventListener(\"keydown\", onKeyDown);\n return () => ref.removeEventListener(\"keydown\", onKeyDown);\n }, [onKeyDown, windowId, focusedWindowId, ref]);\n\n // It's possible for a child component to gain focus and then become\n // unmounted. In that case, the browser will return focus to the `<body>`.\n // In the following hook, use a `MutationObserver` to watch for that behavior\n // and refocus the containing FocusTarget when it happens.\n //\n // I tried a number of other approaches using `focus/blur/focusin/focusout` on\n // various DOM nodes, and was unable to find a solution which would trigger in\n // this senario in Firefox. Therefore we use this `MutationObserver` approach.\n useEffect(() => {\n // Only create the `MutationObserver` within the currently focused target.\n if (ref == null || windowId !== focusedWindowId) {\n return;\n }\n\n const observer = new MutationObserver((mutations) => {\n // In the common case we won't have focused the body, so we can do this\n // inexpensive check first to avoid calling the more expensive `O(n)`\n // check of the individual mutations.\n if (document.activeElement !== document.body) {\n return;\n }\n if (mutations.some((mutation) => mutation.removedNodes.length > 0)) {\n ref.focus();\n }\n });\n\n observer.observe(ref, {\n subtree: true,\n attributes: false,\n childList: true,\n });\n\n return () => observer.disconnect();\n }, [windowId, focusedWindowId, ref]);\n\n return (\n <div\n ref={setRef}\n onMouseDown={focusHandler}\n onFocus={focusHandler}\n tabIndex={-1}\n style={{ height: \"100%\", width: \"100%\" }}\n >\n {children}\n </div>\n );\n}\n\nexport default FocusTarget;\n","import * as React from \"react\";\nimport classnames from \"classnames\";\nimport \"../../../css/gen-window.css\";\n\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport ResizeTarget from \"../ResizeTarget\";\nimport { WindowId } from \"../../types\";\nimport FocusTarget from \"../FocusTarget\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\n\ninterface TextProps {\n children: string;\n}\n\nconst Text = ({ children }: TextProps) => {\n const letters = children.split(\"\");\n return (\n <React.Fragment>\n {letters.map((letter, i) => (\n <div\n key={i}\n className={`draggable gen-text-letter gen-text-${\n letter === \" \" ? \"space\" : letter.toLowerCase()\n }`}\n />\n ))}\n </React.Fragment>\n );\n};\n\nconst CHROME_WIDTH = 19;\nconst CHROME_HEIGHT = 34;\n\ninterface WindowSize {\n width: number;\n height: number;\n}\n\ninterface Props {\n windowId: WindowId;\n children: (windowSize: WindowSize) => React.ReactNode;\n title: string;\n onKeyDown?(e: KeyboardEvent): void;\n}\n\n// Named export for testing\nexport const GenWindow = ({ children, title, windowId, onKeyDown }: Props) => {\n const setWindowSize = useActionCreator(Actions.setWindowSize);\n const closeWindow = useActionCreator(Actions.closeWindow);\n const getWindowPixelSize = useTypedSelector(Selectors.getWindowPixelSize);\n const focusedWindow = useTypedSelector(Selectors.getFocusedWindow);\n const getWindowSize = useTypedSelector(Selectors.getWindowSize);\n const windowSize = getWindowSize(windowId);\n const selected = focusedWindow === windowId;\n const { width, height } = getWindowPixelSize(windowId);\n return (\n <FocusTarget windowId={windowId} onKeyDown={onKeyDown}>\n <div\n className={classnames(\"gen-window\", \"window\", { selected })}\n style={{ width, height }}\n >\n <div className=\"gen-top draggable\">\n <div className=\"gen-top-left draggable\" />\n <div className=\"gen-top-left-fill draggable\" />\n <div className=\"gen-top-left-end draggable\" />\n <div className=\"gen-top-title draggable\">\n <Text>{title}</Text>\n </div>\n <div className=\"gen-top-right-end draggable\" />\n <div className=\"gen-top-right-fill draggable\" />\n <div className=\"gen-top-right draggable\">\n <div\n className=\"gen-close selected\"\n onClick={() => closeWindow(windowId)}\n />\n </div>\n </div>\n <div className=\"gen-middle\">\n <div className=\"gen-middle-left draggable\">\n <div className=\"gen-middle-left-bottom draggable\" />\n </div>\n <div className=\"gen-middle-center\">\n {children({\n width: width - CHROME_WIDTH,\n height: height - CHROME_HEIGHT,\n })}\n </div>\n <div className=\"gen-middle-right draggable\">\n <div className=\"gen-middle-right-bottom draggable\" />\n </div>\n </div>\n <div className=\"gen-bottom draggable\">\n <div className=\"gen-bottom-left draggable\" />\n <div className=\"gen-bottom-right draggable\">\n <ResizeTarget\n currentSize={windowSize}\n setWindowSize={(size) => setWindowSize(windowId, size)}\n id={\"gen-resize-target\"}\n />\n </div>\n </div>\n </div>\n </FocusTarget>\n );\n};\n\nexport default GenWindow;\n","import { useEffect, useState, useRef } from \"react\";\nimport { VISUALIZERS } from \"../../constants\";\nimport * as Selectors from \"../../selectors\";\nimport { TransitionType } from \"../../types\";\nimport { useTypedSelector } from \"../../hooks\";\n\ntype ButterchurnVisualizer = {\n setRendererSize(width: number, height: number): void;\n loadPreset(preset: Object, transitionTime: number): void;\n launchSongTitleAnim(title: string): void;\n render(): void;\n};\n\ninterface Props {\n analyser: AnalyserNode;\n height: number;\n width: number;\n}\n\nconst TRANSITION_TYPE_DURATIONS = {\n [TransitionType.DEFAULT]: 2.7,\n [TransitionType.IMMEDIATE]: 0,\n [TransitionType.USER_PRESET]: 5.7,\n};\n\nfunction Visualizer({ analyser, width, height }: Props) {\n const visualizerStyle = useTypedSelector(Selectors.getVisualizerStyle);\n const playing = useTypedSelector(Selectors.getMediaIsPlaying);\n const butterchurn = useTypedSelector(Selectors.getButterchurn);\n const trackTitle = useTypedSelector(Selectors.getCurrentTrackDisplayName);\n const currentPreset = useTypedSelector(Selectors.getCurrentPreset);\n const transitionType = useTypedSelector(Selectors.getPresetTransitionType);\n const message = useTypedSelector(Selectors.getMilkdropMessage);\n\n const isEnabledVisualizer = visualizerStyle === VISUALIZERS.MILKDROP;\n\n const canvasRef = useRef(null);\n const [visualizer, setVisualizer] = useState<ButterchurnVisualizer | null>(\n null\n );\n\n // Initialize the visualizer\n useEffect(() => {\n if (canvasRef.current == null || butterchurn == null) {\n return;\n }\n if (visualizer != null) {\n // Note: The visualizer does not offer anyway to clean itself up. So, we\n // don't offer any way to recreate it. So, if you swap out the analyser\n // node, or the canvas, that change won't be respected.\n return;\n }\n const _visualizer = butterchurn.createVisualizer(\n analyser.context,\n canvasRef.current,\n {\n width,\n height,\n meshWidth: 32,\n meshHeight: 24,\n pixelRatio: window.devicePixelRatio || 1,\n }\n );\n _visualizer.connectAudio(analyser);\n setVisualizer(_visualizer);\n }, [butterchurn, analyser, height, width, visualizer]);\n\n // Ensure render size stays up to date\n useEffect(() => {\n if (visualizer == null) {\n return;\n }\n visualizer.setRendererSize(width, height);\n }, [visualizer, width, height]);\n\n // Load presets when they change\n const hasLoadedPreset = useRef<boolean>(false);\n useEffect(() => {\n if (visualizer == null || currentPreset == null) {\n return;\n }\n if (hasLoadedPreset.current) {\n visualizer.loadPreset(\n currentPreset,\n TRANSITION_TYPE_DURATIONS[transitionType]\n );\n } else {\n visualizer.loadPreset(\n currentPreset,\n TRANSITION_TYPE_DURATIONS[TransitionType.IMMEDIATE]\n );\n hasLoadedPreset.current = true;\n }\n // We don't want to trigger the transition if the transition type changes.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [visualizer, currentPreset]);\n\n // Handle title animations\n useEffect(() => {\n if (visualizer == null || !trackTitle) {\n return;\n }\n visualizer.launchSongTitleAnim(trackTitle);\n }, [visualizer, trackTitle]);\n\n const lastShownMessage = useRef<null | number>(null);\n\n useEffect(() => {\n if (visualizer == null || message == null) {\n return;\n }\n if (\n lastShownMessage.current == null ||\n message.time > lastShownMessage.current\n ) {\n lastShownMessage.current = Date.now();\n visualizer.launchSongTitleAnim(message.text);\n }\n }, [visualizer, message]);\n\n const shouldAnimate = playing && isEnabledVisualizer;\n\n // Kick off the animation loop\n useEffect(() => {\n if (!shouldAnimate || visualizer == null) {\n return;\n }\n let animationFrameRequest: number | null = null;\n const loop = () => {\n visualizer.render();\n animationFrameRequest = window.requestAnimationFrame(loop);\n };\n loop();\n return () => {\n if (animationFrameRequest != null) {\n window.cancelAnimationFrame(animationFrameRequest);\n }\n };\n }, [visualizer, shouldAnimate]);\n\n return (\n <canvas\n height={height}\n width={width}\n style={{\n height: \"100%\",\n width: \"100%\",\n display: isEnabledVisualizer ? \"block\" : \"none\",\n }}\n ref={canvasRef}\n />\n );\n}\n\nexport default Visualizer;\n","import * as React from \"react\";\n\ninterface Props {\n innerRef?: (node: HTMLDivElement) => void;\n children: React.ReactNode;\n}\n\nconst Background = (props: Props) => {\n const { innerRef } = props;\n return (\n <div\n ref={innerRef}\n className=\"draggable\"\n style={{\n // This color will be used until Butterchurn is loaded\n backgroundColor: \"#000\",\n position: \"absolute\",\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n height: \"100%\",\n width: \"100%\",\n }}\n tabIndex={0}\n >\n {props.children}\n </div>\n );\n};\n\nexport default Background;\n","import { useState, useCallback } from \"react\";\nimport { promptForFileReferences } from \"../../fileUtils\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { clamp } from \"../../utils\";\nimport { TransitionType } from \"../../types\";\nimport {\n useUnmountedRef,\n useActionCreator,\n useTypedSelector,\n} from \"../../hooks\";\n\nconst ENTRY_HEIGHT = 14;\nconst HEIGHT_PADDING = 15;\nconst WIDTH_PADDING = 20;\n\nconst LOADING_STYLE: React.CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n color: \"white\",\n background: \"rgba(0.33, 0.33, 0.33, 0.33)\",\n};\n\nconst OUTER_WRAPPER_STYLE: React.CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n padding: \"15px 10px 0 10px\",\n};\n\nconst INNER_WRAPPER_STYLE: React.CSSProperties = {\n display: \"inline-block\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n background: \"rgba(0, 0, 0, 0.815)\",\n fontSize: \"12px\",\n};\n\ninterface Props {\n height: number;\n width: number;\n}\n\nfunction presetIndexFromListIndex(listIndex: number) {\n return listIndex - 1;\n}\n\nfunction listIndexFromPresetIndex(listIndex: number) {\n return listIndex + 1;\n}\n\nfunction PresetOverlay({ height, width }: Props) {\n const presetKeys = useTypedSelector(Selectors.getPresetNames);\n const currentPresetIndex = useTypedSelector(Selectors.getCurrentPresetIndex);\n const requestPresetAtIndex = useActionCreator(Actions.requestPresetAtIndex);\n const togglePresetOverlay = useActionCreator(Actions.togglePresetOverlay);\n const appendPresetFileList = useActionCreator(Actions.appendPresetFileList);\n\n const unmountedRef = useUnmountedRef();\n const [selectedListIndex, setSelectedListIndex] = useState(() => {\n if (currentPresetIndex != null) {\n return listIndexFromPresetIndex(currentPresetIndex);\n }\n return 0;\n });\n\n // Number of presets, plus one for the \"Load Local Directory\" option, minus\n // one to convert a length to an index.\n const maxListIndex = presetKeys.length; // - 1 + 1;\n\n const renderList = useCallback(() => {\n const maxVisibleRows = Math.floor((height - HEIGHT_PADDING) / ENTRY_HEIGHT);\n const rowsToShow = Math.floor(maxVisibleRows * 0.75); // Only fill 3/4 of the screen.\n const [startIndex, endIndex] = getRangeCenteredOnIndex(\n maxListIndex + 1, // Add one to convert an index to a length\n rowsToShow,\n selectedListIndex\n );\n\n const presetElms = [];\n for (let i = startIndex; i <= endIndex; i++) {\n const presetIndex = presetIndexFromListIndex(i);\n const isSelected = i === selectedListIndex;\n const isCurrent = presetIndex === currentPresetIndex;\n let color: string;\n if (isSelected) {\n color = isCurrent ? \"#FFCC22\" : \"#FF5050\";\n } else {\n color = isCurrent ? \"#CCFF03\" : \"#CCCCCC\";\n }\n presetElms.push(\n <li key={i} style={{ color, lineHeight: `${ENTRY_HEIGHT}px` }}>\n {i === 0 ? \"Load Local Directory\" : presetKeys[presetIndex]}\n </li>\n );\n }\n\n return presetElms;\n }, [currentPresetIndex, height, maxListIndex, presetKeys, selectedListIndex]);\n\n const loadLocalDir = useCallback(async () => {\n const fileReferences = await promptForFileReferences({ directory: true });\n if (unmountedRef.current) {\n return;\n }\n appendPresetFileList(fileReferences);\n }, [appendPresetFileList, unmountedRef]);\n\n const handleFocusedKeyboardInput = useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n switch (e.keyCode) {\n case 38: // up arrow\n setSelectedListIndex((value) => Math.max(value - 1, 0));\n e.stopPropagation();\n break;\n case 40: // down arrow\n setSelectedListIndex((value) => Math.min(value + 1, maxListIndex));\n e.stopPropagation();\n break;\n case 13: // enter\n if (selectedListIndex === 0) {\n loadLocalDir();\n } else {\n requestPresetAtIndex(\n presetIndexFromListIndex(selectedListIndex),\n TransitionType.DEFAULT,\n true\n );\n }\n e.stopPropagation();\n break;\n case 27: // escape\n togglePresetOverlay();\n e.stopPropagation();\n break;\n }\n },\n [\n loadLocalDir,\n maxListIndex,\n requestPresetAtIndex,\n selectedListIndex,\n togglePresetOverlay,\n ]\n );\n\n const handleNode = useCallback((node: HTMLDivElement | null) => {\n if (node != null && document.activeElement !== node) {\n node.focus();\n }\n }, []);\n\n if (presetKeys == null) {\n return (\n <div style={LOADING_STYLE}>\n <span>Loading presets</span>\n </div>\n );\n }\n return (\n <div\n ref={handleNode}\n tabIndex={-1}\n style={OUTER_WRAPPER_STYLE}\n onKeyDown={handleFocusedKeyboardInput}\n >\n <div\n style={{\n ...INNER_WRAPPER_STYLE,\n width: width - 20 - WIDTH_PADDING,\n maxHeight: height - HEIGHT_PADDING,\n }}\n >\n <ul style={{ listStyleType: \"none\", padding: 0, margin: 0 }}>\n {renderList()}\n </ul>\n </div>\n </div>\n );\n}\n\n// Find a tuple `[startIndex, endIndex]` representing start/end indexes into an\n// array of length `length`, that descripe a range of size up to `rangeSize`\n// where a best effort is made to center `indexToCenter`.\nexport function getRangeCenteredOnIndex(\n length: number,\n maxRangeSize: number,\n indexToCenter: number\n): [number, number] {\n const rangeSize = Math.min(length, maxRangeSize);\n const halfRangeSize = Math.floor(rangeSize / 2);\n const idealStartIndex = indexToCenter - halfRangeSize;\n const startIndex = clamp(idealStartIndex, 0, length - rangeSize);\n const endIndex = startIndex + rangeSize - 1;\n return [startIndex, endIndex];\n}\nexport default PresetOverlay;\n","import { useCallback } from \"react\";\nimport { useActionCreator } from \"../hooks\";\nimport * as Actions from \"../actionCreators\";\nimport { WindowId } from \"../types\";\n\ninterface Coord {\n x: number;\n y: number;\n}\n\ninterface Props extends React.HTMLAttributes<HTMLDivElement> {\n handleDrop(e: React.DragEvent<HTMLDivElement>, coord: Coord): void;\n windowId: WindowId;\n}\n\nfunction supress(e: React.DragEvent<HTMLDivElement>) {\n e.stopPropagation();\n e.preventDefault();\n e.dataTransfer.dropEffect = \"link\";\n e.dataTransfer.effectAllowed = \"link\";\n}\n\nconst DropTarget = (props: Props) => {\n const {\n // eslint-disable-next-line no-shadow, no-unused-vars\n handleDrop,\n windowId,\n ...passThroughProps\n } = props;\n\n const droppedFiles = useActionCreator(Actions.droppedFiles);\n\n const onDrop = useCallback(\n (e: React.DragEvent<HTMLDivElement>) => {\n supress(e);\n droppedFiles(e, windowId);\n // TODO: We could probably move this coordinate logic into the playlist.\n // I think that's the only place it gets used.\n const { currentTarget } = e;\n if (!(currentTarget instanceof Element)) {\n return;\n }\n\n const { left: x, top: y } = currentTarget.getBoundingClientRect();\n handleDrop(e, { x, y });\n },\n [handleDrop, droppedFiles, windowId]\n );\n return (\n <div\n {...passThroughProps}\n onDragStart={supress}\n onDragEnter={supress}\n onDragOver={supress}\n onDrop={onDrop}\n />\n );\n};\n\nexport default DropTarget;\n","import { useMemo, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport classnames from \"classnames\";\n\nimport \"../../css/context-menu.css\";\nimport { useTypedSelector } from \"../hooks\";\nimport * as Selectors from \"../selectors\";\n\ninterface PortalProps {\n zIndex: number;\n top: number;\n left: number;\n children: JSX.Element[] | JSX.Element;\n}\n\nconst Portal = (props: PortalProps) => {\n const node: HTMLDivElement = useMemo(() => {\n const div = document.createElement(\"div\");\n div.id = \"webamp-context-menu\";\n div.style.position = \"absolute\";\n div.style.top = \"0\";\n div.style.left = \"0\";\n div.style.zIndex = String(props.zIndex + 1);\n return div;\n }, [props.zIndex]);\n\n useEffect(() => {\n document.body.appendChild(node);\n return () => {\n document.body.removeChild(node);\n };\n }, [node]);\n\n const style: React.CSSProperties = {\n top: props.top,\n left: props.left,\n position: \"absolute\",\n };\n return createPortal(<div style={style}>{props.children}</div>, node);\n};\n\nexport const Hr = () => (\n <li className=\"hr\">\n <hr />\n </li>\n);\n\ninterface ParentProps {\n label: string;\n children: React.ReactNode;\n}\n\nexport const Parent = ({ children, label }: ParentProps) => (\n <li className=\"parent\">\n <ul>{children}</ul>\n {label}\n </li>\n);\n\ninterface LinkNodeProps {\n label: string;\n href: string;\n target?: string;\n}\n\nexport const LinkNode = (props: LinkNodeProps) => (\n <li>\n <a {...props}>{props.label}</a>\n </li>\n);\n\ninterface NodeProps {\n label: string;\n checked?: boolean;\n hotkey?: string;\n className?: string;\n // TODO: Figure out how to do passthrough props\n onClick?: () => void;\n}\n\nexport const Node = (props: NodeProps) => {\n const { label, checked, className = \"\", ...passThroughProps } = props;\n return (\n <li className={classnames(className, { checked })} {...passThroughProps}>\n {label}\n </li>\n );\n};\n\ninterface ContextMenuProps {\n children: React.ReactNode;\n offsetTop: number;\n offsetLeft: number;\n top?: boolean;\n bottom?: boolean;\n // TODO: Remove this. Just conditionally render in the parent.\n selected: boolean;\n}\n\nexport default function ContextMenu({\n children,\n offsetTop,\n offsetLeft,\n top,\n bottom,\n selected,\n}: ContextMenuProps) {\n const zIndex = useTypedSelector(Selectors.getZIndex);\n if (!selected) {\n return null;\n }\n return (\n <Portal top={offsetTop} left={offsetLeft} zIndex={zIndex}>\n <ul className={classnames(\"context-menu\", { top, bottom })}>\n {children}\n </ul>\n </Portal>\n );\n}\n","import { ReactNode, useState, useEffect, useCallback } from \"react\";\nimport ContextMenu from \"./ContextMenu\";\n\ninterface Props {\n renderContents(): ReactNode;\n children: ReactNode;\n}\n\n// Trigger a context menu at the user's cursor position when the user right\n// clicks within this component.\n// For a component that triggers relative to a given component when the user\n// left-clicks see `<ContextMenuTarget />`.\n\n// TODO: Consider using nested contexts to ensure we don't ever have multiple\n// non-nested context menus open at a time.\nexport default function ContextMenuWraper({\n children,\n renderContents,\n ...passThroughProps\n}: Props) {\n const [openPosition, setOpenPosition] = useState<{\n x: number;\n y: number;\n } | null>(null);\n\n const closeMenu = useCallback(() => {\n setOpenPosition(null);\n }, []);\n\n const handleGlobalClick = useCallback(\n (e: MouseEvent) => {\n if (e.button !== 2) {\n closeMenu();\n }\n },\n [closeMenu]\n );\n\n const handleRightClick = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n const { pageX, pageY } = e;\n // TODO: We could do an initial render to see if the menu fits here\n // and do a second render if it does not.\n setOpenPosition({ x: pageX, y: pageY });\n e.preventDefault();\n e.stopPropagation();\n },\n []\n );\n\n // Add click-away listeners when window is open\n useEffect(() => {\n if (openPosition == null) {\n return;\n }\n document.addEventListener(\"click\", handleGlobalClick);\n document.body.addEventListener(\"contextmenu\", closeMenu);\n\n return () => {\n document.removeEventListener(\"click\", handleGlobalClick);\n document.body.removeEventListener(\"contextmenu\", closeMenu);\n };\n }, [openPosition, closeMenu, handleGlobalClick]);\n\n return (\n <div\n onContextMenu={handleRightClick}\n style={{ width: \"100%\", height: \"100%\" }}\n {...passThroughProps}\n >\n <ContextMenu\n selected={openPosition != null}\n offsetTop={openPosition?.y ?? 0}\n offsetLeft={openPosition?.x ?? 0}\n >\n {renderContents()}\n </ContextMenu>\n {children}\n </div>\n );\n}\n","import { ReactNode } from \"react\";\nimport { Hr, Node } from \"../ContextMenu\";\nimport { WINDOWS } from \"../../constants\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport ContextMenuWraper from \"../ContextMenuWrapper\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\ninterface Props {\n children: ReactNode;\n}\n\nconst MilkdropContextMenu = (props: Props) => {\n const desktop = useTypedSelector(Selectors.getMilkdropDesktopEnabled);\n\n const closeWindow = useActionCreator(Actions.closeWindow);\n const toggleDesktop = useActionCreator(Actions.toggleMilkdropDesktop);\n const toggleFullscreen = useActionCreator(Actions.toggleMilkdropFullscreen);\n return (\n <ContextMenuWraper\n renderContents={() => {\n return (\n <>\n <Node\n onClick={toggleFullscreen}\n label=\"Fullscreen\"\n hotkey=\"Alt+Enter\"\n />\n <Node\n onClick={toggleDesktop}\n checked={desktop}\n label=\"Desktop Mode\"\n hotkey=\"Alt+D\"\n />\n <Hr />\n <Node onClick={() => closeWindow(WINDOWS.MILKDROP)} label=\"Quit\" />\n </>\n );\n }}\n >\n {props.children}\n </ContextMenuWraper>\n );\n};\n\nexport default MilkdropContextMenu;\n","import * as React from \"react\";\nimport ReactDOM from \"react-dom\";\n\ninterface Props {\n children: React.ReactNode;\n}\n\nconst Desktop = React.memo(({ children }: Props) => {\n const [desktopNode] = React.useState(() => document.createElement(\"div\"));\n\n React.useEffect(() => {\n desktopNode.classList.add(\"webamp-desktop\");\n document.body.appendChild(desktopNode);\n return () => {\n document.body.removeChild(desktopNode);\n };\n }, [desktopNode]);\n\n return ReactDOM.createPortal(children, desktopNode);\n});\n\nexport default Desktop;\n","import { useEffect, useCallback } from \"react\";\nimport Fullscreen from \"../Fullscreen\";\nimport {\n useWindowSize,\n useScreenSize,\n useTypedSelector,\n useActionCreator,\n} from \"../../hooks\";\nimport GenWindow from \"../GenWindow\";\nimport { WINDOWS } from \"../../constants\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { TransitionType } from \"../../types\";\nimport Visualizer from \"./Visualizer\";\n\nimport \"../../../css/milkdrop-window.css\";\nimport Background from \"./Background\";\nimport PresetOverlay from \"./PresetOverlay\";\nimport DropTarget from \"../DropTarget\";\nimport MilkdropContextMenu from \"./MilkdropContextMenu\";\nimport Desktop from \"./Desktop\";\n\nconst MILLISECONDS_BETWEEN_PRESET_TRANSITIONS = 15000;\n\ninterface Props {\n analyser: AnalyserNode;\n}\n\nfunction useKeyHandler() {\n const trackTitle = useTypedSelector(Selectors.getCurrentTrackDisplayName);\n\n const selectNextPreset = useActionCreator(Actions.selectNextPreset);\n const selectPreviousPreset = useActionCreator(Actions.selectPreviousPreset);\n const toggleRandomize = useActionCreator(Actions.toggleRandomizePresets);\n const togglePresetOverlay = useActionCreator(Actions.togglePresetOverlay);\n const scheduleMilkdropMessage = useActionCreator(\n Actions.scheduleMilkdropMessage\n );\n const toggleCycling = useActionCreator(Actions.togglePresetCycling);\n\n // Handle keyboard events\n return useCallback(\n (e: KeyboardEvent) => {\n switch (e.keyCode) {\n case 32: // spacebar\n selectNextPreset();\n break;\n case 8: // backspace\n selectPreviousPreset(TransitionType.IMMEDIATE);\n break;\n case 72: // H\n selectNextPreset(TransitionType.IMMEDIATE);\n break;\n case 82: // R\n toggleRandomize();\n break;\n case 76: // L\n togglePresetOverlay();\n e.stopPropagation();\n break;\n case 84: // T\n if (trackTitle != null) {\n scheduleMilkdropMessage(trackTitle);\n }\n e.stopPropagation();\n break;\n case 145: // scroll lock\n case 125: // F14 (scroll lock for OS X)\n toggleCycling();\n break;\n }\n },\n [\n scheduleMilkdropMessage,\n selectNextPreset,\n selectPreviousPreset,\n toggleCycling,\n togglePresetOverlay,\n toggleRandomize,\n trackTitle,\n ]\n );\n}\n\nfunction Milkdrop({ analyser }: Props) {\n const desktop = useTypedSelector(Selectors.getMilkdropDesktopEnabled);\n const fullscreen = useTypedSelector(Selectors.getMilkdropFullscreenEnabled);\n const overlay = useTypedSelector(Selectors.getPresetOverlayOpen);\n const presetsAreCycling = useTypedSelector(Selectors.getPresetsAreCycling);\n const currentPresetIndex = useTypedSelector(Selectors.getCurrentPresetIndex);\n const mediaIsPlaying = useTypedSelector(Selectors.getMediaIsPlaying);\n\n const toggleFullscreen = useActionCreator(Actions.toggleMilkdropFullscreen);\n const selectNextPreset = useActionCreator(Actions.selectNextPreset);\n const handlePresetDrop = useActionCreator(Actions.handlePresetDrop);\n const setFullscreen = useActionCreator(Actions.setMilkdropFullscreen);\n\n const handleKeyDown = useKeyHandler();\n\n // Cycle presets\n useEffect(() => {\n if (!presetsAreCycling || !mediaIsPlaying) {\n return;\n }\n const intervalId = setInterval(\n selectNextPreset,\n MILLISECONDS_BETWEEN_PRESET_TRANSITIONS\n );\n return () => clearInterval(intervalId);\n }, [presetsAreCycling, currentPresetIndex, mediaIsPlaying, selectNextPreset]);\n\n const screenSize = useScreenSize();\n const windowSize = useWindowSize();\n\n if (desktop) {\n return (\n <Desktop>\n <MilkdropContextMenu>\n <Visualizer {...windowSize} analyser={analyser} />\n </MilkdropContextMenu>\n </Desktop>\n );\n }\n\n return (\n <GenWindow\n title={\"Milkdrop\"}\n windowId={WINDOWS.MILKDROP}\n onKeyDown={handleKeyDown}\n >\n {(genWindowSize: { width: number; height: number }) => {\n const size = fullscreen ? screenSize : genWindowSize;\n return (\n <MilkdropContextMenu>\n <Background>\n <DropTarget\n windowId={WINDOWS.MILKDROP}\n handleDrop={handlePresetDrop}\n >\n {overlay && <PresetOverlay {...size} />}\n <Fullscreen enabled={fullscreen} onChange={setFullscreen}>\n <div onDoubleClick={toggleFullscreen}>\n <Visualizer {...size} analyser={analyser} />\n </div>\n </Fullscreen>\n </DropTarget>\n </Background>\n </MilkdropContextMenu>\n );\n }}\n </GenWindow>\n );\n}\nexport default Milkdrop;\n","import { Fragment } from \"react\";\nimport * as Actions from \"../actionCreators\";\nimport { Hr, Node } from \"./ContextMenu\";\nimport { useActionCreator } from \"../hooks\";\n\nconst PlaybackContextMenu = () => {\n const previous = useActionCreator(Actions.previous);\n const play = useActionCreator(Actions.play);\n const pause = useActionCreator(Actions.pause);\n const stop = useActionCreator(Actions.stop);\n const next = useActionCreator(Actions.next);\n const seekForward = useActionCreator(Actions.seekForward);\n const seekBackward = useActionCreator(Actions.seekBackward);\n const nextN = useActionCreator(Actions.nextN);\n return (\n <Fragment>\n <Node label=\"Previous\" hotkey=\"Z\" onClick={previous} />\n <Node label=\"Play\" hotkey=\"X\" onClick={play} />\n <Node label=\"Pause\" hotkey=\"C\" onClick={pause} />\n <Node label=\"Stop\" hotkey=\"V\" onClick={stop} />\n <Node label=\"Next\" hotkey=\"B\" onClick={next} />\n <Hr />\n {/*\n <Node label=\"Stop w/ fadeout\" hotkey=\"Shift+V\" />\n <Node label=\"Stop after current\" hotkey=\"Ctrl+V\" />\n */}\n <Node\n label=\"Back 5 seconds\"\n hotkey=\"Left\"\n onClick={() => seekBackward(5)}\n />\n <Node\n label=\"Fwd 5 seconds\"\n hotkey=\"Right\"\n onClick={() => seekForward(5)}\n />\n {/*\n <Node label=\"Start of list\" hotkey=\"Ctrl+Z\" />\n */}\n <Node label=\"10 tracks back\" hotkey=\"Num. 1\" onClick={() => nextN(-10)} />\n <Node label=\"10 tracks fwd\" hotkey=\"Num. 3\" onClick={() => nextN(10)} />\n {/*\n <Hr />\n <Node label=\"Jump to time\" hotkey=\"Ctrl+J\" />\n <Node label=\"Jump to file\" hotkey=\"J\" />\n */}\n </Fragment>\n );\n};\n\nexport default PlaybackContextMenu;\n","import * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { Hr, Node, Parent } from \"./ContextMenu\";\nimport { useActionCreator, useTypedSelector } from \"../hooks\";\n\nconst SkinContextMenu = () => {\n const loadDefaultSkin = useActionCreator(Actions.loadDefaultSkin);\n const openSkinFileDialog = useActionCreator(Actions.openSkinFileDialog);\n const setSkin = useActionCreator(Actions.setSkinFromUrl);\n\n const availableSkins = useTypedSelector(Selectors.getAvaliableSkins);\n return (\n <Parent label=\"Skins\">\n <Node onClick={openSkinFileDialog} label=\"Load Skin...\" />\n <Hr />\n <Node onClick={loadDefaultSkin} label={\"<Base Skin>\"} />\n {availableSkins.map((skin) => (\n <Node\n key={skin.url}\n onClick={() => setSkin(skin.url)}\n label={skin.name}\n />\n ))}\n </Parent>\n );\n};\nexport default SkinContextMenu;\n","import { Hr, Node } from \"./ContextMenu\";\nimport SkinsContextMenu from \"./SkinsContextMenu\";\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { TIME_MODE } from \"../constants\";\nimport { useActionCreator, useTypedSelector } from \"../hooks\";\n\nconst OptionsContextMenu = () => {\n const toggleTimeMode = useActionCreator(Actions.toggleTimeMode);\n const toggleDoubleSizeMode = useActionCreator(Actions.toggleDoubleSizeMode);\n const toggleRepeat = useActionCreator(Actions.toggleRepeat);\n const toggleShuffle = useActionCreator(Actions.toggleShuffle);\n\n const doubled = useTypedSelector(Selectors.getDoubled);\n const timeMode = useTypedSelector(Selectors.getTimeMode);\n const repeat = useTypedSelector(Selectors.getRepeat);\n const shuffle = useTypedSelector(Selectors.getShuffle);\n return (\n <>\n {/* <Node label=\"Preferences...\" /> */}\n <SkinsContextMenu />\n <Hr />\n <Node\n label=\"Time elapsed\"\n hotkey=\"(Ctrl+T toggles)\"\n onClick={toggleTimeMode}\n checked={timeMode === TIME_MODE.ELAPSED}\n />\n <Node\n label=\"Time remaining\"\n hotkey=\"(Ctrl+T toggles)\"\n onClick={toggleTimeMode}\n checked={timeMode === TIME_MODE.REMAINING}\n />\n {/* <Node label=\"Always On Top\" hotkey=\"Ctrl+A\" /> */}\n <Node\n label=\"Double Size\"\n hotkey=\"Ctrl+D\"\n onClick={toggleDoubleSizeMode}\n checked={doubled}\n />\n {/* <Node label=\"EasyMove\" hotkey=\"Ctrl+E\" /> */}\n <Hr />\n <Node label=\"Repeat\" hotkey=\"R\" onClick={toggleRepeat} checked={repeat} />\n <Node\n label=\"Shuffle\"\n hotkey=\"S\"\n onClick={toggleShuffle}\n checked={shuffle}\n />\n </>\n );\n};\nexport default OptionsContextMenu;\n","import { memo, Fragment, useEffect } from \"react\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { LOAD_STYLE } from \"../../constants\";\nimport { Hr, Node, Parent, LinkNode } from \"../ContextMenu\";\nimport PlaybackContextMenu from \"../PlaybackContextMenu\";\nimport OptionsContextMenu from \"../OptionsContextMenu\";\nimport SkinsContextMenu from \"../SkinsContextMenu\";\nimport { FilePicker } from \"../../types\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\ninterface Props {\n filePickers: FilePicker[];\n}\n\nconst MainContextMenu = memo(({ filePickers }: Props) => {\n const networkConnected = useTypedSelector(Selectors.getNetworkConnected);\n const genWindows = useTypedSelector(Selectors.getGenWindows);\n\n const close = useActionCreator(Actions.close);\n const openMediaFileDialog = useActionCreator(Actions.openMediaFileDialog);\n const loadMediaFiles = useActionCreator(Actions.loadMediaFiles);\n const toggleWindow = useActionCreator(Actions.toggleWindow);\n const menuOpened = useActionCreator(() => ({\n type: \"MAIN_CONTEXT_MENU_OPENED\",\n }));\n useEffect(() => {\n menuOpened();\n }, [menuOpened]);\n\n return (\n <Fragment>\n <LinkNode\n href=\"https://webamp.org/about\"\n target=\"_blank\"\n label=\"Webamp...\"\n />\n <Hr />\n <Parent label=\"Play\">\n <Node onClick={openMediaFileDialog} label=\"File...\" hotkey=\"L\" />\n {filePickers != null &&\n filePickers.map(\n (picker, i) =>\n (networkConnected || !picker.requiresNetwork) && (\n <Node\n key={i}\n onClick={async () => {\n let files;\n try {\n files = await picker.filePicker();\n } catch (e) {\n console.error(\"Error loading from file picker\", e);\n }\n loadMediaFiles(files || [], LOAD_STYLE.PLAY);\n }}\n label={picker.contextMenuName}\n />\n )\n )}\n </Parent>\n <Hr />\n {Object.keys(genWindows).map((i) => (\n <Node\n key={i}\n label={genWindows[i].title}\n checked={genWindows[i].open}\n onClick={() => toggleWindow(i)}\n hotkey={genWindows[i].hotkey}\n />\n ))}\n <Hr />\n <SkinsContextMenu />\n <Hr />\n <Parent label=\"Options\">\n <OptionsContextMenu />\n </Parent>\n <Parent label=\"Playback\">\n <PlaybackContextMenu />\n </Parent>\n <Hr />\n <Node onClick={close} label=\"Exit\" />\n </Fragment>\n );\n});\n\nexport default MainContextMenu;\n","import { ReactNode, useCallback, useEffect, useState } from \"react\";\n\nimport * as SnapUtils from \"../snapUtils\";\nimport * as Selectors from \"../selectors\";\nimport * as Actions from \"../actionCreators\";\nimport { WindowInfo, WindowId, Box, Point } from \"../types\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\n\nconst abuts = (a: Box, b: Box) => {\n // TODO: This is kinda a hack. They should really be touching, not just within snapping distance.\n // Also, overlapping should not count.\n const wouldMoveTo = SnapUtils.snap(a, b);\n return wouldMoveTo.x !== undefined || wouldMoveTo.y !== undefined;\n};\n\ninterface Props {\n windows: { [windowId: string]: ReactNode };\n}\n\ntype DraggingState = {\n moving: WindowInfo[];\n stationary: WindowInfo[];\n boundingBox: Box;\n mouseStart: Point;\n};\n\nfunction useHandleMouseDown(propsWindows: {\n [windowId: string]: ReactNode;\n}): (key: WindowId, e: React.MouseEvent<HTMLDivElement>) => void {\n const windowsInfo = useTypedSelector(Selectors.getWindowsInfo);\n const getWindowHidden = useTypedSelector(Selectors.getWindowHidden);\n const browserWindowSize = useTypedSelector(Selectors.getBrowserWindowSize);\n const updateWindowPositions = useActionCreator(Actions.updateWindowPositions);\n\n const [draggingState, setDraggingState] = useState<DraggingState | null>(\n null\n );\n\n // When the mouse is down, attach a listener to track mouse move events.\n useEffect(() => {\n if (draggingState == null) {\n return;\n }\n const { boundingBox, moving, stationary, mouseStart } = draggingState;\n const handleMouseMove = (ee: MouseEvent) => {\n const proposedDiff = {\n x: ee.clientX - mouseStart.x,\n y: ee.clientY - mouseStart.y,\n };\n\n const proposedWindows = moving.map((node) => ({\n ...node,\n ...SnapUtils.applyDiff(node, proposedDiff),\n }));\n\n const proposedBox = {\n ...boundingBox,\n ...SnapUtils.applyDiff(boundingBox, proposedDiff),\n };\n\n const snapDiff = SnapUtils.snapDiffManyToMany(\n proposedWindows,\n stationary\n );\n\n const withinDiff = SnapUtils.snapWithinDiff(\n proposedBox,\n browserWindowSize\n );\n\n const finalDiff = SnapUtils.applyMultipleDiffs(\n proposedDiff,\n snapDiff,\n withinDiff\n );\n\n const windowPositionDiff: { [windowId: string]: Point } = {};\n moving.forEach((w) => {\n windowPositionDiff[w.key] = SnapUtils.applyDiff(w, finalDiff);\n });\n\n updateWindowPositions(windowPositionDiff, false);\n };\n\n function handleMouseUp() {\n setDraggingState(null);\n }\n\n window.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"mousemove\", handleMouseMove);\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [browserWindowSize, draggingState, updateWindowPositions]);\n\n // Mouse down handler\n return useCallback(\n (key: WindowId, e: React.MouseEvent<HTMLDivElement>) => {\n if (!(e.target as HTMLElement).classList.contains(\"draggable\")) {\n return;\n }\n\n if (getWindowHidden(key)) {\n // The user may be clicking on full screen Milkdrop.\n return;\n }\n\n const windows = windowsInfo.filter(\n (w) => propsWindows[w.key] != null && !getWindowHidden(w.key)\n );\n const targetNode = windows.find((node) => node.key === key);\n if (targetNode == null) {\n throw new Error(`Tried to move a node that does not exist: ${key}`);\n }\n\n let movingSet = new Set([targetNode]);\n // Only the main window brings other windows along.\n if (key === \"main\") {\n const findAllConnected = SnapUtils.traceConnection<WindowInfo>(abuts);\n movingSet = findAllConnected(windows, targetNode);\n }\n\n const stationary = windows.filter((w) => !movingSet.has(w));\n const moving = Array.from(movingSet);\n\n const mouseStart = { x: e.clientX, y: e.clientY };\n\n const boundingBox = SnapUtils.boundingBox(moving);\n setDraggingState({ boundingBox, moving, stationary, mouseStart });\n },\n [getWindowHidden, propsWindows, windowsInfo]\n );\n}\n\nexport default function WindowManager({ windows: propsWindows }: Props) {\n const windowsInfo = useTypedSelector(Selectors.getWindowsInfo);\n const setFocusedWindow = useActionCreator(Actions.setFocusedWindow);\n const handleMouseDown = useHandleMouseDown(propsWindows);\n\n const windows = windowsInfo.filter((w) => propsWindows[w.key]);\n\n const onBlur = useCallback(\n // I give up on trying to type things with `relatedTarget`.\n (e: any) => {\n const { currentTarget, relatedTarget } = e;\n if (\n currentTarget === relatedTarget ||\n currentTarget.contains(relatedTarget)\n ) {\n return;\n }\n setFocusedWindow(null);\n },\n [setFocusedWindow]\n );\n\n return (\n <>\n {windows.map((w) => (\n <div\n key={w.key}\n onBlur={onBlur}\n onMouseDown={(e: React.MouseEvent<HTMLDivElement>) => {\n handleMouseDown(w.key, e);\n }}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n transform: `translate(${w.x}px, ${w.y}px)`,\n }}\n >\n {propsWindows[w.key]}\n </div>\n ))}\n </>\n );\n}\n","import * as React from \"react\";\nimport deburr from \"lodash/deburr\";\n\ninterface Props extends React.HTMLAttributes<HTMLSpanElement> {\n children: string | number;\n className?: string;\n}\n\nexport const characterClassName = (char: string | number) =>\n `character-${deburr(char.toString()).toLowerCase().charCodeAt(0)}`;\n\nconst Character = React.memo(\n ({ children: char, className, ...passThrough }: Props) => {\n return (\n <span\n {...passThrough}\n className={`${className || \"\"} character ${characterClassName(char)}`}\n >\n {char}\n </span>\n );\n }\n);\n\nexport default Character;\n","import { Fragment } from \"react\";\nimport classnames from \"classnames\";\nimport { getTimeObj } from \"../utils\";\nimport { TIME_MODE, MEDIA_STATUS } from \"../constants\";\nimport * as Actions from \"../actionCreators\";\nimport Character from \"./Character\";\nimport * as Selectors from \"../selectors\";\n\nimport \"../../css/mini-time.css\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\n\n// Sigh. When the display is blinking (say when it's paused) we need to\n// alternate between the actual character and the space character. Not\n// Possible to do that in pure CSS with the background being dynamically generated.\n// All \"space\" characters is also how Winamp renders no content.\nconst Background = () => (\n <Fragment>\n {[1, 7, 12, 20, 25].map((left, i) => (\n <Character\n style={{ left }}\n key={i}\n className=\"background-character\"\n children=\" \"\n />\n ))}\n </Fragment>\n);\n\nconst MiniTime = () => {\n const status = useTypedSelector(Selectors.getMediaStatus);\n const duration = useTypedSelector(Selectors.getDuration);\n const timeElapsed = useTypedSelector(Selectors.getTimeElapsed);\n const timeMode = useTypedSelector(Selectors.getTimeMode);\n\n const toggle = useActionCreator(Actions.toggleTimeMode);\n let seconds = null;\n // TODO: Clean this up: If stopped, just render the background, rather than\n // rendering spaces twice.\n if (status !== MEDIA_STATUS.STOPPED && duration != null) {\n seconds =\n timeMode === TIME_MODE.ELAPSED ? timeElapsed : duration - timeElapsed;\n }\n\n const timeObj = getTimeObj(seconds);\n const showMinus =\n timeMode === TIME_MODE.REMAINING && status !== MEDIA_STATUS.STOPPED;\n return (\n <div\n onClick={toggle}\n className={classnames(\"mini-time\", \"countdown\", {\n blinking: status === MEDIA_STATUS.PAUSED,\n })}\n >\n <Background />\n <Character style={{ left: 1 }}>{showMinus ? \"-\" : \" \"}</Character>\n <Character style={{ left: 7 }}>{timeObj.minutesFirstDigit}</Character>\n <Character style={{ left: 12 }}>{timeObj.minutesSecondDigit}</Character>\n <Character style={{ left: 20 }}>{timeObj.secondsFirstDigit}</Character>\n <Character style={{ left: 25 }}>{timeObj.secondsSecondDigit}</Character>\n </div>\n );\n};\n\nexport default MiniTime;\n","import { useState } from \"react\";\nimport classnames from \"classnames\";\n\ninterface Props extends React.HTMLAttributes<HTMLDivElement> {\n className?: string;\n onMouseDown?: (e: React.MouseEvent<HTMLDivElement>) => void;\n}\n\n// Winamp has a strange behavior for the buttons at the top of the main window.\n// It shows through to the main background sprite until the first time that it's\n// clicked, and then it shows the dedicated undepressed sprite thereafter.\n// This component is an abstraction that tracks if a div has ever been clicked.\n// Look in `skinSelectors` for CSS selectors that look like `#some-id.clicked`\n// for examples of this functionality in use.\nfunction ClickedDiv(props: Props) {\n const [clicked, setClicked] = useState(false);\n function handleMouseDown(e: React.MouseEvent<HTMLDivElement>) {\n setClicked(true);\n if (props.onMouseDown) {\n props.onMouseDown(e);\n }\n }\n return (\n <div\n {...props}\n className={classnames(props.className, { clicked })}\n onMouseDown={handleMouseDown}\n />\n );\n}\n\nexport default ClickedDiv;\n","import { useState, useRef, useEffect, useMemo } from \"react\";\nimport ContextMenu from \"./ContextMenu\";\n\ninterface Props extends React.HTMLAttributes<HTMLDivElement> {\n renderMenu: () => React.ReactNode;\n top?: boolean;\n bottom?: boolean;\n}\n\nfunction getNodeOffset(node: HTMLDivElement | null) {\n if (node == null) {\n return { top: 0, left: 0 };\n }\n\n const rect = node.getBoundingClientRect();\n const scrollLeft = window.pageXOffset || document.documentElement!.scrollLeft;\n const scrollTop = window.pageYOffset || document.documentElement!.scrollTop;\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft };\n}\n\n// Trigger a context menu relative to the child element when the user\n// left-clicks on the child.\n//\n// For a component that triggers relative to the user's cursor on right-click\n// see `<ContextMenuWrapper />`.\nfunction ContextMenuTarget(props: Props) {\n const handleNode = useRef<HTMLDivElement>(null);\n const [selected, setSelected] = useState(false);\n useEffect(() => {\n if (!selected) {\n return;\n }\n function handleGlobalClick(e: MouseEvent) {\n if (\n selected &&\n // Typescript does not believe that these click events are always fired on DOM nodes.\n e.target instanceof Element &&\n selected &&\n // Not sure how, but it's possible for this to get called when handleNode is null/undefined.\n // https://sentry.io/share/issue/2066cd79f21e4f279791319f4d2ea35d/\n handleNode.current &&\n !handleNode.current.contains(e.target!)\n ) {\n setSelected(false);\n }\n }\n document.addEventListener(\"click\", handleGlobalClick);\n return () => {\n document.removeEventListener(\"click\", handleGlobalClick);\n };\n }, [selected]);\n\n const offset = useMemo(() => {\n return selected\n ? getNodeOffset(handleNode.current)\n : // Kinda awkward. This is a nonsense return value since we only use\n //this value when we are selected.\n { top: 0, left: 0 };\n }, [selected]);\n\n const { renderMenu, children, top, bottom, ...passThroughProps } = props;\n return (\n <div {...passThroughProps}>\n <div\n className=\"handle\"\n style={{ width: \"100%\", height: \"100%\" }}\n ref={handleNode}\n onClick={() => setSelected(!selected)}\n >\n {children}\n </div>\n <ContextMenu\n selected={selected}\n offsetTop={offset.top}\n offsetLeft={offset.left}\n top={top}\n bottom={bottom}\n >\n {renderMenu()}\n </ContextMenu>\n </div>\n );\n}\n\nexport default ContextMenuTarget;\n","import { useMemo, useCallback } from \"react\";\n\nimport * as Selectors from \"../selectors\";\nimport { useTypedSelector } from \"../hooks\";\n\nconst PIXEL_DENSITY = 2;\n\n// Return the average value in a slice of dataArray\nfunction sliceAverage(\n dataArray: Uint8Array,\n sliceWidth: number,\n sliceNumber: number\n): number {\n const start = sliceWidth * sliceNumber;\n const end = start + sliceWidth;\n let sum = 0;\n for (let i = start; i < end; i++) {\n sum += dataArray[i];\n }\n return sum / sliceWidth;\n}\n\nexport function usePaintOscilloscopeFrame({\n analyser,\n height,\n width,\n renderWidth,\n}: {\n analyser: AnalyserNode;\n height: number;\n width: number;\n renderWidth: number;\n}) {\n const colors = useTypedSelector(Selectors.getSkinColors);\n\n const bufferLength = analyser.fftSize;\n\n const dataArray = useMemo(() => {\n return new Uint8Array(bufferLength);\n }, [bufferLength]);\n\n return useCallback(\n (canvasCtx: CanvasRenderingContext2D) => {\n analyser.getByteTimeDomainData(dataArray);\n\n canvasCtx.lineWidth = PIXEL_DENSITY;\n\n // Just use one of the viscolors for now\n canvasCtx.strokeStyle = colors[18];\n\n // Since dataArray has more values than we have pixels to display, we\n // have to average several dataArray values per pixel. We call these\n // groups slices.\n //\n // We use the 2x scale here since we only want to plot values for\n // \"real\" pixels.\n const sliceWidth = Math.floor(bufferLength / width) * PIXEL_DENSITY;\n\n const h = height;\n\n canvasCtx.beginPath();\n\n // Iterate over the width of the canvas in \"real\" pixels.\n for (let j = 0; j <= renderWidth; j++) {\n const amplitude = sliceAverage(dataArray, sliceWidth, j);\n const percentAmplitude = amplitude / 255; // dataArray gives us bytes\n const y = (1 - percentAmplitude) * h; // flip y\n const x = j * PIXEL_DENSITY;\n\n // Canvas coordinates are in the middle of the pixel by default.\n // When we want to draw pixel perfect lines, we will need to\n // account for that here\n if (x === 0) {\n canvasCtx.moveTo(x, y);\n } else {\n canvasCtx.lineTo(x, y);\n }\n }\n canvasCtx.stroke();\n },\n [analyser, bufferLength, colors, dataArray, height, renderWidth, width]\n );\n}\n","import { useMemo, useCallback, useState } from \"react\";\n\nimport * as Selectors from \"../selectors\";\nimport { useTypedSelector } from \"../hooks\";\n\nconst PIXEL_DENSITY = 2;\nconst BAR_WIDTH = 3 * PIXEL_DENSITY;\nconst GRADIENT_COLOR_COUNT = 16;\nconst PEAK_COLOR_INDEX = 23;\nconst BAR_PEAK_DROP_RATE = 0.01;\nconst NUM_BARS = 20;\n\nfunction octaveBucketsForBufferLength(bufferLength: number): number[] {\n const octaveBuckets = new Array(NUM_BARS).fill(0);\n const minHz = 200;\n const maxHz = 22050;\n const octaveStep = Math.pow(maxHz / minHz, 1 / NUM_BARS);\n\n octaveBuckets[0] = 0;\n octaveBuckets[1] = minHz;\n for (let i = 2; i < NUM_BARS - 1; i++) {\n octaveBuckets[i] = octaveBuckets[i - 1] * octaveStep;\n }\n octaveBuckets[NUM_BARS - 1] = maxHz;\n\n for (let i = 0; i < NUM_BARS; i++) {\n const octaveIdx = Math.floor((octaveBuckets[i] / maxHz) * bufferLength);\n octaveBuckets[i] = octaveIdx;\n }\n\n return octaveBuckets;\n}\n\nfunction preRenderBar(\n height: number,\n colors: string[],\n renderHeight: number\n): HTMLCanvasElement {\n /**\n * The order of the colours is commented in the file: the fist two colours\n * define the background and dots (check it to see what are the dots), the\n * next 16 colours are the analyzer's colours from top to bottom, the next\n * 5 colours are the oscilloscope's ones, from center to top/bottom, the\n * last colour is for the analyzer's peak markers.\n */\n\n // Off-screen canvas for pre-rendering a single bar gradient\n const barCanvas = document.createElement(\"canvas\");\n barCanvas.width = BAR_WIDTH;\n barCanvas.height = height;\n\n const offset = 2; // The first two colors are for the background;\n const gradientColors = colors.slice(offset, offset + GRADIENT_COLOR_COUNT);\n\n const barCanvasCtx = barCanvas.getContext(\"2d\");\n if (barCanvasCtx == null) {\n throw new Error(\"Could not construct canvas context\");\n }\n const multiplier = GRADIENT_COLOR_COUNT / renderHeight;\n // In shade mode, the five colors are, from top to bottom:\n // 214, 102, 0 -- 3\n // 222, 165, 24 -- 6\n // 148, 222, 33 -- 9\n // 57, 181, 16 -- 12\n // 24, 132, 8 -- 15\n // TODO: This could probably be improved by iterating backwards\n for (let i = 0; i < renderHeight; i++) {\n const colorIndex = GRADIENT_COLOR_COUNT - 1 - Math.floor(i * multiplier);\n barCanvasCtx.fillStyle = gradientColors[colorIndex];\n const y = height - i * PIXEL_DENSITY;\n barCanvasCtx.fillRect(0, y, BAR_WIDTH, PIXEL_DENSITY);\n }\n return barCanvas;\n}\n\nexport function usePaintBar({\n renderHeight,\n height,\n}: {\n renderHeight: number;\n height: number;\n}) {\n const colors = useTypedSelector(Selectors.getSkinColors);\n const getWindowShade = useTypedSelector(Selectors.getWindowShade);\n const windowShade = getWindowShade(\"main\");\n\n const barCanvas = useMemo(() => {\n return preRenderBar(height, colors, renderHeight);\n }, [colors, height, renderHeight]);\n\n return useCallback(\n (\n ctx: CanvasRenderingContext2D,\n x: number,\n barHeight: number,\n peakHeight: number\n ) => {\n barHeight = Math.ceil(barHeight) * PIXEL_DENSITY;\n peakHeight = Math.ceil(peakHeight) * PIXEL_DENSITY;\n if (barHeight > 0 || peakHeight > 0) {\n const y = height - barHeight;\n // Draw the gradient\n const b = BAR_WIDTH;\n if (height > 0) {\n ctx.drawImage(barCanvas, 0, y, b, height, x, y, b, height);\n }\n\n // Draw the gray peak line\n if (!windowShade) {\n const peakY = height - peakHeight;\n ctx.fillStyle = colors[PEAK_COLOR_INDEX];\n ctx.fillRect(x, peakY, b, PIXEL_DENSITY);\n }\n }\n },\n [barCanvas, colors, height, windowShade]\n );\n}\n\nexport function usePaintBarFrame({\n renderHeight,\n height,\n analyser,\n}: {\n renderHeight: number;\n height: number;\n analyser: AnalyserNode;\n}) {\n const [barPeaks] = useState(() => new Array(NUM_BARS).fill(0));\n const [barPeakFrames] = useState(() => new Array(NUM_BARS).fill(0));\n const bufferLength = analyser.frequencyBinCount;\n\n const octaveBuckets = useMemo(() => {\n return octaveBucketsForBufferLength(bufferLength);\n }, [bufferLength]);\n\n const dataArray = useMemo(() => {\n return new Uint8Array(bufferLength);\n }, [bufferLength]);\n\n const paintBar = usePaintBar({ height, renderHeight });\n\n return useCallback(\n (canvasCtx: CanvasRenderingContext2D) => {\n analyser.getByteFrequencyData(dataArray);\n const heightMultiplier = renderHeight / 256;\n const xOffset = BAR_WIDTH + PIXEL_DENSITY; // Bar width, plus a pixel of spacing to the right.\n for (let j = 0; j < NUM_BARS - 1; j++) {\n const start = octaveBuckets[j];\n const end = octaveBuckets[j + 1];\n let amplitude = 0;\n for (let k = start; k < end; k++) {\n amplitude += dataArray[k];\n }\n amplitude /= end - start;\n\n // The drop rate should probably be normalized to the rendering FPS, for now assume 60 FPS\n let barPeak =\n barPeaks[j] - BAR_PEAK_DROP_RATE * Math.pow(barPeakFrames[j], 2);\n if (barPeak < amplitude) {\n barPeak = amplitude;\n barPeakFrames[j] = 0;\n } else {\n barPeakFrames[j] += 1;\n }\n barPeaks[j] = barPeak;\n\n paintBar(\n canvasCtx,\n j * xOffset,\n amplitude * heightMultiplier,\n barPeak * heightMultiplier\n );\n }\n },\n [\n analyser,\n barPeakFrames,\n barPeaks,\n dataArray,\n octaveBuckets,\n paintBar,\n renderHeight,\n ]\n );\n}\n","import { useMemo, useCallback, useState, useLayoutEffect } from \"react\";\n\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\nimport { usePaintOscilloscopeFrame } from \"./useOscilloscopeVisualizer\";\nimport { usePaintBarFrame, usePaintBar } from \"./useBarVisualizer\";\nimport { VISUALIZERS, MEDIA_STATUS } from \"../constants\";\n\nconst PIXEL_DENSITY = 2;\n\ntype Props = {\n analyser: AnalyserNode;\n};\n\n// Pre-render the background grid\nfunction preRenderBg(\n width: number,\n height: number,\n bgColor: string,\n fgColor: string,\n windowShade: boolean\n): HTMLCanvasElement {\n // Off-screen canvas for pre-rendering the background\n const bgCanvas = document.createElement(\"canvas\");\n bgCanvas.width = width;\n bgCanvas.height = height;\n const distance = 2 * PIXEL_DENSITY;\n\n const bgCanvasCtx = bgCanvas.getContext(\"2d\");\n if (bgCanvasCtx == null) {\n throw new Error(\"Could not construct canvas context\");\n }\n bgCanvasCtx.fillStyle = bgColor;\n bgCanvasCtx.fillRect(0, 0, width, height);\n if (!windowShade) {\n bgCanvasCtx.fillStyle = fgColor;\n for (let x = 0; x < width; x += distance) {\n for (let y = PIXEL_DENSITY; y < height; y += distance) {\n bgCanvasCtx.fillRect(x, y, PIXEL_DENSITY, PIXEL_DENSITY);\n }\n }\n }\n return bgCanvas;\n}\n\nfunction Visualizer({ analyser }: Props) {\n useLayoutEffect(() => {\n analyser.fftSize = 2048;\n }, [analyser.fftSize]);\n const colors = useTypedSelector(Selectors.getSkinColors);\n const style = useTypedSelector(Selectors.getVisualizerStyle);\n const status = useTypedSelector(Selectors.getMediaStatus);\n const getWindowShade = useTypedSelector(Selectors.getWindowShade);\n const dummyVizData = useTypedSelector(Selectors.getDummyVizData);\n\n const toggleVisualizerStyle = useActionCreator(Actions.toggleVisualizerStyle);\n const windowShade = getWindowShade(\"main\");\n const renderWidth = windowShade ? 38 : 76;\n const renderHeight = windowShade ? 5 : 16;\n\n const width = renderWidth * PIXEL_DENSITY;\n const height = renderHeight * PIXEL_DENSITY;\n\n const bgCanvas = useMemo(() => {\n return preRenderBg(\n width,\n height,\n colors[0],\n colors[1],\n Boolean(windowShade)\n );\n }, [colors, height, width, windowShade]);\n\n const paintOscilloscopeFrame = usePaintOscilloscopeFrame({\n analyser,\n height,\n width,\n renderWidth,\n });\n const paintBarFrame = usePaintBarFrame({\n analyser,\n height,\n renderHeight,\n });\n const paintBar = usePaintBar({ height, renderHeight });\n\n const paintFrame = useCallback(\n (canvasCtx: CanvasRenderingContext2D) => {\n if (status !== MEDIA_STATUS.PLAYING) {\n return;\n }\n if (dummyVizData) {\n canvasCtx.drawImage(bgCanvas, 0, 0);\n Object.entries(dummyVizData).forEach(([i, value]) => {\n paintBar(canvasCtx, Number(i), value, -1);\n });\n return;\n }\n switch (style) {\n case VISUALIZERS.OSCILLOSCOPE:\n canvasCtx.drawImage(bgCanvas, 0, 0);\n paintOscilloscopeFrame(canvasCtx);\n break;\n case VISUALIZERS.BAR:\n canvasCtx.drawImage(bgCanvas, 0, 0);\n paintBarFrame(canvasCtx);\n break;\n default:\n canvasCtx.clearRect(0, 0, width, height);\n }\n },\n [\n bgCanvas,\n dummyVizData,\n height,\n paintBar,\n paintBarFrame,\n paintOscilloscopeFrame,\n status,\n style,\n width,\n ]\n );\n\n const [canvas, setCanvas] = useState<HTMLCanvasElement | null>(null);\n\n useLayoutEffect(() => {\n if (canvas == null) {\n return;\n }\n const canvasCtx = canvas.getContext(\"2d\");\n if (canvasCtx == null) {\n return;\n }\n canvasCtx.imageSmoothingEnabled = false;\n\n let animationRequest: number | null = null;\n // Kick off the animation loop\n const loop = () => {\n paintFrame(canvasCtx);\n animationRequest = window.requestAnimationFrame(loop);\n };\n loop();\n\n return () => {\n if (animationRequest != null) {\n window.cancelAnimationFrame(animationRequest);\n }\n };\n }, [canvas, paintFrame]);\n\n return (\n <canvas\n id=\"visualizer\"\n ref={setCanvas}\n style={{ width: renderWidth, height: renderHeight }}\n width={width}\n height={height}\n onClick={toggleVisualizerStyle}\n />\n );\n}\n\nexport default Visualizer;\n","import { memo } from \"react\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst ActionButtons = memo(() => {\n const previous = useActionCreator(Actions.previous);\n const play = useActionCreator(Actions.play);\n const pause = useActionCreator(Actions.pause);\n const next = useActionCreator(Actions.next);\n const stop = useActionCreator(Actions.stop);\n return (\n <div className=\"actions\">\n <div id=\"previous\" onClick={previous} title=\"Previous Track\" />\n <div id=\"play\" onClick={play} title=\"Play\" />\n <div id=\"pause\" onClick={pause} title=\"Pause\" />\n <div id=\"stop\" onClick={stop} title=\"Stop\" />\n <div id=\"next\" onClick={next} title=\"Next Track\" />\n </div>\n );\n});\n\nexport default ActionButtons;\n","import * as React from \"react\";\n\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\n\ninterface Props {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport default function Balance({ style, className, id }: Props) {\n const balance = useTypedSelector(Selectors.getBalance);\n const setBalance = useActionCreator(Actions.setBalance);\n const setFocus = useActionCreator(Actions.setFocus);\n const unsetFocus = useActionCreator(Actions.unsetFocus);\n return (\n <input\n id={id}\n className={className}\n type=\"range\"\n min=\"-100\"\n max=\"100\"\n step=\"1\"\n value={balance}\n style={style}\n onChange={(e) => setBalance(Number(e.target.value))}\n onMouseDown={() => setFocus(\"balance\")}\n onMouseUp={unsetFocus}\n title=\"Balance\"\n />\n );\n}\n","import { memo } from \"react\";\n\nimport Balance from \"../Balance\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\nexport const offsetFromBalance = (balance: number): number => {\n const percent = Math.abs(balance) / 100;\n const sprite = Math.floor(percent * 27);\n const offset = sprite * 15;\n return offset;\n};\n\nconst MainBalance = memo(() => {\n const balance = useTypedSelector(Selectors.getBalance);\n return (\n <Balance\n id=\"balance\"\n style={{ backgroundPosition: `0 -${offsetFromBalance(balance)}px` }}\n />\n );\n});\n\nexport default MainBalance;\n","import { memo } from \"react\";\nimport ClickedDiv from \"../ClickedDiv\";\nimport { useActionCreator } from \"../../hooks\";\n\nimport * as Actions from \"../../actionCreators\";\n\nconst Close = memo(() => {\n const close = useActionCreator(Actions.close);\n return <ClickedDiv id=\"close\" onClick={close} title=\"Close\" />;\n});\n\nexport default Close;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Actions from \"../../actionCreators\";\nimport { Action, Thunk } from \"../../types\";\nimport OptionsContextMenu from \"../OptionsContextMenu\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\nimport * as Selectors from \"../../selectors\";\n\nfunction setFocusDouble(): Action {\n return Actions.setFocus(\"double\");\n}\n\nfunction mouseUp(): Thunk {\n return (dispatch) => {\n dispatch(Actions.toggleDoubleSizeMode());\n dispatch(Actions.unsetFocus());\n };\n}\n\nconst ClutterBar = memo(() => {\n const handleMouseDown = useActionCreator(setFocusDouble);\n const handleMouseUp = useActionCreator(mouseUp);\n const doubled = useTypedSelector(Selectors.getDoubled);\n return (\n <div id=\"clutter-bar\">\n <ContextMenuTarget bottom renderMenu={() => <OptionsContextMenu />}>\n <div id=\"button-o\" />\n </ContextMenuTarget>\n <div id=\"button-a\" />\n <div id=\"button-i\" />\n <div\n title={\"Toggle Doublesize Mode\"}\n id=\"button-d\"\n className={classnames({ selected: doubled })}\n onMouseUp={handleMouseUp}\n onMouseDown={handleMouseDown}\n />\n <div id=\"button-v\" />\n </div>\n );\n});\n\nexport default ClutterBar;\n","import { memo } from \"react\";\n\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst Eject = memo(() => {\n const openMediaFileDialog = useActionCreator(Actions.openMediaFileDialog);\n return <div id=\"eject\" onClick={openMediaFileDialog} title=\"Open File(s)\" />;\n});\n\nexport default Eject;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\n\nfunction toggleEqualizer() {\n return Actions.toggleWindow(\"equalizer\");\n}\n\nconst EqToggleButton = memo(() => {\n const handleClick = useActionCreator(toggleEqualizer);\n const windowOpen = useTypedSelector(Selectors.getWindowOpen)(\"equalizer\");\n return (\n <div\n id=\"equalizer-button\"\n className={classnames({ selected: windowOpen })}\n onClick={handleClick}\n title=\"Toggle Graphical Equalizer\"\n />\n );\n});\n\nexport default EqToggleButton;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nfunction togglePlaylist() {\n return Actions.toggleWindow(\"playlist\");\n}\n\nconst PlaylistToggleButton = memo(() => {\n const selected = useTypedSelector(Selectors.getWindowOpen)(\"playlist\");\n const handleClick = useActionCreator(togglePlaylist);\n return (\n <div\n id=\"playlist-button\"\n className={classnames({ selected })}\n onClick={handleClick}\n title=\"Toggle Playlist Editor\"\n />\n );\n});\n\nexport default PlaylistToggleButton;\n","import { memo, Fragment } from \"react\";\nimport Character from \"./Character\";\n\ninterface Props {\n children: string;\n}\n\nconst CharacterString = memo((props: Props) => {\n const text = `${props.children}` || \"\";\n const chars = text.split(\"\");\n return (\n <Fragment>\n {chars.map((character, index) => (\n <Character key={index + character}>{character}</Character>\n ))}\n </Fragment>\n );\n});\n\nexport default CharacterString;\n","import { memo } from \"react\";\n\nimport CharacterString from \"../CharacterString\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\nconst Kbps = memo(() => {\n const kbps = useTypedSelector(Selectors.getKbps);\n return (\n <div id=\"kbps\">\n <CharacterString>{kbps || \"\"}</CharacterString>\n </div>\n );\n});\n\nexport default Kbps;\n","import { memo } from \"react\";\n\nimport CharacterString from \"../CharacterString\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\nconst Khz = memo(() => {\n const khz = useTypedSelector(Selectors.getKhz);\n return (\n <div id=\"khz\">\n <CharacterString>{khz || \"\"}</CharacterString>\n </div>\n );\n});\n\nexport default Khz;\n","// Single line text display that can animate and hold multiple registers\n// Knows how to display various modes like tracking, volume, balance, etc.\nimport * as React from \"react\";\nimport CharacterString from \"../CharacterString\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nconst SEPARATOR = \" *** \";\n\nconst CHAR_WIDTH = 5;\nconst MARQUEE_MAX_LENGTH = 31;\n\n// Always positive modulus\nexport const mod = (n: number, m: number): number => ((n % m) + m) % m;\n\nconst isLong = (text: string): boolean => text.length >= MARQUEE_MAX_LENGTH;\n\n// Given text and step, how many pixels should it be shifted?\nexport const stepOffset = (\n text: string,\n step: number,\n pixels: number\n): number => {\n if (!isLong(text)) {\n return 0;\n }\n\n const stepOffsetWidth = step * CHAR_WIDTH; // Steps move one char at a time\n const offset = stepOffsetWidth + pixels;\n const stringLength = (text.length + SEPARATOR.length) * CHAR_WIDTH;\n\n return mod(offset, stringLength);\n};\n\n// Format an int as pixels\nexport const pixelUnits = (pixels: number): string => `${pixels}px`;\n\n// If text is wider than the marquee, it needs to loop\nexport const loopText = (text: string): string =>\n isLong(text)\n ? `${text}${SEPARATOR}${text}`\n : text.padEnd(MARQUEE_MAX_LENGTH, \" \");\n\ninterface UseStepperArgs {\n step: () => void;\n dragging: boolean;\n}\n\n// Call `step` every second, except when dragging. Resume stepping 1 second after dragging ceases.\nfunction useStepper({ step, dragging }: UseStepperArgs): void {\n const [stepping, setStepping] = React.useState(true);\n React.useEffect(() => {\n if (stepping === false) {\n return;\n }\n const stepHandle = setInterval(step, 220);\n return () => clearInterval(stepHandle);\n }, [step, stepping]);\n\n React.useEffect(() => {\n if (dragging) {\n setStepping(false);\n return;\n }\n const steppingTimeout = window.setTimeout(() => {\n setStepping(true);\n }, 1000);\n return () => {\n window.clearTimeout(steppingTimeout);\n };\n }, [dragging]);\n}\n\n// When user calls `handleMouseDown`, and moves the mouse, `dragOffset` will update as they drag.\nfunction useDragX() {\n const [mouseDownX, setMouseDownX] = React.useState<number | null>(null);\n const [dragOffset, setDragOffset] = React.useState(0);\n\n React.useEffect(() => {\n if (mouseDownX == null) {\n return;\n }\n const xStart = mouseDownX;\n const handleMouseMove = (ee: MouseEvent) => {\n const diff = ee.clientX - xStart;\n setDragOffset(-diff);\n };\n\n // TODO: Use `once` or something instead of this flag nonsense\n let cleanedUp = false;\n const handleMouseUp = () => {\n if (cleanedUp) {\n return;\n }\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseUp\", handleMouseUp);\n setMouseDownX(null);\n cleanedUp = true;\n };\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n\n return handleMouseUp;\n }, [mouseDownX]);\n\n const handleMouseDown = React.useCallback(\n (e: React.MouseEvent<HTMLDivElement>): void => {\n setMouseDownX(e.clientX);\n },\n []\n );\n\n return { handleMouseDown, dragOffset, dragging: mouseDownX != null };\n}\n\nconst Marquee = React.memo(() => {\n const text = useTypedSelector(Selectors.getMarqueeText);\n const doubled = useTypedSelector(Selectors.getDoubled);\n const marqueeStep = useTypedSelector(Selectors.getMarqueeStep);\n const stepMarquee = useActionCreator(Actions.stepMarquee);\n const { handleMouseDown, dragOffset, dragging } = useDragX();\n const offset = stepOffset(text, marqueeStep, dragOffset);\n const offsetPixels = pixelUnits(-offset);\n\n useStepper({ step: stepMarquee, dragging });\n\n return (\n <div\n id=\"marquee\"\n className=\"text\"\n onMouseDown={handleMouseDown}\n title=\"Song Title\"\n >\n <div\n style={{\n whiteSpace: \"nowrap\",\n willChange: \"transform\",\n transform: `translateX(${offsetPixels})`,\n }}\n // Force the DOM node to be recreated when the doubled size changes.\n // This works around a Chrome browser bug where the `will-change: transform;`\n // on this node seems to cause a change to the `image-rendering:\n // pixelated;` which we inherit from `#webamp` not to be respected.\n key={doubled ? \"doubled\" : \"not-doubled\"}\n >\n <CharacterString>{loopText(text)}</CharacterString>\n </div>\n </div>\n );\n});\n\nexport default Marquee;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\nconst MonoStereo = memo(() => {\n const channels = useTypedSelector(Selectors.getChannels);\n return (\n <div className=\"mono-stereo\">\n <div id=\"stereo\" className={classnames({ selected: channels === 2 })} />\n <div id=\"mono\" className={classnames({ selected: channels === 1 })} />\n </div>\n );\n});\n\nexport default MonoStereo;\n","import { memo, useCallback } from \"react\";\n\nimport {\n SEEK_TO_PERCENT_COMPLETE,\n SET_FOCUS,\n UNSET_FOCUS,\n SET_SCRUB_POSITION,\n} from \"../../actionTypes\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector, useTypedDispatch } from \"../../hooks\";\n\nfunction usePosition() {\n const duration = useTypedSelector(Selectors.getDuration);\n const timeElapsed = useTypedSelector(Selectors.getTimeElapsed);\n const position = duration ? (Math.floor(timeElapsed) / duration) * 100 : 0;\n const scrubPosition = useTypedSelector(Selectors.getUserInputScrubPosition);\n const userInputFocus = useTypedSelector(Selectors.getUserInputFocus);\n\n const displayedPosition =\n userInputFocus === \"position\" ? scrubPosition : position;\n\n return [position, displayedPosition];\n}\n\nconst Position = memo(() => {\n const [position, displayedPosition] = usePosition();\n const dispatch = useTypedDispatch();\n\n const seekToPercentComplete = useCallback(\n (e) => {\n dispatch({\n type: SEEK_TO_PERCENT_COMPLETE,\n percent: Number((e.target as HTMLInputElement).value),\n });\n dispatch({ type: UNSET_FOCUS });\n },\n [dispatch]\n );\n\n const setPosition = useCallback(\n (e) => {\n dispatch({ type: SET_FOCUS, input: \"position\" });\n dispatch({\n type: SET_SCRUB_POSITION,\n position: Number((e.target as HTMLInputElement).value),\n });\n },\n [dispatch]\n );\n\n // In shade mode, the position slider shows up differently depending on if\n // it's near the start, middle or end of its progress\n let className = \"\";\n if (position <= 33) {\n className = \"left\";\n } else if (position >= 66) {\n className = \"right\";\n }\n\n return (\n <input\n id=\"position\"\n className={className}\n type=\"range\"\n min=\"0\"\n max=\"100\"\n step=\"1\"\n value={displayedPosition}\n onInput={setPosition}\n onChange={\n () => {} /* React complains without this, can probably rename onInput to onChange */\n }\n onMouseUp={seekToPercentComplete}\n onMouseDown={setPosition}\n title=\"Seeking Bar\"\n />\n );\n});\n\nexport default Position;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport ContextMenuWraper from \"../ContextMenuWrapper\";\nimport { Node } from \"../ContextMenu\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nconst Repeat = memo(() => {\n const repeat = useTypedSelector(Selectors.getRepeat);\n const handleClick = useActionCreator(Actions.toggleRepeat);\n return (\n <ContextMenuWraper\n renderContents={() => (\n <Node\n checked={repeat}\n label=\"Repeat\"\n onClick={handleClick}\n hotkey=\"(R)\"\n />\n )}\n >\n <div\n id=\"repeat\"\n className={classnames({ selected: repeat })}\n onClick={handleClick}\n title=\"Toggle Repeat\"\n />\n </ContextMenuWraper>\n );\n});\n\nexport default Repeat;\n","import { memo } from \"react\";\nimport ClickedDiv from \"../ClickedDiv\";\n\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst Shade = memo(() => {\n const handleClick = useActionCreator(Actions.toggleMainWindowShadeMode);\n return (\n <ClickedDiv\n id=\"shade\"\n onMouseDown={handleClick}\n onDoubleClick={(e) => e.stopPropagation()}\n title=\"Toggle Windowshade Mode\"\n />\n );\n});\n\nexport default Shade;\n","import { memo } from \"react\";\nimport ClickedDiv from \"../ClickedDiv\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst Minimize = memo(() => {\n const minimize = useActionCreator(Actions.minimize);\n return <ClickedDiv id=\"minimize\" title=\"Minimize\" onClick={minimize} />;\n});\n\nexport default Minimize;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport ContextMenuWraper from \"../ContextMenuWrapper\";\nimport { Node } from \"../ContextMenu\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nconst Shuffle = memo(() => {\n const shuffle = useTypedSelector(Selectors.getShuffle);\n const handleClick = useActionCreator(Actions.toggleShuffle);\n return (\n <ContextMenuWraper\n renderContents={() => (\n <Node\n checked={shuffle}\n label=\"Shuffle\"\n onClick={handleClick}\n hotkey=\"(S)\"\n />\n )}\n >\n <div\n id=\"shuffle\"\n className={classnames({ selected: shuffle })}\n onClick={handleClick}\n title=\"Toggle Shuffle\"\n />\n </ContextMenuWraper>\n );\n});\n\nexport default Shuffle;\n","import { memo } from \"react\";\nimport * as Utils from \"../../utils\";\n\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { TIME_MODE } from \"../../constants\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\n\nconst Time = memo(() => {\n const toggleTimeMode = useActionCreator(Actions.toggleTimeMode);\n const timeElapsed = useTypedSelector(Selectors.getTimeElapsed);\n const duration = useTypedSelector(Selectors.getDuration) || 0;\n const timeMode = useTypedSelector(Selectors.getTimeMode);\n const seconds =\n timeMode === TIME_MODE.ELAPSED ? timeElapsed : duration - timeElapsed;\n\n const timeObj = Utils.getTimeObj(seconds);\n return (\n <div id=\"time\" onClick={toggleTimeMode} className=\"countdown\">\n {timeMode === TIME_MODE.REMAINING && <div id=\"minus-sign\" />}\n <div\n id=\"minute-first-digit\"\n className={`digit digit-${timeObj.minutesFirstDigit}`}\n />\n <div\n id=\"minute-second-digit\"\n className={`digit digit-${timeObj.minutesSecondDigit}`}\n />\n <div\n id=\"second-first-digit\"\n className={`digit digit-${timeObj.secondsFirstDigit}`}\n />\n <div\n id=\"second-second-digit\"\n className={`digit digit-${timeObj.secondsSecondDigit}`}\n />\n </div>\n );\n});\n\nexport default Time;\n","import * as React from \"react\";\nimport * as Actions from \"../actionCreators\";\nimport * as Selectors from \"../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\n\ninterface Props {\n id?: string;\n style?: React.CSSProperties;\n className?: string;\n}\n\nexport default function Volume({ id, style, className }: Props) {\n const volume = useTypedSelector(Selectors.getVolume);\n const setFocus = useActionCreator(Actions.setFocus);\n const unsetFocus = useActionCreator(Actions.unsetFocus);\n const setVolume = useActionCreator(Actions.setVolume);\n\n return (\n <input\n id={id}\n type=\"range\"\n min=\"0\"\n max=\"100\"\n step=\"1\"\n value={volume}\n style={style}\n className={className}\n onChange={(e) => setVolume(Number(e.target.value))}\n onMouseDown={() => setFocus(\"volume\")}\n onMouseUp={unsetFocus}\n title=\"Volume Bar\"\n />\n );\n}\n","import { memo } from \"react\";\nimport * as Selectors from \"../../selectors\";\n\nimport Volume from \"../Volume\";\nimport { useTypedSelector } from \"../../hooks\";\n\nconst MainVolume = memo(() => {\n const volume = useTypedSelector(Selectors.getVolume);\n const percent = volume / 100;\n const sprite = Math.round(percent * 28);\n const offset = (sprite - 1) * 15;\n\n const style = {\n backgroundPosition: `0 -${offset}px`,\n };\n return (\n <div id=\"volume\" style={style}>\n <Volume />\n </div>\n );\n});\n\nexport default MainVolume;\n","import * as React from \"react\";\nimport classnames from \"classnames\";\nimport { WINDOWS, MEDIA_STATUS, LOAD_STYLE } from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\n\nimport DropTarget from \"../DropTarget\";\nimport MiniTime from \"../MiniTime\";\n\nimport ClickedDiv from \"../ClickedDiv\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport Visualizer from \"../Visualizer\";\nimport ActionButtons from \"./ActionButtons\";\nimport MainBalance from \"./MainBalance\";\nimport Close from \"./Close\";\nimport ClutterBar from \"./ClutterBar\";\nimport MainContextMenu from \"./MainContextMenu\";\nimport Eject from \"./Eject\";\nimport EqToggleButton from \"./EqToggleButton\";\nimport PlaylistToggleButton from \"./PlaylistToggleButton\";\nimport Kbps from \"./Kbps\";\nimport Khz from \"./Khz\";\nimport Marquee from \"./Marquee\";\nimport MonoStereo from \"./MonoStereo\";\nimport Position from \"./Position\";\nimport Repeat from \"./Repeat\";\nimport Shade from \"./Shade\";\nimport Minimize from \"./Minimize\";\nimport Shuffle from \"./Shuffle\";\nimport Time from \"./Time\";\nimport MainVolume from \"./MainVolume\";\nimport * as Selectors from \"../../selectors\";\n\nimport \"../../../css/main-window.css\";\nimport { FilePicker } from \"../../types\";\nimport FocusTarget from \"../FocusTarget\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\n\ninterface Props {\n analyser: AnalyserNode;\n filePickers: FilePicker[];\n}\n\nfunction loadMediaAndPlay(e: React.DragEvent<HTMLDivElement>) {\n return Actions.loadMedia(e, LOAD_STYLE.PLAY);\n}\n\nconst MainWindow = React.memo(({ analyser, filePickers }: Props) => {\n const mainShade = useTypedSelector(Selectors.getWindowShade)(\"main\");\n const status = useTypedSelector(Selectors.getMediaStatus);\n const focused = useTypedSelector(Selectors.getFocusedWindow);\n const loading = useTypedSelector(Selectors.getLoading);\n const doubled = useTypedSelector(Selectors.getDoubled);\n const llama = useTypedSelector(Selectors.getLlamaMode);\n const working = useTypedSelector(Selectors.getWorking);\n\n const className = classnames({\n window: true,\n play: status === MEDIA_STATUS.PLAYING,\n stop: status === MEDIA_STATUS.STOPPED,\n pause: status === MEDIA_STATUS.PAUSED,\n selected: focused === WINDOWS.MAIN,\n shade: mainShade,\n draggable: true,\n loading,\n doubled,\n llama,\n });\n\n const toggleMainWindowShadeMode = useActionCreator(\n Actions.toggleMainWindowShadeMode\n );\n const scrollVolume = useActionCreator(Actions.scrollVolume);\n const loadMedia = useActionCreator(loadMediaAndPlay);\n\n return (\n <DropTarget\n id=\"main-window\"\n windowId={WINDOWS.MAIN}\n className={className}\n handleDrop={loadMedia}\n onWheel={scrollVolume}\n >\n <FocusTarget windowId={WINDOWS.MAIN}>\n <div\n id=\"title-bar\"\n className=\"selected draggable\"\n onDoubleClick={toggleMainWindowShadeMode}\n >\n <ContextMenuTarget\n id=\"option-context\"\n bottom\n renderMenu={() => <MainContextMenu filePickers={filePickers} />}\n >\n <ClickedDiv id=\"option\" title=\"Winamp Menu\" />\n </ContextMenuTarget>\n {mainShade && <MiniTime />}\n <Minimize />\n <Shade />\n <Close />\n </div>\n <div className=\"status\">\n <ClutterBar />\n {!working && <div id=\"play-pause\" />}\n <div\n id=\"work-indicator\"\n className={classnames({ selected: working })}\n />\n <Time />\n </div>\n <Visualizer\n // @ts-ignore Visualizer is not typed yet\n analyser={analyser}\n />\n <div className=\"media-info\">\n <Marquee />\n <Kbps />\n <Khz />\n <MonoStereo />\n </div>\n <MainVolume />\n <MainBalance />\n <div className=\"windows\">\n <EqToggleButton />\n <PlaylistToggleButton />\n </div>\n <Position />\n <ActionButtons />\n <Eject />\n <div className=\"shuffle-repeat\">\n <Shuffle />\n <Repeat />\n </div>\n <a\n id=\"about\"\n target=\"_blank\"\n href=\"https://webamp.org/about\"\n title=\"About\"\n />\n </FocusTarget>\n </DropTarget>\n );\n});\n\nexport default MainWindow;\n","import ResizeTarget from \"../ResizeTarget\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\ntype Props = {\n widthOnly?: boolean;\n};\n\nfunction PlaylistResizeTarget({ widthOnly }: Props) {\n const windowSize = useTypedSelector(Selectors.getWindowSize);\n const setWindowSize = useActionCreator(Actions.setWindowSize);\n const currentSize = windowSize(\"playlist\");\n\n return (\n <ResizeTarget\n currentSize={currentSize}\n id=\"playlist-resize-target\"\n setWindowSize={(size) => {\n setWindowSize(\"playlist\", size);\n }}\n widthOnly={widthOnly}\n />\n );\n}\nexport default PlaylistResizeTarget;\n","import { useMemo } from \"react\";\nimport classnames from \"classnames\";\nimport { getTimeStr } from \"../../utils\";\nimport * as Selectors from \"../../selectors\";\n\nimport {\n WINDOWS,\n WINDOW_RESIZE_SEGMENT_WIDTH,\n WINDOW_WIDTH,\n CHARACTER_WIDTH,\n UTF8_ELLIPSIS,\n} from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\nimport CharacterString from \"../CharacterString\";\nimport PlaylistResizeTarget from \"./PlaylistResizeTarget\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nfunction PlaylistShade() {\n const focused = useTypedSelector(Selectors.getFocusedWindow);\n const getWindowSize = useTypedSelector(Selectors.getWindowSize);\n const playlistSize = getWindowSize(\"playlist\");\n const duration = useTypedSelector(Selectors.getDuration);\n const name = useTypedSelector(Selectors.getMinimalMediaText);\n\n const closeWindow = useActionCreator(Actions.closeWindow);\n const toggleShade = useActionCreator(Actions.togglePlaylistShadeMode);\n const focusWindow = useActionCreator(Actions.setFocusedWindow);\n\n const addedWidth = playlistSize[0] * WINDOW_RESIZE_SEGMENT_WIDTH;\n\n const trimmedName = useMemo(() => {\n if (name == null) {\n return \"[No file]\";\n }\n\n const MIN_NAME_WIDTH = 205;\n\n const nameLength = (MIN_NAME_WIDTH + addedWidth) / CHARACTER_WIDTH;\n return name.length > nameLength\n ? name.slice(0, nameLength - 1) + UTF8_ELLIPSIS\n : name;\n }, [addedWidth, name]);\n\n const time = useMemo(() => {\n return name == null ? \"\" : getTimeStr(duration);\n }, [duration, name]);\n\n return (\n <div\n id=\"playlist-window-shade\"\n className={classnames(\"window\", \"draggable\", {\n selected: focused === WINDOWS.PLAYLIST,\n })}\n style={{ width: `${WINDOW_WIDTH + addedWidth}px` }}\n onMouseDown={() => focusWindow(\"playlist\")}\n onDoubleClick={toggleShade}\n >\n <div className=\"left\">\n <div className=\"right draggable\">\n <div id=\"playlist-shade-track-title\">\n <CharacterString>{trimmedName}</CharacterString>\n </div>\n <div id=\"playlist-shade-time\">\n <CharacterString>{time}</CharacterString>\n </div>\n <PlaylistResizeTarget widthOnly />\n <div id=\"playlist-shade-button\" onClick={toggleShade} />\n <div\n id=\"playlist-close-button\"\n onClick={() => closeWindow(\"playlist\")}\n />\n </div>\n </div>\n </div>\n );\n}\n\nexport default PlaylistShade;\n","import { memo, ReactNode } from \"react\";\nimport classnames from \"classnames\";\nimport { useIsHovered } from \"../../hooks\";\n\ninterface Props {\n children: ReactNode;\n}\n\n// We implement hover ourselves, because we hate ourselves and https://stackoverflow.com/a/13259049/1263117\nfunction PlaylistMenuEntry({ children }: Props) {\n const { ref, hover } = useIsHovered();\n return (\n <li ref={ref} className={classnames({ hover })}>\n {children}\n </li>\n );\n}\n\nexport default memo(PlaylistMenuEntry);\n","import { Children, memo, useState, ReactNode, useCallback } from \"react\";\nimport classnames from \"classnames\";\nimport { useOnClickAway } from \"../../hooks\";\n\nimport PlaylistMenuEnry from \"./PlaylistMenuEntry\";\n\ninterface Props {\n id: string;\n children: ReactNode | Array<ReactNode>;\n}\n\ninterface State {\n selected: boolean;\n}\n\nfunction PlaylistMenu(props: Props) {\n const [selected, setSelected] = useState(false);\n\n const [ref, setRef] = useState<Element | null>(null);\n\n const callback = useCallback(() => {\n // If we've clicked on a Context Menu spawed inside this menu, it will\n // register as an external click. However, hiding the menu will remove\n // the Context Menu from the DOM. Therefore, we wait until the next\n // event loop to actually hide ourselves.\n setTimeout(() => {\n // Close the menu\n setSelected(false);\n }, 0);\n }, []);\n\n useOnClickAway(ref, selected ? callback : null);\n\n return (\n <div\n id={props.id}\n className={classnames(\"playlist-menu\", {\n selected,\n })}\n ref={setRef}\n onClick={() => setSelected((selected_) => !selected_)}\n >\n <div className=\"bar\" />\n {selected && (\n <ul>\n {Children.map(props.children, (child, i) => (\n <PlaylistMenuEnry key={i}>{child}</PlaylistMenuEnry>\n ))}\n </ul>\n )}\n </div>\n );\n}\nexport default memo(PlaylistMenu);\n","import * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport PlaylistMenu from \"./PlaylistMenu\";\n\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nconst AddMenu = () => {\n const nextIndex = useTypedSelector(Selectors.getTrackCount);\n const addDirAtIndex = useActionCreator(Actions.addDirAtIndex);\n const addFilesAtIndex = useActionCreator(Actions.addFilesAtIndex);\n const addFilesFromUrl = useActionCreator(Actions.addFilesFromUrl);\n return (\n <PlaylistMenu id=\"playlist-add-menu\">\n <div className=\"add-url\" onClick={() => addFilesFromUrl(nextIndex)} />\n <div className=\"add-dir\" onClick={() => addDirAtIndex(nextIndex)} />\n <div className=\"add-file\" onClick={() => addFilesAtIndex(nextIndex)} />\n </PlaylistMenu>\n );\n};\n\nexport default AddMenu;\n","import * as Actions from \"../../actionCreators\";\nimport PlaylistMenu from \"./PlaylistMenu\";\nimport { useActionCreator } from \"../../hooks\";\n\n/* eslint-disable no-alert */\n\nconst RemoveMenu = () => {\n const removeSelected = useActionCreator(Actions.removeSelectedTracks);\n const removeAll = useActionCreator(Actions.removeAllTracks);\n const crop = useActionCreator(Actions.cropPlaylist);\n return (\n <PlaylistMenu id=\"playlist-remove-menu\">\n <div\n className=\"remove-misc\"\n onClick={() => alert(\"Not supported in Webamp\")}\n />\n <div className=\"remove-all\" onClick={removeAll} />\n <div className=\"crop\" onClick={crop} />\n <div className=\"remove-selected\" onClick={removeSelected} />\n </PlaylistMenu>\n );\n};\n\nexport default RemoveMenu;\n","import PlaylistMenu from \"./PlaylistMenu\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nexport default function SelectionMenu() {\n const invert = useActionCreator(Actions.invertSelection);\n const zero = useActionCreator(Actions.selectZero);\n const all = useActionCreator(Actions.selectAll);\n return (\n <PlaylistMenu id=\"playlist-selection-menu\">\n <div className=\"invert-selection\" onClick={invert} />\n <div className=\"select-zero\" onClick={zero} />\n <div className=\"select-all\" onClick={all} />\n </PlaylistMenu>\n );\n}\n","import * as Actions from \"../../actionCreators\";\n\nimport { Hr, Node } from \"../ContextMenu\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport { useActionCreator } from \"../../hooks\";\n\ninterface DispatchProps {\n sortListByTitle: () => void;\n reverseList: () => void;\n randomizeList: () => void;\n}\n\n/* eslint-disable no-alert */\n/* TODO: This should really be kitty-corner to the upper right hand corner of the MiscMenu */\nexport default function SortContextMenu() {\n const reverseList = useActionCreator(Actions.reverseList);\n const randomizeList = useActionCreator(Actions.randomizeList);\n const sortListByTitle = useActionCreator(Actions.sortListByTitle);\n return (\n <ContextMenuTarget\n style={{ width: \"100%\", height: \"100%\" }}\n top\n renderMenu={() => (\n <>\n <Node label=\"Sort list by title\" onClick={sortListByTitle} />\n <Hr />\n <Node label=\"Reverse list\" onClick={reverseList} />\n <Node label=\"Randomize list\" onClick={randomizeList} />\n </>\n )}\n >\n <div />\n </ContextMenuTarget>\n );\n}\n","import { Node } from \"../ContextMenu\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport * as Actions from \"../../actionCreators\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst MiscOptionsContextMenu = () => {\n const downloadHtmlPlaylist = useActionCreator(Actions.downloadHtmlPlaylist);\n return (\n <ContextMenuTarget\n top\n renderMenu={() => (\n <Node onClick={downloadHtmlPlaylist} label=\"Generate HTML playlist\" />\n )}\n >\n <div />\n </ContextMenuTarget>\n );\n};\n\nexport default MiscOptionsContextMenu;\n","import PlaylistMenu from \"./PlaylistMenu\";\nimport SortContextMenu from \"./SortContextMenu\";\nimport MiscOptionsContextMenu from \"./MiscOptionsContextMenu\";\n\nconst MiscMenu = () => (\n <PlaylistMenu id=\"playlist-misc-menu\">\n <div className=\"sort-list\" onClick={(e) => e.stopPropagation()}>\n <SortContextMenu />\n </div>\n <div\n className=\"file-info\"\n onClick={() => alert(\"Not supported in Webamp\")}\n />\n\n <div className=\"misc-options\" onClick={(e) => e.stopPropagation()}>\n <MiscOptionsContextMenu />\n </div>\n </PlaylistMenu>\n);\n\nexport default MiscMenu;\n","import * as Actions from \"../../actionCreators\";\nimport PlaylistMenu from \"./PlaylistMenu\";\nimport { useActionCreator } from \"../../hooks\";\n\n/* eslint-disable no-alert */\nexport default function ListMenu() {\n const removeAllTracks = useActionCreator(Actions.removeAllTracks);\n const addFilesFromList = useActionCreator(Actions.addFilesFromList);\n const saveFilesToList = useActionCreator(Actions.saveFilesToList);\n return (\n <PlaylistMenu id=\"playlist-list-menu\">\n <div className=\"new-list\" onClick={removeAllTracks} />\n <div className=\"save-list\" onClick={saveFilesToList} />\n <div className=\"load-list\" onClick={addFilesFromList} />\n </PlaylistMenu>\n );\n}\n","import { useMemo } from \"react\";\n\nimport CharacterString from \"../CharacterString\";\nimport * as Actions from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\n// While all the browsers I care about support String.prototype.padEnd,\n// Not all node versions do, and I want tests to pass in Jest...\n// Sigh.\nfunction rightPad(str: string, len: number, fillChar: string): string {\n while (str.length < len) {\n str += fillChar;\n }\n return str;\n}\n\nconst RunningTimeDisplay = () => {\n const runningTimeMessage = useTypedSelector(Actions.getRunningTimeMessage);\n const text = useMemo(() => rightPad(runningTimeMessage, 18, \" \"), [\n runningTimeMessage,\n ]);\n return (\n <div className=\"playlist-running-time-display draggable\">\n {/* This div is probably not strictly needed */}\n <div>\n <CharacterString>{text}</CharacterString>\n </div>\n </div>\n );\n};\n\nexport default RunningTimeDisplay;\n","import { Fragment } from \"react\";\n\nimport * as Actions from \"../../actionCreators\";\n\nimport MiniTime from \"../MiniTime\";\nimport RunningTimeDisplay from \"./RunningTimeDisplay\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst PlaylistWindow = () => {\n const play = useActionCreator(Actions.play);\n const pause = useActionCreator(Actions.pause);\n const stop = useActionCreator(Actions.stop);\n const openMediaFileDialog = useActionCreator(Actions.openMediaFileDialog);\n const next = useActionCreator(Actions.next);\n const previous = useActionCreator(Actions.previous);\n return (\n <Fragment>\n <RunningTimeDisplay />\n <div className=\"playlist-action-buttons\">\n <div className=\"playlist-previous-button\" onClick={previous} />\n <div className=\"playlist-play-button\" onClick={play} />\n <div className=\"playlist-pause-button\" onClick={pause} />\n <div className=\"playlist-stop-button\" onClick={stop} />\n <div className=\"playlist-next-button\" onClick={next} />\n <div className=\"playlist-eject-button\" onClick={openMediaFileDialog} />\n </div>\n <MiniTime />\n </Fragment>\n );\n};\nexport default PlaylistWindow;\n","import { useCallback, ReactNode } from \"react\";\nimport classnames from \"classnames\";\nimport {\n CLICKED_TRACK,\n CTRL_CLICKED_TRACK,\n SHIFT_CLICKED_TRACK,\n} from \"../../actionTypes\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport {\n useTypedSelector,\n useActionCreator,\n useTypedDispatch,\n} from \"../../hooks\";\n\ninterface Props {\n id: number;\n index: number;\n handleMoveClick: (e: React.MouseEvent<HTMLDivElement>) => void;\n children: ReactNode;\n}\n\nfunction TrackCell({ children, handleMoveClick, index, id }: Props) {\n const skinPlaylistStyle = useTypedSelector(Selectors.getSkinPlaylistStyle);\n const selectedTrackIds = useTypedSelector(Selectors.getSelectedTrackIds);\n const currentTrackId = useTypedSelector(Selectors.getCurrentTrackId);\n const selected = selectedTrackIds.has(id);\n const current = currentTrackId === id;\n\n const dispatch = useTypedDispatch();\n const playTrackNow = useActionCreator(Actions.playTrackNow);\n\n const onMouseDown = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (e.shiftKey) {\n e.preventDefault();\n dispatch({ type: SHIFT_CLICKED_TRACK, index });\n return;\n } else if (e.metaKey || e.ctrlKey) {\n e.preventDefault();\n dispatch({ type: CTRL_CLICKED_TRACK, index });\n return;\n }\n\n if (!selected) {\n dispatch({ type: CLICKED_TRACK, index });\n }\n\n handleMoveClick(e);\n },\n [dispatch, handleMoveClick, index, selected]\n );\n\n const style: React.CSSProperties = {\n backgroundColor: selected ? skinPlaylistStyle.selectedbg : undefined,\n color: current ? skinPlaylistStyle.current : undefined,\n };\n return (\n <div\n className={classnames(\"track-cell\", { selected, current })}\n style={style}\n onClick={(e) => e.stopPropagation()}\n onMouseDown={onMouseDown}\n onContextMenu={(e) => e.preventDefault()}\n onDoubleClick={() => playTrackNow(id)}\n >\n {children}\n </div>\n );\n}\n\nexport default TrackCell;\n","import * as Selectors from \"../../selectors\";\nimport { useTypedSelector } from \"../../hooks\";\n\ninterface Props {\n id: number;\n paddedTrackNumber: string;\n}\n\nconst TrackTitle = ({ id, paddedTrackNumber }: Props) => {\n const title = useTypedSelector(Selectors.getTrackDisplayName)(id);\n return (\n <span>\n {paddedTrackNumber}. {title}\n </span>\n );\n};\n\nexport default TrackTitle;\n","import { useState, useEffect } from \"react\";\n\nimport { getTimeStr } from \"../../utils\";\nimport * as Selectors from \"../../selectors\";\nimport { TRACK_HEIGHT } from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\nimport TrackCell from \"./TrackCell\";\nimport TrackTitle from \"./TrackTitle\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nfunction getNumberLength(number: number): number {\n return number.toString().length;\n}\n\nfunction TrackList() {\n const offset = useTypedSelector(Selectors.getScrollOffset);\n const trackIds = useTypedSelector(Selectors.getVisibleTrackIds);\n const tracks = useTypedSelector(Selectors.getTracks);\n const numberOfTracks = useTypedSelector(Selectors.getNumberOfTracks);\n\n const selectZero = useActionCreator(Actions.selectZero);\n const dragSelected = useActionCreator(Actions.dragSelected);\n const scrollPlaylistByDelta = useActionCreator(Actions.scrollPlaylistByDelta);\n\n const [node, setNode] = useState<Element | null>(null);\n const [moving, setMoving] = useState(false);\n const [mouseStartY, setMouseStartY] = useState<number | null>(null);\n\n const _handleMoveClick = (e: React.MouseEvent<HTMLDivElement>) => {\n setMoving(true);\n setMouseStartY(e.clientY);\n };\n\n useEffect(() => {\n if (node == null || mouseStartY == null || moving === false) {\n return;\n }\n const { top, bottom, left, right } = node.getBoundingClientRect();\n let lastDiff = 0;\n const handleMouseMove = (ee: MouseEvent) => {\n const { clientY: y, clientX: x } = ee;\n if (y < top || y > bottom || x < left || x > right) {\n // Mouse is outside the track list\n return;\n }\n const proposedDiff = Math.floor((y - mouseStartY) / TRACK_HEIGHT);\n if (proposedDiff !== lastDiff) {\n const diffDiff = proposedDiff - lastDiff;\n dragSelected(diffDiff);\n lastDiff = proposedDiff;\n }\n };\n\n const handleMouseUp = () => setMoving(false);\n window.addEventListener(\"mouseup\", handleMouseUp);\n window.addEventListener(\"mousemove\", handleMouseMove);\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n // I'm not 100% sure how well this would work if it rebound mid drag, so\n // we'll just pretend it's okay that we have stale values in there.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [moving]);\n\n function _renderTracks(\n format: (id: number, i: number) => JSX.Element | string\n ) {\n return trackIds.map((id, i) => (\n <TrackCell\n key={id}\n id={id}\n index={offset + i}\n handleMoveClick={_handleMoveClick}\n >\n {format(id, i)}\n </TrackCell>\n ));\n }\n\n const maxTrackNumberLength = getNumberLength(numberOfTracks);\n const paddedTrackNumForIndex = (i: number) =>\n (i + 1 + offset).toString().padStart(maxTrackNumberLength, \"\\u00A0\");\n return (\n <div\n ref={setNode}\n className=\"playlist-tracks\"\n style={{ height: \"100%\" }}\n onClick={selectZero}\n onWheel={scrollPlaylistByDelta}\n >\n <div className=\"playlist-track-titles\">\n {_renderTracks((id, i) => (\n <TrackTitle id={id} paddedTrackNumber={paddedTrackNumForIndex(i)} />\n ))}\n </div>\n <div className=\"playlist-track-durations\">\n {_renderTracks((id) => getTimeStr(tracks[id].duration))}\n </div>\n </div>\n );\n}\n\nexport default TrackList;\n","import { memo } from \"react\";\n\n// Here we import the rc-slider class just to get it's type.\n// We expect the Typescript compiler to not actually include this in the bundle.\nimport RcSlider from \"rc-slider\";\n// @ts-ignore\nimport SliderComponent from \"rc-slider/lib/Slider\";\n\nimport {\n getAllTracksAreVisible,\n getPlaylistScrollPosition,\n} from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\n// Here we inform TypeScript to use the default export's type for our partial import.\nconst Slider = SliderComponent as typeof RcSlider;\n\nconst Handle = () => <div className=\"playlist-scrollbar-handle\" />;\n\nconst ScrollBar = () => {\n const playlistScrollPosition = useTypedSelector(getPlaylistScrollPosition);\n const allTracksAreVisible = useTypedSelector(getAllTracksAreVisible);\n const setPlaylistScrollPosition = useActionCreator((position: number) =>\n Actions.setPlaylistScrollPosition(100 - position)\n );\n return (\n <Slider\n className=\"playlist-scrollbar\"\n min={0}\n max={100}\n step={1}\n value={playlistScrollPosition}\n onChange={setPlaylistScrollPosition}\n vertical\n handle={Handle}\n disabled={allTracksAreVisible}\n />\n );\n};\n\nexport default memo(ScrollBar);\n","import { useCallback } from \"react\";\nimport classnames from \"classnames\";\n\nimport { WINDOWS, TRACK_HEIGHT, LOAD_STYLE } from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\n\nimport { clamp } from \"../../utils\";\nimport DropTarget from \"../DropTarget\";\nimport Visualizer from \"../Visualizer\";\nimport PlaylistShade from \"./PlaylistShade\";\nimport AddMenu from \"./AddMenu\";\nimport RemoveMenu from \"./RemoveMenu\";\nimport SelectionMenu from \"./SelectionMenu\";\nimport MiscMenu from \"./MiscMenu\";\nimport ListMenu from \"./ListMenu\";\nimport PlaylistResizeTarget from \"./PlaylistResizeTarget\";\nimport PlaylistActionArea from \"./PlaylistActionArea\";\nimport TrackList from \"./TrackList\";\nimport ScrollBar from \"./ScrollBar\";\n\nimport \"../../../css/playlist-window.css\";\nimport { AppState } from \"../../types\";\nimport FocusTarget from \"../FocusTarget\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\n\ninterface Props {\n analyser: AnalyserNode;\n}\n\nfunction _maxTrackIndex(state: AppState) {\n return state.playlist.trackOrder.length - 1;\n}\n\nfunction PlaylistWindow({ analyser }: Props) {\n const offset = useTypedSelector(Selectors.getScrollOffset);\n const getWindowSize = useTypedSelector(Selectors.getWindowSize);\n const selectedWindow = useTypedSelector(Selectors.getFocusedWindow);\n const getWindowShade = useTypedSelector(Selectors.getWindowShade);\n const getWindowOpen = useTypedSelector(Selectors.getWindowOpen);\n const maxTrackIndex = useTypedSelector(_maxTrackIndex);\n const skinPlaylistStyle = useTypedSelector(Selectors.getSkinPlaylistStyle);\n const getWindowPixelSize = useTypedSelector(Selectors.getWindowPixelSize);\n\n const selected = selectedWindow === WINDOWS.PLAYLIST;\n const playlistShade = Boolean(getWindowShade(WINDOWS.PLAYLIST));\n const playlistSize = getWindowSize(WINDOWS.PLAYLIST);\n const playlistWindowPixelSize = getWindowPixelSize(WINDOWS.PLAYLIST);\n\n const close = useActionCreator(Actions.closeWindow);\n const toggleShade = useActionCreator(Actions.togglePlaylistShadeMode);\n const scrollUpFourTracks = useActionCreator(Actions.scrollUpFourTracks);\n const scrollDownFourTracks = useActionCreator(Actions.scrollDownFourTracks);\n const scrollVolume = useActionCreator(Actions.scrollVolume);\n const loadMedia = useActionCreator(Actions.loadMedia);\n\n const showVisualizer = playlistSize[0] > 2;\n const activateVisualizer = !getWindowOpen(WINDOWS.MAIN);\n\n const handleDrop = useCallback(\n (\n e: React.DragEvent<HTMLDivElement>,\n targetCoords: { x: number; y: number }\n ) => {\n const top = e.clientY - targetCoords.y;\n const atIndex = clamp(\n offset + Math.round((top - 23) / TRACK_HEIGHT),\n 0,\n maxTrackIndex + 1\n );\n loadMedia(e, LOAD_STYLE.NONE, atIndex);\n },\n [loadMedia, maxTrackIndex, offset]\n );\n\n if (playlistShade) {\n return <PlaylistShade />;\n }\n\n const style = {\n color: skinPlaylistStyle.normal,\n backgroundColor: skinPlaylistStyle.normalbg,\n fontFamily: `${skinPlaylistStyle.font}, Arial, sans-serif`,\n height: `${playlistWindowPixelSize.height}px`,\n width: `${playlistWindowPixelSize.width}px`,\n };\n\n const classes = classnames(\"window\", \"draggable\", { selected });\n\n const showSpacers = playlistSize[0] % 2 === 0;\n\n return (\n <FocusTarget windowId={WINDOWS.PLAYLIST}>\n <DropTarget\n id=\"playlist-window\"\n windowId={WINDOWS.PLAYLIST}\n className={classes}\n style={style}\n handleDrop={handleDrop}\n onWheel={scrollVolume}\n >\n <div className=\"playlist-top draggable\" onDoubleClick={toggleShade}>\n <div className=\"playlist-top-left draggable\" />\n {showSpacers && (\n <div className=\"playlist-top-left-spacer draggable\" />\n )}\n <div className=\"playlist-top-left-fill draggable\" />\n <div className=\"playlist-top-title draggable\" />\n {showSpacers && (\n <div className=\"playlist-top-right-spacer draggable\" />\n )}\n <div className=\"playlist-top-right-fill draggable\" />\n <div className=\"playlist-top-right draggable\">\n <div id=\"playlist-shade-button\" onClick={toggleShade} />\n <div\n id=\"playlist-close-button\"\n onClick={() => close(WINDOWS.PLAYLIST)}\n />\n </div>\n </div>\n <div className=\"playlist-middle draggable\">\n <div className=\"playlist-middle-left draggable\" />\n <div className=\"playlist-middle-center\">\n <TrackList />\n </div>\n <div className=\"playlist-middle-right draggable\">\n <ScrollBar />\n </div>\n </div>\n <div className=\"playlist-bottom draggable\">\n <div className=\"playlist-bottom-left draggable\">\n <AddMenu />\n <RemoveMenu />\n <SelectionMenu />\n <MiscMenu />\n </div>\n <div className=\"playlist-bottom-center draggable\" />\n <div className=\"playlist-bottom-right draggable\">\n {showVisualizer && (\n <div className=\"playlist-visualizer\">\n {activateVisualizer && (\n <div className=\"visualizer-wrapper\">\n <Visualizer\n // @ts-ignore Visualizer is not yet typed\n analyser={analyser}\n />\n </div>\n )}\n </div>\n )}\n <PlaylistActionArea />\n <ListMenu />\n <div id=\"playlist-scroll-up-button\" onClick={scrollUpFourTracks} />\n <div\n id=\"playlist-scroll-down-button\"\n onClick={scrollDownFourTracks}\n />\n <PlaylistResizeTarget />\n </div>\n </div>\n </DropTarget>\n </FocusTarget>\n );\n}\n\nexport default PlaylistWindow;\n","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\n/* eslint-disable react/prop-types */\nimport React from 'react';\n\nvar Track = function Track(props) {\n var _ref, _ref2;\n\n var className = props.className,\n included = props.included,\n vertical = props.vertical,\n offset = props.offset,\n length = props.length,\n style = props.style,\n reverse = props.reverse;\n\n var positonStyle = vertical ? (_ref = {}, _defineProperty(_ref, reverse ? 'top' : 'bottom', offset + '%'), _defineProperty(_ref, reverse ? 'bottom' : 'top', 'auto'), _defineProperty(_ref, 'height', length + '%'), _ref) : (_ref2 = {}, _defineProperty(_ref2, reverse ? 'right' : 'left', offset + '%'), _defineProperty(_ref2, reverse ? 'left' : 'right', 'auto'), _defineProperty(_ref2, 'width', length + '%'), _ref2);\n\n var elStyle = _extends({}, style, positonStyle);\n return included ? React.createElement('div', { className: className, style: elStyle }) : null;\n};\n\nexport default Track;","import addDOMEventListener from 'add-dom-event-listener';\nimport ReactDOM from 'react-dom';\nexport default function addEventListenerWrap(target, eventType, cb, option) {\n /* eslint camelcase: 2 */\n var callback = ReactDOM.unstable_batchedUpdates ? function run(e) {\n ReactDOM.unstable_batchedUpdates(cb, e);\n } : cb;\n return addDOMEventListener(target, eventType, callback, option);\n}","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport warning from 'warning';\n\nvar calcPoints = function calcPoints(vertical, marks, dots, step, min, max) {\n warning(dots ? step > 0 : true, '`Slider[step]` should be a positive number in order to make Slider[dots] work.');\n var points = Object.keys(marks).map(parseFloat).sort(function (a, b) {\n return a - b;\n });\n if (dots && step) {\n for (var i = min; i <= max; i += step) {\n if (points.indexOf(i) === -1) {\n points.push(i);\n }\n }\n }\n return points;\n};\n\nvar Steps = function Steps(_ref) {\n var prefixCls = _ref.prefixCls,\n vertical = _ref.vertical,\n reverse = _ref.reverse,\n marks = _ref.marks,\n dots = _ref.dots,\n step = _ref.step,\n included = _ref.included,\n lowerBound = _ref.lowerBound,\n upperBound = _ref.upperBound,\n max = _ref.max,\n min = _ref.min,\n dotStyle = _ref.dotStyle,\n activeDotStyle = _ref.activeDotStyle;\n\n var range = max - min;\n var elements = calcPoints(vertical, marks, dots, step, min, max).map(function (point) {\n var _classNames;\n\n var offset = Math.abs(point - min) / range * 100 + '%';\n\n var isActived = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;\n var style = vertical ? _extends({}, dotStyle, _defineProperty({}, reverse ? 'top' : 'bottom', offset)) : _extends({}, dotStyle, _defineProperty({}, reverse ? 'right' : 'left', offset));\n if (isActived) {\n style = _extends({}, style, activeDotStyle);\n }\n\n var pointClassName = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-dot', true), _defineProperty(_classNames, prefixCls + '-dot-active', isActived), _defineProperty(_classNames, prefixCls + '-dot-reverse', reverse), _classNames));\n\n return React.createElement('span', { className: pointClassName, style: style, key: point });\n });\n\n return React.createElement(\n 'div',\n { className: prefixCls + '-step' },\n elements\n );\n};\n\nSteps.propTypes = {\n prefixCls: PropTypes.string,\n activeDotStyle: PropTypes.object,\n dotStyle: PropTypes.object,\n min: PropTypes.number,\n max: PropTypes.number,\n upperBound: PropTypes.number,\n lowerBound: PropTypes.number,\n included: PropTypes.bool,\n dots: PropTypes.bool,\n step: PropTypes.number,\n marks: PropTypes.object,\n vertical: PropTypes.bool,\n reverse: PropTypes.bool\n};\n\nexport default Steps;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nvar Marks = function Marks(_ref) {\n var className = _ref.className,\n vertical = _ref.vertical,\n reverse = _ref.reverse,\n marks = _ref.marks,\n included = _ref.included,\n upperBound = _ref.upperBound,\n lowerBound = _ref.lowerBound,\n max = _ref.max,\n min = _ref.min,\n onClickLabel = _ref.onClickLabel;\n\n var marksKeys = Object.keys(marks);\n\n var range = max - min;\n var elements = marksKeys.map(parseFloat).sort(function (a, b) {\n return a - b;\n }).map(function (point) {\n var _classNames;\n\n var markPoint = marks[point];\n var markPointIsObject = typeof markPoint === 'object' && !React.isValidElement(markPoint);\n var markLabel = markPointIsObject ? markPoint.label : markPoint;\n if (!markLabel && markLabel !== 0) {\n return null;\n }\n\n var isActive = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;\n var markClassName = classNames((_classNames = {}, _defineProperty(_classNames, className + '-text', true), _defineProperty(_classNames, className + '-text-active', isActive), _classNames));\n\n var bottomStyle = _defineProperty({\n marginBottom: '-50%'\n }, reverse ? 'top' : 'bottom', (point - min) / range * 100 + '%');\n\n var leftStyle = _defineProperty({\n transform: 'translateX(-50%)',\n msTransform: 'translateX(-50%)'\n }, reverse ? 'right' : 'left', reverse ? (point - min / 4) / range * 100 + '%' : (point - min) / range * 100 + '%');\n\n var style = vertical ? bottomStyle : leftStyle;\n var markStyle = markPointIsObject ? _extends({}, style, markPoint.style) : style;\n return React.createElement(\n 'span',\n {\n className: markClassName,\n style: markStyle,\n key: point,\n onMouseDown: function onMouseDown(e) {\n return onClickLabel(e, point);\n },\n onTouchStart: function onTouchStart(e) {\n return onClickLabel(e, point);\n }\n },\n markLabel\n );\n });\n\n return React.createElement(\n 'div',\n { className: className },\n elements\n );\n};\n\nMarks.propTypes = {\n className: PropTypes.string,\n vertical: PropTypes.bool,\n reverse: PropTypes.bool,\n marks: PropTypes.object,\n included: PropTypes.bool,\n upperBound: PropTypes.number,\n lowerBound: PropTypes.number,\n max: PropTypes.number,\n min: PropTypes.number,\n onClickLabel: PropTypes.func\n};\n\nexport default Marks;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport addEventListener from 'rc-util/es/Dom/addEventListener';\n\nvar Handle = function (_React$Component) {\n _inherits(Handle, _React$Component);\n\n function Handle() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Handle);\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 = Handle.__proto__ || Object.getPrototypeOf(Handle)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n clickFocused: false\n }, _this.setHandleRef = function (node) {\n _this.handle = node;\n }, _this.handleMouseUp = function () {\n if (document.activeElement === _this.handle) {\n _this.setClickFocus(true);\n }\n }, _this.handleMouseDown = function () {\n // fix https://github.com/ant-design/ant-design/issues/15324\n _this.focus();\n }, _this.handleBlur = function () {\n _this.setClickFocus(false);\n }, _this.handleKeyDown = function () {\n _this.setClickFocus(false);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Handle, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // mouseup won't trigger if mouse moved out of handle,\n // so we listen on document here.\n this.onMouseUpListener = addEventListener(document, 'mouseup', this.handleMouseUp);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.onMouseUpListener) {\n this.onMouseUpListener.remove();\n }\n }\n }, {\n key: 'setClickFocus',\n value: function setClickFocus(focused) {\n this.setState({ clickFocused: focused });\n }\n }, {\n key: 'clickFocus',\n value: function clickFocus() {\n this.setClickFocus(true);\n this.focus();\n }\n }, {\n key: 'focus',\n value: function focus() {\n this.handle.focus();\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.handle.blur();\n }\n }, {\n key: 'render',\n value: function render() {\n var _ref2, _ref3;\n\n var _props = this.props,\n prefixCls = _props.prefixCls,\n vertical = _props.vertical,\n reverse = _props.reverse,\n offset = _props.offset,\n style = _props.style,\n disabled = _props.disabled,\n min = _props.min,\n max = _props.max,\n value = _props.value,\n tabIndex = _props.tabIndex,\n restProps = _objectWithoutProperties(_props, ['prefixCls', 'vertical', 'reverse', 'offset', 'style', 'disabled', 'min', 'max', 'value', 'tabIndex']);\n\n var className = classNames(this.props.className, _defineProperty({}, prefixCls + '-handle-click-focused', this.state.clickFocused));\n var positionStyle = vertical ? (_ref2 = {}, _defineProperty(_ref2, reverse ? 'top' : 'bottom', offset + '%'), _defineProperty(_ref2, reverse ? 'bottom' : 'top', 'auto'), _defineProperty(_ref2, 'transform', 'translateY(+50%)'), _ref2) : (_ref3 = {}, _defineProperty(_ref3, reverse ? 'right' : 'left', offset + '%'), _defineProperty(_ref3, reverse ? 'left' : 'right', 'auto'), _defineProperty(_ref3, 'transform', 'translateX(' + (reverse ? '+' : '-') + '50%)'), _ref3);\n var elStyle = _extends({}, style, positionStyle);\n\n var _tabIndex = tabIndex || 0;\n if (disabled || tabIndex === null) {\n _tabIndex = null;\n }\n\n return React.createElement('div', _extends({\n ref: this.setHandleRef,\n tabIndex: _tabIndex\n }, restProps, {\n className: className,\n style: elStyle,\n onBlur: this.handleBlur,\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleMouseDown\n\n // aria attribute\n , role: 'slider',\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': value,\n 'aria-disabled': !!disabled\n }));\n }\n }]);\n\n return Handle;\n}(React.Component);\n\nexport default Handle;\n\n\nHandle.propTypes = {\n prefixCls: PropTypes.string,\n className: PropTypes.string,\n vertical: PropTypes.bool,\n offset: PropTypes.number,\n style: PropTypes.object,\n disabled: PropTypes.bool,\n min: PropTypes.number,\n max: PropTypes.number,\n value: PropTypes.number,\n tabIndex: PropTypes.number,\n reverse: PropTypes.bool\n};","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author [email protected]\n */\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n\n /**\n * TAB\n */\n TAB: 9,\n\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n\n /**\n * ENTER\n */\n ENTER: 13,\n\n /**\n * SHIFT\n */\n SHIFT: 16,\n\n /**\n * CTRL\n */\n CTRL: 17,\n\n /**\n * ALT\n */\n ALT: 18,\n\n /**\n * PAUSE\n */\n PAUSE: 19,\n\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n\n /**\n * ESC\n */\n ESC: 27,\n\n /**\n * SPACE\n */\n SPACE: 32,\n\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n\n /**\n * END\n */\n END: 35,\n\n /**\n * HOME\n */\n HOME: 36,\n\n /**\n * LEFT\n */\n LEFT: 37,\n\n /**\n * UP\n */\n UP: 38,\n\n /**\n * RIGHT\n */\n RIGHT: 39,\n\n /**\n * DOWN\n */\n DOWN: 40,\n\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n\n /**\n * INSERT\n */\n INSERT: 45,\n\n /**\n * DELETE\n */\n DELETE: 46,\n\n /**\n * ZERO\n */\n ZERO: 48,\n\n /**\n * ONE\n */\n ONE: 49,\n\n /**\n * TWO\n */\n TWO: 50,\n\n /**\n * THREE\n */\n THREE: 51,\n\n /**\n * FOUR\n */\n FOUR: 52,\n\n /**\n * FIVE\n */\n FIVE: 53,\n\n /**\n * SIX\n */\n SIX: 54,\n\n /**\n * SEVEN\n */\n SEVEN: 55,\n\n /**\n * EIGHT\n */\n EIGHT: 56,\n\n /**\n * NINE\n */\n NINE: 57,\n\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n\n /**\n * A\n */\n A: 65,\n\n /**\n * B\n */\n B: 66,\n\n /**\n * C\n */\n C: 67,\n\n /**\n * D\n */\n D: 68,\n\n /**\n * E\n */\n E: 69,\n\n /**\n * F\n */\n F: 70,\n\n /**\n * G\n */\n G: 71,\n\n /**\n * H\n */\n H: 72,\n\n /**\n * I\n */\n I: 73,\n\n /**\n * J\n */\n J: 74,\n\n /**\n * K\n */\n K: 75,\n\n /**\n * L\n */\n L: 76,\n\n /**\n * M\n */\n M: 77,\n\n /**\n * N\n */\n N: 78,\n\n /**\n * O\n */\n O: 79,\n\n /**\n * P\n */\n P: 80,\n\n /**\n * Q\n */\n Q: 81,\n\n /**\n * R\n */\n R: 82,\n\n /**\n * S\n */\n S: 83,\n\n /**\n * T\n */\n T: 84,\n\n /**\n * U\n */\n U: 85,\n\n /**\n * V\n */\n V: 86,\n\n /**\n * W\n */\n W: 87,\n\n /**\n * X\n */\n X: 88,\n\n /**\n * Y\n */\n Y: 89,\n\n /**\n * Z\n */\n Z: 90,\n\n /**\n * META\n */\n META: 91,\n\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n\n /**\n * F1\n */\n F1: 112,\n\n /**\n * F2\n */\n F2: 113,\n\n /**\n * F3\n */\n F3: 114,\n\n /**\n * F4\n */\n F4: 115,\n\n /**\n * F5\n */\n F5: 116,\n\n /**\n * F6\n */\n F6: 117,\n\n /**\n * F7\n */\n F7: 118,\n\n /**\n * F8\n */\n F8: 119,\n\n /**\n * F9\n */\n F9: 120,\n\n /**\n * F10\n */\n F10: 121,\n\n /**\n * F11\n */\n F11: 122,\n\n /**\n * F12\n */\n F12: 123,\n\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n\n /**\n * DASH\n */\n DASH: 189,\n\n /**\n * EQUALS\n */\n EQUALS: 187,\n\n /**\n * COMMA\n */\n COMMA: 188,\n\n /**\n * PERIOD\n */\n PERIOD: 190,\n\n /**\n * SLASH\n */\n SLASH: 191,\n\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n\n if (e.altKey && !e.ctrlKey || e.metaKey || // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n } // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n\n\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n\n default:\n return true;\n }\n },\n\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n } // Safari sends zero key code for non-latin characters.\n\n\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n\n default:\n return false;\n }\n }\n};\nexport default KeyCode;","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport { findDOMNode } from 'react-dom';\nimport keyCode from 'rc-util/es/KeyCode';\n\nexport function isEventFromHandle(e, handles) {\n try {\n return Object.keys(handles).some(function (key) {\n return e.target === findDOMNode(handles[key]);\n });\n } catch (error) {\n return false;\n }\n}\n\nexport function isValueOutOfRange(value, _ref) {\n var min = _ref.min,\n max = _ref.max;\n\n return value < min || value > max;\n}\n\nexport function isNotTouchEvent(e) {\n return e.touches.length > 1 || e.type.toLowerCase() === 'touchend' && e.touches.length > 0;\n}\n\nexport function getClosestPoint(val, _ref2) {\n var marks = _ref2.marks,\n step = _ref2.step,\n min = _ref2.min,\n max = _ref2.max;\n\n var points = Object.keys(marks).map(parseFloat);\n if (step !== null) {\n var maxSteps = Math.floor((max - min) / step);\n var steps = Math.min((val - min) / step, maxSteps);\n var closestStep = Math.round(steps) * step + min;\n points.push(closestStep);\n }\n var diffs = points.map(function (point) {\n return Math.abs(val - point);\n });\n return points[diffs.indexOf(Math.min.apply(Math, _toConsumableArray(diffs)))];\n}\n\nexport function getPrecision(step) {\n var stepString = step.toString();\n var precision = 0;\n if (stepString.indexOf('.') >= 0) {\n precision = stepString.length - stepString.indexOf('.') - 1;\n }\n return precision;\n}\n\nexport function getMousePosition(vertical, e) {\n return vertical ? e.clientY : e.pageX;\n}\n\nexport function getTouchPosition(vertical, e) {\n return vertical ? e.touches[0].clientY : e.touches[0].pageX;\n}\n\nexport function getHandleCenterPosition(vertical, handle) {\n var coords = handle.getBoundingClientRect();\n return vertical ? coords.top + coords.height * 0.5 : window.pageXOffset + coords.left + coords.width * 0.5;\n}\n\nexport function ensureValueInRange(val, _ref3) {\n var max = _ref3.max,\n min = _ref3.min;\n\n if (val <= min) {\n return min;\n }\n if (val >= max) {\n return max;\n }\n return val;\n}\n\nexport function ensureValuePrecision(val, props) {\n var step = props.step;\n\n var closestPoint = isFinite(getClosestPoint(val, props)) ? getClosestPoint(val, props) : 0; // eslint-disable-line\n return step === null ? closestPoint : parseFloat(closestPoint.toFixed(getPrecision(step)));\n}\n\nexport function pauseEvent(e) {\n e.stopPropagation();\n e.preventDefault();\n}\n\nexport function calculateNextValue(func, value, props) {\n var operations = {\n increase: function increase(a, b) {\n return a + b;\n },\n decrease: function decrease(a, b) {\n return a - b;\n }\n };\n\n var indexToGet = operations[func](Object.keys(props.marks).indexOf(JSON.stringify(value)), 1);\n var keyToGet = Object.keys(props.marks)[indexToGet];\n\n if (props.step) {\n return operations[func](value, props.step);\n } else if (!!Object.keys(props.marks).length && !!props.marks[keyToGet]) {\n return props.marks[keyToGet];\n }\n return value;\n}\n\nexport function getKeyboardValueMutator(e, vertical, reverse) {\n var increase = 'increase';\n var decrease = 'decrease';\n var method = increase;\n switch (e.keyCode) {\n case keyCode.UP:\n method = vertical && reverse ? decrease : increase;break;\n case keyCode.RIGHT:\n method = !vertical && reverse ? decrease : increase;break;\n case keyCode.DOWN:\n method = vertical && reverse ? increase : decrease;break;\n case keyCode.LEFT:\n method = !vertical && reverse ? increase : decrease;break;\n\n case keyCode.END:\n return function (value, props) {\n return props.max;\n };\n case keyCode.HOME:\n return function (value, props) {\n return props.min;\n };\n case keyCode.PAGE_UP:\n return function (value, props) {\n return value + props.step * 2;\n };\n case keyCode.PAGE_DOWN:\n return function (value, props) {\n return value - props.step * 2;\n };\n\n default:\n return undefined;\n }\n return function (value, props) {\n return calculateNextValue(method, value, props);\n };\n}","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _get from 'babel-runtime/helpers/get';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport addEventListener from 'rc-util/es/Dom/addEventListener';\nimport classNames from 'classnames';\nimport warning from 'warning';\nimport Steps from './Steps';\nimport Marks from './Marks';\nimport Handle from '../Handle';\nimport * as utils from '../utils';\n\nfunction noop() {}\n\nexport default function createSlider(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_Component) {\n _inherits(ComponentEnhancer, _Component);\n\n function ComponentEnhancer(props) {\n _classCallCheck(this, ComponentEnhancer);\n\n var _this = _possibleConstructorReturn(this, (ComponentEnhancer.__proto__ || Object.getPrototypeOf(ComponentEnhancer)).call(this, props));\n\n _this.onMouseDown = function (e) {\n if (e.button !== 0) {\n return;\n }\n\n var isVertical = _this.props.vertical;\n var position = utils.getMousePosition(isVertical, e);\n if (!utils.isEventFromHandle(e, _this.handlesRefs)) {\n _this.dragOffset = 0;\n } else {\n var handlePosition = utils.getHandleCenterPosition(isVertical, e.target);\n _this.dragOffset = position - handlePosition;\n position = handlePosition;\n }\n _this.removeDocumentEvents();\n _this.onStart(position);\n _this.addDocumentMouseEvents();\n };\n\n _this.onTouchStart = function (e) {\n if (utils.isNotTouchEvent(e)) return;\n\n var isVertical = _this.props.vertical;\n var position = utils.getTouchPosition(isVertical, e);\n if (!utils.isEventFromHandle(e, _this.handlesRefs)) {\n _this.dragOffset = 0;\n } else {\n var handlePosition = utils.getHandleCenterPosition(isVertical, e.target);\n _this.dragOffset = position - handlePosition;\n position = handlePosition;\n }\n _this.onStart(position);\n _this.addDocumentTouchEvents();\n utils.pauseEvent(e);\n };\n\n _this.onFocus = function (e) {\n var _this$props = _this.props,\n onFocus = _this$props.onFocus,\n vertical = _this$props.vertical;\n\n if (utils.isEventFromHandle(e, _this.handlesRefs)) {\n var handlePosition = utils.getHandleCenterPosition(vertical, e.target);\n _this.dragOffset = 0;\n _this.onStart(handlePosition);\n utils.pauseEvent(e);\n if (onFocus) {\n onFocus(e);\n }\n }\n };\n\n _this.onBlur = function (e) {\n var onBlur = _this.props.onBlur;\n\n _this.onEnd();\n if (onBlur) {\n onBlur(e);\n }\n };\n\n _this.onMouseUp = function () {\n if (_this.handlesRefs[_this.prevMovedHandleIndex]) {\n _this.handlesRefs[_this.prevMovedHandleIndex].clickFocus();\n }\n };\n\n _this.onMouseMove = function (e) {\n if (!_this.sliderRef) {\n _this.onEnd();\n return;\n }\n var position = utils.getMousePosition(_this.props.vertical, e);\n _this.onMove(e, position - _this.dragOffset);\n };\n\n _this.onTouchMove = function (e) {\n if (utils.isNotTouchEvent(e) || !_this.sliderRef) {\n _this.onEnd();\n return;\n }\n\n var position = utils.getTouchPosition(_this.props.vertical, e);\n _this.onMove(e, position - _this.dragOffset);\n };\n\n _this.onKeyDown = function (e) {\n if (_this.sliderRef && utils.isEventFromHandle(e, _this.handlesRefs)) {\n _this.onKeyboard(e);\n }\n };\n\n _this.onClickMarkLabel = function (e, value) {\n e.stopPropagation();\n _this.onChange({ value: value });\n _this.setState({ value: value }, function () {\n return _this.onEnd(true);\n });\n };\n\n _this.saveSlider = function (slider) {\n _this.sliderRef = slider;\n };\n\n var step = props.step,\n max = props.max,\n min = props.min;\n\n var isPointDiffEven = isFinite(max - min) ? (max - min) % step === 0 : true; // eslint-disable-line\n warning(step && Math.floor(step) === step ? isPointDiffEven : true, 'Slider[max] - Slider[min] (%s) should be a multiple of Slider[step] (%s)', max - min, step);\n _this.handlesRefs = {};\n return _this;\n }\n\n _createClass(ComponentEnhancer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Snapshot testing cannot handle refs, so be sure to null-check this.\n this.document = this.sliderRef && this.sliderRef.ownerDocument;\n\n var _props = this.props,\n autoFocus = _props.autoFocus,\n disabled = _props.disabled;\n\n if (autoFocus && !disabled) {\n this.focus();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (_get(ComponentEnhancer.prototype.__proto__ || Object.getPrototypeOf(ComponentEnhancer.prototype), 'componentWillUnmount', this)) _get(ComponentEnhancer.prototype.__proto__ || Object.getPrototypeOf(ComponentEnhancer.prototype), 'componentWillUnmount', this).call(this);\n this.removeDocumentEvents();\n }\n }, {\n key: 'getSliderStart',\n value: function getSliderStart() {\n var slider = this.sliderRef;\n var _props2 = this.props,\n vertical = _props2.vertical,\n reverse = _props2.reverse;\n\n var rect = slider.getBoundingClientRect();\n if (vertical) {\n return reverse ? rect.bottom : rect.top;\n }\n return window.pageXOffset + (reverse ? rect.right : rect.left);\n }\n }, {\n key: 'getSliderLength',\n value: function getSliderLength() {\n var slider = this.sliderRef;\n if (!slider) {\n return 0;\n }\n\n var coords = slider.getBoundingClientRect();\n return this.props.vertical ? coords.height : coords.width;\n }\n }, {\n key: 'addDocumentTouchEvents',\n value: function addDocumentTouchEvents() {\n // just work for Chrome iOS Safari and Android Browser\n this.onTouchMoveListener = addEventListener(this.document, 'touchmove', this.onTouchMove);\n this.onTouchUpListener = addEventListener(this.document, 'touchend', this.onEnd);\n }\n }, {\n key: 'addDocumentMouseEvents',\n value: function addDocumentMouseEvents() {\n this.onMouseMoveListener = addEventListener(this.document, 'mousemove', this.onMouseMove);\n this.onMouseUpListener = addEventListener(this.document, 'mouseup', this.onEnd);\n }\n }, {\n key: 'removeDocumentEvents',\n value: function removeDocumentEvents() {\n /* eslint-disable no-unused-expressions */\n this.onTouchMoveListener && this.onTouchMoveListener.remove();\n this.onTouchUpListener && this.onTouchUpListener.remove();\n\n this.onMouseMoveListener && this.onMouseMoveListener.remove();\n this.onMouseUpListener && this.onMouseUpListener.remove();\n /* eslint-enable no-unused-expressions */\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (!this.props.disabled) {\n this.handlesRefs[0].focus();\n }\n }\n }, {\n key: 'blur',\n value: function blur() {\n var _this2 = this;\n\n if (!this.props.disabled) {\n Object.keys(this.handlesRefs).forEach(function (key) {\n if (_this2.handlesRefs[key] && _this2.handlesRefs[key].blur) {\n _this2.handlesRefs[key].blur();\n }\n });\n }\n }\n }, {\n key: 'calcValue',\n value: function calcValue(offset) {\n var _props3 = this.props,\n vertical = _props3.vertical,\n min = _props3.min,\n max = _props3.max;\n\n var ratio = Math.abs(Math.max(offset, 0) / this.getSliderLength());\n var value = vertical ? (1 - ratio) * (max - min) + min : ratio * (max - min) + min;\n return value;\n }\n }, {\n key: 'calcValueByPos',\n value: function calcValueByPos(position) {\n var sign = this.props.reverse ? -1 : +1;\n var pixelOffset = sign * (position - this.getSliderStart());\n var nextValue = this.trimAlignValue(this.calcValue(pixelOffset));\n return nextValue;\n }\n }, {\n key: 'calcOffset',\n value: function calcOffset(value) {\n var _props4 = this.props,\n min = _props4.min,\n max = _props4.max;\n\n var ratio = (value - min) / (max - min);\n return ratio * 100;\n }\n }, {\n key: 'saveHandle',\n value: function saveHandle(index, handle) {\n this.handlesRefs[index] = handle;\n }\n }, {\n key: 'render',\n value: function render() {\n var _classNames;\n\n var _props5 = this.props,\n prefixCls = _props5.prefixCls,\n className = _props5.className,\n marks = _props5.marks,\n dots = _props5.dots,\n step = _props5.step,\n included = _props5.included,\n disabled = _props5.disabled,\n vertical = _props5.vertical,\n reverse = _props5.reverse,\n min = _props5.min,\n max = _props5.max,\n children = _props5.children,\n maximumTrackStyle = _props5.maximumTrackStyle,\n style = _props5.style,\n railStyle = _props5.railStyle,\n dotStyle = _props5.dotStyle,\n activeDotStyle = _props5.activeDotStyle;\n\n var _get$call = _get(ComponentEnhancer.prototype.__proto__ || Object.getPrototypeOf(ComponentEnhancer.prototype), 'render', this).call(this),\n tracks = _get$call.tracks,\n handles = _get$call.handles;\n\n var sliderClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-with-marks', Object.keys(marks).length), _defineProperty(_classNames, prefixCls + '-disabled', disabled), _defineProperty(_classNames, prefixCls + '-vertical', vertical), _defineProperty(_classNames, className, className), _classNames));\n return React.createElement(\n 'div',\n {\n ref: this.saveSlider,\n className: sliderClassName,\n onTouchStart: disabled ? noop : this.onTouchStart,\n onMouseDown: disabled ? noop : this.onMouseDown,\n onMouseUp: disabled ? noop : this.onMouseUp,\n onKeyDown: disabled ? noop : this.onKeyDown,\n onFocus: disabled ? noop : this.onFocus,\n onBlur: disabled ? noop : this.onBlur,\n style: style\n },\n React.createElement('div', {\n className: prefixCls + '-rail',\n style: _extends({}, maximumTrackStyle, railStyle)\n }),\n tracks,\n React.createElement(Steps, {\n prefixCls: prefixCls,\n vertical: vertical,\n reverse: reverse,\n marks: marks,\n dots: dots,\n step: step,\n included: included,\n lowerBound: this.getLowerBound(),\n upperBound: this.getUpperBound(),\n max: max,\n min: min,\n dotStyle: dotStyle,\n activeDotStyle: activeDotStyle\n }),\n handles,\n React.createElement(Marks, {\n className: prefixCls + '-mark',\n onClickLabel: disabled ? noop : this.onClickMarkLabel,\n vertical: vertical,\n marks: marks,\n included: included,\n lowerBound: this.getLowerBound(),\n upperBound: this.getUpperBound(),\n max: max,\n min: min,\n reverse: reverse\n }),\n children\n );\n }\n }]);\n\n return ComponentEnhancer;\n }(Component), _class.displayName = 'ComponentEnhancer(' + Component.displayName + ')', _class.propTypes = _extends({}, Component.propTypes, {\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.number,\n marks: PropTypes.object,\n included: PropTypes.bool,\n className: PropTypes.string,\n prefixCls: PropTypes.string,\n disabled: PropTypes.bool,\n children: PropTypes.any,\n onBeforeChange: PropTypes.func,\n onChange: PropTypes.func,\n onAfterChange: PropTypes.func,\n handle: PropTypes.func,\n dots: PropTypes.bool,\n vertical: PropTypes.bool,\n style: PropTypes.object,\n reverse: PropTypes.bool,\n minimumTrackStyle: PropTypes.object, // just for compatibility, will be deperecate\n maximumTrackStyle: PropTypes.object, // just for compatibility, will be deperecate\n handleStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object)]),\n trackStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object)]),\n railStyle: PropTypes.object,\n dotStyle: PropTypes.object,\n activeDotStyle: PropTypes.object,\n autoFocus: PropTypes.bool,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func\n }), _class.defaultProps = _extends({}, Component.defaultProps, {\n prefixCls: 'rc-slider',\n className: '',\n min: 0,\n max: 100,\n step: 1,\n marks: {},\n handle: function handle(_ref) {\n var index = _ref.index,\n restProps = _objectWithoutProperties(_ref, ['index']);\n\n delete restProps.dragging;\n if (restProps.value === null) {\n return null;\n }\n\n return React.createElement(Handle, _extends({}, restProps, { key: index }));\n },\n\n onBeforeChange: noop,\n onChange: noop,\n onAfterChange: noop,\n included: true,\n disabled: false,\n dots: false,\n vertical: false,\n reverse: false,\n trackStyle: [{}],\n handleStyle: [{}],\n railStyle: {},\n dotStyle: {},\n activeDotStyle: {}\n }), _temp;\n}","import _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\n/* eslint-disable react/prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'warning';\nimport Track from './common/Track';\nimport createSlider from './common/createSlider';\nimport * as utils from './utils';\n\nvar Slider = function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n function Slider(props) {\n _classCallCheck(this, Slider);\n\n var _this = _possibleConstructorReturn(this, (Slider.__proto__ || Object.getPrototypeOf(Slider)).call(this, props));\n\n _this.onEnd = function (force) {\n var dragging = _this.state.dragging;\n\n _this.removeDocumentEvents();\n if (dragging || force) {\n _this.props.onAfterChange(_this.getValue());\n }\n _this.setState({ dragging: false });\n };\n\n var defaultValue = props.defaultValue !== undefined ? props.defaultValue : props.min;\n var value = props.value !== undefined ? props.value : defaultValue;\n\n _this.state = {\n value: _this.trimAlignValue(value),\n dragging: false\n };\n\n warning(!('minimumTrackStyle' in props), 'minimumTrackStyle will be deprecated, please use trackStyle instead.');\n warning(!('maximumTrackStyle' in props), 'maximumTrackStyle will be deprecated, please use railStyle instead.');\n return _this;\n }\n\n _createClass(Slider, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n if (!('value' in this.props || 'min' in this.props || 'max' in this.props)) {\n return;\n }\n var _props = this.props,\n value = _props.value,\n onChange = _props.onChange;\n\n var theValue = value !== undefined ? value : prevState.value;\n var nextValue = this.trimAlignValue(theValue, this.props);\n if (nextValue !== prevState.value) {\n // eslint-disable-next-line\n this.setState({ value: nextValue });\n if (utils.isValueOutOfRange(theValue, this.props)) {\n onChange(nextValue);\n }\n }\n }\n }, {\n key: 'onChange',\n value: function onChange(state) {\n var props = this.props;\n var isNotControlled = !('value' in props);\n var nextState = state.value > this.props.max ? _extends({}, state, { value: this.props.max }) : state;\n if (isNotControlled) {\n this.setState(nextState);\n }\n\n var changedValue = nextState.value;\n props.onChange(changedValue);\n }\n }, {\n key: 'onStart',\n value: function onStart(position) {\n this.setState({ dragging: true });\n var props = this.props;\n var prevValue = this.getValue();\n props.onBeforeChange(prevValue);\n\n var value = this.calcValueByPos(position);\n this.startValue = value;\n this.startPosition = position;\n\n if (value === prevValue) return;\n\n this.prevMovedHandleIndex = 0;\n\n this.onChange({ value: value });\n }\n }, {\n key: 'onMove',\n value: function onMove(e, position) {\n utils.pauseEvent(e);\n var oldValue = this.state.value;\n\n var value = this.calcValueByPos(position);\n if (value === oldValue) return;\n\n this.onChange({ value: value });\n }\n }, {\n key: 'onKeyboard',\n value: function onKeyboard(e) {\n var _props2 = this.props,\n reverse = _props2.reverse,\n vertical = _props2.vertical;\n\n var valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);\n if (valueMutator) {\n utils.pauseEvent(e);\n var state = this.state;\n var oldValue = state.value;\n var mutatedValue = valueMutator(oldValue, this.props);\n var value = this.trimAlignValue(mutatedValue);\n if (value === oldValue) return;\n\n this.onChange({ value: value });\n this.props.onAfterChange(value);\n this.onEnd();\n }\n }\n }, {\n key: 'getValue',\n value: function getValue() {\n return this.state.value;\n }\n }, {\n key: 'getLowerBound',\n value: function getLowerBound() {\n return this.props.min;\n }\n }, {\n key: 'getUpperBound',\n value: function getUpperBound() {\n return this.state.value;\n }\n }, {\n key: 'trimAlignValue',\n value: function trimAlignValue(v) {\n var nextProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (v === null) {\n return null;\n }\n\n var mergedProps = _extends({}, this.props, nextProps);\n var val = utils.ensureValueInRange(v, mergedProps);\n return utils.ensureValuePrecision(val, mergedProps);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props3 = this.props,\n prefixCls = _props3.prefixCls,\n vertical = _props3.vertical,\n included = _props3.included,\n disabled = _props3.disabled,\n minimumTrackStyle = _props3.minimumTrackStyle,\n trackStyle = _props3.trackStyle,\n handleStyle = _props3.handleStyle,\n tabIndex = _props3.tabIndex,\n min = _props3.min,\n max = _props3.max,\n reverse = _props3.reverse,\n handleGenerator = _props3.handle;\n var _state = this.state,\n value = _state.value,\n dragging = _state.dragging;\n\n var offset = this.calcOffset(value);\n var handle = handleGenerator({\n className: prefixCls + '-handle',\n prefixCls: prefixCls,\n vertical: vertical,\n offset: offset,\n value: value,\n dragging: dragging,\n disabled: disabled,\n min: min,\n max: max,\n reverse: reverse,\n index: 0,\n tabIndex: tabIndex,\n style: handleStyle[0] || handleStyle,\n ref: function ref(h) {\n return _this2.saveHandle(0, h);\n }\n });\n\n var _trackStyle = trackStyle[0] || trackStyle;\n var track = React.createElement(Track, {\n className: prefixCls + '-track',\n vertical: vertical,\n included: included,\n offset: 0,\n reverse: reverse,\n length: offset,\n style: _extends({}, minimumTrackStyle, _trackStyle)\n });\n\n return { tracks: track, handles: handle };\n }\n }]);\n\n return Slider;\n}(React.Component);\n\nSlider.propTypes = {\n defaultValue: PropTypes.number,\n value: PropTypes.number,\n disabled: PropTypes.bool,\n autoFocus: PropTypes.bool,\n tabIndex: PropTypes.number,\n reverse: PropTypes.bool,\n min: PropTypes.number,\n max: PropTypes.number\n};\n\n\nexport default createSlider(Slider);","/**\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\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\n/* eslint-disable react/prop-types */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { polyfill } from 'react-lifecycles-compat';\nimport shallowEqual from 'shallowequal';\nimport Track from './common/Track';\nimport createSlider from './common/createSlider';\nimport * as utils from './utils';\n\nvar _trimAlignValue = function _trimAlignValue(_ref) {\n var value = _ref.value,\n handle = _ref.handle,\n bounds = _ref.bounds,\n props = _ref.props;\n var allowCross = props.allowCross,\n pushable = props.pushable;\n\n var thershold = Number(pushable);\n var valInRange = utils.ensureValueInRange(value, props);\n var valNotConflict = valInRange;\n if (!allowCross && handle != null && bounds !== undefined) {\n if (handle > 0 && valInRange <= bounds[handle - 1] + thershold) {\n valNotConflict = bounds[handle - 1] + thershold;\n }\n if (handle < bounds.length - 1 && valInRange >= bounds[handle + 1] - thershold) {\n valNotConflict = bounds[handle + 1] - thershold;\n }\n }\n return utils.ensureValuePrecision(valNotConflict, props);\n};\n\nvar Range = function (_React$Component) {\n _inherits(Range, _React$Component);\n\n function Range(props) {\n _classCallCheck(this, Range);\n\n var _this = _possibleConstructorReturn(this, (Range.__proto__ || Object.getPrototypeOf(Range)).call(this, props));\n\n _this.onEnd = function (force) {\n var handle = _this.state.handle;\n\n _this.removeDocumentEvents();\n\n if (handle !== null || force) {\n _this.props.onAfterChange(_this.getValue());\n }\n\n _this.setState({\n handle: null\n });\n };\n\n var count = props.count,\n min = props.min,\n max = props.max;\n\n var initialValue = Array.apply(undefined, _toConsumableArray(Array(count + 1))).map(function () {\n return min;\n });\n var defaultValue = 'defaultValue' in props ? props.defaultValue : initialValue;\n var value = props.value !== undefined ? props.value : defaultValue;\n var bounds = value.map(function (v, i) {\n return _trimAlignValue({\n value: v,\n handle: i,\n props: props\n });\n });\n var recent = bounds[0] === max ? 0 : bounds.length - 1;\n\n _this.state = {\n handle: null,\n recent: recent,\n bounds: bounds\n };\n return _this;\n }\n\n _createClass(Range, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n if (!('value' in this.props || 'min' in this.props || 'max' in this.props)) {\n return;\n }\n if (this.props.min === prevProps.min && this.props.max === prevProps.max && shallowEqual(this.props.value, prevProps.value)) {\n return;\n }\n var _props = this.props,\n onChange = _props.onChange,\n value = _props.value;\n\n var currentValue = value || prevState.bounds;\n if (currentValue.some(function (v) {\n return utils.isValueOutOfRange(v, _this2.props);\n })) {\n var newValues = currentValue.map(function (v) {\n return utils.ensureValueInRange(v, _this2.props);\n });\n onChange(newValues);\n }\n }\n }, {\n key: 'onChange',\n value: function onChange(state) {\n var props = this.props;\n var isNotControlled = !('value' in props);\n if (isNotControlled) {\n this.setState(state);\n } else {\n var controlledState = {};\n\n ['handle', 'recent'].forEach(function (item) {\n if (state[item] !== undefined) {\n controlledState[item] = state[item];\n }\n });\n\n if (Object.keys(controlledState).length) {\n this.setState(controlledState);\n }\n }\n\n var data = _extends({}, this.state, state);\n var changedValue = data.bounds;\n props.onChange(changedValue);\n }\n }, {\n key: 'onStart',\n value: function onStart(position) {\n var props = this.props;\n var state = this.state;\n var bounds = this.getValue();\n props.onBeforeChange(bounds);\n\n var value = this.calcValueByPos(position);\n this.startValue = value;\n this.startPosition = position;\n\n var closestBound = this.getClosestBound(value);\n this.prevMovedHandleIndex = this.getBoundNeedMoving(value, closestBound);\n\n this.setState({\n handle: this.prevMovedHandleIndex,\n recent: this.prevMovedHandleIndex\n });\n\n var prevValue = bounds[this.prevMovedHandleIndex];\n if (value === prevValue) return;\n\n var nextBounds = [].concat(_toConsumableArray(state.bounds));\n nextBounds[this.prevMovedHandleIndex] = value;\n this.onChange({ bounds: nextBounds });\n }\n }, {\n key: 'onMove',\n value: function onMove(e, position) {\n utils.pauseEvent(e);\n var state = this.state;\n\n var value = this.calcValueByPos(position);\n var oldValue = state.bounds[state.handle];\n if (value === oldValue) return;\n\n this.moveTo(value);\n }\n }, {\n key: 'onKeyboard',\n value: function onKeyboard(e) {\n var _props2 = this.props,\n reverse = _props2.reverse,\n vertical = _props2.vertical;\n\n var valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);\n\n if (valueMutator) {\n utils.pauseEvent(e);\n var state = this.state,\n props = this.props;\n var bounds = state.bounds,\n handle = state.handle;\n\n var oldValue = bounds[handle === null ? state.recent : handle];\n var mutatedValue = valueMutator(oldValue, props);\n var value = _trimAlignValue({\n value: mutatedValue,\n handle: handle,\n bounds: state.bounds,\n props: props\n });\n if (value === oldValue) return;\n var isFromKeyboardEvent = true;\n this.moveTo(value, isFromKeyboardEvent);\n }\n }\n }, {\n key: 'getValue',\n value: function getValue() {\n return this.state.bounds;\n }\n }, {\n key: 'getClosestBound',\n value: function getClosestBound(value) {\n var bounds = this.state.bounds;\n\n var closestBound = 0;\n for (var i = 1; i < bounds.length - 1; ++i) {\n if (value >= bounds[i]) {\n closestBound = i;\n }\n }\n if (Math.abs(bounds[closestBound + 1] - value) < Math.abs(bounds[closestBound] - value)) {\n closestBound += 1;\n }\n return closestBound;\n }\n }, {\n key: 'getBoundNeedMoving',\n value: function getBoundNeedMoving(value, closestBound) {\n var _state = this.state,\n bounds = _state.bounds,\n recent = _state.recent;\n\n var boundNeedMoving = closestBound;\n var isAtTheSamePoint = bounds[closestBound + 1] === bounds[closestBound];\n\n if (isAtTheSamePoint && bounds[recent] === bounds[closestBound]) {\n boundNeedMoving = recent;\n }\n\n if (isAtTheSamePoint && value !== bounds[closestBound + 1]) {\n boundNeedMoving = value < bounds[closestBound + 1] ? closestBound : closestBound + 1;\n }\n return boundNeedMoving;\n }\n }, {\n key: 'getLowerBound',\n value: function getLowerBound() {\n return this.state.bounds[0];\n }\n }, {\n key: 'getUpperBound',\n value: function getUpperBound() {\n var bounds = this.state.bounds;\n\n return bounds[bounds.length - 1];\n }\n\n /**\n * Returns an array of possible slider points, taking into account both\n * `marks` and `step`. The result is cached.\n */\n\n }, {\n key: 'getPoints',\n value: function getPoints() {\n var _props3 = this.props,\n marks = _props3.marks,\n step = _props3.step,\n min = _props3.min,\n max = _props3.max;\n\n var cache = this._getPointsCache;\n if (!cache || cache.marks !== marks || cache.step !== step) {\n var pointsObject = _extends({}, marks);\n if (step !== null) {\n for (var point = min; point <= max; point += step) {\n pointsObject[point] = point;\n }\n }\n var points = Object.keys(pointsObject).map(parseFloat);\n points.sort(function (a, b) {\n return a - b;\n });\n this._getPointsCache = { marks: marks, step: step, points: points };\n }\n return this._getPointsCache.points;\n }\n }, {\n key: 'moveTo',\n value: function moveTo(value, isFromKeyboardEvent) {\n var _this3 = this;\n\n var state = this.state,\n props = this.props;\n\n var nextBounds = [].concat(_toConsumableArray(state.bounds));\n var handle = state.handle === null ? state.recent : state.handle;\n nextBounds[handle] = value;\n var nextHandle = handle;\n if (props.pushable !== false) {\n this.pushSurroundingHandles(nextBounds, nextHandle);\n } else if (props.allowCross) {\n nextBounds.sort(function (a, b) {\n return a - b;\n });\n nextHandle = nextBounds.indexOf(value);\n }\n this.onChange({\n recent: nextHandle,\n handle: nextHandle,\n bounds: nextBounds\n });\n if (isFromKeyboardEvent) {\n // known problem: because setState is async,\n // so trigger focus will invoke handler's onEnd and another handler's onStart too early,\n // cause onBeforeChange and onAfterChange receive wrong value.\n // here use setState callback to hackbut not elegant\n this.props.onAfterChange(nextBounds);\n this.setState({}, function () {\n _this3.handlesRefs[nextHandle].focus();\n });\n this.onEnd();\n }\n }\n }, {\n key: 'pushSurroundingHandles',\n value: function pushSurroundingHandles(bounds, handle) {\n var value = bounds[handle];\n var threshold = this.props.pushable;\n\n threshold = Number(threshold);\n\n var direction = 0;\n if (bounds[handle + 1] - value < threshold) {\n direction = +1; // push to right\n }\n if (value - bounds[handle - 1] < threshold) {\n direction = -1; // push to left\n }\n\n if (direction === 0) {\n return;\n }\n\n var nextHandle = handle + direction;\n var diffToNext = direction * (bounds[nextHandle] - value);\n if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n // revert to original value if pushing is impossible\n bounds[handle] = bounds[nextHandle] - direction * threshold;\n }\n }\n }, {\n key: 'pushHandle',\n value: function pushHandle(bounds, handle, direction, amount) {\n var originalValue = bounds[handle];\n var currentValue = bounds[handle];\n while (direction * (currentValue - originalValue) < amount) {\n if (!this.pushHandleOnePoint(bounds, handle, direction)) {\n // can't push handle enough to create the needed `amount` gap, so we\n // revert its position to the original value\n bounds[handle] = originalValue;\n return false;\n }\n currentValue = bounds[handle];\n }\n // the handle was pushed enough to create the needed `amount` gap\n return true;\n }\n }, {\n key: 'pushHandleOnePoint',\n value: function pushHandleOnePoint(bounds, handle, direction) {\n var points = this.getPoints();\n var pointIndex = points.indexOf(bounds[handle]);\n var nextPointIndex = pointIndex + direction;\n if (nextPointIndex >= points.length || nextPointIndex < 0) {\n // reached the minimum or maximum available point, can't push anymore\n return false;\n }\n var nextHandle = handle + direction;\n var nextValue = points[nextPointIndex];\n var threshold = this.props.pushable;\n\n var diffToNext = direction * (bounds[nextHandle] - nextValue);\n if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n // couldn't push next handle, so we won't push this one either\n return false;\n }\n // push the handle\n bounds[handle] = nextValue;\n return true;\n }\n }, {\n key: 'trimAlignValue',\n value: function trimAlignValue(value) {\n var _state2 = this.state,\n handle = _state2.handle,\n bounds = _state2.bounds;\n\n return _trimAlignValue({\n value: value,\n handle: handle,\n bounds: bounds,\n props: this.props\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _state3 = this.state,\n handle = _state3.handle,\n bounds = _state3.bounds;\n var _props4 = this.props,\n prefixCls = _props4.prefixCls,\n vertical = _props4.vertical,\n included = _props4.included,\n disabled = _props4.disabled,\n min = _props4.min,\n max = _props4.max,\n reverse = _props4.reverse,\n handleGenerator = _props4.handle,\n trackStyle = _props4.trackStyle,\n handleStyle = _props4.handleStyle,\n tabIndex = _props4.tabIndex;\n\n\n var offsets = bounds.map(function (v) {\n return _this4.calcOffset(v);\n });\n\n var handleClassName = prefixCls + '-handle';\n var handles = bounds.map(function (v, i) {\n var _classNames;\n\n var _tabIndex = tabIndex[i] || 0;\n if (disabled || tabIndex[i] === null) {\n _tabIndex = null;\n }\n return handleGenerator({\n className: classNames((_classNames = {}, _defineProperty(_classNames, handleClassName, true), _defineProperty(_classNames, handleClassName + '-' + (i + 1), true), _classNames)),\n prefixCls: prefixCls,\n vertical: vertical,\n offset: offsets[i],\n value: v,\n dragging: handle === i,\n index: i,\n tabIndex: _tabIndex,\n min: min,\n max: max,\n reverse: reverse,\n disabled: disabled,\n style: handleStyle[i],\n ref: function ref(h) {\n return _this4.saveHandle(i, h);\n }\n });\n });\n\n var tracks = bounds.slice(0, -1).map(function (_, index) {\n var _classNames2;\n\n var i = index + 1;\n var trackClassName = classNames((_classNames2 = {}, _defineProperty(_classNames2, prefixCls + '-track', true), _defineProperty(_classNames2, prefixCls + '-track-' + i, true), _classNames2));\n return React.createElement(Track, {\n className: trackClassName,\n vertical: vertical,\n reverse: reverse,\n included: included,\n offset: offsets[i - 1],\n length: offsets[i] - offsets[i - 1],\n style: trackStyle[index],\n key: i\n });\n });\n\n return { tracks: tracks, handles: handles };\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(props, state) {\n if ('value' in props || 'min' in props || 'max' in props) {\n var value = props.value || state.bounds;\n var nextBounds = value.map(function (v, i) {\n return _trimAlignValue({\n value: v,\n handle: i,\n bounds: state.bounds,\n props: props\n });\n });\n if (nextBounds.length === state.bounds.length && nextBounds.every(function (v, i) {\n return v === state.bounds[i];\n })) {\n return null;\n }\n return _extends({}, state, {\n bounds: nextBounds\n });\n }\n return null;\n }\n }]);\n\n return Range;\n}(React.Component);\n\nRange.displayName = 'Range';\nRange.propTypes = {\n autoFocus: PropTypes.bool,\n defaultValue: PropTypes.arrayOf(PropTypes.number),\n value: PropTypes.arrayOf(PropTypes.number),\n count: PropTypes.number,\n pushable: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n allowCross: PropTypes.bool,\n disabled: PropTypes.bool,\n reverse: PropTypes.bool,\n tabIndex: PropTypes.arrayOf(PropTypes.number),\n min: PropTypes.number,\n max: PropTypes.number\n};\nRange.defaultProps = {\n count: 1,\n allowCross: true,\n pushable: false,\n tabIndex: []\n};\n\n\npolyfill(Range);\n\nexport default createSlider(Range);","export default function contains(root, n) {\n var node = n;\n\n while (node) {\n if (node === root) {\n return true;\n }\n\n node = node.parentNode;\n }\n\n return false;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _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 React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nvar ContainerRender = /*#__PURE__*/function (_React$Component) {\n _inherits(ContainerRender, _React$Component);\n\n var _super = _createSuper(ContainerRender);\n\n function ContainerRender() {\n var _this;\n\n _classCallCheck(this, ContainerRender);\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\n _this.removeContainer = function () {\n if (_this.container) {\n ReactDOM.unmountComponentAtNode(_this.container);\n\n _this.container.parentNode.removeChild(_this.container);\n\n _this.container = null;\n }\n };\n\n _this.renderComponent = function (props, ready) {\n var _this$props = _this.props,\n visible = _this$props.visible,\n getComponent = _this$props.getComponent,\n forceRender = _this$props.forceRender,\n getContainer = _this$props.getContainer,\n parent = _this$props.parent;\n\n if (visible || parent._component || forceRender) {\n if (!_this.container) {\n _this.container = getContainer();\n }\n\n ReactDOM.unstable_renderSubtreeIntoContainer(parent, getComponent(props), _this.container, function callback() {\n if (ready) {\n ready.call(this);\n }\n });\n }\n };\n\n return _this;\n }\n\n _createClass(ContainerRender, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.autoMount) {\n this.renderComponent();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n if (this.props.autoMount) {\n this.renderComponent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.props.autoDestroy) {\n this.removeContainer();\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return this.props.children({\n renderComponent: this.renderComponent,\n removeContainer: this.removeContainer\n });\n }\n }]);\n\n return ContainerRender;\n}(React.Component);\n\nContainerRender.propTypes = {\n autoMount: PropTypes.bool,\n autoDestroy: PropTypes.bool,\n visible: PropTypes.bool,\n forceRender: PropTypes.bool,\n parent: PropTypes.any,\n getComponent: PropTypes.func.isRequired,\n getContainer: PropTypes.func.isRequired,\n children: PropTypes.func.isRequired\n};\nContainerRender.defaultProps = {\n autoMount: true,\n autoDestroy: true,\n forceRender: false\n};\nexport { ContainerRender as default };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _createSuper(Derived) { return function () { var Super = _getPrototypeOf(Derived), result; if (_isNativeReflectConstruct()) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _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 React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\nvar Portal = /*#__PURE__*/function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n var _super = _createSuper(Portal);\n\n function Portal() {\n _classCallCheck(this, Portal);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Portal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.createContainer();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var didUpdate = this.props.didUpdate;\n\n if (didUpdate) {\n didUpdate(prevProps);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.removeContainer();\n }\n }, {\n key: \"createContainer\",\n value: function createContainer() {\n this._container = this.props.getContainer();\n this.forceUpdate();\n }\n }, {\n key: \"removeContainer\",\n value: function removeContainer() {\n if (this._container) {\n this._container.parentNode.removeChild(this._container);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n if (this._container) {\n return ReactDOM.createPortal(this.props.children, this._container);\n }\n\n return null;\n }\n }]);\n\n return Portal;\n}(React.Component);\n\nPortal.propTypes = {\n getContainer: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired,\n didUpdate: PropTypes.func\n};\nexport { Portal as default };","import _extends from 'babel-runtime/helpers/extends';\nfunction isPointsEq(a1, a2, isAlignPoint) {\n if (isAlignPoint) {\n return a1[0] === a2[0];\n }\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\n\nexport function getAlignFromPlacement(builtinPlacements, placementStr, align) {\n var baseAlign = builtinPlacements[placementStr] || {};\n return _extends({}, baseAlign, align);\n}\n\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n var points = align.points;\n for (var placement in builtinPlacements) {\n if (builtinPlacements.hasOwnProperty(placement)) {\n if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) {\n return prefixCls + '-placement-' + placement;\n }\n }\n }\n return '';\n}\n\nexport function saveRef(name, component) {\n this[name] = component;\n}","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\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(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(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar vendorPrefix;\nvar jsCssMap = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n // IE did it wrong again ...\n ms: '-ms-',\n O: '-o-'\n};\n\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n\n vendorPrefix = '';\n var style = document.createElement('p').style;\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"TransitionProperty\") : 'transitionProperty';\n}\n\nfunction getTransformName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"Transform\") : 'transform';\n}\nfunction setTransitionProperty(node, value) {\n var name = getTransitionName();\n\n if (name) {\n node.style[name] = value;\n\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n var name = getTransformName();\n\n if (name) {\n node.style[name] = value;\n\n if (name !== 'transform') {\n node.style.transform = value;\n }\n }\n}\n\nfunction getTransitionProperty(node) {\n return node.style.transitionProperty || node.style[getTransitionName()];\n}\nfunction getTransformXY(node) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n if (transform && transform !== 'none') {\n var matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n return {\n x: parseFloat(matrix[12] || matrix[4], 0),\n y: parseFloat(matrix[13] || matrix[5], 0)\n };\n }\n\n return {\n x: 0,\n y: 0\n };\n}\nvar matrix2d = /matrix\\((.*)\\)/;\nvar matrix3d = /matrix3d\\((.*)\\)/;\nfunction setTransformXY(node, xy) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n if (transform && transform !== 'none') {\n var arr;\n var match2d = transform.match(matrix2d);\n\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, \"matrix(\".concat(arr.join(','), \")\"));\n } else {\n var match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, \"matrix3d(\".concat(arr.join(','), \")\"));\n }\n } else {\n setTransform(node, \"translateX(\".concat(xy.x, \"px) translateY(\").concat(xy.y, \"px) translateZ(0)\"));\n }\n}\n\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\nvar getComputedStyleX; // https://stackoverflow.com/a/3485654/3040605\n\nfunction forceRelayout(elem) {\n var originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n\n elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n var value = v;\n\n if (_typeof(name) === 'object') {\n for (var i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n\n return undefined;\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = \"\".concat(value, \"px\");\n }\n\n el.style[name] = value;\n return undefined;\n }\n\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n var box;\n var x;\n var y;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement; // 根据 GBS 最新数据A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n\n box = elem.getBoundingClientRect(); // 注jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top; // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n return {\n left: x,\n top: y\n };\n}\n\nfunction getScroll(w, top) {\n var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n var method = \"scroll\".concat(top ? 'Top' : 'Left');\n\n if (typeof ret !== 'number') {\n var d = w.document; // ie6,7,8 standard mode\n\n ret = d.documentElement[method];\n\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\n\n\nfunction isWindow(obj) {\n // must use == for ie8\n\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n if (isWindow(node)) {\n return node.document;\n }\n\n if (node.nodeType === 9) {\n return node;\n }\n\n return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n var computedStyle = cs;\n var val = '';\n var d = getDocument(elem);\n computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null); // https://github.com/kissyteam/kissy/issues/61\n\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp(\"^(\".concat(RE_NUM, \")(?!px)[a-z%]+$\"), 'i');\n\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name]; // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style;\n var left = style[LEFT];\n var rsLeft = elem[RUNTIME_STYLE][LEFT]; // prevent flashing of content\n\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT]; // Put in the new values to get a computed value out\n\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX; // Revert the changed values\n\n style[LEFT] = left;\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n\n return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n if (dir === 'left') {\n return 'right';\n } else if (dir === 'right') {\n return 'left';\n } else if (dir === 'top') {\n return 'bottom';\n } else if (dir === 'bottom') {\n return 'top';\n }\n} // 设置 elem 相对 elem.ownerDocument 的坐标\n\n\nfunction setLeftTop(elem, offset, option) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n\n var presetH = -999;\n var presetV = -999;\n var horizontalProperty = getOffsetDirection('left', option);\n var verticalProperty = getOffsetDirection('top', option);\n var oppositeHorizontalProperty = oppositeOffsetDirection(horizontalProperty);\n var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n\n var originalTransition = '';\n var originalOffset = getOffset(elem);\n\n if ('left' in offset || 'top' in offset) {\n originalTransition = getTransitionProperty(elem) || '';\n setTransitionProperty(elem, 'none');\n }\n\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = \"\".concat(presetH, \"px\");\n }\n\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = \"\".concat(presetV, \"px\");\n } // force relayout\n\n\n forceRelayout(elem);\n var old = getOffset(elem);\n var originalStyle = {};\n\n for (var key in offset) {\n if (offset.hasOwnProperty(key)) {\n var dir = getOffsetDirection(key, option);\n var preset = key === 'left' ? presetH : presetV;\n var off = originalOffset[key] - old[key];\n\n if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n\n css(elem, originalStyle); // force relayout\n\n forceRelayout(elem);\n\n if ('left' in offset || 'top' in offset) {\n setTransitionProperty(elem, originalTransition);\n }\n\n var ret = {};\n\n for (var _key in offset) {\n if (offset.hasOwnProperty(_key)) {\n var _dir = getOffsetDirection(_key, option);\n\n var _off = offset[_key] - originalOffset[_key];\n\n if (_key === _dir) {\n ret[_dir] = originalStyle[_dir] + _off;\n } else {\n ret[_dir] = originalStyle[_dir] - _off;\n }\n }\n }\n\n css(elem, ret);\n}\n\nfunction setTransform$1(elem, offset) {\n var originalOffset = getOffset(elem);\n var originalXY = getTransformXY(elem);\n var resultXY = {\n x: originalXY.x,\n y: originalXY.y\n };\n\n if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n\n setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n if (option.ignoreShake) {\n var oriOffset = getOffset(elem);\n var oLeft = oriOffset.left.toFixed(0);\n var oTop = oriOffset.top.toFixed(0);\n var tLeft = offset.left.toFixed(0);\n var tTop = offset.top.toFixed(0);\n\n if (oLeft === tLeft && oTop === tTop) {\n return;\n }\n }\n\n if (option.useCssRight || option.useCssBottom) {\n setLeftTop(elem, offset, option);\n } else if (option.useCssTransform && getTransformName() in document.body.style) {\n setTransform$1(elem, offset);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name; // Remember the old values, and insert the new ones\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem); // Revert the old values\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop;\n var j;\n var i;\n\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = void 0;\n\n if (prop === 'border') {\n cssProp = \"\".concat(prop).concat(which[i], \"Width\");\n } else {\n cssProp = prop + which[i];\n }\n\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n\n return value;\n}\n\nvar domUtils = {\n getParent: function getParent(element) {\n var parent = element;\n\n do {\n if (parent.nodeType === 11 && parent.host) {\n parent = parent.host;\n } else {\n parent = parent.parentNode;\n }\n } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n\n return parent;\n }\n};\neach(['Width', 'Height'], function (name) {\n domUtils[\"doc\".concat(name)] = function (refWin) {\n var d = refWin.document;\n return Math.max( // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[\"scroll\".concat(name)], // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[\"scroll\".concat(name)], domUtils[\"viewport\".concat(name)](d));\n };\n\n domUtils[\"viewport\".concat(name)] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = \"client\".concat(name);\n var doc = win.document;\n var body = doc.body;\n var documentElement = doc.documentElement;\n var documentElementProp = documentElement[prop]; // 标准模式取 documentElement\n // backcompat 取 body\n\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\n});\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\n\nfunction getWH(elem, name, ex) {\n var extra = ex;\n\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? elem.getBoundingClientRect().width : elem.getBoundingClientRect().height;\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n var cssBoxValue = 0;\n\n if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) {\n borderBoxValue = undefined; // Fall back to computed then un computed css if necessary\n\n cssBoxValue = getComputedStyleX(elem, name);\n\n if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n } // Normalize '', auto, and prepare for extra\n\n\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which);\n }\n\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n\n return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which) : getPBMWidth(elem, ['margin'], which));\n }\n\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n}; // fix #119 : https://github.com/kissyteam/kissy/issues/119\n\nfunction getWHIgnoreDisplay() {\n for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var val;\n var elem = args[0]; // in case elem is window\n // elem.offsetWidth === undefined\n\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n\n return val;\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n\n domUtils[\"outer\".concat(first)] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, v) {\n var val = v;\n\n if (val !== undefined) {\n if (elem) {\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n\n return css(elem, name, val);\n }\n\n return undefined;\n }\n\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction mix(to, from) {\n for (var i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n\n return to;\n}\n\nvar utils = {\n getWindow: function getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n getDocument: getDocument,\n offset: function offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function clone(obj) {\n var i;\n var ret = {};\n\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n\n var overflow = obj.overflow;\n\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n\n return ret;\n },\n mix: mix,\n getWindowScrollLeft: function getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop: function getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge: function merge() {\n var ret = {};\n\n for (var i = 0; i < arguments.length; i++) {\n utils.mix(ret, i < 0 || arguments.length <= i ? undefined : arguments[i]);\n }\n\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0\n};\nmix(utils, domUtils);\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\n\nvar getParent = utils.getParent;\n\nfunction getOffsetParent(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return null;\n } // ie 这个也不是完全可行\n\n /*\n <div style=\"width: 50px;height: 100px;overflow: hidden\">\n <div style=\"width: 50px;height: 100px;position: relative;\" id=\"d6\">\n 元素 6 高 100px 宽 50px<br/>\n </div>\n </div>\n */\n // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n // In other browsers it only includes elements with position absolute, relative or\n // fixed, not elements with overflow set to auto or scroll.\n // if (UA.ie && ieMode < 8) {\n // return element.offsetParent;\n // }\n // 统一的 offsetParent 方法\n\n\n var doc = utils.getDocument(element);\n var body = doc.body;\n var parent;\n var positionStyle = utils.css(element, 'position');\n var skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html' ? null : getParent(element);\n }\n\n for (parent = getParent(element); parent && parent !== body && parent.nodeType !== 9; parent = getParent(parent)) {\n positionStyle = utils.css(parent, 'position');\n\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n\n return null;\n}\n\nvar getParent$1 = utils.getParent;\nfunction isAncestorFixed(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return false;\n }\n\n var doc = utils.getDocument(element);\n var body = doc.body;\n var parent = null;\n\n for (parent = getParent$1(element); parent && parent !== body; parent = getParent$1(parent)) {\n var positionStyle = utils.css(parent, 'position');\n\n if (positionStyle === 'fixed') {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * 获得元素的显示部分的区域\n */\n\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n var visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity\n };\n var el = getOffsetParent(element);\n var doc = utils.getDocument(element);\n var win = doc.defaultView || doc.parentWindow;\n var body = doc.body;\n var documentElement = doc.documentElement; // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) && // body may have overflow set on it, yet we still get the entire\n // viewport. In some browsers, el.offsetParent may be\n // document.documentElement, so check for that too.\n el !== body && el !== documentElement && utils.css(el, 'overflow') !== 'visible') {\n var pos = utils.offset(el); // add border\n\n pos.left += el.clientLeft;\n pos.top += el.clientTop;\n visibleRect.top = Math.max(visibleRect.top, pos.top);\n visibleRect.right = Math.min(visibleRect.right, // consider area without scrollBar\n pos.left + el.clientWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, pos.top + el.clientHeight);\n visibleRect.left = Math.max(visibleRect.left, pos.left);\n } else if (el === body || el === documentElement) {\n break;\n }\n\n el = getOffsetParent(el);\n } // Set element position to fixed\n // make sure absolute element itself don't affect it's visible area\n // https://github.com/ant-design/ant-design/issues/7601\n\n\n var originalPosition = null;\n\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n var position = utils.css(element, 'position');\n\n if (position === 'absolute') {\n element.style.position = 'fixed';\n }\n }\n\n var scrollX = utils.getWindowScrollLeft(win);\n var scrollY = utils.getWindowScrollTop(win);\n var viewportWidth = utils.viewportWidth(win);\n var viewportHeight = utils.viewportHeight(win);\n var documentWidth = documentElement.scrollWidth;\n var documentHeight = documentElement.scrollHeight; // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n // We should cut this ourself.\n\n var bodyStyle = window.getComputedStyle(body);\n\n if (bodyStyle.overflowX === 'hidden') {\n documentWidth = win.innerWidth;\n }\n\n if (bodyStyle.overflowY === 'hidden') {\n documentHeight = win.innerHeight;\n } // Reset element position after calculate the visible area\n\n\n if (element.style) {\n element.style.position = originalPosition;\n }\n\n if (alwaysByViewport || isAncestorFixed(element)) {\n // Clip by viewport's size.\n visibleRect.left = Math.max(visibleRect.left, scrollX);\n visibleRect.top = Math.max(visibleRect.top, scrollY);\n visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n } else {\n // Clip by document's size.\n var maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n var maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n }\n\n return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;\n}\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n var pos = utils.clone(elFuturePos);\n var size = {\n width: elRegion.width,\n height: elRegion.height\n };\n\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n } // Left edge inside and right edge outside viewport, try to resize it.\n\n\n if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size.width > visibleRect.right) {\n size.width -= pos.left + size.width - visibleRect.right;\n } // Right edge outside viewport, try to move it.\n\n\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n } // Top edge outside viewport, try to move it.\n\n\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n } // Top edge inside and bottom edge outside viewport, try to resize it.\n\n\n if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size.height > visibleRect.bottom) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n } // Bottom edge outside viewport, try to move it.\n\n\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n\n return utils.mix(pos, size);\n}\n\nfunction getRegion(node) {\n var offset;\n var w;\n var h;\n\n if (!utils.isWindow(node) && node.nodeType !== 9) {\n offset = utils.offset(node);\n w = utils.outerWidth(node);\n h = utils.outerHeight(node);\n } else {\n var win = utils.getWindow(node);\n offset = {\n left: utils.getWindowScrollLeft(win),\n top: utils.getWindowScrollTop(win)\n };\n w = utils.viewportWidth(win);\n h = utils.viewportHeight(win);\n }\n\n offset.width = w;\n offset.height = h;\n return offset;\n}\n\n/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\nfunction getAlignOffset(region, align) {\n var V = align.charAt(0);\n var H = align.charAt(1);\n var w = region.width;\n var h = region.height;\n var x = region.left;\n var y = region.top;\n\n if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n\n return {\n left: x,\n top: y\n };\n}\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n var p1 = getAlignOffset(refNodeRegion, points[1]);\n var p2 = getAlignOffset(elRegion, points[0]);\n var diff = [p2.left - p1.left, p2.top - p1.top];\n return {\n left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1])\n };\n}\n\n/**\n * align dom node flexibly\n * @author [email protected]\n */\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right;\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom;\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left;\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top;\n}\n\nfunction flip(points, reg, map) {\n var ret = [];\n utils.each(points, function (p) {\n ret.push(p.replace(reg, function (m) {\n return map[m];\n }));\n });\n return ret;\n}\n\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n var n;\n\n if (/%$/.test(str)) {\n n = parseInt(str.substring(0, str.length - 1), 10) / 100 * offsetLen;\n } else {\n n = parseInt(str, 10);\n }\n\n return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\n\n\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n var points = align.points;\n var offset = align.offset || [0, 0];\n var targetOffset = align.targetOffset || [0, 0];\n var overflow = align.overflow;\n var source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n var newOverflowCfg = {};\n var fail = 0;\n var alwaysByViewport = !!(overflow && overflow.alwaysByViewport); // 当前节点可以被放置的显示区域\n\n var visibleRect = getVisibleRectForElement(source, alwaysByViewport); // 当前节点所占的区域, left/top/width/height\n\n var elRegion = getRegion(source); // 将 offset 转换成数值,支持百分比\n\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, tgtRegion); // 当前节点将要被放置的位置\n\n var elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset); // 当前节点将要所处的区域\n\n var newElRegion = utils.merge(elRegion, elFuturePos); // 如果可视区域不能完全放置当前节点时允许调整\n\n if (visibleRect && (overflow.adjustX || overflow.adjustY) && isTgtRegionVisible) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l'\n }); // 偏移量也反下\n\n var newOffset = flipOffset(offset, 0);\n var newTargetOffset = flipOffset(targetOffset, 0);\n var newElFuturePos = getElFuturePos(elRegion, tgtRegion, newPoints, newOffset, newTargetOffset);\n\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n if (overflow.adjustY) {\n // 如果纵向不能放下\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var _newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't'\n }); // 偏移量也反下\n\n\n var _newOffset = flipOffset(offset, 1);\n\n var _newTargetOffset = flipOffset(targetOffset, 1);\n\n var _newElFuturePos = getElFuturePos(elRegion, tgtRegion, _newPoints, _newOffset, _newTargetOffset);\n\n if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = _newPoints;\n offset = _newOffset;\n targetOffset = _newTargetOffset;\n }\n }\n } // 如果失败,重新计算当前节点将要被放置的位置\n\n\n if (fail) {\n elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset);\n utils.mix(newElRegion, elFuturePos);\n }\n\n var isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect); // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n\n if (isStillFailX || isStillFailY) {\n points = align.points;\n offset = align.offset || [0, 0];\n targetOffset = align.targetOffset || [0, 0];\n } // 2. 只有指定了可以调整当前方向才调整\n\n\n newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n newOverflowCfg.adjustY = overflow.adjustY && isStillFailY; // 确实要调整,甚至可能会调整高度宽度\n\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg);\n }\n } // need judge to in case set fixed with in css on height auto element\n\n\n if (newElRegion.width !== elRegion.width) {\n utils.css(source, 'width', utils.width(source) + newElRegion.width - elRegion.width);\n }\n\n if (newElRegion.height !== elRegion.height) {\n utils.css(source, 'height', utils.height(source) + newElRegion.height - elRegion.height);\n } // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如 <div 'relative'><el absolute></div>\n\n\n utils.offset(source, {\n left: newElRegion.left,\n top: newElRegion.top\n }, {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform,\n ignoreShake: align.ignoreShake\n });\n return {\n points: points,\n offset: offset,\n targetOffset: targetOffset,\n overflow: newOverflowCfg\n };\n}\n/**\n * 2012-04-26 [email protected]\n * - 优化智能对齐算法\n * - 慎用 resizeXX\n *\n * 2011-07-13 [email protected] note:\n * - 增加智能对齐,以及大小调整选项\n **/\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n var visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n var targetRegion = getRegion(target);\n return !visibleRect || targetRegion.left + targetRegion.width <= visibleRect.left || targetRegion.top + targetRegion.height <= visibleRect.top || targetRegion.left >= visibleRect.right || targetRegion.top >= visibleRect.bottom;\n}\n\nfunction alignElement(el, refNode, align) {\n var target = align.target || refNode;\n var refNodeRegion = getRegion(target);\n var isTargetNotOutOfVisible = !isOutOfVisibleRect(target, align.overflow && align.overflow.alwaysByViewport);\n return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n var pageX;\n var pageY;\n var doc = utils.getDocument(el);\n var win = doc.defaultView || doc.parentWindow;\n var scrollX = utils.getWindowScrollLeft(win);\n var scrollY = utils.getWindowScrollTop(win);\n var viewportWidth = utils.viewportWidth(win);\n var viewportHeight = utils.viewportHeight(win);\n\n if ('pageX' in tgtPoint) {\n pageX = tgtPoint.pageX;\n } else {\n pageX = scrollX + tgtPoint.clientX;\n }\n\n if ('pageY' in tgtPoint) {\n pageY = tgtPoint.pageY;\n } else {\n pageY = scrollY + tgtPoint.clientY;\n }\n\n var tgtRegion = {\n left: pageX,\n top: pageY,\n width: 0,\n height: 0\n };\n var pointInView = pageX >= 0 && pageX <= scrollX + viewportWidth && pageY >= 0 && pageY <= scrollY + viewportHeight; // Provide default target point\n\n var points = [align.points[0], 'cc'];\n return doAlign(el, tgtRegion, _objectSpread2({}, align, {\n points: points\n }), pointInView);\n}\n\nexport default alignElement;\nexport { alignElement, alignPoint };\n//# sourceMappingURL=index.js.map\n","import contains from 'rc-util/es/Dom/contains';\n\nexport function buffer(fn, ms) {\n var timer = void 0;\n\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n\n function bufferFn() {\n clear();\n timer = setTimeout(fn, ms);\n }\n\n bufferFn.clear = clear;\n\n return bufferFn;\n}\n\nexport function isSamePoint(prev, next) {\n if (prev === next) return true;\n if (!prev || !next) return false;\n\n if ('pageX' in next && 'pageY' in next) {\n return prev.pageX === next.pageX && prev.pageY === next.pageY;\n }\n\n if ('clientX' in next && 'clientY' in next) {\n return prev.clientX === next.clientX && prev.clientY === next.clientY;\n }\n\n return false;\n}\n\nexport function isWindow(obj) {\n return obj && typeof obj === 'object' && obj.window === obj;\n}\n\nexport function isSimilarValue(val1, val2) {\n var int1 = Math.floor(val1);\n var int2 = Math.floor(val2);\n return Math.abs(int1 - int2) <= 1;\n}\n\nexport function restoreFocus(activeElement, container) {\n // Focus back if is in the container\n if (activeElement !== document.activeElement && contains(container, activeElement)) {\n activeElement.focus();\n }\n}","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport { alignElement, alignPoint } from 'dom-align';\nimport addEventListener from 'rc-util/es/Dom/addEventListener';\n\nimport { isWindow, buffer, isSamePoint, isSimilarValue, restoreFocus } from './util';\n\nfunction getElement(func) {\n if (typeof func !== 'function' || !func) return null;\n return func();\n}\n\nfunction getPoint(point) {\n if (typeof point !== 'object' || !point) return null;\n return point;\n}\n\nvar Align = function (_Component) {\n _inherits(Align, _Component);\n\n function Align() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Align);\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 = Align.__proto__ || Object.getPrototypeOf(Align)).call.apply(_ref, [this].concat(args))), _this), _this.forceAlign = function () {\n var _this$props = _this.props,\n disabled = _this$props.disabled,\n target = _this$props.target,\n align = _this$props.align,\n onAlign = _this$props.onAlign;\n\n if (!disabled && target) {\n var source = ReactDOM.findDOMNode(_this);\n\n var result = void 0;\n var element = getElement(target);\n var point = getPoint(target);\n\n // IE lose focus after element realign\n // We should record activeElement and restore later\n var activeElement = document.activeElement;\n\n if (element) {\n result = alignElement(source, element, align);\n } else if (point) {\n result = alignPoint(source, point, align);\n }\n\n restoreFocus(activeElement, source);\n\n if (onAlign) {\n onAlign(source, result);\n }\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Align, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var props = this.props;\n // if parent ref not attached .... use document.getElementById\n this.forceAlign();\n if (!props.disabled && props.monitorWindowResize) {\n this.startMonitorWindowResize();\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var reAlign = false;\n var props = this.props;\n\n if (!props.disabled) {\n var source = ReactDOM.findDOMNode(this);\n var sourceRect = source ? source.getBoundingClientRect() : null;\n\n if (prevProps.disabled) {\n reAlign = true;\n } else {\n var lastElement = getElement(prevProps.target);\n var currentElement = getElement(props.target);\n var lastPoint = getPoint(prevProps.target);\n var currentPoint = getPoint(props.target);\n\n if (isWindow(lastElement) && isWindow(currentElement)) {\n // Skip if is window\n reAlign = false;\n } else if (lastElement !== currentElement || // Element change\n lastElement && !currentElement && currentPoint || // Change from element to point\n lastPoint && currentPoint && currentElement || // Change from point to element\n currentPoint && !isSamePoint(lastPoint, currentPoint)) {\n reAlign = true;\n }\n\n // If source element size changed\n var preRect = this.sourceRect || {};\n if (!reAlign && source && (!isSimilarValue(preRect.width, sourceRect.width) || !isSimilarValue(preRect.height, sourceRect.height))) {\n reAlign = true;\n }\n }\n\n this.sourceRect = sourceRect;\n }\n\n if (reAlign) {\n this.forceAlign();\n }\n\n if (props.monitorWindowResize && !props.disabled) {\n this.startMonitorWindowResize();\n } else {\n this.stopMonitorWindowResize();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.stopMonitorWindowResize();\n }\n }, {\n key: 'startMonitorWindowResize',\n value: function startMonitorWindowResize() {\n if (!this.resizeHandler) {\n this.bufferMonitor = buffer(this.forceAlign, this.props.monitorBufferTime);\n this.resizeHandler = addEventListener(window, 'resize', this.bufferMonitor);\n }\n }\n }, {\n key: 'stopMonitorWindowResize',\n value: function stopMonitorWindowResize() {\n if (this.resizeHandler) {\n this.bufferMonitor.clear();\n this.resizeHandler.remove();\n this.resizeHandler = null;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n childrenProps = _props.childrenProps,\n children = _props.children;\n\n var child = React.Children.only(children);\n if (childrenProps) {\n var newProps = {};\n var propList = Object.keys(childrenProps);\n propList.forEach(function (prop) {\n newProps[prop] = _this2.props[childrenProps[prop]];\n });\n\n return React.cloneElement(child, newProps);\n }\n return child;\n }\n }]);\n\n return Align;\n}(Component);\n\nAlign.propTypes = {\n childrenProps: PropTypes.object,\n align: PropTypes.object.isRequired,\n target: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n clientX: PropTypes.number,\n clientY: PropTypes.number,\n pageX: PropTypes.number,\n pageY: PropTypes.number\n })]),\n onAlign: PropTypes.func,\n monitorBufferTime: PropTypes.number,\n monitorWindowResize: PropTypes.bool,\n disabled: PropTypes.bool,\n children: PropTypes.any\n};\nAlign.defaultProps = {\n target: function target() {\n return window;\n },\n monitorBufferTime: 50,\n monitorWindowResize: false,\n disabled: false\n};\n\n\nexport default Align;","// export this package's api\nimport Align from './Align';\n\nexport default Align;","import React from 'react';\n\nvar unsafeLifecyclesPolyfill = function unsafeLifecyclesPolyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n } // only handle componentWillReceiveProps\n\n\n if (typeof prototype.componentWillReceiveProps !== 'function') {\n return Component;\n } // In React 16.9, React.Profiler was introduced together with UNSAFE_componentWillReceiveProps\n // https://reactjs.org/blog/2019/08/08/react-v16.9.0.html#performance-measurements-with-reactprofiler\n\n\n if (!React.Profiler) {\n return Component;\n } // Here polyfill get started\n\n\n prototype.UNSAFE_componentWillReceiveProps = prototype.componentWillReceiveProps;\n delete prototype.componentWillReceiveProps;\n return Component;\n};\n\nexport default unsafeLifecyclesPolyfill;","import React from 'react';\n\nexport function toArrayChildren(children) {\n var ret = [];\n React.Children.forEach(children, function (child) {\n ret.push(child);\n });\n return ret;\n}\n\nexport function findChildInChildrenByKey(children, key) {\n var ret = null;\n if (children) {\n children.forEach(function (child) {\n if (ret) {\n return;\n }\n if (child && child.key === key) {\n ret = child;\n }\n });\n }\n return ret;\n}\n\nexport function findShownChildInChildrenByKey(children, key, showProp) {\n var ret = null;\n if (children) {\n children.forEach(function (child) {\n if (child && child.key === key && child.props[showProp]) {\n if (ret) {\n throw new Error('two child with same key for <rc-animate> children');\n }\n ret = child;\n }\n });\n }\n return ret;\n}\n\nexport function findHiddenChildInChildrenByKey(children, key, showProp) {\n var found = 0;\n if (children) {\n children.forEach(function (child) {\n if (found) {\n return;\n }\n found = child && child.key === key && !child.props[showProp];\n });\n }\n return found;\n}\n\nexport function isSameChildren(c1, c2, showProp) {\n var same = c1.length === c2.length;\n if (same) {\n c1.forEach(function (child, index) {\n var child2 = c2[index];\n if (child && child2) {\n if (child && !child2 || !child && child2) {\n same = false;\n } else if (child.key !== child2.key) {\n same = false;\n } else if (showProp && child.props[showProp] !== child2.props[showProp]) {\n same = false;\n }\n }\n });\n }\n return same;\n}\n\nexport function mergeChildren(prev, next) {\n var ret = [];\n\n // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n var nextChildrenPending = {};\n var pendingChildren = [];\n prev.forEach(function (child) {\n if (child && findChildInChildrenByKey(next, child.key)) {\n if (pendingChildren.length) {\n nextChildrenPending[child.key] = pendingChildren;\n pendingChildren = [];\n }\n } else {\n pendingChildren.push(child);\n }\n });\n\n next.forEach(function (child) {\n if (child && Object.prototype.hasOwnProperty.call(nextChildrenPending, child.key)) {\n ret = ret.concat(nextChildrenPending[child.key]);\n }\n ret.push(child);\n });\n\n ret = ret.concat(pendingChildren);\n\n return ret;\n}","var START_EVENT_NAME_MAP = {\n transitionstart: {\n transition: 'transitionstart',\n WebkitTransition: 'webkitTransitionStart',\n MozTransition: 'mozTransitionStart',\n OTransition: 'oTransitionStart',\n msTransition: 'MSTransitionStart'\n },\n\n animationstart: {\n animation: 'animationstart',\n WebkitAnimation: 'webkitAnimationStart',\n MozAnimation: 'mozAnimationStart',\n OAnimation: 'oAnimationStart',\n msAnimation: 'MSAnimationStart'\n }\n};\n\nvar END_EVENT_NAME_MAP = {\n transitionend: {\n transition: 'transitionend',\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'mozTransitionEnd',\n OTransition: 'oTransitionEnd',\n msTransition: 'MSTransitionEnd'\n },\n\n animationend: {\n animation: 'animationend',\n WebkitAnimation: 'webkitAnimationEnd',\n MozAnimation: 'mozAnimationEnd',\n OAnimation: 'oAnimationEnd',\n msAnimation: 'MSAnimationEnd'\n }\n};\n\nvar startEvents = [];\nvar endEvents = [];\n\nfunction detectEvents() {\n var testEl = document.createElement('div');\n var style = testEl.style;\n\n if (!('AnimationEvent' in window)) {\n delete START_EVENT_NAME_MAP.animationstart.animation;\n delete END_EVENT_NAME_MAP.animationend.animation;\n }\n\n if (!('TransitionEvent' in window)) {\n delete START_EVENT_NAME_MAP.transitionstart.transition;\n delete END_EVENT_NAME_MAP.transitionend.transition;\n }\n\n function process(EVENT_NAME_MAP, events) {\n for (var baseEventName in EVENT_NAME_MAP) {\n if (EVENT_NAME_MAP.hasOwnProperty(baseEventName)) {\n var baseEvents = EVENT_NAME_MAP[baseEventName];\n for (var styleName in baseEvents) {\n if (styleName in style) {\n events.push(baseEvents[styleName]);\n break;\n }\n }\n }\n }\n }\n\n process(START_EVENT_NAME_MAP, startEvents);\n process(END_EVENT_NAME_MAP, endEvents);\n}\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n detectEvents();\n}\n\nfunction addEventListener(node, eventName, eventListener) {\n node.addEventListener(eventName, eventListener, false);\n}\n\nfunction removeEventListener(node, eventName, eventListener) {\n node.removeEventListener(eventName, eventListener, false);\n}\n\nvar TransitionEvents = {\n // Start events\n startEvents: startEvents,\n\n addStartEventListener: function addStartEventListener(node, eventListener) {\n if (startEvents.length === 0) {\n window.setTimeout(eventListener, 0);\n return;\n }\n startEvents.forEach(function (startEvent) {\n addEventListener(node, startEvent, eventListener);\n });\n },\n removeStartEventListener: function removeStartEventListener(node, eventListener) {\n if (startEvents.length === 0) {\n return;\n }\n startEvents.forEach(function (startEvent) {\n removeEventListener(node, startEvent, eventListener);\n });\n },\n\n\n // End events\n endEvents: endEvents,\n\n addEndEventListener: function addEndEventListener(node, eventListener) {\n if (endEvents.length === 0) {\n window.setTimeout(eventListener, 0);\n return;\n }\n endEvents.forEach(function (endEvent) {\n addEventListener(node, endEvent, eventListener);\n });\n },\n removeEndEventListener: function removeEndEventListener(node, eventListener) {\n if (endEvents.length === 0) {\n return;\n }\n endEvents.forEach(function (endEvent) {\n removeEventListener(node, endEvent, eventListener);\n });\n }\n};\n\nexport default TransitionEvents;","import _typeof from 'babel-runtime/helpers/typeof';\nimport Event from './Event';\nimport classes from 'component-classes';\n\nvar isCssAnimationSupported = Event.endEvents.length !== 0;\nvar capitalPrefixes = ['Webkit', 'Moz', 'O',\n// ms is special .... !\n'ms'];\nvar prefixes = ['-webkit-', '-moz-', '-o-', 'ms-', ''];\n\nfunction getStyleProperty(node, name) {\n // old ff need null, https://developer.mozilla.org/en-US/docs/Web/API/Window/getComputedStyle\n var style = window.getComputedStyle(node, null);\n var ret = '';\n for (var i = 0; i < prefixes.length; i++) {\n ret = style.getPropertyValue(prefixes[i] + name);\n if (ret) {\n break;\n }\n }\n return ret;\n}\n\nfunction fixBrowserByTimeout(node) {\n if (isCssAnimationSupported) {\n var transitionDelay = parseFloat(getStyleProperty(node, 'transition-delay')) || 0;\n var transitionDuration = parseFloat(getStyleProperty(node, 'transition-duration')) || 0;\n var animationDelay = parseFloat(getStyleProperty(node, 'animation-delay')) || 0;\n var animationDuration = parseFloat(getStyleProperty(node, 'animation-duration')) || 0;\n var time = Math.max(transitionDuration + transitionDelay, animationDuration + animationDelay);\n // sometimes, browser bug\n node.rcEndAnimTimeout = setTimeout(function () {\n node.rcEndAnimTimeout = null;\n if (node.rcEndListener) {\n node.rcEndListener();\n }\n }, time * 1000 + 200);\n }\n}\n\nfunction clearBrowserBugTimeout(node) {\n if (node.rcEndAnimTimeout) {\n clearTimeout(node.rcEndAnimTimeout);\n node.rcEndAnimTimeout = null;\n }\n}\n\nvar cssAnimation = function cssAnimation(node, transitionName, endCallback) {\n var nameIsObj = (typeof transitionName === 'undefined' ? 'undefined' : _typeof(transitionName)) === 'object';\n var className = nameIsObj ? transitionName.name : transitionName;\n var activeClassName = nameIsObj ? transitionName.active : transitionName + '-active';\n var end = endCallback;\n var start = void 0;\n var active = void 0;\n var nodeClasses = classes(node);\n\n if (endCallback && Object.prototype.toString.call(endCallback) === '[object Object]') {\n end = endCallback.end;\n start = endCallback.start;\n active = endCallback.active;\n }\n\n if (node.rcEndListener) {\n node.rcEndListener();\n }\n\n node.rcEndListener = function (e) {\n if (e && e.target !== node) {\n return;\n }\n\n if (node.rcAnimTimeout) {\n clearTimeout(node.rcAnimTimeout);\n node.rcAnimTimeout = null;\n }\n\n clearBrowserBugTimeout(node);\n\n nodeClasses.remove(className);\n nodeClasses.remove(activeClassName);\n\n Event.removeEndEventListener(node, node.rcEndListener);\n node.rcEndListener = null;\n\n // Usually this optional end is used for informing an owner of\n // a leave animation and telling it to remove the child.\n if (end) {\n end();\n }\n };\n\n Event.addEndEventListener(node, node.rcEndListener);\n\n if (start) {\n start();\n }\n nodeClasses.add(className);\n\n node.rcAnimTimeout = setTimeout(function () {\n node.rcAnimTimeout = null;\n nodeClasses.add(activeClassName);\n if (active) {\n setTimeout(active, 0);\n }\n fixBrowserByTimeout(node);\n // 30ms for firefox\n }, 30);\n\n return {\n stop: function stop() {\n if (node.rcEndListener) {\n node.rcEndListener();\n }\n }\n };\n};\n\ncssAnimation.style = function (node, style, callback) {\n if (node.rcEndListener) {\n node.rcEndListener();\n }\n\n node.rcEndListener = function (e) {\n if (e && e.target !== node) {\n return;\n }\n\n if (node.rcAnimTimeout) {\n clearTimeout(node.rcAnimTimeout);\n node.rcAnimTimeout = null;\n }\n\n clearBrowserBugTimeout(node);\n\n Event.removeEndEventListener(node, node.rcEndListener);\n node.rcEndListener = null;\n\n // Usually this optional callback is used for informing an owner of\n // a leave animation and telling it to remove the child.\n if (callback) {\n callback();\n }\n };\n\n Event.addEndEventListener(node, node.rcEndListener);\n\n node.rcAnimTimeout = setTimeout(function () {\n for (var s in style) {\n if (style.hasOwnProperty(s)) {\n node.style[s] = style[s];\n }\n }\n node.rcAnimTimeout = null;\n fixBrowserByTimeout(node);\n }, 0);\n};\n\ncssAnimation.setTransition = function (node, p, value) {\n var property = p;\n var v = value;\n if (value === undefined) {\n v = property;\n property = '';\n }\n property = property || '';\n capitalPrefixes.forEach(function (prefix) {\n node.style[prefix + 'Transition' + property] = v;\n });\n};\n\ncssAnimation.isCssAnimationSupported = isCssAnimationSupported;\n\nexport { isCssAnimationSupported };\n\nexport default cssAnimation;","var util = {\n isAppearSupported: function isAppearSupported(props) {\n return props.transitionName && props.transitionAppear || props.animation.appear;\n },\n isEnterSupported: function isEnterSupported(props) {\n return props.transitionName && props.transitionEnter || props.animation.enter;\n },\n isLeaveSupported: function isLeaveSupported(props) {\n return props.transitionName && props.transitionLeave || props.animation.leave;\n },\n allowAppearCallback: function allowAppearCallback(props) {\n return props.transitionAppear || props.animation.appear;\n },\n allowEnterCallback: function allowEnterCallback(props) {\n return props.transitionEnter || props.animation.enter;\n },\n allowLeaveCallback: function allowLeaveCallback(props) {\n return props.transitionLeave || props.animation.leave;\n }\n};\nexport default util;","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport cssAnimate, { isCssAnimationSupported } from 'css-animation';\nimport animUtil from './util/animate';\n\nvar transitionMap = {\n enter: 'transitionEnter',\n appear: 'transitionAppear',\n leave: 'transitionLeave'\n};\n\nvar AnimateChild = function (_React$Component) {\n _inherits(AnimateChild, _React$Component);\n\n function AnimateChild() {\n _classCallCheck(this, AnimateChild);\n\n return _possibleConstructorReturn(this, (AnimateChild.__proto__ || Object.getPrototypeOf(AnimateChild)).apply(this, arguments));\n }\n\n _createClass(AnimateChild, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.stop();\n }\n }, {\n key: 'componentWillEnter',\n value: function componentWillEnter(done) {\n if (animUtil.isEnterSupported(this.props)) {\n this.transition('enter', done);\n } else {\n done();\n }\n }\n }, {\n key: 'componentWillAppear',\n value: function componentWillAppear(done) {\n if (animUtil.isAppearSupported(this.props)) {\n this.transition('appear', done);\n } else {\n done();\n }\n }\n }, {\n key: 'componentWillLeave',\n value: function componentWillLeave(done) {\n if (animUtil.isLeaveSupported(this.props)) {\n this.transition('leave', done);\n } else {\n // always sync, do not interupt with react component life cycle\n // update hidden -> animate hidden ->\n // didUpdate -> animate leave -> unmount (if animate is none)\n done();\n }\n }\n }, {\n key: 'transition',\n value: function transition(animationType, finishCallback) {\n var _this2 = this;\n\n var node = ReactDOM.findDOMNode(this);\n var props = this.props;\n var transitionName = props.transitionName;\n var nameIsObj = typeof transitionName === 'object';\n this.stop();\n var end = function end() {\n _this2.stopper = null;\n finishCallback();\n };\n if ((isCssAnimationSupported || !props.animation[animationType]) && transitionName && props[transitionMap[animationType]]) {\n var name = nameIsObj ? transitionName[animationType] : transitionName + '-' + animationType;\n var activeName = name + '-active';\n if (nameIsObj && transitionName[animationType + 'Active']) {\n activeName = transitionName[animationType + 'Active'];\n }\n this.stopper = cssAnimate(node, {\n name: name,\n active: activeName\n }, end);\n } else {\n this.stopper = props.animation[animationType](node, end);\n }\n }\n }, {\n key: 'stop',\n value: function stop() {\n var stopper = this.stopper;\n if (stopper) {\n this.stopper = null;\n stopper.stop();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children;\n }\n }]);\n\n return AnimateChild;\n}(React.Component);\n\nAnimateChild.propTypes = {\n children: PropTypes.any,\n animation: PropTypes.any,\n transitionName: PropTypes.any\n};\nexport default AnimateChild;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport unsafeLifecyclesPolyfill from 'rc-util/es/unsafeLifecyclesPolyfill';\nimport { toArrayChildren, mergeChildren, findShownChildInChildrenByKey, findChildInChildrenByKey, isSameChildren } from './ChildrenUtils';\nimport AnimateChild from './AnimateChild';\nimport animUtil from './util/animate';\n\nvar defaultKey = 'rc_animate_' + Date.now();\n\nfunction getChildrenFromProps(props) {\n var children = props.children;\n if (React.isValidElement(children)) {\n if (!children.key) {\n return React.cloneElement(children, {\n key: defaultKey\n });\n }\n }\n return children;\n}\n\nfunction noop() {}\n\nvar Animate = function (_React$Component) {\n _inherits(Animate, _React$Component);\n\n // eslint-disable-line\n\n function Animate(props) {\n _classCallCheck(this, Animate);\n\n var _this = _possibleConstructorReturn(this, (Animate.__proto__ || Object.getPrototypeOf(Animate)).call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.currentlyAnimatingKeys = {};\n _this.keysToEnter = [];\n _this.keysToLeave = [];\n\n _this.state = {\n children: toArrayChildren(getChildrenFromProps(props))\n };\n\n _this.childrenRefs = {};\n return _this;\n }\n\n _createClass(Animate, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n var showProp = this.props.showProp;\n var children = this.state.children;\n if (showProp) {\n children = children.filter(function (child) {\n return !!child.props[showProp];\n });\n }\n children.forEach(function (child) {\n if (child) {\n _this2.performAppear(child.key);\n }\n });\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var _this3 = this;\n\n this.nextProps = nextProps;\n var nextChildren = toArrayChildren(getChildrenFromProps(nextProps));\n var props = this.props;\n // exclusive needs immediate response\n if (props.exclusive) {\n Object.keys(this.currentlyAnimatingKeys).forEach(function (key) {\n _this3.stop(key);\n });\n }\n var showProp = props.showProp;\n var currentlyAnimatingKeys = this.currentlyAnimatingKeys;\n // last props children if exclusive\n var currentChildren = props.exclusive ? toArrayChildren(getChildrenFromProps(props)) : this.state.children;\n // in case destroy in showProp mode\n var newChildren = [];\n if (showProp) {\n currentChildren.forEach(function (currentChild) {\n var nextChild = currentChild && findChildInChildrenByKey(nextChildren, currentChild.key);\n var newChild = void 0;\n if ((!nextChild || !nextChild.props[showProp]) && currentChild.props[showProp]) {\n newChild = React.cloneElement(nextChild || currentChild, _defineProperty({}, showProp, true));\n } else {\n newChild = nextChild;\n }\n if (newChild) {\n newChildren.push(newChild);\n }\n });\n nextChildren.forEach(function (nextChild) {\n if (!nextChild || !findChildInChildrenByKey(currentChildren, nextChild.key)) {\n newChildren.push(nextChild);\n }\n });\n } else {\n newChildren = mergeChildren(currentChildren, nextChildren);\n }\n\n // need render to avoid update\n this.setState({\n children: newChildren\n });\n\n nextChildren.forEach(function (child) {\n var key = child && child.key;\n if (child && currentlyAnimatingKeys[key]) {\n return;\n }\n var hasPrev = child && findChildInChildrenByKey(currentChildren, key);\n if (showProp) {\n var showInNext = child.props[showProp];\n if (hasPrev) {\n var showInNow = findShownChildInChildrenByKey(currentChildren, key, showProp);\n if (!showInNow && showInNext) {\n _this3.keysToEnter.push(key);\n }\n } else if (showInNext) {\n _this3.keysToEnter.push(key);\n }\n } else if (!hasPrev) {\n _this3.keysToEnter.push(key);\n }\n });\n\n currentChildren.forEach(function (child) {\n var key = child && child.key;\n if (child && currentlyAnimatingKeys[key]) {\n return;\n }\n var hasNext = child && findChildInChildrenByKey(nextChildren, key);\n if (showProp) {\n var showInNow = child.props[showProp];\n if (hasNext) {\n var showInNext = findShownChildInChildrenByKey(nextChildren, key, showProp);\n if (!showInNext && showInNow) {\n _this3.keysToLeave.push(key);\n }\n } else if (showInNow) {\n _this3.keysToLeave.push(key);\n }\n } else if (!hasNext) {\n _this3.keysToLeave.push(key);\n }\n });\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n var keysToEnter = this.keysToEnter;\n this.keysToEnter = [];\n keysToEnter.forEach(this.performEnter);\n var keysToLeave = this.keysToLeave;\n this.keysToLeave = [];\n keysToLeave.forEach(this.performLeave);\n }\n }, {\n key: 'isValidChildByKey',\n value: function isValidChildByKey(currentChildren, key) {\n var showProp = this.props.showProp;\n if (showProp) {\n return findShownChildInChildrenByKey(currentChildren, key, showProp);\n }\n return findChildInChildrenByKey(currentChildren, key);\n }\n }, {\n key: 'stop',\n value: function stop(key) {\n delete this.currentlyAnimatingKeys[key];\n var component = this.childrenRefs[key];\n if (component) {\n component.stop();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var props = this.props;\n this.nextProps = props;\n var stateChildren = this.state.children;\n var children = null;\n if (stateChildren) {\n children = stateChildren.map(function (child) {\n if (child === null || child === undefined) {\n return child;\n }\n if (!child.key) {\n throw new Error('must set key for <rc-animate> children');\n }\n return React.createElement(\n AnimateChild,\n {\n key: child.key,\n ref: function ref(node) {\n _this4.childrenRefs[child.key] = node;\n },\n animation: props.animation,\n transitionName: props.transitionName,\n transitionEnter: props.transitionEnter,\n transitionAppear: props.transitionAppear,\n transitionLeave: props.transitionLeave\n },\n child\n );\n });\n }\n var Component = props.component;\n if (Component) {\n var passedProps = props;\n if (typeof Component === 'string') {\n passedProps = _extends({\n className: props.className,\n style: props.style\n }, props.componentProps);\n }\n return React.createElement(\n Component,\n passedProps,\n children\n );\n }\n return children[0] || null;\n }\n }]);\n\n return Animate;\n}(React.Component);\n\nAnimate.isAnimate = true;\nAnimate.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n component: PropTypes.any,\n componentProps: PropTypes.object,\n animation: PropTypes.object,\n transitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n transitionEnter: PropTypes.bool,\n transitionAppear: PropTypes.bool,\n exclusive: PropTypes.bool,\n transitionLeave: PropTypes.bool,\n onEnd: PropTypes.func,\n onEnter: PropTypes.func,\n onLeave: PropTypes.func,\n onAppear: PropTypes.func,\n showProp: PropTypes.string,\n children: PropTypes.node\n};\nAnimate.defaultProps = {\n animation: {},\n component: 'span',\n componentProps: {},\n transitionEnter: true,\n transitionLeave: true,\n transitionAppear: false,\n onEnd: noop,\n onEnter: noop,\n onLeave: noop,\n onAppear: noop\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this5 = this;\n\n this.performEnter = function (key) {\n // may already remove by exclusive\n if (_this5.childrenRefs[key]) {\n _this5.currentlyAnimatingKeys[key] = true;\n _this5.childrenRefs[key].componentWillEnter(_this5.handleDoneAdding.bind(_this5, key, 'enter'));\n }\n };\n\n this.performAppear = function (key) {\n if (_this5.childrenRefs[key]) {\n _this5.currentlyAnimatingKeys[key] = true;\n _this5.childrenRefs[key].componentWillAppear(_this5.handleDoneAdding.bind(_this5, key, 'appear'));\n }\n };\n\n this.handleDoneAdding = function (key, type) {\n var props = _this5.props;\n delete _this5.currentlyAnimatingKeys[key];\n // if update on exclusive mode, skip check\n if (props.exclusive && props !== _this5.nextProps) {\n return;\n }\n var currentChildren = toArrayChildren(getChildrenFromProps(props));\n if (!_this5.isValidChildByKey(currentChildren, key)) {\n // exclusive will not need this\n _this5.performLeave(key);\n } else if (type === 'appear') {\n if (animUtil.allowAppearCallback(props)) {\n props.onAppear(key);\n props.onEnd(key, true);\n }\n } else if (animUtil.allowEnterCallback(props)) {\n props.onEnter(key);\n props.onEnd(key, true);\n }\n };\n\n this.performLeave = function (key) {\n // may already remove by exclusive\n if (_this5.childrenRefs[key]) {\n _this5.currentlyAnimatingKeys[key] = true;\n _this5.childrenRefs[key].componentWillLeave(_this5.handleDoneLeaving.bind(_this5, key));\n }\n };\n\n this.handleDoneLeaving = function (key) {\n var props = _this5.props;\n delete _this5.currentlyAnimatingKeys[key];\n // if update on exclusive mode, skip check\n if (props.exclusive && props !== _this5.nextProps) {\n return;\n }\n var currentChildren = toArrayChildren(getChildrenFromProps(props));\n // in case state change is too fast\n if (_this5.isValidChildByKey(currentChildren, key)) {\n _this5.performEnter(key);\n } else {\n var end = function end() {\n if (animUtil.allowLeaveCallback(props)) {\n props.onLeave(key);\n props.onEnd(key, false);\n }\n };\n if (!isSameChildren(_this5.state.children, currentChildren, props.showProp)) {\n _this5.setState({\n children: currentChildren\n }, end);\n } else {\n end();\n }\n }\n };\n};\n\nexport default unsafeLifecyclesPolyfill(Animate);","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nvar LazyRenderBox = function (_Component) {\n _inherits(LazyRenderBox, _Component);\n\n function LazyRenderBox() {\n _classCallCheck(this, LazyRenderBox);\n\n return _possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n LazyRenderBox.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return nextProps.hiddenClassName || nextProps.visible;\n };\n\n LazyRenderBox.prototype.render = function render() {\n var _props = this.props,\n hiddenClassName = _props.hiddenClassName,\n visible = _props.visible,\n props = _objectWithoutProperties(_props, ['hiddenClassName', 'visible']);\n\n if (hiddenClassName || React.Children.count(props.children) > 1) {\n if (!visible && hiddenClassName) {\n props.className += ' ' + hiddenClassName;\n }\n return React.createElement('div', props);\n }\n\n return React.Children.only(props.children);\n };\n\n return LazyRenderBox;\n}(Component);\n\nLazyRenderBox.propTypes = {\n children: PropTypes.any,\n className: PropTypes.string,\n visible: PropTypes.bool,\n hiddenClassName: PropTypes.string\n};\n\n\nexport default LazyRenderBox;","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport LazyRenderBox from './LazyRenderBox';\n\nvar PopupInner = function (_Component) {\n _inherits(PopupInner, _Component);\n\n function PopupInner() {\n _classCallCheck(this, PopupInner);\n\n return _possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n PopupInner.prototype.render = function render() {\n var props = this.props;\n var className = props.className;\n if (!props.visible) {\n className += ' ' + props.hiddenClassName;\n }\n return React.createElement(\n 'div',\n {\n className: className,\n onMouseEnter: props.onMouseEnter,\n onMouseLeave: props.onMouseLeave,\n onMouseDown: props.onMouseDown,\n onTouchStart: props.onTouchStart,\n style: props.style\n },\n React.createElement(\n LazyRenderBox,\n { className: props.prefixCls + '-content', visible: props.visible },\n props.children\n )\n );\n };\n\n return PopupInner;\n}(Component);\n\nPopupInner.propTypes = {\n hiddenClassName: PropTypes.string,\n className: PropTypes.string,\n prefixCls: PropTypes.string,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseDown: PropTypes.func,\n onTouchStart: PropTypes.func,\n children: PropTypes.any\n};\n\n\nexport default PopupInner;","import _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactDOM from 'react-dom';\nimport Align from 'rc-align';\nimport Animate from 'rc-animate';\nimport PopupInner from './PopupInner';\nimport LazyRenderBox from './LazyRenderBox';\nimport { saveRef } from './utils';\n\nvar Popup = function (_Component) {\n _inherits(Popup, _Component);\n\n function Popup(props) {\n _classCallCheck(this, Popup);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props));\n\n _initialiseProps.call(_this);\n\n _this.state = {\n // Used for stretch\n stretchChecked: false,\n targetWidth: undefined,\n targetHeight: undefined\n };\n\n _this.savePopupRef = saveRef.bind(_this, 'popupInstance');\n _this.saveAlignRef = saveRef.bind(_this, 'alignInstance');\n return _this;\n }\n\n Popup.prototype.componentDidMount = function componentDidMount() {\n this.rootNode = this.getPopupDomNode();\n this.setStretchSize();\n };\n\n Popup.prototype.componentDidUpdate = function componentDidUpdate() {\n this.setStretchSize();\n };\n\n // Record size if stretch needed\n\n\n Popup.prototype.getPopupDomNode = function getPopupDomNode() {\n return ReactDOM.findDOMNode(this.popupInstance);\n };\n\n // `target` on `rc-align` can accept as a function to get the bind element or a point.\n // ref: https://www.npmjs.com/package/rc-align\n\n\n Popup.prototype.getMaskTransitionName = function getMaskTransitionName() {\n var props = this.props;\n var transitionName = props.maskTransitionName;\n var animation = props.maskAnimation;\n if (!transitionName && animation) {\n transitionName = props.prefixCls + '-' + animation;\n }\n return transitionName;\n };\n\n Popup.prototype.getTransitionName = function getTransitionName() {\n var props = this.props;\n var transitionName = props.transitionName;\n if (!transitionName && props.animation) {\n transitionName = props.prefixCls + '-' + props.animation;\n }\n return transitionName;\n };\n\n Popup.prototype.getClassName = function getClassName(currentAlignClassName) {\n return this.props.prefixCls + ' ' + this.props.className + ' ' + currentAlignClassName;\n };\n\n Popup.prototype.getPopupElement = function getPopupElement() {\n var _this2 = this;\n\n var savePopupRef = this.savePopupRef;\n var _state = this.state,\n stretchChecked = _state.stretchChecked,\n targetHeight = _state.targetHeight,\n targetWidth = _state.targetWidth;\n var _props = this.props,\n align = _props.align,\n visible = _props.visible,\n prefixCls = _props.prefixCls,\n style = _props.style,\n getClassNameFromAlign = _props.getClassNameFromAlign,\n destroyPopupOnHide = _props.destroyPopupOnHide,\n stretch = _props.stretch,\n children = _props.children,\n onMouseEnter = _props.onMouseEnter,\n onMouseLeave = _props.onMouseLeave,\n onMouseDown = _props.onMouseDown,\n onTouchStart = _props.onTouchStart;\n\n var className = this.getClassName(this.currentAlignClassName || getClassNameFromAlign(align));\n var hiddenClassName = prefixCls + '-hidden';\n\n if (!visible) {\n this.currentAlignClassName = null;\n }\n\n var sizeStyle = {};\n if (stretch) {\n // Stretch with target\n if (stretch.indexOf('height') !== -1) {\n sizeStyle.height = targetHeight;\n } else if (stretch.indexOf('minHeight') !== -1) {\n sizeStyle.minHeight = targetHeight;\n }\n if (stretch.indexOf('width') !== -1) {\n sizeStyle.width = targetWidth;\n } else if (stretch.indexOf('minWidth') !== -1) {\n sizeStyle.minWidth = targetWidth;\n }\n\n // Delay force align to makes ui smooth\n if (!stretchChecked) {\n sizeStyle.visibility = 'hidden';\n setTimeout(function () {\n if (_this2.alignInstance) {\n _this2.alignInstance.forceAlign();\n }\n }, 0);\n }\n }\n\n var newStyle = _extends({}, sizeStyle, style, this.getZIndexStyle());\n\n var popupInnerProps = {\n className: className,\n prefixCls: prefixCls,\n ref: savePopupRef,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave,\n onMouseDown: onMouseDown,\n onTouchStart: onTouchStart,\n style: newStyle\n };\n if (destroyPopupOnHide) {\n return React.createElement(\n Animate,\n {\n component: '',\n exclusive: true,\n transitionAppear: true,\n transitionName: this.getTransitionName()\n },\n visible ? React.createElement(\n Align,\n {\n target: this.getAlignTarget(),\n key: 'popup',\n ref: this.saveAlignRef,\n monitorWindowResize: true,\n align: align,\n onAlign: this.onAlign\n },\n React.createElement(\n PopupInner,\n _extends({\n visible: true\n }, popupInnerProps),\n children\n )\n ) : null\n );\n }\n\n return React.createElement(\n Animate,\n {\n component: '',\n exclusive: true,\n transitionAppear: true,\n transitionName: this.getTransitionName(),\n showProp: 'xVisible'\n },\n React.createElement(\n Align,\n {\n target: this.getAlignTarget(),\n key: 'popup',\n ref: this.saveAlignRef,\n monitorWindowResize: true,\n xVisible: visible,\n childrenProps: { visible: 'xVisible' },\n disabled: !visible,\n align: align,\n onAlign: this.onAlign\n },\n React.createElement(\n PopupInner,\n _extends({\n hiddenClassName: hiddenClassName\n }, popupInnerProps),\n children\n )\n )\n );\n };\n\n Popup.prototype.getZIndexStyle = function getZIndexStyle() {\n var style = {};\n var props = this.props;\n if (props.zIndex !== undefined) {\n style.zIndex = props.zIndex;\n }\n return style;\n };\n\n Popup.prototype.getMaskElement = function getMaskElement() {\n var props = this.props;\n var maskElement = void 0;\n if (props.mask) {\n var maskTransition = this.getMaskTransitionName();\n maskElement = React.createElement(LazyRenderBox, {\n style: this.getZIndexStyle(),\n key: 'mask',\n className: props.prefixCls + '-mask',\n hiddenClassName: props.prefixCls + '-mask-hidden',\n visible: props.visible\n });\n if (maskTransition) {\n maskElement = React.createElement(\n Animate,\n {\n key: 'mask',\n showProp: 'visible',\n transitionAppear: true,\n component: '',\n transitionName: maskTransition\n },\n maskElement\n );\n }\n }\n return maskElement;\n };\n\n Popup.prototype.render = function render() {\n return React.createElement(\n 'div',\n null,\n this.getMaskElement(),\n this.getPopupElement()\n );\n };\n\n return Popup;\n}(Component);\n\nPopup.propTypes = {\n visible: PropTypes.bool,\n style: PropTypes.object,\n getClassNameFromAlign: PropTypes.func,\n onAlign: PropTypes.func,\n getRootDomNode: PropTypes.func,\n align: PropTypes.any,\n destroyPopupOnHide: PropTypes.bool,\n className: PropTypes.string,\n prefixCls: PropTypes.string,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseDown: PropTypes.func,\n onTouchStart: PropTypes.func,\n stretch: PropTypes.string,\n children: PropTypes.node,\n point: PropTypes.shape({\n pageX: PropTypes.number,\n pageY: PropTypes.number\n })\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this3 = this;\n\n this.onAlign = function (popupDomNode, align) {\n var props = _this3.props;\n var currentAlignClassName = props.getClassNameFromAlign(align);\n // FIX: https://github.com/react-component/trigger/issues/56\n // FIX: https://github.com/react-component/tooltip/issues/79\n if (_this3.currentAlignClassName !== currentAlignClassName) {\n _this3.currentAlignClassName = currentAlignClassName;\n popupDomNode.className = _this3.getClassName(currentAlignClassName);\n }\n props.onAlign(popupDomNode, align);\n };\n\n this.setStretchSize = function () {\n var _props2 = _this3.props,\n stretch = _props2.stretch,\n getRootDomNode = _props2.getRootDomNode,\n visible = _props2.visible;\n var _state2 = _this3.state,\n stretchChecked = _state2.stretchChecked,\n targetHeight = _state2.targetHeight,\n targetWidth = _state2.targetWidth;\n\n\n if (!stretch || !visible) {\n if (stretchChecked) {\n _this3.setState({ stretchChecked: false });\n }\n return;\n }\n\n var $ele = getRootDomNode();\n if (!$ele) return;\n\n var height = $ele.offsetHeight;\n var width = $ele.offsetWidth;\n\n if (targetHeight !== height || targetWidth !== width || !stretchChecked) {\n _this3.setState({\n stretchChecked: true,\n targetHeight: height,\n targetWidth: width\n });\n }\n };\n\n this.getTargetElement = function () {\n return _this3.props.getRootDomNode();\n };\n\n this.getAlignTarget = function () {\n var point = _this3.props.point;\n\n if (point) {\n return point;\n }\n return _this3.getTargetElement;\n };\n};\n\nexport default Popup;","import _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { findDOMNode, createPortal } from 'react-dom';\nimport { polyfill } from 'react-lifecycles-compat';\nimport contains from 'rc-util/es/Dom/contains';\nimport addEventListener from 'rc-util/es/Dom/addEventListener';\nimport ContainerRender from 'rc-util/es/ContainerRender';\nimport Portal from 'rc-util/es/Portal';\nimport classNames from 'classnames';\n\nimport { getAlignFromPlacement, getAlignPopupClassName } from './utils';\nimport Popup from './Popup';\n\nfunction noop() {}\n\nfunction returnEmptyString() {\n return '';\n}\n\nfunction returnDocument() {\n return window.document;\n}\n\nvar ALL_HANDLERS = ['onClick', 'onMouseDown', 'onTouchStart', 'onMouseEnter', 'onMouseLeave', 'onFocus', 'onBlur', 'onContextMenu'];\n\nvar IS_REACT_16 = !!createPortal;\n\nvar contextTypes = {\n rcTrigger: PropTypes.shape({\n onPopupMouseDown: PropTypes.func\n })\n};\n\nvar Trigger = function (_React$Component) {\n _inherits(Trigger, _React$Component);\n\n function Trigger(props) {\n _classCallCheck(this, Trigger);\n\n var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));\n\n _initialiseProps.call(_this);\n\n var popupVisible = void 0;\n if ('popupVisible' in props) {\n popupVisible = !!props.popupVisible;\n } else {\n popupVisible = !!props.defaultPopupVisible;\n }\n\n _this.state = {\n prevPopupVisible: popupVisible,\n popupVisible: popupVisible\n };\n\n ALL_HANDLERS.forEach(function (h) {\n _this['fire' + h] = function (e) {\n _this.fireEvents(h, e);\n };\n });\n return _this;\n }\n\n Trigger.prototype.getChildContext = function getChildContext() {\n return {\n rcTrigger: {\n onPopupMouseDown: this.onPopupMouseDown\n }\n };\n };\n\n Trigger.prototype.componentDidMount = function componentDidMount() {\n this.componentDidUpdate({}, {\n popupVisible: this.state.popupVisible\n });\n };\n\n Trigger.prototype.componentDidUpdate = function componentDidUpdate(_, prevState) {\n var props = this.props;\n var state = this.state;\n var triggerAfterPopupVisibleChange = function triggerAfterPopupVisibleChange() {\n if (prevState.popupVisible !== state.popupVisible) {\n props.afterPopupVisibleChange(state.popupVisible);\n }\n };\n if (!IS_REACT_16) {\n this.renderComponent(null, triggerAfterPopupVisibleChange);\n }\n\n // We must listen to `mousedown` or `touchstart`, edge case:\n // https://github.com/ant-design/ant-design/issues/5804\n // https://github.com/react-component/calendar/issues/250\n // https://github.com/react-component/trigger/issues/50\n if (state.popupVisible) {\n var currentDocument = void 0;\n if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextMenuToShow())) {\n currentDocument = props.getDocument();\n this.clickOutsideHandler = addEventListener(currentDocument, 'mousedown', this.onDocumentClick);\n }\n // always hide on mobile\n if (!this.touchOutsideHandler) {\n currentDocument = currentDocument || props.getDocument();\n this.touchOutsideHandler = addEventListener(currentDocument, 'touchstart', this.onDocumentClick);\n }\n // close popup when trigger type contains 'onContextMenu' and document is scrolling.\n if (!this.contextMenuOutsideHandler1 && this.isContextMenuToShow()) {\n currentDocument = currentDocument || props.getDocument();\n this.contextMenuOutsideHandler1 = addEventListener(currentDocument, 'scroll', this.onContextMenuClose);\n }\n // close popup when trigger type contains 'onContextMenu' and window is blur.\n if (!this.contextMenuOutsideHandler2 && this.isContextMenuToShow()) {\n this.contextMenuOutsideHandler2 = addEventListener(window, 'blur', this.onContextMenuClose);\n }\n return;\n }\n\n this.clearOutsideHandler();\n };\n\n Trigger.prototype.componentWillUnmount = function componentWillUnmount() {\n this.clearDelayTimer();\n this.clearOutsideHandler();\n clearTimeout(this.mouseDownTimeout);\n };\n\n Trigger.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var popupVisible = _ref.popupVisible;\n\n var newState = {};\n\n if (popupVisible !== undefined && prevState.popupVisible !== popupVisible) {\n newState.popupVisible = popupVisible;\n newState.prevPopupVisible = prevState.popupVisible;\n }\n\n return newState;\n };\n\n Trigger.prototype.getPopupDomNode = function getPopupDomNode() {\n // for test\n if (this._component && this._component.getPopupDomNode) {\n return this._component.getPopupDomNode();\n }\n return null;\n };\n\n Trigger.prototype.getPopupAlign = function getPopupAlign() {\n var props = this.props;\n var popupPlacement = props.popupPlacement,\n popupAlign = props.popupAlign,\n builtinPlacements = props.builtinPlacements;\n\n if (popupPlacement && builtinPlacements) {\n return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n }\n return popupAlign;\n };\n\n /**\n * @param popupVisible Show or not the popup element\n * @param event SyntheticEvent, used for `pointAlign`\n */\n Trigger.prototype.setPopupVisible = function setPopupVisible(popupVisible, event) {\n var alignPoint = this.props.alignPoint;\n var prevPopupVisible = this.state.popupVisible;\n\n\n this.clearDelayTimer();\n\n if (prevPopupVisible !== popupVisible) {\n if (!('popupVisible' in this.props)) {\n this.setState({ popupVisible: popupVisible, prevPopupVisible: prevPopupVisible });\n }\n this.props.onPopupVisibleChange(popupVisible);\n }\n\n // Always record the point position since mouseEnterDelay will delay the show\n if (alignPoint && event) {\n this.setPoint(event);\n }\n };\n\n Trigger.prototype.delaySetPopupVisible = function delaySetPopupVisible(visible, delayS, event) {\n var _this2 = this;\n\n var delay = delayS * 1000;\n this.clearDelayTimer();\n if (delay) {\n var point = event ? { pageX: event.pageX, pageY: event.pageY } : null;\n this.delayTimer = setTimeout(function () {\n _this2.setPopupVisible(visible, point);\n _this2.clearDelayTimer();\n }, delay);\n } else {\n this.setPopupVisible(visible, event);\n }\n };\n\n Trigger.prototype.clearDelayTimer = function clearDelayTimer() {\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n };\n\n Trigger.prototype.clearOutsideHandler = function clearOutsideHandler() {\n if (this.clickOutsideHandler) {\n this.clickOutsideHandler.remove();\n this.clickOutsideHandler = null;\n }\n\n if (this.contextMenuOutsideHandler1) {\n this.contextMenuOutsideHandler1.remove();\n this.contextMenuOutsideHandler1 = null;\n }\n\n if (this.contextMenuOutsideHandler2) {\n this.contextMenuOutsideHandler2.remove();\n this.contextMenuOutsideHandler2 = null;\n }\n\n if (this.touchOutsideHandler) {\n this.touchOutsideHandler.remove();\n this.touchOutsideHandler = null;\n }\n };\n\n Trigger.prototype.createTwoChains = function createTwoChains(event) {\n var childPros = this.props.children.props;\n var props = this.props;\n if (childPros[event] && props[event]) {\n return this['fire' + event];\n }\n return childPros[event] || props[event];\n };\n\n Trigger.prototype.isClickToShow = function isClickToShow() {\n var _props = this.props,\n action = _props.action,\n showAction = _props.showAction;\n\n return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n };\n\n Trigger.prototype.isContextMenuToShow = function isContextMenuToShow() {\n var _props2 = this.props,\n action = _props2.action,\n showAction = _props2.showAction;\n\n return action.indexOf('contextMenu') !== -1 || showAction.indexOf('contextMenu') !== -1;\n };\n\n Trigger.prototype.isClickToHide = function isClickToHide() {\n var _props3 = this.props,\n action = _props3.action,\n hideAction = _props3.hideAction;\n\n return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n };\n\n Trigger.prototype.isMouseEnterToShow = function isMouseEnterToShow() {\n var _props4 = this.props,\n action = _props4.action,\n showAction = _props4.showAction;\n\n return action.indexOf('hover') !== -1 || showAction.indexOf('mouseEnter') !== -1;\n };\n\n Trigger.prototype.isMouseLeaveToHide = function isMouseLeaveToHide() {\n var _props5 = this.props,\n action = _props5.action,\n hideAction = _props5.hideAction;\n\n return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseLeave') !== -1;\n };\n\n Trigger.prototype.isFocusToShow = function isFocusToShow() {\n var _props6 = this.props,\n action = _props6.action,\n showAction = _props6.showAction;\n\n return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n };\n\n Trigger.prototype.isBlurToHide = function isBlurToHide() {\n var _props7 = this.props,\n action = _props7.action,\n hideAction = _props7.hideAction;\n\n return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n };\n\n Trigger.prototype.forcePopupAlign = function forcePopupAlign() {\n if (this.state.popupVisible && this._component && this._component.alignInstance) {\n this._component.alignInstance.forceAlign();\n }\n };\n\n Trigger.prototype.fireEvents = function fireEvents(type, e) {\n var childCallback = this.props.children.props[type];\n if (childCallback) {\n childCallback(e);\n }\n var callback = this.props[type];\n if (callback) {\n callback(e);\n }\n };\n\n Trigger.prototype.close = function close() {\n this.setPopupVisible(false);\n };\n\n Trigger.prototype.render = function render() {\n var _this3 = this;\n\n var popupVisible = this.state.popupVisible;\n var _props8 = this.props,\n children = _props8.children,\n forceRender = _props8.forceRender,\n alignPoint = _props8.alignPoint,\n className = _props8.className;\n\n var child = React.Children.only(children);\n var newChildProps = { key: 'trigger' };\n\n if (this.isContextMenuToShow()) {\n newChildProps.onContextMenu = this.onContextMenu;\n } else {\n newChildProps.onContextMenu = this.createTwoChains('onContextMenu');\n }\n\n if (this.isClickToHide() || this.isClickToShow()) {\n newChildProps.onClick = this.onClick;\n newChildProps.onMouseDown = this.onMouseDown;\n newChildProps.onTouchStart = this.onTouchStart;\n } else {\n newChildProps.onClick = this.createTwoChains('onClick');\n newChildProps.onMouseDown = this.createTwoChains('onMouseDown');\n newChildProps.onTouchStart = this.createTwoChains('onTouchStart');\n }\n if (this.isMouseEnterToShow()) {\n newChildProps.onMouseEnter = this.onMouseEnter;\n if (alignPoint) {\n newChildProps.onMouseMove = this.onMouseMove;\n }\n } else {\n newChildProps.onMouseEnter = this.createTwoChains('onMouseEnter');\n }\n if (this.isMouseLeaveToHide()) {\n newChildProps.onMouseLeave = this.onMouseLeave;\n } else {\n newChildProps.onMouseLeave = this.createTwoChains('onMouseLeave');\n }\n if (this.isFocusToShow() || this.isBlurToHide()) {\n newChildProps.onFocus = this.onFocus;\n newChildProps.onBlur = this.onBlur;\n } else {\n newChildProps.onFocus = this.createTwoChains('onFocus');\n newChildProps.onBlur = this.createTwoChains('onBlur');\n }\n\n var childrenClassName = classNames(child && child.props && child.props.className, className);\n if (childrenClassName) {\n newChildProps.className = childrenClassName;\n }\n var trigger = React.cloneElement(child, newChildProps);\n\n if (!IS_REACT_16) {\n return React.createElement(\n ContainerRender,\n {\n parent: this,\n visible: popupVisible,\n autoMount: false,\n forceRender: forceRender,\n getComponent: this.getComponent,\n getContainer: this.getContainer\n },\n function (_ref2) {\n var renderComponent = _ref2.renderComponent;\n\n _this3.renderComponent = renderComponent;\n return trigger;\n }\n );\n }\n\n var portal = void 0;\n // prevent unmounting after it's rendered\n if (popupVisible || this._component || forceRender) {\n portal = React.createElement(\n Portal,\n { key: 'portal', getContainer: this.getContainer, didUpdate: this.handlePortalUpdate },\n this.getComponent()\n );\n }\n\n return [trigger, portal];\n };\n\n return Trigger;\n}(React.Component);\n\nTrigger.propTypes = {\n children: PropTypes.any,\n action: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n showAction: PropTypes.any,\n hideAction: PropTypes.any,\n getPopupClassNameFromAlign: PropTypes.any,\n onPopupVisibleChange: PropTypes.func,\n afterPopupVisibleChange: PropTypes.func,\n popup: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\n popupStyle: PropTypes.object,\n prefixCls: PropTypes.string,\n popupClassName: PropTypes.string,\n className: PropTypes.string,\n popupPlacement: PropTypes.string,\n builtinPlacements: PropTypes.object,\n popupTransitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n popupAnimation: PropTypes.any,\n mouseEnterDelay: PropTypes.number,\n mouseLeaveDelay: PropTypes.number,\n zIndex: PropTypes.number,\n focusDelay: PropTypes.number,\n blurDelay: PropTypes.number,\n getPopupContainer: PropTypes.func,\n getDocument: PropTypes.func,\n forceRender: PropTypes.bool,\n destroyPopupOnHide: PropTypes.bool,\n mask: PropTypes.bool,\n maskClosable: PropTypes.bool,\n onPopupAlign: PropTypes.func,\n popupAlign: PropTypes.object,\n popupVisible: PropTypes.bool,\n defaultPopupVisible: PropTypes.bool,\n maskTransitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n maskAnimation: PropTypes.string,\n stretch: PropTypes.string,\n alignPoint: PropTypes.bool // Maybe we can support user pass position in the future\n};\nTrigger.contextTypes = contextTypes;\nTrigger.childContextTypes = contextTypes;\nTrigger.defaultProps = {\n prefixCls: 'rc-trigger-popup',\n getPopupClassNameFromAlign: returnEmptyString,\n getDocument: returnDocument,\n onPopupVisibleChange: noop,\n afterPopupVisibleChange: noop,\n onPopupAlign: noop,\n popupClassName: '',\n mouseEnterDelay: 0,\n mouseLeaveDelay: 0.1,\n focusDelay: 0,\n blurDelay: 0.15,\n popupStyle: {},\n destroyPopupOnHide: false,\n popupAlign: {},\n defaultPopupVisible: false,\n mask: false,\n maskClosable: true,\n action: [],\n showAction: [],\n hideAction: []\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this4 = this;\n\n this.onMouseEnter = function (e) {\n var mouseEnterDelay = _this4.props.mouseEnterDelay;\n\n _this4.fireEvents('onMouseEnter', e);\n _this4.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e);\n };\n\n this.onMouseMove = function (e) {\n _this4.fireEvents('onMouseMove', e);\n _this4.setPoint(e);\n };\n\n this.onMouseLeave = function (e) {\n _this4.fireEvents('onMouseLeave', e);\n _this4.delaySetPopupVisible(false, _this4.props.mouseLeaveDelay);\n };\n\n this.onPopupMouseEnter = function () {\n _this4.clearDelayTimer();\n };\n\n this.onPopupMouseLeave = function (e) {\n // https://github.com/react-component/trigger/pull/13\n // react bug?\n if (e.relatedTarget && !e.relatedTarget.setTimeout && _this4._component && _this4._component.getPopupDomNode && contains(_this4._component.getPopupDomNode(), e.relatedTarget)) {\n return;\n }\n _this4.delaySetPopupVisible(false, _this4.props.mouseLeaveDelay);\n };\n\n this.onFocus = function (e) {\n _this4.fireEvents('onFocus', e);\n // incase focusin and focusout\n _this4.clearDelayTimer();\n if (_this4.isFocusToShow()) {\n _this4.focusTime = Date.now();\n _this4.delaySetPopupVisible(true, _this4.props.focusDelay);\n }\n };\n\n this.onMouseDown = function (e) {\n _this4.fireEvents('onMouseDown', e);\n _this4.preClickTime = Date.now();\n };\n\n this.onTouchStart = function (e) {\n _this4.fireEvents('onTouchStart', e);\n _this4.preTouchTime = Date.now();\n };\n\n this.onBlur = function (e) {\n _this4.fireEvents('onBlur', e);\n _this4.clearDelayTimer();\n if (_this4.isBlurToHide()) {\n _this4.delaySetPopupVisible(false, _this4.props.blurDelay);\n }\n };\n\n this.onContextMenu = function (e) {\n e.preventDefault();\n _this4.fireEvents('onContextMenu', e);\n _this4.setPopupVisible(true, e);\n };\n\n this.onContextMenuClose = function () {\n if (_this4.isContextMenuToShow()) {\n _this4.close();\n }\n };\n\n this.onClick = function (event) {\n _this4.fireEvents('onClick', event);\n // focus will trigger click\n if (_this4.focusTime) {\n var preTime = void 0;\n if (_this4.preClickTime && _this4.preTouchTime) {\n preTime = Math.min(_this4.preClickTime, _this4.preTouchTime);\n } else if (_this4.preClickTime) {\n preTime = _this4.preClickTime;\n } else if (_this4.preTouchTime) {\n preTime = _this4.preTouchTime;\n }\n if (Math.abs(preTime - _this4.focusTime) < 20) {\n return;\n }\n _this4.focusTime = 0;\n }\n _this4.preClickTime = 0;\n _this4.preTouchTime = 0;\n\n // Only prevent default when all the action is click.\n // https://github.com/ant-design/ant-design/issues/17043\n // https://github.com/ant-design/ant-design/issues/17291\n if (_this4.isClickToShow() && (_this4.isClickToHide() || _this4.isBlurToHide()) && event && event.preventDefault) {\n event.preventDefault();\n }\n var nextVisible = !_this4.state.popupVisible;\n if (_this4.isClickToHide() && !nextVisible || nextVisible && _this4.isClickToShow()) {\n _this4.setPopupVisible(!_this4.state.popupVisible, event);\n }\n };\n\n this.onPopupMouseDown = function () {\n var _context$rcTrigger = _this4.context.rcTrigger,\n rcTrigger = _context$rcTrigger === undefined ? {} : _context$rcTrigger;\n\n _this4.hasPopupMouseDown = true;\n\n clearTimeout(_this4.mouseDownTimeout);\n _this4.mouseDownTimeout = setTimeout(function () {\n _this4.hasPopupMouseDown = false;\n }, 0);\n\n if (rcTrigger.onPopupMouseDown) {\n rcTrigger.onPopupMouseDown.apply(rcTrigger, arguments);\n }\n };\n\n this.onDocumentClick = function (event) {\n if (_this4.props.mask && !_this4.props.maskClosable) {\n return;\n }\n\n var target = event.target;\n var root = findDOMNode(_this4);\n if (!contains(root, target) && !_this4.hasPopupMouseDown) {\n _this4.close();\n }\n };\n\n this.getRootDomNode = function () {\n return findDOMNode(_this4);\n };\n\n this.getPopupClassNameFromAlign = function (align) {\n var className = [];\n var _props9 = _this4.props,\n popupPlacement = _props9.popupPlacement,\n builtinPlacements = _props9.builtinPlacements,\n prefixCls = _props9.prefixCls,\n alignPoint = _props9.alignPoint,\n getPopupClassNameFromAlign = _props9.getPopupClassNameFromAlign;\n\n if (popupPlacement && builtinPlacements) {\n className.push(getAlignPopupClassName(builtinPlacements, prefixCls, align, alignPoint));\n }\n if (getPopupClassNameFromAlign) {\n className.push(getPopupClassNameFromAlign(align));\n }\n return className.join(' ');\n };\n\n this.getComponent = function () {\n var _props10 = _this4.props,\n prefixCls = _props10.prefixCls,\n destroyPopupOnHide = _props10.destroyPopupOnHide,\n popupClassName = _props10.popupClassName,\n action = _props10.action,\n onPopupAlign = _props10.onPopupAlign,\n popupAnimation = _props10.popupAnimation,\n popupTransitionName = _props10.popupTransitionName,\n popupStyle = _props10.popupStyle,\n mask = _props10.mask,\n maskAnimation = _props10.maskAnimation,\n maskTransitionName = _props10.maskTransitionName,\n zIndex = _props10.zIndex,\n popup = _props10.popup,\n stretch = _props10.stretch,\n alignPoint = _props10.alignPoint;\n var _state = _this4.state,\n popupVisible = _state.popupVisible,\n point = _state.point;\n\n\n var align = _this4.getPopupAlign();\n\n var mouseProps = {};\n if (_this4.isMouseEnterToShow()) {\n mouseProps.onMouseEnter = _this4.onPopupMouseEnter;\n }\n if (_this4.isMouseLeaveToHide()) {\n mouseProps.onMouseLeave = _this4.onPopupMouseLeave;\n }\n\n mouseProps.onMouseDown = _this4.onPopupMouseDown;\n mouseProps.onTouchStart = _this4.onPopupMouseDown;\n\n return React.createElement(\n Popup,\n _extends({\n prefixCls: prefixCls,\n destroyPopupOnHide: destroyPopupOnHide,\n visible: popupVisible,\n point: alignPoint && point,\n className: popupClassName,\n action: action,\n align: align,\n onAlign: onPopupAlign,\n animation: popupAnimation,\n getClassNameFromAlign: _this4.getPopupClassNameFromAlign\n }, mouseProps, {\n stretch: stretch,\n getRootDomNode: _this4.getRootDomNode,\n style: popupStyle,\n mask: mask,\n zIndex: zIndex,\n transitionName: popupTransitionName,\n maskAnimation: maskAnimation,\n maskTransitionName: maskTransitionName,\n ref: _this4.savePopup\n }),\n typeof popup === 'function' ? popup() : popup\n );\n };\n\n this.getContainer = function () {\n var props = _this4.props;\n\n var popupContainer = document.createElement('div');\n // Make sure default popup container will never cause scrollbar appearing\n // https://github.com/react-component/trigger/issues/41\n popupContainer.style.position = 'absolute';\n popupContainer.style.top = '0';\n popupContainer.style.left = '0';\n popupContainer.style.width = '100%';\n var mountNode = props.getPopupContainer ? props.getPopupContainer(findDOMNode(_this4)) : props.getDocument().body;\n mountNode.appendChild(popupContainer);\n return popupContainer;\n };\n\n this.setPoint = function (point) {\n var alignPoint = _this4.props.alignPoint;\n\n if (!alignPoint || !point) return;\n\n _this4.setState({\n point: {\n pageX: point.pageX,\n pageY: point.pageY\n }\n });\n };\n\n this.handlePortalUpdate = function () {\n if (_this4.state.prevPopupVisible !== _this4.state.popupVisible) {\n _this4.props.afterPopupVisibleChange(_this4.state.popupVisible);\n }\n };\n\n this.savePopup = function (node) {\n _this4._component = node;\n };\n};\n\npolyfill(Trigger);\n\nexport default Trigger;","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\n\nvar targetOffset = [0, 0];\n\nexport var placements = {\n left: {\n points: ['cr', 'cl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n right: {\n points: ['cl', 'cr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n top: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottom: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n rightBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n leftBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n }\n};\n\nexport default placements;","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar Content = function (_React$Component) {\n _inherits(Content, _React$Component);\n\n function Content() {\n _classCallCheck(this, Content);\n\n return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n Content.prototype.componentDidUpdate = function componentDidUpdate() {\n var trigger = this.props.trigger;\n\n if (trigger) {\n trigger.forcePopupAlign();\n }\n };\n\n Content.prototype.render = function render() {\n var _props = this.props,\n overlay = _props.overlay,\n prefixCls = _props.prefixCls,\n id = _props.id;\n\n return React.createElement(\n 'div',\n { className: prefixCls + '-inner', id: id, role: 'tooltip' },\n typeof overlay === 'function' ? overlay() : overlay\n );\n };\n\n return Content;\n}(React.Component);\n\nContent.propTypes = {\n prefixCls: PropTypes.string,\n overlay: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\n id: PropTypes.string,\n trigger: PropTypes.any\n};\nexport default Content;","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport Trigger from 'rc-trigger';\nimport { placements } from './placements';\nimport Content from './Content';\n\nvar Tooltip = function (_Component) {\n _inherits(Tooltip, _Component);\n\n function Tooltip() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Tooltip);\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, _Component.call.apply(_Component, [this].concat(args))), _this), _this.getPopupElement = function () {\n var _this$props = _this.props,\n arrowContent = _this$props.arrowContent,\n overlay = _this$props.overlay,\n prefixCls = _this$props.prefixCls,\n id = _this$props.id;\n\n return [React.createElement(\n 'div',\n { className: prefixCls + '-arrow', key: 'arrow' },\n arrowContent\n ), React.createElement(Content, {\n key: 'content',\n trigger: _this.trigger,\n prefixCls: prefixCls,\n id: id,\n overlay: overlay\n })];\n }, _this.saveTrigger = function (node) {\n _this.trigger = node;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Tooltip.prototype.getPopupDomNode = function getPopupDomNode() {\n return this.trigger.getPopupDomNode();\n };\n\n Tooltip.prototype.render = function render() {\n var _props = this.props,\n overlayClassName = _props.overlayClassName,\n trigger = _props.trigger,\n mouseEnterDelay = _props.mouseEnterDelay,\n mouseLeaveDelay = _props.mouseLeaveDelay,\n overlayStyle = _props.overlayStyle,\n prefixCls = _props.prefixCls,\n children = _props.children,\n onVisibleChange = _props.onVisibleChange,\n afterVisibleChange = _props.afterVisibleChange,\n transitionName = _props.transitionName,\n animation = _props.animation,\n placement = _props.placement,\n align = _props.align,\n destroyTooltipOnHide = _props.destroyTooltipOnHide,\n defaultVisible = _props.defaultVisible,\n getTooltipContainer = _props.getTooltipContainer,\n restProps = _objectWithoutProperties(_props, ['overlayClassName', 'trigger', 'mouseEnterDelay', 'mouseLeaveDelay', 'overlayStyle', 'prefixCls', 'children', 'onVisibleChange', 'afterVisibleChange', 'transitionName', 'animation', 'placement', 'align', 'destroyTooltipOnHide', 'defaultVisible', 'getTooltipContainer']);\n\n var extraProps = _extends({}, restProps);\n if ('visible' in this.props) {\n extraProps.popupVisible = this.props.visible;\n }\n return React.createElement(\n Trigger,\n _extends({\n popupClassName: overlayClassName,\n ref: this.saveTrigger,\n prefixCls: prefixCls,\n popup: this.getPopupElement,\n action: trigger,\n builtinPlacements: placements,\n popupPlacement: placement,\n popupAlign: align,\n getPopupContainer: getTooltipContainer,\n onPopupVisibleChange: onVisibleChange,\n afterPopupVisibleChange: afterVisibleChange,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n defaultPopupVisible: defaultVisible,\n destroyPopupOnHide: destroyTooltipOnHide,\n mouseLeaveDelay: mouseLeaveDelay,\n popupStyle: overlayStyle,\n mouseEnterDelay: mouseEnterDelay\n }, extraProps),\n children\n );\n };\n\n return Tooltip;\n}(Component);\n\nTooltip.propTypes = {\n trigger: PropTypes.any,\n children: PropTypes.any,\n defaultVisible: PropTypes.bool,\n visible: PropTypes.bool,\n placement: PropTypes.string,\n transitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n animation: PropTypes.any,\n onVisibleChange: PropTypes.func,\n afterVisibleChange: PropTypes.func,\n overlay: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,\n overlayStyle: PropTypes.object,\n overlayClassName: PropTypes.string,\n prefixCls: PropTypes.string,\n mouseEnterDelay: PropTypes.number,\n mouseLeaveDelay: PropTypes.number,\n getTooltipContainer: PropTypes.func,\n destroyTooltipOnHide: PropTypes.bool,\n align: PropTypes.object,\n arrowContent: PropTypes.any,\n id: PropTypes.string\n};\nTooltip.defaultProps = {\n prefixCls: 'rc-tooltip',\n mouseEnterDelay: 0,\n destroyTooltipOnHide: false,\n mouseLeaveDelay: 0.1,\n align: {},\n placement: 'right',\n trigger: ['hover'],\n arrowContent: null\n};\n\n\nexport default Tooltip;","import Tooltip from './Tooltip';\n\nexport default Tooltip;","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Tooltip from 'rc-tooltip';\nimport Handle from './Handle';\n\nexport default function createSliderWithTooltip(Component) {\n var _class, _temp2;\n\n return _temp2 = _class = function (_React$Component) {\n _inherits(ComponentWrapper, _React$Component);\n\n function ComponentWrapper() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ComponentWrapper);\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 = ComponentWrapper.__proto__ || Object.getPrototypeOf(ComponentWrapper)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n visibles: {}\n }, _this.handleTooltipVisibleChange = function (index, visible) {\n _this.setState(function (prevState) {\n return {\n visibles: _extends({}, prevState.visibles, _defineProperty({}, index, visible))\n };\n });\n }, _this.handleWithTooltip = function (_ref2) {\n var value = _ref2.value,\n dragging = _ref2.dragging,\n index = _ref2.index,\n disabled = _ref2.disabled,\n restProps = _objectWithoutProperties(_ref2, ['value', 'dragging', 'index', 'disabled']);\n\n var _this$props = _this.props,\n tipFormatter = _this$props.tipFormatter,\n tipProps = _this$props.tipProps,\n handleStyle = _this$props.handleStyle;\n\n var _tipProps$prefixCls = tipProps.prefixCls,\n prefixCls = _tipProps$prefixCls === undefined ? 'rc-slider-tooltip' : _tipProps$prefixCls,\n _tipProps$overlay = tipProps.overlay,\n overlay = _tipProps$overlay === undefined ? tipFormatter(value) : _tipProps$overlay,\n _tipProps$placement = tipProps.placement,\n placement = _tipProps$placement === undefined ? 'top' : _tipProps$placement,\n _tipProps$visible = tipProps.visible,\n visible = _tipProps$visible === undefined ? false : _tipProps$visible,\n restTooltipProps = _objectWithoutProperties(tipProps, ['prefixCls', 'overlay', 'placement', 'visible']);\n\n var handleStyleWithIndex = void 0;\n if (Array.isArray(handleStyle)) {\n handleStyleWithIndex = handleStyle[index] || handleStyle[0];\n } else {\n handleStyleWithIndex = handleStyle;\n }\n\n return React.createElement(\n Tooltip,\n _extends({}, restTooltipProps, {\n prefixCls: prefixCls,\n overlay: overlay,\n placement: placement,\n visible: !disabled && (_this.state.visibles[index] || dragging) || visible,\n key: index\n }),\n React.createElement(Handle, _extends({}, restProps, {\n style: _extends({}, handleStyleWithIndex),\n value: value,\n onMouseEnter: function onMouseEnter() {\n return _this.handleTooltipVisibleChange(index, true);\n },\n onMouseLeave: function onMouseLeave() {\n return _this.handleTooltipVisibleChange(index, false);\n }\n }))\n );\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ComponentWrapper, [{\n key: 'render',\n value: function render() {\n return React.createElement(Component, _extends({}, this.props, { handle: this.handleWithTooltip }));\n }\n }]);\n\n return ComponentWrapper;\n }(React.Component), _class.propTypes = {\n tipFormatter: PropTypes.func,\n handleStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object)]),\n tipProps: PropTypes.object\n }, _class.defaultProps = {\n tipFormatter: function tipFormatter(value) {\n return value;\n },\n\n handleStyle: [{}],\n tipProps: {}\n }, _temp2;\n}","import Slider from './Slider';\nimport Range from './Range';\nimport Handle from './Handle';\nimport createSliderWithTooltip from './createSliderWithTooltip';\n\nSlider.Range = Range;\nSlider.Handle = Handle;\nSlider.createSliderWithTooltip = createSliderWithTooltip;\nexport default Slider;\nexport { Range, Handle, createSliderWithTooltip };","import { useMemo } from \"react\";\nimport Slider from \"rc-slider\";\nimport { Slider as SliderType } from \"../../types\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\n\ninterface Props {\n id: string;\n band: SliderType;\n onChange(value: number): void;\n}\n\nconst MAX_VALUE = 100;\n// Given a value between 1-100, return the sprite number (0-27)\nexport const spriteNumber = (value: number): number => {\n const percent = value / 100;\n return Math.round(percent * 27);\n};\n\n// Given a sprite number, return the x,y\nexport const spriteOffsets = (number: number): { x: number; y: number } => {\n const x = number % 14;\n const y = Math.floor(number / 14);\n return { x, y };\n};\n\nconst Handle = () => <div className=\"rc-slider-handle\" />;\n\nexport default function Band({ id, onChange, band }: Props) {\n const sliders = useTypedSelector(Selectors.getSliders);\n const value = sliders[band];\n const backgroundPosition = useMemo(() => {\n const { x, y } = spriteOffsets(spriteNumber(value));\n const xOffset = x * 15; // Each sprite is 15px wide\n const yOffset = y * 65; // Each sprite is 15px tall\n return `-${xOffset}px -${yOffset}px`;\n }, [value]);\n const focusBand = useActionCreator(Actions.focusBand);\n const usetFocus = useActionCreator(Actions.unsetFocus);\n\n const handleMouseDown = () => focusBand(band);\n\n return (\n <div id={id} className=\"band\" style={{ backgroundPosition }}>\n <Slider\n min={0}\n max={MAX_VALUE}\n step={1}\n value={MAX_VALUE - value}\n vertical\n onChange={onChange}\n onBeforeChange={handleMouseDown}\n onAfterChange={usetFocus}\n handle={Handle}\n />\n </div>\n );\n}\n","import classnames from \"classnames\";\n\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { useActionCreator, useTypedSelector } from \"../../hooks\";\n\nconst EqOn = () => {\n const toggleEq = useActionCreator(Actions.toggleEq);\n const on = useTypedSelector(Selectors.getEqualizerEnabled);\n return (\n <div id=\"on\" className={classnames({ selected: on })} onClick={toggleEq} />\n );\n};\n\nexport default EqOn;\n","import { memo } from \"react\";\nimport classnames from \"classnames\";\n\nimport * as Actions from \"../../actionCreators\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nconst EqAuto = memo(() => {\n const selected = useTypedSelector((state) => state.equalizer.auto);\n const toggleAuto = useActionCreator(Actions.toggleEqAuto);\n return (\n <div id=\"auto\" className={classnames({ selected })} onClick={toggleAuto} />\n );\n});\n\nexport default EqAuto;\n","// Adapted from https://github.com/morganherlocker/cubic-spline\n\nexport default function spline(xs, ys) {\n const ks = getNaturalKs(xs, ys);\n const maxX = xs[xs.length - 1];\n const allYs = [];\n let i = 1;\n for (let x = 0; x <= maxX; x++) {\n while (xs[i] < x) i++;\n const t = (x - xs[i - 1]) / (xs[i] - xs[i - 1]);\n const a = ks[i - 1] * (xs[i] - xs[i - 1]) - (ys[i] - ys[i - 1]);\n const b = -ks[i] * (xs[i] - xs[i - 1]) + (ys[i] - ys[i - 1]);\n const q =\n (1 - t) * ys[i - 1] + t * ys[i] + t * (1 - t) * (a * (1 - t) + b * t);\n allYs.push(q);\n }\n return allYs;\n}\n\nfunction getNaturalKs(xs, ys) {\n const ks = xs.map(() => 0);\n const n = xs.length - 1;\n const matrix = zerosMatrix(n + 1, n + 2);\n\n for (\n let i = 1;\n i < n;\n i++ // rows\n ) {\n matrix[i][i - 1] = 1 / (xs[i] - xs[i - 1]);\n matrix[i][i] = 2 * (1 / (xs[i] - xs[i - 1]) + 1 / (xs[i + 1] - xs[i]));\n matrix[i][i + 1] = 1 / (xs[i + 1] - xs[i]);\n matrix[i][n + 1] =\n 3 *\n ((ys[i] - ys[i - 1]) / ((xs[i] - xs[i - 1]) * (xs[i] - xs[i - 1])) +\n (ys[i + 1] - ys[i]) / ((xs[i + 1] - xs[i]) * (xs[i + 1] - xs[i])));\n }\n\n matrix[0][0] = 2 / (xs[1] - xs[0]);\n matrix[0][1] = 1 / (xs[1] - xs[0]);\n matrix[0][n + 1] =\n (3 * (ys[1] - ys[0])) / ((xs[1] - xs[0]) * (xs[1] - xs[0]));\n\n matrix[n][n - 1] = 1 / (xs[n] - xs[n - 1]);\n matrix[n][n] = 2 / (xs[n] - xs[n - 1]);\n matrix[n][n + 1] =\n (3 * (ys[n] - ys[n - 1])) / ((xs[n] - xs[n - 1]) * (xs[n] - xs[n - 1]));\n\n return solve(matrix, ks);\n}\n\nfunction solve(matrix, ks) {\n const m = matrix.length;\n // column\n for (let k = 0; k < m; k++) {\n // pivot for column\n let iMax = 0;\n let vali = Number.NEGATIVE_INFINITY;\n for (let i = k; i < m; i++)\n if (matrix[i][k] > vali) {\n iMax = i;\n vali = matrix[i][k];\n }\n swapRows(matrix, k, iMax);\n\n // for all rows below pivot\n for (let i = k + 1; i < m; i++) {\n for (let j = k + 1; j < m + 1; j++)\n matrix[i][j] =\n matrix[i][j] - matrix[k][j] * (matrix[i][k] / matrix[k][k]);\n matrix[i][k] = 0;\n }\n }\n // rows = columns\n for (let i = m - 1; i >= 0; i--) {\n const v = matrix[i][m] / matrix[i][i];\n ks[i] = v;\n // rows\n for (let j = i - 1; j >= 0; j--) {\n matrix[j][m] -= matrix[j][i] * v;\n matrix[j][i] = 0;\n }\n }\n return ks;\n}\n\nfunction zerosMatrix(rows, columns) {\n const matrix = [];\n for (let i = 0; i < rows; i++) {\n matrix.push([]);\n for (let j = 0; j < columns; j++) {\n matrix[i].push(0);\n }\n }\n return matrix;\n}\n\nfunction swapRows(m, k, l) {\n const p = m[k];\n m[k] = m[l];\n m[l] = p;\n}\n","import { useState, useMemo, useLayoutEffect } from \"react\";\nimport { percentToRange, clamp } from \"../../utils\";\nimport { BANDS } from \"../../constants\";\nimport spline from \"./spline\";\nimport * as Selectors from \"../../selectors\";\nimport { usePromiseValueOrNull, useTypedSelector } from \"../../hooks\";\nimport { Slider } from \"../../types\";\n\nconst GRAPH_HEIGHT = 19;\nconst GRAPH_WIDTH = 113;\n\nfunction EqGraph() {\n const sliders = useTypedSelector(Selectors.getSliders);\n\n const preampLineImagePromise = useTypedSelector(Selectors.getPreampLineImage);\n const preampLineImage = usePromiseValueOrNull(preampLineImagePromise);\n\n const [canvasNode, setCanvasNode] = useState<HTMLCanvasElement | null>(null);\n\n const canvasCtx = useMemo(() => canvasNode?.getContext(\"2d\") ?? null, [\n canvasNode,\n ]);\n const colorPattern = useColorPattern(canvasCtx);\n\n useLayoutEffect(() => {\n if (\n canvasCtx == null ||\n canvasNode == null ||\n preampLineImage == null ||\n colorPattern == null\n ) {\n return;\n }\n const width = Number(canvasNode.width);\n const height = Number(canvasNode.height);\n canvasCtx.clearRect(0, 0, width, height);\n drawEqLine({ colorPattern, sliders, canvasCtx, preampLineImage });\n }, [canvasCtx, canvasNode, colorPattern, preampLineImage, sliders]);\n\n return (\n <canvas\n id=\"eqGraph\"\n ref={setCanvasNode}\n width={GRAPH_WIDTH}\n height={GRAPH_HEIGHT}\n />\n );\n}\n\nfunction useColorPattern(canvasCtx: CanvasRenderingContext2D | null) {\n const lineColorsImagePromise = useTypedSelector(Selectors.getLineColorsImage);\n const lineColorsImage = usePromiseValueOrNull(lineColorsImagePromise);\n return useMemo(() => {\n if (canvasCtx == null || lineColorsImage == null) {\n return null;\n }\n return canvasCtx.createPattern(lineColorsImage, \"repeat-x\");\n }, [canvasCtx, lineColorsImage]);\n}\n\nfunction drawEqLine({\n colorPattern,\n sliders,\n canvasCtx,\n preampLineImage,\n}: {\n sliders: Record<Slider, number>;\n colorPattern: CanvasPattern;\n preampLineImage: HTMLImageElement;\n canvasCtx: CanvasRenderingContext2D;\n}) {\n const preampValue = percentToRange(sliders.preamp / 100, 0, GRAPH_HEIGHT - 1);\n canvasCtx.drawImage(\n preampLineImage,\n 0,\n preampValue,\n preampLineImage.width,\n preampLineImage.height\n );\n\n const amplitudes = BANDS.map((band) => sliders[band]);\n\n canvasCtx.fillStyle = colorPattern;\n const paddingLeft = 2; // TODO: This should be 1.5\n\n const min = 0;\n const max = GRAPH_HEIGHT - 1;\n\n const xs: number[] = [];\n const ys: number[] = [];\n amplitudes.forEach((value, i) => {\n const percent = (100 - value) / 100;\n // Each band is 12 pixels widex\n xs.push(i * 12);\n ys.push(percentToRange(percent, min, max));\n });\n\n const allYs = spline(xs, ys);\n\n const maxX = xs[xs.length - 1];\n let lastY = ys[0];\n for (let x = 0; x <= maxX; x++) {\n const y = clamp(Math.round(allYs[x]), 0, GRAPH_HEIGHT - 1);\n const yTop = Math.min(y, lastY);\n const height = 1 + Math.abs(lastY - y);\n canvasCtx.fillRect(paddingLeft + x, yTop, 1, height);\n lastY = y;\n }\n}\n\nexport default EqGraph;\n","import builtin from \"../../../presets/builtin.json\";\nimport * as Actions from \"../../actionCreators\";\nimport { Node, Parent, Hr } from \"../ContextMenu\";\nimport ContextMenuTarget from \"../ContextMenuTarget\";\nimport { useActionCreator } from \"../../hooks\";\n\nconst PresetsContextMenu = () => {\n const openEqfFileDialog = useActionCreator(Actions.openEqfFileDialog);\n const downloadPreset = useActionCreator(Actions.downloadPreset);\n const setEqFromObject = useActionCreator(Actions.setEqFromObject);\n return (\n <ContextMenuTarget\n top\n id=\"presets-context\"\n renderMenu={() => (\n <>\n <Parent label=\"Load\">\n {builtin.presets.map((preset) => (\n <Node\n key={preset.name}\n onClick={() => setEqFromObject(preset)}\n label={preset.name}\n />\n ))}\n <Hr />\n <Node onClick={openEqfFileDialog} label=\"From Eqf...\" />\n </Parent>\n <Node onClick={downloadPreset} label=\"Save\" />\n </>\n )}\n >\n <div id=\"presets\" />\n </ContextMenuTarget>\n );\n};\n\nexport default PresetsContextMenu;\n","import ClickedDiv from \"../ClickedDiv\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport * as Selectors from \"../../selectors\";\nimport * as Actions from \"../../actionCreators\";\nimport { WINDOWS } from \"../../constants\";\n\nexport default function EqTitleButtons() {\n const focusedWindow = useTypedSelector(Selectors.getFocusedWindow);\n\n const selected = focusedWindow === WINDOWS.EQUALIZER;\n const closeWindow = useActionCreator(Actions.closeWindow);\n const toggleEqualizerShadeMode = useActionCreator(\n Actions.toggleEqualizerShadeMode\n );\n return (\n <ClickedDiv id=\"eq-buttons\" key={selected ? \"selected\" : \"unselected\"}>\n <div id=\"equalizer-shade\" onClick={toggleEqualizerShadeMode} />\n <div\n id=\"equalizer-close\"\n onClick={() => closeWindow(WINDOWS.EQUALIZER)}\n />\n </ClickedDiv>\n );\n}\n","import Volume from \"../Volume\";\nimport Balance from \"../Balance\";\nimport { segment } from \"../../utils\";\nimport EqTitleButtons from \"./EqTitleButtons\";\n\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\n\nconst EqualizerShade = () => {\n const volume = useTypedSelector(Selectors.getVolume);\n const balance = useTypedSelector(Selectors.getBalance);\n const toggleEqualizerShadeMode = useActionCreator(\n Actions.toggleEqualizerShadeMode\n );\n\n const classes = [\"left\", \"center\", \"right\"];\n const eqVolumeClassName = segment(0, 100, volume, classes);\n const eqBalanceClassName = segment(-100, 100, balance, classes);\n return (\n <div\n className=\"draggable\"\n onDoubleClick={toggleEqualizerShadeMode}\n style={{ width: \"100%\", height: \"100%\" }}\n >\n <EqTitleButtons />\n <Volume id=\"equalizer-volume\" className={eqVolumeClassName} />\n <Balance id=\"equalizer-balance\" className={eqBalanceClassName} />\n </div>\n );\n};\nexport default EqualizerShade;\n","import classnames from \"classnames\";\n\nimport { BANDS, WINDOWS } from \"../../constants\";\nimport * as Actions from \"../../actionCreators\";\nimport * as Selectors from \"../../selectors\";\n\nimport Band from \"./Band\";\nimport EqOn from \"./EqOn\";\nimport EqAuto from \"./EqAuto\";\nimport EqGraph from \"./EqGraph\";\nimport PresetsContextMenu from \"./PresetsContextMenu\";\nimport EqualizerShade from \"./EqualizerShade\";\n\nimport \"../../../css/equalizer-window.css\";\nimport { Band as BandType } from \"../../types\";\nimport FocusTarget from \"../FocusTarget\";\nimport { useTypedSelector, useActionCreator } from \"../../hooks\";\nimport EqTitleButtons from \"./EqTitleButtons\";\n\nconst bandClassName = (band: BandType) => `band-${band}`;\n\nconst EqualizerWindow = () => {\n const doubled = useTypedSelector(Selectors.getDoubled);\n const focusedWindow = useTypedSelector(Selectors.getFocusedWindow);\n const getWindowShade = useTypedSelector(Selectors.getWindowShade);\n\n const selected = focusedWindow === WINDOWS.EQUALIZER;\n const shade = getWindowShade(WINDOWS.EQUALIZER);\n\n const setPreampValue = useActionCreator(Actions.setPreamp);\n const setEqToMin = useActionCreator(Actions.setEqToMin);\n const setEqToMid = useActionCreator(Actions.setEqToMid);\n const setEqToMax = useActionCreator(Actions.setEqToMax);\n const setHertzValue = useActionCreator(Actions.setEqBand);\n const toggleEqualizerShadeMode = useActionCreator(\n Actions.toggleEqualizerShadeMode\n );\n\n const className = classnames({\n selected,\n doubled,\n shade,\n window: true,\n draggable: true,\n });\n return (\n <div id=\"equalizer-window\" className={className}>\n <FocusTarget windowId={WINDOWS.EQUALIZER}>\n {shade ? (\n <EqualizerShade />\n ) : (\n <div>\n <div\n className=\"equalizer-top title-bar draggable\"\n onDoubleClick={toggleEqualizerShadeMode}\n >\n <EqTitleButtons />\n </div>\n <EqOn />\n <EqAuto />\n <EqGraph />\n <PresetsContextMenu />\n <Band id=\"preamp\" band=\"preamp\" onChange={setPreampValue} />\n <div id=\"plus12db\" onClick={setEqToMax} />\n <div id=\"zerodb\" onClick={setEqToMid} />\n <div id=\"minus12db\" onClick={setEqToMin} />\n {BANDS.map((hertz) => (\n <Band\n key={hertz}\n id={bandClassName(hertz)}\n band={hertz}\n onChange={(value) => setHertzValue(hertz, value)}\n />\n ))}\n </div>\n )}\n </FocusTarget>\n </div>\n );\n};\nexport default EqualizerWindow;\n","import { LETTERS } from \"./constants\";\nimport { FONT_LOOKUP, imageConstFromChar } from \"./skinSprites\";\n\ninterface Selectors {\n [name: string]: string[];\n}\n\nexport const imageSelectors: Selectors = {\n MAIN_BALANCE_BACKGROUND: [\"#balance\"],\n MAIN_BALANCE_THUMB: [\n \"#balance::-webkit-slider-thumb\",\n \"#balance::-moz-range-thumb\",\n ],\n MAIN_BALANCE_THUMB_ACTIVE: [\n \"#balance:active::-webkit-slider-thumb\",\n \"#balance:active::-moz-range-thumb\",\n ],\n MAIN_PREVIOUS_BUTTON: [\".actions #previous\"],\n MAIN_PREVIOUS_BUTTON_ACTIVE: [\".actions #previous:active\"],\n MAIN_PLAY_BUTTON: [\".actions #play\"],\n MAIN_PLAY_BUTTON_ACTIVE: [\".actions #play:active\"],\n MAIN_PAUSE_BUTTON: [\".actions #pause\"],\n MAIN_PAUSE_BUTTON_ACTIVE: [\".actions #pause:active\"],\n MAIN_STOP_BUTTON: [\".actions #stop\"],\n MAIN_STOP_BUTTON_ACTIVE: [\".actions #stop:active\"],\n MAIN_NEXT_BUTTON: [\".actions #next\"],\n MAIN_NEXT_BUTTON_ACTIVE: [\".actions #next:active\"],\n MAIN_EJECT_BUTTON: [\"#eject\"],\n MAIN_EJECT_BUTTON_ACTIVE: [\"#eject:active\"],\n MAIN_WINDOW_BACKGROUND: [\"#main-window\"],\n MAIN_STEREO: [\".media-info #stereo\", \".stop .media-info #stereo.selected\"],\n MAIN_STEREO_SELECTED: [\".media-info #stereo.selected\"],\n MAIN_MONO: [\".media-info #mono\", \".stop .media-info #mono.selected\"],\n MAIN_MONO_SELECTED: [\".media-info #mono.selected\"],\n NO_MINUS_SIGN: [\"#time #minus-sign\"],\n MINUS_SIGN: [\"#time.countdown #minus-sign\"],\n DIGIT_0: [\".digit-0\"],\n DIGIT_1: [\".digit-1\"],\n DIGIT_2: [\".digit-2\"],\n DIGIT_3: [\".digit-3\"],\n DIGIT_4: [\".digit-4\"],\n DIGIT_5: [\".digit-5\"],\n DIGIT_6: [\".digit-6\"],\n DIGIT_7: [\".digit-7\"],\n DIGIT_8: [\".digit-8\"],\n DIGIT_9: [\".digit-9\"],\n NO_MINUS_SIGN_EX: [\"#time #minus-sign\"],\n MINUS_SIGN_EX: [\"#time.countdown #minus-sign\"],\n DIGIT_0_EX: [\".digit-0\"],\n DIGIT_1_EX: [\".digit-1\"],\n DIGIT_2_EX: [\".digit-2\"],\n DIGIT_3_EX: [\".digit-3\"],\n DIGIT_4_EX: [\".digit-4\"],\n DIGIT_5_EX: [\".digit-5\"],\n DIGIT_6_EX: [\".digit-6\"],\n DIGIT_7_EX: [\".digit-7\"],\n DIGIT_8_EX: [\".digit-8\"],\n DIGIT_9_EX: [\".digit-9\"],\n MAIN_PLAYING_INDICATOR: [\".play #play-pause\"],\n MAIN_PAUSED_INDICATOR: [\".pause #play-pause\"],\n MAIN_STOPPED_INDICATOR: [\".stop #play-pause\"],\n MAIN_NOT_WORKING_INDICATOR: [\"#work-indicator\"],\n MAIN_WORKING_INDICATOR: [\"#work-indicator.selected\"],\n PLAYLIST_TOP_TILE: [\n \".playlist-top-left-fill\",\n \".playlist-top-left-spacer\",\n \".playlist-top-right-fill\",\n \".playlist-top-right-spacer\",\n ],\n PLAYLIST_TOP_LEFT_CORNER: [\".playlist-top-left\"],\n PLAYLIST_TITLE_BAR: [\".playlist-top-title\"],\n PLAYLIST_TOP_RIGHT_CORNER: [\".playlist-top-right\"],\n PLAYLIST_TOP_TILE_SELECTED: [\n \".selected .playlist-top-left-fill\",\n \".selected .playlist-top-left-spacer\",\n \".selected .playlist-top-right-fill\",\n \".selected .playlist-top-right-spacer\",\n ],\n PLAYLIST_TOP_LEFT_SELECTED: [\".selected .playlist-top-left\"],\n PLAYLIST_TITLE_BAR_SELECTED: [\".selected .playlist-top-title\"],\n PLAYLIST_TOP_RIGHT_CORNER_SELECTED: [\".selected .playlist-top-right\"],\n PLAYLIST_LEFT_TILE: [\".playlist-middle-left\"],\n PLAYLIST_RIGHT_TILE: [\".playlist-middle-right\"],\n PLAYLIST_SCROLL_HANDLE: [\".playlist-scrollbar-handle\"],\n PLAYLIST_SCROLL_HANDLE_SELECTED: [\n \".playlist-middle-right:active .playlist-scrollbar-handle\",\n ],\n PLAYLIST_BOTTOM_TILE: [\".playlist-bottom\"],\n PLAYLIST_BOTTOM_LEFT_CORNER: [\".playlist-bottom-left\"],\n PLAYLIST_BOTTOM_RIGHT_CORNER: [\".playlist-bottom-right\"],\n PLAYLIST_VISUALIZER_BACKGROUND: [\".playlist-visualizer\"],\n PLAYLIST_SHADE_BACKGROUND: [\"#playlist-window-shade\"],\n PLAYLIST_SHADE_BACKGROUND_LEFT: [\"#playlist-window-shade .left\"],\n PLAYLIST_SHADE_BACKGROUND_RIGHT: [\"#playlist-window-shade .right\"],\n PLAYLIST_SHADE_BACKGROUND_RIGHT_SELECTED: [\n \"#playlist-window-shade.selected .right\",\n ],\n\n PLAYLIST_ADD_MENU_BAR: [\"#playlist-add-menu.selected .bar\"],\n PLAYLIST_ADD_URL: [\"#playlist-add-menu .add-url\"],\n PLAYLIST_ADD_URL_SELECTED: [\"#playlist-add-menu .hover .add-url\"],\n PLAYLIST_ADD_DIR: [\"#playlist-add-menu .add-dir\"],\n PLAYLIST_ADD_DIR_SELECTED: [\"#playlist-add-menu .hover .add-dir\"],\n PLAYLIST_ADD_FILE: [\"#playlist-add-menu .add-file\"],\n PLAYLIST_ADD_FILE_SELECTED: [\"#playlist-add-menu .hover .add-file\"],\n\n PLAYLIST_REMOVE_MENU_BAR: [\"#playlist-remove-menu.selected .bar\"],\n PLAYLIST_REMOVE_ALL: [\"#playlist-remove-menu .remove-all\"],\n PLAYLIST_REMOVE_ALL_SELECTED: [\"#playlist-remove-menu .hover .remove-all\"],\n PLAYLIST_CROP: [\"#playlist-remove-menu .crop\"],\n PLAYLIST_CROP_SELECTED: [\"#playlist-remove-menu .hover .crop\"],\n PLAYLIST_REMOVE_SELECTED: [\"#playlist-remove-menu .remove-selected\"],\n PLAYLIST_REMOVE_SELECTED_SELECTED: [\n \"#playlist-remove-menu .hover .remove-selected\",\n ],\n PLAYLIST_REMOVE_MISC: [\"#playlist-remove-menu .remove-misc\"],\n PLAYLIST_REMOVE_MISC_SELECTED: [\"#playlist-remove-menu .hover .remove-misc\"],\n\n PLAYLIST_SELECT_MENU_BAR: [\"#playlist-selection-menu.selected .bar\"],\n PLAYLIST_INVERT_SELECTION: [\"#playlist-selection-menu .invert-selection\"],\n PLAYLIST_INVERT_SELECTION_SELECTED: [\n \"#playlist-selection-menu .hover .invert-selection\",\n ],\n PLAYLIST_SELECT_ZERO: [\"#playlist-selection-menu .select-zero\"],\n PLAYLIST_SELECT_ZERO_SELECTED: [\n \"#playlist-selection-menu .hover .select-zero\",\n ],\n PLAYLIST_SELECT_ALL: [\"#playlist-selection-menu .select-all\"],\n PLAYLIST_SELECT_ALL_SELECTED: [\"#playlist-selection-menu .hover .select-all\"],\n PLAYLIST_CLOSE_SELECTED: [\"#playlist-close-button:active\"],\n PLAYLIST_COLLAPSE_SELECTED: [\n \"#playlist-window #playlist-shade-button:active\",\n ],\n PLAYLIST_EXPAND_SELECTED: [\n \"#playlist-window-shade #playlist-shade-button:active\",\n ],\n\n PLAYLIST_MISC_MENU_BAR: [\"#playlist-misc-menu.selected .bar\"],\n PLAYLIST_MISC_OPTIONS: [\"#playlist-misc-menu .misc-options\"],\n PLAYLIST_MISC_OPTIONS_SELECTED: [\"#playlist-misc-menu .hover .misc-options\"],\n PLAYLIST_FILE_INFO: [\"#playlist-misc-menu .file-info\"],\n PLAYLIST_FILE_INFO_SELECTED: [\"#playlist-misc-menu .hover .file-info\"],\n PLAYLIST_SORT_LIST: [\"#playlist-misc-menu .sort-list\"],\n PLAYLIST_SORT_LIST_SELECTED: [\"#playlist-misc-menu .hover .sort-list\"],\n\n PLAYLIST_LIST_BAR: [\"#playlist-list-menu.selected .bar\"],\n PLAYLIST_NEW_LIST: [\"#playlist-list-menu .new-list\"],\n PLAYLIST_NEW_LIST_SELECTED: [\"#playlist-list-menu .hover .new-list\"],\n PLAYLIST_LOAD_LIST: [\"#playlist-list-menu .load-list\"],\n PLAYLIST_LOAD_LIST_SELECTED: [\"#playlist-list-menu .hover .load-list\"],\n PLAYLIST_SAVE_LIST: [\"#playlist-list-menu .save-list\"],\n PLAYLIST_SAVE_LIST_SELECTED: [\"#playlist-list-menu .hover .save-list\"],\n\n EQ_WINDOW_BACKGROUND: [\"#equalizer-window:not(.shade)\"],\n EQ_TITLE_BAR: [\".equalizer-top\"],\n EQ_TITLE_BAR_SELECTED: [\".selected .equalizer-top\"],\n EQ_SLIDER_BACKGROUND: [\".band\"],\n EQ_SLIDER_THUMB: [\".band .rc-slider-handle\"],\n // But the \"active\" pseudo selector on the parent, since clicking\n // anywhere on the track moves the slider.\n EQ_SLIDER_THUMB_SELECTED: [\".band .rc-slider:active .rc-slider-handle\"],\n EQ_ON_BUTTON: [\"#on\"],\n EQ_ON_BUTTON_DEPRESSED: [\"#on:active\"],\n EQ_ON_BUTTON_SELECTED: [\"#on.selected\"],\n EQ_ON_BUTTON_SELECTED_DEPRESSED: [\"#on.selected:active\"],\n EQ_AUTO_BUTTON: [\"#auto\"],\n EQ_AUTO_BUTTON_DEPRESSED: [\"#auto:active\"],\n EQ_AUTO_BUTTON_SELECTED: [\"#auto.selected\"],\n EQ_AUTO_BUTTON_SELECTED_DEPRESSED: [\"#auto.selected:active\"],\n EQ_GRAPH_BACKGROUND: [\"#eqGraph\"],\n EQ_PRESETS_BUTTON: [\"#presets\"],\n EQ_PRESETS_BUTTON_SELECTED: [\"#presets:active\"],\n EQ_PREAMP_LINE: [\"#preamp-line\"],\n EQ_SHADE_BACKGROUND: [\"#equalizer-window.shade\"],\n EQ_SHADE_BACKGROUND_SELECTED: [\"#equalizer-window.shade.selected\"],\n EQ_SHADE_VOLUME_SLIDER_LEFT: [\n \"#equalizer-volume.left::-webkit-slider-thumb\",\n \"#equalizer-volume.left::-moz-range-thumb\",\n ],\n EQ_SHADE_VOLUME_SLIDER_CENTER: [\n \"#equalizer-volume.center::-webkit-slider-thumb\",\n \"#equalizer-volume.center::-moz-range-thumb\",\n ],\n EQ_SHADE_VOLUME_SLIDER_RIGHT: [\n \"#equalizer-volume.right::-webkit-slider-thumb\",\n \"#equalizer-volume.right::-moz-range-thumb\",\n ],\n EQ_SHADE_BALANCE_SLIDER_LEFT: [\n \"#equalizer-balance.left::-webkit-slider-thumb\",\n \"#equalizer-balance.left::-moz-range-thumb\",\n ],\n EQ_SHADE_BALANCE_SLIDER_CENTER: [\n \"#equalizer-balance.center::-webkit-slider-thumb\",\n \"#equalizer-balance.center::-moz-range-thumb\",\n ],\n EQ_SHADE_BALANCE_SLIDER_RIGHT: [\n \"#equalizer-balance.right::-webkit-slider-thumb\",\n \"#equalizer-balance.right::-moz-range-thumb\",\n ],\n EQ_MAXIMIZE_BUTTON_ACTIVE: [\"#equalizer-shade:active\"],\n EQ_MINIMIZE_BUTTON_ACTIVE: [\n \"#equalizer-window.shade #equalizer-shade:active\",\n ],\n EQ_CLOSE_BUTTON: [\n \"#equalizer-window.selected #eq-buttons.clicked #equalizer-close\",\n ],\n EQ_CLOSE_BUTTON_ACTIVE: [\n \"#equalizer-window.selected #eq-buttons.clicked #equalizer-close:active\",\n ],\n EQ_SHADE_CLOSE_BUTTON: [\n \"#equalizer-window.shade.selected #eq-buttons.clicked #equalizer-close\",\n ],\n EQ_SHADE_CLOSE_BUTTON_ACTIVE: [\n \"#equalizer-window.shade.selected #eq-buttons.clicked #equalizer-close:active\",\n ],\n MAIN_POSITION_SLIDER_BACKGROUND: [\"#position\"],\n MAIN_POSITION_SLIDER_THUMB: [\n \"#position::-webkit-slider-thumb\",\n \"#position::-moz-range-thumb\",\n ],\n MAIN_POSITION_SLIDER_THUMB_SELECTED: [\n \"#position:active::-webkit-slider-thumb\",\n \"#position:active::-moz-range-thumb\",\n ],\n MAIN_SHUFFLE_BUTTON: [\"#shuffle\"],\n MAIN_SHUFFLE_BUTTON_DEPRESSED: [\"#shuffle:active\"],\n MAIN_SHUFFLE_BUTTON_SELECTED: [\"#shuffle.selected\"],\n MAIN_SHUFFLE_BUTTON_SELECTED_DEPRESSED: [\"#shuffle.selected:active\"],\n MAIN_REPEAT_BUTTON: [\"#repeat\"],\n MAIN_REPEAT_BUTTON_DEPRESSED: [\"#repeat:active\"],\n MAIN_REPEAT_BUTTON_SELECTED: [\"#repeat.selected\"],\n MAIN_REPEAT_BUTTON_SELECTED_DEPRESSED: [\"#repeat.selected:active\"],\n MAIN_EQ_BUTTON: [\"#equalizer-button\"],\n MAIN_EQ_BUTTON_SELECTED: [\"#equalizer-button.selected\"],\n MAIN_EQ_BUTTON_DEPRESSED: [\"#equalizer-button:active\"],\n MAIN_EQ_BUTTON_DEPRESSED_SELECTED: [\"#equalizer-button.selected:active\"],\n MAIN_PLAYLIST_BUTTON: [\"#playlist-button\"],\n MAIN_PLAYLIST_BUTTON_SELECTED: [\"#playlist-button.selected\"],\n MAIN_PLAYLIST_BUTTON_DEPRESSED: [\"#playlist-button:active\"],\n MAIN_PLAYLIST_BUTTON_DEPRESSED_SELECTED: [\"#playlist-button.selected:active\"],\n MAIN_TITLE_BAR: [\"#title-bar\"],\n MAIN_TITLE_BAR_SELECTED: [\".selected #title-bar\"],\n MAIN_EASTER_EGG_TITLE_BAR: [\".llama #title-bar\"],\n MAIN_EASTER_EGG_TITLE_BAR_SELECTED: [\".llama.selected #title-bar\"],\n MAIN_OPTIONS_BUTTON: [\".selected #title-bar #option.clicked\"],\n MAIN_OPTIONS_BUTTON_DEPRESSED: [\n \".selected #title-bar #option:active\",\n \".selected #title-bar #option.selected\",\n ],\n MAIN_MINIMIZE_BUTTON: [\".selected #title-bar #minimize.clicked\"],\n MAIN_MINIMIZE_BUTTON_DEPRESSED: [\".selected #title-bar #minimize:active\"],\n MAIN_SHADE_BUTTON: [\".selected #title-bar #shade.clicked\"],\n MAIN_SHADE_BUTTON_DEPRESSED: [\".selected #title-bar #shade:active\"],\n MAIN_CLOSE_BUTTON: [\".selected #title-bar #close.clicked\"],\n MAIN_CLOSE_BUTTON_DEPRESSED: [\".selected #title-bar #close:active\"],\n MAIN_CLUTTER_BAR_BACKGROUND: [\"#clutter-bar\"],\n MAIN_CLUTTER_BAR_BACKGROUND_DISABLED: [\"#clutter-bar.disabled\"],\n MAIN_CLUTTER_BAR_BUTTON_O_SELECTED: [\n \"#button-o:active\",\n \"#button-0.selected\",\n ],\n MAIN_CLUTTER_BAR_BUTTON_A_SELECTED: [\n \"#button-a:active\",\n \"#button-a.selected\",\n ],\n MAIN_CLUTTER_BAR_BUTTON_I_SELECTED: [\n \"#button-i:active\",\n \"#button-i.selected\",\n ],\n MAIN_CLUTTER_BAR_BUTTON_D_SELECTED: [\n \"#button-d:active\",\n \"#button-d.selected\",\n ],\n MAIN_CLUTTER_BAR_BUTTON_V_SELECTED: [\n \"#button-v:active\",\n \"#button-v.selected\",\n ],\n MAIN_SHADE_BACKGROUND: [\".shade #title-bar\"],\n MAIN_SHADE_BACKGROUND_SELECTED: [\".shade.selected #title-bar\"],\n MAIN_SHADE_BUTTON_SELECTED: [\".shade.selected #title-bar #shade\"],\n MAIN_SHADE_BUTTON_SELECTED_DEPRESSED: [\".shade #title-bar #shade:active\"],\n MAIN_SHADE_POSITION_BACKGROUND: [\".shade #position\"],\n MAIN_SHADE_POSITION_THUMB: [\n \".shade #position::-moz-range-thumb\",\n \".shade #position::-webkit-slider-thumb\",\n ],\n MAIN_SHADE_POSITION_THUMB_LEFT: [\n \".shade #position.left::-moz-range-thumb\",\n \".shade #position.left::-webkit-slider-thumb\",\n ],\n MAIN_SHADE_POSITION_THUMB_RIGHT: [\n \".shade #position.right::-moz-range-thumb\",\n \".shade #position.right::-webkit-slider-thumb\",\n ],\n MAIN_VOLUME_BACKGROUND: [\"#volume\"],\n MAIN_VOLUME_THUMB: [\n \"#volume input::-webkit-slider-thumb\",\n \"#volume input::-moz-range-thumb\",\n ],\n MAIN_VOLUME_THUMB_SELECTED: [\n \"#volume input:active::-webkit-slider-thumb\",\n \"#volume input:active::-moz-range-thumb\",\n ],\n GEN_TOP_CENTER_FILL: [\".gen-window .gen-top\"],\n GEN_TOP_LEFT: [\".gen-window .gen-top-left\"],\n GEN_TOP_LEFT_END: [\".gen-window .gen-top-left-end\"],\n GEN_TOP_RIGHT: [\".gen-window .gen-top-right\"],\n GEN_TOP_RIGHT_END: [\".gen-window .gen-top-right-end\"],\n GEN_TOP_LEFT_RIGHT_FILL: [\n \".gen-window .gen-top-left-fill\",\n \".gen-window .gen-top-right-fill\",\n ],\n\n GEN_TOP_CENTER_FILL_SELECTED: [\".gen-window.selected .gen-top\"],\n GEN_TOP_LEFT_SELECTED: [\".gen-window.selected .gen-top-left\"],\n GEN_TOP_LEFT_END_SELECTED: [\".gen-window.selected .gen-top-left-end\"],\n GEN_TOP_RIGHT_SELECTED: [\".gen-window.selected .gen-top-right\"],\n GEN_TOP_RIGHT_END_SELECTED: [\".gen-window.selected .gen-top-right-end\"],\n GEN_TOP_LEFT_RIGHT_FILL_SELECTED: [\n \".gen-window.selected .gen-top-left-fill\",\n \".gen-window.selected .gen-top-right-fill\",\n ],\n GEN_BOTTOM_LEFT: [\".gen-window .gen-bottom-left\"],\n GEN_BOTTOM_RIGHT: [\".gen-window .gen-bottom-right\"],\n GEN_BOTTOM_FILL: [\".gen-window .gen-bottom\"],\n GEN_MIDDLE_LEFT: [\".gen-window .gen-middle-left\"],\n GEN_MIDDLE_LEFT_BOTTOM: [\".gen-window .gen-middle-left-bottom\"],\n GEN_MIDDLE_RIGHT: [\".gen-window .gen-middle-right\"],\n GEN_MIDDLE_RIGHT_BOTTOM: [\".gen-window .gen-middle-right-bottom\"],\n GEN_CLOSE_SELECTED: [\".gen-window .gen-close:active\"],\n};\n\nObject.keys(FONT_LOOKUP).forEach((character) => {\n const key = imageConstFromChar(character);\n const code = character.charCodeAt(0);\n imageSelectors[key] = [`.character-${code}`];\n});\n\nLETTERS.forEach((character) => {\n imageSelectors[`GEN_TEXT_${character}`] = [\n `.gen-text-${character.toLowerCase()}`,\n ];\n imageSelectors[`GEN_TEXT_SELECTED_${character}`] = [\n `.gen-window.selected .gen-text-${character.toLowerCase()}`,\n ];\n});\n\nexport const cursorSelectors: Selectors = {\n CLOSE: [\"#title-bar #close\"],\n // This is not quite right. There are some areas that show this cursor\n // but are not clickable.\n EQSLID: [\"#equalizer-window .band .rc-slider\"],\n EQNORMAL: [\"#equalizer-window\"],\n EQCLOSE: [\"#equalizer-window #equalizer-close\"],\n EQTITLE: [\n \"#equalizer-window .title-bar\",\n \"#equalizer-window.shade\",\n \"#equalizer-window.shade input\",\n ],\n MAINMENU: [\"#main-window #option\", \"#webamp-context-menu .context-menu\"],\n MIN: [\"#main-window #minimize\"],\n NORMAL: [\n // Use this as the default cursor.\n \".window\",\n \".window input\", // Otherwise\n \"#main-window\",\n \"#main-window.shade #title-bar\",\n ],\n MMENU: [\"#main-window.shade #option\"],\n PNORMAL: [\"#playlist-window\"],\n // TODO: This is should really only apply to the top part of the top.\n // The chrome around the playlist window is larger than others. The\n // cursor only applies to the same height as the other window's chrome.\n PTBAR: [\"#playlist-window .playlist-top\"],\n PCLOSE: [\n \"#playlist-window #playlist-close-button\",\n \"#playlist-window-shade #playlist-close-button\",\n ],\n PWINBUT: [\n \"#playlist-window #playlist-shade-button\",\n \"#playlist-window-shade #playlist-shade-button\",\n ],\n POSBAR: [\"#main-window #position\"],\n PSIZE: [\"#playlist-window #playlist-resize-target\"],\n PWSSIZE: [\"#playlist-window-shade #playlist-resize-target\"],\n PWSNORM: [\"#playlist-window-shade\"],\n // TODO: The target for this is not quite right.\n PVSCROLL: [\"#playlist-window .playlist-scrollbar\"],\n SONGNAME: [\"#main-window #marquee\"],\n TITLEBAR: [\"#main-window #title-bar\"],\n VOLBAL: [\"#volume\", \"#volume input\", \"#balance\"],\n WINBUT: [\"#main-window #shade\"],\n WSNORMAL: [\"#main-window.shade #title-bar\"],\n WSPOSBAR: [\"#main-window.shade #position\"],\n};\n","import { createPortal } from \"react-dom\";\nimport { useMemo, useLayoutEffect } from \"react\";\n\ntype Props = {\n children: string;\n id: string;\n};\n\nexport default function Css({ children, id }: Props) {\n const style = useMemo(() => {\n const s = document.createElement(\"style\");\n s.type = \"text/css\";\n s.id = id;\n return s;\n }, [id]);\n\n useLayoutEffect(() => {\n document.head.appendChild(style);\n return () => style.remove();\n }, [style]);\n\n return createPortal(children, style);\n}\n","import { useMemo, useLayoutEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\n\ntype Props = {\n children: { [id: string]: string[] };\n};\n\n// this.props.children should be an object containing arrays of strings. The\n// keys are ids, and the arrays are arrays of polygon point strings\nexport default function ClipPaths({ children }: Props) {\n const paths = useMemo(() => {\n return document.createElement(\"div\");\n }, []);\n\n useLayoutEffect(() => {\n document.body.appendChild(paths);\n return () => paths.remove();\n }, [paths]);\n\n return createPortal(\n <svg height={0} width={0}>\n <defs>\n {Object.keys(children).map((id) => (\n <clipPath id={id} key={id}>\n {children[id].map((points, i) => (\n <polygon points={points} key={i} />\n ))}\n </clipPath>\n ))}\n </defs>\n </svg>,\n paths\n );\n}\n","// Dynamically set the css background images for all the sprites\nimport { LETTERS } from \"../constants\";\nimport { imageSelectors, cursorSelectors } from \"../skinSelectors\";\nimport { useTypedSelector } from \"../hooks\";\nimport * as Selectors from \"../selectors\";\nimport { SkinImages } from \"../types\";\nimport { createSelector } from \"reselect\";\nimport Css from \"./Css\";\nimport ClipPaths from \"./ClipPaths\";\nimport { convertAniBinaryToCSS } from \"ani-cursor\";\n\nconst CSS_PREFIX = \"#webamp\";\n\nconst mapRegionNamesToIds: { [key: string]: string } = {\n normal: \"mainWindowClipPath\",\n windowshade: \"shadeMainWindowClipPath\",\n equalizer: \"equalizerWindowClipPath\",\n equalizerws: \"shadeEqualizerWindowClipPath\",\n};\n\nconst mapRegionNamesToMatcher: { [key: string]: string } = {\n normal: \"#main-window:not(.shade)\",\n windowshade: \"#main-window.shade\",\n equalizer: \"#equalizer-window:not(.shade)\",\n equalizerws: \"#equalizer-window.shade\",\n};\n\nconst numExIsUsed = (skinImages: SkinImages) => Boolean(skinImages.DIGIT_0_EX);\n\nconst FALLBACKS: { [key: string]: string } = {\n MAIN_BALANCE_BACKGROUND: \"MAIN_VOLUME_BACKGROUND\",\n MAIN_BALANCE_THUMB: \"MAIN_VOLUME_THUMB\",\n MAIN_BALANCE_THUMB_ACTIVE: \"MAIN_VOLUME_THUMB_SELECTED\",\n EQ_MAXIMIZE_BUTTON_ACTIVE: \"EQ_MAXIMIZE_BUTTON_ACTIVE_FALLBACK\",\n};\n\n// Cursors might appear in context menus which are not nested inside the window layout div.\nfunction normalizeCursorSelector(selector: string): string {\n return `${\n // TODO: Fix this hack\n // Maybe our CSS name spacing should be based on some other class/id\n // than the one we use for defining the main div.\n // That way it could be shared by both the player and the context menu.\n selector.startsWith(\"#webamp-context-menu\") ? \"\" : CSS_PREFIX\n } ${selector}`;\n}\n\nconst getCssRules = createSelector(\n Selectors.getSkinImages,\n Selectors.getSkinCursors,\n Selectors.getSkinLetterWidths,\n Selectors.getSkinRegion,\n (skinImages, skinCursors, skinGenLetterWidths, skinRegion): string | null => {\n if (!skinImages || !skinCursors) {\n return null;\n }\n const cssRules = [];\n Object.keys(imageSelectors).forEach((imageName) => {\n const imageUrl =\n skinImages[imageName] || skinImages[FALLBACKS[imageName]];\n if (imageUrl) {\n imageSelectors[imageName].forEach((selector) => {\n cssRules.push(\n `${CSS_PREFIX} ${selector} {background-image: url(${imageUrl})}`\n );\n });\n }\n });\n\n if (skinGenLetterWidths != null) {\n LETTERS.forEach((letter) => {\n const width = skinGenLetterWidths[`GEN_TEXT_${letter}`];\n const selectedWidth =\n skinGenLetterWidths[`GEN_TEXT_SELECTED_${letter}`];\n cssRules.push(\n `${CSS_PREFIX} .gen-text-${letter.toLowerCase()} {width: ${width}px;}`\n );\n cssRules.push(\n `${CSS_PREFIX} .selected .gen-text-${letter.toLowerCase()} {width: ${selectedWidth}px;}`\n );\n });\n }\n\n Object.entries(cursorSelectors).forEach(([cursorName, cursorSelector]) => {\n const cursor = skinCursors[cursorName];\n if (cursor == null) {\n return;\n }\n const cursorRules = cursorSelector\n .map(normalizeCursorSelector)\n .map((selector) => {\n switch (cursor.type) {\n case \"cur\":\n return `${selector} {cursor: url(${cursor.url}), auto}`;\n case \"ani\": {\n return convertAniBinaryToCSS(selector, cursor.aniData);\n }\n }\n });\n cssRules.push(...cursorRules);\n });\n\n if (numExIsUsed(skinImages)) {\n // This alternate number file requires that the minus sign be\n // formatted differently.\n cssRules.push(\n `${CSS_PREFIX} .status #time #minus-sign { top: 0px; left: -1px; width: 9px; height: 13px; }`\n );\n }\n\n for (const [regionName, polygons] of Object.entries(skinRegion)) {\n if (polygons) {\n const matcher = mapRegionNamesToMatcher[regionName];\n const id = mapRegionNamesToIds[regionName];\n cssRules.push(`${CSS_PREFIX} ${matcher} { clip-path: url(#${id}); }`);\n }\n }\n\n return cssRules.join(\"\\n\");\n }\n);\n\nconst getClipPaths = createSelector(Selectors.getSkinRegion, (skinRegion) => {\n const clipPaths: { [id: string]: string[] } = {};\n for (const [regionName, polygons] of Object.entries(skinRegion)) {\n if (polygons) {\n const id = mapRegionNamesToIds[regionName];\n clipPaths[id] = polygons;\n }\n }\n return clipPaths;\n});\n\nexport default function Skin() {\n const cssRules = useTypedSelector(getCssRules);\n const clipPaths = useTypedSelector(getClipPaths);\n if (cssRules == null) {\n return null;\n }\n return (\n <>\n <Css id=\"webamp-skin\">{cssRules}</Css>\n <ClipPaths>{clipPaths}</ClipPaths>\n </>\n );\n}\n","import {\n useLayoutEffect,\n useEffect,\n useState,\n useCallback,\n StrictMode,\n} from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { FilePicker } from \"../types\";\nimport { WINDOWS } from \"../constants\";\nimport * as Selectors from \"../selectors\";\nimport * as Actions from \"../actionCreators\";\nimport * as Utils from \"../utils\";\nimport MilkdropWindow from \"../components/MilkdropWindow\";\nimport ContextMenuWrapper from \"./ContextMenuWrapper\";\nimport MainContextMenu from \"./MainWindow/MainContextMenu\";\nimport WindowManager from \"./WindowManager\";\nimport MainWindow from \"./MainWindow\";\nimport PlaylistWindow from \"./PlaylistWindow\";\nimport EqualizerWindow from \"./EqualizerWindow\";\nimport Skin from \"./Skin\";\n\nimport \"../../css/webamp.css\";\nimport Media from \"../media\";\nimport { useTypedSelector, useActionCreator } from \"../hooks\";\n\ninterface Props {\n filePickers: FilePicker[];\n media: Media;\n}\n\n/**\n * Constructs the windows to render\n */\nexport default function App({ media, filePickers }: Props) {\n const closed = useTypedSelector(Selectors.getClosed);\n const genWindowsInfo = useTypedSelector(Selectors.getGenWindows);\n const zIndex = useTypedSelector(Selectors.getZIndex);\n\n const browserWindowSizeChanged = useActionCreator(\n Actions.browserWindowSizeChanged\n );\n const setFocusedWindow = useActionCreator(Actions.setFocusedWindow);\n\n const [webampNode] = useState(() => {\n const node = document.createElement(\"div\");\n node.id = \"webamp\";\n // @ts-ignore I think I'm supposed to set this with setAttribute, but I can't confirm.\n node.role = \"application\";\n return node;\n });\n\n useLayoutEffect(() => {\n webampNode.style.zIndex = String(zIndex);\n }, [webampNode, zIndex]);\n\n useLayoutEffect(() => {\n document.body.appendChild(webampNode);\n return () => {\n document.body.removeChild(webampNode);\n };\n }, [webampNode]);\n\n useEffect(() => {\n const handleWindowResize = () => {\n if (webampNode == null) {\n return;\n }\n // It's a bit tricky to measure the \"natural\" size of the browser window.\n // Specifically we want to know how large the window would be without our\n // own Webamp windows influencing it. To achieve this, we temporarily make\n // our container `overflow: hidden;`. We then make our container full\n // screen by setting the bottom/right properties to zero. This second part\n // allows our Webamp windows to stay visible during the resize. After we\n // measure, we set the style back so that we don't end up interfering with\n // click events outside of our Webamp windows.\n webampNode.style.right = \"0\";\n webampNode.style.bottom = \"0\";\n webampNode.style.overflow = \"hidden\";\n browserWindowSizeChanged(Utils.getWindowSize());\n webampNode.style.right = \"auto\";\n webampNode.style.bottom = \"auto\";\n webampNode.style.overflow = \"visible\";\n };\n\n handleWindowResize();\n\n window.addEventListener(\"resize\", handleWindowResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleWindowResize);\n };\n }, [browserWindowSizeChanged, webampNode]);\n\n const renderWindows = useCallback(() => {\n return Utils.objectMap(genWindowsInfo, (w, id) => {\n if (!w.open) {\n return null;\n }\n switch (id) {\n case WINDOWS.MAIN:\n return (\n <MainWindow\n analyser={media.getAnalyser()}\n filePickers={filePickers}\n />\n );\n case WINDOWS.EQUALIZER:\n return <EqualizerWindow />;\n case WINDOWS.PLAYLIST:\n return <PlaylistWindow analyser={media.getAnalyser()} />;\n case WINDOWS.MILKDROP:\n return <MilkdropWindow analyser={media.getAnalyser()} />;\n default:\n throw new Error(`Tried to render an unknown window: ${id}`);\n }\n });\n }, [media, filePickers, genWindowsInfo]);\n\n const handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n if (!e.currentTarget.contains(e.relatedTarget as Element)) {\n setFocusedWindow(null);\n }\n };\n\n if (closed) {\n return null;\n }\n\n return ReactDOM.createPortal(\n <StrictMode>\n <div onBlur={handleBlur}>\n <Skin />\n <ContextMenuWrapper\n renderContents={() => <MainContextMenu filePickers={filePickers} />}\n >\n <WindowManager windows={renderWindows()} />\n </ContextMenuWrapper>\n </div>\n </StrictMode>,\n webampNode\n );\n}\n","import {\n play,\n pause,\n stop,\n adjustVolume,\n toggleRepeat,\n toggleShuffle,\n openMediaFileDialog,\n seekForward,\n seekBackward,\n reverseList,\n nextN,\n next,\n previous,\n toggleDoubleSizeMode,\n toggleWindow,\n} from \"./actionCreators\";\n\nimport { TOGGLE_TIME_MODE, TOGGLE_LLAMA_MODE } from \"./actionTypes\";\n\nimport { Dispatch } from \"./types\";\n\nconst IGNORE_EVENTS_FROM_TAGS = new Set([\"input\", \"textarea\", \"select\"]);\n\nexport function bindHotkeys(dispatch: Dispatch): () => void {\n let currentPos: number = 0;\n const trigger = [\n 78, // N\n 85, // U\n 76, // L\n 76, // L\n 83, // S\n 79, // O\n 70, // F\n 84, // T\n ];\n\n const listener = (e: KeyboardEvent) => {\n if (\n e.target instanceof Element &&\n IGNORE_EVENTS_FROM_TAGS.has(e.target.tagName.toLowerCase())\n ) {\n return;\n }\n if (e.ctrlKey) {\n switch (e.keyCode) {\n case 68: // CTRL+D\n dispatch(toggleDoubleSizeMode());\n e.preventDefault(); // Supress the \"Bookmark\" action on windows.\n break;\n case 76: // CTRL+L FIXME\n break;\n case 82: // CTRL+R\n dispatch(reverseList());\n break;\n case 84: // CTRL+T\n dispatch({ type: TOGGLE_TIME_MODE });\n break;\n }\n } else if (e.altKey) {\n switch (e.keyCode) {\n case 87: // ALT+W\n dispatch(toggleWindow(\"main\"));\n break;\n case 69: // ALT+E\n dispatch(toggleWindow(\"playlist\"));\n break;\n case 71: // ALT+G\n dispatch(toggleWindow(\"equalizer\"));\n break;\n }\n } else {\n switch (e.keyCode) {\n case 37: // left arrow\n dispatch(seekBackward(5));\n break;\n case 38: // up arrow\n dispatch(adjustVolume(1));\n break;\n case 39: // right arrow\n dispatch(seekForward(5));\n break;\n case 40: // down arrow\n dispatch(adjustVolume(-1));\n break;\n case 66: // B\n dispatch(next());\n break;\n case 67: // C\n dispatch(pause());\n break;\n case 76: // L\n dispatch(openMediaFileDialog());\n break;\n case 82: // R\n dispatch(toggleRepeat());\n break;\n case 83: // S\n dispatch(toggleShuffle());\n break;\n case 86: // V\n dispatch(stop());\n break;\n case 88: // X\n dispatch(play());\n break;\n case 90: // Z\n dispatch(previous());\n break;\n case 96: // numpad 0\n dispatch(openMediaFileDialog());\n break;\n case 97: // numpad 1\n dispatch(nextN(-10));\n break;\n case 98: // numpad 2\n dispatch(adjustVolume(-1));\n break;\n case 99: // numpad 3\n dispatch(nextN(10));\n break;\n case 100: // numpad 4\n dispatch(previous());\n break;\n case 101: // numpad 5\n dispatch(play());\n break;\n case 102: // numpad 6\n dispatch(next());\n break;\n case 103: // numpad 7\n dispatch(seekBackward(5));\n break;\n case 104: // numpad 8\n dispatch(adjustVolume(1));\n break;\n case 105: // numpad 9\n dispatch(seekForward(5));\n break;\n }\n }\n\n // Easter Egg\n\n // Ignore escape. Usually this gets swallowed by the browser, but not always.\n if (e.keyCode !== 27) {\n currentPos = e.keyCode === trigger[currentPos] ? currentPos + 1 : 0;\n if (currentPos === trigger.length) {\n dispatch({ type: TOGGLE_LLAMA_MODE });\n }\n }\n };\n document.addEventListener(\"keydown\", listener);\n\n return () => {\n document.removeEventListener(\"keydown\", listener);\n };\n}\n","export default class Emitter {\n _listeners: { [event: string]: Array<(...args: any[]) => void> };\n\n constructor() {\n this._listeners = {};\n }\n\n on(event: string, callback: (...args: any[]) => void) {\n const eventListeners = this._listeners[event] || [];\n eventListeners.push(callback);\n this._listeners[event] = eventListeners;\n const unsubscribe = () => {\n this._listeners[event] = eventListeners.filter((cb) => cb !== callback);\n };\n return unsubscribe;\n }\n\n trigger(event: string, ...args: any[]) {\n const callbacks = this._listeners[event];\n if (callbacks) {\n callbacks.forEach((cb) => cb(...args));\n }\n }\n\n dispose() {\n this._listeners = {};\n }\n}\n","// The Web Audio API does not offer an easy way to make a stereo balance\n// control. This is an attempt to fill that void, using an API similar to\n// [StereoPannerNode](https://developer.mozilla.org/en-US/docs/Web/API/StereoPannerNode)\nexport default function StereoBalanceNode(context, options = { balance: 0 }) {\n let balance = 0;\n\n // ChannelSplitterNode cannot be told to use a `channelInterperatation` of\n // \"speakers\". This means that if we get a mono file, we will end up only\n // playing in the left speaker. So instead we use this dummy gain node to\n // convert whatever source we get (stereo, mono, or n channels) into a stereo\n // signal.\n // Idea credit: https://github.com/WebAudio/web-audio-api/issues/975#issue-177242377\n const upMixer = context.createGain();\n upMixer.channelCount = 2;\n upMixer.channelCountMode = \"explicit\";\n upMixer.channelInterpretation = \"speakers\";\n\n const splitter = context.createChannelSplitter(2);\n\n // Create the gains for left and right\n const leftGain = context.createGain();\n const rightGain = context.createGain();\n\n const merger = context.createChannelMerger(2);\n\n upMixer.connect(splitter);\n\n splitter.connect(leftGain, 0);\n splitter.connect(rightGain, 1);\n\n leftGain.connect(merger, 0, 0);\n rightGain.connect(merger, 0, 1);\n\n // -1 (left) to 1 (right)\n function set(rawValue) {\n const value = Number(rawValue);\n leftGain.gain.value = value > 0 ? 1 - value : 1;\n rightGain.gain.value = value > 0 ? 1 : 1 + value;\n balance = value;\n }\n\n function get() {\n return balance;\n }\n\n // Create our own version of an [AudioParam](https://developer.mozilla.org/en-US/docs/Web/API/AudioParam).\n // We don't currently support any of the \"over time\" methods, but maybe some day\n // we'll want to.\n const audioParam = {};\n Object.defineProperties(audioParam, {\n value: { get, set, enumerable: true, configurable: true },\n });\n\n // The way the `.connect` API works, we can't actually construct our own\n // AudioNode. Instead we have to take an existing node and monkey patch it.\n Object.defineProperties(upMixer, {\n balance: {\n value: audioParam,\n enumerable: true,\n writable: false,\n configurable: true,\n },\n connect: {\n value: AudioNode.prototype.connect.bind(merger),\n enumerable: false,\n writable: false,\n configurable: true,\n },\n disconnect: {\n value: AudioNode.prototype.disconnect.bind(merger),\n enumerable: false,\n writable: false,\n configurable: true,\n },\n });\n\n if (balance !== options.balance) {\n set(options.balance);\n }\n\n return upMixer;\n}\n","import Emitter from \"../emitter\";\nimport { clamp } from \"../utils\";\nimport { MEDIA_STATUS } from \"../constants\";\nimport { MediaStatus } from \"../types\";\n\nexport default class ElementSource {\n _emitter: Emitter;\n _context: AudioContext;\n _source: AudioNode;\n _destination: AudioNode;\n _audio: HTMLAudioElement;\n _stalled: boolean;\n _status: MediaStatus;\n\n on(eventType: string, cb: (...args: any[]) => void) {\n return this._emitter.on(eventType, cb);\n }\n\n constructor(context: AudioContext, destination: AudioNode) {\n this._emitter = new Emitter();\n this._context = context;\n this._destination = destination;\n this._audio = document.createElement(\"audio\");\n this._audio.crossOrigin = \"anonymous\";\n this._stalled = false;\n this._status = MEDIA_STATUS.STOPPED;\n\n // TODO: #leak\n this._audio.addEventListener(\"suspend\", () => {\n this._setStalled(true);\n });\n\n // TODO: #leak\n this._audio.addEventListener(\"durationchange\", () => {\n this._emitter.trigger(\"loaded\");\n this._setStalled(false);\n });\n\n // TODO: #leak\n this._audio.addEventListener(\"ended\", () => {\n this._emitter.trigger(\"ended\");\n this._setStatus(MEDIA_STATUS.STOPPED);\n });\n\n // TODO: Throttle to 50 (if needed)\n // TODO: #leak\n this._audio.addEventListener(\"timeupdate\", () => {\n this._emitter.trigger(\"positionChange\");\n });\n\n // TODO: #leak\n this._audio.addEventListener(\"error\", (e) => {\n switch (this._audio.error!.code) {\n case 1:\n // The fetching of the associated resource was aborted by the user's request.\n console.error(\"MEDIA_ERR_ABORTED\", e);\n break;\n case 2:\n console.error(\"MEDIA_ERR_NETWORK\", e);\n // Some kind of network error occurred which prevented the media from being successfully fetched, despite having previously been available.\n break;\n case 3:\n // Despite having previously been determined to be usable, an error occurred while trying to decode the media resource, resulting in an error.\n\n // There is a bug in Chrome where improperly terminated mp3s can cuase this error.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=794782\n // Related: Commit f44e826c83c74fef04c2c448af30cfb353b28312\n console.error(\"PIPELINE_ERROR_DECODE\", e);\n break;\n case 4:\n console.error(\"MEDIA_ERR_SRC_NOT_SUPPORTED\", e);\n // The associated resource or media provider object (such as a MediaStream) has been found to be unsuitable.\n break;\n }\n // Rather than just geting stuck in this error state, we can just pretend this is\n // the end of the track.\n\n this._emitter.trigger(\"ended\");\n this._setStatus(MEDIA_STATUS.STOPPED);\n });\n\n this._source = this._context.createMediaElementSource(this._audio);\n this._source.connect(destination);\n }\n\n _setStalled(stalled: boolean) {\n this._stalled = stalled;\n this._emitter.trigger(\"stallChanged\");\n }\n\n disconnect() {\n this._source.disconnect();\n }\n\n // Async for now, for compatibility with BufferAudioSource\n // TODO: This does not need to be async\n async loadUrl(url: string) {\n this._audio.src = url;\n }\n\n async play() {\n if (this._status !== MEDIA_STATUS.PAUSED) {\n this.seekToTime(0);\n }\n try {\n await this._audio.play();\n // TODO #race\n } catch (err) {\n //\n }\n this._setStatus(MEDIA_STATUS.PLAYING);\n }\n\n pause() {\n this._audio.pause();\n this._setStatus(MEDIA_STATUS.PAUSED);\n }\n\n stop() {\n this._audio.pause();\n this._audio.currentTime = 0;\n this._setStatus(MEDIA_STATUS.STOPPED);\n }\n\n seekToTime(time: number) {\n /* TODO: We could check if this is actually seekable:\n const { seekable } = this._audio;\n for (let i = 0; i < seekable.length; i++) {\n console.log(\"start\", seekable.start(i), \"end\", seekable.end(i));\n }\n */\n this._audio.currentTime = clamp(time, 0, this.getDuration());\n this._emitter.trigger(\"positionChange\");\n }\n\n getStalled() {\n return this._stalled;\n }\n\n getStatus() {\n return this._status;\n }\n\n getDuration() {\n const { duration } = this._audio;\n // Safari on iOS currently has a strange behavior where it reports\n // the duration as infinity if an Accept-Ranges header is not returned.\n // For now, 0 is better even though it's still wrong.\n return isNaN(duration) || duration === Infinity ? 0 : duration;\n }\n\n getTimeElapsed() {\n return this._audio.currentTime;\n }\n\n _setStatus(status: MediaStatus) {\n this._status = status;\n this._emitter.trigger(\"statusChange\");\n }\n\n dispose() {\n // TODO: Dispose subscriptions to this.audio\n this.stop();\n this._emitter.dispose();\n }\n}\n","/* Emulate the native <audio> element with Web Audio API */\nimport { BANDS, MEDIA_STATUS } from \"../constants\";\nimport { Band } from \"../types\";\nimport Emitter from \"../emitter\";\nimport StereoBalanceNode from \"./StereoBalanceNode\";\nimport ElementSource from \"./elementSource\";\n\ninterface StereoBalanceNodeType extends AudioNode {\n constructor(context: AudioContext): StereoBalanceNodeType;\n balance: {\n value: number;\n };\n}\n\n// NOTE: While this is not technically a public API, https://winampify.io/ is\n// replacing this class with a custom version. Breaking changes to this API\n// surface should be communicated to Remi.\nexport default class Media {\n _emitter: Emitter;\n _context: AudioContext;\n _balance: StereoBalanceNodeType;\n _staticSource: GainNode;\n _preamp: GainNode;\n _analyser: AnalyserNode;\n _gainNode: GainNode;\n _source: ElementSource;\n _bands: { [band: number]: BiquadFilterNode };\n\n constructor() {\n this._emitter = new Emitter();\n // @ts-ignore Typescript does not know about webkitAudioContext\n this._context = new (window.AudioContext || window.webkitAudioContext)();\n // Fix for iOS and Chrome (Canary) which require that the context be created\n // or resumed by a user interaction.\n // https://developers.google.com/web/updates/2017/09/autoplay-policy-changes\n // https://gist.github.com/laziel/7aefabe99ee57b16081c\n // Via: https://stackoverflow.com/a/43395068/1263117\n // TODO #leak\n if (this._context.state === \"suspended\") {\n const resume = async () => {\n await this._context.resume();\n\n if (this._context.state === \"running\") {\n // TODO: Add this to the disposable\n document.body.removeEventListener(\"touchend\", resume, false);\n document.body.removeEventListener(\"click\", resume, false);\n document.body.removeEventListener(\"keydown\", resume, false);\n }\n };\n\n document.body.addEventListener(\"touchend\", resume, false);\n document.body.addEventListener(\"click\", resume, false);\n document.body.addEventListener(\"keydown\", resume, false);\n }\n\n // TODO: Maybe we can get rid of this now that we are using AudioAbstraction?\n this._staticSource = this._context.createGain(); // Just a noop node\n\n // @ts-ignore The way this class has to be monkey patched, makes it very hard to type.\n this._balance = new StereoBalanceNode(this._context);\n\n // Create the preamp node\n this._preamp = this._context.createGain();\n\n // Create the analyser node for the visualizer\n this._analyser = this._context.createAnalyser();\n this._analyser.fftSize = 2048;\n // don't smooth audio analysis\n this._analyser.smoothingTimeConstant = 0.0;\n\n // Create the gain node for the volume control\n this._gainNode = this._context.createGain();\n\n // Connect all the nodes in the correct way\n // (Note, source is created and connected later)\n //\n // <source>\n // |\n // |_____________\n // | \\\n // <preamp> |\n // | | <-- Optional bypass\n // [...biquadFilters] |\n // |_____________/\n // |\n // <staticSource>\n // |\n // <balance>\n // |\n // |\\\n // | <analyser>\n // <gain>\n // |\n // <destination>\n\n this._source = new ElementSource(this._context, this._staticSource);\n\n this._source.on(\"positionChange\", () => {\n this._emitter.trigger(\"timeupdate\");\n });\n this._source.on(\"ended\", () => {\n this._emitter.trigger(\"ended\");\n });\n this._source.on(\"statusChange\", () => {\n switch (this._source.getStatus()) {\n case MEDIA_STATUS.PLAYING:\n this._emitter.trigger(\"playing\");\n break;\n }\n this._emitter.trigger(\"timeupdate\");\n });\n this._source.on(\"loaded\", () => {\n this._emitter.trigger(\"fileLoaded\");\n });\n\n this._staticSource.connect(this._preamp);\n\n let output = this._preamp;\n this._bands = {};\n\n BANDS.forEach((band, i) => {\n const filter = this._context.createBiquadFilter();\n\n this._bands[band] = filter;\n\n if (i === 0) {\n // The first filter, includes all lower frequencies\n filter.type = \"lowshelf\";\n } else if (i === BANDS.length - 1) {\n // The last filter, includes all higher frequencies\n filter.type = \"highshelf\";\n } else {\n filter.type = \"peaking\";\n }\n filter.frequency.value = band;\n filter.gain.value = 0;\n\n output.connect(filter);\n output = filter;\n });\n\n output.connect(this._balance);\n\n this._balance.connect(this._gainNode);\n this._balance.connect(this._analyser);\n\n this._gainNode.connect(this._context.destination);\n }\n\n getAnalyser() {\n return this._analyser;\n }\n\n /* Properties */\n duration() {\n return this._source.getDuration();\n }\n\n timeElapsed() {\n return this._source.getTimeElapsed();\n }\n\n timeRemaining() {\n return this.duration() - this.timeElapsed();\n }\n\n percentComplete() {\n return (this.timeElapsed() / this.duration()) * 100;\n }\n\n /* Actions */\n async play() {\n await this._source.play();\n }\n\n pause() {\n this._source.pause();\n }\n\n stop() {\n this._source.stop();\n }\n\n /* Actions with arguments */\n seekToPercentComplete(percent: number) {\n const seekTime = this.duration() * (percent / 100);\n this.seekToTime(seekTime);\n }\n\n // From 0-1\n setVolume(volume: number) {\n this._gainNode.gain.value = volume / 100;\n }\n\n // from 0 to 100\n // The input value here is 0-100 which is kinda wrong, since it represents -12db to 12db.\n // For now, 50 is 0db (no change).\n // Equation used is: 10^((dB)/20) = x, where x (preamp.gain.value) is passed on to gainnode for boosting or attenuation.\n setPreamp(value: number) {\n const db = (value / 100) * 24 - 12;\n this._preamp.gain.value = Math.pow(10, db / 20);\n }\n\n // From -100 to 100\n setBalance(balance: number) {\n // Yo Dawg.\n this._balance.balance.value = balance / 100;\n }\n\n setEqBand(band: Band, value: number) {\n const db = (value / 100) * 24 - 12;\n this._bands[band].gain.value = db;\n }\n\n disableEq() {\n this._staticSource.disconnect();\n this._staticSource.connect(this._balance);\n }\n\n enableEq() {\n this._staticSource.disconnect();\n this._staticSource.connect(this._preamp);\n }\n\n /* Listeners */\n on(event: string, callback: (...args: any[]) => void) {\n this._emitter.on(event, callback);\n }\n\n seekToTime(time: number) {\n this._source.seekToTime(time);\n }\n\n // Used only for the initial load, since it must have a CORS header\n async loadFromUrl(url: string, autoPlay: boolean) {\n this._emitter.trigger(\"waiting\");\n await this._source.loadUrl(url);\n // TODO #race\n this._emitter.trigger(\"stopWaiting\");\n if (autoPlay) {\n this.play();\n }\n }\n\n dispose() {\n this._source.dispose();\n this._emitter.dispose();\n }\n}\n","type Teardown = (() => void) | { dispose: () => void };\n\nexport default class Disposable {\n _teardowns: Teardown[] = [];\n disposed: boolean;\n\n constructor() {\n this.disposed = false;\n }\n\n add(...teardowns: Teardown[]): void {\n if (this.disposed) {\n throw new Error(\n \"Attempted to add a new teardown to a disposed disposable.\"\n );\n }\n this._teardowns.push(...teardowns);\n }\n\n dispose() {\n if (this.disposed) {\n throw new Error(\n \"Attempted to dispose disposable which is already disposed.\"\n );\n }\n this._teardowns.forEach((teardown) => {\n if (typeof teardown === \"function\") {\n teardown();\n } else if (typeof teardown.dispose === \"function\") {\n teardown.dispose();\n }\n });\n this._teardowns = [];\n this.disposed = true;\n }\n}\n","import * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Provider } from \"react-redux\";\n\nimport {\n Store,\n AppState,\n Track,\n LoadedURLTrack,\n Middleware,\n WindowPosition,\n ButterchurnOptions,\n Action,\n} from \"./types\";\nimport getStore from \"./store\";\nimport App from \"./components/App\";\nimport { bindHotkeys } from \"./hotkeys\";\nimport Media from \"./media\";\nimport * as Selectors from \"./selectors\";\nimport * as Actions from \"./actionCreators\";\n\nimport { LOAD_STYLE } from \"./constants\";\nimport * as Utils from \"./utils\";\nimport * as FileUtils from \"./fileUtils\";\n\nimport {\n SET_AVAILABLE_SKINS,\n NETWORK_CONNECTED,\n NETWORK_DISCONNECTED,\n CLOSE_WINAMP,\n MINIMIZE_WINAMP,\n LOADED,\n SET_Z_INDEX,\n CLOSE_REQUESTED,\n ENABLE_MILKDROP,\n} from \"./actionTypes\";\nimport Emitter from \"./emitter\";\n\nimport \"../css/base-skin.css\";\nimport { SerializedStateV1 } from \"./serializedStates/v1Types\";\nimport Disposable from \"./Disposable\";\n\ninterface Options {\n /**\n * An object representing the initial skin to use.\n *\n * If omitted, the default skin, included in the bundle, will be used.\n * Note: This URL must be served the with correct CORs headers.\n *\n * Example: `{ url: './path/to/skin.wsz' }`\n */\n initialSkin?: {\n url: string;\n };\n\n /**\n * An array of `Track`s to prepopulate the playlist with.\n */\n initialTracks?: Track[];\n\n /**\n * An array of objects representing available skins.\n *\n * These will appear in the \"Options\" menu under \"Skins\".\n * Note: These URLs must be served with the correct CORs headers.\n *\n * Example: `[ { url: \"./green.wsz\", name: \"Green Dimension V2\" } ]`\n */\n availableSkins?: { url: string; name: string }[];\n\n /**\n * Should global hotkeys be enabled?\n *\n * Default: `false`\n */\n enableHotkeys?: boolean;\n\n /**\n * An array of additional file pickers.\n *\n * These will appear in the \"Options\" menu under \"Play\".\n *\n * In the offical version, this option is used to provide a \"Dropbox\" file picker.\n */\n filePickers?: [\n {\n /**\n * The name that will appear in the context menu.\n *\n * Example: `\"My File Picker...\"`\n */\n contextMenuName: string;\n\n /**\n * A function which returns a Promise that resolves to an array of `Track`s\n *\n * Example: `() => Promise.resolve([{ url: './rick_roll.mp3' }])`\n */\n filePicker: () => Promise<Track[]>;\n\n /**\n * Indicates if this options should be made available when the user is offline.\n */\n requiresNetwork: boolean;\n }\n ];\n zIndex?: number;\n handleTrackDropEvent?: (\n e: React.DragEvent<HTMLDivElement>\n ) => Track[] | null | Promise<Track[] | null>;\n handleAddUrlEvent?: () => Track[] | null | Promise<Track[] | null>;\n handleLoadListEvent?: () => Track[] | null | Promise<Track[] | null>;\n handleSaveListEvent?: (tracks: Track[]) => null | Promise<null>;\n}\n\ninterface PrivateOptions {\n avaliableSkins?: { url: string; name: string }[]; // Old misspelled name\n requireJSZip(): Promise<never>; // TODO: Type JSZip\n requireMusicMetadata(): Promise<any>; // TODO: Type musicmetadata\n __initialState?: AppState;\n __customMiddlewares?: Middleware[];\n __initialWindowLayout: {\n [windowId: string]: {\n size: null | [number, number];\n position: WindowPosition;\n };\n };\n __butterchurnOptions: ButterchurnOptions;\n // This is used by https://winampify.io/ to proxy through to Spotify's API.\n __customMediaClass: typeof Media; // This should have the same interface as Media\n}\n\n// Return a promise that resolves when the store matches a predicate.\n// TODO #leak\nconst storeHas = (\n store: Store,\n predicate: (state: AppState) => boolean\n): Promise<void> =>\n new Promise((resolve) => {\n if (predicate(store.getState())) {\n resolve();\n return;\n }\n const unsubscribe = store.subscribe(() => {\n if (predicate(store.getState())) {\n resolve();\n unsubscribe();\n }\n });\n });\n\nclass Winamp {\n _actionEmitter: Emitter;\n _node: HTMLElement | null;\n _disposable: Disposable;\n options: Options & PrivateOptions; // TODO: Make this _private\n media: Media; // TODO: Make this _private\n store: Store; // TODO: Make this _private\n static browserIsSupported() {\n const supportsAudioApi = !!(\n window.AudioContext ||\n // @ts-ignore\n window.webkitAudioContext\n );\n const supportsCanvas = !!window.document.createElement(\"canvas\").getContext;\n const supportsPromises = typeof Promise !== \"undefined\";\n return supportsAudioApi && supportsCanvas && supportsPromises;\n }\n\n constructor(options: Options & PrivateOptions) {\n this._node = null;\n this._disposable = new Disposable();\n this._actionEmitter = new Emitter();\n this.options = options;\n const {\n initialTracks,\n initialSkin,\n avaliableSkins, // Old misspelled name\n availableSkins,\n enableHotkeys = false,\n zIndex,\n requireJSZip,\n requireMusicMetadata,\n handleTrackDropEvent,\n handleAddUrlEvent,\n handleLoadListEvent,\n handleSaveListEvent,\n __butterchurnOptions,\n __customMediaClass,\n } = this.options;\n\n // TODO: Make this much cleaner\n let convertPreset = null;\n if (__butterchurnOptions != null) {\n const {\n importConvertPreset,\n presetConverterEndpoint,\n } = __butterchurnOptions;\n\n if (importConvertPreset != null && presetConverterEndpoint != null) {\n convertPreset = async (file: File): Promise<Object> => {\n const { convertPreset: convert } = await importConvertPreset();\n return convert(\n await FileUtils.genStringFromFileReference(file),\n presetConverterEndpoint\n );\n };\n }\n }\n\n // TODO: Validate required options\n\n this.media = new (__customMediaClass || Media)();\n this.store = getStore(\n this.media,\n this._actionEmitter,\n this.options.__customMiddlewares,\n this.options.__initialState,\n {\n requireJSZip,\n requireMusicMetadata,\n convertPreset,\n // @ts-ignore Typescript is drunk\n handleTrackDropEvent,\n handleAddUrlEvent,\n handleLoadListEvent,\n handleSaveListEvent,\n }\n ) as Store;\n\n if (navigator.onLine) {\n this.store.dispatch({ type: NETWORK_CONNECTED });\n } else {\n this.store.dispatch({ type: NETWORK_DISCONNECTED });\n }\n\n if (zIndex != null) {\n this.store.dispatch({ type: SET_Z_INDEX, zIndex });\n }\n\n if (options.__butterchurnOptions) {\n this.store.dispatch({\n type: ENABLE_MILKDROP,\n open: options.__butterchurnOptions.butterchurnOpen,\n });\n this.store.dispatch(\n Actions.initializePresets(options.__butterchurnOptions)\n );\n }\n\n const handleOnline = () => this.store.dispatch({ type: NETWORK_CONNECTED });\n const handleOffline = () =>\n this.store.dispatch({ type: NETWORK_DISCONNECTED });\n\n window.addEventListener(\"online\", handleOnline);\n window.addEventListener(\"offline\", handleOffline);\n\n this._disposable.add(() => {\n window.removeEventListener(\"online\", handleOnline);\n window.removeEventListener(\"offline\", handleOffline);\n });\n\n if (initialSkin) {\n this.store.dispatch(Actions.setSkinFromUrl(initialSkin.url));\n } else {\n // We are using the default skin.\n this.store.dispatch({ type: LOADED });\n }\n\n if (initialTracks) {\n this._bufferTracks(initialTracks);\n }\n\n if (avaliableSkins != null) {\n console.warn(\n \"The misspelled option `avaliableSkins` is deprecated. Please use `availableSkins` instead.\"\n );\n this.store.dispatch({ type: SET_AVAILABLE_SKINS, skins: avaliableSkins });\n } else if (availableSkins != null) {\n this.store.dispatch({ type: SET_AVAILABLE_SKINS, skins: availableSkins });\n }\n\n const layout = options.__initialWindowLayout;\n if (layout == null) {\n this.store.dispatch(Actions.stackWindows());\n } else {\n Utils.objectForEach(layout, (w, windowId) => {\n if (w.size != null) {\n this.store.dispatch(Actions.setWindowSize(windowId, w.size));\n }\n });\n this.store.dispatch(\n Actions.updateWindowPositions(\n Utils.objectMap(layout, (w) => w.position),\n false\n )\n );\n }\n\n if (enableHotkeys) {\n this._disposable.add(bindHotkeys(this.store.dispatch));\n }\n }\n\n play() {\n this.store.dispatch(Actions.play());\n }\n\n pause() {\n this.store.dispatch(Actions.pause());\n }\n\n stop() {\n this.store.dispatch(Actions.stop());\n }\n\n seekBackward(seconds: number) {\n this.store.dispatch(Actions.seekBackward(seconds));\n }\n\n seekForward(seconds: number) {\n this.store.dispatch(Actions.seekForward(seconds));\n }\n\n seekToTime(seconds: number) {\n this.store.dispatch(Actions.seekToTime(seconds));\n }\n\n nextTrack() {\n this.store.dispatch(Actions.next());\n }\n\n previousTrack() {\n this.store.dispatch(Actions.previous());\n }\n\n _bufferTracks(tracks: Track[]): void {\n const nextIndex = Selectors.getTrackCount(this.store.getState());\n this.store.dispatch(\n Actions.loadMediaFiles(tracks, LOAD_STYLE.BUFFER, nextIndex)\n );\n }\n\n // Append this array of tracks to the end of the current playlist.\n appendTracks(tracks: Track[]): void {\n const nextIndex = Selectors.getTrackCount(this.store.getState());\n this.store.dispatch(\n Actions.loadMediaFiles(tracks, LOAD_STYLE.NONE, nextIndex)\n );\n }\n\n // Replace any existing tracks with this array of tracks, and begin playing.\n setTracksToPlay(tracks: Track[]): void {\n this.store.dispatch(Actions.loadMediaFiles(tracks, LOAD_STYLE.PLAY));\n }\n\n getMediaStatus() {\n return Selectors.getMediaStatus(this.store.getState());\n }\n\n onWillClose(cb: (cancel: () => void) => void): () => void {\n return this._actionEmitter.on(CLOSE_REQUESTED, (action) => {\n cb(action.cancel);\n });\n }\n\n onClose(cb: () => void): () => void {\n return this._actionEmitter.on(CLOSE_WINAMP, cb);\n }\n\n close(): void {\n this.store.dispatch(Actions.close());\n }\n\n reopen(): void {\n this.store.dispatch(Actions.open());\n }\n\n onTrackDidChange(cb: (trackInfo: LoadedURLTrack | null) => void): () => void {\n let previousTrackId: number | null = null;\n // TODO #leak\n return this.store.subscribe(() => {\n const state = this.store.getState();\n const trackId = Selectors.getCurrentlyPlayingTrackIdIfLoaded(state);\n if (trackId === previousTrackId) {\n return;\n }\n previousTrackId = trackId;\n cb(trackId == null ? null : Selectors.getCurrentTrackInfo(state));\n });\n }\n\n onMinimize(cb: () => void): () => void {\n return this._actionEmitter.on(MINIMIZE_WINAMP, cb);\n }\n\n setSkinFromUrl(url: string): void {\n this.store.dispatch(Actions.setSkinFromUrl(url));\n }\n\n async skinIsLoaded(): Promise<void> {\n // Wait for the skin to load.\n // TODO #leak\n await storeHas(this.store, (state) => !state.display.loading);\n // We attempt to pre-resolve these promises before we declare the skin\n // loaded. That's because `<EqGraph>` needs these in order to render fully.\n // As long as these are resolved before we attempt to render, we can ensure\n // that we will have all the data we need on first paint.\n //\n // Note: This won't help for non-initial skin loads.\n await Promise.all([\n Selectors.getPreampLineImage(this.store.getState()),\n Selectors.getLineColorsImage(this.store.getState()),\n ]);\n return;\n }\n\n __loadSerializedState(serializedState: SerializedStateV1): void {\n this.store.dispatch(Actions.loadSerializedState(serializedState));\n }\n\n __getSerializedState() {\n return Selectors.getSerlializedState(this.store.getState());\n }\n\n __onStateChange(cb: () => void): () => void {\n // TODO #leak\n return this.store.subscribe(cb);\n }\n\n async renderWhenReady(node: HTMLElement): Promise<void> {\n this.store.dispatch(Actions.centerWindowsInContainer(node));\n await this.skinIsLoaded();\n // TODO #race We may have been destroyed\n if (this._node != null) {\n throw new Error(\"Cannot render a Webamp instance twice\");\n }\n this._node = node;\n this._disposable.add(() => {\n if (this._node != null) {\n ReactDOM.unmountComponentAtNode(this._node);\n this._node = null;\n }\n });\n\n ReactDOM.render(\n <Provider<Action> store={this.store}>\n <App media={this.media} filePickers={this.options.filePickers || []} />\n </Provider>,\n node\n );\n }\n\n dispose(): void {\n // TODO: Clean up store subscription in onTrackDidChange\n // TODO: Every storeHas call represents a potential race condition\n this.media.dispose();\n this._actionEmitter.dispose();\n this._disposable.dispose();\n }\n}\n\nexport default Winamp;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst initDebug = require(\"debug\");\nconst Util_1 = require(\"../common/Util\");\nconst Token = require(\"token-types\");\nconst BasicParser_1 = require(\"../common/BasicParser\");\nconst debug = initDebug('music-metadata:parser:ID3v1');\n/**\n * ID3v1 Genre mappings\n * Ref: https://de.wikipedia.org/wiki/Liste_der_ID3v1-Genres\n */\nexports.Genres = [\n \"Blues\", \"Classic Rock\", \"Country\", \"Dance\", \"Disco\", \"Funk\", \"Grunge\", \"Hip-Hop\",\n \"Jazz\", \"Metal\", \"New Age\", \"Oldies\", \"Other\", \"Pop\", \"R&B\", \"Rap\", \"Reggae\", \"Rock\",\n \"Techno\", \"Industrial\", \"Alternative\", \"Ska\", \"Death Metal\", \"Pranks\", \"Soundtrack\",\n \"Euro-Techno\", \"Ambient\", \"Trip-Hop\", \"Vocal\", \"Jazz+Funk\", \"Fusion\", \"Trance\",\n \"Classical\", \"Instrumental\", \"Acid\", \"House\", \"Game\", \"Sound Clip\", \"Gospel\", \"Noise\",\n \"Alt. Rock\", \"Bass\", \"Soul\", \"Punk\", \"Space\", \"Meditative\", \"Instrumental Pop\",\n \"Instrumental Rock\", \"Ethnic\", \"Gothic\", \"Darkwave\", \"Techno-Industrial\",\n \"Electronic\", \"Pop-Folk\", \"Eurodance\", \"Dream\", \"Southern Rock\", \"Comedy\", \"Cult\",\n \"Gangsta Rap\", \"Top 40\", \"Christian Rap\", \"Pop/Funk\", \"Jungle\", \"Native American\",\n \"Cabaret\", \"New Wave\", \"Psychedelic\", \"Rave\", \"Showtunes\", \"Trailer\", \"Lo-Fi\", \"Tribal\",\n \"Acid Punk\", \"Acid Jazz\", \"Polka\", \"Retro\", \"Musical\", \"Rock & Roll\", \"Hard Rock\",\n \"Folk\", \"Folk/Rock\", \"National Folk\", \"Swing\", \"Fast-Fusion\", \"Bebob\", \"Latin\", \"Revival\",\n \"Celtic\", \"Bluegrass\", \"Avantgarde\", \"Gothic Rock\", \"Progressive Rock\", \"Psychedelic Rock\",\n \"Symphonic Rock\", \"Slow Rock\", \"Big Band\", \"Chorus\", \"Easy Listening\", \"Acoustic\", \"Humour\",\n \"Speech\", \"Chanson\", \"Opera\", \"Chamber Music\", \"Sonata\", \"Symphony\", \"Booty Bass\", \"Primus\",\n \"Porn Groove\", \"Satire\", \"Slow Jam\", \"Club\", \"Tango\", \"Samba\", \"Folklore\",\n \"Ballad\", \"Power Ballad\", \"Rhythmic Soul\", \"Freestyle\", \"Duet\", \"Punk Rock\", \"Drum Solo\",\n \"A Cappella\", \"Euro-House\", \"Dance Hall\", \"Goa\", \"Drum & Bass\", \"Club-House\",\n \"Hardcore\", \"Terror\", \"Indie\", \"BritPop\", \"Negerpunk\", \"Polsk Punk\", \"Beat\",\n \"Christian Gangsta Rap\", \"Heavy Metal\", \"Black Metal\", \"Crossover\", \"Contemporary Christian\",\n \"Christian Rock\", \"Merengue\", \"Salsa\", \"Thrash Metal\", \"Anime\", \"JPop\", \"Synthpop\",\n \"Abstract\", \"Art Rock\", \"Baroque\", \"Bhangra\", \"Big Beat\", \"Breakbeat\", \"Chillout\",\n \"Downtempo\", \"Dub\", \"EBM\", \"Eclectic\", \"Electro\", \"Electroclash\", \"Emo\", \"Experimental\",\n \"Garage\", \"Global\", \"IDM\", \"Illbient\", \"Industro-Goth\", \"Jam Band\", \"Krautrock\",\n \"Leftfield\", \"Lounge\", \"Math Rock\", \"New Romantic\", \"Nu-Breakz\", \"Post-Punk\", \"Post-Rock\",\n \"Psytrance\", \"Shoegaze\", \"Space Rock\", \"Trop Rock\", \"World Music\", \"Neoclassical\", \"Audiobook\",\n \"Audio Theatre\", \"Neue Deutsche Welle\", \"Podcast\", \"Indie Rock\", \"G-Funk\", \"Dubstep\",\n \"Garage Rock\", \"Psybient\"\n];\n/**\n * Spec: http://id3.org/ID3v1\n * Wiki: https://en.wikipedia.org/wiki/ID3\n */\nconst Iid3v1Token = {\n len: 128,\n /**\n * @param buf Buffer possibly holding the 128 bytes ID3v1.1 metadata header\n * @param off Offset in buffer in bytes\n * @returns ID3v1.1 header if first 3 bytes equals 'TAG', otherwise null is returned\n */\n get: (buf, off) => {\n const header = new Id3v1StringType(3).get(buf, off);\n return header === \"TAG\" ? {\n header,\n title: new Id3v1StringType(30).get(buf, off + 3),\n artist: new Id3v1StringType(30).get(buf, off + 33),\n album: new Id3v1StringType(30).get(buf, off + 63),\n year: new Id3v1StringType(4).get(buf, off + 93),\n comment: new Id3v1StringType(28).get(buf, off + 97),\n // ID3v1.1 separator for track\n zeroByte: Token.UINT8.get(buf, off + 127),\n // track: ID3v1.1 field added by Michael Mutschler\n track: Token.UINT8.get(buf, off + 126),\n genre: Token.UINT8.get(buf, off + 127)\n } : null;\n }\n};\nclass Id3v1StringType extends Token.StringType {\n constructor(len) {\n super(len, \"binary\");\n }\n get(buf, off) {\n let value = super.get(buf, off);\n value = Util_1.default.trimRightNull(value);\n value = value.trim();\n return value.length > 0 ? value : undefined;\n }\n}\nclass ID3v1Parser extends BasicParser_1.BasicParser {\n static getGenre(genreIndex) {\n if (genreIndex < exports.Genres.length) {\n return exports.Genres[genreIndex];\n }\n return undefined; // ToDO: generate warning\n }\n parse() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.tokenizer.fileSize) {\n debug('Skip checking for ID3v1 because the file-size is unknown');\n return;\n }\n const offset = this.tokenizer.fileSize - Iid3v1Token.len;\n if (this.tokenizer.position > offset) {\n debug('Already consumed the last 128 bytes');\n return;\n }\n const header = yield this.tokenizer.readToken(Iid3v1Token, offset);\n if (header) {\n debug(\"ID3v1 header found at: pos=%s\", this.tokenizer.fileSize - Iid3v1Token.len);\n for (const id of [\"title\", \"artist\", \"album\", \"comment\", \"track\", \"year\"]) {\n if (header[id] && header[id] !== \"\")\n this.addTag(id, header[id]);\n }\n const genre = ID3v1Parser.getGenre(header.genre);\n if (genre)\n this.addTag('genre', genre);\n }\n else {\n debug(\"ID3v1 header not found at: pos=%s\", this.tokenizer.fileSize - Iid3v1Token.len);\n }\n });\n }\n addTag(id, value) {\n this.metadata.addTag('ID3v1', id, value);\n }\n}\nexports.ID3v1Parser = ID3v1Parser;\n//# sourceMappingURL=ID3v1Parser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst stream_1 = require(\"stream\");\n/**\n * Utility to convert stream to buffer\n */\nclass ID3Stream extends stream_1.Readable {\n constructor(buf) {\n super();\n this.buf = buf;\n }\n _read() {\n this.push(this.buf);\n this.push(null); // push the EOF-signaling `null` chunk\n }\n}\nexports.ID3Stream = ID3Stream;\n//# sourceMappingURL=ID3Stream.js.map","// 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'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\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// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\nvar destroyImpl = require('./internal/streams/destroy');\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var writableHwm = options.writableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n\n if (typeof options.final === 'function') this._final = options.final;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n pna.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n pna.nextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\n\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n pna.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n pna.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /*<replacement>*/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /*</replacement>*/\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n stream.emit('error', err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function') {\n state.pendingcb++;\n state.finalCalled = true;\n pna.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = corkReq;\n } else {\n state.corkedRequestsFree = corkReq;\n }\n}\n\nObject.defineProperty(Writable.prototype, 'destroyed', {\n get: function () {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\n\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n this.end();\n cb(err);\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst _debug = require(\"debug\");\nconst Vorbis = require(\"./Vorbis\");\nconst debug = _debug('music-metadata:parser:ogg:vorbis1');\n/**\n * Vorbis 1 Parser.\n * Used by OggParser\n */\nclass VorbisParser {\n constructor(metadata, options) {\n this.metadata = metadata;\n this.options = options;\n this.codecName = 'Vorbis I';\n this.pageSegments = [];\n }\n /**\n * Vorbis 1 parser\n * @param header Ogg Page Header\n * @param pageData Page data\n */\n parsePage(header, pageData) {\n if (header.headerType.firstPage) {\n this.parseFirstPage(header, pageData);\n }\n else {\n if (header.headerType.continued) {\n if (this.pageSegments.length === 0) {\n throw new Error(\"Cannot continue on previous page\");\n }\n this.pageSegments.push(pageData);\n }\n if (header.headerType.lastPage || !header.headerType.continued) {\n // Flush page segments\n if (this.pageSegments.length > 0) {\n const fullPage = Buffer.concat(this.pageSegments);\n this.parseFullPage(fullPage);\n }\n // Reset page segments\n this.pageSegments = header.headerType.lastPage ? [] : [pageData];\n }\n }\n if (header.headerType.lastPage) {\n this.calculateDuration(header);\n }\n }\n flush() {\n this.parseFullPage(Buffer.concat(this.pageSegments));\n }\n /**\n * Parse first Ogg/Vorbis page\n * @param {IPageHeader} header\n * @param {Buffer} pageData\n */\n parseFirstPage(header, pageData) {\n debug(\"Parse first page\");\n // Parse Vorbis common header\n const commonHeader = Vorbis.CommonHeader.get(pageData, 0);\n if (commonHeader.vorbis !== 'vorbis')\n throw new Error('Metadata does not look like Vorbis');\n if (commonHeader.packetType === 1) {\n const idHeader = Vorbis.IdentificationHeader.get(pageData, Vorbis.CommonHeader.len);\n this.metadata.setFormat('sampleRate', idHeader.sampleRate);\n this.metadata.setFormat('bitrate', idHeader.bitrateNominal);\n this.metadata.setFormat('numberOfChannels', idHeader.channelMode);\n debug(\"sample-rate=%s[hz], bitrate=%s[b/s], channel-mode=%s\", idHeader.sampleRate, idHeader.bitrateNominal, idHeader.channelMode);\n }\n else\n throw new Error('First Ogg page should be type 1: the identification header');\n }\n parseFullPage(pageData) {\n // New page\n const commonHeader = Vorbis.CommonHeader.get(pageData, 0);\n debug(\"Parse full page: type=%s, byteLength=%s\", commonHeader.packetType, pageData.byteLength);\n switch (commonHeader.packetType) {\n case 3: // type 3: comment header\n return this.parseUserCommentList(pageData, Vorbis.CommonHeader.len);\n case 1: // type 1: the identification header\n case 5: // type 5: setup header type\n break; // ignore\n }\n }\n calculateDuration(header) {\n if (this.metadata.format.sampleRate && header.absoluteGranulePosition >= 0) {\n // Calculate duration\n this.metadata.setFormat('numberOfSamples', header.absoluteGranulePosition);\n this.metadata.setFormat('duration', this.metadata.format.numberOfSamples / this.metadata.format.sampleRate);\n }\n }\n /**\n * Ref: https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-840005.2\n * @returns {Promise<number>}\n */\n parseUserCommentList(pageData, offset) {\n const strLen = Token.UINT32_LE.get(pageData, offset);\n offset += 4;\n const vendorString = new Token.StringType(strLen, 'utf-8').get(pageData, offset);\n offset += strLen;\n let userCommentListLength = Token.UINT32_LE.get(pageData, offset);\n offset += 4;\n while (userCommentListLength-- > 0) {\n offset += this.parseUserComment(pageData, offset);\n }\n }\n parseUserComment(pageData, offset) {\n const strLen = Token.UINT32_LE.get(pageData, offset);\n const v = new Token.StringType(strLen, 'utf-8').get(pageData, offset + 4);\n const idx = v.indexOf('=');\n const key = v.slice(0, idx).toUpperCase();\n let value = v.slice(idx + 1);\n if (key === 'METADATA_BLOCK_PICTURE') {\n value = this.options.skipCovers ? null : Vorbis.VorbisPictureToken.fromBase64(value);\n }\n if (value !== null) {\n debug(\"Push tag: id=%s, value=%s\", key, value);\n this.metadata.addTag('vorbis', key, value);\n }\n return Token.UINT32_LE.len + strLen;\n }\n}\nexports.VorbisParser = VorbisParser;\n//# sourceMappingURL=VorbisParser.js.map","/** @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;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}\nvar A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},B={};function C(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}C.prototype.isReactComponent={};C.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(z(85));this.updater.enqueueSetState(this,a,b,\"setState\")};C.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};\nfunction D(){}D.prototype=C.prototype;function E(a,b,c){this.props=a;this.context=b;this.refs=B;this.updater=c||A}var F=E.prototype=new D;F.constructor=E;l(F,C.prototype);F.isPureReactComponent=!0;var G={current:null},H=Object.prototype.hasOwnProperty,I={key:!0,ref:!0,__self:!0,__source:!0};\nfunction J(a,b,c){var e,d={},k=null,h=null;if(null!=b)for(e in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)H.call(b,e)&&!I.hasOwnProperty(e)&&(d[e]=b[e]);var g=arguments.length-2;if(1===g)d.children=c;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];d.children=f}if(a&&a.defaultProps)for(e in g=a.defaultProps,g)void 0===d[e]&&(d[e]=g[e]);return{$$typeof:n,type:a,key:k,ref:h,props:d,_owner:G.current}}\nfunction K(a,b){return{$$typeof:n,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function L(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===n}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var M=/\\/+/g;function N(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction O(a,b,c,e,d){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case n:case p:h=!0}}if(h)return h=a,d=d(h),a=\"\"===e?\".\"+N(h,0):e,Array.isArray(d)?(c=\"\",null!=a&&(c=a.replace(M,\"$&/\")+\"/\"),O(d,b,c,\"\",function(a){return a})):null!=d&&(L(d)&&(d=K(d,c+(!d.key||h&&h.key===d.key?\"\":(\"\"+d.key).replace(M,\"$&/\")+\"/\")+a)),b.push(d)),1;h=0;e=\"\"===e?\".\":e+\":\";if(Array.isArray(a))for(var g=\n0;g<a.length;g++){k=a[g];var f=e+N(k,g);h+=O(k,b,c,f,d)}else if(f=y(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=e+N(k,g++),h+=O(k,b,c,f,d);else if(\"object\"===k)throw b=\"\"+a,Error(z(31,\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b));return h}function P(a,b,c){if(null==a)return a;var e=[],d=0;O(a,e,\"\",\"\",function(a){return b.call(c,a,d++)});return e}\nfunction Q(a){if(-1===a._status){var b=a._result;b=b();a._status=0;a._result=b;b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)})}if(1===a._status)return a._result;throw a._result;}var R={current:null};function S(){var a=R.current;if(null===a)throw Error(z(321));return a}var T={ReactCurrentDispatcher:R,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:G,IsSomeRendererActing:{current:!1},assign:l};\nexports.Children={map:P,forEach:function(a,b,c){P(a,function(){b.apply(this,arguments)},c)},count:function(a){var b=0;P(a,function(){b++});return b},toArray:function(a){return P(a,function(a){return a})||[]},only:function(a){if(!L(a))throw Error(z(143));return a}};exports.Component=C;exports.PureComponent=E;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=T;\nexports.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(z(267,a));var e=l({},a.props),d=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=G.current);void 0!==b.key&&(d=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)H.call(b,f)&&!I.hasOwnProperty(f)&&(e[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)e.children=c;else if(1<f){g=Array(f);for(var m=0;m<f;m++)g[m]=arguments[m+2];e.children=g}return{$$typeof:n,type:a.type,\nkey:d,ref:k,props:e,_owner:h}};exports.createContext=function(a,b){void 0===b&&(b=null);a={$$typeof:r,_calculateChangedBits:b,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.Provider={$$typeof:q,_context:a};return a.Consumer=a};exports.createElement=J;exports.createFactory=function(a){var b=J.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};exports.forwardRef=function(a){return{$$typeof:t,render:a}};exports.isValidElement=L;\nexports.lazy=function(a){return{$$typeof:v,_payload:{_status:-1,_result:a},_init:Q}};exports.memo=function(a,b){return{$$typeof:u,type:a,compare:void 0===b?null:b}};exports.useCallback=function(a,b){return S().useCallback(a,b)};exports.useContext=function(a,b){return S().useContext(a,b)};exports.useDebugValue=function(){};exports.useEffect=function(a,b){return S().useEffect(a,b)};exports.useImperativeHandle=function(a,b,c){return S().useImperativeHandle(a,b,c)};\nexports.useLayoutEffect=function(a,b){return S().useLayoutEffect(a,b)};exports.useMemo=function(a,b){return S().useMemo(a,b)};exports.useReducer=function(a,b,c){return S().useReducer(a,b,c)};exports.useRef=function(a){return S().useRef(a)};exports.useState=function(a){return S().useState(a)};exports.version=\"17.0.1\";\n","/** @license React v17.0.1\n * react-dom.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 Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!aa)throw Error(y(227));var ba=new Set,ca={};function da(a,b){ea(a,b);ea(a+\"Capture\",b)}\nfunction ea(a,b){ca[a]=b;for(a=0;a<b.length;a++)ba.add(b[a])}\nvar fa=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ha=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,ia=Object.prototype.hasOwnProperty,\nja={},ka={};function la(a){if(ia.call(ka,a))return!0;if(ia.call(ja,a))return!1;if(ha.test(a))return ka[a]=!0;ja[a]=!0;return!1}function ma(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction na(a,b,c,d){if(null===b||\"undefined\"===typeof b||ma(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}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:!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1]?!1:!0;f||(na(b,c,e,d)&&(c=null),d||null===e?la(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c))))}\nvar ra=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,sa=60103,ta=60106,ua=60107,wa=60108,xa=60114,ya=60109,za=60110,Aa=60112,Ba=60113,Ca=60120,Da=60115,Ea=60116,Fa=60121,Ga=60128,Ha=60129,Ia=60130,Ja=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var E=Symbol.for;sa=E(\"react.element\");ta=E(\"react.portal\");ua=E(\"react.fragment\");wa=E(\"react.strict_mode\");xa=E(\"react.profiler\");ya=E(\"react.provider\");za=E(\"react.context\");Aa=E(\"react.forward_ref\");Ba=E(\"react.suspense\");Ca=E(\"react.suspense_list\");Da=E(\"react.memo\");Ea=E(\"react.lazy\");Fa=E(\"react.block\");E(\"react.scope\");Ga=E(\"react.opaque.id\");Ha=E(\"react.debug_trace_mode\");Ia=E(\"react.offscreen\");Ja=E(\"react.legacy_hidden\")}\nvar Ka=\"function\"===typeof Symbol&&Symbol.iterator;function La(a){if(null===a||\"object\"!==typeof a)return null;a=Ka&&a[Ka]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var Ma;function Na(a){if(void 0===Ma)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);Ma=b&&b[1]||\"\"}return\"\\n\"+Ma+a}var Oa=!1;\nfunction Pa(a,b){if(!a||Oa)return\"\";Oa=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(k){var d=k}Reflect.construct(a,[],b)}else{try{b.call()}catch(k){d=k}a.call(b.prototype)}else{try{throw Error();}catch(k){d=k}a()}}catch(k){if(k&&d&&\"string\"===typeof k.stack){for(var e=k.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||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;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(y(91));return m({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(y(92));if(Array.isArray(c)){if(!(1>=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=\"<svg>\"+b.valueOf().toString()+\"</svg>\";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;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(a,b,c,d,e){return a(b,c,d,e)}function Ib(){}var Jb=Gb,Kb=!1,Lb=!1;function Mb(){if(null!==zb||null!==Ab)Ib(),Fb()}\nfunction Nb(a,b,c){if(Lb)return a(b,c);Lb=!0;try{return Jb(a,b,c)}finally{Lb=!1,Mb()}}\nfunction Ob(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(y(231,b,typeof c));return c}var Pb=!1;if(fa)try{var Qb={};Object.defineProperty(Qb,\"passive\",{get:function(){Pb=!0}});window.addEventListener(\"test\",Qb,Qb);window.removeEventListener(\"test\",Qb,Qb)}catch(a){Pb=!1}function Rb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(n){this.onError(n)}}var Sb=!1,Tb=null,Ub=!1,Vb=null,Wb={onError:function(a){Sb=!0;Tb=a}};function Xb(a,b,c,d,e,f,g,h,k){Sb=!1;Tb=null;Rb.apply(Wb,arguments)}\nfunction Yb(a,b,c,d,e,f,g,h,k){Xb.apply(this,arguments);if(Sb){if(Sb){var l=Tb;Sb=!1;Tb=null}else throw Error(y(198));Ub||(Ub=!0,Vb=l)}}function Zb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function $b(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function ac(a){if(Zb(a)!==a)throw Error(y(188));}\nfunction bc(a){var b=a.alternate;if(!b){b=Zb(a);if(null===b)throw Error(y(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return ac(e),a;if(f===d)return ac(e),b;f=f.sibling}throw Error(y(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(y(189));}}if(c.alternate!==d)throw Error(y(190));}if(3!==c.tag)throw Error(y(188));return c.stateNode.current===c?a:b}function cc(a){a=bc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction dc(a,b){for(var c=a.alternate;null!==b;){if(b===a||b===c)return!0;b=b.return}return!1}var ec,fc,gc,hc,ic=!1,jc=[],kc=null,lc=null,mc=null,nc=new Map,oc=new Map,pc=[],qc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction rc(a,b,c,d,e){return{blockedOn:a,domEventName:b,eventSystemFlags:c|16,nativeEvent:e,targetContainers:[d]}}function sc(a,b){switch(a){case \"focusin\":case \"focusout\":kc=null;break;case \"dragenter\":case \"dragleave\":lc=null;break;case \"mouseover\":case \"mouseout\":mc=null;break;case \"pointerover\":case \"pointerout\":nc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":oc.delete(b.pointerId)}}\nfunction tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a=rc(b,c,d,e,f),null!==b&&(b=Cb(b),null!==b&&fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction uc(a,b,c,d,e){switch(b){case \"focusin\":return kc=tc(kc,a,b,c,d,e),!0;case \"dragenter\":return lc=tc(lc,a,b,c,d,e),!0;case \"mouseover\":return mc=tc(mc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;nc.set(f,tc(nc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,oc.set(f,tc(oc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction vc(a){var b=wc(a.target);if(null!==b){var c=Zb(b);if(null!==c)if(b=c.tag,13===b){if(b=$b(c),null!==b){a.blockedOn=b;hc(a.lanePriority,function(){r.unstable_runWithPriority(a.priority,function(){gc(c)})});return}}else if(3===b&&c.stateNode.hydrate){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c)return b=Cb(c),null!==b&&fc(b),a.blockedOn=c,!1;b.shift()}return!0}function zc(a,b,c){xc(a)&&c.delete(b)}\nfunction Ac(){for(ic=!1;0<jc.length;){var a=jc[0];if(null!==a.blockedOn){a=Cb(a.blockedOn);null!==a&&ec(a);break}for(var b=a.targetContainers;0<b.length;){var c=yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null!==c){a.blockedOn=c;break}b.shift()}null===a.blockedOn&&jc.shift()}null!==kc&&xc(kc)&&(kc=null);null!==lc&&xc(lc)&&(lc=null);null!==mc&&xc(mc)&&(mc=null);nc.forEach(zc);oc.forEach(zc)}\nfunction Bc(a,b){a.blockedOn===b&&(a.blockedOn=null,ic||(ic=!0,r.unstable_scheduleCallback(r.unstable_NormalPriority,Ac)))}\nfunction Cc(a){function b(b){return Bc(b,a)}if(0<jc.length){Bc(jc[0],a);for(var c=1;c<jc.length;c++){var d=jc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==kc&&Bc(kc,a);null!==lc&&Bc(lc,a);null!==mc&&Bc(mc,a);nc.forEach(b);oc.forEach(b);for(c=0;c<pc.length;c++)d=pc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<pc.length&&(c=pc[0],null===c.blockedOn);)vc(c),null===c.blockedOn&&pc.shift()}\nfunction Dc(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Ec={animationend:Dc(\"Animation\",\"AnimationEnd\"),animationiteration:Dc(\"Animation\",\"AnimationIteration\"),animationstart:Dc(\"Animation\",\"AnimationStart\"),transitionend:Dc(\"Transition\",\"TransitionEnd\")},Fc={},Gc={};\nfa&&(Gc=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Ec.animationend.animation,delete Ec.animationiteration.animation,delete Ec.animationstart.animation),\"TransitionEvent\"in window||delete Ec.transitionend.transition);function Hc(a){if(Fc[a])return Fc[a];if(!Ec[a])return a;var b=Ec[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Gc)return Fc[a]=b[c];return a}\nvar Ic=Hc(\"animationend\"),Jc=Hc(\"animationiteration\"),Kc=Hc(\"animationstart\"),Lc=Hc(\"transitionend\"),Mc=new Map,Nc=new Map,Oc=[\"abort\",\"abort\",Ic,\"animationEnd\",Jc,\"animationIteration\",Kc,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\n\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Lc,\"transitionEnd\",\"waiting\",\"waiting\"];function Pc(a,b){for(var c=0;c<a.length;c+=2){var d=a[c],e=a[c+1];e=\"on\"+(e[0].toUpperCase()+e.slice(1));Nc.set(d,b);Mc.set(d,e);da(e,[d])}}var Qc=r.unstable_now;Qc();var F=8;\nfunction Rc(a){if(0!==(1&a))return F=15,1;if(0!==(2&a))return F=14,2;if(0!==(4&a))return F=13,4;var b=24&a;if(0!==b)return F=12,b;if(0!==(a&32))return F=11,32;b=192&a;if(0!==b)return F=10,b;if(0!==(a&256))return F=9,256;b=3584&a;if(0!==b)return F=8,b;if(0!==(a&4096))return F=7,4096;b=4186112&a;if(0!==b)return F=6,b;b=62914560&a;if(0!==b)return F=5,b;if(a&67108864)return F=4,67108864;if(0!==(a&134217728))return F=3,134217728;b=805306368&a;if(0!==b)return F=2,b;if(0!==(1073741824&a))return F=1,1073741824;\nF=8;return a}function Sc(a){switch(a){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function Tc(a){switch(a){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(y(358,a));}}\nfunction Uc(a,b){var c=a.pendingLanes;if(0===c)return F=0;var d=0,e=0,f=a.expiredLanes,g=a.suspendedLanes,h=a.pingedLanes;if(0!==f)d=f,e=F=15;else if(f=c&134217727,0!==f){var k=f&~g;0!==k?(d=Rc(k),e=F):(h&=f,0!==h&&(d=Rc(h),e=F))}else f=c&~g,0!==f?(d=Rc(f),e=F):0!==h&&(d=Rc(h),e=F);if(0===d)return 0;d=31-Vc(d);d=c&((0>d?0:1<<d)<<1)-1;if(0!==b&&b!==d&&0===(b&g)){Rc(b);if(e<=F)return b;F=e}b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-Vc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction Wc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function Xc(a,b){switch(a){case 15:return 1;case 14:return 2;case 12:return a=Yc(24&~b),0===a?Xc(10,b):a;case 10:return a=Yc(192&~b),0===a?Xc(8,b):a;case 8:return a=Yc(3584&~b),0===a&&(a=Yc(4186112&~b),0===a&&(a=512)),a;case 2:return b=Yc(805306368&~b),0===b&&(b=268435456),b}throw Error(y(358,a));}function Yc(a){return a&-a}function Zc(a){for(var b=[],c=0;31>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<jc.length&&-1<qc.indexOf(a))a=rc(null,a,b,c,d),jc.push(a);else{var f=yc(a,b,c,d);if(null===f)e&&sc(a,d);else{if(e){if(-1<qc.indexOf(a)){a=rc(f,a,b,c,d);jc.push(a);return}if(uc(f,a,b,c,d))return;sc(a,d)}jd(a,b,d,null,c)}}}}\nfunction yc(a,b,c,d){var e=xb(d);e=wc(e);if(null!==e){var f=Zb(e);if(null===f)e=null;else{var g=f.tag;if(13===g){e=$b(f);if(null!==e)return e;e=null}else if(3===g){if(f.stateNode.hydrate)return 3===f.tag?f.stateNode.containerInfo:null;e=null}else f!==e&&(e=null)}}jd(a,b,d,e,c);return null}var kd=null,ld=null,md=null;\nfunction nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}function od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}m(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=m({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=m({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=m({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=m({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=m({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=m({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=m({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=m({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=m({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=m({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=m({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=m({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=fa&&\"CompositionEvent\"in window,be=null;fa&&\"documentMode\"in document&&(be=document.documentMode);var ce=fa&&\"TextEvent\"in window&&!be,de=fa&&(!ae||be&&8<be&&11>=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.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(fa){var xe;if(fa){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));a=re;if(Kb)a(b);else{Kb=!0;try{Gb(a,b)}finally{Kb=!1,Mb()}}}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge,Ie=Object.prototype.hasOwnProperty;\nfunction Je(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++)if(!Ie.call(b,c[d])||!He(a[c[d]],b[c[d]]))return!1;return!0}function Ke(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Le(a,b){var c=Ke(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=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\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nPc(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),\n0);Pc(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1);Pc(Oc,2);for(var Ve=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),We=0;We<Ve.length;We++)Nc.set(Ve[We],0);ea(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);\nea(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ea(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);ea(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);da(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));da(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));da(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);da(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));\nda(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));da(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Xe=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Ye=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Xe));\nfunction Ze(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Yb(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;Ze(e,h,l);f=k}}}if(Ub)throw a=Vb,Ub=!1,Vb=null,a;}\nfunction G(a,b){var c=$e(b),d=a+\"__bubble\";c.has(d)||(af(b,a,2,!1),c.add(d))}var bf=\"_reactListening\"+Math.random().toString(36).slice(2);function cf(a){a[bf]||(a[bf]=!0,ba.forEach(function(b){Ye.has(b)||df(b,!1,a,null);df(b,!0,a,null)}))}\nfunction df(a,b,c,d){var e=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,f=c;\"selectionchange\"===a&&9!==c.nodeType&&(f=c.ownerDocument);if(null!==d&&!b&&Ye.has(a)){if(\"scroll\"!==a)return;e|=2;f=d}var g=$e(f),h=a+\"__\"+(b?\"capture\":\"bubble\");g.has(h)||(b&&(e|=4),af(f,a,e,b),g.add(h))}\nfunction af(a,b,c,d){var e=Nc.get(b);switch(void 0===e?2:e){case 0:e=gd;break;case 1:e=id;break;default:e=hd}c=e.bind(null,b,c,a);e=void 0;!Pb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction jd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Nb(function(){var d=f,e=xb(c),g=[];\na:{var h=Mc.get(a);if(void 0!==h){var k=td,x=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":x=\"focus\";k=Fd;break;case \"focusout\":x=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case Ic:case Jc:case Kc:k=Hd;break;case Lc:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var w=0!==(b&4),z=!w&&\"scroll\"===a,u=w?null!==h?h+\"Capture\":null:h;w=[];for(var t=d,q;null!==\nt;){q=t;var v=q.stateNode;5===q.tag&&null!==v&&(q=v,null!==u&&(v=Ob(t,u),null!=v&&w.push(ef(t,v,q))));if(z)break;t=t.return}0<w.length&&(h=new k(h,x,null,c,e),g.push({event:h,listeners:w}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&0===(b&16)&&(x=c.relatedTarget||c.fromElement)&&(wc(x)||x[ff]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(x=c.relatedTarget||c.toElement,k=d,x=x?wc(x):null,null!==\nx&&(z=Zb(x),x!==z||5!==x.tag&&6!==x.tag))x=null}else k=null,x=d;if(k!==x){w=Bd;v=\"onMouseLeave\";u=\"onMouseEnter\";t=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)w=Td,v=\"onPointerLeave\",u=\"onPointerEnter\",t=\"pointer\";z=null==k?h:ue(k);q=null==x?h:ue(x);h=new w(v,t+\"leave\",k,c,e);h.target=z;h.relatedTarget=q;v=null;wc(e)===d&&(w=new w(u,t+\"enter\",x,c,e),w.target=q,w.relatedTarget=z,v=w);z=v;if(k&&x)b:{w=k;u=x;t=0;for(q=w;q;q=gf(q))t++;q=0;for(v=u;v;v=gf(v))q++;for(;0<t-q;)w=gf(w),t--;for(;0<q-t;)u=\ngf(u),q--;for(;t--;){if(w===u||null!==u&&w===u.alternate)break b;w=gf(w);u=gf(u)}w=null}else w=null;null!==k&&hf(g,h,k,w,!1);null!==x&&null!==z&&hf(g,z,x,w,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var J=ve;else if(me(h))if(we)J=Fe;else{J=De;var K=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(J=Ee);if(J&&(J=J(a,d))){ne(g,J,c,e);break a}K&&K(a,h,d);\"focusout\"===a&&(K=h._wrapperState)&&\nK.controlled&&\"number\"===h.type&&bb(h,\"number\",h.value)}K=d?ue(d):window;switch(a){case \"focusin\":if(me(K)||\"true\"===K.contentEditable)Qe=K,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var Q;if(ae)b:{switch(a){case \"compositionstart\":var L=\"onCompositionStart\";break b;case \"compositionend\":L=\"onCompositionEnd\";break b;\ncase \"compositionupdate\":L=\"onCompositionUpdate\";break b}L=void 0}else ie?ge(a,c)&&(L=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(L=\"onCompositionStart\");L&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==L?\"onCompositionEnd\"===L&&ie&&(Q=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),K=oe(d,L),0<K.length&&(L=new Ld(L,a,null,c,e),g.push({event:L,listeners:K}),Q?L.data=Q:(Q=he(c),null!==Q&&(L.data=Q))));if(Q=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),0<d.length&&(e=new Ld(\"onBeforeInput\",\n\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=Q)}se(g,b)})}function ef(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Ob(a,c),null!=f&&d.unshift(ef(a,f,e)),f=Ob(a,b),null!=f&&d.push(ef(a,f,e)));a=a.return}return d}function gf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction hf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Ob(c,f),null!=k&&g.unshift(ef(c,k,h))):e||(k=Ob(c,f),null!=k&&g.push(ef(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}function jf(){}var kf=null,lf=null;function mf(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction nf(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var of=\"function\"===typeof setTimeout?setTimeout:void 0,pf=\"function\"===typeof clearTimeout?clearTimeout:void 0;function qf(a){1===a.nodeType?a.textContent=\"\":9===a.nodeType&&(a=a.body,null!=a&&(a.textContent=\"\"))}\nfunction rf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}function sf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var tf=0;function uf(a){return{$$typeof:Ga,toString:a,valueOf:a}}var vf=Math.random().toString(36).slice(2),wf=\"__reactFiber$\"+vf,xf=\"__reactProps$\"+vf,ff=\"__reactContainer$\"+vf,yf=\"__reactEvents$\"+vf;\nfunction wc(a){var b=a[wf];if(b)return b;for(var c=a.parentNode;c;){if(b=c[ff]||c[wf]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=sf(a);null!==a;){if(c=a[wf])return c;a=sf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[wf]||a[ff];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(y(33));}function Db(a){return a[xf]||null}\nfunction $e(a){var b=a[yf];void 0===b&&(b=a[yf]=new Set);return b}var zf=[],Af=-1;function Bf(a){return{current:a}}function H(a){0>Af||(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(;a<b.length;a++){var c=b[a];do c=c(!0);while(null!==c)}});ag=null}catch(c){throw null!==ag&&(ag=ag.slice(a+1)),Of(Uf,ig),c;}finally{cg=!1}}}var kg=ra.ReactCurrentBatchConfig;function lg(a,b){if(a&&a.defaultProps){b=m({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var mg=Bf(null),ng=null,og=null,pg=null;function qg(){pg=og=ng=null}\nfunction rg(a){var b=mg.current;H(mg);a.type._context._currentValue=b}function sg(a,b){for(;null!==a;){var c=a.alternate;if((a.childLanes&b)===b)if(null===c||(c.childLanes&b)===b)break;else c.childLanes|=b;else a.childLanes|=b,null!==c&&(c.childLanes|=b);a=a.return}}function tg(a,b){ng=a;pg=og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(ug=!0),a.firstContext=null)}\nfunction vg(a,b){if(pg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)pg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===og){if(null===ng)throw Error(y(308));og=b;ng.dependencies={lanes:0,firstContext:b,responders:null}}else og=og.next=b}return a._currentValue}var wg=!1;function xg(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}\nfunction yg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function zg(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}function Ag(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction Bg(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction Cg(a,b,c,d){var e=a.updateQueue;wg=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var n=a.alternate;if(null!==n){n=n.updateQueue;var A=n.lastBaseUpdate;A!==g&&(null===A?n.firstBaseUpdate=l:A.next=l,n.lastBaseUpdate=k)}}if(null!==f){A=e.baseState;g=0;n=l=k=null;do{h=f.lane;var p=f.eventTime;if((d&h)===h){null!==n&&(n=n.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,\nnext:null});a:{var C=a,x=f;h=b;p=c;switch(x.tag){case 1:C=x.payload;if(\"function\"===typeof C){A=C.call(p,A,h);break a}A=C;break a;case 3:C.flags=C.flags&-4097|64;case 0:C=x.payload;h=\"function\"===typeof C?C.call(p,A,h):C;if(null===h||void 0===h)break a;A=m({},A,h);break a;case 2:wg=!0}}null!==f.callback&&(a.flags|=32,h=e.effects,null===h?e.effects=[f]:h.push(f))}else p={eventTime:p,lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===n?(l=n=p,k=A):n=n.next=p,g|=h;f=f.next;if(null===\nf)if(h=e.shared.pending,null===h)break;else f=h.next,h.next=null,e.lastBaseUpdate=h,e.shared.pending=null}while(1);null===n&&(k=A);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=n;Dg|=g;a.lanes=g;a.memoizedState=A}}function Eg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(y(191,e));e.call(d)}}}var Fg=(new aa.Component).refs;\nfunction Gg(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:m({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Kg={isMounted:function(a){return(a=a._reactInternals)?Zb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=Hg(),e=Ig(a),f=zg(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);Ag(a,f);Jg(a,e,d)},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=Hg(),d=Ig(a),e=zg(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=\nb);Ag(a,e);Jg(a,d,c)}};function Lg(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Je(c,d)||!Je(e,f):!0}\nfunction Mg(a,b,c){var d=!1,e=Cf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=vg(f):(e=Ff(b)?Df:M.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Ef(a,e):Cf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Kg;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Ng(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Kg.enqueueReplaceState(b,b.state,null)}\nfunction Og(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=Fg;xg(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=vg(f):(f=Ff(b)?Df:M.current,e.context=Ef(a,f));Cg(a,c,e,d);e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Gg(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||\n(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Kg.enqueueReplaceState(e,e.state,null),Cg(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4)}var Pg=Array.isArray;\nfunction Qg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(y(309));var d=c.stateNode}if(!d)throw Error(y(147,a));var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===Fg&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}if(\"string\"!==typeof a)throw Error(y(284));if(!c._owner)throw Error(y(290,a));}return a}\nfunction Rg(a,b){if(\"textarea\"!==a.type)throw Error(y(31,\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b));}\nfunction Sg(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.flags=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Tg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags=2,\nc):d;b.flags=2;return c}function g(b){a&&null===b.alternate&&(b.flags=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Ug(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){if(null!==b&&b.elementType===c.type)return d=e(b,c.props),d.ref=Qg(a,b,c),d.return=a,d;d=Vg(c.type,c.key,c.props,null,a.mode,d);d.ref=Qg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||b.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=\nWg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function n(a,b,c,d,f){if(null===b||7!==b.tag)return b=Xg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function A(a,b,c){if(\"string\"===typeof b||\"number\"===typeof b)return b=Ug(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case sa:return c=Vg(b.type,b.key,b.props,null,a.mode,c),c.ref=Qg(a,null,b),c.return=a,c;case ta:return b=Wg(b,a.mode,c),b.return=a,b}if(Pg(b)||La(b))return b=Xg(b,\na.mode,c,null),b.return=a,b;Rg(a,b)}return null}function p(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case sa:return c.key===e?c.type===ua?n(a,b,c.props.children,d,e):k(a,b,c,d):null;case ta:return c.key===e?l(a,b,c,d):null}if(Pg(c)||La(c))return null!==e?null:n(a,b,c,d,null);Rg(a,c)}return null}function C(a,b,c,d,e){if(\"string\"===typeof d||\"number\"===typeof d)return a=a.get(c)||\nnull,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case sa:return a=a.get(null===d.key?c:d.key)||null,d.type===ua?n(b,a,d.props.children,e,d.key):k(b,a,d,e);case ta:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e)}if(Pg(d)||La(d))return a=a.get(c)||null,n(b,a,d,e,null);Rg(b,d)}return null}function x(e,g,h,k){for(var l=null,t=null,u=g,z=g=0,q=null;null!==u&&z<h.length;z++){u.index>z?(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(;z<h.length;z++)u=A(e,h[z],k),null!==u&&(g=f(u,g,z),null===t?l=u:t.sibling=u,t=u);return l}for(u=d(e,u);z<h.length;z++)q=C(u,e,z,h[z],k),null!==q&&(a&&null!==q.alternate&&u.delete(null===q.key?z:q.key),g=f(q,g,z),null===t?l=q:t.sibling=q,t=q);a&&u.forEach(function(a){return b(e,a)});return l}function w(e,g,h,k){var l=La(h);if(\"function\"!==typeof l)throw Error(y(150));h=l.call(h);if(null==\nh)throw Error(y(151));for(var t=l=null,u=g,z=g=0,q=null,n=h.next();null!==u&&!n.done;z++,n=h.next()){u.index>z?(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;a<th.length;a++)th[a]._workInProgressVersionPrimary=null;th.length=0}var vh=ra.ReactCurrentDispatcher,wh=ra.ReactCurrentBatchConfig,xh=0,R=null,S=null,T=null,yh=!1,zh=!1;function Ah(){throw Error(y(321));}function Bh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Ch(a,b,c,d,e,f){xh=f;R=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;vh.current=null===a||null===a.memoizedState?Dh:Eh;a=c(d,e);if(zh){f=0;do{zh=!1;if(!(25>f))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;0<h;){var k=31-Vc(h),v=1<<k;d[k]|=a;h&=~v}}},[c,b,d]);h.useEffect(function(){return d(b._source,function(){var a=p.getSnapshot,c=p.setSnapshot;try{c(a(b._source));var d=Ig(w);e.mutableReadLanes|=d&e.pendingLanes}catch(q){c(function(){throw q;})}})},[b,d]);He(C,c)&&He(x,b)&&He(A,d)||(a={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:n},a.dispatch=l=Oh.bind(null,R,a),k.queue=a,k.baseQueue=null,n=Mh(e,b,c),k.memoizedState=k.baseState=n);return n}\nfunction Ph(a,b,c){var d=Ih();return Nh(d,a,b,c)}function Qh(a){var b=Hh();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:Jh,lastRenderedState:a};a=a.dispatch=Oh.bind(null,R,a);return[b.memoizedState,a]}\nfunction Rh(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=R.updateQueue;null===b?(b={lastEffect:null},R.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function Sh(a){var b=Hh();a={current:a};return b.memoizedState=a}function Th(){return Ih().memoizedState}function Uh(a,b,c,d){var e=Hh();R.flags|=a;e.memoizedState=Rh(1|b,c,void 0,void 0===d?null:d)}\nfunction Vh(a,b,c,d){var e=Ih();d=void 0===d?null:d;var f=void 0;if(null!==S){var g=S.memoizedState;f=g.destroy;if(null!==d&&Bh(d,g.deps)){Rh(b,c,f,d);return}}R.flags|=a;e.memoizedState=Rh(1|b,c,f,d)}function Wh(a,b){return Uh(516,4,a,b)}function Xh(a,b){return Vh(516,4,a,b)}function Yh(a,b){return Vh(4,2,a,b)}function Zh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}\nfunction $h(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Vh(4,2,Zh.bind(null,b,a),c)}function ai(){}function bi(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}function ci(a,b){var c=Ih();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Bh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}\nfunction di(a,b){var c=eg();gg(98>c?98:c,function(){a(!0)});gg(97<c?97:c,function(){var c=wh.transition;wh.transition=1;try{a(!1),b()}finally{wh.transition=c}})}\nfunction Oh(a,b,c){var d=Hg(),e=Ig(a),f={lane:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.pending;null===g?f.next=f:(f.next=g.next,g.next=f);b.pending=f;g=a.alternate;if(a===R||null!==g&&g===R)zh=yh=!0;else{if(0===a.lanes&&(null===g||0===g.lanes)&&(g=b.lastRenderedReducer,null!==g))try{var h=b.lastRenderedState,k=g(h,c);f.eagerReducer=g;f.eagerState=k;if(He(k,h))return}catch(l){}finally{}Jg(a,e,d)}}\nvar Gh={readContext:vg,useCallback:Ah,useContext:Ah,useEffect:Ah,useImperativeHandle:Ah,useLayoutEffect:Ah,useMemo:Ah,useReducer:Ah,useRef:Ah,useState:Ah,useDebugValue:Ah,useDeferredValue:Ah,useTransition:Ah,useMutableSource:Ah,useOpaqueIdentifier:Ah,unstable_isNewReconciler:!1},Dh={readContext:vg,useCallback:function(a,b){Hh().memoizedState=[a,void 0===b?null:b];return a},useContext:vg,useEffect:Wh,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Uh(4,2,Zh.bind(null,\nb,a),c)},useLayoutEffect:function(a,b){return Uh(4,2,a,b)},useMemo:function(a,b){var c=Hh();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Hh();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={pending:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=Oh.bind(null,R,a);return[d.memoizedState,a]},useRef:Sh,useState:Qh,useDebugValue:ai,useDeferredValue:function(a){var b=Qh(a),c=b[0],d=b[1];Wh(function(){var b=wh.transition;\nwh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Qh(!1),b=a[0];a=di.bind(null,a[1]);Sh(a);return[a,b]},useMutableSource:function(a,b,c){var d=Hh();d.memoizedState={refs:{getSnapshot:b,setSnapshot:null},source:a,subscribe:c};return Nh(d,a,b,c)},useOpaqueIdentifier:function(){if(lh){var a=!1,b=uf(function(){a||(a=!0,c(\"r:\"+(tf++).toString(36)));throw Error(y(355));}),c=Qh(b)[1];0===(R.mode&2)&&(R.flags|=516,Rh(5,function(){c(\"r:\"+(tf++).toString(36))},\nvoid 0,null));return b}b=\"r:\"+(tf++).toString(36);Qh(b);return b},unstable_isNewReconciler:!1},Eh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Kh,useRef:Th,useState:function(){return Kh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Kh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Kh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Kh(Jh)[0]},unstable_isNewReconciler:!1},Fh={readContext:vg,useCallback:bi,useContext:vg,useEffect:Xh,useImperativeHandle:$h,useLayoutEffect:Yh,useMemo:ci,useReducer:Lh,useRef:Th,useState:function(){return Lh(Jh)},useDebugValue:ai,useDeferredValue:function(a){var b=Lh(Jh),c=b[0],d=b[1];Xh(function(){var b=wh.transition;wh.transition=1;try{d(a)}finally{wh.transition=b}},[a]);return c},useTransition:function(){var a=Lh(Jh)[0];return[Th().current,\na]},useMutableSource:Ph,useOpaqueIdentifier:function(){return Lh(Jh)[0]},unstable_isNewReconciler:!1},ei=ra.ReactCurrentOwner,ug=!1;function fi(a,b,c,d){b.child=null===a?Zg(b,null,c,d):Yg(b,a.child,c,d)}function gi(a,b,c,d,e){c=c.render;var f=b.ref;tg(b,e);d=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,d,e);return b.child}\nfunction ii(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!ji(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,ki(a,b,g,d,e,f);a=Vg(c.type,null,d,b,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(0===(e&f)&&(e=g.memoizedProps,c=c.compare,c=null!==c?c:Je,c(e,d)&&a.ref===b.ref))return hi(a,b,f);b.flags|=1;a=Tg(g,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction ki(a,b,c,d,e,f){if(null!==a&&Je(a.memoizedProps,d)&&a.ref===b.ref)if(ug=!1,0!==(f&e))0!==(a.flags&16384)&&(ug=!0);else return b.lanes=a.lanes,hi(a,b,f);return li(a,b,c,d,f)}\nfunction mi(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode||\"unstable-defer-without-hiding\"===d.mode)if(0===(b.mode&4))b.memoizedState={baseLanes:0},ni(b,c);else if(0!==(c&1073741824))b.memoizedState={baseLanes:0},ni(b,null!==f?f.baseLanes:c);else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a},ni(b,a),null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):d=c,ni(b,d);fi(a,b,e,c);return b.child}\nfunction oi(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=128}function li(a,b,c,d,e){var f=Ff(c)?Df:M.current;f=Ef(b,f);tg(b,e);c=Ch(a,b,c,d,f,e);if(null!==a&&!ug)return b.updateQueue=a.updateQueue,b.flags&=-517,a.lanes&=~e,hi(a,b,e);b.flags|=1;fi(a,b,c,e);return b.child}\nfunction pi(a,b,c,d,e){if(Ff(c)){var f=!0;Jf(b)}else f=!1;tg(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Mg(b,c,d),Og(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=vg(l):(l=Ff(c)?Df:M.current,l=Ef(b,l));var n=c.getDerivedStateFromProps,A=\"function\"===typeof n||\"function\"===typeof g.getSnapshotBeforeUpdate;A||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ng(b,g,d,l);wg=!1;var p=b.memoizedState;g.state=p;Cg(b,d,g,e);k=b.memoizedState;h!==d||p!==k||N.current||wg?(\"function\"===typeof n&&(Gg(b,c,n,d),k=b.memoizedState),(h=wg||Lg(b,c,h,d,p,k,l))?(A||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4),d=!1)}else{g=b.stateNode;yg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:lg(b.type,h);g.props=l;A=b.pendingProps;p=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=vg(k):(k=Ff(c)?Df:M.current,k=Ef(b,k));var C=c.getDerivedStateFromProps;(n=\"function\"===typeof C||\n\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==A||p!==k)&&Ng(b,g,d,k);wg=!1;p=b.memoizedState;g.state=p;Cg(b,d,g,e);var x=b.memoizedState;h!==A||p!==x||N.current||wg?(\"function\"===typeof C&&(Gg(b,c,C,d),x=b.memoizedState),(l=wg||Lg(b,c,l,d,p,x,k))?(n||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,\nx,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,x,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=256)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),b.memoizedProps=d,b.memoizedState=x),g.props=d,g.state=x,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||\nh===a.memoizedProps&&p===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&p===a.memoizedState||(b.flags|=256),d=!1)}return qi(a,b,c,d,f,e)}\nfunction qi(a,b,c,d,e,f){oi(a,b);var g=0!==(b.flags&64);if(!d&&!g)return e&&Kf(b,c,!1),hi(a,b,f);d=b.stateNode;ei.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Yg(b,a.child,null,f),b.child=Yg(b,null,h,f)):fi(a,b,h,f);b.memoizedState=d.state;e&&Kf(b,c,!0);return b.child}function ri(a){var b=a.stateNode;b.pendingContext?Hf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Hf(a,b.context,!1);eh(a,b.containerInfo)}\nvar si={dehydrated:null,retryLane:0};\nfunction ti(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g;(g=0!==(b.flags&64))||(g=null!==a&&null===a.memoizedState?!1:0!==(e&2));g?(f=!0,b.flags&=-65):null!==a&&null===a.memoizedState||void 0===d.fallback||!0===d.unstable_avoidThisFallback||(e|=1);I(P,e&1);if(null===a){void 0!==d.fallback&&ph(b);a=d.children;e=d.fallback;if(f)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},b.memoizedState=si,a;if(\"number\"===typeof d.unstable_expectedLoadTime)return a=ui(b,a,e,c),b.child.memoizedState={baseLanes:c},\nb.memoizedState=si,b.lanes=33554432,a;c=vi({mode:\"visible\",children:a},b.mode,c,null);c.return=b;return b.child=c}if(null!==a.memoizedState){if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=wi(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?{baseLanes:c}:\n{baseLanes:e.baseLanes|c},f.childLanes=a.childLanes&~c,b.memoizedState=si,d;c=xi(a,b,d.children,c);b.memoizedState=null;return c}function ui(a,b,c,d){var e=a.mode,f=a.child;b={mode:\"hidden\",children:b};0===(e&2)&&null!==f?(f.childLanes=0,f.pendingProps=b):f=vi(b,e,0,null);c=Xg(c,e,d,null);f.return=a;c.return=a;f.sibling=c;a.child=f;return c}\nfunction xi(a,b,c,d){var e=a.child;a=e.sibling;c=Tg(e,{mode:\"visible\",children:c});0===(b.mode&2)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(a.nextEffect=null,a.flags=8,b.firstEffect=b.lastEffect=a);return b.child=c}\nfunction wi(a,b,c,d,e){var f=b.mode,g=a.child;a=g.sibling;var h={mode:\"hidden\",children:c};0===(f&2)&&b.child!==g?(c=b.child,c.childLanes=0,c.pendingProps=h,g=c.lastEffect,null!==g?(b.firstEffect=c.firstEffect,b.lastEffect=g,g.nextEffect=null):b.firstEffect=b.lastEffect=null):c=Tg(g,h);null!==a?d=Tg(a,d):(d=Xg(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function yi(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);sg(a.return,b)}\nfunction zi(a,b,c,d,e,f){var g=a.memoizedState;null===g?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e,lastEffect:f}:(g.isBackwards=b,g.rendering=null,g.renderingStartTime=0,g.last=d,g.tail=c,g.tailMode=e,g.lastEffect=f)}\nfunction Ai(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;fi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=64;else{if(null!==a&&0!==(a.flags&64))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&yi(a,c);else if(19===a.tag)yi(a,c);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}I(P,d);if(0===(b.mode&2))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===ih(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);zi(b,!1,e,c,f,b.lastEffect);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===ih(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}zi(b,!0,c,null,f,b.lastEffect);break;case \"together\":zi(b,!1,null,null,void 0,b.lastEffect);break;default:b.memoizedState=null}return b.child}\nfunction hi(a,b,c){null!==a&&(b.dependencies=a.dependencies);Dg|=b.lanes;if(0!==(c&b.childLanes)){if(null!==a&&b.child!==a.child)throw Error(y(153));if(null!==b.child){a=b.child;c=Tg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Tg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}return null}var Bi,Ci,Di,Ei;\nBi=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&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}c.sibling.return=c.return;c=c.sibling}};Ci=function(){};\nDi=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;dh(ah.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"option\":e=eb(a,e);d=eb(a,d);f=[];break;case \"select\":e=m({},e,{value:void 0});d=m({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=jf)}vb(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===\nl){var h=e[l];for(g in h)h.hasOwnProperty(g)&&(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ca.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||\n(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,c)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ca.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&G(\"scroll\",a),f||h===k||(f=[])):\"object\"===typeof k&&null!==k&&k.$$typeof===Ga?k.toString():(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",\nc);var l=f;if(b.updateQueue=l)b.flags|=4}};Ei=function(a,b,c,d){c!==d&&(b.flags|=4)};function Fi(a,b){if(!lh)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction Gi(a,b,c){var d=b.pendingProps;switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Ff(b.type)&&Gf(),null;case 3:fh();H(N);H(M);uh();d=b.stateNode;d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)rh(b)?b.flags|=4:d.hydrate||(b.flags|=256);Ci(b);return null;case 5:hh(b);var e=dh(ch.current);c=b.type;if(null!==a&&null!=b.stateNode)Di(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=128);else{if(!d){if(null===\nb.stateNode)throw Error(y(166));return null}a=dh(ah.current);if(rh(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[wf]=b;d[xf]=f;switch(c){case \"dialog\":G(\"cancel\",d);G(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",d);break;case \"video\":case \"audio\":for(a=0;a<Xe.length;a++)G(Xe[a],d);break;case \"source\":G(\"error\",d);break;case \"img\":case \"image\":case \"link\":G(\"error\",d);G(\"load\",d);break;case \"details\":G(\"toggle\",d);break;case \"input\":Za(d,f);G(\"invalid\",d);break;case \"select\":d._wrapperState=\n{wasMultiple:!!f.multiple};G(\"invalid\",d);break;case \"textarea\":hb(d,f),G(\"invalid\",d)}vb(c,f);a=null;for(var g in f)f.hasOwnProperty(g)&&(e=f[g],\"children\"===g?\"string\"===typeof e?d.textContent!==e&&(a=[\"children\",e]):\"number\"===typeof e&&d.textContent!==\"\"+e&&(a=[\"children\",\"\"+e]):ca.hasOwnProperty(g)&&null!=e&&\"onScroll\"===g&&G(\"scroll\",d));switch(c){case \"input\":Va(d);cb(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=\njf)}d=a;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;a===kb.html&&(a=lb(c));a===kb.html?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\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;e<Xe.length;e++)G(Xe[e],a);e=d;break;case \"source\":G(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":G(\"error\",a);G(\"load\",a);e=d;break;case \"details\":G(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);G(\"invalid\",a);break;case \"option\":e=eb(a,d);break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=m({},d,{value:void 0});G(\"invalid\",a);break;case \"textarea\":hb(a,d);e=\ngb(a,d);G(\"invalid\",a);break;default:e=d}vb(c,e);var h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?tb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&ob(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==c||\"\"!==k)&&pb(a,k):\"number\"===typeof k&&pb(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ca.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&G(\"scroll\",a):null!=k&&qa(a,f,k,g))}switch(c){case \"input\":Va(a);cb(a,d,!1);\nbreak;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=jf)}mf(c,d)&&(b.flags|=4)}null!==b.ref&&(b.flags|=128)}return null;case 6:if(a&&null!=b.stateNode)Ei(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(y(166));\nc=dh(ch.current);dh(ah.current);rh(b)?(d=b.stateNode,c=b.memoizedProps,d[wf]=b,d.nodeValue!==c&&(b.flags|=4)):(d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[wf]=b,b.stateNode=d)}return null;case 13:H(P);d=b.memoizedState;if(0!==(b.flags&64))return b.lanes=c,b;d=null!==d;c=!1;null===a?void 0!==b.memoizedProps.fallback&&rh(b):c=null!==a.memoizedState;if(d&&!c&&0!==(b.mode&2))if(null===a&&!0!==b.memoizedProps.unstable_avoidThisFallback||0!==(P.current&1))0===V&&(V=3);else{if(0===V||3===V)V=\n4;null===U||0===(Dg&134217727)&&0===(Hi&134217727)||Ii(U,W)}if(d||c)b.flags|=4;return null;case 4:return fh(),Ci(b),null===a&&cf(b.stateNode.containerInfo),null;case 10:return rg(b),null;case 17:return Ff(b.type)&&Gf(),null;case 19:H(P);d=b.memoizedState;if(null===d)return null;f=0!==(b.flags&64);g=d.rendering;if(null===g)if(f)Fi(d,!1);else{if(0!==V||null!==a&&0!==(a.flags&64))for(a=b.child;null!==a;){g=ih(a);if(null!==g){b.flags|=64;Fi(d,!1);f=g.updateQueue;null!==f&&(b.updateQueue=f,b.flags|=4);\nnull===d.lastEffect&&(b.firstEffect=null);b.lastEffect=d.lastEffect;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=2,f.nextEffect=null,f.firstEffect=null,f.lastEffect=null,g=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,\nf.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;I(P,P.current&1|2);return b.child}a=a.sibling}null!==d.tail&&O()>Ji&&(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;e<f.length;e+=\n2){var g=f[e],h=f[e+1];\"style\"===g?tb(c,h):\"dangerouslySetInnerHTML\"===g?ob(c,h):\"children\"===g?pb(c,h):qa(c,g,h,b)}switch(a){case \"input\":ab(c,d);break;case \"textarea\":ib(c,d);break;case \"select\":a=c._wrapperState.wasMultiple,c._wrapperState.wasMultiple=!!d.multiple,f=d.value,null!=f?fb(c,!!d.multiple,f,!1):a!==!!d.multiple&&(null!=d.defaultValue?fb(c,!!d.multiple,d.defaultValue,!0):fb(c,!!d.multiple,d.multiple?[]:\"\",!1))}}}return;case 6:if(null===b.stateNode)throw Error(y(162));b.stateNode.nodeValue=\nb.memoizedProps;return;case 3:c=b.stateNode;c.hydrate&&(c.hydrate=!1,Cc(c.containerInfo));return;case 12:return;case 13:null!==b.memoizedState&&(jj=O(),aj(b.child,!0));kj(b);return;case 19:kj(b);return;case 17:return;case 23:case 24:aj(b,null!==b.memoizedState);return}throw Error(y(163));}function kj(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Ui);b.forEach(function(b){var d=lj.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction mj(a,b){return null!==a&&(a=a.memoizedState,null===a||null!==a.dehydrated)?(b=b.memoizedState,null!==b&&null===b.dehydrated):!1}var nj=Math.ceil,oj=ra.ReactCurrentDispatcher,pj=ra.ReactCurrentOwner,X=0,U=null,Y=null,W=0,qj=0,rj=Bf(0),V=0,sj=null,tj=0,Dg=0,Hi=0,uj=0,vj=null,jj=0,Ji=Infinity;function wj(){Ji=O()+500}var Z=null,Qi=!1,Ri=null,Ti=null,xj=!1,yj=null,zj=90,Aj=[],Bj=[],Cj=null,Dj=0,Ej=null,Fj=-1,Gj=0,Hj=0,Ij=null,Jj=!1;function Hg(){return 0!==(X&48)?O():-1!==Fj?Fj:Fj=O()}\nfunction Ig(a){a=a.mode;if(0===(a&2))return 1;if(0===(a&4))return 99===eg()?1:2;0===Gj&&(Gj=tj);if(0!==kg.transition){0!==Hj&&(Hj=null!==vj?vj.pendingLanes:0);a=Gj;var b=4186112&~Hj;b&=-b;0===b&&(a=4186112&~a,b=a&-a,0===b&&(b=8192));return b}a=eg();0!==(X&4)&&98===a?a=Xc(12,Gj):(a=Sc(a),a=Xc(a,Gj));return a}\nfunction Jg(a,b,c){if(50<Dj)throw Dj=0,Ej=null,Error(y(185));a=Kj(a,b);if(null===a)return null;$c(a,b,c);a===U&&(Hi|=b,4===V&&Ii(a,W));var d=eg();1===b?0!==(X&8)&&0===(X&48)?Lj(a):(Mj(a,c),0===X&&(wj(),ig())):(0===(X&4)||98!==d&&99!==d||(null===Cj?Cj=new Set([a]):Cj.add(a)),Mj(a,c));vj=a}function Kj(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}\nfunction Mj(a,b){for(var c=a.callbackNode,d=a.suspendedLanes,e=a.pingedLanes,f=a.expirationTimes,g=a.pendingLanes;0<g;){var h=31-Vc(g),k=1<<h,l=f[h];if(-1===l){if(0===(k&d)||0!==(k&e)){l=b;Rc(k);var n=F;f[h]=10<=n?l+250:6<=n?l+5E3:-1}}else l<=b&&(a.expiredLanes|=k);g&=~k}d=Uc(a,a===U?W:0);b=F;if(0===d)null!==c&&(c!==Zf&&Pf(c),a.callbackNode=null,a.callbackPriority=0);else{if(null!==c){if(a.callbackPriority===b)return;c!==Zf&&Pf(c)}15===b?(c=Lj.bind(null,a),null===ag?(ag=[c],bg=Of(Uf,jg)):ag.push(c),\nc=Zf):14===b?c=hg(99,Lj.bind(null,a)):(c=Tc(b),c=hg(c,Nj.bind(null,a)));a.callbackPriority=b;a.callbackNode=c}}\nfunction Nj(a){Fj=-1;Hj=Gj=0;if(0!==(X&48))throw Error(y(327));var b=a.callbackNode;if(Oj()&&a.callbackNode!==b)return null;var c=Uc(a,a===U?W:0);if(0===c)return null;var d=c;var e=X;X|=16;var f=Pj();if(U!==a||W!==d)wj(),Qj(a,d);do try{Rj();break}catch(h){Sj(a,h)}while(1);qg();oj.current=f;X=e;null!==Y?d=0:(U=null,W=0,d=V);if(0!==(tj&Hi))Qj(a,0);else if(0!==d){2===d&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),c=Wc(a),0!==c&&(d=Tj(a,c)));if(1===d)throw b=sj,Qj(a,0),Ii(a,c),Mj(a,O()),b;a.finishedWork=\na.current.alternate;a.finishedLanes=c;switch(d){case 0:case 1:throw Error(y(345));case 2:Uj(a);break;case 3:Ii(a,c);if((c&62914560)===c&&(d=jj+500-O(),10<d)){if(0!==Uc(a,0))break;e=a.suspendedLanes;if((e&c)!==c){Hg();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=of(Uj.bind(null,a),d);break}Uj(a);break;case 4:Ii(a,c);if((c&4186112)===c)break;d=a.eventTimes;for(e=-1;0<c;){var g=31-Vc(c);f=1<<g;g=d[g];g>e&&(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<c){a.timeoutHandle=of(Uj.bind(null,a),c);break}Uj(a);break;case 5:Uj(a);break;default:throw Error(y(329));}}Mj(a,O());return a.callbackNode===b?Nj.bind(null,a):null}function Ii(a,b){b&=~uj;b&=~Hi;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-Vc(b),d=1<<c;a[c]=-1;b&=~d}}\nfunction Lj(a){if(0!==(X&48))throw Error(y(327));Oj();if(a===U&&0!==(a.expiredLanes&W)){var b=W;var c=Tj(a,b);0!==(tj&Hi)&&(b=Uc(a,b),c=Tj(a,b))}else b=Uc(a,0),c=Tj(a,b);0!==a.tag&&2===c&&(X|=64,a.hydrate&&(a.hydrate=!1,qf(a.containerInfo)),b=Wc(a),0!==b&&(c=Tj(a,b)));if(1===c)throw c=sj,Qj(a,0),Ii(a,b),Mj(a,O()),c;a.finishedWork=a.current.alternate;a.finishedLanes=b;Uj(a);Mj(a,O());return null}\nfunction Vj(){if(null!==Cj){var a=Cj;Cj=null;a.forEach(function(a){a.expiredLanes|=24&a.pendingLanes;Mj(a,O())})}ig()}function Wj(a,b){var c=X;X|=1;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function Xj(a,b){var c=X;X&=-2;X|=8;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}}function ni(a,b){I(rj,qj);qj|=b;tj|=b}function Ki(){qj=rj.current;H(rj)}\nfunction Qj(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,pf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&Gf();break;case 3:fh();H(N);H(M);uh();break;case 5:hh(d);break;case 4:fh();break;case 13:H(P);break;case 19:H(P);break;case 10:rg(d);break;case 23:case 24:Ki()}c=c.return}U=a;Y=Tg(a.current,null);W=qj=tj=b;V=0;sj=null;uj=Hi=Dg=0}\nfunction Sj(a,b){do{var c=Y;try{qg();vh.current=Gh;if(yh){for(var d=R.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}yh=!1}xh=0;T=S=R=null;zh=!1;pj.current=null;if(null===c||null===c.return){V=1;sj=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=W;h.flags|=2048;h.firstEffect=h.lastEffect=null;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k;if(0===(h.mode&2)){var n=h.alternate;n?(h.updateQueue=n.updateQueue,h.memoizedState=n.memoizedState,h.lanes=n.lanes):\n(h.updateQueue=null,h.memoizedState=null)}var A=0!==(P.current&1),p=g;do{var C;if(C=13===p.tag){var x=p.memoizedState;if(null!==x)C=null!==x.dehydrated?!0:!1;else{var w=p.memoizedProps;C=void 0===w.fallback?!1:!0!==w.unstable_avoidThisFallback?!0:A?!1:!0}}if(C){var z=p.updateQueue;if(null===z){var u=new Set;u.add(l);p.updateQueue=u}else z.add(l);if(0===(p.mode&2)){p.flags|=64;h.flags|=16384;h.flags&=-2981;if(1===h.tag)if(null===h.alternate)h.tag=17;else{var t=zg(-1,1);t.tag=2;Ag(h,t)}h.lanes|=1;break a}k=\nvoid 0;h=b;var q=f.pingCache;null===q?(q=f.pingCache=new Oi,k=new Set,q.set(l,k)):(k=q.get(l),void 0===k&&(k=new Set,q.set(l,k)));if(!k.has(h)){k.add(h);var v=Yj.bind(null,f,l,h);l.then(v,v)}p.flags|=4096;p.lanes=b;break a}p=p.return}while(null!==p);k=Error((Ra(h.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> 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),1<b.flags&&(null!==\na.lastEffect?a.lastEffect.nextEffect=b:a.firstEffect=b,a.lastEffect=b))}else{c=Li(b);if(null!==c){c.flags&=2047;Y=c;return}null!==a&&(a.firstEffect=a.lastEffect=null,a.flags|=2048)}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===V&&(V=5)}function Uj(a){var b=eg();gg(99,dk.bind(null,a,b));return null}\nfunction dk(a,b){do Oj();while(null!==yj);if(0!==(X&48))throw Error(y(327));var c=a.finishedWork;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(y(177));a.callbackNode=null;var d=c.lanes|c.childLanes,e=d,f=a.pendingLanes&~e;a.pendingLanes=e;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=e;a.mutableReadLanes&=e;a.entangledLanes&=e;e=a.entanglements;for(var g=a.eventTimes,h=a.expirationTimes;0<f;){var k=31-Vc(f),l=1<<k;e[k]=0;g[k]=-1;h[k]=-1;f&=~l}null!==\nCj&&0===(d&24)&&Cj.has(a)&&Cj.delete(a);a===U&&(Y=U=null,W=0);1<c.flags?null!==c.lastEffect?(c.lastEffect.nextEffect=c,d=c.firstEffect):d=c:d=c.firstEffect;if(null!==d){e=X;X|=32;pj.current=null;kf=fd;g=Ne();if(Oe(g)){if(\"selectionStart\"in g)h={start:g.selectionStart,end:g.selectionEnd};else a:if(h=(h=g.ownerDocument)&&h.defaultView||window,(l=h.getSelection&&h.getSelection())&&0!==l.rangeCount){h=l.anchorNode;f=l.anchorOffset;k=l.focusNode;l=l.focusOffset;try{h.nodeType,k.nodeType}catch(va){h=null;\nbreak a}var n=0,A=-1,p=-1,C=0,x=0,w=g,z=null;b:for(;;){for(var u;;){w!==h||0!==f&&3!==w.nodeType||(A=n+f);w!==k||0!==l&&3!==w.nodeType||(p=n+l);3===w.nodeType&&(n+=w.nodeValue.length);if(null===(u=w.firstChild))break;z=w;w=u}for(;;){if(w===g)break b;z===h&&++C===f&&(A=n);z===k&&++x===l&&(p=n);if(null!==(u=w.nextSibling))break;w=z;z=w.parentNode}w=u}h=-1===A||-1===p?null:{start:A,end:p}}else h=null;h=h||{start:0,end:0}}else h=null;lf={focusedElem:g,selectionRange:h};fd=!1;Ij=null;Jj=!1;Z=d;do try{ek()}catch(va){if(null===\nZ)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Ij=null;Z=d;do try{for(g=a;null!==Z;){var t=Z.flags;t&16&&pb(Z.stateNode,\"\");if(t&128){var q=Z.alternate;if(null!==q){var v=q.ref;null!==v&&(\"function\"===typeof v?v(null):v.current=null)}}switch(t&1038){case 2:fj(Z);Z.flags&=-3;break;case 6:fj(Z);Z.flags&=-3;ij(Z.alternate,Z);break;case 1024:Z.flags&=-1025;break;case 1028:Z.flags&=-1025;ij(Z.alternate,Z);break;case 4:ij(Z.alternate,Z);break;case 8:h=Z;cj(g,h);var J=h.alternate;dj(h);null!==\nJ&&dj(J)}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);v=lf;q=Ne();t=v.focusedElem;g=v.selectionRange;if(q!==t&&t&&t.ownerDocument&&Me(t.ownerDocument.documentElement,t)){null!==g&&Oe(t)&&(q=g.start,v=g.end,void 0===v&&(v=q),\"selectionStart\"in t?(t.selectionStart=q,t.selectionEnd=Math.min(v,t.value.length)):(v=(q=t.ownerDocument||document)&&q.defaultView||window,v.getSelection&&(v=v.getSelection(),h=t.textContent.length,J=Math.min(g.start,h),g=void 0===\ng.end?J:Math.min(g.end,h),!v.extend&&J>g&&(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;t<q.length;t++)v=q[t],v.element.scrollLeft=v.left,v.element.scrollTop=v.top}fd=!!kf;lf=kf=null;a.current=c;Z=d;do try{for(t=a;null!==Z;){var K=Z.flags;K&36&&Yi(t,Z.alternate,Z);if(K&128){q=void 0;var Q=Z.ref;if(null!==Q){var L=Z.stateNode;switch(Z.tag){case 5:q=L;break;default:q=L}\"function\"===typeof Q?Q(q):Q.current=q}}Z=Z.nextEffect}}catch(va){if(null===Z)throw Error(y(330));Wi(Z,va);Z=Z.nextEffect}while(null!==Z);Z=null;$f();X=e}else a.current=c;if(xj)xj=!1,yj=a,zj=b;else for(Z=d;null!==Z;)b=\nZ.nextEffect,Z.nextEffect=null,Z.flags&8&&(K=Z,K.sibling=null,K.stateNode=null),Z=b;d=a.pendingLanes;0===d&&(Ti=null);1===d?a===Ej?Dj++:(Dj=0,Ej=a):Dj=0;c=c.stateNode;if(Mf&&\"function\"===typeof Mf.onCommitFiberRoot)try{Mf.onCommitFiberRoot(Lf,c,void 0,64===(c.current.flags&64))}catch(va){}Mj(a,O());if(Qi)throw Qi=!1,a=Ri,Ri=null,a;if(0!==(X&8))return null;ig();return null}\nfunction ek(){for(;null!==Z;){var a=Z.alternate;Jj||null===Ij||(0!==(Z.flags&8)?dc(Z,Ij)&&(Jj=!0):13===Z.tag&&mj(a,Z)&&dc(Z,Ij)&&(Jj=!0));var b=Z.flags;0!==(b&256)&&Xi(a,Z);0===(b&512)||xj||(xj=!0,hg(97,function(){Oj();return null}));Z=Z.nextEffect}}function Oj(){if(90!==zj){var a=97<zj?97:zj;zj=90;return gg(a,fk)}return!1}function $i(a,b){Aj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}function Zi(a,b){Bj.push(b,a);xj||(xj=!0,hg(97,function(){Oj();return null}))}\nfunction fk(){if(null===yj)return!1;var a=yj;yj=null;if(0!==(X&48))throw Error(y(331));var b=X;X|=32;var c=Bj;Bj=[];for(var d=0;d<c.length;d+=2){var e=c[d],f=c[d+1],g=e.destroy;e.destroy=void 0;if(\"function\"===typeof g)try{g()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}c=Aj;Aj=[];for(d=0;d<c.length;d+=2){e=c[d];f=c[d+1];try{var h=e.create;e.destroy=h()}catch(k){if(null===f)throw Error(y(330));Wi(f,k)}}for(h=a.current.firstEffect;null!==h;)a=h.nextEffect,h.nextEffect=null,h.flags&8&&(h.sibling=\nnull,h.stateNode=null),h=a;X=b;ig();return!0}function gk(a,b,c){b=Mi(c,b);b=Pi(a,b,1);Ag(a,b);b=Hg();a=Kj(a,1);null!==a&&($c(a,1,b),Mj(a,b))}\nfunction Wi(a,b){if(3===a.tag)gk(a,a,b);else for(var c=a.return;null!==c;){if(3===c.tag){gk(c,a,b);break}else if(1===c.tag){var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d))){a=Mi(b,a);var e=Si(c,a,1);Ag(c,e);e=Hg();c=Kj(c,1);if(null!==c)$c(c,1,e),Mj(c,e);else if(\"function\"===typeof d.componentDidCatch&&(null===Ti||!Ti.has(d)))try{d.componentDidCatch(b,a)}catch(f){}break}}c=c.return}}\nfunction Yj(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=Hg();a.pingedLanes|=a.suspendedLanes&c;U===a&&(W&c)===c&&(4===V||3===V&&(W&62914560)===W&&500>O()-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<a.length;e+=2)f=a[e],f._workInProgressVersionPrimary=a[e+1],th.push(f);c=Zg(b,null,d,c);for(b.child=c;c;)c.flags=c.flags&-3|1024,c=c.sibling}else fi(a,b,d,c),sh();b=b.child}return b;case 5:return gh(b),null===a&&\nph(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,nf(d,e)?g=null:null!==f&&nf(d,f)&&(b.flags|=16),oi(a,b),fi(a,b,g,c),b.child;case 6:return null===a&&ph(b),null;case 13:return ti(a,b,c);case 4:return eh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Yg(b,null,d,c):fi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),gi(a,b,d,e,c);case 7:return fi(a,b,b.pendingProps,c),b.child;case 8:return fi(a,b,b.pendingProps.children,\nc),b.child;case 12:return fi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(mg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=He(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!N.current){b=hi(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==k){g=h.child;for(var l=\nk.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=zg(-1,c&-c),l.tag=2,Ag(h,l));h.lanes|=c;l=h.alternate;null!==l&&(l.lanes|=c);sg(h.return,c);k.lanes|=c;break}l=l.next}}else g=10===h.tag?h.type===b.type?null:h.child:h.child;if(null!==g)g.return=h;else for(g=h;null!==g;){if(g===b){g=null;break}h=g.sibling;if(null!==h){h.return=g.return;g=h;break}g=g.return}h=g}fi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,f=b.pendingProps,d=f.children,tg(b,c),e=vg(e,\nf.unstable_observedBits),d=d(e),b.flags|=1,fi(a,b,d,c),b.child;case 14:return e=b.type,f=lg(e,b.pendingProps),f=lg(e.type,f),ii(a,b,e,f,d,c);case 15:return ki(a,b,b.type,b.pendingProps,d,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Ff(d)?(a=!0,Jf(b)):a=!1,tg(b,c),Mg(b,d,e),Og(b,d,e,c),qi(null,b,d,!0,a,c);case 19:return Ai(a,b,c);case 23:return mi(a,b,c);case 24:return mi(a,b,c)}throw Error(y(156,b.tag));\n};function ik(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.flags=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childLanes=this.lanes=0;this.alternate=null}function nh(a,b,c,d){return new ik(a,b,c,d)}function ji(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction hk(a){if(\"function\"===typeof a)return ji(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Aa)return 11;if(a===Da)return 14}return 2}\nfunction Tg(a,b){var c=a.alternate;null===c?(c=nh(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Vg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)ji(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ua:return Xg(c.children,e,f,b);case Ha:g=8;e|=16;break;case wa:g=8;e|=1;break;case xa:return a=nh(12,c,b,e|8),a.elementType=xa,a.type=xa,a.lanes=f,a;case Ba:return a=nh(13,c,b,e),a.type=Ba,a.elementType=Ba,a.lanes=f,a;case Ca:return a=nh(19,c,b,e),a.elementType=Ca,a.lanes=f,a;case Ia:return vi(c,e,f,b);case Ja:return a=nh(24,c,b,e),a.elementType=Ja,a.lanes=f,a;default:if(\"object\"===\ntypeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case za:g=9;break a;case Aa:g=11;break a;case Da:g=14;break a;case Ea:g=16;d=null;break a;case Fa:g=22;break a}throw Error(y(130,null==a?a:typeof a,\"\"));}b=nh(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Xg(a,b,c,d){a=nh(7,a,d,b);a.lanes=c;return a}function vi(a,b,c,d){a=nh(23,a,d,b);a.elementType=Ia;a.lanes=c;return a}function Ug(a,b,c){a=nh(6,a,null,b);a.lanes=c;return a}\nfunction Wg(a,b,c){b=nh(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction jk(a,b,c){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.pendingContext=this.context=null;this.hydrate=c;this.callbackNode=null;this.callbackPriority=0;this.eventTimes=Zc(0);this.expirationTimes=Zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=Zc(0);this.mutableSourceEagerHydrationData=null}\nfunction kk(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:ta,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction lk(a,b,c,d){var e=b.current,f=Hg(),g=Ig(e);a:if(c){c=c._reactInternals;b:{if(Zb(c)!==c||1!==c.tag)throw Error(y(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(Ff(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(y(171));}if(1===c.tag){var k=c.type;if(Ff(k)){c=If(c,k,h);break a}}c=h}else c=Cf;null===b.context?b.context=c:b.pendingContext=c;b=zg(f,g);b.payload={element:a};d=void 0===d?null:d;null!==\nd&&(b.callback=d);Ag(e,b);Jg(e,g,f);return g}function mk(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function nk(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function ok(a,b){nk(a,b);(a=a.alternate)&&nk(a,b)}function pk(){return null}\nfunction qk(a,b,c){var d=null!=c&&null!=c.hydrationOptions&&c.hydrationOptions.mutableSources||null;c=new jk(a,b,null!=c&&!0===c.hydrate);b=nh(3,null,null,2===b?7:1===b?3:0);c.current=b;b.stateNode=c;xg(b);a[ff]=c.current;cf(8===a.nodeType?a.parentNode:a);if(d)for(a=0;a<d.length;a++){b=d[a];var e=b._getVersion;e=e(b._source);null==c.mutableSourceEagerHydrationData?c.mutableSourceEagerHydrationData=[b,e]:c.mutableSourceEagerHydrationData.push(b,e)}this._internalRoot=c}\nqk.prototype.render=function(a){lk(a,this._internalRoot,null,null)};qk.prototype.unmount=function(){var a=this._internalRoot,b=a.containerInfo;lk(null,a,null,function(){b[ff]=null})};function rk(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}\nfunction sk(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new qk(a,0,b?{hydrate:!0}:void 0)}\nfunction tk(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f._internalRoot;if(\"function\"===typeof e){var h=e;e=function(){var a=mk(g);h.call(a)}}lk(b,g,a,e)}else{f=c._reactRootContainer=sk(c,d);g=f._internalRoot;if(\"function\"===typeof e){var k=e;e=function(){var a=mk(g);k.call(a)}}Xj(function(){lk(b,g,a,e)})}return mk(g)}ec=function(a){if(13===a.tag){var b=Hg();Jg(a,4,b);ok(a,4)}};fc=function(a){if(13===a.tag){var b=Hg();Jg(a,67108864,b);ok(a,67108864)}};\ngc=function(a){if(13===a.tag){var b=Hg(),c=Ig(a);Jg(a,c,b);ok(a,c)}};hc=function(a,b){return b()};\nyb=function(a,b,c){switch(b){case \"input\":ab(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(y(90));Wa(d);ab(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Wj;\nHb=function(a,b,c,d,e){var f=X;X|=4;try{return gg(98,a.bind(null,b,c,d,e))}finally{X=f,0===X&&(wj(),ig())}};Ib=function(){0===(X&49)&&(Vj(),Oj())};Jb=function(a,b){var c=X;X|=2;try{return a(b)}finally{X=c,0===X&&(wj(),ig())}};function uk(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!rk(b))throw Error(y(200));return kk(a,b,null,c)}var vk={Events:[Cb,ue,Db,Eb,Fb,Oj,{current:!1}]},wk={findFiberByHostInstance:wc,bundleType:0,version:\"17.0.1\",rendererPackageName:\"react-dom\"};\nvar xk={bundleType:wk.bundleType,version:wk.version,rendererPackageName:wk.rendererPackageName,rendererConfig:wk.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ra.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=cc(a);return null===a?null:a.stateNode},findFiberByHostInstance:wk.findFiberByHostInstance||\npk,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var yk=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!yk.isDisabled&&yk.supportsFiber)try{Lf=yk.inject(xk),Mf=yk}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=vk;exports.createPortal=uk;\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(y(188));throw Error(y(268,Object.keys(a)));}a=cc(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a,b){var c=X;if(0!==(c&48))return a(b);X|=1;try{if(a)return gg(99,a.bind(null,b))}finally{X=c,ig()}};exports.hydrate=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!0,c)};\nexports.render=function(a,b,c){if(!rk(b))throw Error(y(200));return tk(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!rk(a))throw Error(y(40));return a._reactRootContainer?(Xj(function(){tk(null,null,a,!1,function(){a._reactRootContainer=null;a[ff]=null})}),!0):!1};exports.unstable_batchedUpdates=Wj;exports.unstable_createPortal=function(a,b){return uk(a,b,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)};\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!rk(c))throw Error(y(200));if(null==a||void 0===a._reactInternals)throw Error(y(38));return tk(a,b,c,!1,d)};exports.version=\"17.0.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/** @license React v0.20.1\n * scheduler.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 f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):D=0<a?Math.floor(1E3/a):5};var F=new MessageChannel,G=F.port2;F.port1.onmessage=function(){if(null!==B){var a=exports.unstable_now();E=a+D;try{B(!0,a)?G.postMessage(null):(A=!1,B=null)}catch(b){throw G.postMessage(null),b;}}else A=!1};f=function(a){B=a;A||(A=!0,G.postMessage(null))};g=function(a,b){C=\nx(function(){a(exports.unstable_now())},b)};h=function(){y(C);C=-1}}function H(a,b){var c=a.length;a.push(b);a:for(;;){var d=c-1>>>1,e=a[d];if(void 0!==e&&0<I(e,b))a[d]=b,a[c]=e,c=d;else break a}}function J(a){a=a[0];return void 0===a?null:a}\nfunction K(a){var b=a[0];if(void 0!==b){var c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length;d<e;){var m=2*(d+1)-1,n=a[m],v=m+1,r=a[v];if(void 0!==n&&0>I(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&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:N++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(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","/**\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 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","/** @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","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","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}\n\nmodule.exports = _objectWithoutPropertiesLoose;","var CONSTANTS = require(\"./constants\");\n\nfunction parser(arrayBuffer) {\n var data = {};\n var i = 0;\n var arr = new Int8Array(arrayBuffer);\n // Parse header\n data.type = String.fromCharCode.apply(\n null,\n arr.slice(i, CONSTANTS.HEADER.length)\n );\n if (data.type !== CONSTANTS.HEADER) {\n throw new Error(\"Invalid .eqf file.\");\n }\n i += CONSTANTS.HEADER.length;\n // Skip \"<ctrl-z>!--\"\n i += 4;\n // Get the presets\n data.presets = [];\n while (i < arr.length) {\n var preset = {};\n // Get the name\n var nameStart = i;\n var nameEnd = nameStart + 257; // Str is fixed length\n // Str is null terminated\n while (arr[i] !== 0 && i <= nameEnd) {\n i++;\n }\n preset.name = String.fromCharCode.apply(null, arr.slice(nameStart, i));\n i = nameEnd; // Skip over any unused bytes\n\n // Get the levels\n CONSTANTS.PRESET_VALUES.forEach(function(valueName) {\n preset[valueName] = 64 - arr[i++]; // Adjust for inverse values\n });\n data.presets.push(preset);\n }\n return data;\n}\n\nmodule.exports = parser;\n","var CONSTANTS = require(\"./constants\");\n\nvar FILL_SIZE = 4;\nvar PRESET_LENGTH = 257;\n\nfunction creator(data) {\n var buffer = [];\n for (var i = 0; i < CONSTANTS.HEADER.length; i++) {\n buffer.push(CONSTANTS.HEADER.charCodeAt(i));\n }\n buffer.push(26); // <ctrl-z>\n var ending = \"!--\";\n for (var i = 0; i < ending.length; i++) {\n buffer.push(ending.charCodeAt(i));\n }\n if (!data.presets) {\n throw new Error(\"Eqf data is missing presets\");\n }\n data.presets.forEach(function(preset) {\n var k = 0;\n for (; k < preset.name.length; k++) {\n buffer.push(preset.name.charCodeAt(k));\n }\n for (; k < PRESET_LENGTH; k++) {\n buffer.push(0);\n }\n\n CONSTANTS.PRESET_VALUES.forEach(function(valueName) {\n buffer.push(64 - preset[valueName]); // Adjust for inverse values\n });\n });\n return new Uint8Array(buffer).buffer;\n}\n\nmodule.exports = creator;\n","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./gen-window.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./gen-window.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./gen-window.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#webamp .gen-text-space{width:5px}#webamp .gen-text-letter{height:7px;display:inline-block}#webamp .gen-window{width:275px;height:116px;display:flex;flex-direction:column}#webamp .gen-top{height:20px;display:flex;flex-direction:row}#webamp .gen-top-left{width:25px;height:20px}#webamp .gen-top-title{line-height:7px;margin-top:2px;padding:0 3px 0 4px}#webamp .gen-top-left-fill{flex-grow:1;height:20px;background-position:0}#webamp .gen-top-right-fill{flex-grow:1;height:20px;background-position:100%}#webamp .gen-top-left-end,#webamp .gen-top-right,#webamp .gen-top-right-end{width:25px;height:20px}#webamp .gen-close{width:9px;height:9px;position:absolute;right:2px;top:3px}#webamp .gen-middle{flex-grow:1;display:flex;flex-direction:row;position:relative}#webamp .gen-middle-left{width:11px}#webamp .gen-middle-left-bottom{width:11px;height:24px;bottom:0;position:absolute}#webamp .gen-middle-center{flex-grow:1;position:relative}#webamp .gen-middle-right{width:8px}#webamp .gen-middle-right-bottom{width:8px;height:24px;bottom:0;position:absolute}#webamp .gen-bottom{height:14px;background-repeat:repeat-x}#webamp .gen-bottom-left{position:absolute;left:0;width:125px;height:14px}#webamp .gen-bottom-right{position:absolute;right:0;width:125px;height:14px}#webamp .gen-bottom-right #gen-resize-target{position:absolute;right:0;bottom:0;height:20px;width:20px}\", \"\"]);\n\n// exports\n","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./milkdrop-window.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./milkdrop-window.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./milkdrop-window.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".webamp-desktop{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}\", \"\"]);\n\n// exports\n","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./context-menu.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./context-menu.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./context-menu.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#webamp-context-menu .context-menu{left:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:default}#webamp-context-menu .context-menu.bottom{top:12px}#webamp-context-menu .context-menu.top{top:0}#webamp-context-menu .context-menu,#webamp-context-menu .context-menu ul{z-index:50;background-color:#fff;position:absolute;list-style:none;padding:0;margin:0;border:1px solid #a7a394;box-shadow:2px 2px 4px rgba(0,0,0,.5)}#webamp-context-menu .context-menu li{position:relative;font-family:Tahoma;font-size:11px;color:#000;white-space:nowrap;margin:2px;padding:1px 18px 3px;display:block}#webamp-context-menu .context-menu li.checked:before{float:left;content:\\\"\\\\2713\\\";margin-left:-12px}#webamp-context-menu .context-menu li.parent:after{float:right;content:\\\"\\\\25B8\\\";margin-right:-12px}#webamp-context-menu .context-menu li a{text-decoration:none;color:#000;cursor:default}#webamp-context-menu .context-menu li:hover,#webamp-context-menu .context-menu li:hover a{background-color:#224eb7;color:#fff}#webamp-context-menu .context-menu li.hr{padding:2px 0}#webamp-context-menu .context-menu li.hr:hover{background-color:#fff}#webamp-context-menu .context-menu li.hr hr{border:none;height:1px;background-color:#a7a394;margin:0;padding:0}#webamp-context-menu .context-menu ul{display:none;left:100%;margin-left:-3px}#webamp-context-menu .context-menu li:hover>ul{display:block}\", \"\"]);\n\n// exports\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\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","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 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","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\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 * 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","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 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","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","/**\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","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./mini-time.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./mini-time.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./mini-time.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#webamp .mini-time{display:block;height:6px;width:25px}#webamp .mini-time.blinking .character:not(.background-character){animation:blink 2s step-start 1s infinite;-webkit-animation:blink 2s step-start 1s infinite}#webamp .mini-time .background-character{z-index:1}#webamp .mini-time .character{position:absolute;top:0;z-index:2}\", \"\"]);\n\n// exports\n","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./main-window.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./main-window.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./main-window.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#webamp #main-window{position:absolute;height:116px;width:275px;image-rendering:-moz-crisp-edges;image-rendering:-o-crisp-edges;image-rendering:-webkit-optimize-contrast;image-rendering:pixelated;-ms-interpolation-mode:nearest-neighbor}#webamp #title-bar{position:absolute;top:0;left:0;height:14px;width:275px}#webamp #close,#webamp #minimize,#webamp #option-context,#webamp #shade{position:absolute;height:9px;width:9px;top:3px}#webamp #title-bar #option{width:100%;height:100%}#webamp #title-bar #option-context{left:6px}#webamp #title-bar #minimize{left:244px}#webamp #title-bar #shade{left:254px}#webamp #title-bar #close{left:264px}#webamp #clutter-bar{position:absolute;top:22px;left:10px;height:43px;width:8px}#webamp #clutter-bar div{position:absolute;height:7px;width:8px;left:0}#webamp #clutter-bar #button-o{top:3px;height:8px}#webamp #clutter-bar #button-a{top:11px}#webamp #clutter-bar #button-i{top:18px}#webamp #clutter-bar #button-d{top:25px;height:8px}#webamp #clutter-bar #button-v{top:33px}#webamp #play-pause{position:absolute;top:28px;left:26px;height:9px;width:9px;background-repeat:no-repeat}#webamp #work-indicator.selected,#webamp .play #work-indicator{position:absolute;top:28px;left:24px;height:9px;width:3px}#webamp .status #time{position:absolute;left:39px;top:26px;height:13px;width:59px}#webamp .stop .status #time{display:none}#webamp .pause .status #time{animation:blink 2s step-start 1s infinite;-webkit-animation:blink 2s step-start 1s infinite}#webamp .status #time #minus-sign{position:absolute;top:6px;left:-1px;width:5px;height:1px}#webamp .status #time #minute-first-digit{position:absolute;pointer-events:none;left:9px;height:13px;width:9px}#webamp .status #time #minute-second-digit{position:absolute;pointer-events:none;left:21px;height:13px;width:9px}#webamp .status #time #second-first-digit{position:absolute;pointer-events:none;left:39px;height:13px;width:9px}#webamp .status #time #second-second-digit{position:absolute;pointer-events:none;left:51px;height:13px;width:9px}#webamp #main-window #visualizer{position:absolute;top:43px;left:24px}#webamp #main-window.shade #visualizer{top:5px;left:79px}#webamp #main-window.stop #visualizer,#webamp .text{display:none}#webamp #marquee{top:24px;width:155px;display:block;padding:3px 0}#webamp #marquee,#webamp .media-info #kbps{position:absolute;left:111px;height:6px;overflow:hidden}#webamp .media-info #kbps{top:43px;width:15px}#webamp .stop .media-info #kbps{display:none}#webamp .media-info #khz{position:absolute;left:156px;top:43px;width:10px;height:6px;overflow:hidden}#webamp .stop .media-info #khz{display:none}#webamp .media-info .mono-stereo{position:absolute;left:212px;top:41px;width:57px;height:12px}#webamp .media-info .mono-stereo div{position:absolute;height:12px}#webamp .media-info .mono-stereo #mono{width:27px}#webamp .media-info .mono-stereo #stereo{left:27px;width:29px}#webamp #volume{position:absolute;left:107px;top:57px;height:13px;width:68px;background-position:0 0}#webamp #volume input{height:13px;width:65px;display:block}#webamp #volume input::-webkit-slider-thumb{top:1px;height:11px;width:14px}#webamp #volume input::-moz-range-thumb{top:1px;height:11px;width:14px}#webamp #balance{position:absolute;left:177px;top:57px;height:13px;width:38px;background-position:0 0}#webamp #balance::-webkit-slider-thumb{top:1px;height:11px;width:14px}#webamp #balance::-moz-range-thumb{top:1px;height:11px;width:14px}#webamp .windows{position:absolute;left:219px;top:58px;width:46px;height:12px}#webamp .windows div{position:absolute;width:23px;height:12px}#webamp .windows #equalizer-button{left:0}#webamp .windows #playlist-button{left:23px}#webamp #position{position:absolute;left:16px;top:72px;width:248px;height:10px}#webamp #position::-webkit-slider-thumb{height:10px;width:29px;-webkit-box-sizing:border-box;position:relative}#webamp #position::-moz-range-thumb{height:10px;width:29px}#webamp .stop #position::-webkit-slider-thumb{visibility:hidden}#webamp .stop #position::-moz-range-thumb{visibility:hidden}#webamp .play #position::-webkit-slider-thumb{visibility:visible}#webamp .actions div{height:18px;width:23px;position:absolute}#webamp .actions #previous{top:88px;left:16px}#webamp .actions #play{top:88px;left:39px}#webamp .actions #pause{top:88px;left:62px}#webamp .actions #stop{top:88px;left:85px}#webamp .actions #next{top:88px;left:108px;width:22px}#webamp #eject{position:absolute;top:89px;left:136px;height:16px;width:22px}#webamp .shuffle-repeat{position:absolute;top:89px;left:164px;width:74px}#webamp .shuffle-repeat div{position:absolute;height:15px}#webamp .shuffle-repeat #shuffle{width:47px}#webamp .shuffle-repeat #repeat{left:46px;width:28px}#webamp #about{position:absolute;top:91px;left:253px;height:15px;width:13px}#webamp .digit{position:absolute;display:inline-block;width:9px;height:13px;background-repeat:no-repeat;text-indent:-9999px}#webamp #main-window.shade{height:14px}#webamp .shade #balance,#webamp .shade #volume,#webamp .shade .media-info,#webamp .shade .shuffle-repeat,#webamp .shade .status,#webamp .shade .windows{display:none}#webamp .shade .actions div{position:absolute}#webamp .shade .actions #previous,#webamp .shade .actions #previous:active{background:none;height:10px;width:7px;top:2px;left:169px}#webamp .shade .actions #play,#webamp .shade .actions #play:active{background:none;height:10px;width:10px;top:2px;left:176px}#webamp .shade .actions #pause,#webamp .shade .actions #pause:active{background:none;height:10px;width:9px;top:2px;left:186px}#webamp .shade .actions #stop,#webamp .shade .actions #stop:active{background:none;height:10px;width:9px;top:2px;left:195px}#webamp .shade .actions #next,#webamp .shade .actions #next:active{background:none;height:10px;width:10px;top:2px;left:204px}#webamp .shade #eject,#webamp .shade #eject:active{height:10px;width:10px;top:2px;left:215px;background:none}#webamp .shade #position{position:absolute;left:226px;top:4px;width:17px;height:7px}#webamp .shade #position::-webkit-slider-thumb{height:7px;width:3px;background:none}#webamp .shade #position::-moz-range-thumb{height:7px;width:3px;background:none}#webamp #main-window .mini-time{position:absolute;top:4px;left:127px}\", \"\"]);\n\n// exports\n","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar Track = function Track(props) {\n var _ref, _ref2;\n\n var className = props.className,\n included = props.included,\n vertical = props.vertical,\n offset = props.offset,\n length = props.length,\n style = props.style,\n reverse = props.reverse;\n\n var positonStyle = vertical ? (_ref = {}, (0, _defineProperty3['default'])(_ref, reverse ? 'top' : 'bottom', offset + '%'), (0, _defineProperty3['default'])(_ref, reverse ? 'bottom' : 'top', 'auto'), (0, _defineProperty3['default'])(_ref, 'height', length + '%'), _ref) : (_ref2 = {}, (0, _defineProperty3['default'])(_ref2, reverse ? 'right' : 'left', offset + '%'), (0, _defineProperty3['default'])(_ref2, reverse ? 'left' : 'right', 'auto'), (0, _defineProperty3['default'])(_ref2, 'width', length + '%'), _ref2);\n\n var elStyle = (0, _extends3['default'])({}, style, positonStyle);\n return included ? _react2['default'].createElement('div', { className: className, style: elStyle }) : null;\n}; /* eslint-disable react/prop-types */\nexports['default'] = Track;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _get2 = require('babel-runtime/helpers/get');\n\nvar _get3 = _interopRequireDefault(_get2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nexports['default'] = createSlider;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _addEventListener = require('rc-util/lib/Dom/addEventListener');\n\nvar _addEventListener2 = _interopRequireDefault(_addEventListener);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _Steps = require('./Steps');\n\nvar _Steps2 = _interopRequireDefault(_Steps);\n\nvar _Marks = require('./Marks');\n\nvar _Marks2 = _interopRequireDefault(_Marks);\n\nvar _Handle = require('../Handle');\n\nvar _Handle2 = _interopRequireDefault(_Handle);\n\nvar _utils = require('../utils');\n\nvar utils = _interopRequireWildcard(_utils);\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 noop() {}\n\nfunction createSlider(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_Component) {\n (0, _inherits3['default'])(ComponentEnhancer, _Component);\n\n function ComponentEnhancer(props) {\n (0, _classCallCheck3['default'])(this, ComponentEnhancer);\n\n var _this = (0, _possibleConstructorReturn3['default'])(this, (ComponentEnhancer.__proto__ || Object.getPrototypeOf(ComponentEnhancer)).call(this, props));\n\n _this.onMouseDown = function (e) {\n if (e.button !== 0) {\n return;\n }\n\n var isVertical = _this.props.vertical;\n var position = utils.getMousePosition(isVertical, e);\n if (!utils.isEventFromHandle(e, _this.handlesRefs)) {\n _this.dragOffset = 0;\n } else {\n var handlePosition = utils.getHandleCenterPosition(isVertical, e.target);\n _this.dragOffset = position - handlePosition;\n position = handlePosition;\n }\n _this.removeDocumentEvents();\n _this.onStart(position);\n _this.addDocumentMouseEvents();\n };\n\n _this.onTouchStart = function (e) {\n if (utils.isNotTouchEvent(e)) return;\n\n var isVertical = _this.props.vertical;\n var position = utils.getTouchPosition(isVertical, e);\n if (!utils.isEventFromHandle(e, _this.handlesRefs)) {\n _this.dragOffset = 0;\n } else {\n var handlePosition = utils.getHandleCenterPosition(isVertical, e.target);\n _this.dragOffset = position - handlePosition;\n position = handlePosition;\n }\n _this.onStart(position);\n _this.addDocumentTouchEvents();\n utils.pauseEvent(e);\n };\n\n _this.onFocus = function (e) {\n var _this$props = _this.props,\n onFocus = _this$props.onFocus,\n vertical = _this$props.vertical;\n\n if (utils.isEventFromHandle(e, _this.handlesRefs)) {\n var handlePosition = utils.getHandleCenterPosition(vertical, e.target);\n _this.dragOffset = 0;\n _this.onStart(handlePosition);\n utils.pauseEvent(e);\n if (onFocus) {\n onFocus(e);\n }\n }\n };\n\n _this.onBlur = function (e) {\n var onBlur = _this.props.onBlur;\n\n _this.onEnd();\n if (onBlur) {\n onBlur(e);\n }\n };\n\n _this.onMouseUp = function () {\n if (_this.handlesRefs[_this.prevMovedHandleIndex]) {\n _this.handlesRefs[_this.prevMovedHandleIndex].clickFocus();\n }\n };\n\n _this.onMouseMove = function (e) {\n if (!_this.sliderRef) {\n _this.onEnd();\n return;\n }\n var position = utils.getMousePosition(_this.props.vertical, e);\n _this.onMove(e, position - _this.dragOffset);\n };\n\n _this.onTouchMove = function (e) {\n if (utils.isNotTouchEvent(e) || !_this.sliderRef) {\n _this.onEnd();\n return;\n }\n\n var position = utils.getTouchPosition(_this.props.vertical, e);\n _this.onMove(e, position - _this.dragOffset);\n };\n\n _this.onKeyDown = function (e) {\n if (_this.sliderRef && utils.isEventFromHandle(e, _this.handlesRefs)) {\n _this.onKeyboard(e);\n }\n };\n\n _this.onClickMarkLabel = function (e, value) {\n e.stopPropagation();\n _this.onChange({ value: value });\n _this.setState({ value: value }, function () {\n return _this.onEnd(true);\n });\n };\n\n _this.saveSlider = function (slider) {\n _this.sliderRef = slider;\n };\n\n var step = props.step,\n max = props.max,\n min = props.min;\n\n var isPointDiffEven = isFinite(max - min) ? (max - min) % step === 0 : true; // eslint-disable-line\n (0, _warning2['default'])(step && Math.floor(step) === step ? isPointDiffEven : true, 'Slider[max] - Slider[min] (%s) should be a multiple of Slider[step] (%s)', max - min, step);\n _this.handlesRefs = {};\n return _this;\n }\n\n (0, _createClass3['default'])(ComponentEnhancer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Snapshot testing cannot handle refs, so be sure to null-check this.\n this.document = this.sliderRef && this.sliderRef.ownerDocument;\n\n var _props = this.props,\n autoFocus = _props.autoFocus,\n disabled = _props.disabled;\n\n if (autoFocus && !disabled) {\n this.focus();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if ((0, _get3['default'])(ComponentEnhancer.prototype.__proto__ || Object.getPrototypeOf(ComponentEnhancer.prototype), 'componentWillUnmount', this)) (0, _get3['default'])(ComponentEnhancer.prototype.__proto__ || Object.getPrototypeOf(ComponentEnhancer.prototype), 'componentWillUnmount', this).call(this);\n this.removeDocumentEvents();\n }\n }, {\n key: 'getSliderStart',\n value: function getSliderStart() {\n var slider = this.sliderRef;\n var _props2 = this.props,\n vertical = _props2.vertical,\n reverse = _props2.reverse;\n\n var rect = slider.getBoundingClientRect();\n if (vertical) {\n return reverse ? rect.bottom : rect.top;\n }\n return window.pageXOffset + (reverse ? rect.right : rect.left);\n }\n }, {\n key: 'getSliderLength',\n value: function getSliderLength() {\n var slider = this.sliderRef;\n if (!slider) {\n return 0;\n }\n\n var coords = slider.getBoundingClientRect();\n return this.props.vertical ? coords.height : coords.width;\n }\n }, {\n key: 'addDocumentTouchEvents',\n value: function addDocumentTouchEvents() {\n // just work for Chrome iOS Safari and Android Browser\n this.onTouchMoveListener = (0, _addEventListener2['default'])(this.document, 'touchmove', this.onTouchMove);\n this.onTouchUpListener = (0, _addEventListener2['default'])(this.document, 'touchend', this.onEnd);\n }\n }, {\n key: 'addDocumentMouseEvents',\n value: function addDocumentMouseEvents() {\n this.onMouseMoveListener = (0, _addEventListener2['default'])(this.document, 'mousemove', this.onMouseMove);\n this.onMouseUpListener = (0, _addEventListener2['default'])(this.document, 'mouseup', this.onEnd);\n }\n }, {\n key: 'removeDocumentEvents',\n value: function removeDocumentEvents() {\n /* eslint-disable no-unused-expressions */\n this.onTouchMoveListener && this.onTouchMoveListener.remove();\n this.onTouchUpListener && this.onTouchUpListener.remove();\n\n this.onMouseMoveListener && this.onMouseMoveListener.remove();\n this.onMouseUpListener && this.onMouseUpListener.remove();\n /* eslint-enable no-unused-expressions */\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (!this.props.disabled) {\n this.handlesRefs[0].focus();\n }\n }\n }, {\n key: 'blur',\n value: function blur() {\n var _this2 = this;\n\n if (!this.props.disabled) {\n Object.keys(this.handlesRefs).forEach(function (key) {\n if (_this2.handlesRefs[key] && _this2.handlesRefs[key].blur) {\n _this2.handlesRefs[key].blur();\n }\n });\n }\n }\n }, {\n key: 'calcValue',\n value: function calcValue(offset) {\n var _props3 = this.props,\n vertical = _props3.vertical,\n min = _props3.min,\n max = _props3.max;\n\n var ratio = Math.abs(Math.max(offset, 0) / this.getSliderLength());\n var value = vertical ? (1 - ratio) * (max - min) + min : ratio * (max - min) + min;\n return value;\n }\n }, {\n key: 'calcValueByPos',\n value: function calcValueByPos(position) {\n var sign = this.props.reverse ? -1 : +1;\n var pixelOffset = sign * (position - this.getSliderStart());\n var nextValue = this.trimAlignValue(this.calcValue(pixelOffset));\n return nextValue;\n }\n }, {\n key: 'calcOffset',\n value: function calcOffset(value) {\n var _props4 = this.props,\n min = _props4.min,\n max = _props4.max;\n\n var ratio = (value - min) / (max - min);\n return ratio * 100;\n }\n }, {\n key: 'saveHandle',\n value: function saveHandle(index, handle) {\n this.handlesRefs[index] = handle;\n }\n }, {\n key: 'render',\n value: function render() {\n var _classNames;\n\n var _props5 = this.props,\n prefixCls = _props5.prefixCls,\n className = _props5.className,\n marks = _props5.marks,\n dots = _props5.dots,\n step = _props5.step,\n included = _props5.included,\n disabled = _props5.disabled,\n vertical = _props5.vertical,\n reverse = _props5.reverse,\n min = _props5.min,\n max = _props5.max,\n children = _props5.children,\n maximumTrackStyle = _props5.maximumTrackStyle,\n style = _props5.style,\n railStyle = _props5.railStyle,\n dotStyle = _props5.dotStyle,\n activeDotStyle = _props5.activeDotStyle;\n\n var _get$call = (0, _get3['default'])(ComponentEnhancer.prototype.__proto__ || Object.getPrototypeOf(ComponentEnhancer.prototype), 'render', this).call(this),\n tracks = _get$call.tracks,\n handles = _get$call.handles;\n\n var sliderClassName = (0, _classnames2['default'])(prefixCls, (_classNames = {}, (0, _defineProperty3['default'])(_classNames, prefixCls + '-with-marks', Object.keys(marks).length), (0, _defineProperty3['default'])(_classNames, prefixCls + '-disabled', disabled), (0, _defineProperty3['default'])(_classNames, prefixCls + '-vertical', vertical), (0, _defineProperty3['default'])(_classNames, className, className), _classNames));\n return _react2['default'].createElement(\n 'div',\n {\n ref: this.saveSlider,\n className: sliderClassName,\n onTouchStart: disabled ? noop : this.onTouchStart,\n onMouseDown: disabled ? noop : this.onMouseDown,\n onMouseUp: disabled ? noop : this.onMouseUp,\n onKeyDown: disabled ? noop : this.onKeyDown,\n onFocus: disabled ? noop : this.onFocus,\n onBlur: disabled ? noop : this.onBlur,\n style: style\n },\n _react2['default'].createElement('div', {\n className: prefixCls + '-rail',\n style: (0, _extends3['default'])({}, maximumTrackStyle, railStyle)\n }),\n tracks,\n _react2['default'].createElement(_Steps2['default'], {\n prefixCls: prefixCls,\n vertical: vertical,\n reverse: reverse,\n marks: marks,\n dots: dots,\n step: step,\n included: included,\n lowerBound: this.getLowerBound(),\n upperBound: this.getUpperBound(),\n max: max,\n min: min,\n dotStyle: dotStyle,\n activeDotStyle: activeDotStyle\n }),\n handles,\n _react2['default'].createElement(_Marks2['default'], {\n className: prefixCls + '-mark',\n onClickLabel: disabled ? noop : this.onClickMarkLabel,\n vertical: vertical,\n marks: marks,\n included: included,\n lowerBound: this.getLowerBound(),\n upperBound: this.getUpperBound(),\n max: max,\n min: min,\n reverse: reverse\n }),\n children\n );\n }\n }]);\n return ComponentEnhancer;\n }(Component), _class.displayName = 'ComponentEnhancer(' + Component.displayName + ')', _class.propTypes = (0, _extends3['default'])({}, Component.propTypes, {\n min: _propTypes2['default'].number,\n max: _propTypes2['default'].number,\n step: _propTypes2['default'].number,\n marks: _propTypes2['default'].object,\n included: _propTypes2['default'].bool,\n className: _propTypes2['default'].string,\n prefixCls: _propTypes2['default'].string,\n disabled: _propTypes2['default'].bool,\n children: _propTypes2['default'].any,\n onBeforeChange: _propTypes2['default'].func,\n onChange: _propTypes2['default'].func,\n onAfterChange: _propTypes2['default'].func,\n handle: _propTypes2['default'].func,\n dots: _propTypes2['default'].bool,\n vertical: _propTypes2['default'].bool,\n style: _propTypes2['default'].object,\n reverse: _propTypes2['default'].bool,\n minimumTrackStyle: _propTypes2['default'].object, // just for compatibility, will be deperecate\n maximumTrackStyle: _propTypes2['default'].object, // just for compatibility, will be deperecate\n handleStyle: _propTypes2['default'].oneOfType([_propTypes2['default'].object, _propTypes2['default'].arrayOf(_propTypes2['default'].object)]),\n trackStyle: _propTypes2['default'].oneOfType([_propTypes2['default'].object, _propTypes2['default'].arrayOf(_propTypes2['default'].object)]),\n railStyle: _propTypes2['default'].object,\n dotStyle: _propTypes2['default'].object,\n activeDotStyle: _propTypes2['default'].object,\n autoFocus: _propTypes2['default'].bool,\n onFocus: _propTypes2['default'].func,\n onBlur: _propTypes2['default'].func\n }), _class.defaultProps = (0, _extends3['default'])({}, Component.defaultProps, {\n prefixCls: 'rc-slider',\n className: '',\n min: 0,\n max: 100,\n step: 1,\n marks: {},\n handle: function handle(_ref) {\n var index = _ref.index,\n restProps = (0, _objectWithoutProperties3['default'])(_ref, ['index']);\n\n delete restProps.dragging;\n if (restProps.value === null) {\n return null;\n }\n\n return _react2['default'].createElement(_Handle2['default'], (0, _extends3['default'])({}, restProps, { key: index }));\n },\n\n onBeforeChange: noop,\n onChange: noop,\n onAfterChange: noop,\n included: true,\n disabled: false,\n dots: false,\n vertical: false,\n reverse: false,\n trackStyle: [{}],\n handleStyle: [{}],\n railStyle: {},\n dotStyle: {},\n activeDotStyle: {}\n }), _temp;\n}\nmodule.exports = exports['default'];","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","/**\n * @ignore\n * event object for dom\n * @author [email protected]\n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _EventBaseObject = require('./EventBaseObject');\n\nvar _EventBaseObject2 = _interopRequireDefault(_EventBaseObject);\n\nvar _objectAssign = require('object-assign');\n\nvar _objectAssign2 = _interopRequireDefault(_objectAssign);\n\nvar TRUE = true;\nvar FALSE = false;\nvar commonProps = ['altKey', 'bubbles', 'cancelable', 'ctrlKey', 'currentTarget', 'eventPhase', 'metaKey', 'shiftKey', 'target', 'timeStamp', 'view', 'type'];\n\nfunction isNullOrUndefined(w) {\n return w === null || w === undefined;\n}\n\nvar eventNormalizers = [{\n reg: /^key/,\n props: ['char', 'charCode', 'key', 'keyCode', 'which'],\n fix: function fix(event, nativeEvent) {\n if (isNullOrUndefined(event.which)) {\n event.which = !isNullOrUndefined(nativeEvent.charCode) ? nativeEvent.charCode : nativeEvent.keyCode;\n }\n\n // add metaKey to non-Mac browsers (use ctrl for PC 's and Meta for Macs)\n if (event.metaKey === undefined) {\n event.metaKey = event.ctrlKey;\n }\n }\n}, {\n reg: /^touch/,\n props: ['touches', 'changedTouches', 'targetTouches']\n}, {\n reg: /^hashchange$/,\n props: ['newURL', 'oldURL']\n}, {\n reg: /^gesturechange$/i,\n props: ['rotation', 'scale']\n}, {\n reg: /^(mousewheel|DOMMouseScroll)$/,\n props: [],\n fix: function fix(event, nativeEvent) {\n var deltaX = undefined;\n var deltaY = undefined;\n var delta = undefined;\n var wheelDelta = nativeEvent.wheelDelta;\n var axis = nativeEvent.axis;\n var wheelDeltaY = nativeEvent.wheelDeltaY;\n var wheelDeltaX = nativeEvent.wheelDeltaX;\n var detail = nativeEvent.detail;\n\n // ie/webkit\n if (wheelDelta) {\n delta = wheelDelta / 120;\n }\n\n // gecko\n if (detail) {\n // press control e.detail == 1 else e.detail == 3\n delta = 0 - (detail % 3 === 0 ? detail / 3 : detail);\n }\n\n // Gecko\n if (axis !== undefined) {\n if (axis === event.HORIZONTAL_AXIS) {\n deltaY = 0;\n deltaX = 0 - delta;\n } else if (axis === event.VERTICAL_AXIS) {\n deltaX = 0;\n deltaY = delta;\n }\n }\n\n // Webkit\n if (wheelDeltaY !== undefined) {\n deltaY = wheelDeltaY / 120;\n }\n if (wheelDeltaX !== undefined) {\n deltaX = -1 * wheelDeltaX / 120;\n }\n\n // 默认 deltaY (ie)\n if (!deltaX && !deltaY) {\n deltaY = delta;\n }\n\n if (deltaX !== undefined) {\n /**\n * deltaX of mousewheel event\n * @property deltaX\n * @member Event.DomEvent.Object\n */\n event.deltaX = deltaX;\n }\n\n if (deltaY !== undefined) {\n /**\n * deltaY of mousewheel event\n * @property deltaY\n * @member Event.DomEvent.Object\n */\n event.deltaY = deltaY;\n }\n\n if (delta !== undefined) {\n /**\n * delta of mousewheel event\n * @property delta\n * @member Event.DomEvent.Object\n */\n event.delta = delta;\n }\n }\n}, {\n reg: /^mouse|contextmenu|click|mspointer|(^DOMMouseScroll$)/i,\n props: ['buttons', 'clientX', 'clientY', 'button', 'offsetX', 'relatedTarget', 'which', 'fromElement', 'toElement', 'offsetY', 'pageX', 'pageY', 'screenX', 'screenY'],\n fix: function fix(event, nativeEvent) {\n var eventDoc = undefined;\n var doc = undefined;\n var body = undefined;\n var target = event.target;\n var button = nativeEvent.button;\n\n // Calculate pageX/Y if missing and clientX/Y available\n if (target && isNullOrUndefined(event.pageX) && !isNullOrUndefined(nativeEvent.clientX)) {\n eventDoc = target.ownerDocument || document;\n doc = eventDoc.documentElement;\n body = eventDoc.body;\n event.pageX = nativeEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = nativeEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // which for click: 1 === left; 2 === middle; 3 === right\n // do not use button\n if (!event.which && button !== undefined) {\n if (button & 1) {\n event.which = 1;\n } else if (button & 2) {\n event.which = 3;\n } else if (button & 4) {\n event.which = 2;\n } else {\n event.which = 0;\n }\n }\n\n // add relatedTarget, if necessary\n if (!event.relatedTarget && event.fromElement) {\n event.relatedTarget = event.fromElement === target ? event.toElement : event.fromElement;\n }\n\n return event;\n }\n}];\n\nfunction retTrue() {\n return TRUE;\n}\n\nfunction retFalse() {\n return FALSE;\n}\n\nfunction DomEventObject(nativeEvent) {\n var type = nativeEvent.type;\n\n var isNative = typeof nativeEvent.stopPropagation === 'function' || typeof nativeEvent.cancelBubble === 'boolean';\n\n _EventBaseObject2['default'].call(this);\n\n this.nativeEvent = nativeEvent;\n\n // in case dom event has been mark as default prevented by lower dom node\n var isDefaultPrevented = retFalse;\n if ('defaultPrevented' in nativeEvent) {\n isDefaultPrevented = nativeEvent.defaultPrevented ? retTrue : retFalse;\n } else if ('getPreventDefault' in nativeEvent) {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=691151\n isDefaultPrevented = nativeEvent.getPreventDefault() ? retTrue : retFalse;\n } else if ('returnValue' in nativeEvent) {\n isDefaultPrevented = nativeEvent.returnValue === FALSE ? retTrue : retFalse;\n }\n\n this.isDefaultPrevented = isDefaultPrevented;\n\n var fixFns = [];\n var fixFn = undefined;\n var l = undefined;\n var prop = undefined;\n var props = commonProps.concat();\n\n eventNormalizers.forEach(function (normalizer) {\n if (type.match(normalizer.reg)) {\n props = props.concat(normalizer.props);\n if (normalizer.fix) {\n fixFns.push(normalizer.fix);\n }\n }\n });\n\n l = props.length;\n\n // clone properties of the original event object\n while (l) {\n prop = props[--l];\n this[prop] = nativeEvent[prop];\n }\n\n // fix target property, if necessary\n if (!this.target && isNative) {\n this.target = nativeEvent.srcElement || document; // srcElement might not be defined either\n }\n\n // check if target is a text node (safari)\n if (this.target && this.target.nodeType === 3) {\n this.target = this.target.parentNode;\n }\n\n l = fixFns.length;\n\n while (l) {\n fixFn = fixFns[--l];\n fixFn(this, nativeEvent);\n }\n\n this.timeStamp = nativeEvent.timeStamp || Date.now();\n}\n\nvar EventBaseObjectProto = _EventBaseObject2['default'].prototype;\n\n(0, _objectAssign2['default'])(DomEventObject.prototype, EventBaseObjectProto, {\n constructor: DomEventObject,\n\n preventDefault: function preventDefault() {\n var e = this.nativeEvent;\n\n // if preventDefault exists run it on the original event\n if (e.preventDefault) {\n e.preventDefault();\n } else {\n // otherwise set the returnValue property of the original event to FALSE (IE)\n e.returnValue = FALSE;\n }\n\n EventBaseObjectProto.preventDefault.call(this);\n },\n\n stopPropagation: function stopPropagation() {\n var e = this.nativeEvent;\n\n // if stopPropagation exists run it on the original event\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n // otherwise set the cancelBubble property of the original event to TRUE (IE)\n e.cancelBubble = TRUE;\n }\n\n EventBaseObjectProto.stopPropagation.call(this);\n }\n});\n\nexports['default'] = DomEventObject;\nmodule.exports = exports['default'];","/**\n * @ignore\n * base event object for custom and dom event.\n * @author [email protected]\n */\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction returnFalse() {\n return false;\n}\n\nfunction returnTrue() {\n return true;\n}\n\nfunction EventBaseObject() {\n this.timeStamp = Date.now();\n this.target = undefined;\n this.currentTarget = undefined;\n}\n\nEventBaseObject.prototype = {\n isEventObject: 1,\n\n constructor: EventBaseObject,\n\n isDefaultPrevented: returnFalse,\n\n isPropagationStopped: returnFalse,\n\n isImmediatePropagationStopped: returnFalse,\n\n preventDefault: function preventDefault() {\n this.isDefaultPrevented = returnTrue;\n },\n\n stopPropagation: function stopPropagation() {\n this.isPropagationStopped = returnTrue;\n },\n\n stopImmediatePropagation: function stopImmediatePropagation() {\n this.isImmediatePropagationStopped = returnTrue;\n // fixed 1.2\n // call stopPropagation implicitly\n this.stopPropagation();\n },\n\n halt: function halt(immediate) {\n if (immediate) {\n this.stopImmediatePropagation();\n } else {\n this.stopPropagation();\n }\n this.preventDefault();\n }\n};\n\nexports[\"default\"] = EventBaseObject;\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends4 = require('babel-runtime/helpers/extends');\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar calcPoints = function calcPoints(vertical, marks, dots, step, min, max) {\n (0, _warning2['default'])(dots ? step > 0 : true, '`Slider[step]` should be a positive number in order to make Slider[dots] work.');\n var points = Object.keys(marks).map(parseFloat).sort(function (a, b) {\n return a - b;\n });\n if (dots && step) {\n for (var i = min; i <= max; i += step) {\n if (points.indexOf(i) === -1) {\n points.push(i);\n }\n }\n }\n return points;\n};\n\nvar Steps = function Steps(_ref) {\n var prefixCls = _ref.prefixCls,\n vertical = _ref.vertical,\n reverse = _ref.reverse,\n marks = _ref.marks,\n dots = _ref.dots,\n step = _ref.step,\n included = _ref.included,\n lowerBound = _ref.lowerBound,\n upperBound = _ref.upperBound,\n max = _ref.max,\n min = _ref.min,\n dotStyle = _ref.dotStyle,\n activeDotStyle = _ref.activeDotStyle;\n\n var range = max - min;\n var elements = calcPoints(vertical, marks, dots, step, min, max).map(function (point) {\n var _classNames;\n\n var offset = Math.abs(point - min) / range * 100 + '%';\n\n var isActived = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;\n var style = vertical ? (0, _extends5['default'])({}, dotStyle, (0, _defineProperty3['default'])({}, reverse ? 'top' : 'bottom', offset)) : (0, _extends5['default'])({}, dotStyle, (0, _defineProperty3['default'])({}, reverse ? 'right' : 'left', offset));\n if (isActived) {\n style = (0, _extends5['default'])({}, style, activeDotStyle);\n }\n\n var pointClassName = (0, _classnames2['default'])((_classNames = {}, (0, _defineProperty3['default'])(_classNames, prefixCls + '-dot', true), (0, _defineProperty3['default'])(_classNames, prefixCls + '-dot-active', isActived), (0, _defineProperty3['default'])(_classNames, prefixCls + '-dot-reverse', reverse), _classNames));\n\n return _react2['default'].createElement('span', { className: pointClassName, style: style, key: point });\n });\n\n return _react2['default'].createElement(\n 'div',\n { className: prefixCls + '-step' },\n elements\n );\n};\n\nSteps.propTypes = {\n prefixCls: _propTypes2['default'].string,\n activeDotStyle: _propTypes2['default'].object,\n dotStyle: _propTypes2['default'].object,\n min: _propTypes2['default'].number,\n max: _propTypes2['default'].number,\n upperBound: _propTypes2['default'].number,\n lowerBound: _propTypes2['default'].number,\n included: _propTypes2['default'].bool,\n dots: _propTypes2['default'].bool,\n step: _propTypes2['default'].number,\n marks: _propTypes2['default'].object,\n vertical: _propTypes2['default'].bool,\n reverse: _propTypes2['default'].bool\n};\n\nexports['default'] = Steps;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar Marks = function Marks(_ref) {\n var className = _ref.className,\n vertical = _ref.vertical,\n reverse = _ref.reverse,\n marks = _ref.marks,\n included = _ref.included,\n upperBound = _ref.upperBound,\n lowerBound = _ref.lowerBound,\n max = _ref.max,\n min = _ref.min,\n onClickLabel = _ref.onClickLabel;\n\n var marksKeys = Object.keys(marks);\n\n var range = max - min;\n var elements = marksKeys.map(parseFloat).sort(function (a, b) {\n return a - b;\n }).map(function (point) {\n var _classNames;\n\n var markPoint = marks[point];\n var markPointIsObject = typeof markPoint === 'object' && !_react2['default'].isValidElement(markPoint);\n var markLabel = markPointIsObject ? markPoint.label : markPoint;\n if (!markLabel && markLabel !== 0) {\n return null;\n }\n\n var isActive = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;\n var markClassName = (0, _classnames2['default'])((_classNames = {}, (0, _defineProperty3['default'])(_classNames, className + '-text', true), (0, _defineProperty3['default'])(_classNames, className + '-text-active', isActive), _classNames));\n\n var bottomStyle = (0, _defineProperty3['default'])({\n marginBottom: '-50%'\n }, reverse ? 'top' : 'bottom', (point - min) / range * 100 + '%');\n\n var leftStyle = (0, _defineProperty3['default'])({\n transform: 'translateX(-50%)',\n msTransform: 'translateX(-50%)'\n }, reverse ? 'right' : 'left', reverse ? (point - min / 4) / range * 100 + '%' : (point - min) / range * 100 + '%');\n\n var style = vertical ? bottomStyle : leftStyle;\n var markStyle = markPointIsObject ? (0, _extends3['default'])({}, style, markPoint.style) : style;\n return _react2['default'].createElement(\n 'span',\n {\n className: markClassName,\n style: markStyle,\n key: point,\n onMouseDown: function onMouseDown(e) {\n return onClickLabel(e, point);\n },\n onTouchStart: function onTouchStart(e) {\n return onClickLabel(e, point);\n }\n },\n markLabel\n );\n });\n\n return _react2['default'].createElement(\n 'div',\n { className: className },\n elements\n );\n};\n\nMarks.propTypes = {\n className: _propTypes2['default'].string,\n vertical: _propTypes2['default'].bool,\n reverse: _propTypes2['default'].bool,\n marks: _propTypes2['default'].object,\n included: _propTypes2['default'].bool,\n upperBound: _propTypes2['default'].number,\n lowerBound: _propTypes2['default'].number,\n max: _propTypes2['default'].number,\n min: _propTypes2['default'].number,\n onClickLabel: _propTypes2['default'].func\n};\n\nexports['default'] = Marks;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _addEventListener = require('rc-util/lib/Dom/addEventListener');\n\nvar _addEventListener2 = _interopRequireDefault(_addEventListener);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar Handle = function (_React$Component) {\n (0, _inherits3['default'])(Handle, _React$Component);\n\n function Handle() {\n var _ref;\n\n var _temp, _this, _ret;\n\n (0, _classCallCheck3['default'])(this, Handle);\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 = (0, _possibleConstructorReturn3['default'])(this, (_ref = Handle.__proto__ || Object.getPrototypeOf(Handle)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n clickFocused: false\n }, _this.setHandleRef = function (node) {\n _this.handle = node;\n }, _this.handleMouseUp = function () {\n if (document.activeElement === _this.handle) {\n _this.setClickFocus(true);\n }\n }, _this.handleMouseDown = function () {\n // fix https://github.com/ant-design/ant-design/issues/15324\n _this.focus();\n }, _this.handleBlur = function () {\n _this.setClickFocus(false);\n }, _this.handleKeyDown = function () {\n _this.setClickFocus(false);\n }, _temp), (0, _possibleConstructorReturn3['default'])(_this, _ret);\n }\n\n (0, _createClass3['default'])(Handle, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n // mouseup won't trigger if mouse moved out of handle,\n // so we listen on document here.\n this.onMouseUpListener = (0, _addEventListener2['default'])(document, 'mouseup', this.handleMouseUp);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.onMouseUpListener) {\n this.onMouseUpListener.remove();\n }\n }\n }, {\n key: 'setClickFocus',\n value: function setClickFocus(focused) {\n this.setState({ clickFocused: focused });\n }\n }, {\n key: 'clickFocus',\n value: function clickFocus() {\n this.setClickFocus(true);\n this.focus();\n }\n }, {\n key: 'focus',\n value: function focus() {\n this.handle.focus();\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.handle.blur();\n }\n }, {\n key: 'render',\n value: function render() {\n var _ref2, _ref3;\n\n var _props = this.props,\n prefixCls = _props.prefixCls,\n vertical = _props.vertical,\n reverse = _props.reverse,\n offset = _props.offset,\n style = _props.style,\n disabled = _props.disabled,\n min = _props.min,\n max = _props.max,\n value = _props.value,\n tabIndex = _props.tabIndex,\n restProps = (0, _objectWithoutProperties3['default'])(_props, ['prefixCls', 'vertical', 'reverse', 'offset', 'style', 'disabled', 'min', 'max', 'value', 'tabIndex']);\n\n\n var className = (0, _classnames2['default'])(this.props.className, (0, _defineProperty3['default'])({}, prefixCls + '-handle-click-focused', this.state.clickFocused));\n var positionStyle = vertical ? (_ref2 = {}, (0, _defineProperty3['default'])(_ref2, reverse ? 'top' : 'bottom', offset + '%'), (0, _defineProperty3['default'])(_ref2, reverse ? 'bottom' : 'top', 'auto'), (0, _defineProperty3['default'])(_ref2, 'transform', 'translateY(+50%)'), _ref2) : (_ref3 = {}, (0, _defineProperty3['default'])(_ref3, reverse ? 'right' : 'left', offset + '%'), (0, _defineProperty3['default'])(_ref3, reverse ? 'left' : 'right', 'auto'), (0, _defineProperty3['default'])(_ref3, 'transform', 'translateX(' + (reverse ? '+' : '-') + '50%)'), _ref3);\n var elStyle = (0, _extends3['default'])({}, style, positionStyle);\n\n var _tabIndex = tabIndex || 0;\n if (disabled || tabIndex === null) {\n _tabIndex = null;\n }\n\n return _react2['default'].createElement('div', (0, _extends3['default'])({\n ref: this.setHandleRef,\n tabIndex: _tabIndex\n }, restProps, {\n className: className,\n style: elStyle,\n onBlur: this.handleBlur,\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleMouseDown\n\n // aria attribute\n , role: 'slider',\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': value,\n 'aria-disabled': !!disabled\n }));\n }\n }]);\n return Handle;\n}(_react2['default'].Component);\n\nexports['default'] = Handle;\n\n\nHandle.propTypes = {\n prefixCls: _propTypes2['default'].string,\n className: _propTypes2['default'].string,\n vertical: _propTypes2['default'].bool,\n offset: _propTypes2['default'].number,\n style: _propTypes2['default'].object,\n disabled: _propTypes2['default'].bool,\n min: _propTypes2['default'].number,\n max: _propTypes2['default'].number,\n value: _propTypes2['default'].number,\n tabIndex: _propTypes2['default'].number,\n reverse: _propTypes2['default'].bool\n};\nmodule.exports = exports['default'];","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author [email protected]\n */\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n\n /**\n * TAB\n */\n TAB: 9,\n\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n\n /**\n * ENTER\n */\n ENTER: 13,\n\n /**\n * SHIFT\n */\n SHIFT: 16,\n\n /**\n * CTRL\n */\n CTRL: 17,\n\n /**\n * ALT\n */\n ALT: 18,\n\n /**\n * PAUSE\n */\n PAUSE: 19,\n\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n\n /**\n * ESC\n */\n ESC: 27,\n\n /**\n * SPACE\n */\n SPACE: 32,\n\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n\n /**\n * END\n */\n END: 35,\n\n /**\n * HOME\n */\n HOME: 36,\n\n /**\n * LEFT\n */\n LEFT: 37,\n\n /**\n * UP\n */\n UP: 38,\n\n /**\n * RIGHT\n */\n RIGHT: 39,\n\n /**\n * DOWN\n */\n DOWN: 40,\n\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n\n /**\n * INSERT\n */\n INSERT: 45,\n\n /**\n * DELETE\n */\n DELETE: 46,\n\n /**\n * ZERO\n */\n ZERO: 48,\n\n /**\n * ONE\n */\n ONE: 49,\n\n /**\n * TWO\n */\n TWO: 50,\n\n /**\n * THREE\n */\n THREE: 51,\n\n /**\n * FOUR\n */\n FOUR: 52,\n\n /**\n * FIVE\n */\n FIVE: 53,\n\n /**\n * SIX\n */\n SIX: 54,\n\n /**\n * SEVEN\n */\n SEVEN: 55,\n\n /**\n * EIGHT\n */\n EIGHT: 56,\n\n /**\n * NINE\n */\n NINE: 57,\n\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n\n /**\n * A\n */\n A: 65,\n\n /**\n * B\n */\n B: 66,\n\n /**\n * C\n */\n C: 67,\n\n /**\n * D\n */\n D: 68,\n\n /**\n * E\n */\n E: 69,\n\n /**\n * F\n */\n F: 70,\n\n /**\n * G\n */\n G: 71,\n\n /**\n * H\n */\n H: 72,\n\n /**\n * I\n */\n I: 73,\n\n /**\n * J\n */\n J: 74,\n\n /**\n * K\n */\n K: 75,\n\n /**\n * L\n */\n L: 76,\n\n /**\n * M\n */\n M: 77,\n\n /**\n * N\n */\n N: 78,\n\n /**\n * O\n */\n O: 79,\n\n /**\n * P\n */\n P: 80,\n\n /**\n * Q\n */\n Q: 81,\n\n /**\n * R\n */\n R: 82,\n\n /**\n * S\n */\n S: 83,\n\n /**\n * T\n */\n T: 84,\n\n /**\n * U\n */\n U: 85,\n\n /**\n * V\n */\n V: 86,\n\n /**\n * W\n */\n W: 87,\n\n /**\n * X\n */\n X: 88,\n\n /**\n * Y\n */\n Y: 89,\n\n /**\n * Z\n */\n Z: 90,\n\n /**\n * META\n */\n META: 91,\n\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n\n /**\n * F1\n */\n F1: 112,\n\n /**\n * F2\n */\n F2: 113,\n\n /**\n * F3\n */\n F3: 114,\n\n /**\n * F4\n */\n F4: 115,\n\n /**\n * F5\n */\n F5: 116,\n\n /**\n * F6\n */\n F6: 117,\n\n /**\n * F7\n */\n F7: 118,\n\n /**\n * F8\n */\n F8: 119,\n\n /**\n * F9\n */\n F9: 120,\n\n /**\n * F10\n */\n F10: 121,\n\n /**\n * F11\n */\n F11: 122,\n\n /**\n * F12\n */\n F12: 123,\n\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n\n /**\n * DASH\n */\n DASH: 189,\n\n /**\n * EQUALS\n */\n EQUALS: 187,\n\n /**\n * COMMA\n */\n COMMA: 188,\n\n /**\n * PERIOD\n */\n PERIOD: 190,\n\n /**\n * SLASH\n */\n SLASH: 191,\n\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n\n if (e.altKey && !e.ctrlKey || e.metaKey || // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n } // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n\n\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n\n default:\n return true;\n }\n },\n\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n } // Safari sends zero key code for non-latin characters.\n\n\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n\n default:\n return false;\n }\n }\n};\nvar _default = KeyCode;\nexports.default = _default;","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./playlist-window.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./playlist-window.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./playlist-window.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#webamp #playlist-window{display:flex;flex-direction:column}#webamp .playlist-top{width:100%;min-height:20px;max-height:20px;position:relative;display:flex}#webamp .playlist-top-left{width:25px}#webamp .playlist-top-left-spacer{width:12px}#webamp .playlist-top-left-fill{flex-grow:1;background-position:100%}#webamp .playlist-top-right-spacer{width:13px}#webamp .playlist-top-right-fill{flex-grow:1;background-position:100%}#webamp .playlist-top-title{width:100px}#webamp .playlist-top-right{width:25px}#webamp .playlist-middle{flex-grow:1;display:flex;flex-direction:row;overflow:hidden}#webamp .playlist-middle-left{background-repeat:repeat-y;width:12px;min-width:12px}#webamp .playlist-middle-center{flex-grow:1;padding:3px 0;min-width:0}#webamp .playlist-tracks{display:flex;flex:1 0 auto}#webamp .playlist-tracks .track-cell{height:13px;line-height:13px;font-size:9px;letter-spacing:.5px;-webkit-user-select:none;-moz-user-select:none;user-select:none}#webamp .playlist-track-durations>div{padding-right:3px;text-align:right}#webamp .playlist-track-titles{flex:1 1 auto;overflow:hidden}#webamp .playlist-track-titles>div{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}#webamp .playlist-middle-right{background-repeat:repeat-y;background-position:100% 0;width:20px;min-width:20px;position:relative;padding-bottom:18px}#webamp .playlist-scrollbar{height:100%;width:8px;margin-left:5px}#webamp .playlist-scrollbar-handle{width:8x;height:18px}#webamp .playlist-bottom{width:100%;height:38px;min-height:38px;max-height:38px;position:relative}#webamp .playlist-bottom-left{width:125px;height:100%;position:absolute}#webamp .playlist-menu li{list-style:none;display:none;width:22px;height:18px;padding:0;margin:0}#webamp .playlist-menu li>div{height:100%}#webamp .playlist-menu ul{padding:0;margin:0;position:absolute;bottom:0}#webamp .playlist-menu.selected li{display:block}#webamp .playlist-menu .bar{position:absolute;bottom:0;left:-3px;width:3px;height:54px}#webamp #playlist-add-menu{position:absolute;bottom:12px;left:14px;width:22px;height:18px}#webamp #playlist-remove-menu.playlist-menu .bar{height:72px}#webamp #playlist-remove-menu{position:absolute;bottom:12px;left:43px;width:22px;height:18px}#webamp #playlist-selection-menu{position:absolute;bottom:12px;left:72px;width:22px;height:18px}#webamp #playlist-misc-menu{position:absolute;bottom:12px;left:101px;width:22px;height:18px}#webamp #playlist-list-menu{position:absolute;bottom:12px;right:22px;width:22px;height:18px}#webamp .playlist-bottom-right{width:150px;height:100%;position:absolute;right:0}#webamp .playlist-running-time-display{position:absolute;top:10px;left:7px;height:10px}#webamp .playlist-action-buttons{position:absolute;top:22px;left:3px;display:flex}#webamp .playlist-action-buttons>div{height:10px;width:10px}#webamp #playlist-window .playlist-visualizer{width:75px;height:100%;position:absolute;right:150px}#webamp #playlist-window .mini-time{position:absolute;top:23px;left:66px}#webamp #playlist-window #playlist-resize-target{position:absolute;right:0;bottom:0;height:20px;width:20px}#webamp #playlist-close-button{position:absolute;right:2px;height:9px;width:9px;top:3px}#webamp #playlist-shade-button{position:absolute;right:12px;height:9px;width:9px;top:3px}#webamp #playlist-window-shade{height:14px}#webamp #playlist-window-shade .left,#webamp #playlist-window-shade .right{height:14px;background-repeat:no-repeat}#webamp #playlist-window-shade .right{background-position-x:right}#webamp #playlist-window #playlist-scroll-down-button,#webamp #playlist-window #playlist-scroll-up-button{position:absolute;width:8px;height:5px;right:7px}#webamp #playlist-window #playlist-scroll-up-button{top:2px}#webamp #playlist-window #playlist-scroll-down-button{top:8px}#webamp #playlist-window-shade #playlist-resize-target{position:absolute;right:20px;top:3px;height:9px;width:9px}#webamp #playlist-shade-track-title{position:absolute;top:4px;left:5px}#webamp #playlist-shade-time{position:absolute;top:4px;right:30px}#webamp #playlist-window .visualizer-wrapper{position:absolute;top:12px;left:2px;width:72px;overflow:hidden}\", \"\"]);\n\n// exports\n","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./equalizer-window.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./equalizer-window.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./equalizer-window.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#webamp #equalizer-window{height:116px;width:275px}#webamp #equalizer-window.shade{height:14px}#webamp #equalizer-volume{position:absolute;left:61px;top:4px;height:6px;width:97px;background-position:0 0}#webamp #equalizer-volume::-webkit-slider-thumb{height:7px;width:3px}#webamp #equalizer-volume::-moz-range-thumb{height:7px;width:3px}#webamp #equalizer-balance{position:absolute;left:164px;top:4px;height:6px;width:43px;background-position:0 0}#webamp #equalizer-balance::-webkit-slider-thumb{height:7px;width:3px}#webamp #equalizer-balance::-moz-range-thumb{height:7px;width:3px}#webamp .equalizer-top{height:14px;width:275px;position:relative}#webamp #equalizer-close{position:absolute;height:9px;width:9px;left:264px;top:3px}#webamp #equalizer-shade{position:absolute;height:9px;width:9px;left:254px;top:3px}#webamp #on{width:26px;left:14px}#webamp #auto,#webamp #on{position:absolute;height:12px;top:18px}#webamp #auto{width:32px;left:40px}#webamp #presets-context{position:absolute;width:44px;height:12px;top:18px;left:217px}#webamp #presets{width:100%;height:100%}#webamp #eqGraph{position:absolute;width:113px;height:19px;top:17px;left:86px}#webamp #preamp{position:absolute;left:21px;top:38px}#webamp #plus12db{top:36px}#webamp #plus12db,#webamp #zerodb{position:absolute;left:45px;width:22px;height:8px}#webamp #zerodb{top:64px}#webamp #minus12db{position:absolute;left:45px;top:95px;width:22px;height:8px}#webamp #band-60{position:absolute;left:78px;top:38px}#webamp #band-170{position:absolute;left:96px;top:38px}#webamp #band-310{position:absolute;left:114px;top:38px}#webamp #band-600{position:absolute;left:132px;top:38px}#webamp #band-1000{position:absolute;left:150px;top:38px}#webamp #band-3000{position:absolute;left:168px;top:38px}#webamp #band-6000{position:absolute;left:186px;top:38px}#webamp #band-12000{position:absolute;left:204px;top:38px}#webamp #band-14000{position:absolute;left:222px;top:38px}#webamp #band-16000{position:absolute;left:240px;top:38px}#webamp .band{width:14px;height:63px}#webamp .band .rc-slider{height:51px;width:14px;margin-top:6px}#webamp .band .rc-slider .rc-slider-handle{width:11px;height:11px;margin:-6px 0 0 1px;position:absolute}\", \"\"]);\n\n// exports\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseAni = void 0;\nvar riff_file_1 = require(\"riff-file\");\nvar byte_data_1 = require(\"byte-data\");\nvar DWORD = { bits: 32, be: false, signed: false, fp: false };\nfunction parseAni(arr) {\n var riff = new riff_file_1.RIFFFile();\n riff.setSignature(arr);\n var signature = riff.signature;\n if (signature.format !== \"ACON\") {\n throw new Error(\"Expected format. Expected \\\"ACON\\\", got \\\"\" + signature.format + \"\\\"\");\n }\n // Helper function to get a chunk by chunkId and transform it if it's non-null.\n function mapChunk(chunkId, mapper) {\n var chunk = riff.findChunk(chunkId);\n return chunk == null ? null : mapper(chunk);\n }\n var metadata = mapChunk(\"anih\", function (c) {\n var words = byte_data_1.unpackArray(arr, DWORD, c.chunkData.start, c.chunkData.end);\n return {\n cbSize: words[0],\n nFrames: words[1],\n nSteps: words[2],\n iWidth: words[3],\n iHeight: words[4],\n iBitCount: words[5],\n nPlanes: words[6],\n iDispRate: words[7],\n bfAttributes: words[8],\n };\n });\n if (metadata == null) {\n throw new Error(\"Did not find anih\");\n }\n var rate = mapChunk(\"rate\", function (c) {\n return byte_data_1.unpackArray(arr, DWORD, c.chunkData.start, c.chunkData.end);\n });\n // chunkIds are always four chars, hence the trailing space.\n var seq = mapChunk(\"seq \", function (c) {\n return byte_data_1.unpackArray(arr, DWORD, c.chunkData.start, c.chunkData.end);\n });\n var lists = riff.findChunk(\"LIST\", true);\n var imageChunk = lists === null || lists === void 0 ? void 0 : lists.find(function (c) { return c.format === \"fram\"; });\n if (imageChunk == null) {\n throw new Error(\"Did not find fram LIST\");\n }\n var images = imageChunk.subChunks.slice(0, metadata.nFrames).map(function (c) {\n if (c.chunkId !== \"icon\") {\n throw new Error(\"Unexpected chunk type in fram: \" + c.chunkId);\n }\n return arr.slice(c.chunkData.start, c.chunkData.end);\n });\n var title = null;\n var artist = null;\n var infoChunk = lists === null || lists === void 0 ? void 0 : lists.find(function (c) { return c.format === \"INFO\"; });\n if (infoChunk != null) {\n infoChunk.subChunks.forEach(function (c) {\n switch (c.chunkId) {\n case \"INAM\":\n title = byte_data_1.unpackString(arr, c.chunkData.start, c.chunkData.end);\n break;\n case \"IART\":\n artist = byte_data_1.unpackString(arr, c.chunkData.start, c.chunkData.end);\n break;\n default:\n // Unexpected subchunk\n }\n });\n }\n return { images: images, rate: rate, seq: seq, metadata: metadata, artist: artist, title: title };\n}\nexports.parseAni = parseAni;\n//# sourceMappingURL=parser.js.map","/*\r\n * Copyright (c) 2017-2019 Rafael da Silva Rocha.\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining\r\n * a copy of this software and associated documentation files (the\r\n * \"Software\"), to deal in the Software without restriction, including\r\n * without limitation the rights to use, copy, modify, merge, publish,\r\n * distribute, sublicense, and/or sell copies of the Software, and to\r\n * permit persons to whom the Software is furnished to do so, subject to\r\n * the following conditions:\r\n *\r\n * The above copyright notice and this permission notice shall be\r\n * included in all copies or substantial portions of the Software.\r\n *\r\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\n * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r\n * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r\n * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r\n * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n *\r\n */\r\n\r\n/**\r\n * @fileoverview The RIFFFile class.\r\n * @see https://github.com/rochars/riff-file\r\n */\r\n\r\n/** @module riff-file */\r\n\r\nimport {unpackString, unpack} from 'byte-data';\r\n\r\n/**\r\n * A class to perform low-level reading of RIFF/RIFX files.\r\n */\r\nexport class RIFFFile {\r\n\r\n constructor() {\r\n /**\r\n * The container identifier.\r\n * 'RIFF', 'RIFX' and 'RF64' are supported.\r\n * @type {string}\r\n */\r\n this.container = '';\r\n /**\r\n * The main chunk size, in bytes.\r\n * @type {number}\r\n */\r\n this.chunkSize = 0;\r\n /**\r\n * The format identifier.\r\n * @type {string}\r\n */\r\n this.format = '';\r\n /**\r\n * An object representing the signature of all chunks in the file.\r\n * @type {{\r\n chunkId: string,\r\n chunkSize: number,\r\n format: string,\r\n chunkData: {start: number, end: number},\r\n subChunks: Array\r\n }|null}\r\n */\r\n this.signature = null;\r\n /**\r\n * @type {number}\r\n * @protected\r\n */\r\n this.head = 0;\r\n /**\r\n * @type {\r\n {bits: number, be: boolean, signed: boolean, fp: boolean}\r\n }\r\n * @protected\r\n */\r\n this.uInt32 = { bits: 32, be: false, signed: false, fp: false };\r\n /**\r\n * The list of supported containers.\r\n * Any format different from RIFX will be treated as RIFF.\r\n * @type {!Array<string>}\r\n * @protected\r\n */\r\n this.supported_containers = ['RIFF', 'RIFX'];\r\n }\r\n\r\n /**\r\n * Read the signature of the chunks in a RIFF/RIFX file.\r\n * @param {!Uint8Array} buffer The file bytes.\r\n * @protected\r\n */\r\n setSignature(buffer) {\r\n this.head = 0;\r\n this.container = this.readString(buffer, 4);\r\n if (this.supported_containers.indexOf(this.container) === -1) {\r\n throw Error('Not a supported format.');\r\n }\r\n this.uInt32.be = this.container === 'RIFX';\r\n this.chunkSize = this.readUInt32(buffer);\r\n this.format = this.readString(buffer, 4);\r\n // The RIFF file signature\r\n this.signature = {\r\n chunkId: this.container,\r\n chunkSize: this.chunkSize,\r\n format: this.format,\r\n subChunks: this.getSubChunksIndex_(buffer),\r\n chunkData: {start: 0, end: this.chunkSize}\r\n };\r\n }\r\n\r\n /**\r\n * Find a chunk by its fourCC_ in a array of RIFF chunks.\r\n * @param {string} chunkId The chunk fourCC_.\r\n * @param {boolean} multiple True if there may be multiple chunks\r\n * with the same chunkId.\r\n * @return {Object}\r\n * @protected\r\n */\r\n findChunk(chunkId, multiple=false) {\r\n /** @type {!Array|null} */\r\n let chunks = this.signature.subChunks;\r\n /** @type {!Array<!Object>} */\r\n let chunk = [];\r\n for (let i=0; i<chunks.length; i++) {\r\n if (chunks[i].chunkId == chunkId) {\r\n if (multiple) {\r\n chunk.push(chunks[i]);\r\n } else {\r\n return chunks[i];\r\n }\r\n }\r\n }\r\n if (chunkId == 'LIST') {\r\n return chunk.length ? chunk : null;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Read bytes as a string from a RIFF chunk.\r\n * @param {!Uint8Array} bytes The bytes.\r\n * @param {number} maxSize the max size of the string.\r\n * @return {string} The string.\r\n * @protected\r\n */\r\n readString(bytes, maxSize) {\r\n /** @type {string} */\r\n let str = '';\r\n str = unpackString(bytes, this.head, this.head + maxSize);\r\n this.head += maxSize;\r\n return str;\r\n }\r\n\r\n /**\r\n * Read a number from a chunk.\r\n * @param {!Uint8Array} bytes The chunk bytes.\r\n * @return {number} The number.\r\n * @protected\r\n */\r\n readUInt32(bytes) {\r\n /** @type {number} */\r\n let value = unpack(bytes, this.uInt32, this.head);\r\n this.head += 4;\r\n return value;\r\n }\r\n\r\n /**\r\n * Return the sub chunks of a RIFF file.\r\n * @param {!Uint8Array} buffer the RIFF file bytes.\r\n * @return {!Array<Object>} The subchunks of a RIFF/RIFX or LIST chunk.\r\n * @private\r\n */\r\n getSubChunksIndex_(buffer) {\r\n /** @type {!Array<!Object>} */\r\n let chunks = [];\r\n /** @type {number} */\r\n let i = this.head;\r\n while(i <= buffer.length - 8) {\r\n chunks.push(this.getSubChunkIndex_(buffer, i));\r\n i += 8 + chunks[chunks.length - 1].chunkSize;\r\n i = i % 2 ? i + 1 : i;\r\n }\r\n return chunks;\r\n }\r\n\r\n /**\r\n * Return a sub chunk from a RIFF file.\r\n * @param {!Uint8Array} buffer the RIFF file bytes.\r\n * @param {number} index The start index of the chunk.\r\n * @return {!Object} A subchunk of a RIFF/RIFX or LIST chunk.\r\n * @private\r\n */\r\n getSubChunkIndex_(buffer, index) {\r\n /** @type {!Object} */\r\n let chunk = {\r\n chunkId: this.getChunkId_(buffer, index),\r\n chunkSize: this.getChunkSize_(buffer, index),\r\n };\r\n if (chunk.chunkId == 'LIST') {\r\n chunk.format = unpackString(buffer, index + 8, index + 12);\r\n this.head += 4;\r\n chunk.subChunks = this.getSubChunksIndex_(buffer);\r\n } else {\r\n /** @type {number} */\r\n let realChunkSize = chunk.chunkSize % 2 ?\r\n chunk.chunkSize + 1 : chunk.chunkSize;\r\n this.head = index + 8 + realChunkSize;\r\n chunk.chunkData = {\r\n start: index + 8,\r\n end: this.head\r\n };\r\n }\r\n return chunk;\r\n }\r\n\r\n /**\r\n * Return the fourCC_ of a chunk.\r\n * @param {!Uint8Array} buffer the RIFF file bytes.\r\n * @param {number} index The start index of the chunk.\r\n * @return {string} The id of the chunk.\r\n * @private\r\n */\r\n getChunkId_(buffer, index) {\r\n this.head += 4;\r\n return unpackString(buffer, index, index + 4);\r\n }\r\n\r\n /**\r\n * Return the size of a chunk.\r\n * @param {!Uint8Array} buffer the RIFF file bytes.\r\n * @param {number} index The start index of the chunk.\r\n * @return {number} The size of the chunk without the id and size fields.\r\n * @private\r\n */\r\n getChunkSize_(buffer, index) {\r\n this.head += 4;\r\n return unpack(buffer, this.uInt32, index + 4);\r\n }\r\n}\r\n","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./webamp.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./webamp.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./webamp.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#webamp{position:absolute;top:0;left:0}#webamp canvas{-webkit-user-select:none;-moz-user-select:none;user-select:none}#webamp *{box-sizing:content-box;-webkit-box-sizing:content-box}#webamp :focus{outline:0}#webamp input[type=range]{-webkit-appearance:none;margin:0;padding:0;background:none;border:none}#webamp input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;border-radius:0;background:none}#webamp input[type=range]::-moz-range-thumb{border:none;border-radius:0;background:none}#webamp input[type=range]::-moz-range-track{border:none;background:none}#webamp input[type=range]:focus{outline:none}#webamp input[type=range]::-moz-focus-outer{border:0}#webamp a:focus{outline:none}@keyframes blink{0%{opacity:1}50%{opacity:0}to{opacity:1}}@-webkit-keyframes blink{0%{opacity:1}50%{opacity:0}to{opacity:1}}#webamp .character{display:inline-block;vertical-align:top;width:5px;height:6px;text-indent:-9999px}#webamp .window{position:absolute;image-rendering:-moz-crisp-edges;image-rendering:-o-crisp-edges;image-rendering:-webkit-optimize-contrast;image-rendering:pixelated;-ms-interpolation-mode:nearest-neighbor;-webkit-transform:translateZ(0)}#webamp .window.doubled{-moz-transform:translateZ(0) scale(2);-moz-transform-origin:top left;-webkit-transform:translateZ(0) scale(2);-webkit-transform-origin:top left}\", \"\"]);\n\n// exports\n","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./base-skin.css\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./base-skin.css\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--4-1!../../../node_modules/postcss-loader/src/index.js??ref--4-2!./base-skin.css\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \"#webamp #balance{background-image:url(data:image/png;base64,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)}#webamp #balance::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAALBAMAAAC9q6FRAAAAFVBMVEUAAAALDxYvL0RKWmt7hJStvMTa5+opTTwbAAAAMUlEQVQI12NQFAQBIQaxNBBIZGALBYIQAyAtKiqKlwapM2RgcwEBQwZhYxAwZICaBwCdgQ6Jd297uQAAAABJRU5ErkJggg==)}#webamp #balance::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAALBAMAAAC9q6FRAAAAFVBMVEUAAAALDxYvL0RKWmt7hJStvMTa5+opTTwbAAAAMUlEQVQI12NQFAQBIQaxNBBIZGALBYIQAyAtKiqKlwapM2RgcwEBQwZhYxAwZICaBwCdgQ6Jd297uQAAAABJRU5ErkJggg==)}#webamp #balance:active::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAALBAMAAAC9q6FRAAAAFVBMVEUAAAALDxYZICovL0RKWmva5+r///+U4Y9MAAAAMUlEQVQI12MwFAQBYQbRUBAQZGBlAAIWBiQ6ISEBKw2SV4TTIi4gIMhgJKQopCgoDAB2aAh/NddRQgAAAABJRU5ErkJggg==)}#webamp #balance:active::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAALBAMAAAC9q6FRAAAAFVBMVEUAAAALDxYZICovL0RKWmva5+r///+U4Y9MAAAAMUlEQVQI12MwFAQBYQbRUBAQZGBlAAIWBiQ6ISEBKw2SV4TTIi4gIMhgJKQopCgoDAB2aAh/NddRQgAAAABJRU5ErkJggg==)}#webamp .actions #previous{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAASCAMAAACHObUhAAAASFBMVEUfHzEgHzIgIDMhITQiITMiITQiIjUjIzYjJDgkIzckIzgkJDklJTolJjsmJTsmJjtKWmtSY3N7hJSElKWXqLmttca9ztbv//8qmLzOAAAAcklEQVQY022QMQ7DMAwDj7KQvqD/f2UXD2YGN43cWAuNo0wI1JvNjE8SGzwiwf/Ywwr2k1M6HFMPwDgvvxnoU2DN6fl7xh7X/YJx4a/yte67FaPmV2O5pxi5ZN/Gt5+rI998DD/ridxiLAQiHBKEJYGaT1TOJE+BDpf2AAAAAElFTkSuQmCC)}#webamp .actions #previous:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAASBAMAAABCyVggAAAAElBMVEUICBBKWmtSa3Nje4R7jJytvcYAUCbCAAAAS0lEQVQI12NgwA1MXKDACMhxDYWCEBAHJuOChcPAAsQwDmOIi4MoEocRieMgiMRhROYEInNckTkugcgcVzgnNASIwRxTZOcoIHwDAI4lI4lOrG7eAAAAAElFTkSuQmCC)}#webamp .actions #play{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAASCAMAAACHObUhAAAARVBMVEUmJTsmJTwnJz0nKD4oJz4oKD8pKUAqKUEqKUIqKkMrK0QrLEQsK0MsK0QsK0ZKWmtSY3N7hJSElKWXqLmttca9ztbv//93JWkaAAAAcElEQVQY022QQQ7FIAhEHzJpL/Dvf8y/MBG70VZbYEPeAIGxH0nEX5QEB4L+xj26CnkMXus2QJv92hXXrETluHnT07MqrnV6UbSfcY6rY+N+/1KUUTBl9Nl/vtxow5+PRyKif+1xpZhmmIEZMxFh+AXgtiNLLYv6agAAAABJRU5ErkJggg==)}#webamp .actions #play:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAASBAMAAABCyVggAAAAElBMVEUICBBKWmtSa3Nje4R7jJytvcYAUCbCAAAARUlEQVQI12NgwA1MXKDACMhxDYWCEBAHJuOChcOAzGFkQOYIMiBzwDw4B8RDcEKROKFIykKRDAhFMjoUbqkpsnMUEL4BAGRUIvLymjxCAAAAAElFTkSuQmCC)}#webamp .actions #pause{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAASCAMAAACHObUhAAAARVBMVEUsLEUsLEYtLUctLkguLUguLkkvL0ovMEswL0swL0wwMEsxMU0xMU4xMk0yMU5KWmtSY3N7hJSElKWXqLmttca9ztbv//90IK75AAAAY0lEQVQYGW3BwQ3DQAwDwRVPsBtI/3UGfpCBDfiT00x9GPjbiI2dhvAnjsSsuV3AARdwAMHNo1kBmhVuEjMxEyOLkcRMzMRIze3kcfJyQyA8wqsaO2zSdtitogqqqEoJIgTLP/lyHlITiB2JAAAAAElFTkSuQmCC)}#webamp .actions #pause:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAASBAMAAABCyVggAAAAElBMVEUICBBKWmtSa3Nje4R7jJytvcYAUCbCAAAAOUlEQVQI12NgwA1MXKDACMhxDYWCEBAHJuOCyXFgYAEyYBzBEBdGUdpzXENDXEJDwRxTZOcoIHwDAEquItl9JSARAAAAAElFTkSuQmCC)}#webamp .actions #stop{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAASCAMAAACHObUhAAAAP1BMVEUyMU4yMk8zM1AzNFE0M1E0M1I0NFE0NFM1NVQ1NlQ2NVM2NVQ2NlVKWmtSY3N7hJSElKWXqLmttca9ztbv//8mgTHJAAAAXElEQVQYGW3BQQ7DMAwDwRUttPf+/6FFD2SBBLnYmqkPA38bcbBpCJs4ErPm8uPxAgLNrbmtcBGjiFHETIyWGFmMIkarubzZNAQIm8YOB7cdTqsooERWkEXJheoPfCIcRKB1vkQAAAAASUVORK5CYII=)}#webamp .actions #stop:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAASBAMAAABCyVggAAAAElBMVEUICBBKWmtSa3Nje4R7jJytvcYAUCbCAAAAMklEQVQI12NgwA1MXKDACMhxDYWCEBAHJuOChQPWC+MwCgoKitKBA3YamGOK7BwFhG8A34IfFkPmwnYAAAAASUVORK5CYII=)}#webamp .actions #next{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAASBAMAAABCyVggAAAALVBMVEUICBA2NlU2NlY3N1c4N1g4OFk4OFpKWmtSY3N7hJSElKWXqLmttca9ztbv//8TuYuxAAAAaUlEQVQI12M4AwenDjCcewcDJ4Ccu1BwZzkmp/zu3evld+9MB3Oqa+9e3wfnbEfm7K5F5mxH5uxD5rxF4uxDNuAtEufd3bv33kE4cFcDOWdWzoSC6QkMK8rhgIFB0MjY2NjFxSU0NJQBAK7vnSRnYMknAAAAAElFTkSuQmCC)}#webamp .actions #next:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAElBMVEUICBBKWmtSa3Nje4R7jJytvcYAUCbCAAAATElEQVQI12NgwAVMXCDAWYGBwTUUChyAbKi4CyabAcSAshlZXBxEYWwBJLYgCxJbAIktisQOQbBFkfSGINihLi6uoSC2KZIbFOCuBwDE5iIH3QcLbQAAAABJRU5ErkJggg==)}#webamp #eject{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAQBAMAAADgw5IVAAAAIVBMVEU4OFk4OFo5OVpKWmtSY3N7hJSElKWXqLmttca9ztbv//8Mnk1wAAAAVUlEQVQI12PogIM2hq5VMNDC0DUTCmYEQ9iWCPbkYgTbvNwSxp5cXl4MY5uXlwMlwOxZYBPh5sDNnGwMAlA2UHl5FYZ6uNuCGTpSQ6EgmEGISQkKmAB+iFckwoyJQwAAAABJRU5ErkJggg==)}#webamp #eject:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAQBAMAAADgw5IVAAAAElBMVEUICBBKWmtSa3Nje4R7jJytvcYAUCbCAAAATUlEQVQI12NgwAVMXCDAWYGBwTUUChyAbJAgCxBD2Q4CCDajIAuM7SAoKABjMwoKAiXAbIhJMPVgAGY7gO2EsoHKBUXR1ZsiqVeAuxIAu8seNVNafDwAAAAASUVORK5CYII=)}#webamp #main-window{background-image:url(data:image/png;base64,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)}#webamp .media-info #stereo,#webamp .stop .media-info #stereo.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAMCAMAAACpx0YDAAAAk1BMVEUlJTklJTolJjsmJTsmJjsnJz0nJz4oJz4oKD8pKUApKkEqKUEqKUIqKkEqKkIrK0MrK0QsK0QsLEUtLUYtLUguLUcuLUguLkcvL0U8PFNDQ1hJSWFQUGNaWm9lZXZpaXpvcH5wcX9xcYF3d4Z5eYh8e4x+fpCBgY+Dg5KKipaLi5mMi5mRkZ2bmqaioqypqbKqqrTexa8FAAAAvUlEQVQYGQXBQW4aURAFwOrPIJCjEY5Hytq73P9giCj2YBTy+7mqfkUTiURmtUiqRY8eJBJRFAGULIemEipBQySka0xQL+9Bz4FEwbBUj9PP+ffF22P1cXbc1+fnsv7br5ExRr9mz911M99Op+d2P1+22/yRitHttr9eUPP5cH+w/3ftQ4cFx9VX93a7nD+ObufVn/nbdSRqk4qWSCfERHS1USq6ggwkKTCMLBERpCuoVAQdYyAl4dASNJjKN1/Kh0LDHtt2AAAAAElFTkSuQmCC)}#webamp .media-info #stereo.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAMCAMAAACpx0YDAAABXFBMVEUA/wAD+AQG7gkG8QkH4wwI6A0K2g8K3xAL2xIL4hIM2RMN2BUN3RUOxRYO1RUQ0xkSxh0SzBwS0RwTuR0VvCEVxSEapCkbnyscrSwfczAgpzIhkzQinDUlJTklJTolJjslJzklKDolLjslkzomJjsmKTsmKzsmLDomMjsmMjwmNjsmOjsmRjsmWjwmdzsmiDwnJz0nKT0nLT0nNT0nOj0nQjwnTj0nYj0oKz4oLT8oND4oOT8oRz4oSz4oZT8pL0ApO0ApTEApTkApZkApZ0EqMEIqMkMqPEEqTEMqT0IqUEIqZUIqZkMqa0IrLkIrL0UrNEQrPEQrPUQrQEMrSkUrYkQrfUQsMUQsNkUsQkQsS0MsTkYsVEQsWEUsYEYsZ0UtLkUtLkctL0gtMEYtM0YtM0gtNEgtNUctNkctOUYtP0YtQkctR0YtS0Yti0cuLUguLkcuMUcuM0cuN0c2LFEQAAABDklEQVQYGQXBvVHDQBCA0W/3TrJkBBhmPAQkBATUQA+0QEROT9RBwtADCQQkDMaBLIOk8+nnlvfkUfYq0HKgtzIMMIBBxNpR/+Qsy+pcxLnj46iFiKrquJeuw/xp51QvayeuxkSikk+YHuFmxLdetRH//HXnCIuoxiSxpzS1hFfRlw+/DrxWO1YdqdgXV9vd4mrZmWgl9UdaUnD/LX4bo9ue9O8/N/lnkFG0g+tquwGSy5dUR1BlABio2fmmoVzL00XfZMluV027WL3tK8DkIWtUJRBMJGCMQKQve5vT4C2tRDd5LSaS2wEDcjqz2cbZM0l7Nh/KHiPCCERIKfjR8EmnEApqAGMASDD9uiHBP3bmjPqWVRjwAAAAAElFTkSuQmCC)}#webamp .media-info #mono,#webamp .stop .media-info #mono.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAMCAMAAACk2TZEAAAAclBMVEUtLUguLkcuLkgvL0ovMEswL0swMEsxMU0xMU4xMk0xMk4yMU4yMk8zM1AzNFE0M1E0M1I0NFE0NFI0NVM3N1E8PFNJSWFQUGdSUmtaWm9gYHZuboJ2dol8e4x+fpCGhpeOjp2VlaOdnaqlpbKsrLetrbnuzsEEAAAAp0lEQVQYGQXBQU4bURQEwOrvkcA4iRS4/+VYwI6VEyTPzGuq8ppyrjHKIVPQsSnnGpReZkQnQzfImKJUU8saWUEWQZyV0g7dqs6X349tf7qfN3uf6t/N/imLDL7WY1/Xx8d1m/+X6+P9+U1XSADNH8Xkr9aqmTW7fY5+r9v9OHp859f9i7z2vJwZpUdUjWpqSZQytlYJUrOpWaR1FhhgbcLQRiEFTH4AmtR0pKKbMGAAAAAASUVORK5CYII=)}#webamp .media-info #mono.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAMCAMAAACk2TZEAAABJlBMVEUA/wAD9wUG8QkI6A0J5g4L4hIM2RMM3xMN2BUN3RUP2hgQ0xkSzBwS0RwVvCEVxSEWySIZwicZwigcrSwgpzIhkzQkpzkmdzsmiDwnmD0olD8qa0IrfUQtL0gtMUgtQkcti0cuLkcuMEguMUcuNkguOkkuR0ovL0ovMEsvM0ovNEkvNEovNkovOkovPUovUUkvXEovZkswMEswM0swNUswNkwwP0swQkowTEswT0swUEwwVkswZkswaksxNU0xN04xP04xRE0xZk4xbk0yNU8yNk4yNlAyOE8yQ00yTk4yU04yVk4yY04yaU8ybE8yek4zNFEzOVEzPVAzQ1EzRlEzTFEzU1AzXlE0M1E0NFE0NFI0NVM0NlE0NlI0OlE0PlI0QVI0RlJbMtAUAAAA50lEQVQYGQXBTW7CMBCA0W9mrJKEAKr4WXXTu3TXG3Dc7nuOIiohKLHjGJzpe3IUreZ6BxJkIIHjnlxxbDBVs7EXaVV1u1UtpehDAdloNB3Xo6p1XbF7CN2kj0YFEYmasmUz05yb3KjmfW5LcBnEvk7L1N8P4UwvN+HwS/c+iqIrAT68XTyvq7frZNt6W33+nUAFHADAHAyw+ZsA6tXx0AxtaHTz/Nm9dGGxqef9bkKOntdRUh8BIFGIOD42KSBLn6WtFQAWN7zBL68plYDXQVwYASABGTy6h4DMOHEOyATMOHWmJh7hH8HfcsJFco7ZAAAAAElFTkSuQmCC)}#webamp #time #minus-sign{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAYAAAAW/mTzAAAAF0lEQVQYV2OUUNT8/+L+dQYJRU0GGA0AVz4HY4h207oAAAAASUVORK5CYII=)}#webamp #time.countdown #minus-sign{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAABCAYAAAAW/mTzAAAAEElEQVQYV2Nk+MHwnwENAAAjgQH5sdp7TQAAAABJRU5ErkJggg==)}#webamp .digit-0{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAANAgMAAAAGbqyVAAAACVBMVEUAAAAA+AAYISknP40bAAAAFklEQVQI12OYGtrA4ACEHh0ORNFA9QAiPQsl393R7gAAAABJRU5ErkJggg==)}#webamp .digit-1{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAANAgMAAAAGbqyVAAAACVBMVEUAAAAA+AAYISknP40bAAAAE0lEQVQI12PsYNjBwMDgwEgCDQAItwpIh/66WgAAAABJRU5ErkJggg==)}#webamp .digit-2{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAANAgMAAAAGbqyVAAAACVBMVEUAAAAA+AAYISknP40bAAAAH0lEQVQI12OYGtrAwMDgwNDR4YBCg8RBLI8OVBooDgAebgr//9NFIgAAAABJRU5ErkJggg==)}#webamp .digit-3{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAANAgMAAAAGbqyVAAAACVBMVEUAAAAA+AAYISknP40bAAAAGElEQVQI12OYGtrAwMDgwNDR4YBC4xEHAB3uCv9NUBWtAAAAAElFTkSuQmCC)}#webamp .digit-4{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAANAgMAAAAGbqyVAAAACVBMVEUAAAAA+AAYISknP40bAAAAGklEQVQI12Pw6HBgAEF0emqoAwMDkO7owKABD8wKi451feQAAAAASUVORK5CYII=)}#webamp .digit-5{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAANAgMAAAAGbqyVAAAACVBMVEUAAAAA+AAYISknP40bAAAAIElEQVQI12OYGtrA4MDAwODRgUqDxBmArI4OBxQaKA4AHm4K/5vyk78AAAAASUVORK5CYII=)}#webamp .digit-6{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAANAgMAAAAGbqyVAAAACVBMVEUAAAAA+AAYISknP40bAAAAH0lEQVQI12OYGtrA4MDAwODRgUqHgsUdgHwHFBqoHgAbbgr/DdfRzgAAAABJRU5ErkJggg==)}#webamp .digit-7{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAANAgMAAAAGbqyVAAAACVBMVEUAAAAA+AAYISknP40bAAAAFklEQVQI12MMZdBmYGBwYOxg2EEsDQDjggmI1L+I9wAAAABJRU5ErkJggg==)}#webamp .digit-8{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAANAgMAAAAGbqyVAAAACVBMVEUAAAAA+AAYISknP40bAAAAFklEQVQI12OYGtrA4ACEHh0OKDQecQArbgt/wD0r9gAAAABJRU5ErkJggg==)}#webamp .digit-9{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAANAgMAAAAGbqyVAAAACVBMVEUAAAAA+AAYISknP40bAAAAIUlEQVQI12OYGtrA4ACEHh0OKPTUUAcGBiDd0YFKA9UDACFuCv9mR03UAAAAAElFTkSuQmCC)}#webamp .play #play-pause{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAgMAAACd/+6DAAAACVBMVEUAAAAA6AAYISlH3xqZAAAAH0lEQVQI12Po8GhgYAhgYOgIAdKhQDrUAUKHQMU9GgCL+gfA1jUO8AAAAABJRU5ErkJggg==)}#webamp .pause #play-pause{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAgMAAACd/+6DAAAACVBMVEUAAAAA6AAYISlH3xqZAAAAGklEQVQI12Po6GhgAIGQVgeGEFYHFBoEgPIAiaIHnsCfw8kAAAAASUVORK5CYII=)}#webamp .stop #play-pause{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJAgMAAACd/+6DAAAACVBMVEUAAAAA6AAYISlH3xqZAAAAGUlEQVQI12Po6GhgAIHWkAYG1hBUGgSA8gCN1wfe41RVhgAAAABJRU5ErkJggg==)}#webamp #work-indicator{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAFVBMVEUAAAAAAAAA6AARQDMYISlODwD/KDN/MQZsAAAAAXRSTlMAQObYZgAAAB9JREFUCNdjUFI2ZmBgQCYFBQWBpKOLCJwdGpaGSgIAfI8Fm6vX5/8AAAAASUVORK5CYII=)}#webamp #work-indicator.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAD1BMVEUAAAAAAAARQDMYISn/KDPWqFE6AAAAAXRSTlMAQObYZgAAABpJREFUCNdjUFJgAAJkUlAARBoaINguDmgkAEabAvbVxDW5AAAAAElFTkSuQmCC)}#webamp .playlist-top-left-fill,#webamp .playlist-top-left-spacer,#webamp .playlist-top-right-fill,#webamp .playlist-top-right-spacer{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAAWUlEQVRIS2PU1nL+z0BjwFhRPoH2ltjZJAwTS+TllWjvk7ZyX9pb0jeRDhFvYqBDe5+kxzjR3hK6xImKqibtfUKXzEiXsosulowWkKRUQYx0SV10sYQeqQsAf0Ul/5LwY0QAAAAASUVORK5CYII=)}#webamp .playlist-top-left{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAMAAABPqWaPAAAA/FBMVEUdHS0dHS4eHi8fHyIfHzAfHzIgHzIgITMhITQiITQiIjUjIzYkIzckIzgkJDckJDkkJSklJTomJTsmJjsmJjwnJz0oJz4oKD8pKUApKUEqKUEqKkEqKkIrKUIrKkMrK0QsK0MsK0QsLEMsLEUtLUYuLUcuLUguLkcuLkkvL0owMEsxMEwyMU0yMU4yMk8zM1A0MCw0MlA0NFE1NFM2NVM2NVQ2NlU3NVY3N1Y4N1c4N1g4OFg5OFk6OVo7Olw8O109O149PF9FQTtnXEJqanpra3xsbHxsbH1tbX9uboFwb4NxcYZzcoh0c4p0dIp1dYx4do54d5CGd02OkZDLe86vAAAAvUlEQVQYGQXBMUodUBQFwDnnXdMq2LuWQFy/nYVFQAIu47+bmSDSpFFtmyRp452oiIhIIjJ8Nr/2nD1Nc5ppJS3idhVqIRii93wDABiC79/PAACDdbwAABju8fAXAMBg7/EKAGBYu/YFAGAg9+0DAMDgNo/XSdLm5JxW0sH+JE2TJm1a9aQI2NiSYD0Mlj9JEiKSkAzY/XrKnPQkpydJUoDrXnvFQlIAu67aLVDAfbAgu4k1gHX/pZ2cJKme/xmiNhnfUYYUAAAAAElFTkSuQmCC)}#webamp .playlist-top-title{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAUCAMAAABMHminAAABd1BMVEUdHS0dHS4eHS4eHi8fHyIfHzAfHzIgHzIgITMhITQiITQiIjUjIzYkIzckIzgkJDkkJSklJTomJTsmJjsmJjwnJz0oJz4oKD8pJ0ApKUApKUEpKkEqKUEqKkEqKkIrKUIrKkMrK0QrLEQsK0MsK0QsLEUtLUYtLkctLkguLUcuLUguLkcuLkkvL0ovMEsvMSUwL0swMEsxMEwyMU0yMU4yMk8zM1A0MCw0MlA0M1E0NFE1NFM2NVM2NVQ2Nk82NlU3NVY3N1Y4N1c4N1g4OFg5OFM5OFk6OVo7Olo7Olw8O109O149O2A9PFs9PF89PGA+PGBAQFhCQV9FQTtIR2ZMTGFVVG1WVmNbWnZfYGpgX3dlZXdlZnRnXEJnaHZoaHhpaXtqanpraoBra3xsbHxsbH1tbX9uboFwb4NxcYZzcohzc4p0c4p0dIp1dYZ1dYx4do54d5B5eIl9fY6FhJSGd02LjJqOkZCQj6CXlqeioq+srbettMQFH6KtAAADiklEQVQYGQXBTa8VVhkG0PW8+1zuRYuN4gfgpV4q3PpRNTFGw8Q4MlaJsUPjr/D3OHJgjANnNR2hxA6MNW00mKJAC0YSSZu2SkmBnrP361o5gsY09UL3Ymrd3bq7073obgAQSoUYJJKoqIgoY0DYvAgaaFbr1tA0mrawAABKQghBEIkBQXTY3AG7mrpZbfYylzVr123ZrWx199TLWsBYo6vYJEYqoySxFzV6qEqhGIUCGmKJXlqoKRoaWbozWwKzDYvVDYDRmFmAAGTDFVZtdbN69WQuvey6Lbu1stOzrc4uC1ClspkjGTGGSmKjkhpJRUnsbfdeYvNz9399xXze354/8dqFT7z+rfGnb9fNunTr3/393H3Djzz53Qsn/ea7h6x//Hnxs32eXL14fPeVTD8++ejlH+7fvPXC9vc/2P5Bff7SuzeOT5tv1UXsro+XfnpGVZ1DPqqTJzz99AOQI8zz6bPB/pcOSLv5cj1rwC9v738F9Djog/VqX7ycN8PQ+Nzp7Y23//f+a++5fV2cq9pc85iu/1w44my9B+yfpc6s7f7pd8xxyXavpxMXbWvC5T0LJd/MvcNv/P3uhU/d/1dYo8Hel7cPPwDaNer4+OvEEwe7+XHvB+aTp3Dqow99Ju733mMW559555UZ+MKZu3/E0odz69Bfp9ehFN6+M+0dLcHg+Ph4c8Zb8GiOD058bAuLf34tzmc85dwNHp+8d6R481WrFvyKcPo7/nKwDvsgWYMYz3iAz5697Tk05p4Pn7X5hYdXiAeffNcXH2qK/9694OyTa763/2nuXbx+JBu6uxZgcOqU+G0uH371DWh1yS08Gs+ZtwtYV65elZ8AW61ZbfYyl6V3utc0s9U9Wy89QWpupMgoNoY9STKSUpWNFAmbLnIENHNaTbduk2XRemltsRoARFEiBokkKpJEijEgFOgGQNC0poGGBQBIWokINAgJLABsXgQ0DaZumoamad1YAEChCCEIIWFAkA6bO2CZui169uq1dPeu25q92k6bbWXtohlzswbJJjJkZCTJiCqjYkRJ2IMC5gTFAugpFhB2pa01emCOXVplQ0iNClAMelDAahTYjQHoDkEIMaJmM2Z3d7cFU2CubtoEWExMAAkKbOYEizRTLLSYbQ0SCd0WkvRCNVitgVAI0OwgR9CYJqvp7ja17tZtac3S3QCQiJJIIpLEEBWkjAHh/7B25tuthDwsAAAAAElFTkSuQmCC)}#webamp .playlist-top-right{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAMAAABPqWaPAAABNVBMVEULDxYMDAwOFQsUFBQdHS0dHS4eHS4eHi8fEQofHyIfHzAfHzIgHzIhITQhIjQiITQiIjUjIzYkIzckIzgkJDklJTomJjsmJjwnJz0oJz4oKD8pKUApKUEpKkEqKUEqKkEqKkIrKUIrKkMrK0QsK0QsLEUtLUYtLkguLUcuLUguLkcuLkkvL0ovMSUwL0swMEsxMEwyMU0yMU4yMk0yMk8zM1A0LhA0MlA0NFE1NFM2NVM2NVQ2NlU3NVY3N1Y4N1c4OFg5OFk5OVc6OVo7Olo7Olw8O109O149PFs9PF89PGA+PGBFQTtGQh9ORDBQPx5YVjxnXEJqanpra3xsbHxsbH1tbX9uboFwTyxwb4NxcYZzcohzk5p0c4p0dIp1dYx4do54d5B4h4yGd02LjJqNcTiOkZC/uXdbAAABJElEQVQYGQXBsWpTYRyH4ff7cig5a8FCKAge2slNqFvoBai4e5d26h0UrCnYpaCSrbV2cA0k5/97fZ42WYVR1ZCgZWC4REGDSEAVuRpeUoayyiqddU6IdIGeDkCHBQFgpo2s1dXR/mj/66BvHm/h4vSunocv/67XrpYsWb69L5yAadsaw+IV8hMAAl8/Tbtxe/tahhtAAKAXuBt30KCfnUEHAAL8HXcnQKcfH2huAPje4fO0/fNjujC0kbXMNwds75ydHr/B+9NNntuHlJZWYpWpOcb4NDxYpUTVSAzzx03RoQECIAQomGG4RESDSFCuABheUv2AVTFV2ScamnRCNYiYKAsUhA5g0pqNRpgVADq01gCaxNIgAMODVZJz+F2WWisA+A8o2vB09xIFIgAAAABJRU5ErkJggg==)}#webamp .selected .playlist-top-left-fill,#webamp .selected .playlist-top-left-spacer,#webamp .selected .playlist-top-right-fill,#webamp .selected .playlist-top-right-spacer{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAAWklEQVRIS2PU1nL+z0BjwFhRPoH2ltjZJAwTS+TkVWnvkzfnqmhvyf///2lviaujNe0tWTcplfaW0CVOVFQ1ae8TumRGupRddLFktIAkpQpipEvqoosl9EhdAAvFKfTd8tQbAAAAAElFTkSuQmCC)}#webamp .selected .playlist-top-left{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAMAAABPqWaPAAAA/FBMVEUdHS0dHS4eHi8eHyUfHzAfHzIgHzIgITMhITQiITQiIjUjIzYkIzckIzgkJDckJDkkJSklJTomJTsmJjsmJjwnJz0oJz4oKD8pKUApKUEqKUEqKkEqKkIrKUIrKkMrK0QsK0MsK0QsLEMsLEUtLUYuLUcuLUguLkcuLkkvL0owMEsxMEwyMU0yMU4yMk8zM1A0MlA0NFE1NFM2NVM2NVQ2NlU3NVY3N1Y4N1c4N1g4OFg5OFk6OVo7Olw8O109O149PF9FQTtqanpra3xsbHxsbH1tbX9uboFwb4NxcYZzbFJzcoh0c4p0dIp1dYx4do54d5CukmXsznr///9ua7yBAAAAvklEQVQYGQXBsU0dQBAFwHnvFsshErl7MQVQtlsgIEGWSMkd/FvPBJEmjWrbJEkbr0RFRFQSkeG9+bHn7GmaNtNKWsTtKsRCMETv+QQAMASfbwEAGKyjAACGezx8AwAY7D2eAQAMa9e/nwAAA7m//gAAGNzm8TJJ2jTntJIO9itpmjRp06onRcDGlgTrYbD8TpIQlYRkwO7HU+akTU5PkqQA1712xUJSALuu2C1QwH2wILuJNYB1/6adnCSpnv/+0TYBQOmyqAAAAABJRU5ErkJggg==)}#webamp .selected .playlist-top-title{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAUCAMAAABMHminAAABd1BMVEUdHS0dHS4eHS4eHi8eHyUfHzAfHzIgHzIgITMhITQiITQiIjUjIzYkIzckIzgkJDkkJSklJTomJTsmJjsmJjwnJz0oJz4oKD8pJ0ApKUApKUEpKkEqKUEqKkEqKkIrKUIrKkMrK0QrLEQsK0MsK0QsLEUtLUYtLkctLkguLUcuLUguLkcuLkkvL0ovMEswL0swMEsxMEwyMU0yMU4yMk8zM1A0MlA0M1E0NFE1NFM2NVM2NVQ2NlU3NVY3N1Y4N1c4N1g4OE44OFg5OFM5OFk6OVo7Olw8O109O149O2A9PF89PGA+PGA/QitAQFhCQV9FQTtIR2ZMTGFVVG1WVmNbWnZgX3djY3BlZXdlZnRqanpraoBra3xsbHxsbH1tbX9uboFwb4NxcYZzbFJzcohzc4p0c4p0dIp1dYZ1dYx4do54d5B9fY6FhJSLjJqQj6CXlqeioq+srbettMSukmW8u8XHx83KydLW1tzk5Ojsznry8vT////NCpc8AAADfklEQVQYGQXBS6tfBxUH0PXb5+Q+Y2oFI5ZoknpLiU8cCELopANJG+M38Ds48nM4ciw4cVJ0INhBK5T6KPVRChVFIzHUB4IQvYbEe+//7O1auQGDzWYaM81mzMyYmclMMzMAIJQKsZBIoqIioiwLhPUuGGDoMaNhGAyj0QAAJSGEICiJBYKYsD4EW9oMM3bTunVnm9G2zoWZ2UzrBpZepoo1saRSJYk1qmaxVIKiCgUMxIhpI6TFwCBtJttIYBuLpmcAUINOAwKQlTt07cww073Rbdo2o23d2Zlt9GSXBlSprNuSLLGUSmJRSZZURSTW3fo667edf+eO/pL3vrj/7mf3f/OVS29/df3Dwc0H9+dry3/eds/Zj1858oN7V9j+9Ivmm3uc/+rqC6c/yuYbR09+cnf//u9f3b3x6sWb6vmbj3/95eNcPLj8HC7er9e/taeqDpDz5XjftYMzkOfR15c5CPZvHRLu/3y5aYHv/XXvC2CWwzns387Nl+vPoQyeu3z+u6ePPnz3sb+/Lw6q1g9sTM4Ob/DMegpm/yq5ttv2P/XQbj1xvjdcPbTVBrevaJS8lNMrt985feb4vw/CZMD+586e/TcwPqBOTl4k/ubwYnc8HwZ2Z8c4ON+5Hk9n7ynN0ccfv7cFrh+c/hBtnt21j3pz5y2Iwj8eXdi/PqA4OTlZ9/wTnu7Ws6zn0Pzx83F9ucQBnh49uaL4yy91NXyflPX2vHO4Hc1h0oi84DE+uX/fLUCvHn3C+l2P7xD/u3zq+MJQ/OvRx1w7+6mX9z/Nk8O37glmphqwtKPPOPRaXvnISz+Dsd70AGfLLRf3A/Sd18jXgZ0xzNhN69ZmM9Nty4WZbUybDaS2VYosxWqxSpJKSiqXJCQsU+QGMGybHmbM2GjNmDZG0wMAoigRC4kkKpJEimWBUGAGAMEwhgEGGgCQjBIRGBASaACsdwHDgM0MzcAwjBk0AFAoQghCkbBAkAnrQ9DajGF20zNtZrYZ3dNjZ2yj07sYlm3thWSNLLKkkqSiSlWsEQkrFNANQgNMiwbCrozuZRZsyy6jshJSlQBFMSsBelBgqwJMF0EIUVHbsGwzMzMaNoGtZxgN0DR2ABIUWLrBUE2LxogevZBImNFIMo0a0GOAEBQwbJAbMNhs9DAzYzNmxow2hjYzAJCIkkgiksQiKkhZFgj/B6KI5O4cXV8dAAAAAElFTkSuQmCC)}#webamp .selected .playlist-top-right{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAMAAABPqWaPAAABI1BMVEUdHS0dHS4eHS4eHi8eHyUfHzAfHzIgHzIhITQhIjQiITQiIjUjIzYkIzckIzgkJDklJTomJjsmJjwnJz0oJz4oKD8pKUApKUEpKkEqKUEqKkEqKkIrKUIrKkMrK0QsK0QsLEUtLUYtLkguLUcuLUguLkcuLkkvL0owL0swMEsxMEwyMU0yMU4yMk0yMk8zM1A0LhA0MlA0NFE1NFM2NVM2NVQ2NlU3NVY3N1Y4N1c4OFg4QlY5OFk5OVc6OVo7Olo7Olw8O109O149PFs9PF89PGA+PGA/QitFQTtYVjxnXEJqanpra3xsbHxsbH1tbX9uboFwb4NxcYZzbFJzcoh0c4p0dIp1dYx4do54d5CNcTisrbeukmWwmV7O4tDsznr////5EmU+AAABC0lEQVQYGQXBMUpcYRiG0ef7708qu4mgxYCFVdbgtIGsIesLZAOuQ0GIlfXFMEMgTOXc7308p/Z2Y1Q1JGgMzAcUVIIIqsjjPKUNm912a+uWEBkCIwsAAwYBYKMmB3UP8Oeid65wW8/9Pn/274P7BeDbS+PXsnbHKmZN5B8ABNba9XJalbkCWgCOBvvLhxTMa2BggQSo5WMpGMzlTMUS+D+a293J2vk3zF8crPMVwBmt4wqWUN/T2rETu022GOM6X+1Womokhv7x1AwoQACEAIEN5gMiKkFEeQRgntLjglvHdOeSaCgZhC6ImCgLCsIAMF1lUcimADCgqgBKYmsQgPlqt8R73tpWcwMAn2oG882E0Lr4AAAAAElFTkSuQmCC)}#webamp .playlist-middle-left{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAdAgMAAADjkWVKAAAADFBMVEUAAAAdHS0pKUBqano8VvpZAAAAD0lEQVQI12OoilvCQGcMALzxKw1EtyFgAAAAAElFTkSuQmCC)}#webamp .playlist-middle-right{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAdAgMAAADX6KRWAAAADFBMVEUAAAAdHS0pKUBqano8VvpZAAAAEklEQVQI12OwmrXq1UuGIUICAIEjYC7HaOXEAAAAAElFTkSuQmCC)}#webamp .playlist-scrollbar-handle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAASBAMAAACUbIJFAAAAG1BMVEUJAgJ1XCKNcTibgkmwmV6+sX3aypzy8vT06sbDyd/kAAAAKElEQVQI12NIAwKGJCWlAoakiHYHhqRGD/KJimYHhnQXFwEGBQYGBgB4dhfwKIryTQAAAABJRU5ErkJggg==)}#webamp .playlist-middle-right:active .playlist-scrollbar-handle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAASBAMAAACUbIJFAAAAGFBMVEUgDABsURh1XCKNcTihhkuwmV7DrnXaypzxKekLAAAAKklEQVQI12MIDQ0NYAgUFCxgCHRLN2AITDQjnyhLMmAINzYWYFBgYGAAAIGKEsehmtv8AAAAAElFTkSuQmCC)}#webamp .playlist-bottom{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAmAgMAAABMq9iIAAAACVBMVEUnJz04OFh0dIo98+79AAAAGUlEQVQY02NYBQYNDKFg4DDiaHSAKzygAADHT1L3iexI4AAAAABJRU5ErkJggg==)}#webamp .playlist-bottom-left{background-image:url(data:image/png;base64,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)}#webamp .playlist-bottom-right{background-image:url(data:image/png;base64,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)}#webamp .playlist-visualizer{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAAmBAMAAAB+CntdAAAAIVBMVEUAAAAAAAwAABAACCEAa7UYGCkZGSMnJz04OFhjnPd0dIrCNSsmAAAAW0lEQVQ4y2NYRQxYwNBBDGgYDsrKiQELGIgCCxhYiQFEm8aiSpRpTMSZxkmcaYxEus2MmqaNum0Yuk1FU0VTRFPF0sQSOwZBovNCFXEFF1HZuYBYZQNSWhLnNgDqVFE4O/Zo0wAAAABJRU5ErkJggg==)}#webamp #playlist-window-shade{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAOAgMAAACnVF/TAAAADFBMVEUAAAAdHS0pKUBqano8VvpZAAAAHUlEQVQI12MIBQMHhv9gcIBhFRg0MFALwMyD2gMAcRoULw29bBMAAAAASUVORK5CYII=)}#webamp #playlist-window-shade .left{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAOAgMAAACnVF/TAAAADFBMVEUAAAAdHS0pKUBqano8VvpZAAAAIklEQVQI12MIBQMHhvr/IHCAoWoVCDQwVDFAAMU01DyoPQAU7xeZEgCs6QAAAABJRU5ErkJggg==)}#webamp #playlist-window-shade .right{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAOCAMAAABaWb9VAAAANlBMVEUAAAALDxYMDAwdHS0fEQopKUA0LhBGQh9ORDBQPx5YVjxnXEJqanpwTyxzk5p5ip6NcTiOkZBJ6prXAAAAbUlEQVQoz6XSORaAIAxFUQjyFTEO+9+sBI82ajT6KgpukYAL5txgLbhoLbjLfpFGkkMGESHfk2kXGEtiegbA0MiGUEm5GKnjxCCdCMJykDZxekdKqASc5idSZ6nk5SznjXnvtY2p7/Lh9e3fcgVRHAwq+Kdj5gAAAABJRU5ErkJggg==)}#webamp #playlist-window-shade.selected .right{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAOCAMAAABaWb9VAAAAM1BMVEUAAAAdHS0pKUA0LhBFQTtPSThYVjxnXEJqanpzk5p5ip6NcTiOkZCsrbewmV7O4tD///+ogWxMAAAAbElEQVQoz52SSQ7AIAgAsQjU3f+/tpIup9ZI58SBCSs4M7BbcbBZcfDKHyXeCV7RQBgRWb6VfkmeQilBHa7CUnmmnBJRGdCIUGqqgnNFJWqPwqknXlIGtFxFG/O5tUyLs0TrxuLsLj+ub3/LA63jB8yJpQTsAAAAAElFTkSuQmCC)}#webamp #playlist-add-menu.selected .bar{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAA2AgMAAAB/8csyAAAADFBMVEUvL0RGUF2BkqXt//98VqXeAAAAFklEQVQI12NgYTBhKGHYQmNYArSFBQBn5SMZFZ1KogAAAABJRU5ErkJggg==)}#webamp #playlist-add-menu .add-url{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAWElEQVQI14WOsQ2AMAwEv3LPKBYTABsgorTfxCtkfRyUOIiGq04v62Sk4EKugxPZOmVzpxAGKeoupInwcWD6e3eP+9FpTnppOvm3g6307cTPinSsHcW+BDd3RTueo3YTtwAAAABJRU5ErkJggg==)}#webamp #playlist-add-menu .hover .add-url{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAV0lEQVQI14WOyQ2AMAwE9+MCEEkDdEAnGwmXACWQ9skFmx/zGq2skbEJLALBB8eOmF8S4n11zupOIxzW3Eg3Y3NAPu/Fv/tB77CU5OTfDtZSQpg6q/5/AGMtMU3PzLN0AAAAAElFTkSuQmCC)}#webamp #playlist-add-menu .add-dir{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAWUlEQVQI122OsQ2AMAwEv/qeUSwmADZARG6/iVdgfRrHScFVp5d1MlrxwN/BDY+kH/AQhQC7wYNSkOoGD2D6ulPzfnQsO2K6gtLifzuF4Uunfja0a08M51Z82fg51vPZ5kgAAAAASUVORK5CYII=)}#webamp #playlist-add-menu .hover .add-dir{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAV0lEQVQI12NQQgAGQQRgEAmFghBDBtFyGAhkEC1Lg4BUEDs0gDWAIZSBFcxmDQgIZWUNALMZGBBsZHEgG64eCuDmBLBC2QFgLQg2NnGQehBbBMkcYYT7AQVAL9EsAFyYAAAAAElFTkSuQmCC)}#webamp #playlist-add-menu .add-file{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAXklEQVQI12WOsQ2AMAwEv3LPKBYTABsgorTfxCuwPpZJDIJzc3q9LaMkB+o52FGt0xZ3CmGQpu5CmgjDgcffuXv2xx13wseIcPOW8c4lXH65xQa+d/JnRdnmjmKdkguiDDkEOAftpAAAAABJRU5ErkJggg==)}#webamp #playlist-add-menu .hover .add-file{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAXUlEQVQI12WOwQ2AMAwD/ckAiHYBNmATI+ERYARYnzQttBKXz8lyomDpYOogqbGvyPfLhnydlaO4aIRg4UbKjOFA9zF3//qN4oSPiHB5S6y5hdsvV2x4Pw135v7/A+euLyJ1PQpNAAAAAElFTkSuQmCC)}#webamp #playlist-remove-menu.selected .bar{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAABIAgMAAABO2aeDAAAADFBMVEUvL0RGUF2BkqXt//98VqXeAAAAFklEQVQI12NgYTBhKGHYMghgCdAlLABvUy/BqCAQTQAAAABJRU5ErkJggg==)}#webamp #playlist-remove-menu .remove-all{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAWklEQVQI13WOMQqAQBADp0rvUw5foP5AlG23MV/w+xbenSI41RBCCHtnI87GSrhyTIQxknUUwpJM3o4xPLnU/Om3nULYSmf1zJfzk2eS+LvTPxf2ZawU5qFzAa7rOIxN5zmHAAAAAElFTkSuQmCC)}#webamp #playlist-remove-menu .hover .remove-all{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAWElEQVQI13WO0QmAMAxE7ycDiO0CbuAmJ3gj6Ai6vtGmpD8+CDwuIRyWBFOComBfUe/OhnqdjeN1QTCTfW5uoPVcQOY+4XkfNDeK4eTg+MnpG7iX4c+c/R8m4y6+oJDkfgAAAABJRU5ErkJggg==)}#webamp #playlist-remove-menu .crop{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAR0lEQVQI12MIhYMQhvByGAhiCE+DglRHJLYhHjZDAlsCEIPYCWkJYABlswGZyOIw9QlA9fjNxMGGu9mQIdTZGAoMGZwE4QAAjAZBLD2pp6oAAAAASUVORK5CYII=)}#webamp #playlist-remove-menu .hover .crop{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAASElEQVQI12NQQgAGQQRgEAmFghBDBtFyGAhkEC1Lg4BUEBumCC+bIYA1AIhB7IDQADCAslmBTGRxmPoAoPpQ4swXQWILI9wPAIC4Ne4ZKh5qAAAAAElFTkSuQmCC)}#webamp #playlist-remove-menu .remove-selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAXUlEQVQI112OvQnDUBgDr1KfUR6ZIMkGxuZr1VgreP0Ufj/gqw4hhDgmO3UNNiqd80OFIEVnoyIp+HZCYOXS8NUfO41KMO7uOMMja7pXbhmT58783Dh+707j+5r8AVpzN34SgZTJAAAAAElFTkSuQmCC)}#webamp #playlist-remove-menu .hover .remove-selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAWklEQVQI102O0QmAMAwF388bQGwXcAM3iWBG0BF0fWOb+rxSOI40FIvAJFA82VfUe7ChXmfneN3hIJ3NGQbj6A6ox03XfNIdBku3drLT+LmpR40X4eW3Z9b/H/ZpLd3ACl8TAAAAAElFTkSuQmCC)}#webamp #playlist-remove-menu .remove-misc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAYUlEQVQI102Ouw0CQRQDJ3JOKSsqADpAd3qpk3ULtE+wn7uJLGtkmXNzUL/Fl8qkv6gQpKg3KpKCRyYErl5a+fLXTqMcO4TeKIs4Hj04mtl27O1bw7/v7M+N8/OcNN6PzR8ABzaO5fDK/gAAAABJRU5ErkJggg==)}#webamp #playlist-remove-menu .hover .remove-misc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAXklEQVQI102O7QmAMAxE788NILYLuIGbRPBG0BF0fZN+EB8UXo9LCLYES4KiwbmjvpMD9bk7V7ggkGJzusE4cwGZ+xue/UG4ySwmmhPyf88BE4c7UZt9Y/TLb8+a93++ly0VHemPIgAAAABJRU5ErkJggg==)}#webamp #playlist-selection-menu.selected .bar{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAA2AgMAAAB/8csyAAAADFBMVEUvL0RGUF2BkqXt//98VqXeAAAAFklEQVQI12NgYTBhKGHYQmNYArSFBQBn5SMZFZ1KogAAAABJRU5ErkJggg==)}#webamp #playlist-selection-menu .invert-selection{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAXUlEQVQI113OsQ3DQAwEwY0udymEK7DdgSCBKZO/FtS+k39K0EYDgiDI0e3kudpIz8aHNFKVNYJ0mbu5LIxHzP3ldSdIu4Q0LcvLZdrWNccIPe/0z8Hxe8+C76v7A5OQN+oVjwHMAAAAAElFTkSuQmCC)}#webamp #playlist-selection-menu .hover .invert-selection{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAXUlEQVQI103OwQ2AMAxDUV88AIIswAZs4kh4BBihrM+BhvafnqooKfYRlhE2984D8VSJaPfXlYgmyKSciGaKkzFZFP3Pd9eBRDSLgrppuSyLZXO8w4LgxDbtWcf/X0qvMI9I7cp+AAAAAElFTkSuQmCC)}#webamp #playlist-selection-menu .select-zero{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAYElEQVQI102OwQ2AMAwD/cqfUSomADZAVHz9oSuwPm4aAtfPyXKtoCYHzvtlx9mCa+kOgvIip7/hzWjp/HKl+hF57Mh7SGs2OqoL9z5jw30+cu8z+r+dvLmgbnNQsE7JAyOvPXLeVffRAAAAAElFTkSuQmCC)}#webamp #playlist-selection-menu .hover .select-zero{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAX0lEQVQI102Oyw2AMAxDc8kAiHYBNmATI+ERYARYn3wK4fXyZLlWZClkKqRxsK/S75dN+nUmhzspEJDhiJdOhX6Oyi21HyNP3D2EUrNjdSPcZzQ95kcefXi//Xbmuv8BohAy09WnmqwAAAAASUVORK5CYII=)}#webamp #playlist-selection-menu .select-all{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAUklEQVQI12MIhYMQhvByGAhiCE+DglRHEJshgSEByDYEshPAEMJOY0tgg7MTEOJAUaAOqDjUHKh6hBpk9Qw4xBOwmgN3syFDqLMxFBgyOAnCAQD0WT/cwFbKdgAAAABJRU5ErkJggg==)}#webamp #playlist-selection-menu .hover .select-all{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAVElEQVQI12NQQgAGQQRgEAmFghBDBtFyGAhkEC1Lg4BUEDs0lCGAISA0FMwOAEMIO5Q1gBXODkCIA0WBOqDiEABTj1CDrJ4Bh3gA1BwRJHOEEe4HAB23NNar7KHYAAAAAElFTkSuQmCC)}#webamp #playlist-close-button:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAD1BMVEU0MCxnXEKGd02ukmX///8tdlhEAAAAKElEQVQI12MwBgIDBkMBBkEgySjIaMBgIKAgACSFnARgbIg4RA1YPQCfwgXpyvsxsgAAAABJRU5ErkJggg==)}#webamp #playlist-window #playlist-shade-button:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAFVBMVEVFQTtPSThYVjxnXEKukmW0r4e+sX1mGpZYAAAANklEQVQI12NwAQIHBpe0tBQHBrfUtDAHBmdjY2MHBidjYyMgqWys5MDgqKSkCFQjKCACJEHqAT9eCss1JzHfAAAAAElFTkSuQmCC)}#webamp #playlist-window-shade #playlist-shade-button:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAFVBMVEVFQTtPSThYVjyukmW0r4e+sX3BsGNteY1yAAAAMUlEQVQI12MwBgIDBmMBAWEDBkORkEADBiPV0CAgmQom09KUgOJpaYogNYLMQBKkHgD8fwlqtoGUgQAAAABJRU5ErkJggg==)}#webamp #playlist-misc-menu.selected .bar{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAA2AgMAAAB/8csyAAAADFBMVEUvL0RGUF2BkqXt//98VqXeAAAAFklEQVQI12NgYTBhKGHYQmNYArSFBQBn5SMZFZ1KogAAAABJRU5ErkJggg==)}#webamp #playlist-misc-menu .misc-options{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAYElEQVQI112OsQ0CQQwEN9qcUiwqADpAvJxOctsC7RPgPyEmmmA9so7NS/0+eaozrJuaQBStUmOFkFVqJOJxIIwH8He/O6VGmLMDv7eO4/HEYfaJ8X9n/1w6HtehdL9sPlWoO+DkW3+GAAAAAElFTkSuQmCC)}#webamp #playlist-misc-menu .hover .misc-options{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAYElEQVQI102O2xGAIAwE7ycFOEIDdmAn54xXgpag7Rsembj8LMwSwJZgSVA0OXfUNzhQn3twNadIQehukO/VHaBsutOy6GmjjwdGT2PMaX3eNfmaLnfO3p1+Xn5z1vz/BxcjMYQLzDa1AAAAAElFTkSuQmCC)}#webamp #playlist-misc-menu .file-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAX0lEQVQI12WOsQ2AMAwEv/qeUSwmADZARGndxCuwPomJTcGlOb0+L6MkF+odnKg2aRuqoj9TNOluxu7mTnf+cvMf3s+d4WOG4JtTSVo4iHSN3PvR+XbyZkE51olgX5IHU8k5In6uSFkAAAAASUVORK5CYII=)}#webamp #playlist-misc-menu .hover .file-info{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAXUlEQVQI12WOyw2AMAxDffEAiHYBNmCTIJERYAS6Pq1LKBIvlycrPywDTAMkf9hX5BJsyNfZOZobarlB7s7qLqecv9w1of44IG9rCPacRtLDQbxukau/efrsmcf/N3ldLzugWMN5AAAAAElFTkSuQmCC)}#webamp #playlist-misc-menu .sort-list{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAXklEQVQI102OsQ2AQAwDXaVnlIgJgA0Qr7Ru3iuwPgVJ4Corsk/BaC7EXZwIJXNDCASNmI6gSFI2HSEjaZn53WlEd8rzbiGUR0ZlXzLZL5cHRPt/nv7ZMY41cexL8wCXGToqpM1dFQAAAABJRU5ErkJggg==)}#webamp #playlist-misc-menu .hover .sort-list{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAXUlEQVQI102O0Q2AMAhE74cBjO0CbuAmZyIj6Ai6vtBS6fvpCzmOYkuwJCganDvqOzhQn7tzuSsICuFOpaHS5mIq4cy5Z/9MELvwru62rZG3V2Xy0dPuupepZ83/f5v5MBfSedE0AAAAAElFTkSuQmCC)}#webamp #playlist-list-menu.selected .bar{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAA2AgMAAAB/8csyAAAADFBMVEUvL0RGUF2BkqXt//98VqXeAAAAFklEQVQI12NgYTBhKGHYQmNYArSFBQBn5SMZFZ1KogAAAABJRU5ErkJggg==)}#webamp #playlist-list-menu .new-list{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAYElEQVQI123OsQ2DQBBE0R9NTiknKgB3YIE2nYRpgfYd3PlEwI9esBot5+yg7n9fKqNroxwhRVejLClSNyLQbSm4+3E/dxrlmGC6I2dsJooe9jDGLzvz58b5WUeNfZn9AKbQNSZ12uygAAAAAElFTkSuQmCC)}#webamp #playlist-list-menu .hover .new-list{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAXklEQVQI112O0QmAMAxE7+cGENsF3MBNIngj6Ai6vk3T0uKDwCM5kmAbYBkgqXHuyG/nQH7u4HI3EaRYnW4MByEgvAwE4z/fD0TfSt4QLnp1Fye35iVrtZ+mPev4/wORlyvp1GfF2gAAAABJRU5ErkJggg==)}#webamp #playlist-list-menu .load-list{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAWklEQVQI12MIhYMQhvByGAhiCE+DglRHhvCEtAQGIGRLNQSzwQDOZkBiw8RBqhMg6uHmQNQwpAHlIOw0NhCGsUEQzk6AssG2pmGYA3ezIUOoszEUGDI4CcIBAJZqO86fMyFaAAAAAElFTkSuQmCC)}#webamp #playlist-list-menu .hover .load-list{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAV0lEQVQI12NQQgAGQQRgEAmFghBDBtFyGAhkEC1Lg4BUEDsgNIABCFmhbDCAsxmQ2DBxkOoAiHqYBTBzQoFyEHYoKwjD2CAIZwdA2WBbQWwRJHOEEe4HAE6RMXWXqbP6AAAAAElFTkSuQmCC)}#webamp #playlist-list-menu .save-list{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUvN01OWG5XZHZ5gpaBkqWttMS/zdPt//9STElyAAAAYklEQVQI102OuQ3EQAwDGSl3KYIrsK+Dwy2UTrJswe1fsA880YCgCKltfqpn8VV50i+VhQD1VGEA3FPlQED0VBlAIyfAMfp7Z9zKWjsO7FjueDnThZj5e2f/nGqfc5K6j80fAQw6zDOWMCAAAAAASUVORK5CYII=)}#webamp #playlist-list-menu .hover .save-list{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAASBAMAAACtCzMeAAAAGFBMVEUAAAALDxYZICpXZHZneYZ5ip6Jmq2tvMRwzsuHAAAAYElEQVQI102O0Q2AIAxE76cDGHEBN3CTM7Ej6Ai6vlwL4iMkL5ejBesA0wDFG8eG5ensWO4rOeUOgiTkdAqP3CK3cKXInFYLlv2+oL2FZqXXRr3ddT5nc+2NvPzmzOP/L+cIMJ5Oo2aQAAAAAElFTkSuQmCC)}#webamp #equalizer-window:not(.shade){background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAAB0CAMAAACR8SbcAAAByFBMVEUNDRQPDxYQEBgRERoRERsREhsSEhsSEh0TEx4TFB0UEx4UFB8VFSEWFiIXFyQXGCQYGCUYGCYZGScZGigaGScaGigbGyobHCsbHCwcGyscGywcHCscHCwdHS0dHS4dHi0dHi4eHS0eHS4eHi0eHi8fHzAfIDEgHzEgIDIhITQhITUhIjQhIjYiITQiITYiIjUjIzYjIzgjJDcjJDgkIzckIzgkJDckJDklJTklJTolJTwlJjklJjslJjwmJTsmJTwmJjsnJz0nJz4nKD4oJz4oKD0oKD8pKT8pKUApKUIpKkEpKkIqKUEqKUIqKkEqKkMrK0QrLEMrLEQsK0MsK0QsLEMsLEUtLUYtLUgtLkctLkguLUcuLUguLkcuLkgvL0ovL0swL0owMEsxMU0xMU4xMk0xMk4yMU0yMU4yMk0yMk8yMlAzM1AzM1IzNFE0M1E0NFE0NFM1NVQ1NVY1NlM1NlQ2NVM2NVQ2NlM2NlQ2NlU3N1Y3N1c3N1g3OFc3OFg4N1c4N1g4OFc4OFg4OFk4OFo5OFk5OVk5OVpcXGRgX2pkZHFoaHhsbH5vb4JxcYZzc4hzc4p0c4p0dIt1dYzUqAzU1NnX192pRLExAAAnOklEQVQYGQTBP8+20ZoX5ON3rrXu+5m992QGDcRCDbEwRk0oJCEUJnZ8AkJDSIgyBXEKvgEJjXYUU4z/YkOHH0ALC8sJlSFSQGECGQviVicO2e/73Os6T44jAAIIEAgVhOoFMhEgFIJQQSy6KgJhVyYKhLC7ylBkCQXKufPuaoWBAiJCb00BgK5mptqI0aWB4O72oUEb3K4W7e5roNMYbhuM+K8BAAACAAAEAAAEAAACACAAQAAAAQSQCTIRkxEmAAAmk4FhMsBkYACAAQADAJgM/v7m78bUhEAgJBTVlcAh4ShRgpCdWbOlZOptikVRXqPYj11hs4SaImQ9tSkLekNO2/cgBGtSxeoKYQIwwQTuyoXhqe/1mIxh+LnxofGM0fph6LTJ3F4+3Opn3zaXnmK6ZxAkEBIydMUgl1CAGcFGzR5ErQu6ETratl9lZluLYYYMuYrMPFRtOD6PHBIJtWUXefAwEzNAAA+rx1q1UFPPnhkgzr2fD93xMNq0GUZjJISWfduAW6AEmCHIDIEhrCoZVTQkwA4keqJqikwVsafZHkj05wIFrLMxsZLGcbwBGKqyd7spZZZhngTAyMzyTI1HnvA85Soj3B8/P3tDZSxD9TOCGSb3s8od9n20dne3XZRKMBCZoKJQCjyKmKsqjDGhktk8VOgEs4rCitdjF6BIGCJyQURPw7m3gQyh09/KnieShGQNACF5rJqsus/M/ZkzW8gM+8v+OAfxPEN3B4wis+v7fia6uQwfdNFAIgkTaGaiCyydhDmEykTstM7dz65K2Jm2aDV717zcFYBZGwBGowZ64/Phc9bBRJBxEFvTT4IAgFYzw5OM3u+6c80YuD/Ojc/HNEtgNfRkGGqJ6bKGKOgukiDDDIJMSVAID4M6XYYREGRbaeMso3SUDu279tPAyyaoFRB1y4RnFYh9+iDB2NIDrBpVnpkBAGqS4VkzaHnaZATO+eyBxNMz9AWqZgwu6JsHqkWrIgaQAJmCqAScs0FvokzE7qqJ65nq+NTQFNAPm2oSUsA0MLwQa3XBsW8fYIiu2d2U50k9nVmSAYBhJuLpuLd9vzbDYH5+9vVBz2jTaj8YGtwuBm11cy+KwjCEAQgGDfi0sFXLkDBuYeznUKGSKtNUka0uXczePQQlgpQmrNHNcTd+AAXTT+0SiqkIDABE6Dxm2K9tdQ/Afbnb4Y6WqNtPMUzGxA5o9agX27RuhSIggBlkCAnrFNylTIoQ+5bUrvOAtxkqVYGiWbslPKsNOgyptbdk1sMuPmfjOcBE7fK6LXrHI0EoAGaQTK+VzHXne3QwUNd2PpSxpinzAAjdLnSv29/TerRSgAyBkCoSqhg0RGjBCOyebJ+uUqBo3WPvitdrP6Ogz60ESYR5aCPPSuB83OurQFDz7N5lZp6xhAEAA2aImUl5UusSwU+fvXw+SHEHADPNjBuGW+4mbgmPDb8BZAICoUQmSiYEAUJCECoIFipBeN1NFITAphhq3x13Fyg4FAZUK5CMotqkoAvo6uqZ3Z0xoKshk6v66Wqga3yGJszTDAba4JthzN/5nykEQAAiGGqkugWDAYEGYAio7hjM+N4EQAZaMar23dG7QOGcbg1QCoiJ7nlYBQpAdcXTlYyABhNVVae6AP10NkAKAA39zQAezwb+KwBAAABAAACAAABAAACZAIAAgExARgAZxQiZmAAATGBgZJgMMGAAAAMAAwAw8PfJrE0Gf49AJhSFCsERQV6kZELUZl7qKVWnCGJT26x5MVUZ2X0QVhchu5CwpoTj7nm+IGSy9dEV60Yp8+wJEwBm8iye5Zm7PdXXpDOZyc/92Xegp3XMrQ9GZwbzfdodt62rH3pmGE8xAYBQZDADzgW1d4s2JGxSMmWVT4OlxL7WuJ6+RjZaMGnIuppYTAIftw5kZOKm+iczT0oZtiAATCo7UfOMY9b3NSaMqM++g+7ElFE3gcpg7L7o2kAVpqEIAELSTFRVgI1RqQqRgAHzVIVTM01XSV26/rOtapPNX1SBSfmPmd5d0v78sgZu9r/bBWLyZ1epuxbW7zB04FcGwK/C7Sbtd32+88lLAjw/uBtSwxhuzcA8GPOUS5t1d/e+tyOgGCCADGqAcBqJ0UzFCLUjtiwZdJRUgZJ2FbiaDCrAmcYUzIMzxvk5xEBPpvYk65H1VDIDAjDGrE4/j9F7XfNtAPfrATzySNMbhgCZ3tgXl0taQBGQAbSKCT2gS4JSJkNQLnIresapUoxm2INNldgwQQPuLhQiG5/UY76CiQyvadAl3BYzABCRZz0xK1Oms8mY4VM/Dx/cagzq8zB4MPS6d8YFajM8aAUwQYgiUBH0ZcZqEkRGddFr96cqpa40S5G9rSrPc0tsNhkkhNe4ZMLMAHUEmSCZvrWxJDe1a3QCAHB3PHIHe/U1A5xdbcMaQ6X7BpiF+I6NLmjThkZTIUhgGEyiBKiSJEVGZZigpKjdOF2j6KFwp7dFm2HChALyfbzKmKUnkH2ByQTzurvuNQ9TirIAMJjhsmpi+CSFgImASXmme8oMQ3sw5MLtBXEBRGEwgwQlGSuRrLVUxTg20WOE3qX3dVXiUwWrAKWuZ++SUA10NcxqqKyRHccx+wOoYbtVd5/sKgo0AIRJeu1xk0n0pJv0BD9/PHc7pMcS2EAGdD0bdg2tMYyHUQABBFlFtrWqTgJNDZUK7GcUFjiGXo8FKva2G8JzBUUlqNaKJ2b4HHtyIBA367Fj7hOZ6R4AYMiozNh3zPTz+hSZGHyxPx8Qj+HezzYwGJ2+l763fdNX66ct2AgATKqEqMqEGNnRBSZh3yP77qhwulSXVZIdz/ZgE8NBEGDfTVgPG1xOYGJg7pth3yfj2UZhAGLE0J4MOt/qiUnGZNbjfD48GTJU+ci0wWSk6gPWlU8AEEUAoKpqRl7nlWQlxXulrqJKgjK0F0x8turyDLXD167NxeyNRJIpgbtVzcyzRoO9V/+EkCiZuYSsSpYOCACBwcINa25MIO6zwR3uDN/Xx0hVEKofh8tlTqOJBzYThCCKyqriFDJd1+t7I10mUV2buptKJqYaC1MG+cv8pwDiLwDgPyIAfx4I/DkBMvNnJRMwv5oA+BUAfilmwsz8G/6fajD4wQesplq85zsy08SgyiP2tb919qXaIGYTwIRJV3Jynlck6OWMF2AKXQVMTGKlFXqdMkXyR/7SH8VmCX/hf18E4j/8J7tia/x7/xzn8/oc68/9S5QJ+8/83y/sZ02e3/0Tlek14Vd/Chh++0+nZnrI/M6vRxsjzPeqTwZdoeqma17tQ+ma6Ax1qdf3rdGtdQ/csgGAUoup9UqwfZaOR0bUlLBN0tmquibvllhPrRgvzwJsFYFFsNaUV2LfvQIyzsfnQIx4fS7EUxolUgJAJxMxo5481VqMGOT9szMZ6lYXUa3z2HfUoxp8ZLrWZX1ryuOhygYgUEveZ1XtJYv1dGZWC2QycWvzunp1JbpMCLvmFS+xSSqfgzCJTEKroZecD8fNTd6IAj5TXnfP6l4UQUYAlMFMVx5ThtfPYRh4m/w4PraMB1Hsi6k8iHn5OdWpzmdfeWYANgAo5H3WeueVenf9Zn1Pf6iZar0IO58zd/eewioDWzqvZ9/XAae+6whKeT3P6smIqIjP+aA6E1CA0W5Jm2cJIEyAicwzUk1Gr5lvMSNpGM/mfAhLt8lTl0x6Kj1wX33re3WXMfXU0/iwAYBaWWet97vetar7F1P95BtpZWLi7jNiDYnqUqqrtqJ+SQrlPbAy7M/esLDypCDJcwgESKW+k82w+hEmQAAxsUyv9Ri6ZJBMOow8NfMNM/XUrEwXmaEyI/XERjz7+xn0NDgfG0CosPZa79cv8soh3535Id+TKSaE3VVZJgVFMTtE3ixBYqJ6mchaEpNhzOZwufs6BHa5+9Oe9/dAJtazTHR1AWAiYj2zn3Am1QwRZCz5cT5Ietm6sd31mJEaazqWz+v7vvIZJtPAbMhgQlbWWtm/rNdZL5zvevzm7rkmU0CVLrm7a7K6ZkpJrZ3yFlKjNBNyvCKYhIijpmZ7ZQ0m0Pfk5Xt7BZFZ1tVZpQCgy0OrfkDsb5gMk4HHBVPu7llPNR4yMTFZ0+p89v3OmpFW8GEjEyLBqpNf/qJ+sd97ZXrW6189v+Xn7GsyCdvnJGp2ZeqIIrLf388rL7EQ6aVVnErC8pxnxQ58nxxCCMI9NfGiBdZMsmzMJACjZM9YAMNrvskQA8q+g7BV3dOq9x3CuWIi34s1091mGIPeGIRJrexXvdf6xXu/s/CsH7/0/Vv9QQTuPtBpq9TddKm462UnK0BKFpbYmaTPZCKcu74gACJrEWRWoPQyQAJARjqypgGC90/7jpGMka8fjg/AxlDrM07n3H1Zz/umurV6GjBqI2GigKqv93t/rZzqm/v1492fNe65w0SVid2r1nj9fE+pVSzbWVlxqvknArHl/6yEks0/51wH/MsMIZz/975AJv6E9eTxVPlTAPwpCCb//wPA/8eovjJhMvj59bkbxyebT07fqpZt8/Lqj8y67uvH67tVMzBdBAJyXuv1Oq/1tfZvvV/vr/fO1/vrfGUfkrD/9u9N/a2/ZTF/I3/tDVrZqUxWznvVXvVKNvaraq3XOefgQK4vSVIzCRO4L0lkAp71rL0LAAAeup7UgrXK5rvYCCLF+2M751xxrxN2qderKlWnUifFjru+Xa0nQ6IYgFoqdb5Wfa3X69SrznnvnFR2PJjfr/sHMv/9f/c3RwWtms2+2z6xq/Zau/LazzmnzCruzSTn45zwJZGoEDW85iWsDLDMCtAwAFjumnU9xSKeeN2nC2xBOOfee6/7fn993RxFoZK1a5+qlaRmb3uAixmbAEFWfh/+KPucu646PfNXwH9z2+/7239Y4r8g/gbHX/M/kS75KxD/OKvA4z8B/qncd6z9078P/AsEMv828MdvqGfN828Cv96A8jvAnwCo3wV+XTyruh7/FvDHuTlux/w7wD87wZcf5/MfAP/HKmLZz18a/K9z7YuujDEbwESO+sNf/vZv/3K/99nblx+1P/nf7r/6+Zuf2bf+4L/8wy4T/0OFf/DXP/7hX1Wysut/eeedVe8Tx6dG/WMix5kD+Xr+GW+RCdZD/hh4E+Kxfw2VDcCfAADUr1VjobTm/2Kw7+nc2Vf+hfn5/mkt4P3TP53LZJXjo3LPP3rm5zxkdCUGnQJQVZx6fb1WUq8ria+z3uv9VPJG+4Ou3/N7/Od/E38df5U26GNn5bVzcm9k75Bs5x5JwnojTMnrvdebAm+Cx6pnQQIAAAD2slgZk7HwUnh3quzXI8j7p68jEfI+skxWnHuTE5XYQke1ew1sgJCElZx19v1KSE8leT/76zf7e82k93+bfv2PU+ofcP6hUfactWWIuF/8yP70fljhCzEx+foRRF7Y/f7uat4E6/GsZV8VAAAAQOapmBrPWo+M18PrMy+F10/w8yyQMD8xS8TNKz+uajWsu78fap63wWyAoE69ar+Wylfy5mdOOhSvp0x10wWl63RNtaib52XLrpyLr89Vz6KcuyVk4AtigbLTB7BYac+aPQEAAABQxYxnh/XAWj7rAs4nw5dnIWR8/WCNKfHm68fR59v6XEU9c9dPpVsBjMqq5F0rOUfeeMet13rnRb1musqU24X41FB2bOwstdwvOGLFIBIhAkQtBPVxIQCzEAAAAACMkTEJBLQXgnoJLBIIDvOU44v4uhZuVrXCpocoQA0ke16cuiEJeUu8Kkkn9amEvaZSOadSTc9WlVDlHEniC6nl3DfsNwESIRG81kZYMBUCAAAAAEPIjmERPKcQwTcBgRDvS23HFwEq9izKo/uRoVWA2ckKqTmrfDngnZzIya48hhp7S3oGKEvULsUoKxI4wFuSd3mTBNgCwb3ASJLBAAAAAEBiwoxkMBiAEAYI71dEHPhcIvE+gQO2apMZoxAQjtdar6WOVBDcdWLjtUuRe5+pClUGT3HUlryWS0i4B+dGFLwhSQAIe4MKSMgAAAAAYDAiiCX61kUgXhIIFgjgQEhuWHE9+mo8ZCmApqxJPQkAUFXyWgfKsDcm5xrUCd8PQiyALzgWbEBgvAUAhAgQMgAAAAAGGBjzoPQLAAGG2rzgfXEuCYGKueVMcx+Dpgik5KFOvWRdWGvxzpusKlI7hR3EeAa6J1UiUc5JBHC4JQABAiwAAQAZAQAAABBkBKILegPAAInAGxyHLwBs2RgB6KsALLvyWjt2yQmIRImpRfZW6oGkVhSror2UmFy8X2/h697jLLxJeG0kNtQsJQiWAEwAAAAAIGOSCViBFwRgEQk2kMQ9HwjEG6hNjX0GNsUQWImrpHwpAM4iLzLthluYnLsHHtnRYk4AjoALCLgSPJDQJAwACAAAAABmBgQwAGARW2QGAOPNuQRvfFsogG+Mb4ow1JB9zC6EJRYQ+ynvKltqpxY+m8KCXQgIlLDcUwQIG3iJhbUwmQCAAQAAAEAwAKIBALgGoRA2uNcxBHkfRdwPRgaYgoRUJU/W61EHRMBl2Zsabdxr1DoUFrtespVaDgE4yyeiAB5QAB5EAIAAAAAAQDAGAAAsUDKIEER8wxJe3jDisY9uJS02hYxs8Ep5BQCIvKxbazrsXdmUKtNtBTweAx9eEOF8fcEIxAtsAAsAAAAAAADAxIQBMEAAFJmgIApvgAMYPO5TJdfDuBQm9MPO8OACIFawqaqnGRhtStFVhjkpyfkK8AIDNoB3yhkgAFgCwAAAAAAgpkkASwQGAAQKAAAXuJu8WB69MRiFoIpKXnYsBJCXAzX6WEenqCi6RPp1kWACJEgIogCwtwIRlgUAQAAAAAAwLAYABsJiAREQAG/nTbwgCLKH8hMYCkFHMjtVQt5WkEWoRK0qeZ4dK7yLYlr16z57IwUAAMAC3FsEQzweAAAAAAAAwAQABmAAgAGAYH0iQGAMSZfR9SAUBiwTswEAANmDWnrMOBctq9TtlwubKwQAggBBv8GCsQAAAAAAAAAYACQAASAmAGDwYABQQqtxjy6gSFCeQ1XFLgDAAUXJnqkUZTCj+qW9pIBZwAbCvy4IDlv3b++7sL8+n+9x/v6XZXBFc41tNpcQWNPCKBuYtgFhjRUUx7oaNMKg+Az2GGR7BqPPQHtHE6euWJng1sDAahQGXUfX3siNJMVhYvO/5e88v8fxee/1gssF1gOgKFwAAAAAAAAABYAcAABEBYCieBEAoFpmtL7NIKZB4ToltmofCgBQFgrdS+hW3Up7m+pFVEMBDhAKaOhGAdCBCwAAAAAAQEWUAC4KAKChACh8+ORDKQ94A01hrLgatgahPPqNazUFALgY68qjyoDZMnSN06V1FQCUN0B5w6EAQAFVQAEAAAAAAExKFCAAgEYBAKLIhk0BzkgMT2aAJiCNBgAo2LoU1WWa8rgvWsElmOCCBWwKFXBxAECAcy4QAAAAAAAAEwAMAQAYCgCABwBA4+BD0QJdGqrElAYAwEp3NNM03Jc0Tbe0EfCoosBSEABNsQEF5boCVQAAAAAAAFejArgoACgg+AAA6oY3ACqsS+YZKNM6hRJVJRcaAGDDhH50U0Xr4Wj0aFWgETBQCkABAIBTEAAAAAAAAKoIoAAADiKwAYADAFBsUxhg6wJwNCsAAGjW0jwZ5frQNc1FOavLI8AjAA0pBQAsAMDlcgEAAAAAAAAUIAGgAT6oKi4AcH8CFEAOpUPYYtNCUdLRrQAAoLVSwYX//psprr+Rb8hcLxyUogCghAIAwAUgAAAAAAAAQBwCUANAAbwIBqAA2AKgiVHYoLVSAIAHAADQ+oO/lfbrf+/v/03tKLpVqWsBUABUEQVcAARAhQIAAAAAAKA0FUCuC8CBC4ANEDgA4IEZS6Ak9FgAusFfKPwQAPwM4p+OqV/3t34TB3+D9mt+Kw8n+AXghwB8CfhR6oLDZ8CPqwC+AHwE4FPgIwCfAh8B+BT4GMDxReDHQPBngR8C8CXgBxbg/grxHa7aAxgWAswF/+cnP/X4Uw0A/ijP9/2uO/nNX/87Tbdp//Ab47d+1eyl6O/2h7fHqgLgh0HVG+cCfgRKFOAnnAUAPgIA+AgA4CeVlHMB8OOAAgZ/HFEA8IN4/4RCgccf3v9h38EBQBYa6CrOAgAAaGMev8njW9/0bXxD+1V6ncZcBAAAWrkAoJgLAA0AAAAAAICYywUAAOA6AAAAKZCCG4a9DQmDWjQUA5fyAAAAmB6l99/X7duX/sdtHQCpvQAAGJwL1wFSACqYqhQAAAAAAFABAAAADgAAgP3ANAAez63PTaUG0QwltHkgbgAAYFruR0ENrQvzxjhQswCAwMKlACgugIJKAQAAAAAAFAAAAAARAgCw4AaAmEzILiBNEXWlAAAAAHQ97jwsaaql1+qXa1GoAYCSohxxBBRwAQTn2gUAAAAAAJAcBwBgIxwAKACId08AYMio1ENEkdIFOEXfAwAAgCbULdplBpulLYpcAAAADQBxFFDocwEAAAAAAAAJAMICmgMgAAAAAYAR0qUQHaWLS9BeAAAIMLofHx4pnKtaz+rq7NZYAABAUHAIFAIIdQEAAAAAAKBQEwHAa4Oh8UIACAER4AZscA/ZQ9EwjcBoA4AAMNNOzIBSTO+JCaF2FQCUAlEAAACCOAAAAAAAABGcLiAo3hoAQPACAJ4EhBVkCtgFoQtCF9gNAIAM9OiamzTQrDEWnVgBAoyIIA4AAKCo0gAAAAAAAIA6gAAABgsIAhAACILHzEDPdIGGKgaMAACwQGvbfFgFTU+vWcW2G7sQAFCBAgACAMJsAAAAAAAAByBQxGxPkMARhADwBAAB2fQ8x8veAU1XoyEFEgCAMMtc1qjm0j1N6zeLFEsAAFEQAAAAQF8AAAAAAADAQQHo67aFGRgCQGxYawkATLgMZWkQDQBRDAAAduFOowPQ7M6ASSE3AIACAKAAAAoAAAAAAKAAAkGYVwOaAABYAjzxBO4zsCHbNBLNCIpwsjOeOABgMmpA4RpqrEVvXRaEAAARBQAAAJwDAAAAAABAAEqiwNzGgAJAAngBFgGgycvUI0cZoTS6YFUJCC8XAI4Mc6GnoClrDrOwdrFTig1sFATiHIAAgOsCAAAAAAAAAEgOeuGNcEAARkLiLPcN8JR3bhtxz+UGaDpgZ6ZgRyIA3IJCl8qQdE9319HbZC8Fj5tLiAUFUC4AxQGEEAAAAAAAQBwSHFDw2ngCeBHADXDvm3tFPIE4NTuiBCHRKLB0HxOBTJDjmcDeMWZ02lWX4dXVLF0LwX14AVskEYOAAC4AiAIAAAAAAIACIWAu8AIIAGDDAhuegmBX1IxaQDQB7spt+hVnARB5msiVai3DNaF6La3XISAdgDBAIAYAcS5AYQAAAAAAAAACODAbhCCIvJ8IgyPcwn0EWCFbw5gbFN0aqMic1wIAAIoMNCkj9BlrX9RhqgcCCICtOAcACEilGgEAAAAAAABw4joiABCEuiBuBs8l4oEAIyXGu94lwdABMPpasyU3iACHBAbTui7d9nRTWVxHZQAEAETQAHAAFaoAAAAAAAAEKWFUAiQJCOB+P/cTvNwimORegeTcNZK1Z94AaOkAV2kzI0cIRxxYNdj7pNFk9Fjr6GZ6nKAAgCQoGgwBcClITomqAgAAAJAAiIEAZwYzCJ4IT7GsJRIZcE/mhKck3M49IPfsDDB0AecAM3B7BsBtZ6OMQingYda+7F5X6wqWGHgpkBiAwsxLEOCiBQAAAABVAgCBAIJQCQDluTDglljqcHKDgJx5DYoNoKNKAfad2TNzguPIK5xMvUZfLQZXaYS9jra7Hea4VW6IFCgAMLPflEMiBQkBAAAAEACBAACiBPGCpwT3nfudgEMMsd4lrEzYmWPGAERforhajZhLbgscJO8GixlQbdLAm2O1NaODedwpL14ISLwEEuQNOEoloBQAAABACgEcsJEAeycRyADe141FROK+zxnjnFvwfmdkX7rvAQJ0lHB4So1JnBtBIGJvZEY33aD1XhZ2d4xOOUYmAYALKEwBWpIaRQEAAACgZESSAKwXCqIViLjPfkq4wSISlsrMjLKevC9n7NhJ7BCALlJcschr9ktG8hQ8WRmRGpoRw1iVtthNFbFe5aa4XyS4wdmCsCcIp6jKlagAAAAAQKpMCg6B60WSxOuWgGAfyCLjvt9JeHdO3GZObu/v686c02SPjQgYjUKzuasmx5xnvCRjcp97xBi6u65u3ZSZbfUu11bVewkSAAaRRYLX9XZBQORAAQAAABDCJUDg7AugCCCBxPOWOHiHrLvG7d6viazFHjLPM2JmkyBtAZRF5tmz172WeL29wtNIzNbnOjR63nZNeVOzJnUezMXolYoSkecnnVI8PyCsM/FoxbGyr0vZLAAAAICji5RzHeBJ7/MG9gT38eH5CUG8I841ncf7o5+S4ymYo29m7mRH9/s8clCAhqJSkohK5H5P8oyxjuT5KjsK9Y1fM7/2V9eU/hV/cU1LQPbI/cRE8Mn7eSHxAq/pqLklyLnOkd2uAQAAAAxzGK6D8MTI8/Uih/BY6/kgibCW2TvnjHvdz7VkXkLsOZOZM47zuu/kvICB0VBNDWpOXic5Z0mS8X7PE9dMj435X+jf+id/leaYVrUOlDY8RWDeyTNR6onXo25yiqJxXY5pdQAAAMAMHNc5B+EJkPV6vojned9W3iG83/ccMhF3ct+zJ5kzktfsfe59J69dMVlzdkTDWDCF2h+S2t+Ef7NuF7xnxlfBP2D+Jv+w8au0v8zlL/pOahe+WuB7+34Q3v0M8H01nXplz08D//ahp5vMF4GfFIBPgY8A9heBH63LITx/GvghNwz/OfC99+uRus+65+eA3+uryji5vyrwr67no82d47+GvzvpJ6QEFh5VINz/0d/9Uz/1U5+s9+u2Pzyt1/3M776/7rNV+tudHvitt4r//VfKd35ZLRf+1eVx1arHfuA+1h8trrlEzavS44csmbdUXacZP9bTyrkAPgIA4sdAnR7w8kOjoIjgjxY3j9Q7a91nfn9m5zEt5Tr27btHFOe6kZPnPzv3c2JnbUmCOWnchaKo12S/zsl93znJa++cIzU9wXS+4df41b8SfgW/jM3QsY/kXu/3eT/WDvueoyA9aHvnjRxXObRRQwcAAJADCNMJgi6QBLyv+77D7V4r933K7Ir77Fdm7tm3HJF9kp1kn5z7nO2lhlAtoi08QPe5nIfsc1/n+eG+ntxzJvdrdm1Qrn+sHv+ki39mnf+jqyzm6mlp5ypLWDcs+yFgJD1WV5ScFAyXq6JIAQBMAVDicK8bCCrAXrfdc01XbqR2Xg7COcstRzyl1r3qEOeus0+cmFsAoou7KNPteL2e536+T973fd/P52vPeeWeM3Xh6qE4WHU0it0mct3jzJe/fN/rZ77M477v27vPfelLX6r89Jda7Nccn33GZ3zxi1zOKV/4QvjCp/j0U4D96fxpX9AA8dln/Kev/6wlSSE+/5zP379MLp3K/KyvfGXunzs/nySJ+K9yv76aX/BLc0TuM1/b55e+9ry/fv+3M5PahcoMnMviMQpSnboy3/Tbr6/77usX+Nf56u+ev/DP/9L/+td8K3eTaFgaC6m4SFHnIfVz/2/x5T/0lT+88dje+b7P5/Mf+NIPitoPP/LZj/nij33xT7gqX/hIvvAxX/j46UeffgS5EOY6xOut8iOf/X9iIsTzQ/7c998fLLcaTor79/0Xv2fDiB6ZX8xJ3LHH2uxf/h0TL1Ovk7lJVQ1ka3YnPBanZju+9d8c3/mFk3/5u/urv/u1218y/sE3V6vSjelYtr1VaWeoxi3xs1+x4eAhPuDz7wNI7vuzz34c4BwHn35aRQFAMf70T85FvLztuz777N8dP/2DUBIfvHz+M3378vdkzjlqIjPGn//XOUeY5Pziv8TXvhPnXFeu4+nrX79v/92385zaFsYI0C0Ud0axXnzzW7df/p13v3ievuaF8de/taky0Gl7Vb8tWatNq0R4Kb//B1+5iMZ9P96eoKCCij/+0RcLYl1tx8effAoAkHKBqCxmnn/87/7jC4Kq3O/xve/9ucVr9sQMR+bn/6+bk0iSwC/Z5PXa83q97pfjn/72X3mRmC2bQiA01wa9hDvb39kvv/31p995jX9u/CPlW6A0lo6FTe0tDwBmAzPg8bCX+/PvC6QQMY7AyVyrnQIARBE/+YIzySAVL9sPv0SC0Yvb7f/5WdeYmf3i+V/+m813f2nA2eP5L77j9jtfv7LlzkTc2/b3vvncMyEUAGt4FH3Zy1wlstvL+Lr/zcvLCNMkC/ai97rO6qLVdGGaxe/9vP97/cHP+YOKuj36AvX9z32/k05Z/4kftfrRZ37c06f7T/6Mj/n4qY8+fuojgHL0pDJ9yvizfsgInrHq9Pe+7A/BzvQYN/687xridel5yQuO19RtduL1j/6abx/HOGaTMqkjUJ/8T/9z/Ym//Ru1muqq1Y/rw+XqtmxjpobRF01b6V6OXtRy3lCUrlVaV65KqZmF4hNQQRXaA9VznSvlLEgBgCmkTk8YJwEGTyEe9+OWyBhDeSFMpJ64doozc/Gq2cyAjMy93Y4dSU34t/nbv+HfL8DVPRdkf9ie/eHurtltwmkDaJZmrytLQe2l0Di52rRziVIpqKcPzw9CVVi7L/bKJJdZuVIowLlAQxi8OtVbKoGsWzz27WZUAbkhTKipWXtztrfdvNc9zORKbyPuiWmbqURlkMpqwv+oUKhKl7qU61wOcB2X8VBQa7+pqEalKBaKXj0dDdBDP9AI0KZRVdPTGgCA0YbR02fa9ACK6bkfNwPwunhBMdiCYBCvt5eQGByQyhEyBAKINQoAREvlqN51AA4spMAipacJCqZbzIu3w9JgmgcIoGe6UVIdTKqNBpg+l2lU5OjRANDjcTMAr2b3FFF7GRBMKlhbgJ4DIo5IDQEVQo3V+DP/AwoAUAAAABQAoAAABQAoUAAlBZWCkgIAiEoFBAIIQABAAEAqAAABAEAAAALKQvmNlUV1qhRvykPTD22aNO2i9Upbk9WKNet+K3RNK/qiS13najzux+ZxvX+iUigeSevS03OpVNQ0AKmUwCEVzL02EfC+uDGpYypb7xBkiH3NFkZsI/aYgynjns5R87KvLWSIyRbRCKcpCuGOVabK8zljVNNV9NLTs/RC1rLyJnSmq6JS3YLLCffD4s4nBMWq+zp7i1GOHBWNAEoxhau57eera0dQnPe1N+w06bK6gmIGXjNW2Lbt5ezNDKbGfY/J7NddihDENkD9VKFQgKIpFF3TBRe6FGppFA2qUiya9LRF0UDzMIsAemjQ0alpPbNGYxrTpndFTx8VA1AY0/fjTmA4+sQUtt4EwRBehFScCcTUBCKBQBCE/x8RUYSGZ4cLTgAAAABJRU5ErkJggg==)}#webamp .equalizer-top{background-image:url(data:image/png;base64,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)}#webamp .selected .equalizer-top{background-image:url(data:image/png;base64,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)}#webamp .band{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANEAAACBCAMAAABpaq8qAAABEVBMVEUAxv8SEh0SWwQTEx4XFyQaGigcGysdMBwfIDEhITQqKUIqKkEqmhYsK0MuLUcuLkgvL0ovL0svMiQwMEsxMC0xMU0xMU4yMU4yMk8yMlAzM1AzNFE0M1E0NFE0NFM1NVQ1NlQ2IRs2NVM2NlQ2NlU3N1Y3N1c3N1g4N1g4OFg4OFk5OFk5OVk9dCpCQl1EQTxNTWZYWHJZVjxasCxlmUVoaHhrcC1xzTR3QyiDg5WHd0yJ4jCNjp2QkJCQxz2SkqKTk6OTk6WWrI+ZmaidpDWfn62k4jipmGWrrZCtLSOvk4yvwziwcR3DcCrE2zLFVCrFhzDGeA/GszXOxtbTIhvTSR/cdx/gVB7gkijgsijgzTBk+3VYAAADm0lEQVR42u3bX09bNxjH8a8fP/lTombrhEC01TSkSuNik/Ym9q73XnKxqVs6VnUbNIFzbPcikNiIk4ZCIY4eXyB98OGIn+JjB4Wf+0aZN0l1KL5p4q+/VU91wqW0YXR0qsEnnHApPyJpUz5/dRe+4eJrU70nBjgaeG2jw3viyYTjYUaIOfs4t+KrtXwTSo75cBd+bO5OFSH+NAHtBfEREeIEJj+v2KeY7UPqZVTabjoFWXF4yV7TyfGAb88L8gVU8TCByS+hl5wgHgB8N5U2o4Lm1OLiQcDH7GeHzH0nB57B/N4U59zid+459Y7PU0E3vvgJqKpcDRdEqJ8iIVwJxVE/ld51QInaUj9l9Yo5glA/ZRlv+aVySlh+A6dQPxV3lfJqH6+esnyqHJDtE9VScRSjekoxFaifslOvz+qRupajfkqRTqmf4rxfPlIO6me5M+zC2MFEu3Yc2aqzRJbIElkiS2SJLJElskSWyBJZIktUT6JUun7u9KqL5UytFGIswlVPTalYjvVTs+crpET9LHaG1FI/7YTd/qHF+eSpn7JchiFBS/3UlJbHVFrshJXz+l8CiZAaqJ/Slu/56qcsT9wU8In6qeH6E7LkUhupn5r84kxypJZI/ZTUtg7AN8kHqJ8SQ9BjOBFPmwK38BJcxgCDjfkR2JgX0N6fGhMix4Nns1ZjhJgQOWGc0xVs2NNuxou1nLN31sn3eDe7NzW2DKZHvXYW274/Y8HhbB2bpptvP8Phv2uYhtyfGgQNfwBeIFA/Nfv7opXEDnDnhtvNRtUDNpteHzJ7Wuo9uksLHvA+4+H+3XgaunnINOcL2IQqQnwN4z+zdtK4LCut5UvhYLrivvLdP910JWG/nM15CIfvMvbpZ3wxgg+3UW9pNo2HMN+UDJjljaryVjfonhUX06NZM3ujfsW6ntcIRv9/YaPqBgXkcTpTIjlHMLJGlTWqrFH1lWiNqu2nNaq2n9ao2n5ao2r7aY0qa1TZJ8sPkMgaVbbqLJElskSWyBJZIktkiSyRJbJElsgSPVUia1TVtOqsUYU1qh6H1qjaftoJu/3DGlXbT2tUbT+tUWWNqsenNaq2hg5cd6PqPzjP2kl34l8l38GsmwkuM55C0z07LZtclzHGjGflxefLW+mijjQo2kmezTn/u2g2zeczf97J30fPc86mB8Xs976YnceQ3fntDyVf9ptbqQ9XZdqA06NUclpQhg9Aa1RtPz8But0Pz3B64+AAAAAASUVORK5CYII=)}#webamp .band .rc-slider-handle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALBAMAAABbgmoVAAAAGFBMVEUAAAAICBApKUJKWmt7hJSLm6etvcbd5ukLNggsAAAAMElEQVQI12NQZGBgYFRgEC8vLy8WYBBPS0tzRqIExXDyQlxcQJQxEAgwAE1hFFQAAB9KDSykox1vAAAAAElFTkSuQmCC)}#webamp .band .rc-slider:active .rc-slider-handle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALBAMAAABbgmoVAAAAD1BMVEUAAAApKUJKWmvd5un5/v8UiEZ+AAAAJ0lEQVQI12MQYAACAQZmY2NjIwYGZiCHCYlyccDNg1BKQAAyAGQKAHJPAsUS1KniAAAAAElFTkSuQmCC)}#webamp #on{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAMBAMAAACO67B7AAAAIVBMVEUAAAASWwQvN01KWmtSZnN7hJSLm6ettca9ztbV3vL5/v8M+RL1AAAATklEQVQI12MoRwIJDFWr4GC5A0NVBxyUGjBUNRsbdzRpNHVoQHiCkh0aTU0aKDwlKG/mTBCvCcID6UfoQzUTYTmQV54aCgcGDCnGCGAAAPUyQLvRdOj2AAAAAElFTkSuQmCC)}#webamp #on:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAMBAMAAACO67B7AAAAFVBMVEUICBASWwRSZnNje4R7jJyLm6etvcYvdU+XAAAAQElEQVQI12NgwAdMXODAgYHBLQ0OEoA8VDkgdnFgcXBhgfAERV1YHBxYUHgMUF5oKIjnAOGB9cP0maGYqYDkEgAFZxmn+1/+wgAAAABJRU5ErkJggg==)}#webamp #on.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAMBAMAAACO67B7AAAAIVBMVEUAAAAA1gAvN01KWmtSZnN7hJSLm6ettca9ztbV3vL5/v911B9qAAAATklEQVQI12MoRwIJDFWr4GC5A0NVBxyUGjBUNRsbdzRpNHVoQHiCkh0aTU0aKDwlKG/mTBCvCcID6UfoQzUTYTmQV54aCgcGDCnGCGAAAPUyQLvRdOj2AAAAAElFTkSuQmCC)}#webamp #on.selected:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAMBAMAAACO67B7AAAAFVBMVEUA1gAICBBSZnNje4R7jJyLm6etvcapTzEQAAAARElEQVQI12MQRAYMaDwTFzhwZBB0S4ODRCAPVc5RUNDFUcTRRQTCY2B1EXF0FEHhCUJ5oaEgniOEB9YP02eGYqYiklsAdNMdgDKFw2kAAAAASUVORK5CYII=)}#webamp #auto{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMBAMAAADxOqKKAAAAHlBMVEUSWwQvN01KWmtSZnN7hJSLm6ettca9ztbV3vL5/v/WADVeAAAAV0lEQVQI12NIQwWpDJkzUUAyQ2Y5MihzYsgsUlIqLxQvLBcXFC8UBwswcJSLFwIFQAgmICiILNDRgaoCZBaQI1heWA4xA8MWVIc5MaSFuCADJ4ZgJVQAABsNRRhxaDvQAAAAAElFTkSuQmCC)}#webamp #auto:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMBAMAAADxOqKKAAAAFVBMVEUICBASWwRSZnNje4R7jJyLm6etvcYvdU+XAAAAS0lEQVQI14WOsQ2AQBDDAh8GYKMUHgF6ihP7j0CFxF+DS8tSIv0ymIh8T1xy9aIkI5wIEbmW/Qh2cPAr9BXb2QogOMaIaPSVtR19ACp1H3+cU6+ZAAAAAElFTkSuQmCC)}#webamp #auto.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMBAMAAADxOqKKAAAAHlBMVEUA1gAvN01KWmtSZnN7hJSLm6ettca9ztbV3vL5/v+vLTjBAAAAV0lEQVQI12NIQwWpDJkzUUAyQ2Y5MihzYsgsUlIqLxQvLBcXFC8UBwswcJSLFwIFQAgmICiILNDRgaoCZBaQI1heWA4xA8MWVIc5MaSFuCADJ4ZgJVQAABsNRRhxaDvQAAAAAElFTkSuQmCC)}#webamp #auto.selected:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAMBAMAAADxOqKKAAAAFVBMVEUA1gAICBBSZnNje4R7jJyLm6etvcapTzEQAAAATElEQVQI12WOwQmAQBADtwSjsaDAlKAFCIf9l+BL8NZ5DgNJqVE/sTGR8j1xlUcvhmSEEyFSHksdwQ4OfoW+Yj9bAQTHGJHa+sranj59DSTnUdDwigAAAABJRU5ErkJggg==)}#webamp #eqGraph{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHEAAAATCAMAAACQnBKzAAAAw1BMVEUqKUEqKUIqKkMrK0QrLEQsK0MsK0QsLEUtLUYtLUgtLkctLkguLUcuLUguLkcuLkgvL0ovL0swL0owMEsxMU0xMU4xMk0xMk4yMU0yMU4yMk0yMk8yMlAzM1AzM1IzNFE0M1E0NFE0NFM1NVQ1NVY1NlM1NlQ2NVM2NVQ2NlQ2NlU3N1Y3N1c3N1g3OFc3OFg4N1c4N1g4OFc4OFg4OFk4OFo5OFk5OVk5OVpsbH5vb4JxcYZzc4hzc4p0c4p0dIt1dYwbWqB2AAAC2klEQVQYGQXBIQ9lSRkFwDpf930zCQqBxaLQ/H+PRuDXrCQkbObd7kNVzD/+qSay+fu/BDL87d/MMtL5628iiP2X31cQ5M//6cp3nrJ//u+upgM//2gAfv7BO6aOP/33ndQx4HVJMQGeXnSgB0/V/lWicJvObrKOrDNJCwJQ1XVzz1F3DxYTsaHBBbx7MIhsfDNHfwSNlE8vuCO8V7QAEJGzTnSlYxL3nojNJkVC+NRLGtoC8wjSIOl9Z2NJ3syeugkAwLvjyFtMl6FaGhoGyK/HZ1SX20D2CzQN+nn3vK8eOoaxAFC0vKxplMlx14qEucCdC10XJquy4/Ho/gKmbO/Mu5/sGQZcAAhN7tr1Jk3cWcu6EM4rGCbBXNdwouX72M0DgXizjh19T6S9twBASU1a+632nn2wiPIgCLDfTViHDV52oFHo+4Oy35M6Ww0KEBXlOilu9uKs6AMCHYH3McpZdQe29gshzE17tlSWZLkDAkCKhnV4wxwW8t4ZCqUAZC8xeL5yLihY6Xx3NGfclqEAgLg30dPcW3dcNzBCigBAigvI95kPSMp36Udti+be6kkBoK0knVTXJzKLwnYgzBAea8Y0hwGery9I2vjkheSMe5iJjABwG5G0Rm6v27ksCXNfEMDXoLHSAq/nM0grfDs+r46LIUgLwKRoj1wd5TOzSG2ZLUgFmCu1dALPd7sFSVDXO3L1rDWARAElTmXuEe5qf8290uDdUqZDyHJnJAfwePrc7wtVsz+SPdou5xwKCCDK0pNFuehkkaI0dC7YXDe6kzP4ft/j+bGJ4J5fH4WIZSnXBYBGxDrvgt2MPRW2hhB30nDHIHTw4OXXD9BBn3yCNF3W62aNAYA7Dtfc4867j2sOxBkCiWIGUsrw5bXyA9FRJj0SzVJZ9qK3ANqRvWql7crWMitq27OBlNAro0E6+OKeF6Sy7XOPNhk3CmQCIORWVk/inPcO/g8Gk8tpHAw47gAAAABJRU5ErkJggg==)}#webamp #presets{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAMBAMAAADrBkIEAAAAGFBMVEUvN01KWmtSZnN7hJSLm6ettca9ztb5/v8/TtPPAAAAXUlEQVQY022PsQ2AQAwDXblnlBcbwAYI9K0bbgXWpwAEErnSuii2topV/ShY1PmzN3UiZOQIWY7uGDsBEwj+2pHjyCF+bJwACdfBGyNfD9Bt102qOU3bPP5pmoaKE9BgTHfswQ68AAAAAElFTkSuQmCC)}#webamp #presets:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAMBAMAAADrBkIEAAAAElBMVEUAAAAICBBSZnNje4R7jJytvcYlh7IyAAAAW0lEQVQY03WPsQ2AMAwEv/gFMgI7QP+RLgNQsP8qFAGBlOTK01m2VaZopXdGqkq7Rk6VtqiJkJEjZDl6NHYCJhD8ryPHkUP81jgBEvrAp5H7AmSqyjG/ZJt9eQMWOi9EkrQa+gAAAABJRU5ErkJggg==)}#webamp #preamp-line{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHEAAAABCAYAAADpXEERAAAAE0lEQVQoU2Pcdfruf4ZRMKRDAAD1lwNjTqcaUQAAAABJRU5ErkJggg==)}#webamp #equalizer-window.shade{background-image:url(data:image/png;base64,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)}#webamp #equalizer-window.shade.selected{background-image:url(data:image/png;base64,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)}#webamp #equalizer-volume.left::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAgMAAACw1x86AAAADFBMVEU5QE1jXjujlGrsznokh70QAAAAE0lEQVQI12PYwPCF4QcYfmHYAAArXgYxq2vCDQAAAABJRU5ErkJggg==)}#webamp #equalizer-volume.left::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAgMAAACw1x86AAAADFBMVEU5QE1jXjujlGrsznokh70QAAAAE0lEQVQI12PYwPCF4QcYfmHYAAArXgYxq2vCDQAAAABJRU5ErkJggg==)}#webamp #equalizer-volume.center::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAQMAAAD3d2XqAAAABlBMVEWjlGrsznoPowceAAAADklEQVQI12NwYHgAhw4AIi4E4a+iLsYAAAAASUVORK5CYII=)}#webamp #equalizer-volume.center::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAQMAAAD3d2XqAAAABlBMVEWjlGrsznoPowceAAAADklEQVQI12NwYHgAhw4AIi4E4a+iLsYAAAAASUVORK5CYII=)}#webamp #equalizer-volume.right::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAgMAAACw1x86AAAADFBMVEU5QE1jXjujlGrsznokh70QAAAAEklEQVQI12OwYKhh2AOGNQwWABlSA52dOQTnAAAAAElFTkSuQmCC)}#webamp #equalizer-volume.right::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAgMAAACw1x86AAAADFBMVEU5QE1jXjujlGrsznokh70QAAAAEklEQVQI12OwYKhh2AOGNQwWABlSA52dOQTnAAAAAElFTkSuQmCC)}#webamp #equalizer-balance.left::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAgMAAACw1x86AAAADFBMVEU5QE1jXjujlGrsznokh70QAAAAE0lEQVQI12PYwPCF4QcYfmHYAAArXgYxq2vCDQAAAABJRU5ErkJggg==)}#webamp #equalizer-balance.left::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAgMAAACw1x86AAAADFBMVEU5QE1jXjujlGrsznokh70QAAAAE0lEQVQI12PYwPCF4QcYfmHYAAArXgYxq2vCDQAAAABJRU5ErkJggg==)}#webamp #equalizer-balance.center::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAQMAAAD3d2XqAAAABlBMVEWjlGrsznoPowceAAAADklEQVQI12NwYHgAhw4AIi4E4a+iLsYAAAAASUVORK5CYII=)}#webamp #equalizer-balance.center::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAQMAAAD3d2XqAAAABlBMVEWjlGrsznoPowceAAAADklEQVQI12NwYHgAhw4AIi4E4a+iLsYAAAAASUVORK5CYII=)}#webamp #equalizer-balance.right::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAgMAAACw1x86AAAADFBMVEU5QE1jXjujlGrsznokh70QAAAAEklEQVQI12OwYKhh2AOGNQwWABlSA52dOQTnAAAAAElFTkSuQmCC)}#webamp #equalizer-balance.right::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAgMAAACw1x86AAAADFBMVEU5QE1jXjujlGrsznokh70QAAAAEklEQVQI12OwYKhh2AOGNQwWABlSA52dOQTnAAAAAElFTkSuQmCC)}#webamp #equalizer-shade:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAD1BMVEVKQT5SSj1sXUO0kWO/uX6z+JYEAAAAM0lEQVQIHQXBwRGAIAwAsLT07Z2zsP8qbuDBAliTmDjl1m8Gob6HK5uWti27V6uxDDFxfn1PDx8P0VYSAAAAAElFTkSuQmCC)}#webamp #equalizer-window.shade #equalizer-shade:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAD1BMVEVKQT5SSj20kWO/uX7CsWHebnl7AAAALUlEQVQI12NQAgIFBiUGBiYFBgVhYwMFBkVhY0Mg6QwmXVwEgeIuLgIwNWD1AJzCBeFqt4OOAAAAAElFTkSuQmCC)}#webamp #equalizer-window.selected #eq-buttons.clicked #equalizer-close{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAFVBMVEUpKUI1LxJZVjxkW0SHd0ypmGX5/v9OYEDlAAAAJ0lEQVQI12NgAANmRUFlBgamYOUgBgZGU1dDIKmSoghjQ8QhasAAAHO7BEc0qEt/AAAAAElFTkSuQmCC)}#webamp #equalizer-window.selected #eq-buttons.clicked #equalizer-close:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAElBMVEUxMC1ZVjxkW0SHd0ypmGX5/v/v3/6CAAAAKUlEQVQI12NwAQIHBicBBiEHBkcmIUYHBgcFAwUgKRwsAGNDxCFqwOoB1gEH67W94+0AAAAASUVORK5CYII=)}#webamp #equalizer-window.shade.selected #eq-buttons.clicked #equalizer-close{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAALVBMVEUoJz4oKD8pKUAqKUEqKUIqKkMrK0Q6MSljXjtsXUORbkq0h2O0kWPCsWH///8vo79mAAAAO0lEQVQI12NIdTFWUmDIbC/vFGCI2Nl5QoAhfM6a6UCy61U7A4P7nLVAdsTJzhsMDJ5ANQwMLkaKCgwA6D4RaTQt0CAAAAAASUVORK5CYII=)}#webamp #equalizer-window.shade.selected #eq-buttons.clicked #equalizer-close:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAElBMVEU6MSljXjtsXUORbkq0kWP////9IyyfAAAAKUlEQVQI12NwAQIHBicBBiEHBkcmIUYHBgcFAwUgKRwsAGNDxCFqwOoB1gEH67W94+0AAAAASUVORK5CYII=)}#webamp #position{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPgAAAAKCAMAAACuVWMrAAAByFBMVEUPDxgPEBkQDxgQEBkRERoREhsSERsSEhsTEx0TEx4TFB4UEx8UFB8VFSEVFSIVFiEVFiIWFSEWFiIXFyMXFyQXGCUYFyUYGCUZGSYZGSgZGicZGigaGSYaGSgaGicaGikbGyobGywbHCsbHCwcGyscGywcHCsdHSwdHS4dHi0dHi4eHS0eHS4eHi0eHi8fHzAfHzEfHzIfIDEfIDIgHzEgHzIgIDEgIDMhITQhIjUiITUiIjUiIzYjIzcjJDgkIzckIzgkJDckJTklJTolJTwlJjslJjwmJTsmJTwmJjwnJz0nJz4nKD4oJz4oKD8pKUApKUIpKkEpKkIqKUEqKUIqKkErK0IrK0QrK0YrLEUrLEYsK0UsK0YsLEUtLUctLUgtLkctLkguLUcuLUguLkcuLkkvL0ovMEswL0swL0wwMEswMEwxMUwxMU1hYm1iYW1jY29jY3BjZHFkY3FlZHFlZXNmZXRmZnNnZnVnZ3ZoZ3VoaHVoaHdpaXhpaXppanlpanpqanlqanpra3xrbHxsbH1sbH9tbYBuboBvboFvb4NvcINwcINwcYVxcYZxcoZycYdycodzc4hzc4pzdIp0c4p0dIt1dYwExkcuAAACuklEQVQYGQXBAWEANxADMPmSFsOAjT+QNX+eFEYgZicIBCMQMBlphNGBIJgZQLjId3bmPtcHfncAkIZoAAAAAECBAuy7Hsfb2dnuwEPB7qKawjer1OYBhR0jAFMAFQIAQRJsAjSBnQUJF74aHp+DuQAgDVEAAAAA0EIVAPvgy7BSeLTgWUChFhr5QAsS/jFumXD3NrlkiGDOkNnJbGJigksiOHuIuyYmFdzxMmaH3/9+GHvAqKPTkMKgAQCbziLV77xZCiv/AZY+qB2bv/Oofmn5+1mPWnm0fPieUjVG5pZJMZJ9aqXB75nFTm3qxgAsxZ5SxrBNcN/uGQz256vdKdg5+aRBMSAAAFlorc0OCQtg11sXYnbtobUU7nJJ1FA+1D3QmNQZjHKXmptFA3+LmAzGK3D1OyAjxDo1swV0Abc95UQZY4toTBKjAAqgE1qdo5YW/HFh/OSBMuBiBLx97+GTtxrf0NVHpSbxHki4w65eI8GECWoGluBxP0gg7iQwgTdmAF9nx6iwmeecpNK0aVdQEKWKLch+MxB4zvVgAbCr3vewCp+5QKpU6FKASaQM7oWZ3y9vBPTMgtCMeyjoOzBN4fGZ3YDfmWVA7zcmpTjvWpVSVkYRQAiTgXxfp4uqrJt92KUPAJun+FJwAkpHFAsvoLuD81MLrLqSSwOHCRM2jBnhXi7iGxH3rmEGWH8H4P4NKglchgoTkwUA0M3aqJ67pgt8w9+MNcjlgcV3oaelLA/7bSgahUfBrBkMnlHoR1LMM0Ew7HQFfDcgi3pzQYB1i+HKDxbg+8yXENasqQAASbNa5c1OhjRr/d3HWNiF2tHOg1ShO6hxPCld4S8IuOPfCIjpIJiaHdMDaXL2QJAQEAYEGCKAEQRpgLGGaBoBAABomkIrWkAVbIFSNkVhU4raFMWbLYV2WcX/K67c097eK2wAAAAASUVORK5CYII=)}#webamp #position::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAKBAMAAAC6bkgfAAAAJ1BMVEUJAgJlZXNlZnN1WyKDaTCNdTqcgkqvmGHFsn7by57u4rv06sf19fW6wGFFAAAARElEQVQI12PQnIkMAhgkXZDAUQYGSY/dcLCnFMj3PgMHp8F8YziwBvPL4aAaxPdB6N8G4p9CyJebAvmhyICBQYABBQAALnc7YhsUgeUAAAAASUVORK5CYII=)}#webamp #position::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAKBAMAAAC6bkgfAAAAJ1BMVEUJAgJlZXNlZnN1WyKDaTCNdTqcgkqvmGHFsn7by57u4rv06sf19fW6wGFFAAAARElEQVQI12PQnIkMAhgkXZDAUQYGSY/dcLCnFMj3PgMHp8F8YziwBvPL4aAaxPdB6N8G4p9CyJebAvmhyICBQYABBQAALnc7YhsUgeUAAAAASUVORK5CYII=)}#webamp #position:active::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAKBAMAAAC6bkgfAAAAJ1BMVEUgDABhRhBmSxNsUBdwVRt4XSGBZyqPdTmhhkuwmF6+qG/DrnXYxZOv4MtwAAAAR0lEQVQI12PwnIkMAhg8XZDAUQYGT4/dcLCnlIHB0vsMHJwG85XgQBvML4eDaiBf0wehfxuIfwohX67KwCAZigwYGAQYUAAAXWI7mESGeYIAAAAASUVORK5CYII=)}#webamp #position:active::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB0AAAAKBAMAAAC6bkgfAAAAJ1BMVEUgDABhRhBmSxNsUBdwVRt4XSGBZyqPdTmhhkuwmF6+qG/DrnXYxZOv4MtwAAAAR0lEQVQI12PwnIkMAhg8XZDAUQYGT4/dcLCnlIHB0vsMHJwG85XgQBvML4eDaiBf0wehfxuIfwohX67KwCAZigwYGAQYUAAAXWI7mESGeYIAAAAASUVORK5CYII=)}#webamp #shuffle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC8AAAAPCAMAAABDVWaoAAAAilBMVEUQWgAqKUIqKkEqKkMrK0QsK0MsK0QsLEUsLEYtLUcuLUcuLUguLkkvL0ovN00wL0swL0wwMEsxMU0xMU4yMU4yMk8zM1A0M1E0M1I0NFE0NFM1NVQ1NlQ2NVM2NlU2NlY3N1c3N1g3OFc4N1g4OFk5OVpKWmtSY3N7hJSElKWttca9ztbV3vLv///LbncEAAAAqklEQVQoz5WSsQ7CMBBD37WpGPgDpJtY+/8fAxLLfUbVM0OiNgKG4CGKL45jRbYbiSUIkBAiMZJEqI2EMjGYynVhHHoWmIfle1IEOeqeogCwAQwFq3oesIoADyfaAt4mBHivb/Av5h8nRQCslQVOHPrK/Nif/ouaSdDd+OlvXYDD2qOP1r9j98s8/p/5KlarMIoCu/SPXvmf/yb2SQJkotZD087Z2VrcBIM3KB9V4lGQbMMAAAAASUVORK5CYII=)}#webamp #shuffle:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC8AAAAPBAMAAACGpYupAAAAGFBMVEUAAAAICBAQWgBSa3Nje4R7jJyPn6itvca8iDuFAAAAY0lEQVQY02MQxA4EGHBLuIZighBDoER4ORYQCJLAoiMUIiEoKIpdQkgpNYAhIJSVNQBIARkBDEgSoRCJUAiESoilgXQwYOoAgQBsOkDiIDsCWMHCDCg6sLoKh4Q7LglD7IEIAKjwVurEkbm9AAAAAElFTkSuQmCC)}#webamp #shuffle.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC8AAAAPCAMAAABDVWaoAAAAilBMVEUA1gAqKUIqKkEqKkMrK0QsK0MsK0QsLEUsLEYtLUcuLUcuLUguLkkvL0ovN00wL0swL0wwMEsxMU0xMU4yMU4yMk8zM1A0M1E0M1I0NFE0NFM1NVQ1NlQ2NVM2NlU2NlY3N1c3N1g3OFc4N1g4OFk5OVpKWmtSY3N7hJSElKWttca9ztbV3vLv//8gEwg9AAAAqklEQVQoz5WSsQ7CMBBD37WpGPgDpJtY+/8fAxLLfUbVM0OiNgKG4CGKL45jRbYbiSUIkBAiMZJEqI2EMjGYynVhHHoWmIfle1IEOeqeogCwAQwFq3oesIoADyfaAt4mBHivb/Av5h8nRQCslQVOHPrK/Nif/ouaSdDd+OlvXYDD2qOP1r9j98s8/p/5KlarMIoCu/SPXvmf/yb2SQJkotZD087Z2VrcBIM3KB9V4lGQbMMAAAAASUVORK5CYII=)}#webamp #shuffle.selected:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC8AAAAPBAMAAACGpYupAAAAGFBMVEUAAAAA1gAICBBSa3Nje4R7jJyPn6itvcZs8alFAAAAY0lEQVQY02NQwg4UGHBLuIZighAjoER4ORYQBJLAoiMUIqGkpIpdQlEwNYAhIJSVNQBIARkBDEgSoRCJUAiESqilgXQwYOoAgQBsOkDiIDsCWMHCDCg6sLoKh4Q7Lgkj7IEIAGMfXXXsp3orAAAAAElFTkSuQmCC)}#webamp #repeat{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAPCAMAAADAkV+TAAAAeFBMVEUQWgAoKD8pKUApKkEqKUEqKkEqKkMrK0QsK0MsK0QsLEUsLEYtLUcuLUcuLUguLkkvL0ovN00wL0swL0wwMEsxMU01NlQ2NVM2NVQ2NlU2NlY3N1c3N1g3OFg4N1g4OFlKWmtSY3N7hJSElKWttca9ztbV3vLv//8ki4GoAAAAgUlEQVQYGQXBMQ7CUAwFMP+SzkgoO1vvfyQOgJBYWKB52OsOQpIVSJaZTdTnCgAAIDUuAACAcwoDAAAyKfCFHQBAAQ+OyO8NGlAAkL3Bs4Fa4AAvGgAqsAfQAKAWAPQTNKACgNYAoBYBAAAozgQAAFAyAQAAWLeRNSQRmS3j3GTCH4ZgNtlEi15VAAAAAElFTkSuQmCC)}#webamp #repeat:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAPBAMAAAAFYbKSAAAAFVBMVEUICBAQWgBSa3Nje4R7jJyPn6itvcb4vicLAAAASElEQVQI12NgwA9MXODAWYGBwS0NARyAXISsC5jLwMCCzGUUDAHpYkFwnUBSUC5raIgDA4ILkmFB5Tog9KJZhMI1Q+UqIHsAAPs1JqMDCtK2AAAAAElFTkSuQmCC)}#webamp #repeat.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAPCAMAAADAkV+TAAAAeFBMVEUA1gAoKD8pKUApKkEqKUEqKkEqKkMrK0QsK0MsK0QsLEUsLEYtLUcuLUcuLUguLkkvL0ovN00wL0swL0wwMEsxMU01NlQ2NVM2NVQ2NlU2NlY3N1c3N1g3OFg4N1g4OFlKWmtSY3N7hJSElKWttca9ztbV3vLv///lInoXAAAAgUlEQVQYGQXBMQ7CUAwFMP+SzkgoO1vvfyQOgJBYWKB52OsOQpIVSJaZTdTnCgAAIDUuAACAcwoDAAAyKfCFHQBAAQ+OyO8NGlAAkL3Bs4Fa4AAvGgAqsAfQAKAWAPQTNKACgNYAoBYBAAAozgQAAFAyAQAAWLeRNSQRmS3j3GTCH4ZgNtlEi15VAAAAAElFTkSuQmCC)}#webamp #repeat.selected:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAPBAMAAAAFYbKSAAAAFVBMVEUA1gAICBBSa3Nje4R7jJyPn6itvcYox7XLAAAATElEQVQI12MQRAEM6FwTFzhwVmQQdEtDAEcgFyHrAuYKCoogcwUYQpwVwWIwrhNICsoVDQ1xFERwQTIiqFxHhF40i1C4ZqhcRWQvAAA51isA/VWazgAAAABJRU5ErkJggg==)}#webamp #equalizer-button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAMCAMAAAC+5dbKAAAAUVBMVEUQWgAqKUIqKkMrK0QrLEQsK0MsK0QsK0YsLEUsLEYtLUcuLUcuLUguLkkvL0ovN00wL0wwMEsxMU1KWmtSY3N7hJSElKWttca9ztbV3vLv//9O4LHRAAAAaUlEQVQYGQXBwQ2DUAwFMEODRCao2H++HnrKofBf7e0NAAD5lhcAAM+6iwUAkJVXwQ8Ho42GVeDjimmmTSM7AGYAKHCBhmmww5GEntHTAykCcIozZ6A8CQAAqawAAEDda/NgbZFErMfuD041NCuZPULmAAAAAElFTkSuQmCC)}#webamp #equalizer-button.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAMBAMAAAB7FTvLAAAAIVBMVEUA1gArK0QvN01KWmtSY3N7hJSElKWttca9ztbV3vLv//9R/wqlAAAAT0lEQVQI12Moh4MyAYaqVTBQAuR0QEF7MIhjbNzRpNGkAeEYcHZodGg0wTlKGjCO5UyQDFQZEAD1QGTg9gA55amhUADkpBjDgQCDIAIIAAAWsDNHmvvPEQAAAABJRU5ErkJggg==)}#webamp #equalizer-button:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAMBAMAAAB7FTvLAAAAGFBMVEUAAAAICBAQWgBSa3Nje4R7jJyPn6itvca8iDuFAAAASElEQVQI12MQRAABBhSOgGsoFAQDOeHlUFAK4sBkQsEcQcHQANYAVghHSC2UNZQ1AM5hYIVxxNJAMlBlQADUA5ZxRzbNEOECAM5YHW8MP5O/AAAAAElFTkSuQmCC)}#webamp #equalizer-button.selected:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAMBAMAAAB7FTvLAAAAGFBMVEUAAAAA1gAICBBSa3Nje4R7jJyPn6itvcZs8alFAAAAR0lEQVQI12NQUIIDBQZUjmsoFAQDOeHlUFAK4sBkQsEcJaXQANYAVghHUSyUNZQ1AM5hYIVx1NJAMlBlQADUA5ZxRzYNyQUAEUAg+7nvOG8AAAAASUVORK5CYII=)}#webamp #playlist-button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAMCAMAAAC+5dbKAAAAUVBMVEUQWgAjIzgkIzckIzgkJDklJTolJjsmJTwmJjsnJz0nKD4oJz0oJz4oKD8pKUAqKUEqKUIqKkEvN01KWmtSY3N7hJSElKWttca9ztbV3vLv//+EzjHeAAAAXklEQVQYGQXBgRHCMAwEMLk4WYFj//nKAOHqR6o3AADk214AADyjGQCATKrhh+WwzwZygfve2ADUBYADwDT4gA2AhhUAxwZNACssAtqTAACgMwEAwPRRI5GpmTIhUX81UygSftVjhQAAAABJRU5ErkJggg==)}#webamp #playlist-button.selected{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAMBAMAAAB7FTvLAAAAIVBMVEUA1gArK0QvN01KWmtSY3N7hJSElKWttca9ztbV3vLv//9R/wqlAAAASklEQVQI12Moh4MyAYaqVTBQAuR0QEF7MIhjbNyhpKEB5RhwdmggcxAyljM7NDpgHCDQAMqBOXB7gJzy1FAoAHJSjOFAgEEQAQQAwMcyRToQk0kAAAAASUVORK5CYII=)}#webamp #playlist-button:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAMBAMAAAB7FTvLAAAAGFBMVEUAAAAICBAQWgBSa3Nje4R7jJyPn6itvca8iDuFAAAARElEQVQI12MQRAABBhQOo2soFDgDOeHlUFAK4sBkQsEcQcFQBlZWKEdILZQVmYOQEUsLZQ2FcYCAFSgH4rgjm2aIcAEAbLsb8tZoQy8AAAAASUVORK5CYII=)}#webamp #playlist-button.selected:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAMBAMAAAB7FTvLAAAAGFBMVEUAAAAA1gAICBBSa3Nje4R7jJyPn6itvcZs8alFAAAARElEQVQI12NgUoIDBQZUjmsoFDgDOeHlUFAK4sBkQsEcJaVQBlZWKEdRLJQVmYOQUUsLZQ2FcYCAFSgH4rgjm2aEcAEAZCcevKaFFFgAAAAASUVORK5CYII=)}#webamp #title-bar{background-image:url(data:image/png;base64,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)}#webamp .selected #title-bar{background-image:url(data:image/png;base64,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)}#webamp .llama #title-bar{background-image:url(data:image/png;base64,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)}#webamp .llama.selected #title-bar{background-image:url(data:image/png;base64,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)}#webamp .selected #title-bar #option.clicked{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAHlBMVEUUFB8VFSAVFSIVFiEWFSAWFiEWFiI0MCyah13sznoaG8L5AAAAPElEQVQI12NgYBAUCmBgmCCoaMDAWSmoZMAwvVIwNIBhRueMjgkMAoLTKwMYGAWnz0xgEBT0DAWxXdMSACxMDDJsyBoOAAAAAElFTkSuQmCC)}#webamp .selected #title-bar #option.selected,#webamp .selected #title-bar #option:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAD1BMVEUhKDU0MCyah12jlGrsznoe/O3VAAAAMklEQVQI12MwBgIDBgMHBgYDBhMRASDpKCIIJJ1UnJQcGAwEHUWAsoyOLkCSgQWIweoBtzQG0TH1VqcAAAAASUVORK5CYII=)}#webamp .selected #title-bar #minimize.clicked{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAMAAADXT/YiAAAASFBMVEUqKUIqKkMrK0QrLEQsK0QsLEUtLUctLUgtLkcuLUhFQTxSSj1aVzpoWTVrXUNzbFKId0mckXWqurG71tm/uX7AwcbE3+HO4c5KSa+JAAAAPElEQVQIHQXBwQHAMAjEMJvQfLv/lJ0ArpK3FsLQZxogW9uqXjqlkKQphYTmcGBI4wPU6OVd4FtvYEzyA+cLGDTjuSw1AAAAAElFTkSuQmCC)}#webamp .selected #title-bar #minimize:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAIVBMVEVFQTxSSj1aVzpoWTVrXUNzbFKId0mRbkqckXWjlGq/uX4Hs2WWAAAAOUlEQVQI12OYCQQTGKYzMLBPYJggKCgwgWGSiYvRBIYpYWkhExhmdK3qAJKrVq0AqunoaJ/AAFYPAAQVFS+2qihdAAAAAElFTkSuQmCC)}#webamp .selected #title-bar #shade.clicked{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAMFBMVEUtLUgtLkguLUcuLUguLkcuLkkvL0ovMEswL0swMEswMExFQTxSSj1rXUOqurHO4c6W/ePHAAAAQUlEQVQIHQE2AMn/AKqHZlVQAJnu7uUQAK7///4wAK3d3d0wAKzd3dwwAJzN3cwwAJvMzMNAAIi7u7MgAIZlVTAwDDgbUKzozR4AAAAASUVORK5CYII=)}#webamp .selected #title-bar #shade:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAD1BMVEVFQTxSSj1rXUOjlGq/uX5Idn/CAAAAM0lEQVQIHQXBwRGAIAwAsLT07Z2zsP8qbuDBAliTmDjl1m8Gob6HK5uWti27V6uxDDFxfn1PDx8P0VYSAAAAAElFTkSuQmCC)}#webamp .selected #title-bar #close.clicked{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAALVBMVEUoJz4oKD8pKUAqKUEqKUIqKkMrK0Q0MCxoWTVrXUORbkqjlGq0h2PCsWH///9ex0i3AAAAO0lEQVQI12NIdTFWUmDIbC/vFGCIONm5Q4AhfPbq6UCy61U7A4P77LVAdsTOzhsMDJ5ANQwMLkaKCgwA5wURVkMAFf0AAAAASUVORK5CYII=)}#webamp .selected #title-bar #close:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAElBMVEU0MCxoWTVrXUORbkqjlGr///+HjTObAAAAKUlEQVQI12NwAQIHBicBBiEHBkcmIUYHBgcFAwUgKRwsAGNDxCFqwOoB1gEH67W94+0AAAAASUVORK5CYII=)}#webamp #clutter-bar{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAArBAMAAAC3GdQgAAAAElBMVEUAAAAAAAgQECEYGCkzPElgYGraVCJcAAAAVElEQVQI132NsQ2AQAwDr8gCv0FGMNLTu8gKv/8qFCAgQqI7WWebbYyBACQJEUbyRDgaTf95Va3xeGWkKUTQqPz12m9eyyYB8s7eVEUSJs8VIPe1DmVJGRTmaMgdAAAAAElFTkSuQmCC)}#webamp #clutter-bar.disabled{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAArBAMAAAC3GdQgAAAAD1BMVEUAAAAAAAgQECEYGClgYGoHCnLLAAAAIklEQVQI12MwFBQUZDBgAAIDIBhULAVUlgJhFlivgomLCwA8qROh1kJ8awAAAABJRU5ErkJggg==)}#webamp #button-0.selected,#webamp #button-o:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAgMAAAC5YVYYAAAACVBMVEUAAAAYGClwgY/qIgoqAAAAGUlEQVQI12Nw0GBwaWNwaIKRGQwODAwuLgA+SAT1jbNsAAAAAABJRU5ErkJggg==)}#webamp #button-a.selected,#webamp #button-a:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHAgMAAABIN+TNAAAACVBMVEUAAAAYGClwgY/qIgoqAAAAGElEQVQI12Nw0GBwaWNwaGJwWQUmgWwGADIVBK9/og4OAAAAAElFTkSuQmCC)}#webamp #button-i.selected,#webamp #button-i:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHAgMAAABIN+TNAAAACVBMVEUAAAAYGClwgY/qIgoqAAAAF0lEQVQI12NwcWFwWMHgksLgoAAjVwAALckEbUwsrjEAAAAASUVORK5CYII=)}#webamp #button-d.selected,#webamp #button-d:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAgMAAAC5YVYYAAAADFBMVEUAAAAQECEYGClwgY/lGZUOAAAAHElEQVQI12NoYGDo6GBo+MPQcZqh4TCIdACSfwBnkgl9KMHv2wAAAABJRU5ErkJggg==)}#webamp #button-v.selected,#webamp #button-v:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHAgMAAABIN+TNAAAADFBMVEUAAAAQECEYGClwgY/lGZUOAAAAF0lEQVQI12NwYGDwOM3gcBhG/mdwsAEAPG8GMJvxEOEAAAAASUVORK5CYII=)}#webamp .shade #title-bar{background-image:url(data:image/png;base64,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)}#webamp .shade.selected #title-bar{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAAAOCAMAAAA7SAh7AAACFlBMVEUAAAAA+AAKDRYNDRQPDxcQEBkRERsTEh0TEx4TFB4UFB0UFB8VFSAVFSIVFiEVFiIWFSAWFiEWFiIXFyQXGCQYFyUYGCUZGSYZGicZGigaGScaGSgaGicaGigbGyobHCscGyscHCsdHS0dHS4dHi0dHi4eHS0eHS8eHi8eHyUfHzAfHzIfIDEgIDEgIDMhITQhIjQiITQiIjUjIzYjIzgjJDgkIzckIzgkJDklJTolJiwlJjIlJjsmJTsmJjsmJj0nJz4nKD4oJz4oKD8pKUApKkEqKUEqKUIqKjoqKkEqKkMrK0QrLEQsK0QsLDssLEUtLD0tLUctLUgtLkctLkguLUcuLUguLkcuLkkvL0EvL0ovMEswL0swMEswMEwxMUIxMU0xMk0xMk4yMU0yMU4yMk8zM1AzNFI0MCw0M1E0NFE0NFI1LRA1NVM1NVQ1NlQ2NVU2NlU3N0Q3N1Y3N1g3OFc3OFg4N1c4N1g4OFk5OUc5OVo9P0w/QitFQTxJSVlOTl9SSj1YWGJaVzpbW2JdXWdgYGpiYm5kZHJmZnVoWTVpaHdqanprXUNra3xsbH5uboFwcINxcYZzbFJzc4hzc4pzk5p0dIt1dYx3d4GBl42EhI2Id0mIiJeUlJ6Zc0Kah12ckXWjlGqlpauqurGztri2nFS71tm/uX7AwcbE3+HO4c7V1drj4+fsznrvvmbx8fP////Kv08RAAAFRklEQVRIx+2XTYiVVRjHf89z3jszXq4zmJozvpJhfoQp4a5NIrRwEYFIi4hUKsIW0aKdGISISZCLBDcRuFCIVm4icpXtohoilEEFwcXc8UrkoNnVYd7zPC3Oee/MnQ8cXHcY5p6P55z3Of/n638kkJvAgq70D5KkuNLorde7C3FRQFBwkbxNoBA1zYcEEFCXelEUmftOUdFwcWS+NoILgoAFvE9NwMXBXW1uVK8Apk6VuuA4EJOMY2ppQtwBg6hVkiw4QX+T5ceynFg90KUnZGm0F5+jC7ebzoPGEfCF+oFLDYapZXhqfKxPcGFnwUQSPlfA54hn0wgS0q+6IoTYME1WTTZmAFBELaQdKqgHRBCXBtKTFBpWO4Zq8iVVUARBKVws9NzPinSsZxgUCsBr70MxhR5E85uRcPD0J1RFla8XswtY7SGOGYZjYhhm5hhEcROPuIGjEC328CoyJHj6eqhEcECsz5DeCxTEg5PgNEDELF0jKhFBC8WMoiFgWT+MGPNhEVSLfD0HBVWKAgwSJA5WQ7UIkH6nNqGyqja+imCKmRBT9LhiII4loAQUHBePtbcU9VUvvgPiURVxEDcFYsjJoLZWz5WzB6s86tPpBitrO1YovgPgAACjHRil/pem6OgoU2psBGjjm5iELbdN1dyT4+hvGSHPjnNk3NkCcLPyxuxugD8MXuvehQ3NH9ACggW4ePniIRAEcfmao2dbH5wa/vjs0NGvBn8devnPb/RM0fmCMzw8eXyYY5+sg+rqJYRHx1rz73BwhZicWqH4KeDh6QMolFMbS9owWkJCZbQMUAam2FgCMCmUZXuyvK0GIq9eSYYfS95U9fKGPB8Atl/3andYP8yDPeN494Vmtzl2Czy5KBcvp4QLuNAdPtziozXTKXe8dAs4UngLoPXmaghw7dpb21RcGOFpWlh2ReYSX5YbySGysQwxzfVQ6ROMiEMos7jvDfuu4HU66WuNwQBxBq0CwzD8F87d5tjM4J27uBc5SF+BC/dh5H0EJnfugU2NO0nF1iZg8+xMa9cEs43dPB5yGB3AMIHxp8JkvD/tL1UbAPh9XkUqwxwA5SJQevUqlKAGewNh308YaUiViy+4NAdWwaNABTtn6s3dmWfudXGkSMn8kAsXfmH/ewjw/c7hx2GtnwugzFRrIYx0Z1uvTzC9fujBAMBI6++fXQS2PhUmW1foJ9tqRAzaPVAi7fmQaM8PKiC2Swy2EIHtN2uJSlJuBcTXMQiNtHMQJiBCc/DeYBPxVPEkV/39mRjcmG08CGv/zR+68KFwuBgYoAX8M9x5Docb36Wqw/3yaTBpLbvii+Taud+hBNOFiORK24ug9u2kUbtfoKgyaYnuhEFgVZRZ4vQapokENozd6TbHuhNGkWJWgHfPv5fZkk8/e4e13WyWiRsvsvnhp3KytQs6q89/lquQWoDmtyxFup7UvgRg+olyxwEOmqG06XRGUTp12FjuTcFUSrFRaU9WtI060uJ1eHsB1o7/+IYBlxyuMgmMe6R56y50mygSTpwmkbZCauaWyTQN6VFwBKQBKMHSWEEkYCqCQCNvQkWUgAUBCaYKWkRVtCbziZEJ4hJSWdeaAPb4mksf510ebKtZq4tJCiADx4IlDuJQ4YCbVmCeyYlVxSwGlbhLBW64GHZb50CMVaxzUJqq3xdSX7bWTXLVFoiERFobmSWReK9ZDl5VA/PEZbV+kBSZGgbBLZ3qmvKCUlCzO8uQqLJE9QAz6xk/iplVVInDCpJ7DlVAcMcqMNwzbWQ2we2Og1kqUiD/vwEXvQH/A3+xY8OlLccKAAAAAElFTkSuQmCC)}#webamp .shade.selected #title-bar #shade{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAMAAADXT/YiAAAAM1BMVEUtLUgtLkguLUcuLUguLkcuLkkvL0ovMEswL0swMEswMExFQTxSSj1zk5qBl42qurHO4c7FV37rAAAAOklEQVQIHQXBwQ2EQAwEMCdEPK7/YhFiM2fXzybCxAXvN1VVbe9tpenSDDCh+GhZVmpyHDwZu2HP9QfI+BkLtDdVPQAAAABJRU5ErkJggg==)}#webamp .shade #title-bar #shade:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAD1BMVEVFQTxSSj2jlGq/uX7CsWH/Y2uiAAAALUlEQVQI12NQAgIFBiUGBiYFBgVhYwMFBkVhY0Mg6QwmXVwEgeIuLgIwNWD1AJzCBeFqt4OOAAAAAElFTkSuQmCC)}#webamp .shade #position{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAHAgMAAACTjE7vAAAADFBMVEUAABAwMEsxMUJaa3u9OGBkAAAAIklEQVQI12NgAIIDDFqrVq06wCAaBiZDQ8PAZCiM/A8EBwAZeBBhq+F40QAAAABJRU5ErkJggg==)}#webamp .shade #position::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAQMAAAD3d2XqAAAABlBMVEWjlGrsznoPowceAAAADklEQVQI12NwYHgAhw4AIi4E4a+iLsYAAAAASUVORK5CYII=)}#webamp .shade #position::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAQMAAAD3d2XqAAAABlBMVEWjlGrsznoPowceAAAADklEQVQI12NwYHgAhw4AIi4E4a+iLsYAAAAASUVORK5CYII=)}#webamp .shade #position.left::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAgMAAACw1x86AAAADFBMVEU9P0xoWTWjlGrsznp9Nqf9AAAAE0lEQVQI12PYwPCF4QcYfmHYAAArXgYxq2vCDQAAAABJRU5ErkJggg==)}#webamp .shade #position.left::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAgMAAACw1x86AAAADFBMVEU9P0xoWTWjlGrsznp9Nqf9AAAAE0lEQVQI12PYwPCF4QcYfmHYAAArXgYxq2vCDQAAAABJRU5ErkJggg==)}#webamp .shade #position.right::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAgMAAACw1x86AAAADFBMVEU9P0xoWTWjlGrsznp9Nqf9AAAAEklEQVQI12OwYKhh2AOGNQwWABlSA52dOQTnAAAAAElFTkSuQmCC)}#webamp .shade #position.right::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAHAgMAAACw1x86AAAADFBMVEU9P0xoWTWjlGrsznp9Nqf9AAAAEklEQVQI12OwYKhh2AOGNQwWABlSA52dOQTnAAAAAElFTkSuQmCC)}#webamp #volume{background-image:url(data:image/png;base64,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)}#webamp #volume input::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAALBAMAAAC9q6FRAAAAFVBMVEUAAAALDxYvL0RKWmt7hJStvMTa5+opTTwbAAAAMUlEQVQI12NQFAQBIQaxNBBIZGALBYIQAyAtKiqKlwapM2RgcwEBQwZhYxAwZICaBwCdgQ6Jd297uQAAAABJRU5ErkJggg==)}#webamp #volume input::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAALBAMAAAC9q6FRAAAAFVBMVEUAAAALDxYvL0RKWmt7hJStvMTa5+opTTwbAAAAMUlEQVQI12NQFAQBIQaxNBBIZGALBYIQAyAtKiqKlwapM2RgcwEBQwZhYxAwZICaBwCdgQ6Jd297uQAAAABJRU5ErkJggg==)}#webamp #volume input:active::-webkit-slider-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAALBAMAAAC9q6FRAAAAFVBMVEUAAAALDxYZICovL0RKWmva5+r///+U4Y9MAAAAMUlEQVQI12MwFAQBYQbRUBAQZGBlAAIWBiQ6ISEBKw2SV4TTIi4gIMhgJKQopCgoDAB2aAh/NddRQgAAAABJRU5ErkJggg==)}#webamp #volume input:active::-moz-range-thumb{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAALBAMAAAC9q6FRAAAAFVBMVEUAAAALDxYZICovL0RKWmva5+r///+U4Y9MAAAAMUlEQVQI12MwFAQBYQbRUBAQZGBlAAIWBiQ6ISEBKw2SV4TTIi4gIMhgJKQopCgoDAB2aAh/NddRQgAAAABJRU5ErkJggg==)}#webamp .gen-window .gen-top{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUAgMAAAAFGX4uAAAACVBMVEUeHi8rK0Rra3zjkZV/AAAAG0lEQVQI12NggIJVYNDAEAoGDlSj0QGx9kABAFXxKF3wQT+3AAAAAElFTkSuQmCC)}#webamp .gen-window .gen-top-left{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAB4ElEQVRIS61Vu04DMRDc3WuQqEBIVKlAQkKioEZU1PkVpHzhXZX8RUCiTpUjojs04/XrcjyUxFF09p3t8c7OjnU2exikaiqqmt6wryY6iLCrxg5+aGp4Wh77WszjDMwFyHw+r2GwEb9jmm+GycXmEYhgFjaM8/fWRZCuXYaj8kweTbExI4gbqYpxnIFThFxj+UBlJG27DFQ4DE9anb4Y+yYJhNSoqMWD/ATSrSIxKZJtv67TdeAo5SREoqJD4Ljv1/LydCO3s7MDt87LEsg4J/3nmywWr0cDkP6U+G4l0LKnXQByeXF+YhCoC1lxmQIEdJ2iTdAlzEu/e5f7u2t5frw6GqcG8QrFA3Ww+/o4GqDOCeny5iqD7vkP9ZzrZqJOyDTs5bdipLpEZNtv9guSi8MBcuXnwvMP2SmSE4y8awwyrnzaSGmMlc2MDTLazR8gMM1sM7Rb5im4cuHCUZFuQdlQs9ftJT7SBZCOVuNUaSNmOGEjhnfsF5R5Tho1GSpjLax+TBdB2pWXTsPUmzXBYV0M6JvfN3R8CZTGdxRM6cLTIMH+UTe8nCJl1jh1iDJSmNVVglBt1X1SqCtE4rIeSdpIHaIK9FF4BmKjOAA88Nv/InHgcJXmeyJTN3X91ur6BrqJo0MRJOhhAAAAAElFTkSuQmCC)}#webamp .gen-window .gen-top-left-end{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAABxklEQVRIS7WVvUoDQRDHZ/r4DIEThCiCtn4UCpa+gIiF76DmCWwv+D5WYm0nCFpZCSKWKZIdmY//Zu/CxSaXQPZuM7v/md2Z3/DO6FSEhESE9COSbCSbjUdKpC9qY7Nmu7wGa5MQsVn6Djy+qWMpRHwD1+nazIXwdVGTtfkU7+EZ8dHBpVnoD5tBcglsoqNGZ2Nsi7nCGbWx/+EYIhUhPj68Et/EpVTCDIsNTVznUyJhIUouZh7H8apzcIQ4HApRHg4rHH3cwHqHwaAivr87703k/XNKj88fxJPJpDcRPZO6fiDe39vtTSTxlH5/5sTXF2e9iWgkdlx93snTyze9vn0RV5tbvUUyn81osFGVdeJalu9R7VbBKVmN2JzWSVQ1UASUoBiBJq96rxdeF7u8lt3BJXZtj06CIisA2Y6uzbQcnQs5uhYI4vFtLZmuK6CIYyi5lsFYOBGYzAxTmwKQosjpZlcAEPfWuAtEUrQL3ImJAJDGOu0bIPAShb3XLHqP09lhGmgFqdVbPDdE0LDQrAoROwLNrPZcRn5k5X+o7+4nqXGMubdEerZT2BxpR+Ip7BlRpiHaL5pQo3aK7MpNOqLKTbHIrj9doofFD8vqAQAAAABJRU5ErkJggg==)}#webamp .gen-window .gen-top-right{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAMAAABPqWaPAAABYlBMVEULFRIMDAweHS4eHi8fHyIfHzAfHzIgHzEgHzIhIDIhITMhITQiITQiIjUiIyYjIjYkIzckIzgkJDklJDomJTkmJTsmJTwmJjsnJj0oJj0oJz4oKD8oKEApKEApKUApKkEqKUAqKUEqKkEqKkIrKUIrKkMrK0QsK0QsLEMsLEUsLEYtLUYuLUcuLUguLkcvJwgvLkkvL0ovMSUwL0kwL0owMEsxL0wxMC0xMEwxMU4yMU0yMU4zMk8zMlA0MlA0M1E1M1I1NFM2NFM2NVQ2Nhg3KxA3NlU3NlY4NVU4NlU4N1c5N1g5OFo6OFk6OVo7OVw7Ols7Olw8OVs8Olw8O11GQh9JRjlORDBQPx5dVztiWkVqanprXUFra3xsa3xsbH5tbX9tboBubX9vboFvb4JwTyxwb4Nxb4RxcIVxcYZycYZzcodzcoh0c4l0c4p1dIt1dIx2dY13dY6Gd02QkJCZc0LWhhB9AAABJUlEQVQYGT3BvWqUYRRG0X2++bRSGxsVhBls0oidP3W8gYCFXoW3JV6DVgmxslBbIQELJRAQA0Kc9zzbmcBkrVrZrTEaYuylEXs+EK/EEKNo4HA+SVf0n2mTMTqJcc00TTeBoGwUBZMINXPteTL2fn2E/XvHg/ktOz/fP4Ve7ZerU2Cqaw/YePdndXd1+qEWzIfsrKGbXNy+OCPN/IhrX1nI7+XFw3OqnO+z8wOa17dOz86XL79L3WHn7zMz9r59gSePP62pgxrG0bG1L23TraRWI24kRGNilv3iqJiaAgQRtEAomF+JIYRotPGIrfkki3UcncTkcqQHsjEtGEBRVeRymIBsTBYb3lCaqTqJbE0lG5WqVHrEyJX586A12omj45tj2foP9wDyBsXxPvcAAAAASUVORK5CYII=)}#webamp .gen-window .gen-top-right-end{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAByUlEQVRIS7VVPUsDQRCdWRvBShGszoAKYg4C1mJj8m8Cgr2/1cLfENBu5b352D1NY7GXhLvszc57MzvzRqdpU1VV8MOlolJFpeCvFuEq3uMDGyxU3Ls1mrit22MvfWDffv9e7dGccfGXg3CYd5o6KS1GrtsbPoK0zuttNXtjh3thZG0zWaYTY8z3ngGVIlosMiMS0cNGhCBprCq1ihTEWVW0mPNMlRNAKrC5SAAZoRLA/uzsRed5Vw+HDxqNunS1uqnbp1u5m05HYQhB3t5ehwHweABycX42HgTpGnkxkvX9lTw/Xg7DYXV9fX8OA+CZzA8vVbwfotYhK9Zw3iuhAtmgaEhvvGhIykqoABq6UJ74vZ422YwhAyYLTbOsgTv5iOdOz9j1qVve/a5UekwgE2ThfAnSVMCpdXLS5MlOIQWyZ2tpa/q1EMbQOAV3k5c/kaYqe/r+L5AOvtAuW4voeKY8DmhfJ5BkXzwlfOksUBR5oFhvotkLa4BYVKHGATLvcp5AdS3DHYinrZ8XrQgccDEa4MMjCQVnCZ+oaEy7fkZ0g2kBQp1HfA3E5lArDpawF0OWcIaJ4/TDzPF7tMpatNYOffX5hPUW/wFZNjaZ4b4luAAAAABJRU5ErkJggg==)}#webamp .gen-window .gen-top-left-fill,#webamp .gen-window .gen-top-right-fill{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAAWklEQVRIS2PU0nT8z0BjwFhe1kd7S2ysY4eJJfLySrT3SVu5L+0tmTBhAu0tMTTQpb0lSVGutLeELnGipKxGe5/QJTPSpeyiiyWjBSQpVRAjXVIXXSyhR+oCAGL8JbEqBdscAAAAAElFTkSuQmCC)}#webamp .gen-window.selected .gen-top{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUAgMAAAAFGX4uAAAACVBMVEUeHi8rK0Rra3zjkZV/AAAAG0lEQVQI12NggIJVYNDAEAoGDlSj0QGx9kABAFXxKF3wQT+3AAAAAElFTkSuQmCC)}#webamp .gen-window.selected .gen-top-left{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAMAAABPqWaPAAABHVBMVEUdHS0dHS4dHi4eHS4eHi8eHyUfHzAfHzIfIDIgHzEgHzIhIDIhITMiITQiIjUjIjYkIzckIzgkJDckJDklJDolJiwmJTsmJTwnJj0oJj0oJz4pKUApKkEqKUAqKUEqKkEqKkIrKUIrKkMrK0QsK0MsK0QsLEUsLEYtLUYuLUcuLUgvLkkvL0owL0owMEsxL0wxMEwyMU0yMU4zMk8zMlA0Mk80MlA0M1E0NFE1M1I1NFM2NFM2NVQ3NVY3NlY4NVU4NlU4N1c5N1g5OFk6OFlCQTtqanpra3xrbHxsa3xsbH1sbH5tbX9ubYBuboBvboFvb4Jwb4Nxb4RxcIVxcYZycYZzbFJzcodzcoh0c4l0c4p1dIujlGrsznr///9wBmqFAAAAvklEQVQYGQXBwQlVSQBFwTq33+DWnUuj0RQmXMNwMzAKgjkI/7dVQYdtrZwyq3xFTlqqtUoP39dOa9apc9pOjXe8cRky8NDN/gcA8HDVj38DAHiYew0AwMNeD78BADy8hk8AAB4W/nwAAHh4nXz+BgDgoejjqXaqp22nHs79lZ0yM2tVgze8BHcBD68zX0yt1Jbp4XrPf6fqbJ72zz1tsN7e6N47eo07eFvBcrnQIPdyXbjyuu7DdOlnZk5Z1V/Roy8hK3ODtwAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-top-left-end{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAByUlEQVRIS7WVPU4DQQyF7Z5cgaVJpAAnIFAk50AcgB4UwQEoKNJQp6GkpKCgp6ShoUFcgCJtkBgj/7zZ2Y0WmmwiZXcnXj97xv7MB+OZCAmJCOlHJNmVbDVuKZE+qI2tmu3mO3g3CRGbpXvg+cUiXoWIO3CdLmcuhK+Lmqytp3iOyIiPj07NQn/YDJJLwIleNTu7hlusFcGojf2PwJCpCPHJ5EzciUuphBkWDk1c11MiYSFKLmYRx/ZqcAiEOAIKUd6thtj6OIHtXgY7FfHX61VvIk8vK7q+fdZjyKe03RTCW7U3Ip5NJ71l8sMr+vz4Jr6/O+9NRJOx7erzTG6W7/Tw+EY8HB32lsl6vabBoCr7xLWs3qPbrYNTsh6xNe2T6GqgCChBMwJN3vXeL7wtdnkve4Ab7NofT4MifwCynV2baTk7F/KmqBHE88uFtQqI2QVFbEPJtQzGIojAZGaY2hSAFEVON7sCgDi3xlkgk2Jc4ExMBIA01uncAIE3KOyzpp49TmeHaaAVpNZocd8QwcDCsCpEbAu0stprGflRlf+hvnuepMY25tkS5dkuYQuknYmXsFdEWYYYvyiERu8U1ZWHdGRV47aurl8JSofPjXVkWwAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-top-right{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAMAAABPqWaPAAABO1BMVEUeHyUfHzAfHzIgHzEgHzIhIDIhITMhITQiITQiIjUjIjYkIzckIzgkJDklJDolJiwmJTsmJTwmJjsnJj0oJj0oJz4oKD8oKEApKEApKUApKkEqKUAqKUEqKkEqKkIrKUIrKkMrK0QsK0QsLEUsLEYtLUYuLUcuLUguLkcvLkkvL0owL0owMEsxMEwyMU0yMU4zMk8zMlA0MlA0M1E1M1I1NFM2NFM2NVQ2Nhg3NlU3NlY4NVU4NlU4N1c5N1g5OFo6OFk6OVo7OVw7Ols7Olw8OVs8Olw8O10/QitCQTtdVztqanprXUFra3xsa3xsbH5tbX9tboBubYBvboFvb4Jwb4Nxb4RxcIVxcYZycYZzbFJzcodzcoh0c4l0c4p1dIt1dIx2dY13dY6Zc0KjlGqxnVm2nF7sznr///+ZhXPBAAABBUlEQVQYGQXBwYmUURBG0Vv1P90KvWtnQCcBxyBEEAMxKWMSWjQAB2V2DeKyX33Xc+reGY3RoHHeGHHWR1HVMWgUDXxbT5mK3swYkyQab3T3SyAoQFFQIhQAAPA+5iFXOPVls74AADBf30HuOn3+A6wCAGABXPucfr7WMesXAICAkry4hQzrDgAAoIru29FUuQ4AAP6BnM7P6df5LfUKAOAvj5qHXOHU32/Uh9rGnTiaMSapza77HdWEqCbm7Txetj0UIIigJRBkfRJDGKJq5EID6ynHLe4kMTpxAKEPNlBUFRiQAhZtAbgUqgqqJDV0CVCpEqHAojesn5vRyBh0/PyD5tj8B5vM5TGngJW4AAAAAElFTkSuQmCC)}#webamp .gen-window.selected .gen-top-right-end{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAABzUlEQVRIS7VVu04DQQy0lx+gokuQEEjAiXwAJYSCgpIfoE1NgUTLT1KRjh4qKBbN+LF7kIZiL4nusuf1jL32WBeLVVVVwQ+XikoVlYK/WoSreI8PbLBQce/WaOK2bo+99IF9m81ztUdzxsVfDsJh3mnqpLQYuW5v+AjSOp1fV7M3drgXRtY2k2U6McZ87xlQKaLFIjMiET1sRAiSxqpSq0hBnFVFiznPVDkBpAKbiwSQESoB7M/OXnSa1vXjc0ujUZcuD0/qy+ON3F7uj8IQgmzfXocB8HgAcnx0MB4E6Rp5MZL7uwt5ejgdhsPq+vp+HwbAM5nOrqp4P0StQ1as4bxXQgWyQdGQ3njRkJSVUAE0dKE88btcrLIZQwZMFppmWQN38hHPnZ6x61O3vPtdqXSXQCbIzPkcpKmAU+vkpMmTnUIKZM/W0tb0ayaMoXEK7iYvfyJNVfb0/V8gHXymXbYW0fFMeRzQvk4gyb54SvjSWaAo8kCx3kSzF9YAsahCjQNkWuc8gepahjsQT1s/L1oROOBsNMCHRxIKzhLeU9GYdv2M6AbTDIQ6j/gaiM2hVhwsYS+GLOEME8fph5njd2eVtWitHfrq8wnrLf4D9zg6mAHJo5AAAAAASUVORK5CYII=)}#webamp .gen-window.selected .gen-top-left-fill,#webamp .gen-window.selected .gen-top-right-fill{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAAWklEQVRIS2PU0nT8z0BjwFhe1kd7S2ysY4eJJXLyqrT3yZtzVbS35P///7S3xMnRmvaWLJ6SRXtL6BInqmo6tPcJXTIjXcouulgyWkCSUgUx0iV10cUSeqQuABQNKbDZQyxmAAAAAElFTkSuQmCC)}#webamp .gen-window .gen-bottom-left{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAAAOCAMAAAA16ON4AAABfVBMVEUdHS0dHS4dHi4eHS4eHi8fHzAfHzIgHzEgHzIhIDIhITMhITQiITQiIjUjIjYkIzckIzgkJDckJDklJDomJTsmJTwmJjsnJj0oJj0oJz4oKD8oKEApKEApKUApKkEqKUAqKUEqKkEqKkIrKUIrKkMrK0QrLEQsK0MsK0QsLEUsLEYtLUYtLUgtLkctLkguLUcuLUguLkcvLkkvL0ovMEowL0kwL0owMEsxL0wxMEwxMU4yMU0yMU4zMk8zMlA0MlA0M1E0NFE1M1I1NFM1NFQ2NFM2NFQ2NVQ3NlU3NlY4NVU4NlU4N1c5N1g5OFk5OFo6N1k6OFk6OVo7OVw7Ols7Olw8OVs8OVw8Olw8O109O149O2A9PF89PGA+O18+O2A+PF8+PGBqanpra3xsa3xsbH1sbH5tbX9ubX9ubYBuboBvboFvb4Jwb4Nxb4RxcIVxcYZycYZzcYhzcodzcoh0c4l0c4p1dIt1dIx2dY13dY53do54dY94do94d5Ap3ahhAAACBUlEQVQYGQXBAQEYNRAEwNlLig3E4KTCcFK81AZ8bpmJn7/89vOX3z+BgBAEgQyBNARCIEHS2YEICIEAIR0BUsEF8OcvxhhwKxiXKQNxZDCBMGJ0mL3OmhpJwxHBfacmzA4u333+gAGAMQk6PqlkL7tYrnOSWca2CaCb1g5vqESDReG8+koHcOdcHwYAI6SVPWcL+RgMvmA6kEQLdOrMDHYAOHaFxxl3Hxafz6Y9ywAQEZWKTEgVwQB9igVJqkbtpkA84Jl56tjNiaM78F1mtsMAaLSrxWjKTgIB4DQs1Wg13U5p0W3nALrS7TPd/x4MYHZzggGIBmlEvUrYizwLfWvBCAVNNB3zhMYDTo5xfpzPMQ4Bxk7+/f77GEDfiYyXYh3RrO+z3xgcqmWsgkjaRuweNSbn0VIv+rmM82jB4vtxzuUCf5OKQUBgEAiSgATSIBiCwGww0hAkHRyEA0BgAFSwAsDA7iaQAECRYUYCMDvMUBJoAp51AARw4c+/AASIRgTSmEYCIkAIIQ1iEAQEIg0CqVMBBBfrn67rHZEBmWCa+913YcLhwAghaSJx1umI2RwBZ08a15c5zyGBS3NoDGtekTFMmXNm26i6TsyMOk+2BkAlgjUZTM+8tiV7FJ9rzXlPAZv0CQGAMDUNBIaOkCbSEAIiMAEERo1UCCSB67vOOwBR8T8KSRhI0bzb7AAAAABJRU5ErkJggg==)}#webamp .gen-window .gen-bottom-right{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAAAOCAMAAAA16ON4AAABfVBMVEUdHS0dHS4dHi4eHS4eHi8fHzAfHzIgHzEgHzIhIDIhITMhITQiITQiIjUjIjYkIzckIzgkJDklJDomJTkmJTsmJTwmJjsnJj0oJj0oJz4oKD8oKEApKEApKUApKkEqKUAqKUEqKkEqKkIrKUIrKkMrK0QrLEQsK0MsK0QsLEMsLEUsLEYtLUYuLUcuLUguLkcvLkkvL0ovMEowL0owMEsxL0wxMEwyMU0yMU4zMk8zMlA0Mk80MlA0M1E0NFE1M1I1NFM1NFQ2NFM2NFQ2NVQ3NlU3NlY4NVU4NlU4N1c5N1g5OFk5OFo6N1k6OFk6OVo7OVw7Ols7Olw8OVs8OVw8Olw8O109O149O2A9PF89PGA+O18+O2A+PF8+PGBAP1BAQFFAQFJfX3Fqanpra3xrbHxsa3xsbH1sbH5tbX9ubYBuboBvboFvb4Jwb4Nxb4RxcIVxcYZycYZzcYhzcodzcoh0c4l0c4p1dIt1dIx2dY13dY54dY94do94d5CUuEDKAAACKUlEQVQYGQXBwZFdRRAEwKyev3ZwwQ8gFisgdMIPzFlhhLhih2THvukiM3+jqRRolgIKpUAV2KZoU6WgaQGrKQoK3VQBvvH7Nz9e39nZ7ezsPJoFrni8PvOgNNUV91y7s21xqaaqWM2dy5qVLS12Ps3q1sL7v2Awd/u6Y56XmHB7N4960mOKVDO1uSwlSgsKjNQeZuhKStg9lkwM3i8wcPblwIOGfbzdFy6bfQFbaXtqZg+ROxEqBJ0ai91AUTvjhZox3u8HMKg8l31AlrfxibfXMHPQclzJubnWbTasVChFsFPQQXTgU6GM9/vxBRikk6zxAuHOcfAElAjS7dUTkxjOGBBgl1nAYjMLbxYhftt/vlxgIIfBA8rJTXa9WstC3UwS4s6dAl2ECjS7xI6Kxk6wDcT+0q9/7gcwwNnxvEAHV9t5PkPbCeFYHfSsG6gUGEV0UGMiomkhCeLXfvzZr1+A/ExTAFw8xwVdKIU1XdhZilIKFKWxpdGdsqBA2Ub565sfgzQAwHMu0AIKTAErSAMAKNJt0AoMAHsVLeD1B1QKaNEoqIJCUWiVpkpTTaEFbKooFLUACsDrO2zhARaXDg+3zNWUS+fiZnVn6ZaiTVk2FyzZplqWO4srzTaes2NgZ7AvUNyj1kOHc0mDmTjIIo2aCTQpRrOCDSvbbcApbaapcd2s13/QFMDlOXmgNtqURq1Ys3aWRosWUAW1qaZZDQuF7qkt+Gke/wNCVMxEPwTsWgAAAABJRU5ErkJggg==)}#webamp .gen-window .gen-bottom{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAOAgMAAACnVF/TAAAACVBMVEUrKkM+PGB4d5A1hmUAAAAAGElEQVQI12NYBQYNDKFg4EAyjQ5wmQcFAFaEHSfLt0cNAAAAAElFTkSuQmCC)}#webamp .gen-window .gen-middle-left{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAdAgMAAAABTX4zAAAACVBMVEUdHS0qKUBqanoMSFahAAAAD0lEQVQI12NQ5QxhoDMGAFFyDru7vcmtAAAAAElFTkSuQmCC)}#webamp .gen-window .gen-middle-left-bottom{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAYAgMAAABRgO+AAAAACVBMVEUdHS0qKUBqanoMSFahAAAAD0lEQVQI12NQ5QxhoCEGAEUWDDHkAu/CAAAAAElFTkSuQmCC)}#webamp .gen-window .gen-middle-right{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAdAgMAAADqesUwAAAACVBMVEUdHS0qKUBqanoMSFahAAAADklEQVQI12OYOoWBBggAuDohplXr188AAAAASUVORK5CYII=)}#webamp .gen-window .gen-middle-right-bottom{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAYAgMAAAC6t1SDAAAACVBMVEUdHS0qKUBqanoMSFahAAAADklEQVQI12OYOoWBGggA6uEb2fBejlkAAAAASUVORK5CYII=)}#webamp .gen-window .gen-close:active{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJBAMAAAASvxsjAAAAElBMVEU6MSljXjtsXUORbkq0kWP////9IyyfAAAAKUlEQVQI12NwAQIHBicBBiEHBkcmIUYHBgcFAwUgKRwsAGNDxCFqwOoB1gEH67W94+0AAAAASUVORK5CYII=)}#webamp .character-48{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAE0lEQVQI12NIYJjAsIHhApBMAAAULANhy/alSwAAAABJRU5ErkJggg==)}#webamp .character-49{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAD0lEQVQI12NQYEhgUIBAAAbMAQE/4OmzAAAAAElFTkSuQmCC)}#webamp .character-50{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12N4wCAAhAkMDQwfAA78AtFOxm3MAAAAAElFTkSuQmCC)}#webamp .character-51{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAFElEQVQIHWP4wKDAkMAgwDCBIQEAEHwCcej/ubUAAAAASUVORK5CYII=)}#webamp .character-52{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAFElEQVQIHWNQYEhgWMDwgUGBQQEADlwCUbptSVYAAAAASUVORK5CYII=)}#webamp .character-53{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAE0lEQVQI12P4wNDA8IBBAAgfAAAWXANRkouswAAAAABJRU5ErkJggg==)}#webamp .character-54{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12NIYGhgeMAwAQgTABOsA0E/JWQ/AAAAAElFTkSuQmCC)}#webamp .character-55{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEUlEQVQI12P4wCDAoMDgAIIADgwB4bVklkQAAAAASUVORK5CYII=)}#webamp .character-56{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEElEQVQI12NIYJjAAMJAEgAQvALRax9yugAAAABJRU5ErkJggg==)}#webamp .character-57{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12NIYJgAhAUMAgwJAA/sAmFIDiRPAAAAAElFTkSuQmCC)}#webamp .character-97{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEUlEQVQI12NIYJjA8AGIgRAAFNwDkUdAkdwAAAAASUVORK5CYII=)}#webamp .character-98{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEElEQVQI12N4wDCBAYSBJAAaPARRW/xs+gAAAABJRU5ErkJggg==)}#webamp .character-99{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12NIYJjA0ACEExgSABFMAuEl/r42AAAAAElFTkSuQmCC)}#webamp .character-100{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAIUlEQVQYV2NkeMTwnwEG5CAMRrAglMPwiIEBxKaKIJpFADZCEAGAIkAWAAAAAElFTkSuQmCC)}#webamp .character-101{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAE0lEQVQI12P4wNDA8ACIGxg+AAAZ7ARBle8LfgAAAABJRU5ErkJggg==)}#webamp .character-102{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEUlEQVQI12P4wNDA8ACIgRAAGXwD0QArRQgAAAAASUVORK5CYII=)}#webamp .character-103{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12MoYGhg2MAwAQgTABMMAyEYrKesAAAAAElFTkSuQmCC)}#webamp .character-104{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAIklEQVQYV2NkeMTwn0GOAQIeMTCA2Iy4BaEKwRR+lcSYCQBnQhEB2omL+AAAAABJRU5ErkJggg==)}#webamp .character-105{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAADklEQVQI12MoYFCAwgIACEwBYXIvChIAAAAASUVORK5CYII=)}#webamp .character-106{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEElEQVQI12MQYADBCUCYAAAGnAGx9K9L/wAAAABJRU5ErkJggg==)}#webamp .character-107{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAE0lEQVQI12OYwLCA4QAQLmCYAAAXTAPhR2cHZQAAAABJRU5ErkJggg==)}#webamp .character-108{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGUlEQVQYV2NkeMTwn0GOAQUw0kwQ2RqgpQBKiwwB5wSvgwAAAABJRU5ErkJggg==)}#webamp .character-109{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAIUlEQVQYV2NkeMTwn0GOAQIeMTCA2IxgQWSAXxCrdmIEAQtSEAH0ktA/AAAAAElFTkSuQmCC)}#webamp .character-110{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAE0lEQVQI12OYwMTAcIHpARAyAAATGAMpx84ilAAAAABJRU5ErkJggg==)}#webamp .character-111{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAADklEQVQI12NIYJgAhQkAEgwDAakOOnUAAAAASUVORK5CYII=)}#webamp .character-112{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12N4wDCB4QFDAwgCABlcA9Fh/HqiAAAAAElFTkSuQmCC)}#webamp .character-113{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAE0lEQVQI12NIYJgAhBcYNjAUAAATvANxqBzBZwAAAABJRU5ErkJggg==)}#webamp .character-114{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12N4wKzA8IAJBD8AABkSBJqXbNZ9AAAAAElFTkSuQmCC)}#webamp .character-115{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12MoYGhgSGAQAMIHAA1cAlFD9hA9AAAAAElFTkSuQmCC)}#webamp .character-116{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAADUlEQVQI12MoYFCAQQAH/AERspkQDgAAAABJRU5ErkJggg==)}#webamp .character-117{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAADUlEQVQI12OYwACDCQAUHAMxvRgSGgAAAABJRU5ErkJggg==)}#webamp .character-118{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAD0lEQVQI12OYwACBCQwJABOMAwEw9lTJAAAAAElFTkSuQmCC)}#webamp .character-119{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEElEQVQI12OYwACCH4BwAgAXTAQhMxLiQgAAAABJRU5ErkJggg==)}#webamp .character-120{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEUlEQVQI12OYwDCBIQEIgTQAEgwDAb4oAK0AAAAASUVORK5CYII=)}#webamp .character-121{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEUlEQVQI12OYwDCBIYFBAQQBDwwB4W/sEnMAAAAASUVORK5CYII=)}#webamp .character-122{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAFElEQVQIHWP4wCDAoMDgwNDA8AEAD3wC0QyxJxkAAAAASUVORK5CYII=)}#webamp .character-34{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAADUlEQVQIHWMIYGKAAQADkABTwIHJLQAAAABJRU5ErkJggg==)}#webamp .character-64{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12OQYFBgiABCBQYJAAbMASFkTTvgAAAAAElFTkSuQmCC)}#webamp .character-32{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAE0lEQVQYV2NkYGD4z4AGGOklCAChpQYBD5K5XgAAAABJRU5ErkJggg==)}#webamp .character-8230{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAC0lEQVQIHWNAgBUAALQAqf6ZnokAAAAASUVORK5CYII=)}#webamp .character-46{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAGUlEQVQYV2NkYGD4z4AGGGki+AhqkRzCNgCztQcBQ/F5qwAAAABJRU5ErkJggg==)}#webamp .character-58{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAG0lEQVQYV2NkYGD4z4AGGHELPoIqlYPQFKoEABHUCAEa7xBFAAAAAElFTkSuQmCC)}#webamp .character-40{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12NgYBBgUABCAQYGAAJMAGFQC8mLAAAAAElFTkSuQmCC)}#webamp .character-41{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12NgYGhgcADCBgYGAAkMAYFEejkbAAAAAElFTkSuQmCC)}#webamp .character-45{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAG0lEQVQYV2NkYGD4z4AGGEkQfISmXY6BgXjtANzFBwGYHC/oAAAAAElFTkSuQmCC)}#webamp .character-39{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAADUlEQVQIHWNQYGKAAQABgAAjjGgVVgAAAABJRU5ErkJggg==)}#webamp .character-33{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAH0lEQVQYV2NkYGD4z/CIgYFBjgEOGKkhiDAOzMJqJgAQawsBnvEUjAAAAABJRU5ErkJggg==)}#webamp .character-95{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAFklEQVQYV2NkYGD4z4AGGGki+AjTIgCyawbjsVUKxAAAAABJRU5ErkJggg==)}#webamp .character-43{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEUlEQVQI12NQYGJg+MEAIhkACPABPfEgkLEAAAAASUVORK5CYII=)}#webamp .character-92{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAD0lEQVQI12NgYGhgZoBAAATIAI13IxiAAAAAAElFTkSuQmCC)}#webamp .character-47{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAFElEQVQIHWNgYOBgEGBQYHBgaAAAAqQA+cACQKYAAAAASUVORK5CYII=)}#webamp .character-91{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAHUlEQVQYV2NkYGD4z/CIAQLkIBQjXBAqQFVBJIsAMwMMAVy4DMAAAAAASUVORK5CYII=)}#webamp .character-93{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAIElEQVQYV2NkYGD4zwACj8AkA4McAwMjXBAmQU1BJIsACwMMAZBptUcAAAAASUVORK5CYII=)}#webamp .character-94{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEElEQVQIHWNQYAhg6GAAAwAH9AD5R+QUOwAAAABJRU5ErkJggg==)}#webamp .character-38{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12NQYAhgUGCIAJIaAAfsAWHaIpwJAAAAAElFTkSuQmCC)}#webamp .character-37{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAFElEQVQIHWNIYMhgEGBQYIhgkAAACgQBacCaDW0AAAAASUVORK5CYII=)}#webamp .character-44{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAHklEQVQYV2NkYGD4z4AGGKkl+IiBgUEOYjjCTCRBAMu1CAHlOP+DAAAAAElFTkSuQmCC)}#webamp .character-61{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAH0lEQVQYV2NkYGD4z4AGGMGCj5BE5RgYIIIUqkTTDgA65AgBoymWoAAAAABJRU5ErkJggg==)}#webamp .character-36{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12NQYChgSGAwAJIKAApcAbE85GZ1AAAAAElFTkSuQmCC)}#webamp .character-35{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAD0lEQVQI12NIYPjAAMEMABUMAwFxUzDLAAAAAElFTkSuQmCC)}#webamp .character-197{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEklEQVQI12NIYJjAAMIfGCYAABIMA2Fjj6V0AAAAAElFTkSuQmCC)}#webamp .character-214{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAEElEQVQI12OYwJDAMAEMEwASbAMBKm1nAQAAAABJRU5ErkJggg==)}#webamp .character-196{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAFElEQVQIHWOYwMDAkMAwgeEDwwQADwwDAcWvnbkAAAAASUVORK5CYII=)}#webamp .character-63{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAFElEQVQIHWNIYJjAIMCQwMDAkAAAC+wBwX8tiscAAAAASUVORK5CYII=)}#webamp .character-42{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGAQMAAAAxNcYIAAAABlBMVEUAAAAA4gDJLyihAAAAFElEQVQIHWNgYFBgeMBQwODAwAAACjwBsYRIp8kAAAAASUVORK5CYII=)}#webamp .character-60{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAHUlEQVQYV2NkYGD4z/CIAQLkIBQjXBAqQFVBJIsAMwMMAVy4DMAAAAAASUVORK5CYII=)}#webamp .character-62{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAIElEQVQYV2NkYGD4zwACj8AkA4McAwMjXBAmQU1BJIsACwMMAZBptUcAAAAASUVORK5CYII=)}#webamp .character-123{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAHUlEQVQYV2NkYGD4z/CIAQLkIBQjXBAqQFVBJIsAMwMMAVy4DMAAAAAASUVORK5CYII=)}#webamp .character-125{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAGCAYAAAAL+1RLAAAAIElEQVQYV2NkYGD4zwACj8AkA4McAwMjXBAmQU1BJIsACwMMAZBptUcAAAAASUVORK5CYII=)}#webamp .gen-text-a{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAGFBMVEUpKUA3N01bW21iYnN4eIZ/f4yNjZmUlKDQ9WnQAAAAIUlEQVQIHWMAAcZyAQamdAUGVrMABnGVQgY11yKGIIZUACkrA92ildtqAAAAAElFTkSuQmCC)}#webamp .gen-window.selected .gen-text-a{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAGFBMVEUpKUBGRlmNjZmbm6bGxszU1Nnx8fL///8iRh7bAAAAIUlEQVQIHWMAAcZyAQamdAUGVrMABnGVQgY11yKGIIZUACkrA92ildtqAAAAAElFTkSuQmCC)}#webamp .gen-text-b{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAHlBMVEUpKUAxMUdGRlliYnNqanpwcIB4eIZ/f4yNjZmUlKBMQpI+AAAAIUlEQVQI12NgAAHOmVOARIKlAgNnWyuQVRQuAOXOnMoAAFkvBehWf7S3AAAAAElFTkSuQmCC)}#webamp .gen-window.selected .gen-text-b{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAHlBMVEUpKUA3N01iYnObm6apqbO4uL/GxszU1Nnx8fL////s2d+PAAAAIUlEQVQI12NgAAHOmVOARIKlAgNnWyuQVRQuAOXOnMoAAFkvBehWf7S3AAAAAElFTkSuQmCC)}#webamp .gen-text-c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAJ1BMVEUpKUAxMUc3N00/P1NGRllUVGZbW21qanpwcIB4eIaGhpONjZmUlKBrx3tvAAAAJUlEQVQI12NgAAHWNZMZGHQSdzAw5DgwgAgFBgabgk6gxJ7JDABjoQaLYu6ObAAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-text-c{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAJ1BMVEUpKUA3N01GRllUVGZiYnN/f4yNjZmpqbO4uL/Gxszi4ubx8fL///9AK9zxAAAAJUlEQVQI12NgAAHWNZMZGHQSdzAw5DgwgAgFBgabgk6gxJ7JDABjoQaLYu6ObAAAAABJRU5ErkJggg==)}#webamp .gen-text-d{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAElBMVEUpKUBUVGZbW214eIaNjZmUlKBPxwelAAAAG0lEQVQI12NgAALTEAUGU6ZABlOGYAgGsUMUACkqA3OelxceAAAAAElFTkSuQmCC)}#webamp .gen-window.selected .gen-text-d{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAElBMVEUpKUB/f4yNjZnGxszx8fL///90u0SbAAAAG0lEQVQI12NgAALTEAUGU6ZABlOGYAgGsUMUACkqA3OelxceAAAAAElFTkSuQmCC)}#webamp .gen-text-e{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAHlBMVEUpKUA3N00/P1NGRllUVGZbW214eIZ/f4yNjZmUlKBpF6uKAAAAH0lEQVQI12NgAALOmVMZOBOAdJsDA2exABAbAcWmAQA4DwTidXJmqwAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-text-e{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAHlBMVEUpKUBGRllUVGZiYnN/f4yNjZnGxszU1Nnx8fL///+DgC81AAAAH0lEQVQI12NgAALOmVMZOBOAdJsDA2exABAbAcWmAQA4DwTidXJmqwAAAABJRU5ErkJggg==)}#webamp .gen-text-f{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAElBMVEUpKUA3N01GRllbW21qanqUlKC2H8YaAAAAGklEQVQI12NgAALT0CAGUwUg7SwAwSC2AgMAKTIC7Ms0rr0AAAAASUVORK5CYII=)}#webamp .gen-window.selected .gen-text-f{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAElBMVEUpKUBGRlliYnONjZmpqbP///9D5gpdAAAAGklEQVQI12NgAALT0CAGUwUg7SwAwSC2AgMAKTIC7Ms0rr0AAAAASUVORK5CYII=)}#webamp .gen-text-g{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAIVBMVEUpKUA/P1NGRllUVGZbW21wcIB4eIZ/f4yGhpONjZmUlKCnwN9hAAAAJ0lEQVQIHWMAA8aqZgYGzoQoAQYtBwYGBi2XVQoMnAVeCgyMXa0KAE4GBYcb4B3nAAAAAElFTkSuQmCC)}#webamp .gen-window.selected .gen-text-g{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAIVBMVEUpKUBUVGZiYnN/f4yNjZm4uL/GxszU1Nni4ubx8fL///+LwSrlAAAAJ0lEQVQIHWMAA8aqZgYGzoQoAQYtBwYGBi2XVQoMnAVeCgyMXa0KAE4GBYcb4B3nAAAAAElFTkSuQmCC)}#webamp .gen-text-h{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAJFBMVEUpKUBwcIBycoGCgo+hoauqqrO3t767u8O8vMPDw8nGxszKytD26YaTAAAAGElEQVQI12NgAAJphQoITl3BIO08A8YHADj6BOvV9DaxAAAAAElFTkSuQmCC)}#webamp .gen-window.selected .gen-text-h{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAFVBMVEUpKUCrq7TDw8no6Ovw8PH5+fr///9e3zXEAAAAFklEQVQI12NgAAIxgTQIDgFiozQYHwAqqAOv6ufnjgAAAABJRU5ErkJggg==)}#webamp .gen-text-i{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAFVBMVEUhITkkJDxra3xwcIBycoF6eoiCgo8pCsaXAAAAFUlEQVQI12MQEGQQCoQi4UQGERACABeTAqlm5PZ5AAAAAElFTkSuQmCC)}#webamp .gen-window.selected .gen-text-i{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAFVBMVEUkJDwxMULAwMfDw8ne3uHh4eXl5ehBk9l/AAAAFUlEQVQI12NgFGBgcgCjAAZmCEoAABAKAfHk6DTHAAAAAElFTkSuQmCC)}#webamp .gen-text-j{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAGFBMVEUpKUAxMUdGRllNTWBUVGZ4eIaNjZmUlKAAywzwAAAAE0lEQVQI12NgAIFSVCwCxOrJDAAh4QLodMJ9awAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-text-j{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAGFBMVEUpKUA3N01iYnNwcIB/f4zGxszx8fL///+/0FlwAAAAE0lEQVQI12NgAIFSVCwCxOrJDAAh4QLodMJ9awAAAABJRU5ErkJggg==)}#webamp .gen-text-k{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAHlBMVEUpKUAxMUc/P1NGRllNTWBUVGZbW22GhpONjZmUlKC0yuawAAAAIklEQVQI12NgAIFM00lAIiMBSHQGAImKAiDhNhVIGLYzAABxtgda2evVPQAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-text-k{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAHlBMVEUpKUA3N01UVGZiYnNwcIB/f4yNjZni4ubx8fL////1B4EGAAAAIklEQVQI12NgAIFM00lAIiMBSHQGAImKAiDhNhVIGLYzAABxtgda2evVPQAAAABJRU5ErkJggg==)}#webamp .gen-text-l{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAHBAMAAAAyiZrdAAAAElBMVEUpKUAxMUdGRll4eIZ/f4yUlKDDTNTnAAAAFUlEQVQI12NgAIJgNByiJMAQGqoAABtZAp1Ff+GZAAAAAElFTkSuQmCC)}#webamp .gen-window.selected .gen-text-l{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAHCAYAAADAp4fuAAAAMklEQVQYV2PU1HT4z4AGGP//////+PGzDMnJJXApaghevXqLoa9vFthMEBtsJrLlIAsBN0svzTt3mzcAAAAASUVORK5CYII=)}#webamp .gen-text-m{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHBAMAAADHdxFtAAAAIVBMVEUpKUAxMUdGRllUVGZbW21iYnNwcIB4eIZ/f4yGhpOUlKBZcblpAAAAI0lEQVQI12NgAAGtJZzLGbRWaAGJrjIg4bUYSGguBBKqCcsBjp0JorkYhMsAAAAASUVORK5CYII=)}#webamp .gen-window.selected .gen-text-m{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHBAMAAADHdxFtAAAAIVBMVEUpKUA3N01iYnN/f4yNjZmbm6a4uL/GxszU1Nni4ub////cS6NmAAAAI0lEQVQI12NgAAGtJZzLGbRWaAGJrjIg4bUYSGguBBKqCcsBjp0JorkYhMsAAAAASUVORK5CYII=)}#webamp .gen-text-n{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAHlBMVEUpKUAxMUc3N01GRllNTWBiYnNwcIB4eIaNjZmUlKCfa5y8AAAAIElEQVQI12NgAIIK5clMjA4MTP+NgPgKAxPDeiB+wwAASdwGGeDXGZQAAAAASUVORK5CYII=)}#webamp .gen-window.selected .gen-text-n{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAHlBMVEUpKUA3N01GRlliYnNwcICbm6a4uL/Gxszx8fL///8Fv7lnAAAAIElEQVQI12NgAIIK5clMjA4MTP+NgPgKAxPDeiB+wwAASdwGGeDXGZQAAAAASUVORK5CYII=)}#webamp .gen-text-o{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAHlBMVEUpKUA/P1NGRllUVGZbW214eIZ/f4yGhpONjZmUlKDmamWaAAAAHElEQVQI12NgAAKx6QYMrSwTGaYwTQFjEBsoBgBK6AZDMgIWOQAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-text-o{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAHlBMVEUpKUBUVGZiYnN/f4yNjZnGxszU1Nni4ubx8fL////xzWRAAAAAHElEQVQI12NgAAKx6QYMrSwTGaYwTQFjEBsoBgBK6AZDMgIWOQAAAABJRU5ErkJggg==)}#webamp .gen-text-p{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAJ1BMVEUpKUAxMUc/P1NGRllNTWBbW21iYnNqanpwcIB4eIZ/f4yGhpOUlKBLTaK7AAAAIElEQVQI12NgAIKYM5sYYgxPMMSEHGeIWZnIEGPAAMIAZzYHJUki1qIAAAAASUVORK5CYII=)}#webamp .gen-window.selected .gen-text-p{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAJ1BMVEUpKUA3N01UVGZiYnNwcICNjZmbm6apqbO4uL/GxszU1Nni4ub////2OqNjAAAAIElEQVQI12NgAIKYM5sYYgxPMMSEHGeIWZnIEGPAAMIAZzYHJUki1qIAAAAASUVORK5CYII=)}#webamp .gen-text-q{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAJFBMVEUpKUA3N00/P1NGRllUVGZbW214eIZ/f4yGhpONjZmSkp6UlKAHPYNOAAAAI0lEQVQI12NgAAGm6hYGBs6EaAEG6wDrAAjBmdBtAJTY1QAAWmwG3UPBF3oAAAAASUVORK5CYII=)}#webamp .gen-window.selected .gen-text-q{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAJ1BMVEUpKUBGRllUVGZiYnN/f4yNjZm4uMDGxszU1Nni4ubx8fL7+/v////Rx7x8AAAAI0lEQVQI12NgAAGmnikMDFwFMQIMNgE2ARCCq2COAVDidAIAYQkHOMhnyMoAAAAASUVORK5CYII=)}#webamp .gen-text-r{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAJ1BMVEUpKUAxMUc3N01GRllUVGZbW21qanpwcIB4eIZ/f4yGhpONjZmUlKDditvQAAAAIklEQVQI12NgAAGbM1uARMAcILHiJJBIPwQkQo4AicCTDACHOAih1LnoFgAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-text-r{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAJ1BMVEUpKUA3N01GRlliYnN/f4yNjZmpqbO4uL/GxszU1Nni4ubx8fL///9vCc2uAAAAIklEQVQI12NgAAGbM1uARMAcILHiJJBIPwQkQo4AicCTDACHOAih1LnoFgAAAABJRU5ErkJggg==)}#webamp .gen-text-s{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAJFBMVEUpKUAxMUc/P1NGRllUVGZbW21qanpwcIB4eIaGhpONjZmUlKCHjnJIAAAAIklEQVQIHWMAAY1dAQzVygoM1TsDGMRmb2IIZdvE4LnLAQBTHAco/pVKOwAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-text-s{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAJFBMVEUpKUA3N01UVGZiYnN/f4yNjZmpqbO4uL/Gxszi4ubx8fL///+qJyS0AAAAIklEQVQIHWMAAY1dAQzVygoM1TsDGMRmb2IIZdvE4LnLAQBTHAco/pVKOwAAAABJRU5ErkJggg==)}#webamp .gen-text-t{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAHCAYAAADAp4fuAAAALklEQVQYV2PU0XH+z4AGGCdMmIMpqKZq819FVZHBzc2eYfXqLQyvX71hYKSBIACnryn7i49aBgAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-text-t{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAHAgMAAAC9yW99AAAADFBMVEUpKUBUVGZycoH///9VDRy9AAAAE0lEQVQI12NgYGD4f4BBlwEZAQAkDAKhcYNEwQAAAABJRU5ErkJggg==)}#webamp .gen-text-u{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAFVBMVEUpKUAxMUdGRllUVGZbW21qanqUlKDA77WeAAAAFklEQVQI12NgAAI3hRRUHJLMIJoWAAA5UATxAlDxBQAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-text-u{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAFVBMVEUpKUA3N01iYnN/f4yNjZmpqbP///8SF7O4AAAAFklEQVQI12NgAAI3hRRUHJLMIJoWAAA5UATxAlDxBQAAAABJRU5ErkJggg==)}#webamp .gen-text-v{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAKlBMVEUpKUAxMUc/P1NGRllNTWBUVGZbW21iYnNqanpwcIB4eIaGhpONjZmUlKDthvA2AAAAIklEQVQIHWMAAd8EWQaeDTEMHJeWMzDfvMTAsHcDA0NtAgBSrAdcNQnv8gAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-text-v{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAKlBMVEUpKUA3N01UVGZiYnNwcIB/f4yNjZmbm6apqbO4uL/Gxszi4ubx8fL///81zHafAAAAIklEQVQIHWMAAd8EWQaeDTEMHJeWMzDfvMTAsHcDA0NtAgBSrAdcNQnv8gAAAABJRU5ErkJggg==)}#webamp .gen-text-w{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHBAMAAADHdxFtAAAALVBMVEUpKUAxMUc3N00/P1NGRllNTWBUVGZbW21iYnNqanpwcIB4eIZ/f4yNjZmUlKD3PA89AAAAKUlEQVQIHWMAg3nqT/wY8rKfdzPIzXt9nIHnXd9jBo7XcRcYWJ7zLQAAwo4M1uKKXVEAAAAASUVORK5CYII=)}#webamp .gen-window.selected .gen-text-w{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHBAMAAADHdxFtAAAALVBMVEUpKUA3N01GRllUVGZiYnNwcIB/f4yNjZmbm6apqbO4uL/GxszU1Nnx8fL///+8HCoLAAAAKUlEQVQIHWMAg3nqT/wY8rKfdzPIzXt9nIHnXd9jBo7XcRcYWJ7zLQAAwo4M1uKKXVEAAAAASUVORK5CYII=)}#webamp .gen-text-x{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAJFBMVEUpKUAxMUc3N01GRllNTWBbW21iYnNwcIB4eIaGhpONjZmUlKDqWCJLAAAAJElEQVQI12NgAAHJiVECDMzbtwCZ2Q0gYhEDA/PWHUCJhOwAAGilBx+T4WwNAAAAAElFTkSuQmCC)}#webamp .gen-window.selected .gen-text-x{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHBAMAAAA2fErgAAAAJFBMVEUpKUA3N01GRlliYnNwcICNjZmbm6a4uL/Gxszi4ubx8fL///+x/boCAAAAJElEQVQI12NgAAHJiVECDMzbtwCZ2Q0gYhEDA/PWHUCJhOwAAGilBx+T4WwNAAAAAElFTkSuQmCC)}#webamp .gen-text-y{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAJFBMVEUpKUAxMUc/P1NGRllNTWBUVGZbW21iYnN4eIaGhpONjZmUlKAsqFJVAAAAHklEQVQI12NgAIIdrJsYsrMKGDh3CTCwbGNgYIZgAE8aBbSrMTxDAAAAAElFTkSuQmCC)}#webamp .gen-window.selected .gen-text-y{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAHBAMAAADZviHeAAAAJFBMVEUpKUA3N01UVGZiYnNwcIB/f4yNjZmbm6bGxszi4ubx8fL///+UuWJCAAAAHklEQVQI12NgAIIdrJsYsrMKGDh3CTCwbGNgYIZgAE8aBbSrMTxDAAAAAElFTkSuQmCC)}#webamp .gen-text-z{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAHBAMAAAAsQKpuAAAAIVBMVEUAAAApKUAxMUc/P1NGRllbW21qanp4eIZ/f4yGhpOUlKAeeVtyAAAAAXRSTlMAQObYZgAAACdJREFUCNdjEBQUYACCqlULQJRgVgCIElkBFtRcDKaiShxA1CqwEgClfwdsfnJFGQAAAABJRU5ErkJggg==)}#webamp .gen-window.selected .gen-text-z{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAHBAMAAAAsQKpuAAAAIVBMVEUAAAApKUA3N01UVGZiYnONjZmpqbPGxszU1Nni4ub///8EpbEBAAAAAXRSTlMAQObYZgAAACdJREFUCNdjEBQUYACCqlULQJRgVgCIElkBFtRcDKaiShxA1CqwEgClfwdsfnJFGQAAAABJRU5ErkJggg==)}#webamp .gen-text-a,#webamp .selected .gen-text-a{width:6px}#webamp .gen-text-b,#webamp .gen-text-c,#webamp .selected .gen-text-b,#webamp .selected .gen-text-c{width:7px}#webamp .gen-text-d,#webamp .gen-text-e,#webamp .gen-text-f,#webamp .selected .gen-text-d,#webamp .selected .gen-text-e,#webamp .selected .gen-text-f{width:6px}#webamp .gen-text-g,#webamp .selected .gen-text-g{width:7px}#webamp .gen-text-h,#webamp .selected .gen-text-h{width:6px}#webamp .gen-text-i,#webamp .selected .gen-text-i{width:4px}#webamp .gen-text-j,#webamp .selected .gen-text-j{width:6px}#webamp .gen-text-k,#webamp .selected .gen-text-k{width:7px}#webamp .gen-text-l,#webamp .selected .gen-text-l{width:5px}#webamp .gen-text-m,#webamp .selected .gen-text-m{width:8px}#webamp .gen-text-n,#webamp .gen-text-o,#webamp .gen-text-p,#webamp .selected .gen-text-n,#webamp .selected .gen-text-o,#webamp .selected .gen-text-p{width:6px}#webamp .gen-text-q,#webamp .gen-text-r,#webamp .selected .gen-text-q,#webamp .selected .gen-text-r{width:7px}#webamp .gen-text-s,#webamp .selected .gen-text-s{width:6px}#webamp .gen-text-t,#webamp .selected .gen-text-t{width:5px}#webamp .gen-text-u,#webamp .gen-text-v,#webamp .selected .gen-text-u,#webamp .selected .gen-text-v{width:6px}#webamp .gen-text-w,#webamp .selected .gen-text-w{width:8px}#webamp .gen-text-x,#webamp .selected .gen-text-x{width:7px}#webamp .gen-text-y,#webamp .selected .gen-text-y{width:6px}#webamp .gen-text-z,#webamp .selected .gen-text-z{width:11px}#webamp #title-bar #close{cursor:url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4gAAAAAAAAAAAAAAAAAAAf4AAAAAAAAAAAAAAAAAAB/gAAIgAAAAAAAAAAAAAAAf4AACAAAAAAAAAAAAAcAB/gAAAAAAAAAAAAAAAAHgAf4AAAAAAAAAAAAAAAAB/gPgAAADwAAAAAAAAAAAAf/gAAAAA8AAAAAAAAAAAAH//iIiAAPAAAAAAAAAAAAB//4iIAADwAAAAAAAAAAAAf/iIgAAA8AAAAAAAAAAAAH/4iAAAAAAAAAAAAAAAAAB/iIAAAAAAAAAAAAAAAAAAf4gAAAAAAAAAAAAAAAAAAHiAAAAAAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////////////////////////////////j////w////8P///+HP//3hz//8w8///EP///wHz//8AE///ADP//wBz//8A8///AfP//wP///8H////D////x////8/////f////w==),auto}#webamp #equalizer-window .band .rc-slider{cursor:url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAAAAA/3cAAAAAAAAAAAAACHcAAAAAAAAAAAAAAAAAAAj3AAAAAAAAAAAAAAAAAACPcAAAAAAAAAAAAAAAAAAAj3AAAA9wAAAAAAAAAAgACPcAAAAPcAAAAAAAAAAIcAj3AAAAAAAAAAAAAAAACPcPcAAAAAAAAAAAAAAAAAj/cAAAAAAAAAAAAAAAAAAI//d3dwAA/3cAAAAAAAAACP/3d3AAAA9wAAAAAAAAAAj/d3cAAAAAAAAAAAAAAAAI/3dwAAAAAAAAAAAAAAAACPd3AAAAAAAAAAAAAAAAAAj3cAAAAAAAAAAAAAAAAAAIdwAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////////////////////////////////////////////////8////+H///jA///wwP//8P///+Hz//3h4f/8w+H//EPz//wH///8AED//ADA//wB4f/8A/P//Af///wP///8H////D////x////8/////f////w==),auto}#webamp #equalizer-window.shade,#webamp #equalizer-window.shade input,#webamp #equalizer-window .title-bar{cursor:url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAAAAAP93AAAAAAAAAAAACHcAAAAAAAAAAAAAAAAAAAj3AAAAAAAAAAAAAAAAAACPcAAHAAAAAHAAAAAAAAAAj3AAdwAHcAB3AAAAAAgACPcAAP8AD/AA/wAAAAAIcAj3AAAPAAAAAPAAAAAACPcPcAAAAAAAAAAAAAAAAAj/cAAAAAAAAAAAAAAAAAAI//d3dwAAAP93AAAAAAAACP/3d3AAAAAPcAAAAAAAAAj/d3cAAAAAAAAAAAAAAAAI/3dwAAAAAAAAAAAAAAAACPd3AAAAAAAAAAAAAAAAAAj3cAAAAAAAAAAAAAAAAAAIdwAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////P////h///jwP//w8D//8M/P/+GMx/3hCEP8wwhD/EOMx/wHz8/8AHA//ADwP/wB+H/8A/z//Af///wP///8H////D////x////8/////f////w==),auto}#webamp #main-window,#webamp #main-window.shade #title-bar,#webamp #playlist-window,#webamp .window,#webamp .window input{cursor:url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4gAAAAAAAAAAAAAAAAAAAf4AAAAAAAAAAAAAAAAAAB/gAAAAAAAAAAAAAAAAAAAf4AAAAAAAAAAAAAAAAcAB/gAAAAAAAAAAAAAAAAHgAf4AAAAAAAAAAAAAAAAB/gPgAAAAAAAAAAAAAAAAAf/gAAAAAAAAAAAAAAAAAAH//iIiAAAAAAAAAAAAAAAB//4iIAAAAAAAAAAAAAAAAf/iIgAAAAAAAAAAAAAAAAH/4iAAAAAAAAAAAAAAAAAB/iIAAAAAAAAAAAAAAAAAAf4gAAAAAAAAAAAAAAAAAAHiAAAAAAAAAAAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////////////////////////////////j////w////8P///+H///3h///8w////EP///wH///8AH///AD///wB///8A////Af///wP///8H////D////x////8/////f////w==),auto}#webamp #playlist-window .playlist-top{cursor:url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAAAAAP93AAAAAAAAAAAACHcAAAAAAAAAAAAAAAAAAAj3AAAAAAAAAAAAAAAAAACPcAAHAAAAAHAAAAAAAAAAj3AAdwAHcAB3AAAAAAgACPcAAP8AD/AA/wAAAAAIcAj3AAAPAAAAAPAAAAAACPcPcAAAAAAAAAAAAAAAAAj/cAAAAAAAAAAAAAAAAAAI//d3dwAAAP93AAAAAAAACP/3d3AAAAAPcAAAAAAAAAj/d3cAAAAAAAAAAAAAAAAI/3dwAAAAAAAAAAAAAAAACPd3AAAAAAAAAAAAAAAAAAj3cAAAAAAAAAAAAAAAAAAIdwAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////P////h///jwP//w8D//8M/P/+GMx/3hCEP8wwhD/EOMx/wHz8/8AHA//ADwP/wB+H/8A/z//Af///wP///8H////D////x////8/////f////w==),auto}#webamp #main-window #position{cursor:url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHcAAAAAAAAAAAAAAAAAAAj3AAAAAAAAAAAAAAAAAACPcAAHAAAAAHAAAAAAAAAAj3AAdwAHcAB3AAAAAAgACPcAAP8AD/AA/wAAAAAIcAj3AAAPAAAAAPAAAAAACPcPcAAAAAAAAAAAAAAAAAj/cAAAAAAAAAAAAAAAAAAI//d3dwAAAAAAAAAAAAAACP/3d3AAAAAAAAAAAAAAAAj/d3cAAAAAAAAAAAAAAAAI/3dwAAAAAAAAAAAAAAAACPd3AAAAAAAAAAAAAAAAAAj3cAAAAAAAAAAAAAAAAAAIdwAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////////////////////////////////j////w////8M/P/+GMx/3hCEP8wwhD/EOMx/wHz8/8AH///AD///wB///8A////Af///wP///8H////D////x////8/////f////w==),auto}#webamp #playlist-window #playlist-resize-target{cursor:url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAAAAA/3cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHcAAAAAAAAAAAAAAAAAAAj3AAAAAAcAAAAAAAAAAACPcAAAdwAHcAAAAAAAAAAAj3AAAP8AD/AAAAAAAAgACPcAAAAAAA8AAAAAAAAIcAj3AAAAAAAAAAAAAAAACPcPcAAAAAAAAAAAAAAAAAj/cAAAAAAAAAAAAAAAAAAI//d3dwAAAAAAAAAAAAAACP/3d3AAAAAAAAAAAAAAAAj/d3cAAAAAAAAAAAAAAAAI/3dwAAAAAAAAAAAAAAAACPd3AAAAAAAAAAAAAAAAAAj3cAAAAAAAAAAAAAAAAAAIdwAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////////////////////////////n////w////4H///iB///w/n//8OY//+HCH/3hwh/8w+Y//EP+f/wH///8AH///AD///wB///8A////Af///wP///8H////D////x////8/////f////w==),auto}#webamp #playlist-window .playlist-scrollbar{cursor:url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPcAAAAAAAAAAAAAAAAAAA/3cAAAAAAAAAAAAACHcAAAAAAAAAAAAAAAAAAAj3AAAAAAAAAAAAAAAAAACPcAAAAAAAAAAAAAAAAAAAj3AAAA9wAAAAAAAAAAgACPcAAAAPcAAAAAAAAAAIcAj3AAAAAAAAAAAAAAAACPcPcAAAAAAAAAAAAAAAAAj/cAAAAAAAAAAAAAAAAAAI//d3dwAA/3cAAAAAAAAACP/3d3AAAA9wAAAAAAAAAAj/d3cAAAAAAAAAAAAAAAAI/3dwAAAAAAAAAAAAAAAACPd3AAAAAAAAAAAAAAAAAAj3cAAAAAAAAAAAAAAAAAAIdwAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////////////////////////////////////////////////8////+H///jA///wwP//8P///+Hz//3h4f/8w+H//EPz//wH///8AED//ADA//wB4f/8A/P//Af///wP///8H////D////x////8/////f////w==),auto}#webamp #main-window #title-bar{cursor:url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3AAAAAAAAAAAAAAAAAAAP93AAAAAAAAAAAACHcAAAAAAAAAAAAAAAAAAAj3AAAAAAAAAAAAAAAAAACPcAAHAAAAAHAAAAAAAAAAj3AAdwAHcAB3AAAAAAgACPcAAP8AD/AA/wAAAAAIcAj3AAAPAAAAAPAAAAAACPcPcAAAAAAAAAAAAAAAAAj/cAAAAAAAAAAAAAAAAAAI//d3dwAAAP93AAAAAAAACP/3d3AAAAAPcAAAAAAAAAj/d3cAAAAAAAAAAAAAAAAI/3dwAAAAAAAAAAAAAAAACPd3AAAAAAAAAAAAAAAAAAj3cAAAAAAAAAAAAAAAAAAIdwAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////////////////////////////////////P////h///jwP//w8D//8M/P/+GMx/3hCEP8wwhD/EOMx/wHz8/8AHA//ADwP/wB+H/8A/z//Af///wP///8H////D////x////8/////f////w==),auto}#webamp #balance,#webamp #volume,#webamp #volume input{cursor:url(data:image/x-win-bitmap;base64,AAACAAEAICAAAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHcAAAAAAAAAAAAAAAAAAAj3AAAAAAAAAAAAAAAAAACPcAAHAAAAAHAAAAAAAAAAj3AAdwAHcAB3AAAAAAgACPcAAP8AD/AA/wAAAAAIcAj3AAAPAAAAAPAAAAAACPcPcAAAAAAAAAAAAAAAAAj/cAAAAAAAAAAAAAAAAAAI//d3dwAAAAAAAAAAAAAACP/3d3AAAAAAAAAAAAAAAAj/d3cAAAAAAAAAAAAAAAAI/3dwAAAAAAAAAAAAAAAACPd3AAAAAAAAAAAAAAAAAAj3cAAAAAAAAAAAAAAAAAAIdwAAAAAAAAAAAAAAAAAACHAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////////////////////////////////j////w////8M/P/+GMx/3hCEP8wwhD/EOMx/wHz8/8AH///AD///wB///8A////Af///wP///8H////D////x////8/////f////w==),auto}\", \"\"]);\n\n// exports\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","'use strict';\nconst {stringToBytes, readUInt64LE, tarHeaderChecksumMatches, uint8ArrayUtf8ByteString} = require('./util');\n\nconst xpiZipFilename = stringToBytes('META-INF/mozilla.rsa');\nconst oxmlContentTypes = stringToBytes('[Content_Types].xml');\nconst oxmlRels = stringToBytes('_rels/.rels');\n\nconst fileType = input => {\n\tif (!(input instanceof Uint8Array || input instanceof ArrayBuffer || Buffer.isBuffer(input))) {\n\t\tthrow new TypeError(`Expected the \\`input\\` argument to be of type \\`Uint8Array\\` or \\`Buffer\\` or \\`ArrayBuffer\\`, got \\`${typeof input}\\``);\n\t}\n\n\tconst buffer = input instanceof Uint8Array ? input : new Uint8Array(input);\n\n\tif (!(buffer && buffer.length > 1)) {\n\t\treturn;\n\t}\n\n\tconst check = (header, options) => {\n\t\toptions = Object.assign({\n\t\t\toffset: 0\n\t\t}, options);\n\n\t\tfor (let i = 0; i < header.length; i++) {\n\t\t\t// If a bitmask is set\n\t\t\tif (options.mask) {\n\t\t\t\t// If header doesn't equal `buf` with bits masked off\n\t\t\t\tif (header[i] !== (options.mask[i] & buffer[i + options.offset])) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else if (header[i] !== buffer[i + options.offset]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t};\n\n\tconst checkString = (header, options) => check(stringToBytes(header), options);\n\n\tif (check([0xFF, 0xD8, 0xFF])) {\n\t\treturn {\n\t\t\text: 'jpg',\n\t\t\tmime: 'image/jpeg'\n\t\t};\n\t}\n\n\tif (check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\treturn {\n\t\t\text: 'png',\n\t\t\tmime: 'image/png'\n\t\t};\n\t}\n\n\tif (check([0x47, 0x49, 0x46])) {\n\t\treturn {\n\t\t\text: 'gif',\n\t\t\tmime: 'image/gif'\n\t\t};\n\t}\n\n\tif (check([0x57, 0x45, 0x42, 0x50], {offset: 8})) {\n\t\treturn {\n\t\t\text: 'webp',\n\t\t\tmime: 'image/webp'\n\t\t};\n\t}\n\n\tif (check([0x46, 0x4C, 0x49, 0x46])) {\n\t\treturn {\n\t\t\text: 'flif',\n\t\t\tmime: 'image/flif'\n\t\t};\n\t}\n\n\t// `cr2`, `orf`, and `arw` need to be before `tif` check\n\tif (\n\t\t(check([0x49, 0x49, 0x2A, 0x0]) || check([0x4D, 0x4D, 0x0, 0x2A])) &&\n\t\tcheck([0x43, 0x52], {offset: 8})\n\t) {\n\t\treturn {\n\t\t\text: 'cr2',\n\t\t\tmime: 'image/x-canon-cr2'\n\t\t};\n\t}\n\n\tif (check([0x49, 0x49, 0x52, 0x4F, 0x08, 0x00, 0x00, 0x00, 0x18])) {\n\t\treturn {\n\t\t\text: 'orf',\n\t\t\tmime: 'image/x-olympus-orf'\n\t\t};\n\t}\n\n\tif (check([0x49, 0x49, 0x2A, 0x00, 0x10, 0xFB, 0x86, 0x01])) {\n\t\treturn {\n\t\t\text: 'arw',\n\t\t\tmime: 'image/x-sony-arw'\n\t\t};\n\t}\n\n\tif (check([0x49, 0x49, 0x2A, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2D])) {\n\t\treturn {\n\t\t\text: 'dng',\n\t\t\tmime: 'image/x-adobe-dng'\n\t\t};\n\t}\n\n\tif (check([0x49, 0x49, 0x2A, 0x00, 0x30, 0x3D, 0x72, 0x01, 0x1C])) {\n\t\treturn {\n\t\t\text: 'nef',\n\t\t\tmime: 'image/x-nikon-nef'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x49, 0x49, 0x2A, 0x0]) ||\n\t\tcheck([0x4D, 0x4D, 0x0, 0x2A])\n\t) {\n\t\treturn {\n\t\t\text: 'tif',\n\t\t\tmime: 'image/tiff'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4D])) {\n\t\treturn {\n\t\t\text: 'bmp',\n\t\t\tmime: 'image/bmp'\n\t\t};\n\t}\n\n\tif (check([0x49, 0x49, 0xBC])) {\n\t\treturn {\n\t\t\text: 'jxr',\n\t\t\tmime: 'image/vnd.ms-photo'\n\t\t};\n\t}\n\n\tif (check([0x38, 0x42, 0x50, 0x53])) {\n\t\treturn {\n\t\t\text: 'psd',\n\t\t\tmime: 'image/vnd.adobe.photoshop'\n\t\t};\n\t}\n\n\t// Zip-based file formats\n\t// Need to be before the `zip` check\n\tif (check([0x50, 0x4B, 0x3, 0x4])) {\n\t\tif (\n\t\t\tcheck([0x6D, 0x69, 0x6D, 0x65, 0x74, 0x79, 0x70, 0x65, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x65, 0x70, 0x75, 0x62, 0x2B, 0x7A, 0x69, 0x70], {offset: 30})\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'epub',\n\t\t\t\tmime: 'application/epub+zip'\n\t\t\t};\n\t\t}\n\n\t\t// Assumes signed `.xpi` from addons.mozilla.org\n\t\tif (check(xpiZipFilename, {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'xpi',\n\t\t\t\tmime: 'application/x-xpinstall'\n\t\t\t};\n\t\t}\n\n\t\tif (checkString('mimetypeapplication/vnd.oasis.opendocument.text', {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'odt',\n\t\t\t\tmime: 'application/vnd.oasis.opendocument.text'\n\t\t\t};\n\t\t}\n\n\t\tif (checkString('mimetypeapplication/vnd.oasis.opendocument.spreadsheet', {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'ods',\n\t\t\t\tmime: 'application/vnd.oasis.opendocument.spreadsheet'\n\t\t\t};\n\t\t}\n\n\t\tif (checkString('mimetypeapplication/vnd.oasis.opendocument.presentation', {offset: 30})) {\n\t\t\treturn {\n\t\t\t\text: 'odp',\n\t\t\t\tmime: 'application/vnd.oasis.opendocument.presentation'\n\t\t\t};\n\t\t}\n\n\t\t// The docx, xlsx and pptx file types extend the Office Open XML file format:\n\t\t// https://en.wikipedia.org/wiki/Office_Open_XML_file_formats\n\t\t// We look for:\n\t\t// - one entry named '[Content_Types].xml' or '_rels/.rels',\n\t\t// - one entry indicating specific type of file.\n\t\t// MS Office, OpenOffice and LibreOffice may put the parts in different order, so the check should not rely on it.\n\t\tconst findNextZipHeaderIndex = (arr, startAt = 0) => arr.findIndex((el, i, arr) => i >= startAt && arr[i] === 0x50 && arr[i + 1] === 0x4B && arr[i + 2] === 0x3 && arr[i + 3] === 0x4);\n\n\t\tlet zipHeaderIndex = 0; // The first zip header was already found at index 0\n\t\tlet oxmlFound = false;\n\t\tlet type;\n\n\t\tdo {\n\t\t\tconst offset = zipHeaderIndex + 30;\n\n\t\t\tif (!oxmlFound) {\n\t\t\t\toxmlFound = (check(oxmlContentTypes, {offset}) || check(oxmlRels, {offset}));\n\t\t\t}\n\n\t\t\tif (!type) {\n\t\t\t\tif (checkString('word/', {offset})) {\n\t\t\t\t\ttype = {\n\t\t\t\t\t\text: 'docx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'\n\t\t\t\t\t};\n\t\t\t\t} else if (checkString('ppt/', {offset})) {\n\t\t\t\t\ttype = {\n\t\t\t\t\t\text: 'pptx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation'\n\t\t\t\t\t};\n\t\t\t\t} else if (checkString('xl/', {offset})) {\n\t\t\t\t\ttype = {\n\t\t\t\t\t\text: 'xlsx',\n\t\t\t\t\t\tmime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (oxmlFound && type) {\n\t\t\t\treturn type;\n\t\t\t}\n\n\t\t\tzipHeaderIndex = findNextZipHeaderIndex(buffer, offset);\n\t\t} while (zipHeaderIndex >= 0);\n\n\t\t// No more zip parts available in the buffer, but maybe we are almost certain about the type?\n\t\tif (type) {\n\t\t\treturn type;\n\t\t}\n\t}\n\n\tif (\n\t\tcheck([0x50, 0x4B]) &&\n\t\t(buffer[2] === 0x3 || buffer[2] === 0x5 || buffer[2] === 0x7) &&\n\t\t(buffer[3] === 0x4 || buffer[3] === 0x6 || buffer[3] === 0x8)\n\t) {\n\t\treturn {\n\t\t\text: 'zip',\n\t\t\tmime: 'application/zip'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x30, 0x30, 0x30, 0x30, 0x30, 0x30], {offset: 148, mask: [0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8]}) && // Valid tar checksum\n\t\ttarHeaderChecksumMatches(buffer)\n\t) {\n\t\treturn {\n\t\t\text: 'tar',\n\t\t\tmime: 'application/x-tar'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7]) &&\n\t\t(buffer[6] === 0x0 || buffer[6] === 0x1)\n\t) {\n\t\treturn {\n\t\t\text: 'rar',\n\t\t\tmime: 'application/x-rar-compressed'\n\t\t};\n\t}\n\n\tif (check([0x1F, 0x8B, 0x8])) {\n\t\treturn {\n\t\t\text: 'gz',\n\t\t\tmime: 'application/gzip'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x5A, 0x68])) {\n\t\treturn {\n\t\t\text: 'bz2',\n\t\t\tmime: 'application/x-bzip2'\n\t\t};\n\t}\n\n\tif (check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) {\n\t\treturn {\n\t\t\text: '7z',\n\t\t\tmime: 'application/x-7z-compressed'\n\t\t};\n\t}\n\n\tif (check([0x78, 0x01])) {\n\t\treturn {\n\t\t\text: 'dmg',\n\t\t\tmime: 'application/x-apple-diskimage'\n\t\t};\n\t}\n\n\t// `mov` format variants\n\tif (\n\t\tcheck([0x66, 0x72, 0x65, 0x65], {offset: 4}) || // `free`\n\t\tcheck([0x6D, 0x64, 0x61, 0x74], {offset: 4}) || // `mdat` MJPEG\n\t\tcheck([0x6D, 0x6F, 0x6F, 0x76], {offset: 4}) || // `moov`\n\t\tcheck([0x77, 0x69, 0x64, 0x65], {offset: 4}) // `wide`\n\t) {\n\t\treturn {\n\t\t\text: 'mov',\n\t\t\tmime: 'video/quicktime'\n\t\t};\n\t}\n\n\t// File Type Box (https://en.wikipedia.org/wiki/ISO_base_media_file_format)\n\t// It's not required to be first, but it's recommended to be. Almost all ISO base media files start with `ftyp` box.\n\t// `ftyp` box must contain a brand major identifier, which must consist of ISO 8859-1 printable characters.\n\t// Here we check for 8859-1 printable characters (for simplicity, it's a mask which also catches one non-printable character).\n\tif (\n\t\tcheck([0x66, 0x74, 0x79, 0x70], {offset: 4}) && // `ftyp`\n\t\t(buffer[8] & 0x60) !== 0x00 && (buffer[9] & 0x60) !== 0x00 && (buffer[10] & 0x60) !== 0x00 && (buffer[11] & 0x60) !== 0x00 // Brand major\n\t) {\n\t\t// They all can have MIME `video/mp4` except `application/mp4` special-case which is hard to detect.\n\t\t// For some cases, we're specific, everything else falls to `video/mp4` with `mp4` extension.\n\t\tconst brandMajor = uint8ArrayUtf8ByteString(buffer, 8, 12);\n\t\tswitch (brandMajor) {\n\t\t\tcase 'mif1':\n\t\t\t\treturn {ext: 'heic', mime: 'image/heif'};\n\t\t\tcase 'msf1':\n\t\t\t\treturn {ext: 'heic', mime: 'image/heif-sequence'};\n\t\t\tcase 'heic': case 'heix':\n\t\t\t\treturn {ext: 'heic', mime: 'image/heic'};\n\t\t\tcase 'hevc': case 'hevx':\n\t\t\t\treturn {ext: 'heic', mime: 'image/heic-sequence'};\n\t\t\tcase 'qt ':\n\t\t\t\treturn {ext: 'mov', mime: 'video/quicktime'};\n\t\t\tcase 'M4V ': case 'M4VH': case 'M4VP':\n\t\t\t\treturn {ext: 'm4v', mime: 'video/x-m4v'};\n\t\t\tcase 'M4P ':\n\t\t\t\treturn {ext: 'm4p', mime: 'video/mp4'};\n\t\t\tcase 'M4B ':\n\t\t\t\treturn {ext: 'm4b', mime: 'audio/mp4'};\n\t\t\tcase 'M4A ':\n\t\t\t\treturn {ext: 'm4a', mime: 'audio/x-m4a'};\n\t\t\tcase 'F4V ':\n\t\t\t\treturn {ext: 'f4v', mime: 'video/mp4'};\n\t\t\tcase 'F4P ':\n\t\t\t\treturn {ext: 'f4p', mime: 'video/mp4'};\n\t\t\tcase 'F4A ':\n\t\t\t\treturn {ext: 'f4a', mime: 'audio/mp4'};\n\t\t\tcase 'F4B ':\n\t\t\t\treturn {ext: 'f4b', mime: 'audio/mp4'};\n\t\t\tdefault:\n\t\t\t\tif (brandMajor.startsWith('3g')) {\n\t\t\t\t\tif (brandMajor.startsWith('3g2')) {\n\t\t\t\t\t\treturn {ext: '3g2', mime: 'video/3gpp2'};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {ext: '3gp', mime: 'video/3gpp'};\n\t\t\t\t}\n\n\t\t\t\treturn {ext: 'mp4', mime: 'video/mp4'};\n\t\t}\n\t}\n\n\tif (check([0x4D, 0x54, 0x68, 0x64])) {\n\t\treturn {\n\t\t\text: 'mid',\n\t\t\tmime: 'audio/midi'\n\t\t};\n\t}\n\n\t// https://github.com/threatstack/libmagic/blob/master/magic/Magdir/matroska\n\tif (check([0x1A, 0x45, 0xDF, 0xA3])) {\n\t\tconst sliced = buffer.subarray(4, 4 + 4096);\n\t\tconst idPos = sliced.findIndex((el, i, arr) => arr[i] === 0x42 && arr[i + 1] === 0x82);\n\n\t\tif (idPos !== -1) {\n\t\t\tconst docTypePos = idPos + 3;\n\t\t\tconst findDocType = type => [...type].every((c, i) => sliced[docTypePos + i] === c.charCodeAt(0));\n\n\t\t\tif (findDocType('matroska')) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'mkv',\n\t\t\t\t\tmime: 'video/x-matroska'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (findDocType('webm')) {\n\t\t\t\treturn {\n\t\t\t\t\text: 'webm',\n\t\t\t\t\tmime: 'video/webm'\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\t// RIFF file format which might be AVI, WAV, QCP, etc\n\tif (check([0x52, 0x49, 0x46, 0x46])) {\n\t\tif (check([0x41, 0x56, 0x49], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'avi',\n\t\t\t\tmime: 'video/vnd.avi'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x57, 0x41, 0x56, 0x45], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'wav',\n\t\t\t\tmime: 'audio/vnd.wave'\n\t\t\t};\n\t\t}\n\n\t\t// QLCM, QCP file\n\t\tif (check([0x51, 0x4C, 0x43, 0x4D], {offset: 8})) {\n\t\t\treturn {\n\t\t\t\text: 'qcp',\n\t\t\t\tmime: 'audio/qcelp'\n\t\t\t};\n\t\t}\n\t}\n\n\t// ASF_Header_Object first 80 bytes\n\tif (check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {\n\t\t// Search for header should be in first 1KB of file.\n\n\t\tlet offset = 30;\n\t\tdo {\n\t\t\tconst objectSize = readUInt64LE(buffer, offset + 16);\n\t\t\tif (check([0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65], {offset})) {\n\t\t\t\t// Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)\n\t\t\t\tif (check([0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B], {offset: offset + 24})) {\n\t\t\t\t\t// Found audio:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'wma',\n\t\t\t\t\t\tmime: 'audio/x-ms-wma'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (check([0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B], {offset: offset + 24})) {\n\t\t\t\t\t// Found video:\n\t\t\t\t\treturn {\n\t\t\t\t\t\text: 'wmv',\n\t\t\t\t\t\tmime: 'video/x-ms-asf'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\toffset += objectSize;\n\t\t} while (offset + 24 <= buffer.length);\n\n\t\t// Default to ASF generic extension\n\t\treturn {\n\t\t\text: 'asf',\n\t\t\tmime: 'application/vnd.ms-asf'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x0, 0x0, 0x1, 0xBA]) ||\n\t\tcheck([0x0, 0x0, 0x1, 0xB3])\n\t) {\n\t\treturn {\n\t\t\text: 'mpg',\n\t\t\tmime: 'video/mpeg'\n\t\t};\n\t}\n\n\t// Check for MPEG header at different starting offsets\n\tfor (let start = 0; start < 2 && start < (buffer.length - 16); start++) {\n\t\tif (\n\t\t\tcheck([0x49, 0x44, 0x33], {offset: start}) || // ID3 header\n\t\t\tcheck([0xFF, 0xE2], {offset: start, mask: [0xFF, 0xE6]}) // MPEG 1 or 2 Layer 3 header\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp3',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0xFF, 0xE4], {offset: start, mask: [0xFF, 0xE6]}) // MPEG 1 or 2 Layer 2 header\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp2',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0xFF, 0xF8], {offset: start, mask: [0xFF, 0xFC]}) // MPEG 2 layer 0 using ADTS\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp2',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\n\t\tif (\n\t\t\tcheck([0xFF, 0xF0], {offset: start, mask: [0xFF, 0xFC]}) // MPEG 4 layer 0 using ADTS\n\t\t) {\n\t\t\treturn {\n\t\t\t\text: 'mp4',\n\t\t\t\tmime: 'audio/mpeg'\n\t\t\t};\n\t\t}\n\t}\n\n\t// Needs to be before `ogg` check\n\tif (check([0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64], {offset: 28})) {\n\t\treturn {\n\t\t\text: 'opus',\n\t\t\tmime: 'audio/opus'\n\t\t};\n\t}\n\n\t// If 'OggS' in first bytes, then OGG container\n\tif (check([0x4F, 0x67, 0x67, 0x53])) {\n\t\t// This is a OGG container\n\n\t\t// If ' theora' in header.\n\t\tif (check([0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'ogv',\n\t\t\t\tmime: 'video/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If '\\x01video' in header.\n\t\tif (check([0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'ogm',\n\t\t\t\tmime: 'video/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If ' FLAC' in header https://xiph.org/flac/faq.html\n\t\tif (check([0x7F, 0x46, 0x4C, 0x41, 0x43], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'oga',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// 'Speex ' in header https://en.wikipedia.org/wiki/Speex\n\t\tif (check([0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'spx',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// If '\\x01vorbis' in header\n\t\tif (check([0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73], {offset: 28})) {\n\t\t\treturn {\n\t\t\t\text: 'ogg',\n\t\t\t\tmime: 'audio/ogg'\n\t\t\t};\n\t\t}\n\n\t\t// Default OGG container https://www.iana.org/assignments/media-types/application/ogg\n\t\treturn {\n\t\t\text: 'ogx',\n\t\t\tmime: 'application/ogg'\n\t\t};\n\t}\n\n\tif (check([0x66, 0x4C, 0x61, 0x43])) {\n\t\treturn {\n\t\t\text: 'flac',\n\t\t\tmime: 'audio/x-flac'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x41, 0x43, 0x20])) { // 'MAC '\n\t\treturn {\n\t\t\text: 'ape',\n\t\t\tmime: 'audio/ape'\n\t\t};\n\t}\n\n\tif (check([0x77, 0x76, 0x70, 0x6B])) { // 'wvpk'\n\t\treturn {\n\t\t\text: 'wv',\n\t\t\tmime: 'audio/wavpack'\n\t\t};\n\t}\n\n\tif (check([0x23, 0x21, 0x41, 0x4D, 0x52, 0x0A])) {\n\t\treturn {\n\t\t\text: 'amr',\n\t\t\tmime: 'audio/amr'\n\t\t};\n\t}\n\n\tif (check([0x25, 0x50, 0x44, 0x46])) {\n\t\treturn {\n\t\t\text: 'pdf',\n\t\t\tmime: 'application/pdf'\n\t\t};\n\t}\n\n\tif (check([0x4D, 0x5A])) {\n\t\treturn {\n\t\t\text: 'exe',\n\t\t\tmime: 'application/x-msdownload'\n\t\t};\n\t}\n\n\tif (\n\t\t(buffer[0] === 0x43 || buffer[0] === 0x46) &&\n\t\tcheck([0x57, 0x53], {offset: 1})\n\t) {\n\t\treturn {\n\t\t\text: 'swf',\n\t\t\tmime: 'application/x-shockwave-flash'\n\t\t};\n\t}\n\n\tif (check([0x7B, 0x5C, 0x72, 0x74, 0x66])) {\n\t\treturn {\n\t\t\text: 'rtf',\n\t\t\tmime: 'application/rtf'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x61, 0x73, 0x6D])) {\n\t\treturn {\n\t\t\text: 'wasm',\n\t\t\tmime: 'application/wasm'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x77, 0x4F, 0x46, 0x46]) &&\n\t\t(\n\t\t\tcheck([0x00, 0x01, 0x00, 0x00], {offset: 4}) ||\n\t\t\tcheck([0x4F, 0x54, 0x54, 0x4F], {offset: 4})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'woff',\n\t\t\tmime: 'font/woff'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x77, 0x4F, 0x46, 0x32]) &&\n\t\t(\n\t\t\tcheck([0x00, 0x01, 0x00, 0x00], {offset: 4}) ||\n\t\t\tcheck([0x4F, 0x54, 0x54, 0x4F], {offset: 4})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'woff2',\n\t\t\tmime: 'font/woff2'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x4C, 0x50], {offset: 34}) &&\n\t\t(\n\t\t\tcheck([0x00, 0x00, 0x01], {offset: 8}) ||\n\t\t\tcheck([0x01, 0x00, 0x02], {offset: 8}) ||\n\t\t\tcheck([0x02, 0x00, 0x02], {offset: 8})\n\t\t)\n\t) {\n\t\treturn {\n\t\t\text: 'eot',\n\t\t\tmime: 'application/vnd.ms-fontobject'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x01, 0x00, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'ttf',\n\t\t\tmime: 'font/ttf'\n\t\t};\n\t}\n\n\tif (check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {\n\t\treturn {\n\t\t\text: 'otf',\n\t\t\tmime: 'font/otf'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x01, 0x00])) {\n\t\treturn {\n\t\t\text: 'ico',\n\t\t\tmime: 'image/x-icon'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x02, 0x00])) {\n\t\treturn {\n\t\t\text: 'cur',\n\t\t\tmime: 'image/x-icon'\n\t\t};\n\t}\n\n\tif (check([0x46, 0x4C, 0x56, 0x01])) {\n\t\treturn {\n\t\t\text: 'flv',\n\t\t\tmime: 'video/x-flv'\n\t\t};\n\t}\n\n\tif (check([0x25, 0x21])) {\n\t\treturn {\n\t\t\text: 'ps',\n\t\t\tmime: 'application/postscript'\n\t\t};\n\t}\n\n\tif (check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {\n\t\treturn {\n\t\t\text: 'xz',\n\t\t\tmime: 'application/x-xz'\n\t\t};\n\t}\n\n\tif (check([0x53, 0x51, 0x4C, 0x69])) {\n\t\treturn {\n\t\t\text: 'sqlite',\n\t\t\tmime: 'application/x-sqlite3'\n\t\t};\n\t}\n\n\tif (check([0x4E, 0x45, 0x53, 0x1A])) {\n\t\treturn {\n\t\t\text: 'nes',\n\t\t\tmime: 'application/x-nintendo-nes-rom'\n\t\t};\n\t}\n\n\tif (check([0x43, 0x72, 0x32, 0x34])) {\n\t\treturn {\n\t\t\text: 'crx',\n\t\t\tmime: 'application/x-google-chrome-extension'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x4D, 0x53, 0x43, 0x46]) ||\n\t\tcheck([0x49, 0x53, 0x63, 0x28])\n\t) {\n\t\treturn {\n\t\t\text: 'cab',\n\t\t\tmime: 'application/vnd.ms-cab-compressed'\n\t\t};\n\t}\n\n\t// Needs to be before `ar` check\n\tif (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E, 0x0A, 0x64, 0x65, 0x62, 0x69, 0x61, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79])) {\n\t\treturn {\n\t\t\text: 'deb',\n\t\t\tmime: 'application/x-deb'\n\t\t};\n\t}\n\n\tif (check([0x21, 0x3C, 0x61, 0x72, 0x63, 0x68, 0x3E])) {\n\t\treturn {\n\t\t\text: 'ar',\n\t\t\tmime: 'application/x-unix-archive'\n\t\t};\n\t}\n\n\tif (check([0xED, 0xAB, 0xEE, 0xDB])) {\n\t\treturn {\n\t\t\text: 'rpm',\n\t\t\tmime: 'application/x-rpm'\n\t\t};\n\t}\n\n\tif (\n\t\tcheck([0x1F, 0xA0]) ||\n\t\tcheck([0x1F, 0x9D])\n\t) {\n\t\treturn {\n\t\t\text: 'Z',\n\t\t\tmime: 'application/x-compress'\n\t\t};\n\t}\n\n\tif (check([0x4C, 0x5A, 0x49, 0x50])) {\n\t\treturn {\n\t\t\text: 'lz',\n\t\t\tmime: 'application/x-lzip'\n\t\t};\n\t}\n\n\tif (check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) {\n\t\treturn {\n\t\t\text: 'msi',\n\t\t\tmime: 'application/x-msi'\n\t\t};\n\t}\n\n\tif (check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {\n\t\treturn {\n\t\t\text: 'mxf',\n\t\t\tmime: 'application/mxf'\n\t\t};\n\t}\n\n\tif (check([0x47], {offset: 4}) && (check([0x47], {offset: 192}) || check([0x47], {offset: 196}))) {\n\t\treturn {\n\t\t\text: 'mts',\n\t\t\tmime: 'video/mp2t'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4C, 0x45, 0x4E, 0x44, 0x45, 0x52])) {\n\t\treturn {\n\t\t\text: 'blend',\n\t\t\tmime: 'application/x-blender'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x50, 0x47, 0xFB])) {\n\t\treturn {\n\t\t\text: 'bpg',\n\t\t\tmime: 'image/bpg'\n\t\t};\n\t}\n\n\tif (check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {\n\t\t// JPEG-2000 family\n\n\t\tif (check([0x6A, 0x70, 0x32, 0x20], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'jp2',\n\t\t\t\tmime: 'image/jp2'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6A, 0x70, 0x78, 0x20], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'jpx',\n\t\t\t\tmime: 'image/jpx'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6A, 0x70, 0x6D, 0x20], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'jpm',\n\t\t\t\tmime: 'image/jpm'\n\t\t\t};\n\t\t}\n\n\t\tif (check([0x6D, 0x6A, 0x70, 0x32], {offset: 20})) {\n\t\t\treturn {\n\t\t\t\text: 'mj2',\n\t\t\t\tmime: 'image/mj2'\n\t\t\t};\n\t\t}\n\t}\n\n\tif (check([0x46, 0x4F, 0x52, 0x4D])) {\n\t\treturn {\n\t\t\text: 'aif',\n\t\t\tmime: 'audio/aiff'\n\t\t};\n\t}\n\n\tif (checkString('<?xml ')) {\n\t\treturn {\n\t\t\text: 'xml',\n\t\t\tmime: 'application/xml'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x4F, 0x4F, 0x4B, 0x4D, 0x4F, 0x42, 0x49], {offset: 60})) {\n\t\treturn {\n\t\t\text: 'mobi',\n\t\t\tmime: 'application/x-mobipocket-ebook'\n\t\t};\n\t}\n\n\tif (check([0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A])) {\n\t\treturn {\n\t\t\text: 'ktx',\n\t\t\tmime: 'image/ktx'\n\t\t};\n\t}\n\n\tif (check([0x44, 0x49, 0x43, 0x4D], {offset: 128})) {\n\t\treturn {\n\t\t\text: 'dcm',\n\t\t\tmime: 'application/dicom'\n\t\t};\n\t}\n\n\t// Musepack, SV7\n\tif (check([0x4D, 0x50, 0x2B])) {\n\t\treturn {\n\t\t\text: 'mpc',\n\t\t\tmime: 'audio/x-musepack'\n\t\t};\n\t}\n\n\t// Musepack, SV8\n\tif (check([0x4D, 0x50, 0x43, 0x4B])) {\n\t\treturn {\n\t\t\text: 'mpc',\n\t\t\tmime: 'audio/x-musepack'\n\t\t};\n\t}\n\n\tif (check([0x42, 0x45, 0x47, 0x49, 0x4E, 0x3A])) {\n\t\treturn {\n\t\t\text: 'ics',\n\t\t\tmime: 'text/calendar'\n\t\t};\n\t}\n\n\tif (check([0x67, 0x6C, 0x54, 0x46, 0x02, 0x00, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'glb',\n\t\t\tmime: 'model/gltf-binary'\n\t\t};\n\t}\n\n\tif (check([0xD4, 0xC3, 0xB2, 0xA1]) || check([0xA1, 0xB2, 0xC3, 0xD4])) {\n\t\treturn {\n\t\t\text: 'pcap',\n\t\t\tmime: 'application/vnd.tcpdump.pcap'\n\t\t};\n\t}\n\n\t// Sony DSD Stream File (DSF)\n\tif (check([0x44, 0x53, 0x44, 0x20])) {\n\t\treturn {\n\t\t\text: 'dsf',\n\t\t\tmime: 'audio/x-dsf' // Non-standard\n\t\t};\n\t}\n\n\tif (check([0x4C, 0x00, 0x00, 0x00, 0x01, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46])) {\n\t\treturn {\n\t\t\text: 'lnk',\n\t\t\tmime: 'application/x.ms.shortcut' // Invented by us\n\t\t};\n\t}\n\n\tif (check([0x62, 0x6F, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00])) {\n\t\treturn {\n\t\t\text: 'alias',\n\t\t\tmime: 'application/x.apple.alias' // Invented by us\n\t\t};\n\t}\n\n\tif (checkString('Creative Voice File')) {\n\t\treturn {\n\t\t\text: 'voc',\n\t\t\tmime: 'audio/x-voc'\n\t\t};\n\t}\n\n\tif (check([0x0B, 0x77])) {\n\t\treturn {\n\t\t\text: 'ac3',\n\t\t\tmime: 'audio/vnd.dolby.dd-raw'\n\t\t};\n\t}\n};\n\nmodule.exports = fileType;\n\nObject.defineProperty(fileType, 'minimumBytes', {value: 4100});\n\nfileType.stream = readableStream => new Promise((resolve, reject) => {\n\t// Using `eval` to work around issues when bundling with Webpack\n\tconst stream = eval('require')('stream'); // eslint-disable-line no-eval\n\n\treadableStream.once('readable', () => {\n\t\tconst pass = new stream.PassThrough();\n\t\tconst chunk = readableStream.read(module.exports.minimumBytes) || readableStream.read();\n\t\ttry {\n\t\t\tpass.fileType = fileType(chunk);\n\t\t} catch (error) {\n\t\t\treject(error);\n\t\t}\n\n\t\treadableStream.unshift(chunk);\n\n\t\tif (stream.pipeline) {\n\t\t\tresolve(stream.pipeline(readableStream, pass, () => {}));\n\t\t} else {\n\t\t\tresolve(readableStream.pipe(pass));\n\t\t}\n\t});\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\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\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'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar isArray = require('isarray');\n/*</replacement>*/\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\nvar OurUint8Array = global.Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*</replacement>*/\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/BufferList');\nvar destroyImpl = require('./internal/streams/destroy');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n var isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var readableHwm = options.readableHighWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n\n if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm;\n\n // cast to ints.\n this.highWaterMark = Math.floor(this.highWaterMark);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n\n Stream.call(this);\n}\n\nObject.defineProperty(Readable.prototype, 'destroyed', {\n get: function () {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function (value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\n\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n this.push(null);\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\n\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n\n if (addToFront) {\n if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n stream.emit('error', new Error('stream.push() after EOF'));\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n }\n\n return needMoreData(state);\n}\n\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\n\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n pna.nextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = { hasUnpiped: false };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this, unpipeInfo);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this, unpipeInfo);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n pna.nextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n pna.nextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n\n var state = this._readableState;\n var paused = false;\n\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n\n _this.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return this;\n};\n\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function () {\n return this._readableState.highWaterMark;\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = Buffer.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n pna.nextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}","module.exports = require('events').EventEmitter;\n","'use strict';\n\n/*<replacement>*/\n\nvar pna = require('process-nextick-args');\n/*</replacement>*/\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n pna.nextTick(emitErrorNT, this, err);\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n pna.nextTick(emitErrorNT, _this, err);\n if (_this._writableState) {\n _this._writableState.errorEmitted = true;\n }\n } else if (cb) {\n cb(err);\n }\n });\n\n return this;\n}\n\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\n\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\n\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy\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'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\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// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(Transform, Duplex);\n\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) {\n return this.emit('error', new Error('write callback called multiple times'));\n }\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data != null) // single equals check for both `null` and `undefined`\n this.push(data);\n\n cb(er);\n\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\n\nfunction prefinish() {\n var _this = this;\n\n if (typeof this._flush === 'function') {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nTransform.prototype._destroy = function (err, cb) {\n var _this2 = this;\n\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n _this2.emit('close');\n });\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data != null) // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}","\"use strict\";\n// Implementation of the Advanced Systems Format (ASF)\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Ref:\n * https://tools.ietf.org/html/draft-fleischman-asf-01, Appendix A: ASF GUIDs\n * http://drang.s4.xrea.com/program/tips/id3tag/wmp/10_asf_guids.html\n * http://drang.s4.xrea.com/program/tips/id3tag/wmp/index.html\n *\n * http://drang.s4.xrea.com/program/tips/id3tag/wmp/10_asf_guids.html\n *\n * ASF File Structure:\n * https://msdn.microsoft.com/en-us/library/windows/desktop/ee663575(v=vs.85).aspx\n *\n * ASF GUIDs:\n * http://drang.s4.xrea.com/program/tips/id3tag/wmp/10_asf_guids.html\n *\n * https://github.com/dji-sdk/FFmpeg/blob/master/libavformat/asf.c\n */\nclass GUID {\n constructor(str) {\n this.str = str;\n }\n static fromBin(bin, offset = 0) {\n return new GUID(this.decode(bin, offset));\n }\n /**\n * Decode GUID in format like \"B503BF5F-2EA9-CF11-8EE3-00C00C205365\"\n * @param objectId Binary GUID\n * @param offset Read offset in bytes, default 0\n * @returns {string} GUID as dashed hexadecimal representation\n */\n static decode(objectId, offset = 0) {\n const guid = objectId.readUInt32LE(offset).toString(16) + \"-\" +\n objectId.readUInt16LE(offset + 4).toString(16) + \"-\" +\n objectId.readUInt16LE(offset + 6).toString(16) + \"-\" +\n objectId.readUInt16BE(offset + 8).toString(16) + \"-\" +\n objectId.slice(offset + 10, offset + 16).toString('hex');\n return guid.toUpperCase();\n }\n /**\n * Decode stream type\n * @param {string} mediaType\n * @returns {string}\n */\n static decodeMediaType(mediaType) {\n switch (mediaType.str) {\n case GUID.AudioMedia.str: return 'audio';\n case GUID.VideoMedia.str: return 'video';\n case GUID.CommandMedia.str: return 'command';\n case GUID.Degradable_JPEG_Media.str: return 'degradable-jpeg';\n case GUID.FileTransferMedia.str: return 'file-transfer';\n case GUID.BinaryMedia.str: return 'binary';\n }\n }\n /**\n * Encode GUID\n * @param guid GUID like: \"B503BF5F-2EA9-CF11-8EE3-00C00C205365\"\n * @returns {Buffer} Encoded Bnary GUID\n */\n static encode(str) {\n const bin = Buffer.alloc(16);\n bin.writeUInt32LE(parseInt(str.slice(0, 8), 16), 0);\n bin.writeUInt16LE(parseInt(str.slice(9, 13), 16), 4);\n bin.writeUInt16LE(parseInt(str.slice(14, 18), 16), 6);\n Buffer.from(str.slice(19, 23), \"hex\").copy(bin, 8);\n Buffer.from(str.slice(24), \"hex\").copy(bin, 10);\n return bin;\n }\n equals(guid) {\n return this.str === guid.str;\n }\n toBin() {\n return GUID.encode(this.str);\n }\n}\n// 10.1 Top-level ASF object GUIDs\nGUID.HeaderObject = new GUID(\"75B22630-668E-11CF-A6D9-00AA0062CE6C\");\nGUID.DataObject = new GUID(\"75B22636-668E-11CF-A6D9-00AA0062CE6C\");\nGUID.SimpleIndexObject = new GUID(\"33000890-E5B1-11CF-89F4-00A0C90349CB\");\nGUID.IndexObject = new GUID(\"D6E229D3-35DA-11D1-9034-00A0C90349BE\");\nGUID.MediaObjectIndexObject = new GUID(\"FEB103F8-12AD-4C64-840F-2A1D2F7AD48C\");\nGUID.TimecodeIndexObject = new GUID(\"3CB73FD0-0C4A-4803-953D-EDF7B6228F0C\");\n// 10.2 Header Object GUIDs\nGUID.FilePropertiesObject = new GUID(\"8CABDCA1-A947-11CF-8EE4-00C00C205365\");\nGUID.StreamPropertiesObject = new GUID(\"B7DC0791-A9B7-11CF-8EE6-00C00C205365\");\nGUID.HeaderExtensionObject = new GUID(\"5FBF03B5-A92E-11CF-8EE3-00C00C205365\");\nGUID.CodecListObject = new GUID(\"86D15240-311D-11D0-A3A4-00A0C90348F6\");\nGUID.ScriptCommandObject = new GUID(\"1EFB1A30-0B62-11D0-A39B-00A0C90348F6\");\nGUID.MarkerObject = new GUID(\"F487CD01-A951-11CF-8EE6-00C00C205365\");\nGUID.BitrateMutualExclusionObject = new GUID(\"D6E229DC-35DA-11D1-9034-00A0C90349BE\");\nGUID.ErrorCorrectionObject = new GUID(\"75B22635-668E-11CF-A6D9-00AA0062CE6C\");\nGUID.ContentDescriptionObject = new GUID(\"75B22633-668E-11CF-A6D9-00AA0062CE6C\");\nGUID.ExtendedContentDescriptionObject = new GUID(\"D2D0A440-E307-11D2-97F0-00A0C95EA850\");\nGUID.ContentBrandingObject = new GUID(\"2211B3FA-BD23-11D2-B4B7-00A0C955FC6E\");\nGUID.StreamBitratePropertiesObject = new GUID(\"7BF875CE-468D-11D1-8D82-006097C9A2B2\");\nGUID.ContentEncryptionObject = new GUID(\"2211B3FB-BD23-11D2-B4B7-00A0C955FC6E\");\nGUID.ExtendedContentEncryptionObject = new GUID(\"298AE614-2622-4C17-B935-DAE07EE9289C\");\nGUID.DigitalSignatureObject = new GUID(\"2211B3FC-BD23-11D2-B4B7-00A0C955FC6E\");\nGUID.PaddingObject = new GUID(\"1806D474-CADF-4509-A4BA-9AABCB96AAE8\");\n// 10.3 Header Extension Object GUIDs\nGUID.ExtendedStreamPropertiesObject = new GUID(\"14E6A5CB-C672-4332-8399-A96952065B5A\");\nGUID.AdvancedMutualExclusionObject = new GUID(\"A08649CF-4775-4670-8A16-6E35357566CD\");\nGUID.GroupMutualExclusionObject = new GUID(\"D1465A40-5A79-4338-B71B-E36B8FD6C249\");\nGUID.StreamPrioritizationObject = new GUID(\"D4FED15B-88D3-454F-81F0-ED5C45999E24\");\nGUID.BandwidthSharingObject = new GUID(\"A69609E6-517B-11D2-B6AF-00C04FD908E9\");\nGUID.LanguageListObject = new GUID(\"7C4346A9-EFE0-4BFC-B229-393EDE415C85\");\nGUID.MetadataObject = new GUID(\"C5F8CBEA-5BAF-4877-8467-AA8C44FA4CCA\");\nGUID.MetadataLibraryObject = new GUID(\"44231C94-9498-49D1-A141-1D134E457054\");\nGUID.IndexParametersObject = new GUID(\"D6E229DF-35DA-11D1-9034-00A0C90349BE\");\nGUID.MediaObjectIndexParametersObject = new GUID(\"6B203BAD-3F11-48E4-ACA8-D7613DE2CFA7\");\nGUID.TimecodeIndexParametersObject = new GUID(\"F55E496D-9797-4B5D-8C8B-604DFE9BFB24\");\nGUID.CompatibilityObject = new GUID(\"26F18B5D-4584-47EC-9F5F-0E651F0452C9\");\nGUID.AdvancedContentEncryptionObject = new GUID(\"43058533-6981-49E6-9B74-AD12CB86D58C\");\n// 10.4 Stream Properties Object Stream Type GUIDs\nGUID.AudioMedia = new GUID(\"F8699E40-5B4D-11CF-A8FD-00805F5C442B\");\nGUID.VideoMedia = new GUID(\"BC19EFC0-5B4D-11CF-A8FD-00805F5C442B\");\nGUID.CommandMedia = new GUID(\"59DACFC0-59E6-11D0-A3AC-00A0C90348F6\");\nGUID.JFIF_Media = new GUID(\"B61BE100-5B4E-11CF-A8FD-00805F5C442B\");\nGUID.Degradable_JPEG_Media = new GUID(\"35907DE0-E415-11CF-A917-00805F5C442B\");\nGUID.FileTransferMedia = new GUID(\"91BD222C-F21C-497A-8B6D-5AA86BFC0185\");\nGUID.BinaryMedia = new GUID(\"3AFB65E2-47EF-40F2-AC2C-70A90D71D343\");\nGUID.ASF_Index_Placeholder_Object = new GUID(\"D9AADE20-7C17-4F9C-BC28-8555DD98E2A2\");\nexports.default = GUID;\n//# sourceMappingURL=GUID.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst ID3v2_1 = require(\"../../id3v2/ID3v2\");\n/**\n * Parse the METADATA_BLOCK_PICTURE\n * Ref: https://wiki.xiph.org/VorbisComment#METADATA_BLOCK_PICTURE\n * Ref: https://xiph.org/flac/format.html#metadata_block_picture\n * // ToDo: move to ID3 / APIC?\n */\nclass VorbisPictureToken {\n constructor(len) {\n this.len = len;\n }\n static fromBase64(base64str) {\n return this.fromBuffer(Buffer.from(base64str, 'base64'));\n }\n static fromBuffer(buffer) {\n const pic = new VorbisPictureToken(buffer.length);\n return pic.get(buffer, 0);\n }\n get(buffer, offset) {\n const type = ID3v2_1.AttachedPictureType[Token.UINT32_BE.get(buffer, offset)];\n const mimeLen = Token.UINT32_BE.get(buffer, offset += 4);\n const format = buffer.toString('utf-8', offset += 4, offset + mimeLen);\n const descLen = Token.UINT32_BE.get(buffer, offset += mimeLen);\n const description = buffer.toString('utf-8', offset += 4, offset + descLen);\n const width = Token.UINT32_BE.get(buffer, offset += descLen);\n const height = Token.UINT32_BE.get(buffer, offset += 4);\n const colour_depth = Token.UINT32_BE.get(buffer, offset += 4);\n const indexed_color = Token.UINT32_BE.get(buffer, offset += 4);\n const picDataLen = Token.UINT32_BE.get(buffer, offset += 4);\n const data = Buffer.from(buffer.slice(offset += 4, offset + picDataLen));\n return {\n type,\n format,\n description,\n width,\n height,\n colour_depth,\n indexed_color,\n data\n };\n }\n}\nexports.VorbisPictureToken = VorbisPictureToken;\n/**\n * Comment header decoder\n * Ref: https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-620004.2.1\n */\nexports.CommonHeader = {\n len: 7,\n get: (buf, off) => {\n return {\n packetType: buf.readUInt8(off),\n vorbis: new Token.StringType(6, 'ascii').get(buf, off + 1)\n };\n }\n};\n/**\n * Identification header decoder\n * Ref: https://xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-630004.2.2\n */\nexports.IdentificationHeader = {\n len: 23,\n get: (buf, off) => {\n return {\n version: buf.readUInt32LE(off + 0),\n channelMode: buf.readUInt8(off + 4),\n sampleRate: buf.readUInt32LE(off + 5),\n bitrateMax: buf.readUInt32LE(off + 9),\n bitrateNominal: buf.readUInt32LE(off + 13),\n bitrateMin: buf.readUInt32LE(off + 17)\n };\n }\n};\n//# sourceMappingURL=Vorbis.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst FourCC_1 = require(\"../common/FourCC\");\nconst initDebug = require(\"debug\");\nconst debug = initDebug('music-metadata:parser:MP4:atom');\nexports.Header = {\n len: 8,\n get: (buf, off) => {\n const length = Token.UINT32_BE.get(buf, off);\n if (length < 0)\n throw new Error(\"Invalid atom header length\");\n return {\n length,\n name: FourCC_1.FourCcToken.get(buf, off + 4)\n };\n },\n put: (buf, off, hdr) => {\n Token.UINT32_BE.put(buf, off, hdr.length);\n return FourCC_1.FourCcToken.put(buf, off + 4, hdr.name);\n }\n};\n/**\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap1/qtff1.html#//apple_ref/doc/uid/TP40000939-CH203-38190\n */\nexports.ExtendedSize = Token.UINT64_BE;\nexports.ftyp = {\n len: 4,\n get: (buf, off) => {\n return {\n type: new Token.StringType(4, \"ascii\").get(buf, off)\n };\n }\n};\n/**\n * Token: Movie Header Atom\n */\nexports.mhdr = {\n len: 8,\n get: (buf, off) => {\n return {\n version: Token.UINT8.get(buf, off + 0),\n flags: Token.UINT24_BE.get(buf, off + 1),\n nextItemID: Token.UINT32_BE.get(buf, off + 4)\n };\n }\n};\n/**\n * Base class for 'fixed' length atoms.\n * In some cases these atoms are longer then the sum of the described fields.\n * Issue: https://github.com/Borewit/music-metadata/issues/120\n */\nclass FixedLengthAtom {\n /**\n *\n * @param {number} len Length as specified in the size field\n * @param {number} expLen Total length of sum of specified fields in the standard\n */\n constructor(len, expLen, atomId) {\n this.len = len;\n if (len < expLen) {\n throw new Error(`Atom ${atomId} expected to be ${expLen}, but specifies ${len} bytes long.`);\n }\n else if (len > expLen) {\n debug(`Warning: atom ${atomId} expected to be ${expLen}, but was actually ${len} bytes long.`);\n }\n }\n}\nexports.FixedLengthAtom = FixedLengthAtom;\n/**\n * Token: Media Header Atom\n * Ref:\n * https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-SW34\n * https://wiki.multimedia.cx/index.php/QuickTime_container#mdhd\n */\nclass MdhdAtom extends FixedLengthAtom {\n constructor(len) {\n super(len, 24, 'mdhd');\n this.len = len;\n }\n get(buf, off) {\n return {\n version: Token.UINT8.get(buf, off + 0),\n flags: Token.UINT24_BE.get(buf, off + 1),\n creationTime: Token.UINT32_BE.get(buf, off + 4),\n modificationTime: Token.UINT32_BE.get(buf, off + 8),\n timeScale: Token.UINT32_BE.get(buf, off + 12),\n duration: Token.UINT32_BE.get(buf, off + 16),\n language: Token.UINT16_BE.get(buf, off + 20),\n quality: Token.UINT16_BE.get(buf, off + 22)\n };\n }\n}\nexports.MdhdAtom = MdhdAtom;\n/**\n * Token: Movie Header Atom\n */\nclass MvhdAtom extends FixedLengthAtom {\n constructor(len) {\n super(len, 100, 'mvhd');\n this.len = len;\n }\n get(buf, off) {\n return {\n version: Token.UINT8.get(buf, off + 0),\n flags: Token.UINT24_BE.get(buf, off + 1),\n creationTime: Token.UINT32_BE.get(buf, off + 4),\n modificationTime: Token.UINT32_BE.get(buf, off + 8),\n timeScale: Token.UINT32_BE.get(buf, off + 12),\n duration: Token.UINT32_BE.get(buf, off + 16),\n preferredRate: Token.UINT32_BE.get(buf, off + 20),\n preferredVolume: Token.UINT16_BE.get(buf, off + 24),\n // ignore reserver: 10 bytes\n // ignore matrix structure: 36 bytes\n previewTime: Token.UINT32_BE.get(buf, off + 72),\n previewDuration: Token.UINT32_BE.get(buf, off + 76),\n posterTime: Token.UINT32_BE.get(buf, off + 80),\n selectionTime: Token.UINT32_BE.get(buf, off + 84),\n selectionDuration: Token.UINT32_BE.get(buf, off + 88),\n currentTime: Token.UINT32_BE.get(buf, off + 92),\n nextTrackID: Token.UINT32_BE.get(buf, off + 96)\n };\n }\n}\nexports.MvhdAtom = MvhdAtom;\n/**\n * Data Atom Structure\n */\nclass DataAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n return {\n type: {\n set: Token.UINT8.get(buf, off + 0),\n type: Token.UINT24_BE.get(buf, off + 1)\n },\n locale: Token.UINT24_BE.get(buf, off + 4),\n value: new Token.BufferType(this.len - 8).get(buf, off + 8)\n };\n }\n}\nexports.DataAtom = DataAtom;\n/**\n * Data Atom Structure\n * Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW31\n */\nclass NameAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n return {\n version: Token.UINT8.get(buf, off),\n flags: Token.UINT24_BE.get(buf, off + 1),\n name: new Token.StringType(this.len - 4, \"utf-8\").get(buf, off + 4)\n };\n }\n}\nexports.NameAtom = NameAtom;\n/**\n * Track Header Atoms structure\n * Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25550\n */\nclass TrackHeaderAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n return {\n version: Token.UINT8.get(buf, off),\n flags: Token.UINT24_BE.get(buf, off + 1),\n creationTime: Token.UINT32_BE.get(buf, off + 4),\n modificationTime: Token.UINT32_BE.get(buf, off + 8),\n trackId: Token.UINT32_BE.get(buf, off + 12),\n // reserved 4 bytes\n duration: Token.UINT32_BE.get(buf, off + 20),\n layer: Token.UINT16_BE.get(buf, off + 24),\n alternateGroup: Token.UINT16_BE.get(buf, off + 26),\n volume: Token.UINT16_BE.get(buf, off + 28) // ToDo: fixed point\n // ToDo: add remaining fields\n };\n }\n}\nexports.TrackHeaderAtom = TrackHeaderAtom;\n/**\n * Atom: Sample Description Atom ('stsd')\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25691\n */\nconst stsdHeader = {\n len: 8,\n get: (buf, off) => {\n return {\n version: Token.UINT8.get(buf, off + 0),\n flags: Token.UINT24_BE.get(buf, off + 1),\n numberOfEntries: Token.UINT32_BE.get(buf, off + 4)\n };\n }\n};\n/**\n * Atom: Sample Description Atom ('stsd')\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25691\n */\nclass SampleDiscriptionTable {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n return {\n dataFormat: FourCC_1.FourCcToken.get(buf, off),\n dataReferenceIndex: Token.UINT16_BE.get(buf, off + 10)\n };\n }\n}\n/**\n * Atom: Sample Description Atom ('stsd')\n * Ref: https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap2/qtff2.html#//apple_ref/doc/uid/TP40000939-CH204-25691\n */\nclass StsdAtom {\n constructor(len) {\n this.len = len;\n }\n get(buf, off) {\n const header = stsdHeader.get(buf, off);\n off += stsdHeader.len;\n const table = [];\n for (let n = 0; n < header.numberOfEntries; ++n) {\n const size = Token.UINT32_BE.get(buf, off); // Sample description size\n off += Token.UINT32_BE.len;\n table.push(new SampleDiscriptionTable(size).get(buf, off));\n off += size;\n }\n return {\n header,\n table\n };\n }\n}\nexports.StsdAtom = StsdAtom;\n//# sourceMappingURL=AtomToken.js.map","/*!\n\nJSZip v3.3.0 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/master/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/master/LICENSE\n*/\n\n!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=t()}}(function(){return function s(a,o,h){function u(r,t){if(!o[r]){if(!a[r]){var e=\"function\"==typeof require&&require;if(!t&&e)return e(r,!0);if(l)return l(r,!0);var i=new Error(\"Cannot find module '\"+r+\"'\");throw i.code=\"MODULE_NOT_FOUND\",i}var n=o[r]={exports:{}};a[r][0].call(n.exports,function(t){var e=a[r][1][t];return u(e||t)},n,n.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,t=0;t<h.length;t++)u(h[t]);return u}({1:[function(t,e,r){\"use strict\";var c=t(\"./utils\"),d=t(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(t){for(var e,r,i,n,s,a,o,h=[],u=0,l=t.length,f=l,d=\"string\"!==c.getTypeOf(t);u<t.length;)f=l-u,i=d?(e=t[u++],r=u<l?t[u++]:0,u<l?t[u++]:0):(e=t.charCodeAt(u++),r=u<l?t.charCodeAt(u++):0,u<l?t.charCodeAt(u++):0),n=e>>2,s=(3&e)<<4|r>>4,a=1<f?(15&r)<<2|i>>6:64,o=2<f?63&i:64,h.push(p.charAt(n)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(t){var e,r,i,n,s,a,o=0,h=0,u=\"data:\";if(t.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(t=t.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\")).length/4;if(t.charAt(t.length-1)===p.charAt(64)&&f--,t.charAt(t.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=d.uint8array?new Uint8Array(0|f):new Array(0|f);o<t.length;)e=p.indexOf(t.charAt(o++))<<2|(n=p.indexOf(t.charAt(o++)))>>4,r=(15&n)<<4|(s=p.indexOf(t.charAt(o++)))>>2,i=(3&s)<<6|(a=p.indexOf(t.charAt(o++))),l[h++]=e,64!==s&&(l[h++]=r),64!==a&&(l[h++]=i);return l}},{\"./support\":30,\"./utils\":32}],2:[function(t,e,r){\"use strict\";var i=t(\"./external\"),n=t(\"./stream/DataWorker\"),s=t(\"./stream/DataLengthProbe\"),a=t(\"./stream/Crc32Probe\");s=t(\"./stream/DataLengthProbe\");function o(t,e,r,i,n){this.compressedSize=t,this.uncompressedSize=e,this.crc32=r,this.compression=i,this.compressedContent=n}o.prototype={getContentWorker:function(){var t=new n(i.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new s(\"data_length\")),e=this;return t.on(\"end\",function(){if(this.streamInfo.data_length!==e.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),t},getCompressedWorker:function(){return new n(i.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(t,e,r){return t.pipe(new a).pipe(new s(\"uncompressedSize\")).pipe(e.compressWorker(r)).pipe(new s(\"compressedSize\")).withStreamInfo(\"compression\",e)},e.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(t,e,r){\"use strict\";var i=t(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(t){return new i(\"STORE compression\")},uncompressWorker:function(){return new i(\"STORE decompression\")}},r.DEFLATE=t(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(t,e,r){\"use strict\";var i=t(\"./utils\");var o=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e){return void 0!==t&&t.length?\"string\"!==i.getTypeOf(t)?function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return-1^t}(0|e,t,t.length,0):function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a<s;a++)t=t>>>8^n[255&(t^e.charCodeAt(a))];return-1^t}(0|e,t,t.length,0):0}},{\"./utils\":32}],5:[function(t,e,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(t,e,r){\"use strict\";var i=null;i=\"undefined\"!=typeof Promise?Promise:t(\"lie\"),e.exports={Promise:i}},{lie:37}],7:[function(t,e,r){\"use strict\";var i=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,n=t(\"pako\"),s=t(\"./utils\"),a=t(\"./stream/GenericWorker\"),o=i?\"uint8array\":\"array\";function h(t,e){a.call(this,\"FlateWorker/\"+t),this._pako=null,this._pakoAction=t,this._pakoOptions=e,this.meta={}}r.magic=\"\\b\\0\",s.inherits(h,a),h.prototype.processChunk=function(t){this.meta=t.meta,null===this._pako&&this._createPako(),this._pako.push(s.transformTo(o,t.data),!1)},h.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},h.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},h.prototype._createPako=function(){this._pako=new n[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},r.compressWorker=function(t){return new h(\"Deflate\",t)},r.uncompressWorker=function(){return new h(\"Inflate\",{})}},{\"./stream/GenericWorker\":28,\"./utils\":32,pako:38}],8:[function(t,e,r){\"use strict\";function A(t,e){var r,i=\"\";for(r=0;r<e;r++)i+=String.fromCharCode(255&t),t>>>=8;return i}function i(t,e,r,i,n,s){var a,o,h=t.file,u=t.compression,l=s!==O.utf8encode,f=I.transformTo(\"string\",s(h.name)),d=I.transformTo(\"string\",O.utf8encode(h.name)),c=h.comment,p=I.transformTo(\"string\",s(c)),m=I.transformTo(\"string\",O.utf8encode(c)),_=d.length!==h.name.length,g=m.length!==c.length,b=\"\",v=\"\",y=\"\",w=h.dir,k=h.date,x={crc32:0,compressedSize:0,uncompressedSize:0};e&&!r||(x.crc32=t.crc32,x.compressedSize=t.compressedSize,x.uncompressedSize=t.uncompressedSize);var S=0;e&&(S|=8),l||!_&&!g||(S|=2048);var z=0,C=0;w&&(z|=16),\"UNIX\"===n?(C=798,z|=function(t,e){var r=t;return t||(r=e?16893:33204),(65535&r)<<16}(h.unixPermissions,w)):(C=20,z|=function(t){return 63&(t||0)}(h.dosPermissions)),a=k.getUTCHours(),a<<=6,a|=k.getUTCMinutes(),a<<=5,a|=k.getUTCSeconds()/2,o=k.getUTCFullYear()-1980,o<<=4,o|=k.getUTCMonth()+1,o<<=5,o|=k.getUTCDate(),_&&(v=A(1,1)+A(B(f),4)+d,b+=\"up\"+A(v.length,2)+v),g&&(y=A(1,1)+A(B(p),4)+m,b+=\"uc\"+A(y.length,2)+y);var E=\"\";return E+=\"\\n\\0\",E+=A(S,2),E+=u.magic,E+=A(a,2),E+=A(o,2),E+=A(x.crc32,4),E+=A(x.compressedSize,4),E+=A(x.uncompressedSize,4),E+=A(f.length,2),E+=A(b.length,2),{fileRecord:R.LOCAL_FILE_HEADER+E+f+b,dirRecord:R.CENTRAL_FILE_HEADER+A(C,2)+E+A(p.length,2)+\"\\0\\0\\0\\0\"+A(z,4)+A(i,4)+f+b+p}}var I=t(\"../utils\"),n=t(\"../stream/GenericWorker\"),O=t(\"../utf8\"),B=t(\"../crc32\"),R=t(\"../signature\");function s(t,e,r,i){n.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=e,this.zipPlatform=r,this.encodeFileName=i,this.streamFiles=t,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}I.inherits(s,n),s.prototype.push=function(t){var e=t.meta.percent||0,r=this.entriesCount,i=this._sources.length;this.accumulate?this.contentBuffer.push(t):(this.bytesWritten+=t.data.length,n.prototype.push.call(this,{data:t.data,meta:{currentFile:this.currentFile,percent:r?(e+100*(r-i-1))/r:100}}))},s.prototype.openedSource=function(t){this.currentSourceOffset=this.bytesWritten,this.currentFile=t.file.name;var e=this.streamFiles&&!t.file.dir;if(e){var r=i(t,e,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},s.prototype.closedSource=function(t){this.accumulate=!1;var e=this.streamFiles&&!t.file.dir,r=i(t,e,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),e)this.push({data:function(t){return R.DATA_DESCRIPTOR+A(t.crc32,4)+A(t.compressedSize,4)+A(t.uncompressedSize,4)}(t),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},s.prototype.flush=function(){for(var t=this.bytesWritten,e=0;e<this.dirRecords.length;e++)this.push({data:this.dirRecords[e],meta:{percent:100}});var r=this.bytesWritten-t,i=function(t,e,r,i,n){var s=I.transformTo(\"string\",n(i));return R.CENTRAL_DIRECTORY_END+\"\\0\\0\\0\\0\"+A(t,2)+A(t,2)+A(e,4)+A(r,4)+A(s.length,2)+s}(this.dirRecords.length,r,t,this.zipComment,this.encodeFileName);this.push({data:i,meta:{percent:100}})},s.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},s.prototype.registerPrevious=function(t){this._sources.push(t);var e=this;return t.on(\"data\",function(t){e.processChunk(t)}),t.on(\"end\",function(){e.closedSource(e.previous.streamInfo),e._sources.length?e.prepareNextSource():e.end()}),t.on(\"error\",function(t){e.error(t)}),this},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},s.prototype.error=function(t){var e=this._sources;if(!n.prototype.error.call(this,t))return!1;for(var r=0;r<e.length;r++)try{e[r].error(t)}catch(t){}return!0},s.prototype.lock=function(){n.prototype.lock.call(this);for(var t=this._sources,e=0;e<t.length;e++)t[e].lock()},e.exports=s},{\"../crc32\":4,\"../signature\":23,\"../stream/GenericWorker\":28,\"../utf8\":31,\"../utils\":32}],9:[function(t,e,r){\"use strict\";var u=t(\"../compressions\"),i=t(\"./ZipFileWorker\");r.generateWorker=function(t,a,e){var o=new i(a.streamFiles,e,a.platform,a.encodeFileName),h=0;try{t.forEach(function(t,e){h++;var r=function(t,e){var r=t||e,i=u[r];if(!i)throw new Error(r+\" is not a valid compression method !\");return i}(e.options.compression,a.compression),i=e.options.compressionOptions||a.compressionOptions||{},n=e.dir,s=e.date;e._compressWorker(r,i).withStreamInfo(\"file\",{name:t,dir:n,date:s,comment:e.comment||\"\",unixPermissions:e.unixPermissions,dosPermissions:e.dosPermissions}).pipe(o)}),o.entriesCount=h}catch(t){o.error(t)}return o}},{\"../compressions\":3,\"./ZipFileWorker\":8}],10:[function(t,e,r){\"use strict\";function i(){if(!(this instanceof i))return new i;if(arguments.length)throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");this.files={},this.comment=null,this.root=\"\",this.clone=function(){var t=new i;for(var e in this)\"function\"!=typeof this[e]&&(t[e]=this[e]);return t}}(i.prototype=t(\"./object\")).loadAsync=t(\"./load\"),i.support=t(\"./support\"),i.defaults=t(\"./defaults\"),i.version=\"3.4.0\",i.loadAsync=function(t,e){return(new i).loadAsync(t,e)},i.external=t(\"./external\"),e.exports=i},{\"./defaults\":5,\"./external\":6,\"./load\":11,\"./object\":15,\"./support\":30}],11:[function(t,e,r){\"use strict\";var i=t(\"./utils\"),n=t(\"./external\"),o=t(\"./utf8\"),h=(i=t(\"./utils\"),t(\"./zipEntries\")),s=t(\"./stream/Crc32Probe\"),u=t(\"./nodejsUtils\");function l(i){return new n.Promise(function(t,e){var r=i.decompressed.getContentWorker().pipe(new s);r.on(\"error\",function(t){e(t)}).on(\"end\",function(){r.streamInfo.crc32!==i.decompressed.crc32?e(new Error(\"Corrupted zip : CRC32 mismatch\")):t()}).resume()})}e.exports=function(t,s){var a=this;return s=i.extend(s||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:o.utf8decode}),u.isNode&&u.isStream(t)?n.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\")):i.prepareContent(\"the loaded zip file\",t,!0,s.optimizedBinaryString,s.base64).then(function(t){var e=new h(s);return e.load(t),e}).then(function(t){var e=[n.Promise.resolve(t)],r=t.files;if(s.checkCRC32)for(var i=0;i<r.length;i++)e.push(l(r[i]));return n.Promise.all(e)}).then(function(t){for(var e=t.shift(),r=e.files,i=0;i<r.length;i++){var n=r[i];a.file(n.fileNameStr,n.decompressed,{binary:!0,optimizedBinaryString:!0,date:n.date,dir:n.dir,comment:n.fileCommentStr.length?n.fileCommentStr:null,unixPermissions:n.unixPermissions,dosPermissions:n.dosPermissions,createFolders:s.createFolders})}return e.zipComment.length&&(a.comment=e.zipComment),a})}},{\"./external\":6,\"./nodejsUtils\":14,\"./stream/Crc32Probe\":25,\"./utf8\":31,\"./utils\":32,\"./zipEntries\":33}],12:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"../stream/GenericWorker\");function s(t,e){n.call(this,\"Nodejs stream input adapter for \"+t),this._upstreamEnded=!1,this._bindStream(e)}i.inherits(s,n),s.prototype._bindStream=function(t){var e=this;(this._stream=t).pause(),t.on(\"data\",function(t){e.push({data:t,meta:{percent:0}})}).on(\"error\",function(t){e.isPaused?this.generatedError=t:e.error(t)}).on(\"end\",function(){e.isPaused?e._upstreamEnded=!0:e.end()})},s.prototype.pause=function(){return!!n.prototype.pause.call(this)&&(this._stream.pause(),!0)},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},e.exports=s},{\"../stream/GenericWorker\":28,\"../utils\":32}],13:[function(t,e,r){\"use strict\";var n=t(\"readable-stream\").Readable;function i(t,e,r){n.call(this,e),this._helper=t;var i=this;t.on(\"data\",function(t,e){i.push(t)||i._helper.pause(),r&&r(e)}).on(\"error\",function(t){i.emit(\"error\",t)}).on(\"end\",function(){i.push(null)})}t(\"../utils\").inherits(i,n),i.prototype._read=function(){this._helper.resume()},e.exports=i},{\"../utils\":32,\"readable-stream\":16}],14:[function(t,e,r){\"use strict\";e.exports={isNode:\"undefined\"!=typeof Buffer,newBufferFrom:function(t,e){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(t,e);if(\"number\"==typeof t)throw new Error('The \"data\" argument must not be a number');return new Buffer(t,e)},allocBuffer:function(t){if(Buffer.alloc)return Buffer.alloc(t);var e=new Buffer(t);return e.fill(0),e},isBuffer:function(t){return Buffer.isBuffer(t)},isStream:function(t){return t&&\"function\"==typeof t.on&&\"function\"==typeof t.pause&&\"function\"==typeof t.resume}}},{}],15:[function(t,e,r){\"use strict\";function s(t,e,r){var i,n=u.getTypeOf(e),s=u.extend(r||{},f);s.date=s.date||new Date,null!==s.compression&&(s.compression=s.compression.toUpperCase()),\"string\"==typeof s.unixPermissions&&(s.unixPermissions=parseInt(s.unixPermissions,8)),s.unixPermissions&&16384&s.unixPermissions&&(s.dir=!0),s.dosPermissions&&16&s.dosPermissions&&(s.dir=!0),s.dir&&(t=g(t)),s.createFolders&&(i=_(t))&&b.call(this,i,!0);var a=\"string\"===n&&!1===s.binary&&!1===s.base64;r&&void 0!==r.binary||(s.binary=!a),(e instanceof d&&0===e.uncompressedSize||s.dir||!e||0===e.length)&&(s.base64=!1,s.binary=!0,e=\"\",s.compression=\"STORE\",n=\"string\");var o=null;o=e instanceof d||e instanceof l?e:p.isNode&&p.isStream(e)?new m(t,e):u.prepareContent(t,e,s.binary,s.optimizedBinaryString,s.base64);var h=new c(t,o,s);this.files[t]=h}var n=t(\"./utf8\"),u=t(\"./utils\"),l=t(\"./stream/GenericWorker\"),a=t(\"./stream/StreamHelper\"),f=t(\"./defaults\"),d=t(\"./compressedObject\"),c=t(\"./zipObject\"),o=t(\"./generate\"),p=t(\"./nodejsUtils\"),m=t(\"./nodejs/NodejsStreamInputAdapter\"),_=function(t){\"/\"===t.slice(-1)&&(t=t.substring(0,t.length-1));var e=t.lastIndexOf(\"/\");return 0<e?t.substring(0,e):\"\"},g=function(t){return\"/\"!==t.slice(-1)&&(t+=\"/\"),t},b=function(t,e){return e=void 0!==e?e:f.createFolders,t=g(t),this.files[t]||s.call(this,t,null,{dir:!0,createFolders:e}),this.files[t]};function h(t){return\"[object RegExp]\"===Object.prototype.toString.call(t)}var i={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(t){var e,r,i;for(e in this.files)this.files.hasOwnProperty(e)&&(i=this.files[e],(r=e.slice(this.root.length,e.length))&&e.slice(0,this.root.length)===this.root&&t(r,i))},filter:function(r){var i=[];return this.forEach(function(t,e){r(t,e)&&i.push(e)}),i},file:function(t,e,r){if(1!==arguments.length)return t=this.root+t,s.call(this,t,e,r),this;if(h(t)){var i=t;return this.filter(function(t,e){return!e.dir&&i.test(t)})}var n=this.files[this.root+t];return n&&!n.dir?n:null},folder:function(r){if(!r)return this;if(h(r))return this.filter(function(t,e){return e.dir&&r.test(t)});var t=this.root+r,e=b.call(this,t),i=this.clone();return i.root=e.name,i},remove:function(r){r=this.root+r;var t=this.files[r];if(t||(\"/\"!==r.slice(-1)&&(r+=\"/\"),t=this.files[r]),t&&!t.dir)delete this.files[r];else for(var e=this.filter(function(t,e){return e.name.slice(0,r.length)===r}),i=0;i<e.length;i++)delete this.files[e[i].name];return this},generate:function(t){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},generateInternalStream:function(t){var e,r={};try{if((r=u.extend(t||{},{streamFiles:!1,compression:\"STORE\",compressionOptions:null,type:\"\",platform:\"DOS\",comment:null,mimeType:\"application/zip\",encodeFileName:n.utf8encode})).type=r.type.toLowerCase(),r.compression=r.compression.toUpperCase(),\"binarystring\"===r.type&&(r.type=\"string\"),!r.type)throw new Error(\"No output type specified.\");u.checkSupport(r.type),\"darwin\"!==r.platform&&\"freebsd\"!==r.platform&&\"linux\"!==r.platform&&\"sunos\"!==r.platform||(r.platform=\"UNIX\"),\"win32\"===r.platform&&(r.platform=\"DOS\");var i=r.comment||this.comment||\"\";e=o.generateWorker(this,r,i)}catch(t){(e=new l(\"error\")).error(t)}return new a(e,r.type||\"string\",r.mimeType)},generateAsync:function(t,e){return this.generateInternalStream(t).accumulate(e)},generateNodeStream:function(t,e){return(t=t||{}).type||(t.type=\"nodebuffer\"),this.generateInternalStream(t).toNodejsStream(e)}};e.exports=i},{\"./compressedObject\":2,\"./defaults\":5,\"./generate\":9,\"./nodejs/NodejsStreamInputAdapter\":12,\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31,\"./utils\":32,\"./zipObject\":35}],16:[function(t,e,r){e.exports=t(\"stream\")},{stream:void 0}],17:[function(t,e,r){\"use strict\";var i=t(\"./DataReader\");function n(t){i.call(this,t);for(var e=0;e<this.data.length;e++)t[e]=255&t[e]}t(\"../utils\").inherits(n,i),n.prototype.byteAt=function(t){return this.data[this.zero+t]},n.prototype.lastIndexOfSignature=function(t){for(var e=t.charCodeAt(0),r=t.charCodeAt(1),i=t.charCodeAt(2),n=t.charCodeAt(3),s=this.length-4;0<=s;--s)if(this.data[s]===e&&this.data[s+1]===r&&this.data[s+2]===i&&this.data[s+3]===n)return s-this.zero;return-1},n.prototype.readAndCheckSignature=function(t){var e=t.charCodeAt(0),r=t.charCodeAt(1),i=t.charCodeAt(2),n=t.charCodeAt(3),s=this.readData(4);return e===s[0]&&r===s[1]&&i===s[2]&&n===s[3]},n.prototype.readData=function(t){if(this.checkOffset(t),0===t)return[];var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./DataReader\":18}],18:[function(t,e,r){\"use strict\";var i=t(\"../utils\");function n(t){this.data=t,this.length=t.length,this.index=0,this.zero=0}n.prototype={checkOffset:function(t){this.checkIndex(this.index+t)},checkIndex:function(t){if(this.length<this.zero+t||t<0)throw new Error(\"End of data reached (data length = \"+this.length+\", asked index = \"+t+\"). Corrupted zip ?\")},setIndex:function(t){this.checkIndex(t),this.index=t},skip:function(t){this.setIndex(this.index+t)},byteAt:function(t){},readInt:function(t){var e,r=0;for(this.checkOffset(t),e=this.index+t-1;e>=this.index;e--)r=(r<<8)+this.byteAt(e);return this.index+=t,r},readString:function(t){return i.transformTo(\"string\",this.readData(t))},readData:function(t){},lastIndexOfSignature:function(t){},readAndCheckSignature:function(t){},readDate:function(){var t=this.readInt(4);return new Date(Date.UTC(1980+(t>>25&127),(t>>21&15)-1,t>>16&31,t>>11&31,t>>5&63,(31&t)<<1))}},e.exports=n},{\"../utils\":32}],19:[function(t,e,r){\"use strict\";var i=t(\"./Uint8ArrayReader\");function n(t){i.call(this,t)}t(\"../utils\").inherits(n,i),n.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./Uint8ArrayReader\":21}],20:[function(t,e,r){\"use strict\";var i=t(\"./DataReader\");function n(t){i.call(this,t)}t(\"../utils\").inherits(n,i),n.prototype.byteAt=function(t){return this.data.charCodeAt(this.zero+t)},n.prototype.lastIndexOfSignature=function(t){return this.data.lastIndexOf(t)-this.zero},n.prototype.readAndCheckSignature=function(t){return t===this.readData(4)},n.prototype.readData=function(t){this.checkOffset(t);var e=this.data.slice(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./DataReader\":18}],21:[function(t,e,r){\"use strict\";var i=t(\"./ArrayReader\");function n(t){i.call(this,t)}t(\"../utils\").inherits(n,i),n.prototype.readData=function(t){if(this.checkOffset(t),0===t)return new Uint8Array(0);var e=this.data.subarray(this.zero+this.index,this.zero+this.index+t);return this.index+=t,e},e.exports=n},{\"../utils\":32,\"./ArrayReader\":17}],22:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"../support\"),s=t(\"./ArrayReader\"),a=t(\"./StringReader\"),o=t(\"./NodeBufferReader\"),h=t(\"./Uint8ArrayReader\");e.exports=function(t){var e=i.getTypeOf(t);return i.checkSupport(e),\"string\"!==e||n.uint8array?\"nodebuffer\"===e?new o(t):n.uint8array?new h(i.transformTo(\"uint8array\",t)):new s(i.transformTo(\"array\",t)):new a(t)}},{\"../support\":30,\"../utils\":32,\"./ArrayReader\":17,\"./NodeBufferReader\":19,\"./StringReader\":20,\"./Uint8ArrayReader\":21}],23:[function(t,e,r){\"use strict\";r.LOCAL_FILE_HEADER=\"PK\u0003\u0004\",r.CENTRAL_FILE_HEADER=\"PK\u0001\u0002\",r.CENTRAL_DIRECTORY_END=\"PK\u0005\u0006\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\u0006\u0007\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\u0006\u0006\",r.DATA_DESCRIPTOR=\"PK\u0007\\b\"},{}],24:[function(t,e,r){\"use strict\";var i=t(\"./GenericWorker\"),n=t(\"../utils\");function s(t){i.call(this,\"ConvertWorker to \"+t),this.destType=t}n.inherits(s,i),s.prototype.processChunk=function(t){this.push({data:n.transformTo(this.destType,t.data),meta:t.meta})},e.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],25:[function(t,e,r){\"use strict\";var i=t(\"./GenericWorker\"),n=t(\"../crc32\");function s(){i.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}t(\"../utils\").inherits(s,i),s.prototype.processChunk=function(t){this.streamInfo.crc32=n(t.data,this.streamInfo.crc32||0),this.push(t)},e.exports=s},{\"../crc32\":4,\"../utils\":32,\"./GenericWorker\":28}],26:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"./GenericWorker\");function s(t){n.call(this,\"DataLengthProbe for \"+t),this.propName=t,this.withStreamInfo(t,0)}i.inherits(s,n),s.prototype.processChunk=function(t){if(t){var e=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=e+t.data.length}n.prototype.processChunk.call(this,t)},e.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],27:[function(t,e,r){\"use strict\";var i=t(\"../utils\"),n=t(\"./GenericWorker\");function s(t){n.call(this,\"DataWorker\");var e=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,t.then(function(t){e.dataIsReady=!0,e.data=t,e.max=t&&t.length||0,e.type=i.getTypeOf(t),e.isPaused||e._tickAndRepeat()},function(t){e.error(t)})}i.inherits(s,n),s.prototype.cleanUp=function(){n.prototype.cleanUp.call(this),this.data=null},s.prototype.resume=function(){return!!n.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,i.delay(this._tickAndRepeat,[],this)),!0)},s.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(i.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},s.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var t=null,e=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":t=this.data.substring(this.index,e);break;case\"uint8array\":t=this.data.subarray(this.index,e);break;case\"array\":case\"nodebuffer\":t=this.data.slice(this.index,e)}return this.index=e,this.push({data:t,meta:{percent:this.max?this.index/this.max*100:0}})},e.exports=s},{\"../utils\":32,\"./GenericWorker\":28}],28:[function(t,e,r){\"use strict\";function i(t){this.name=t||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}i.prototype={push:function(t){this.emit(\"data\",t)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(t){this.emit(\"error\",t)}return!0},error:function(t){return!this.isFinished&&(this.isPaused?this.generatedError=t:(this.isFinished=!0,this.emit(\"error\",t),this.previous&&this.previous.error(t),this.cleanUp()),!0)},on:function(t,e){return this._listeners[t].push(e),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(t,e){if(this._listeners[t])for(var r=0;r<this._listeners[t].length;r++)this._listeners[t][r].call(this,e)},pipe:function(t){return t.registerPrevious(this)},registerPrevious:function(t){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.streamInfo=t.streamInfo,this.mergeStreamInfo(),this.previous=t;var e=this;return t.on(\"data\",function(t){e.processChunk(t)}),t.on(\"end\",function(){e.end()}),t.on(\"error\",function(t){e.error(t)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var t=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),t=!0),this.previous&&this.previous.resume(),!t},flush:function(){},processChunk:function(t){this.push(t)},withStreamInfo:function(t,e){return this.extraStreamInfo[t]=e,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var t in this.extraStreamInfo)this.extraStreamInfo.hasOwnProperty(t)&&(this.streamInfo[t]=this.extraStreamInfo[t])},lock:function(){if(this.isLocked)throw new Error(\"The stream '\"+this+\"' has already been used.\");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var t=\"Worker \"+this.name;return this.previous?this.previous+\" -> \"+t:t}},e.exports=i},{}],29:[function(t,e,r){\"use strict\";var h=t(\"../utils\"),n=t(\"./ConvertWorker\"),s=t(\"./GenericWorker\"),u=t(\"../base64\"),i=t(\"../support\"),a=t(\"../external\"),o=null;if(i.nodestream)try{o=t(\"../nodejs/NodejsStreamOutputAdapter\")}catch(t){}function l(t,o){return new a.Promise(function(e,r){var i=[],n=t._internalType,s=t._outputType,a=t._mimeType;t.on(\"data\",function(t,e){i.push(t),o&&o(e)}).on(\"error\",function(t){i=[],r(t)}).on(\"end\",function(){try{var t=function(t,e,r){switch(t){case\"blob\":return h.newBlob(h.transformTo(\"arraybuffer\",e),r);case\"base64\":return u.encode(e);default:return h.transformTo(t,e)}}(s,function(t,e){var r,i=0,n=null,s=0;for(r=0;r<e.length;r++)s+=e[r].length;switch(t){case\"string\":return e.join(\"\");case\"array\":return Array.prototype.concat.apply([],e);case\"uint8array\":for(n=new Uint8Array(s),r=0;r<e.length;r++)n.set(e[r],i),i+=e[r].length;return n;case\"nodebuffer\":return Buffer.concat(e);default:throw new Error(\"concat : unsupported type '\"+t+\"'\")}}(n,i),a);e(t)}catch(t){r(t)}i=[]}).resume()})}function f(t,e,r){var i=e;switch(e){case\"blob\":case\"arraybuffer\":i=\"uint8array\";break;case\"base64\":i=\"string\"}try{this._internalType=i,this._outputType=e,this._mimeType=r,h.checkSupport(i),this._worker=t.pipe(new n(i)),t.lock()}catch(t){this._worker=new s(\"error\"),this._worker.error(t)}}f.prototype={accumulate:function(t){return l(this,t)},on:function(t,e){var r=this;return\"data\"===t?this._worker.on(t,function(t){e.call(r,t.data,t.meta)}):this._worker.on(t,function(){h.delay(e,arguments,r)}),this},resume:function(){return h.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(t){if(h.checkSupport(\"nodestream\"),\"nodebuffer\"!==this._outputType)throw new Error(this._outputType+\" is not supported by this method\");return new o(this,{objectMode:\"nodebuffer\"!==this._outputType},t)}},e.exports=f},{\"../base64\":1,\"../external\":6,\"../nodejs/NodejsStreamOutputAdapter\":13,\"../support\":30,\"../utils\":32,\"./ConvertWorker\":24,\"./GenericWorker\":28}],30:[function(t,e,r){\"use strict\";if(r.base64=!0,r.array=!0,r.string=!0,r.arraybuffer=\"undefined\"!=typeof ArrayBuffer&&\"undefined\"!=typeof Uint8Array,r.nodebuffer=\"undefined\"!=typeof Buffer,r.uint8array=\"undefined\"!=typeof Uint8Array,\"undefined\"==typeof ArrayBuffer)r.blob=!1;else{var i=new ArrayBuffer(0);try{r.blob=0===new Blob([i],{type:\"application/zip\"}).size}catch(t){try{var n=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);n.append(i),r.blob=0===n.getBlob(\"application/zip\").size}catch(t){r.blob=!1}}}try{r.nodestream=!!t(\"readable-stream\").Readable}catch(t){r.nodestream=!1}},{\"readable-stream\":16}],31:[function(t,e,s){\"use strict\";for(var o=t(\"./utils\"),h=t(\"./support\"),r=t(\"./nodejsUtils\"),i=t(\"./stream/GenericWorker\"),u=new Array(256),n=0;n<256;n++)u[n]=252<=n?6:248<=n?5:240<=n?4:224<=n?3:192<=n?2:1;u[254]=u[254]=1;function a(){i.call(this,\"utf-8 decode\"),this.leftOver=null}function l(){i.call(this,\"utf-8 encode\")}s.utf8encode=function(t){return h.nodebuffer?r.newBufferFrom(t,\"utf-8\"):function(t){var e,r,i,n,s,a=t.length,o=0;for(n=0;n<a;n++)55296==(64512&(r=t.charCodeAt(n)))&&n+1<a&&56320==(64512&(i=t.charCodeAt(n+1)))&&(r=65536+(r-55296<<10)+(i-56320),n++),o+=r<128?1:r<2048?2:r<65536?3:4;for(e=h.uint8array?new Uint8Array(o):new Array(o),n=s=0;s<o;n++)55296==(64512&(r=t.charCodeAt(n)))&&n+1<a&&56320==(64512&(i=t.charCodeAt(n+1)))&&(r=65536+(r-55296<<10)+(i-56320),n++),r<128?e[s++]=r:(r<2048?e[s++]=192|r>>>6:(r<65536?e[s++]=224|r>>>12:(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63),e[s++]=128|r>>>6&63),e[s++]=128|63&r);return e}(t)},s.utf8decode=function(t){return h.nodebuffer?o.transformTo(\"nodebuffer\",t).toString(\"utf-8\"):function(t){var e,r,i,n,s=t.length,a=new Array(2*s);for(e=r=0;e<s;)if((i=t[e++])<128)a[r++]=i;else if(4<(n=u[i]))a[r++]=65533,e+=n-1;else{for(i&=2===n?31:3===n?15:7;1<n&&e<s;)i=i<<6|63&t[e++],n--;1<n?a[r++]=65533:i<65536?a[r++]=i:(i-=65536,a[r++]=55296|i>>10&1023,a[r++]=56320|1023&i)}return a.length!==r&&(a.subarray?a=a.subarray(0,r):a.length=r),o.applyFromCharCode(a)}(t=o.transformTo(h.uint8array?\"uint8array\":\"array\",t))},o.inherits(a,i),a.prototype.processChunk=function(t){var e=o.transformTo(h.uint8array?\"uint8array\":\"array\",t.data);if(this.leftOver&&this.leftOver.length){if(h.uint8array){var r=e;(e=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),e.set(r,this.leftOver.length)}else e=this.leftOver.concat(e);this.leftOver=null}var i=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0?e:0===r?e:r+u[t[r]]>e?r:e}(e),n=e;i!==e.length&&(h.uint8array?(n=e.subarray(0,i),this.leftOver=e.subarray(i,e.length)):(n=e.slice(0,i),this.leftOver=e.slice(i,e.length))),this.push({data:s.utf8decode(n),meta:t.meta})},a.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=a,o.inherits(l,i),l.prototype.processChunk=function(t){this.push({data:s.utf8encode(t.data),meta:t.meta})},s.Utf8EncodeWorker=l},{\"./nodejsUtils\":14,\"./stream/GenericWorker\":28,\"./support\":30,\"./utils\":32}],32:[function(t,e,a){\"use strict\";var o=t(\"./support\"),h=t(\"./base64\"),r=t(\"./nodejsUtils\"),i=t(\"set-immediate-shim\"),u=t(\"./external\");function n(t){return t}function l(t,e){for(var r=0;r<t.length;++r)e[r]=255&t.charCodeAt(r);return e}a.newBlob=function(e,r){a.checkSupport(\"blob\");try{return new Blob([e],{type:r})}catch(t){try{var i=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return i.append(e),i.getBlob(r)}catch(t){throw new Error(\"Bug : can't construct the Blob.\")}}};var s={stringifyByChunk:function(t,e,r){var i=[],n=0,s=t.length;if(s<=r)return String.fromCharCode.apply(null,t);for(;n<s;)\"array\"===e||\"nodebuffer\"===e?i.push(String.fromCharCode.apply(null,t.slice(n,Math.min(n+r,s)))):i.push(String.fromCharCode.apply(null,t.subarray(n,Math.min(n+r,s)))),n+=r;return i.join(\"\")},stringifyByChar:function(t){for(var e=\"\",r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},applyCanBeUsed:{uint8array:function(){try{return o.uint8array&&1===String.fromCharCode.apply(null,new Uint8Array(1)).length}catch(t){return!1}}(),nodebuffer:function(){try{return o.nodebuffer&&1===String.fromCharCode.apply(null,r.allocBuffer(1)).length}catch(t){return!1}}()}};function f(t){var e=65536,r=a.getTypeOf(t),i=!0;if(\"uint8array\"===r?i=s.applyCanBeUsed.uint8array:\"nodebuffer\"===r&&(i=s.applyCanBeUsed.nodebuffer),i)for(;1<e;)try{return s.stringifyByChunk(t,r,e)}catch(t){e=Math.floor(e/2)}return s.stringifyByChar(t)}function d(t,e){for(var r=0;r<t.length;r++)e[r]=t[r];return e}a.applyFromCharCode=f;var c={};c.string={string:n,array:function(t){return l(t,new Array(t.length))},arraybuffer:function(t){return c.string.uint8array(t).buffer},uint8array:function(t){return l(t,new Uint8Array(t.length))},nodebuffer:function(t){return l(t,r.allocBuffer(t.length))}},c.array={string:f,array:n,arraybuffer:function(t){return new Uint8Array(t).buffer},uint8array:function(t){return new Uint8Array(t)},nodebuffer:function(t){return r.newBufferFrom(t)}},c.arraybuffer={string:function(t){return f(new Uint8Array(t))},array:function(t){return d(new Uint8Array(t),new Array(t.byteLength))},arraybuffer:n,uint8array:function(t){return new Uint8Array(t)},nodebuffer:function(t){return r.newBufferFrom(new Uint8Array(t))}},c.uint8array={string:f,array:function(t){return d(t,new Array(t.length))},arraybuffer:function(t){return t.buffer},uint8array:n,nodebuffer:function(t){return r.newBufferFrom(t)}},c.nodebuffer={string:f,array:function(t){return d(t,new Array(t.length))},arraybuffer:function(t){return c.nodebuffer.uint8array(t).buffer},uint8array:function(t){return d(t,new Uint8Array(t.length))},nodebuffer:n},a.transformTo=function(t,e){if(e=e||\"\",!t)return e;a.checkSupport(t);var r=a.getTypeOf(e);return c[r][t](e)},a.getTypeOf=function(t){return\"string\"==typeof t?\"string\":\"[object Array]\"===Object.prototype.toString.call(t)?\"array\":o.nodebuffer&&r.isBuffer(t)?\"nodebuffer\":o.uint8array&&t instanceof Uint8Array?\"uint8array\":o.arraybuffer&&t instanceof ArrayBuffer?\"arraybuffer\":void 0},a.checkSupport=function(t){if(!o[t.toLowerCase()])throw new Error(t+\" is not supported by this platform\")},a.MAX_VALUE_16BITS=65535,a.MAX_VALUE_32BITS=-1,a.pretty=function(t){var e,r,i=\"\";for(r=0;r<(t||\"\").length;r++)i+=\"\\\\x\"+((e=t.charCodeAt(r))<16?\"0\":\"\")+e.toString(16).toUpperCase();return i},a.delay=function(t,e,r){i(function(){t.apply(r||null,e||[])})},a.inherits=function(t,e){function r(){}r.prototype=e.prototype,t.prototype=new r},a.extend=function(){var t,e,r={};for(t=0;t<arguments.length;t++)for(e in arguments[t])arguments[t].hasOwnProperty(e)&&void 0===r[e]&&(r[e]=arguments[t][e]);return r},a.prepareContent=function(r,t,i,n,s){return u.Promise.resolve(t).then(function(i){return o.blob&&(i instanceof Blob||-1!==[\"[object File]\",\"[object Blob]\"].indexOf(Object.prototype.toString.call(i)))&&\"undefined\"!=typeof FileReader?new u.Promise(function(e,r){var t=new FileReader;t.onload=function(t){e(t.target.result)},t.onerror=function(t){r(t.target.error)},t.readAsArrayBuffer(i)}):i}).then(function(t){var e=a.getTypeOf(t);return e?(\"arraybuffer\"===e?t=a.transformTo(\"uint8array\",t):\"string\"===e&&(s?t=h.decode(t):i&&!0!==n&&(t=function(t){return l(t,o.uint8array?new Uint8Array(t.length):new Array(t.length))}(t))),t):u.Promise.reject(new Error(\"Can't read the data of '\"+r+\"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\"))})}},{\"./base64\":1,\"./external\":6,\"./nodejsUtils\":14,\"./support\":30,\"set-immediate-shim\":54}],33:[function(t,e,r){\"use strict\";var i=t(\"./reader/readerFor\"),n=t(\"./utils\"),s=t(\"./signature\"),a=t(\"./zipEntry\"),o=(t(\"./utf8\"),t(\"./support\"));function h(t){this.files=[],this.loadOptions=t}h.prototype={checkSignature:function(t){if(!this.reader.readAndCheckSignature(t)){this.reader.index-=4;var e=this.reader.readString(4);throw new Error(\"Corrupted zip or bug: unexpected signature (\"+n.pretty(e)+\", expected \"+n.pretty(t)+\")\")}},isSignature:function(t,e){var r=this.reader.index;this.reader.setIndex(t);var i=this.reader.readString(4)===e;return this.reader.setIndex(r),i},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var t=this.reader.readData(this.zipCommentLength),e=o.uint8array?\"uint8array\":\"array\",r=n.transformTo(e,t);this.zipComment=this.loadOptions.decodeFileName(r)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var t,e,r,i=this.zip64EndOfCentralSize-44;0<i;)t=this.reader.readInt(2),e=this.reader.readInt(4),r=this.reader.readData(e),this.zip64ExtensibleData[t]={id:t,length:e,value:r}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var t,e;for(t=0;t<this.files.length;t++)e=this.files[t],this.reader.setIndex(e.localHeaderOffset),this.checkSignature(s.LOCAL_FILE_HEADER),e.readLocalPart(this.reader),e.handleUTF8(),e.processAttributes()},readCentralDir:function(){var t;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(s.CENTRAL_FILE_HEADER);)(t=new a({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(t);if(this.centralDirRecords!==this.files.length&&0!==this.centralDirRecords&&0===this.files.length)throw new Error(\"Corrupted zip or bug: expected \"+this.centralDirRecords+\" records in central dir, got \"+this.files.length)},readEndOfCentral:function(){var t=this.reader.lastIndexOfSignature(s.CENTRAL_DIRECTORY_END);if(t<0)throw!this.isSignature(0,s.LOCAL_FILE_HEADER)?new Error(\"Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\"):new Error(\"Corrupted zip: can't find end of central directory\");this.reader.setIndex(t);var e=t;if(this.checkSignature(s.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===n.MAX_VALUE_16BITS||this.diskWithCentralDirStart===n.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===n.MAX_VALUE_16BITS||this.centralDirRecords===n.MAX_VALUE_16BITS||this.centralDirSize===n.MAX_VALUE_32BITS||this.centralDirOffset===n.MAX_VALUE_32BITS){if(this.zip64=!0,(t=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");if(this.reader.setIndex(t),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,s.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(s.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var r=this.centralDirOffset+this.centralDirSize;this.zip64&&(r+=20,r+=12+this.zip64EndOfCentralSize);var i=e-r;if(0<i)this.isSignature(e,s.CENTRAL_FILE_HEADER)||(this.reader.zero=i);else if(i<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(i)+\" bytes.\")},prepareReader:function(t){this.reader=i(t)},load:function(t){this.prepareReader(t),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},e.exports=h},{\"./reader/readerFor\":22,\"./signature\":23,\"./support\":30,\"./utf8\":31,\"./utils\":32,\"./zipEntry\":34}],34:[function(t,e,r){\"use strict\";var i=t(\"./reader/readerFor\"),s=t(\"./utils\"),n=t(\"./compressedObject\"),a=t(\"./crc32\"),o=t(\"./utf8\"),h=t(\"./compressions\"),u=t(\"./support\");function l(t,e){this.options=t,this.loadOptions=e}l.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(t){var e,r;if(t.skip(22),this.fileNameLength=t.readInt(2),r=t.readInt(2),this.fileName=t.readData(this.fileNameLength),t.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(e=function(t){for(var e in h)if(h.hasOwnProperty(e)&&h[e].magic===t)return h[e];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+s.pretty(this.compressionMethod)+\" unknown (inner file : \"+s.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new n(this.compressedSize,this.uncompressedSize,this.crc32,e,t.readData(this.compressedSize))},readCentralPart:function(t){this.versionMadeBy=t.readInt(2),t.skip(2),this.bitFlag=t.readInt(2),this.compressionMethod=t.readString(2),this.date=t.readDate(),this.crc32=t.readInt(4),this.compressedSize=t.readInt(4),this.uncompressedSize=t.readInt(4);var e=t.readInt(2);if(this.extraFieldsLength=t.readInt(2),this.fileCommentLength=t.readInt(2),this.diskNumberStart=t.readInt(2),this.internalFileAttributes=t.readInt(2),this.externalFileAttributes=t.readInt(4),this.localHeaderOffset=t.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");t.skip(e),this.readExtraFields(t),this.parseZIP64ExtraField(t),this.fileComment=t.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var t=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0==t&&(this.dosPermissions=63&this.externalFileAttributes),3==t&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(t){if(this.extraFields[1]){var e=i(this.extraFields[1].value);this.uncompressedSize===s.MAX_VALUE_32BITS&&(this.uncompressedSize=e.readInt(8)),this.compressedSize===s.MAX_VALUE_32BITS&&(this.compressedSize=e.readInt(8)),this.localHeaderOffset===s.MAX_VALUE_32BITS&&(this.localHeaderOffset=e.readInt(8)),this.diskNumberStart===s.MAX_VALUE_32BITS&&(this.diskNumberStart=e.readInt(4))}},readExtraFields:function(t){var e,r,i,n=t.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});t.index<n;)e=t.readInt(2),r=t.readInt(2),i=t.readData(r),this.extraFields[e]={id:e,length:r,value:i}},handleUTF8:function(){var t=u.uint8array?\"uint8array\":\"array\";if(this.useUTF8())this.fileNameStr=o.utf8decode(this.fileName),this.fileCommentStr=o.utf8decode(this.fileComment);else{var e=this.findExtraFieldUnicodePath();if(null!==e)this.fileNameStr=e;else{var r=s.transformTo(t,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var i=this.findExtraFieldUnicodeComment();if(null!==i)this.fileCommentStr=i;else{var n=s.transformTo(t,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(n)}}},findExtraFieldUnicodePath:function(){var t=this.extraFields[28789];if(t){var e=i(t.value);return 1!==e.readInt(1)?null:a(this.fileName)!==e.readInt(4)?null:o.utf8decode(e.readData(t.length-5))}return null},findExtraFieldUnicodeComment:function(){var t=this.extraFields[25461];if(t){var e=i(t.value);return 1!==e.readInt(1)?null:a(this.fileComment)!==e.readInt(4)?null:o.utf8decode(e.readData(t.length-5))}return null}},e.exports=l},{\"./compressedObject\":2,\"./compressions\":3,\"./crc32\":4,\"./reader/readerFor\":22,\"./support\":30,\"./utf8\":31,\"./utils\":32}],35:[function(t,e,r){\"use strict\";function i(t,e,r){this.name=t,this.dir=r.dir,this.date=r.date,this.comment=r.comment,this.unixPermissions=r.unixPermissions,this.dosPermissions=r.dosPermissions,this._data=e,this._dataBinary=r.binary,this.options={compression:r.compression,compressionOptions:r.compressionOptions}}var s=t(\"./stream/StreamHelper\"),n=t(\"./stream/DataWorker\"),a=t(\"./utf8\"),o=t(\"./compressedObject\"),h=t(\"./stream/GenericWorker\");i.prototype={internalStream:function(t){var e=null,r=\"string\";try{if(!t)throw new Error(\"No output type specified.\");var i=\"string\"===(r=t.toLowerCase())||\"text\"===r;\"binarystring\"!==r&&\"text\"!==r||(r=\"string\"),e=this._decompressWorker();var n=!this._dataBinary;n&&!i&&(e=e.pipe(new a.Utf8EncodeWorker)),!n&&i&&(e=e.pipe(new a.Utf8DecodeWorker))}catch(t){(e=new h(\"error\")).error(t)}return new s(e,r,\"\")},async:function(t,e){return this.internalStream(t).accumulate(e)},nodeStream:function(t,e){return this.internalStream(t||\"nodebuffer\").toNodejsStream(e)},_compressWorker:function(t,e){if(this._data instanceof o&&this._data.compression.magic===t.magic)return this._data.getCompressedWorker();var r=this._decompressWorker();return this._dataBinary||(r=r.pipe(new a.Utf8EncodeWorker)),o.createWorkerFrom(r,t,e)},_decompressWorker:function(){return this._data instanceof o?this._data.getContentWorker():this._data instanceof h?this._data:new n(this._data)}};for(var u=[\"asText\",\"asBinary\",\"asNodeBuffer\",\"asUint8Array\",\"asArrayBuffer\"],l=function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},f=0;f<u.length;f++)i.prototype[u[f]]=l;e.exports=i},{\"./compressedObject\":2,\"./stream/DataWorker\":27,\"./stream/GenericWorker\":28,\"./stream/StreamHelper\":29,\"./utf8\":31}],36:[function(t,l,e){(function(e){\"use strict\";var r,i,t=e.MutationObserver||e.WebKitMutationObserver;if(t){var n=0,s=new t(u),a=e.document.createTextNode(\"\");s.observe(a,{characterData:!0}),r=function(){a.data=n=++n%2}}else if(e.setImmediate||void 0===e.MessageChannel)r=\"document\"in e&&\"onreadystatechange\"in e.document.createElement(\"script\")?function(){var t=e.document.createElement(\"script\");t.onreadystatechange=function(){u(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(u,0)};else{var o=new e.MessageChannel;o.port1.onmessage=u,r=function(){o.port2.postMessage(0)}}var h=[];function u(){var t,e;i=!0;for(var r=h.length;r;){for(e=h,h=[],t=-1;++t<r;)e[t]();r=h.length}i=!1}l.exports=function(t){1!==h.push(t)||i||r()}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],37:[function(t,e,r){\"use strict\";var n=t(\"immediate\");function u(){}var l={},s=[\"REJECTED\"],a=[\"FULFILLED\"],i=[\"PENDING\"];function o(t){if(\"function\"!=typeof t)throw new TypeError(\"resolver must be a function\");this.state=i,this.queue=[],this.outcome=void 0,t!==u&&c(this,t)}function h(t,e,r){this.promise=t,\"function\"==typeof e&&(this.onFulfilled=e,this.callFulfilled=this.otherCallFulfilled),\"function\"==typeof r&&(this.onRejected=r,this.callRejected=this.otherCallRejected)}function f(e,r,i){n(function(){var t;try{t=r(i)}catch(t){return l.reject(e,t)}t===e?l.reject(e,new TypeError(\"Cannot resolve promise with itself\")):l.resolve(e,t)})}function d(t){var e=t&&t.then;if(t&&(\"object\"==typeof t||\"function\"==typeof t)&&\"function\"==typeof e)return function(){e.apply(t,arguments)}}function c(e,t){var r=!1;function i(t){r||(r=!0,l.reject(e,t))}function n(t){r||(r=!0,l.resolve(e,t))}var s=p(function(){t(n,i)});\"error\"===s.status&&i(s.value)}function p(t,e){var r={};try{r.value=t(e),r.status=\"success\"}catch(t){r.status=\"error\",r.value=t}return r}(e.exports=o).prototype.finally=function(e){if(\"function\"!=typeof e)return this;var r=this.constructor;return this.then(function(t){return r.resolve(e()).then(function(){return t})},function(t){return r.resolve(e()).then(function(){throw t})})},o.prototype.catch=function(t){return this.then(null,t)},o.prototype.then=function(t,e){if(\"function\"!=typeof t&&this.state===a||\"function\"!=typeof e&&this.state===s)return this;var r=new this.constructor(u);this.state!==i?f(r,this.state===a?t:e,this.outcome):this.queue.push(new h(r,t,e));return r},h.prototype.callFulfilled=function(t){l.resolve(this.promise,t)},h.prototype.otherCallFulfilled=function(t){f(this.promise,this.onFulfilled,t)},h.prototype.callRejected=function(t){l.reject(this.promise,t)},h.prototype.otherCallRejected=function(t){f(this.promise,this.onRejected,t)},l.resolve=function(t,e){var r=p(d,e);if(\"error\"===r.status)return l.reject(t,r.value);var i=r.value;if(i)c(t,i);else{t.state=a,t.outcome=e;for(var n=-1,s=t.queue.length;++n<s;)t.queue[n].callFulfilled(e)}return t},l.reject=function(t,e){t.state=s,t.outcome=e;for(var r=-1,i=t.queue.length;++r<i;)t.queue[r].callRejected(e);return t},o.resolve=function(t){if(t instanceof this)return t;return l.resolve(new this(u),t)},o.reject=function(t){var e=new this(u);return l.reject(e,t)},o.all=function(t){var r=this;if(\"[object Array]\"!==Object.prototype.toString.call(t))return this.reject(new TypeError(\"must be an array\"));var i=t.length,n=!1;if(!i)return this.resolve([]);var s=new Array(i),a=0,e=-1,o=new this(u);for(;++e<i;)h(t[e],e);return o;function h(t,e){r.resolve(t).then(function(t){s[e]=t,++a!==i||n||(n=!0,l.resolve(o,s))},function(t){n||(n=!0,l.reject(o,t))})}},o.race=function(t){var e=this;if(\"[object Array]\"!==Object.prototype.toString.call(t))return this.reject(new TypeError(\"must be an array\"));var r=t.length,i=!1;if(!r)return this.resolve([]);var n=-1,s=new this(u);for(;++n<r;)a=t[n],e.resolve(a).then(function(t){i||(i=!0,l.resolve(s,t))},function(t){i||(i=!0,l.reject(s,t))});var a;return s}},{immediate:36}],38:[function(t,e,r){\"use strict\";var i={};(0,t(\"./lib/utils/common\").assign)(i,t(\"./lib/deflate\"),t(\"./lib/inflate\"),t(\"./lib/zlib/constants\")),e.exports=i},{\"./lib/deflate\":39,\"./lib/inflate\":40,\"./lib/utils/common\":41,\"./lib/zlib/constants\":44}],39:[function(t,e,r){\"use strict\";var a=t(\"./zlib/deflate\"),o=t(\"./utils/common\"),h=t(\"./utils/strings\"),n=t(\"./zlib/messages\"),s=t(\"./zlib/zstream\"),u=Object.prototype.toString,l=0,f=-1,d=0,c=8;function p(t){if(!(this instanceof p))return new p(t);this.options=o.assign({level:f,method:c,chunkSize:16384,windowBits:15,memLevel:8,strategy:d,to:\"\"},t||{});var e=this.options;e.raw&&0<e.windowBits?e.windowBits=-e.windowBits:e.gzip&&0<e.windowBits&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=a.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==l)throw new Error(n[r]);if(e.header&&a.deflateSetHeader(this.strm,e.header),e.dictionary){var i;if(i=\"string\"==typeof e.dictionary?h.string2buf(e.dictionary):\"[object ArrayBuffer]\"===u.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(r=a.deflateSetDictionary(this.strm,i))!==l)throw new Error(n[r]);this._dict_set=!0}}function i(t,e){var r=new p(e);if(r.push(t,!0),r.err)throw r.msg||n[r.err];return r.result}p.prototype.push=function(t,e){var r,i,n=this.strm,s=this.options.chunkSize;if(this.ended)return!1;i=e===~~e?e:!0===e?4:0,\"string\"==typeof t?n.input=h.string2buf(t):\"[object ArrayBuffer]\"===u.call(t)?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(0===n.avail_out&&(n.output=new o.Buf8(s),n.next_out=0,n.avail_out=s),1!==(r=a.deflate(n,i))&&r!==l)return this.onEnd(r),!(this.ended=!0);0!==n.avail_out&&(0!==n.avail_in||4!==i&&2!==i)||(\"string\"===this.options.to?this.onData(h.buf2binstring(o.shrinkBuf(n.output,n.next_out))):this.onData(o.shrinkBuf(n.output,n.next_out)))}while((0<n.avail_in||0===n.avail_out)&&1!==r);return 4===i?(r=a.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===l):2!==i||(this.onEnd(l),!(n.avail_out=0))},p.prototype.onData=function(t){this.chunks.push(t)},p.prototype.onEnd=function(t){t===l&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},r.Deflate=p,r.deflate=i,r.deflateRaw=function(t,e){return(e=e||{}).raw=!0,i(t,e)},r.gzip=function(t,e){return(e=e||{}).gzip=!0,i(t,e)}},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/deflate\":46,\"./zlib/messages\":51,\"./zlib/zstream\":53}],40:[function(t,e,r){\"use strict\";var d=t(\"./zlib/inflate\"),c=t(\"./utils/common\"),p=t(\"./utils/strings\"),m=t(\"./zlib/constants\"),i=t(\"./zlib/messages\"),n=t(\"./zlib/zstream\"),s=t(\"./zlib/gzheader\"),_=Object.prototype.toString;function a(t){if(!(this instanceof a))return new a(t);this.options=c.assign({chunkSize:16384,windowBits:0,to:\"\"},t||{});var e=this.options;e.raw&&0<=e.windowBits&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(0<=e.windowBits&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),15<e.windowBits&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new n,this.strm.avail_out=0;var r=d.inflateInit2(this.strm,e.windowBits);if(r!==m.Z_OK)throw new Error(i[r]);this.header=new s,d.inflateGetHeader(this.strm,this.header)}function o(t,e){var r=new a(e);if(r.push(t,!0),r.err)throw r.msg||i[r.err];return r.result}a.prototype.push=function(t,e){var r,i,n,s,a,o,h=this.strm,u=this.options.chunkSize,l=this.options.dictionary,f=!1;if(this.ended)return!1;i=e===~~e?e:!0===e?m.Z_FINISH:m.Z_NO_FLUSH,\"string\"==typeof t?h.input=p.binstring2buf(t):\"[object ArrayBuffer]\"===_.call(t)?h.input=new Uint8Array(t):h.input=t,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new c.Buf8(u),h.next_out=0,h.avail_out=u),(r=d.inflate(h,m.Z_NO_FLUSH))===m.Z_NEED_DICT&&l&&(o=\"string\"==typeof l?p.string2buf(l):\"[object ArrayBuffer]\"===_.call(l)?new Uint8Array(l):l,r=d.inflateSetDictionary(this.strm,o)),r===m.Z_BUF_ERROR&&!0===f&&(r=m.Z_OK,f=!1),r!==m.Z_STREAM_END&&r!==m.Z_OK)return this.onEnd(r),!(this.ended=!0);h.next_out&&(0!==h.avail_out&&r!==m.Z_STREAM_END&&(0!==h.avail_in||i!==m.Z_FINISH&&i!==m.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(n=p.utf8border(h.output,h.next_out),s=h.next_out-n,a=p.buf2string(h.output,n),h.next_out=s,h.avail_out=u-s,s&&c.arraySet(h.output,h.output,n,s,0),this.onData(a)):this.onData(c.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(f=!0)}while((0<h.avail_in||0===h.avail_out)&&r!==m.Z_STREAM_END);return r===m.Z_STREAM_END&&(i=m.Z_FINISH),i===m.Z_FINISH?(r=d.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===m.Z_OK):i!==m.Z_SYNC_FLUSH||(this.onEnd(m.Z_OK),!(h.avail_out=0))},a.prototype.onData=function(t){this.chunks.push(t)},a.prototype.onEnd=function(t){t===m.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=c.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},r.Inflate=a,r.inflate=o,r.inflateRaw=function(t,e){return(e=e||{}).raw=!0,o(t,e)},r.ungzip=o},{\"./utils/common\":41,\"./utils/strings\":42,\"./zlib/constants\":44,\"./zlib/gzheader\":47,\"./zlib/inflate\":49,\"./zlib/messages\":51,\"./zlib/zstream\":53}],41:[function(t,e,r){\"use strict\";var i=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;r.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var r=e.shift();if(r){if(\"object\"!=typeof r)throw new TypeError(r+\"must be non-object\");for(var i in r)r.hasOwnProperty(i)&&(t[i]=r[i])}}return t},r.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var n={arraySet:function(t,e,r,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(r,r+i),n);else for(var s=0;s<i;s++)t[n+s]=e[r+s]},flattenChunks:function(t){var e,r,i,n,s,a;for(e=i=0,r=t.length;e<r;e++)i+=t[e].length;for(a=new Uint8Array(i),e=n=0,r=t.length;e<r;e++)s=t[e],a.set(s,n),n+=s.length;return a}},s={arraySet:function(t,e,r,i,n){for(var s=0;s<i;s++)t[n+s]=e[r+s]},flattenChunks:function(t){return[].concat.apply([],t)}};r.setTyped=function(t){t?(r.Buf8=Uint8Array,r.Buf16=Uint16Array,r.Buf32=Int32Array,r.assign(r,n)):(r.Buf8=Array,r.Buf16=Array,r.Buf32=Array,r.assign(r,s))},r.setTyped(i)},{}],42:[function(t,e,r){\"use strict\";var h=t(\"./common\"),n=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(t){n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){s=!1}for(var u=new h.Buf8(256),i=0;i<256;i++)u[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;function l(t,e){if(e<65537&&(t.subarray&&s||!t.subarray&&n))return String.fromCharCode.apply(null,h.shrinkBuf(t,e));for(var r=\"\",i=0;i<e;i++)r+=String.fromCharCode(t[i]);return r}u[254]=u[254]=1,r.string2buf=function(t){var e,r,i,n,s,a=t.length,o=0;for(n=0;n<a;n++)55296==(64512&(r=t.charCodeAt(n)))&&n+1<a&&56320==(64512&(i=t.charCodeAt(n+1)))&&(r=65536+(r-55296<<10)+(i-56320),n++),o+=r<128?1:r<2048?2:r<65536?3:4;for(e=new h.Buf8(o),n=s=0;s<o;n++)55296==(64512&(r=t.charCodeAt(n)))&&n+1<a&&56320==(64512&(i=t.charCodeAt(n+1)))&&(r=65536+(r-55296<<10)+(i-56320),n++),r<128?e[s++]=r:(r<2048?e[s++]=192|r>>>6:(r<65536?e[s++]=224|r>>>12:(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63),e[s++]=128|r>>>6&63),e[s++]=128|63&r);return e},r.buf2binstring=function(t){return l(t,t.length)},r.binstring2buf=function(t){for(var e=new h.Buf8(t.length),r=0,i=e.length;r<i;r++)e[r]=t.charCodeAt(r);return e},r.buf2string=function(t,e){var r,i,n,s,a=e||t.length,o=new Array(2*a);for(r=i=0;r<a;)if((n=t[r++])<128)o[i++]=n;else if(4<(s=u[n]))o[i++]=65533,r+=s-1;else{for(n&=2===s?31:3===s?15:7;1<s&&r<a;)n=n<<6|63&t[r++],s--;1<s?o[i++]=65533:n<65536?o[i++]=n:(n-=65536,o[i++]=55296|n>>10&1023,o[i++]=56320|1023&n)}return l(o,i)},r.utf8border=function(t,e){var r;for((e=e||t.length)>t.length&&(e=t.length),r=e-1;0<=r&&128==(192&t[r]);)r--;return r<0?e:0===r?e:r+u[t[r]]>e?r:e}},{\"./common\":41}],43:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,i){for(var n=65535&t|0,s=t>>>16&65535|0,a=0;0!==r;){for(r-=a=2e3<r?2e3:r;s=s+(n=n+e[i++]|0)|0,--a;);n%=65521,s%=65521}return n|s<<16|0}},{}],44:[function(t,e,r){\"use strict\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(t,e,r){\"use strict\";var o=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();e.exports=function(t,e,r,i){var n=o,s=i+r;t^=-1;for(var a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return-1^t}},{}],46:[function(t,e,r){\"use strict\";var h,d=t(\"../utils/common\"),u=t(\"./trees\"),c=t(\"./adler32\"),p=t(\"./crc32\"),i=t(\"./messages\"),l=0,f=4,m=0,_=-2,g=-1,b=4,n=2,v=8,y=9,s=286,a=30,o=19,w=2*s+1,k=15,x=3,S=258,z=S+x+1,C=42,E=113,A=1,I=2,O=3,B=4;function R(t,e){return t.msg=i[e],e}function T(t){return(t<<1)-(4<t?9:0)}function D(t){for(var e=t.length;0<=--e;)t[e]=0}function F(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(d.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function N(t,e){u._tr_flush_block(t,0<=t.block_start?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,F(t.strm)}function U(t,e){t.pending_buf[t.pending++]=e}function P(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function L(t,e){var r,i,n=t.max_chain_length,s=t.strstart,a=t.prev_length,o=t.nice_match,h=t.strstart>t.w_size-z?t.strstart-(t.w_size-z):0,u=t.window,l=t.w_mask,f=t.prev,d=t.strstart+S,c=u[s+a-1],p=u[s+a];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(u[(r=e)+a]===p&&u[r+a-1]===c&&u[r]===u[s]&&u[++r]===u[s+1]){s+=2,r++;do{}while(u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&u[++s]===u[++r]&&s<d);if(i=S-(d-s),s=d-S,a<i){if(t.match_start=e,o<=(a=i))break;c=u[s+a-1],p=u[s+a]}}}while((e=f[e&l])>h&&0!=--n);return a<=t.lookahead?a:t.lookahead}function j(t){var e,r,i,n,s,a,o,h,u,l,f=t.w_size;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=f+(f-z)){for(d.arraySet(t.window,t.window,f,f,0),t.match_start-=f,t.strstart-=f,t.block_start-=f,e=r=t.hash_size;i=t.head[--e],t.head[e]=f<=i?i-f:0,--r;);for(e=r=f;i=t.prev[--e],t.prev[e]=f<=i?i-f:0,--r;);n+=f}if(0===t.strm.avail_in)break;if(a=t.strm,o=t.window,h=t.strstart+t.lookahead,u=n,l=void 0,l=a.avail_in,u<l&&(l=u),r=0===l?0:(a.avail_in-=l,d.arraySet(o,a.input,a.next_in,l,h),1===a.state.wrap?a.adler=c(a.adler,o,l,h):2===a.state.wrap&&(a.adler=p(a.adler,o,l,h)),a.next_in+=l,a.total_in+=l,l),t.lookahead+=r,t.lookahead+t.insert>=x)for(s=t.strstart-t.insert,t.ins_h=t.window[s],t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[s+x-1])&t.hash_mask,t.prev[s&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=s,s++,t.insert--,!(t.lookahead+t.insert<x)););}while(t.lookahead<z&&0!==t.strm.avail_in)}function Z(t,e){for(var r,i;;){if(t.lookahead<z){if(j(t),t.lookahead<z&&e===l)return A;if(0===t.lookahead)break}if(r=0,t.lookahead>=x&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==r&&t.strstart-r<=t.w_size-z&&(t.match_length=L(t,r)),t.match_length>=x)if(i=u._tr_tally(t,t.strstart-t.match_start,t.match_length-x),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=x){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart,0!=--t.match_length;);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=t.strstart<x-1?t.strstart:x-1,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}function W(t,e){for(var r,i,n;;){if(t.lookahead<z){if(j(t),t.lookahead<z&&e===l)return A;if(0===t.lookahead)break}if(r=0,t.lookahead>=x&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=x-1,0!==r&&t.prev_length<t.max_lazy_match&&t.strstart-r<=t.w_size-z&&(t.match_length=L(t,r),t.match_length<=5&&(1===t.strategy||t.match_length===x&&4096<t.strstart-t.match_start)&&(t.match_length=x-1)),t.prev_length>=x&&t.match_length<=t.prev_length){for(n=t.strstart+t.lookahead-x,i=u._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-x),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!=--t.prev_length;);if(t.match_available=0,t.match_length=x-1,t.strstart++,i&&(N(t,!1),0===t.strm.avail_out))return A}else if(t.match_available){if((i=u._tr_tally(t,0,t.window[t.strstart-1]))&&N(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return A}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=u._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<x-1?t.strstart:x-1,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}function M(t,e,r,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=i,this.func=n}function H(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=v,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new d.Buf16(2*w),this.dyn_dtree=new d.Buf16(2*(2*a+1)),this.bl_tree=new d.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new d.Buf16(k+1),this.heap=new d.Buf16(2*s+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new d.Buf16(2*s+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function G(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=n,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?C:E,t.adler=2===e.wrap?0:1,e.last_flush=l,u._tr_init(e),m):R(t,_)}function K(t){var e=G(t);return e===m&&function(t){t.window_size=2*t.w_size,D(t.head),t.max_lazy_match=h[t.level].max_lazy,t.good_match=h[t.level].good_length,t.nice_match=h[t.level].nice_length,t.max_chain_length=h[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=x-1,t.match_available=0,t.ins_h=0}(t.state),e}function Y(t,e,r,i,n,s){if(!t)return _;var a=1;if(e===g&&(e=6),i<0?(a=0,i=-i):15<i&&(a=2,i-=16),n<1||y<n||r!==v||i<8||15<i||e<0||9<e||s<0||b<s)return R(t,_);8===i&&(i=9);var o=new H;return(t.state=o).strm=t,o.wrap=a,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new d.Buf8(2*o.w_size),o.head=new d.Buf16(o.hash_size),o.prev=new d.Buf16(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new d.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=e,o.strategy=s,o.method=r,K(t)}h=[new M(0,0,0,0,function(t,e){var r=65535;for(r>t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(j(t),0===t.lookahead&&e===l)return A;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,N(t,!1),0===t.strm.avail_out))return A;if(t.strstart-t.block_start>=t.w_size-z&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):(t.strstart>t.block_start&&(N(t,!1),t.strm.avail_out),A)}),new M(4,4,8,4,Z),new M(4,5,16,8,Z),new M(4,6,32,32,Z),new M(4,4,16,16,W),new M(8,16,32,32,W),new M(8,16,128,128,W),new M(8,32,128,256,W),new M(32,128,258,1024,W),new M(32,258,258,4096,W)],r.deflateInit=function(t,e){return Y(t,e,v,15,8,0)},r.deflateInit2=Y,r.deflateReset=K,r.deflateResetKeep=G,r.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?_:(t.state.gzhead=e,m):_},r.deflate=function(t,e){var r,i,n,s;if(!t||!t.state||5<e||e<0)return t?R(t,_):_;if(i=t.state,!t.output||!t.input&&0!==t.avail_in||666===i.status&&e!==f)return R(t,0===t.avail_out?-5:_);if(i.strm=t,r=i.last_flush,i.last_flush=e,i.status===C)if(2===i.wrap)t.adler=0,U(i,31),U(i,139),U(i,8),i.gzhead?(U(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),U(i,255&i.gzhead.time),U(i,i.gzhead.time>>8&255),U(i,i.gzhead.time>>16&255),U(i,i.gzhead.time>>24&255),U(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),U(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(U(i,255&i.gzhead.extra.length),U(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=p(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(U(i,0),U(i,0),U(i,0),U(i,0),U(i,0),U(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),U(i,3),i.status=E);else{var a=v+(i.w_bits-8<<4)<<8;a|=(2<=i.strategy||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(a|=32),a+=31-a%31,i.status=E,P(i,a),0!==i.strstart&&(P(i,t.adler>>>16),P(i,65535&t.adler)),t.adler=1}if(69===i.status)if(i.gzhead.extra){for(n=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending!==i.pending_buf_size));)U(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,U(i,s)}while(0!==s);i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),0===s&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),F(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}s=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,U(i,s)}while(0!==s);i.gzhead.hcrc&&i.pending>n&&(t.adler=p(t.adler,i.pending_buf,i.pending-n,n)),0===s&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&F(t),i.pending+2<=i.pending_buf_size&&(U(i,255&t.adler),U(i,t.adler>>8&255),t.adler=0,i.status=E)):i.status=E),0!==i.pending){if(F(t),0===t.avail_out)return i.last_flush=-1,m}else if(0===t.avail_in&&T(e)<=T(r)&&e!==f)return R(t,-5);if(666===i.status&&0!==t.avail_in)return R(t,-5);if(0!==t.avail_in||0!==i.lookahead||e!==l&&666!==i.status){var o=2===i.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(j(t),0===t.lookahead)){if(e===l)return A;break}if(t.match_length=0,r=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}(i,e):3===i.strategy?function(t,e){for(var r,i,n,s,a=t.window;;){if(t.lookahead<=S){if(j(t),t.lookahead<=S&&e===l)return A;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=x&&0<t.strstart&&(i=a[n=t.strstart-1])===a[++n]&&i===a[++n]&&i===a[++n]){s=t.strstart+S;do{}while(i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&n<s);t.match_length=S-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=x?(r=u._tr_tally(t,1,t.match_length-x),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=u._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(N(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(N(t,!0),0===t.strm.avail_out?O:B):t.last_lit&&(N(t,!1),0===t.strm.avail_out)?A:I}(i,e):h[i.level].func(i,e);if(o!==O&&o!==B||(i.status=666),o===A||o===O)return 0===t.avail_out&&(i.last_flush=-1),m;if(o===I&&(1===e?u._tr_align(i):5!==e&&(u._tr_stored_block(i,0,0,!1),3===e&&(D(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),F(t),0===t.avail_out))return i.last_flush=-1,m}return e!==f?m:i.wrap<=0?1:(2===i.wrap?(U(i,255&t.adler),U(i,t.adler>>8&255),U(i,t.adler>>16&255),U(i,t.adler>>24&255),U(i,255&t.total_in),U(i,t.total_in>>8&255),U(i,t.total_in>>16&255),U(i,t.total_in>>24&255)):(P(i,t.adler>>>16),P(i,65535&t.adler)),F(t),0<i.wrap&&(i.wrap=-i.wrap),0!==i.pending?m:1)},r.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==C&&69!==e&&73!==e&&91!==e&&103!==e&&e!==E&&666!==e?R(t,_):(t.state=null,e===E?R(t,-3):m):_},r.deflateSetDictionary=function(t,e){var r,i,n,s,a,o,h,u,l=e.length;if(!t||!t.state)return _;if(2===(s=(r=t.state).wrap)||1===s&&r.status!==C||r.lookahead)return _;for(1===s&&(t.adler=c(t.adler,e,l,0)),r.wrap=0,l>=r.w_size&&(0===s&&(D(r.head),r.strstart=0,r.block_start=0,r.insert=0),u=new d.Buf8(r.w_size),d.arraySet(u,e,l-r.w_size,r.w_size,0),e=u,l=r.w_size),a=t.avail_in,o=t.next_in,h=t.input,t.avail_in=l,t.next_in=0,t.input=e,j(r);r.lookahead>=x;){for(i=r.strstart,n=r.lookahead-(x-1);r.ins_h=(r.ins_h<<r.hash_shift^r.window[i+x-1])&r.hash_mask,r.prev[i&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=i,i++,--n;);r.strstart=i,r.lookahead=x-1,j(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=x-1,r.match_available=0,t.next_in=o,t.input=h,t.avail_in=a,r.wrap=s,m},r.deflateInfo=\"pako deflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./messages\":51,\"./trees\":52}],47:[function(t,e,r){\"use strict\";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\"\",this.comment=\"\",this.hcrc=0,this.done=!1}},{}],48:[function(t,e,r){\"use strict\";e.exports=function(t,e){var r,i,n,s,a,o,h,u,l,f,d,c,p,m,_,g,b,v,y,w,k,x,S,z,C;r=t.state,i=t.next_in,z=t.input,n=i+(t.avail_in-5),s=t.next_out,C=t.output,a=s-(e-t.avail_out),o=s+(t.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,f=r.wnext,d=r.window,c=r.hold,p=r.bits,m=r.lencode,_=r.distcode,g=(1<<r.lenbits)-1,b=(1<<r.distbits)-1;t:do{p<15&&(c+=z[i++]<<p,p+=8,c+=z[i++]<<p,p+=8),v=m[c&g];e:for(;;){if(c>>>=y=v>>>24,p-=y,0===(y=v>>>16&255))C[s++]=65535&v;else{if(!(16&y)){if(0==(64&y)){v=m[(65535&v)+(c&(1<<y)-1)];continue e}if(32&y){r.mode=12;break t}t.msg=\"invalid literal/length code\",r.mode=30;break t}w=65535&v,(y&=15)&&(p<y&&(c+=z[i++]<<p,p+=8),w+=c&(1<<y)-1,c>>>=y,p-=y),p<15&&(c+=z[i++]<<p,p+=8,c+=z[i++]<<p,p+=8),v=_[c&b];r:for(;;){if(c>>>=y=v>>>24,p-=y,!(16&(y=v>>>16&255))){if(0==(64&y)){v=_[(65535&v)+(c&(1<<y)-1)];continue r}t.msg=\"invalid distance code\",r.mode=30;break t}if(k=65535&v,p<(y&=15)&&(c+=z[i++]<<p,(p+=8)<y&&(c+=z[i++]<<p,p+=8)),h<(k+=c&(1<<y)-1)){t.msg=\"invalid distance too far back\",r.mode=30;break t}if(c>>>=y,p-=y,(y=s-a)<k){if(l<(y=k-y)&&r.sane){t.msg=\"invalid distance too far back\",r.mode=30;break t}if(S=d,(x=0)===f){if(x+=u-y,y<w){for(w-=y;C[s++]=d[x++],--y;);x=s-k,S=C}}else if(f<y){if(x+=u+f-y,(y-=f)<w){for(w-=y;C[s++]=d[x++],--y;);if(x=0,f<w){for(w-=y=f;C[s++]=d[x++],--y;);x=s-k,S=C}}}else if(x+=f-y,y<w){for(w-=y;C[s++]=d[x++],--y;);x=s-k,S=C}for(;2<w;)C[s++]=S[x++],C[s++]=S[x++],C[s++]=S[x++],w-=3;w&&(C[s++]=S[x++],1<w&&(C[s++]=S[x++]))}else{for(x=s-k;C[s++]=C[x++],C[s++]=C[x++],C[s++]=C[x++],2<(w-=3););w&&(C[s++]=C[x++],1<w&&(C[s++]=C[x++]))}break}}break}}while(i<n&&s<o);i-=w=p>>3,c&=(1<<(p-=w<<3))-1,t.next_in=i,t.next_out=s,t.avail_in=i<n?n-i+5:5-(i-n),t.avail_out=s<o?o-s+257:257-(s-o),r.hold=c,r.bits=p}},{}],49:[function(t,e,r){\"use strict\";var I=t(\"../utils/common\"),O=t(\"./adler32\"),B=t(\"./crc32\"),R=t(\"./inffast\"),T=t(\"./inftrees\"),D=1,F=2,N=0,U=-2,P=1,i=852,n=592;function L(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function s(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new I.Buf16(320),this.work=new I.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function a(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\"\",e.wrap&&(t.adler=1&e.wrap),e.mode=P,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new I.Buf32(i),e.distcode=e.distdyn=new I.Buf32(n),e.sane=1,e.back=-1,N):U}function o(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,a(t)):U}function h(t,e){var r,i;return t&&t.state?(i=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||15<e)?U:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=r,i.wbits=e,o(t))):U}function u(t,e){var r,i;return t?(i=new s,(t.state=i).window=null,(r=h(t,e))!==N&&(t.state=null),r):U}var l,f,d=!0;function j(t){if(d){var e;for(l=new I.Buf32(512),f=new I.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(T(D,t.lens,0,288,l,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;T(F,t.lens,0,32,f,0,t.work,{bits:5}),d=!1}t.lencode=l,t.lenbits=9,t.distcode=f,t.distbits=5}function Z(t,e,r,i){var n,s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new I.Buf8(s.wsize)),i>=s.wsize?(I.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i<(n=s.wsize-s.wnext)&&(n=i),I.arraySet(s.window,e,r-i,n,s.wnext),(i-=n)?(I.arraySet(s.window,e,r-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0}r.inflateReset=o,r.inflateReset2=h,r.inflateResetKeep=a,r.inflateInit=function(t){return u(t,15)},r.inflateInit2=u,r.inflate=function(t,e){var r,i,n,s,a,o,h,u,l,f,d,c,p,m,_,g,b,v,y,w,k,x,S,z,C=0,E=new I.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return U;12===(r=t.state).mode&&(r.mode=13),a=t.next_out,n=t.output,h=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,u=r.hold,l=r.bits,f=o,d=h,x=N;t:for(;;)switch(r.mode){case P:if(0===r.wrap){r.mode=13;break}for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(2&r.wrap&&35615===u){E[r.check=0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0),l=u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){t.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&u)){t.msg=\"unknown compression method\",r.mode=30;break}if(l-=4,k=8+(15&(u>>>=4)),0===r.wbits)r.wbits=k;else if(k>r.wbits){t.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<<k,t.adler=r.check=1,r.mode=512&u?10:12,l=u=0;break;case 2:for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(r.flags=u,8!=(255&r.flags)){t.msg=\"unknown compression method\",r.mode=30;break}if(57344&r.flags){t.msg=\"unknown header flags set\",r.mode=30;break}r.head&&(r.head.text=u>>8&1),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=3;case 3:for(;l<32;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}r.head&&(r.head.time=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,E[2]=u>>>16&255,E[3]=u>>>24&255,r.check=B(r.check,E,4,0)),l=u=0,r.mode=4;case 4:for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}r.head&&(r.head.xflags=255&u,r.head.os=u>>8),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0,r.mode=5;case 5:if(1024&r.flags){for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}r.length=u,r.head&&(r.head.extra_len=u),512&r.flags&&(E[0]=255&u,E[1]=u>>>8&255,r.check=B(r.check,E,2,0)),l=u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(o<(c=r.length)&&(c=o),c&&(r.head&&(k=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),I.arraySet(r.head.extra,i,s,c,k)),512&r.flags&&(r.check=B(r.check,i,c,s)),o-=c,s+=c,r.length-=c),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===o)break t;for(c=0;k=i[s+c++],r.head&&k&&r.length<65536&&(r.head.name+=String.fromCharCode(k)),k&&c<o;);if(512&r.flags&&(r.check=B(r.check,i,c,s)),o-=c,s+=c,k)break t}else r.head&&(r.head.name=null);r.length=0,r.mode=8;case 8:if(4096&r.flags){if(0===o)break t;for(c=0;k=i[s+c++],r.head&&k&&r.length<65536&&(r.head.comment+=String.fromCharCode(k)),k&&c<o;);if(512&r.flags&&(r.check=B(r.check,i,c,s)),o-=c,s+=c,k)break t}else r.head&&(r.head.comment=null);r.mode=9;case 9:if(512&r.flags){for(;l<16;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(u!==(65535&r.check)){t.msg=\"header crc mismatch\",r.mode=30;break}l=u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=12;break;case 10:for(;l<32;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}t.adler=r.check=L(u),l=u=0,r.mode=11;case 11:if(0===r.havedict)return t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,r.hold=u,r.bits=l,2;t.adler=r.check=1,r.mode=12;case 12:if(5===e||6===e)break t;case 13:if(r.last){u>>>=7&l,l-=7&l,r.mode=27;break}for(;l<3;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}switch(r.last=1&u,l-=1,3&(u>>>=1)){case 0:r.mode=14;break;case 1:if(j(r),r.mode=20,6!==e)break;u>>>=2,l-=2;break t;case 2:r.mode=17;break;case 3:t.msg=\"invalid block type\",r.mode=30}u>>>=2,l-=2;break;case 14:for(u>>>=7&l,l-=7&l;l<32;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if((65535&u)!=(u>>>16^65535)){t.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&u,l=u=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(c=r.length){if(o<c&&(c=o),h<c&&(c=h),0===c)break t;I.arraySet(n,i,s,c,a),o-=c,s+=c,h-=c,a+=c,r.length-=c;break}r.mode=12;break;case 17:for(;l<14;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(r.nlen=257+(31&u),u>>>=5,l-=5,r.ndist=1+(31&u),u>>>=5,l-=5,r.ncode=4+(15&u),u>>>=4,l-=4,286<r.nlen||30<r.ndist){t.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have<r.ncode;){for(;l<3;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}r.lens[A[r.have++]]=7&u,u>>>=3,l-=3}for(;r.have<19;)r.lens[A[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,S={bits:r.lenbits},x=T(0,r.lens,0,19,r.lencode,0,r.work,S),r.lenbits=S.bits,x){t.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have<r.nlen+r.ndist;){for(;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(b<16)u>>>=_,l-=_,r.lens[r.have++]=b;else{if(16===b){for(z=_+2;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(u>>>=_,l-=_,0===r.have){t.msg=\"invalid bit length repeat\",r.mode=30;break}k=r.lens[r.have-1],c=3+(3&u),u>>>=2,l-=2}else if(17===b){for(z=_+3;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}l-=_,k=0,c=3+(7&(u>>>=_)),u>>>=3,l-=3}else{for(z=_+7;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}l-=_,k=0,c=11+(127&(u>>>=_)),u>>>=7,l-=7}if(r.have+c>r.nlen+r.ndist){t.msg=\"invalid bit length repeat\",r.mode=30;break}for(;c--;)r.lens[r.have++]=k}}if(30===r.mode)break;if(0===r.lens[256]){t.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,S={bits:r.lenbits},x=T(D,r.lens,0,r.nlen,r.lencode,0,r.work,S),r.lenbits=S.bits,x){t.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,S={bits:r.distbits},x=T(F,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,S),r.distbits=S.bits,x){t.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(6<=o&&258<=h){t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,r.hold=u,r.bits=l,R(t,d),a=t.next_out,n=t.output,h=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,u=r.hold,l=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;g=(C=r.lencode[u&(1<<r.lenbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(g&&0==(240&g)){for(v=_,y=g,w=b;g=(C=r.lencode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,r.length=b,0===g){r.mode=26;break}if(32&g){r.back=-1,r.mode=12;break}if(64&g){t.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&g,r.mode=22;case 22:if(r.extra){for(z=r.extra;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}r.length+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;g=(C=r.distcode[u&(1<<r.distbits)-1])>>>16&255,b=65535&C,!((_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(0==(240&g)){for(v=_,y=g,w=b;g=(C=r.distcode[w+((u&(1<<v+y)-1)>>v)])>>>16&255,b=65535&C,!(v+(_=C>>>24)<=l);){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}u>>>=v,l-=v,r.back+=v}if(u>>>=_,l-=_,r.back+=_,64&g){t.msg=\"invalid distance code\",r.mode=30;break}r.offset=b,r.extra=15&g,r.mode=24;case 24:if(r.extra){for(z=r.extra;l<z;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}r.offset+=u&(1<<r.extra)-1,u>>>=r.extra,l-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===h)break t;if(c=d-h,r.offset>c){if((c=r.offset-c)>r.whave&&r.sane){t.msg=\"invalid distance too far back\",r.mode=30;break}p=c>r.wnext?(c-=r.wnext,r.wsize-c):r.wnext-c,c>r.length&&(c=r.length),m=r.window}else m=n,p=a-r.offset,c=r.length;for(h<c&&(c=h),h-=c,r.length-=c;n[a++]=m[p++],--c;);0===r.length&&(r.mode=21);break;case 26:if(0===h)break t;n[a++]=r.length,h--,r.mode=21;break;case 27:if(r.wrap){for(;l<32;){if(0===o)break t;o--,u|=i[s++]<<l,l+=8}if(d-=h,t.total_out+=d,r.total+=d,d&&(t.adler=r.check=r.flags?B(r.check,n,d,a-d):O(r.check,n,d,a-d)),d=h,(r.flags?u:L(u))!==r.check){t.msg=\"incorrect data check\",r.mode=30;break}l=u=0}r.mode=28;case 28:if(r.wrap&&r.flags){for(;l<32;){if(0===o)break t;o--,u+=i[s++]<<l,l+=8}if(u!==(4294967295&r.total)){t.msg=\"incorrect length check\",r.mode=30;break}l=u=0}r.mode=29;case 29:x=1;break t;case 30:x=-3;break t;case 31:return-4;case 32:default:return U}return t.next_out=a,t.avail_out=h,t.next_in=s,t.avail_in=o,r.hold=u,r.bits=l,(r.wsize||d!==t.avail_out&&r.mode<30&&(r.mode<27||4!==e))&&Z(t,t.output,t.next_out,d-t.avail_out)?(r.mode=31,-4):(f-=t.avail_in,d-=t.avail_out,t.total_in+=f,t.total_out+=d,r.total+=d,r.wrap&&d&&(t.adler=r.check=r.flags?B(r.check,n,d,t.next_out-d):O(r.check,n,d,t.next_out-d)),t.data_type=r.bits+(r.last?64:0)+(12===r.mode?128:0)+(20===r.mode||15===r.mode?256:0),(0==f&&0===d||4===e)&&x===N&&(x=-5),x)},r.inflateEnd=function(t){if(!t||!t.state)return U;var e=t.state;return e.window&&(e.window=null),t.state=null,N},r.inflateGetHeader=function(t,e){var r;return t&&t.state?0==(2&(r=t.state).wrap)?U:((r.head=e).done=!1,N):U},r.inflateSetDictionary=function(t,e){var r,i=e.length;return t&&t.state?0!==(r=t.state).wrap&&11!==r.mode?U:11===r.mode&&O(1,e,i,0)!==r.check?-3:Z(t,e,i,i)?(r.mode=31,-4):(r.havedict=1,N):U},r.inflateInfo=\"pako inflate (from Nodeca project)\"},{\"../utils/common\":41,\"./adler32\":43,\"./crc32\":45,\"./inffast\":48,\"./inftrees\":50}],50:[function(t,e,r){\"use strict\";var D=t(\"../utils/common\"),F=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],N=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],U=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],P=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(t,e,r,i,n,s,a,o){var h,u,l,f,d,c,p,m,_,g=o.bits,b=0,v=0,y=0,w=0,k=0,x=0,S=0,z=0,C=0,E=0,A=null,I=0,O=new D.Buf16(16),B=new D.Buf16(16),R=null,T=0;for(b=0;b<=15;b++)O[b]=0;for(v=0;v<i;v++)O[e[r+v]]++;for(k=g,w=15;1<=w&&0===O[w];w--);if(w<k&&(k=w),0===w)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(y=1;y<w&&0===O[y];y++);for(k<y&&(k=y),b=z=1;b<=15;b++)if(z<<=1,(z-=O[b])<0)return-1;if(0<z&&(0===t||1!==w))return-1;for(B[1]=0,b=1;b<15;b++)B[b+1]=B[b]+O[b];for(v=0;v<i;v++)0!==e[r+v]&&(a[B[e[r+v]]++]=v);if(c=0===t?(A=R=a,19):1===t?(A=F,I-=257,R=N,T-=257,256):(A=U,R=P,-1),b=y,d=s,S=v=E=0,l=-1,f=(C=1<<(x=k))-1,1===t&&852<C||2===t&&592<C)return 1;for(;;){for(p=b-S,_=a[v]<c?(m=0,a[v]):a[v]>c?(m=R[T+a[v]],A[I+a[v]]):(m=96,0),h=1<<b-S,y=u=1<<x;n[d+(E>>S)+(u-=h)]=p<<24|m<<16|_|0,0!==u;);for(h=1<<b-1;E&h;)h>>=1;if(0!==h?(E&=h-1,E+=h):E=0,v++,0==--O[b]){if(b===w)break;b=e[r+a[v]]}if(k<b&&(E&f)!==l){for(0===S&&(S=k),d+=y,z=1<<(x=b-S);x+S<w&&!((z-=O[x+S])<=0);)x++,z<<=1;if(C+=1<<x,1===t&&852<C||2===t&&592<C)return 1;n[l=E&f]=k<<24|x<<16|d-s|0}}return 0!==E&&(n[d+E]=b-S<<24|64<<16|0),o.bits=k,0}},{\"../utils/common\":41}],51:[function(t,e,r){\"use strict\";e.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],52:[function(t,e,r){\"use strict\";var n=t(\"../utils/common\"),o=0,h=1;function i(t){for(var e=t.length;0<=--e;)t[e]=0}var s=0,a=29,u=256,l=u+1+a,f=30,d=19,_=2*l+1,g=15,c=16,p=7,m=256,b=16,v=17,y=18,w=[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],k=[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],x=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],S=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],z=new Array(2*(l+2));i(z);var C=new Array(2*f);i(C);var E=new Array(512);i(E);var A=new Array(256);i(A);var I=new Array(a);i(I);var O,B,R,T=new Array(f);function D(t,e,r,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function F(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function N(t){return t<256?E[t]:E[256+(t>>>7)]}function U(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function P(t,e,r){t.bi_valid>c-r?(t.bi_buf|=e<<t.bi_valid&65535,U(t,t.bi_buf),t.bi_buf=e>>c-t.bi_valid,t.bi_valid+=r-c):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=r)}function L(t,e,r){P(t,r[2*e],r[2*e+1])}function j(t,e){for(var r=0;r|=1&t,t>>>=1,r<<=1,0<--e;);return r>>>1}function Z(t,e,r){var i,n,s=new Array(g+1),a=0;for(i=1;i<=g;i++)s[i]=a=a+r[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=j(s[o]++,o))}}function W(t){var e;for(e=0;e<l;e++)t.dyn_ltree[2*e]=0;for(e=0;e<f;e++)t.dyn_dtree[2*e]=0;for(e=0;e<d;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*m]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function M(t){8<t.bi_valid?U(t,t.bi_buf):0<t.bi_valid&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function H(t,e,r,i){var n=2*e,s=2*r;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[r]}function G(t,e,r){for(var i=t.heap[r],n=r<<1;n<=t.heap_len&&(n<t.heap_len&&H(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!H(e,i,t.heap[n],t.depth));)t.heap[r]=t.heap[n],r=n,n<<=1;t.heap[r]=i}function K(t,e,r){var i,n,s,a,o=0;if(0!==t.last_lit)for(;i=t.pending_buf[t.d_buf+2*o]<<8|t.pending_buf[t.d_buf+2*o+1],n=t.pending_buf[t.l_buf+o],o++,0===i?L(t,n,e):(L(t,(s=A[n])+u+1,e),0!==(a=w[s])&&P(t,n-=I[s],a),L(t,s=N(--i),r),0!==(a=k[s])&&P(t,i-=T[s],a)),o<t.last_lit;);L(t,m,e)}function Y(t,e){var r,i,n,s=e.dyn_tree,a=e.stat_desc.static_tree,o=e.stat_desc.has_stree,h=e.stat_desc.elems,u=-1;for(t.heap_len=0,t.heap_max=_,r=0;r<h;r++)0!==s[2*r]?(t.heap[++t.heap_len]=u=r,t.depth[r]=0):s[2*r+1]=0;for(;t.heap_len<2;)s[2*(n=t.heap[++t.heap_len]=u<2?++u:0)]=1,t.depth[n]=0,t.opt_len--,o&&(t.static_len-=a[2*n+1]);for(e.max_code=u,r=t.heap_len>>1;1<=r;r--)G(t,s,r);for(n=h;r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],G(t,s,1),i=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=i,s[2*n]=s[2*r]+s[2*i],t.depth[n]=(t.depth[r]>=t.depth[i]?t.depth[r]:t.depth[i])+1,s[2*r+1]=s[2*i+1]=n,t.heap[1]=n++,G(t,s,1),2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,i,n,s,a,o,h=e.dyn_tree,u=e.max_code,l=e.stat_desc.static_tree,f=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,p=e.stat_desc.max_length,m=0;for(s=0;s<=g;s++)t.bl_count[s]=0;for(h[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<_;r++)p<(s=h[2*h[2*(i=t.heap[r])+1]+1]+1)&&(s=p,m++),h[2*i+1]=s,u<i||(t.bl_count[s]++,a=0,c<=i&&(a=d[i-c]),o=h[2*i],t.opt_len+=o*(s+a),f&&(t.static_len+=o*(l[2*i+1]+a)));if(0!==m){do{for(s=p-1;0===t.bl_count[s];)s--;t.bl_count[s]--,t.bl_count[s+1]+=2,t.bl_count[p]--,m-=2}while(0<m);for(s=p;0!==s;s--)for(i=t.bl_count[s];0!==i;)u<(n=t.heap[--r])||(h[2*n+1]!==s&&(t.opt_len+=(s-h[2*n+1])*h[2*n],h[2*n+1]=s),i--)}}(t,e),Z(s,u,t.bl_count)}function X(t,e,r){var i,n,s=-1,a=e[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),e[2*(r+1)+1]=65535,i=0;i<=r;i++)n=a,a=e[2*(i+1)+1],++o<h&&n===a||(o<u?t.bl_tree[2*n]+=o:0!==n?(n!==s&&t.bl_tree[2*n]++,t.bl_tree[2*b]++):o<=10?t.bl_tree[2*v]++:t.bl_tree[2*y]++,s=n,u=(o=0)===a?(h=138,3):n===a?(h=6,3):(h=7,4))}function V(t,e,r){var i,n,s=-1,a=e[1],o=0,h=7,u=4;for(0===a&&(h=138,u=3),i=0;i<=r;i++)if(n=a,a=e[2*(i+1)+1],!(++o<h&&n===a)){if(o<u)for(;L(t,n,t.bl_tree),0!=--o;);else 0!==n?(n!==s&&(L(t,n,t.bl_tree),o--),L(t,b,t.bl_tree),P(t,o-3,2)):o<=10?(L(t,v,t.bl_tree),P(t,o-3,3)):(L(t,y,t.bl_tree),P(t,o-11,7));s=n,u=(o=0)===a?(h=138,3):n===a?(h=6,3):(h=7,4)}}i(T);var q=!1;function J(t,e,r,i){P(t,(s<<1)+(i?1:0),3),function(t,e,r,i){M(t),i&&(U(t,r),U(t,~r)),n.arraySet(t.pending_buf,t.window,e,r,t.pending),t.pending+=r}(t,e,r,!0)}r._tr_init=function(t){q||(function(){var t,e,r,i,n,s=new Array(g+1);for(i=r=0;i<a-1;i++)for(I[i]=r,t=0;t<1<<w[i];t++)A[r++]=i;for(A[r-1]=i,i=n=0;i<16;i++)for(T[i]=n,t=0;t<1<<k[i];t++)E[n++]=i;for(n>>=7;i<f;i++)for(T[i]=n<<7,t=0;t<1<<k[i]-7;t++)E[256+n++]=i;for(e=0;e<=g;e++)s[e]=0;for(t=0;t<=143;)z[2*t+1]=8,t++,s[8]++;for(;t<=255;)z[2*t+1]=9,t++,s[9]++;for(;t<=279;)z[2*t+1]=7,t++,s[7]++;for(;t<=287;)z[2*t+1]=8,t++,s[8]++;for(Z(z,l+1,s),t=0;t<f;t++)C[2*t+1]=5,C[2*t]=j(t,5);O=new D(z,w,u+1,l,g),B=new D(C,k,0,f,g),R=new D(new Array(0),x,0,d,p)}(),q=!0),t.l_desc=new F(t.dyn_ltree,O),t.d_desc=new F(t.dyn_dtree,B),t.bl_desc=new F(t.bl_tree,R),t.bi_buf=0,t.bi_valid=0,W(t)},r._tr_stored_block=J,r._tr_flush_block=function(t,e,r,i){var n,s,a=0;0<t.level?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return o;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return h;for(e=32;e<u;e++)if(0!==t.dyn_ltree[2*e])return h;return o}(t)),Y(t,t.l_desc),Y(t,t.d_desc),a=function(t){var e;for(X(t,t.dyn_ltree,t.l_desc.max_code),X(t,t.dyn_dtree,t.d_desc.max_code),Y(t,t.bl_desc),e=d-1;3<=e&&0===t.bl_tree[2*S[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),n=t.opt_len+3+7>>>3,(s=t.static_len+3+7>>>3)<=n&&(n=s)):n=s=r+5,r+4<=n&&-1!==e?J(t,e,r,i):4===t.strategy||s===n?(P(t,2+(i?1:0),3),K(t,z,C)):(P(t,4+(i?1:0),3),function(t,e,r,i){var n;for(P(t,e-257,5),P(t,r-1,5),P(t,i-4,4),n=0;n<i;n++)P(t,t.bl_tree[2*S[n]+1],3);V(t,t.dyn_ltree,e-1),V(t,t.dyn_dtree,r-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,a+1),K(t,t.dyn_ltree,t.dyn_dtree)),W(t),i&&M(t)},r._tr_tally=function(t,e,r){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(A[r]+u+1)]++,t.dyn_dtree[2*N(e)]++),t.last_lit===t.lit_bufsize-1},r._tr_align=function(t){P(t,2,3),L(t,m,z),function(t){16===t.bi_valid?(U(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):8<=t.bi_valid&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},{\"../utils/common\":41}],53:[function(t,e,r){\"use strict\";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(t,e,r){\"use strict\";e.exports=\"function\"==typeof setImmediate?setImmediate:function(){var t=[].slice.apply(arguments);t.splice(1,0,0),setTimeout.apply(null,t)}},{}]},{},[10])(10)});","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst initDebug = require(\"debug\");\nconst mm = require(\"music-metadata/lib/core\");\nconst toBuffer = require(\"typedarray-to-buffer\");\nconst Browser2NodeStream_1 = require(\"./fetch/Browser2NodeStream\");\nconst debug = initDebug('music-metadata-browser');\n/**\n * Parse audio Stream\n * @param stream\n * @param {string} contentType MIME-Type\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\nexports.parseNodeStream = mm.parseStream;\n/**\n * Parse Web API ReadableStream: https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream\n * @param {ReadableStream} stream ReadableStream\n * @param {string} contentType MIME-Type\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\nfunction parseReadableStream(stream, contentType, options) {\n const ns = new Browser2NodeStream_1.Browser2NodeStream(stream);\n return exports.parseNodeStream(ns, contentType, options).then(res => {\n debug(`Completed parsing from stream 1bytesRead=${ns.bytesRead} / fileSize=${options && options.fileSize ? options.fileSize : '?'}`);\n return res;\n });\n}\nexports.parseReadableStream = parseReadableStream;\n/**\n * Parse audio from Node Buffer\n * @param {Stream.Readable} stream Audio input stream\n * @param {string} mimeType <string> Content specification MIME-type, e.g.: 'audio/mpeg'\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n * Ref: https://github.com/Borewit/strtok3/blob/e6938c81ff685074d5eb3064a11c0b03ca934c1d/src/index.ts#L15\n */\nexports.parseBuffer = mm.parseBuffer;\n/**\n * Parse Web API File\n * @param {Blob} blob\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\nfunction parseBlob(blob, options) {\n return convertBlobToBuffer(blob).then(buf => {\n return mm.parseBuffer(buf, blob.type, options);\n });\n}\nexports.parseBlob = parseBlob;\n/**\n * Parse fetched file, using the Web Fetch API\n * @param {string} audioTrackUrl URL to download the audio track from\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\nfunction fetchFromUrl(audioTrackUrl, options) {\n return fetch(audioTrackUrl).then(response => {\n const contentType = response.headers.get('Content-Type');\n const headers = [];\n response.headers.forEach(header => {\n headers.push(header);\n });\n if (response.ok) {\n if (response.body) {\n return this.parseReadableStream(response.body, contentType, options).then(res => {\n response.body.cancel();\n return res;\n });\n }\n else {\n // Fall back on Blob\n return response.blob().then(blob => {\n return this.parseBlob(blob, options);\n });\n }\n }\n else {\n throw new Error(`HTTP error status=${response.status}: ${response.statusText}`);\n }\n });\n}\nexports.fetchFromUrl = fetchFromUrl;\n/**\n * Parse audio from ITokenizer source\n * @param {strtok3.ITokenizer} Audio source implementing the tokenizer interface\n * @param {string} mimeType <string> Content specification MIME-type, e.g.: 'audio/mpeg'\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\nexports.parseFromTokenizer = mm.parseFromTokenizer;\n/**\n * Convert Web API File to Node Buffer\n * @param {Blob} blob Web API Blob\n * @returns {Promise<Buffer>}\n */\nfunction convertBlobToBuffer(blob) {\n return new Promise((resolve, reject) => {\n const fileReader = new FileReader();\n fileReader.onloadend = event => {\n let data = event.target.result;\n if (data instanceof ArrayBuffer) {\n data = toBuffer(new Uint8Array(event.target.result));\n }\n resolve(data);\n };\n fileReader.onerror = error => {\n reject(new Error(error.type));\n };\n fileReader.onabort = error => {\n reject(new Error(error.type));\n };\n fileReader.readAsArrayBuffer(blob);\n });\n}\n/**\n * Create a dictionary ordered by their tag id (key)\n * @param {ITag[]} nativeTags list of tags\n * @returns {INativeTagDict} Tags indexed by id\n */\nexports.orderTags = mm.orderTags;\n/**\n * Convert rating to 1-5 star rating\n * @param {number} rating Normalized rating [0..1] (common.rating[n].rating)\n * @returns {number} Number of stars: 1, 2, 3, 4 or 5 stars\n */\nexports.ratingToStars = mm.ratingToStars;\n","import JSZip from \"jszip\";\nimport * as musicMetadataBrowser from \"music-metadata-browser\";\nimport WebampLazy from \"./webampLazy\";\n\nexport default class Webamp extends WebampLazy {\n constructor(options) {\n super({\n ...options,\n requireJSZip: () => JSZip,\n requireMusicMetadata: () => musicMetadataBrowser,\n });\n }\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var script = doc.createElement(\"script\");\n script.onreadystatechange = function () {\n runIfPresent(handle);\n script.onreadystatechange = null;\n html.removeChild(script);\n script = null;\n };\n html.appendChild(script);\n };\n }\n\n function installSetTimeoutImplementation() {\n registerImmediate = function(handle) {\n setTimeout(runIfPresent, 0, handle);\n };\n }\n\n // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.\n var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);\n attachTo = attachTo && attachTo.setTimeout ? attachTo : global;\n\n // Don't get fooled by e.g. browserify environments.\n if ({}.toString.call(global.process) === \"[object process]\") {\n // For Node.js before 0.9\n installNextTickImplementation();\n\n } else if (canUsePostMessage()) {\n // For non-IE10 modern browsers\n installPostMessageImplementation();\n\n } else if (global.MessageChannel) {\n // For web workers, where supported\n installMessageChannelImplementation();\n\n } else if (doc && \"onreadystatechange\" in doc.createElement(\"script\")) {\n // For IE 68\n installReadyStateChangeImplementation();\n\n } else {\n // For older browsers\n installSetTimeoutImplementation();\n }\n\n attachTo.setImmediate = setImmediate;\n attachTo.clearImmediate = clearImmediate;\n}(typeof self === \"undefined\" ? typeof global === \"undefined\" ? this : global : self));\n","\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\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* Active `debug` instances.\n\t*/\n\tcreateDebug.instances = [];\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 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\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 match;\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.enabled = createDebug.enabled(namespace);\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = selectColor(namespace);\n\t\tdebug.destroy = destroy;\n\t\tdebug.extend = extend;\n\t\t// Debug.formatArgs = formatArgs;\n\t\t// debug.rawLog = rawLog;\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\tcreateDebug.instances.push(debug);\n\n\t\treturn debug;\n\t}\n\n\tfunction destroy() {\n\t\tconst index = createDebug.instances.indexOf(this);\n\t\tif (index !== -1) {\n\t\t\tcreateDebug.instances.splice(index, 1);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\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\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.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < createDebug.instances.length; i++) {\n\t\t\tconst instance = createDebug.instances[i];\n\t\t\tinstance.enabled = createDebug.enabled(instance.namespace);\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\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","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst strtok3 = require(\"strtok3/lib/core\");\nconst ParserFactory_1 = require(\"./ParserFactory\");\n/**\n * Parse audio from Node Stream.Readable\n * @param {Stream.Readable} Stream to read the audio track from\n * @param {string} mimeType Content specification MIME-type, e.g.: 'audio/mpeg'\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\nfunction parseStream(stream, mimeType, options = {}) {\n return parseFromTokenizer(strtok3.fromStream(stream), mimeType, options);\n}\nexports.parseStream = parseStream;\n/**\n * Parse audio from Node Buffer\n * @param {Stream.Readable} stream Audio input stream\n * @param {string} mimeType <string> Content specification MIME-type, e.g.: 'audio/mpeg'\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n * Ref: https://github.com/Borewit/strtok3/blob/e6938c81ff685074d5eb3064a11c0b03ca934c1d/src/index.ts#L15\n */\nfunction parseBuffer(buf, mimeType, options = {}) {\n const tokenizer = strtok3.fromBuffer(buf);\n return parseFromTokenizer(tokenizer, mimeType, options);\n}\nexports.parseBuffer = parseBuffer;\n/**\n * Parse audio from ITokenizer source\n * @param {strtok3.ITokenizer} Audio source implementing the tokenizer interface\n * @param {string} mimeType <string> Content specification MIME-type, e.g.: 'audio/mpeg'\n * @param {IOptions} options Parsing options\n * @returns {Promise<IAudioMetadata>}\n */\nfunction parseFromTokenizer(tokenizer, mimeType, options = {}) {\n if (!tokenizer.fileSize && options.fileSize) {\n tokenizer.fileSize = options.fileSize;\n }\n return ParserFactory_1.ParserFactory.parse(tokenizer, mimeType, options);\n}\nexports.parseFromTokenizer = parseFromTokenizer;\n/**\n * Create a dictionary ordered by their tag id (key)\n * @param nativeTags list of tags\n * @returns tags indexed by id\n */\nfunction orderTags(nativeTags) {\n const tags = {};\n for (const tag of nativeTags) {\n (tags[tag.id] = (tags[tag.id] || [])).push(tag.value);\n }\n return tags;\n}\nexports.orderTags = orderTags;\n/**\n * Convert rating to 1-5 star rating\n * @param {number} rating Normalized rating [0..1] (common.rating[n].rating)\n * @returns {number} Number of stars: 1, 2, 3, 4 or 5 stars\n */\nfunction ratingToStars(rating) {\n return rating === undefined ? 0 : 1 + Math.round(rating * 4);\n}\nexports.ratingToStars = ratingToStars;\n//# sourceMappingURL=core.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst AbstractTokenizer_1 = require(\"./AbstractTokenizer\");\nconst type_1 = require(\"./type\");\nconst then_read_stream_1 = require(\"then-read-stream\");\nconst _debug = require(\"debug\");\nconst debug = _debug('strtok3:ReadStreamTokenizer');\nclass ReadStreamTokenizer extends AbstractTokenizer_1.AbstractTokenizer {\n constructor(stream, fileSize) {\n super();\n this.streamReader = new then_read_stream_1.StreamReader(stream);\n this.fileSize = fileSize;\n }\n /**\n * Read buffer from stream\n * @param buffer\n * @param offset is the offset in the buffer to start writing at; if not provided, start at 0\n * @param length is an integer specifying the number of bytes to read\n * @returns Promise number of bytes read\n */\n readBuffer(buffer, offset = 0, length = buffer.length, position) {\n return __awaiter(this, void 0, void 0, function* () {\n // const _offset = position ? position : this.position;\n // debug(`readBuffer ${_offset}...${_offset + length - 1}`);\n if (length === 0) {\n return 0;\n }\n if (position) {\n const skipBytes = position - this.position;\n if (skipBytes > 0) {\n yield this.ignore(position - this.position);\n return this.readBuffer(buffer, offset, length);\n }\n else if (skipBytes < 0) {\n throw new Error('Cannot read from a negative offset in a stream');\n }\n }\n let bytesRead;\n try {\n bytesRead = yield this.streamReader.read(buffer, offset, length);\n this.position += bytesRead;\n }\n catch (err) {\n if (err.message === then_read_stream_1.endOfStream) // Convert EndOfStream into EndOfFile\n throw new Error(type_1.endOfFile);\n else\n throw err;\n }\n if (bytesRead < length) {\n throw new Error(type_1.endOfFile);\n }\n return bytesRead;\n });\n }\n /**\n * Peek (read ahead) buffer from tokenizer\n * @param buffer\n * @param offset is the offset in the buffer to start writing at; if not provided, start at 0\n * @param length is an integer specifying the number of bytes to read\n * @param position is an integer specifying where to begin reading from in the file. If position is null, data will be read from the current file position.\n * @param maybeless If set, will not throw an EOF error if the less then the requested length could be read\n * @returns {Promise<number>}\n */\n peekBuffer(buffer, offset = 0, length = buffer.length, position, maybeless) {\n return __awaiter(this, void 0, void 0, function* () {\n // const _offset = position ? position : this.position;\n // debug(`peek ${_offset}...${_offset + length - 1}`);\n let bytesRead;\n if (position) {\n const skipBytes = position - this.position;\n if (skipBytes > 0) {\n const skipBuffer = Buffer.alloc(length + skipBytes);\n bytesRead = yield this.peekBuffer(skipBuffer, 0, skipBytes + length, undefined, maybeless);\n skipBuffer.copy(buffer, offset, skipBytes);\n return bytesRead - skipBytes;\n }\n else if (skipBytes < 0) {\n throw new Error('Cannot peek from a negative offset in a stream');\n }\n }\n try {\n bytesRead = yield this.streamReader.peek(buffer, offset, length);\n }\n catch (err) {\n if (err.message === then_read_stream_1.endOfStream) // Convert EndOfStream into EndOfFile\n throw new Error(type_1.endOfFile);\n else\n throw err;\n }\n if (!maybeless && bytesRead < length) {\n throw new Error(type_1.endOfFile);\n }\n return bytesRead;\n });\n }\n ignore(length) {\n return __awaiter(this, void 0, void 0, function* () {\n debug(`ignore ${this.position}...${this.position + length - 1}`);\n // debug(`Ignore ${length} bytes in a stream`);\n const buf = Buffer.alloc(length);\n return this.readBuffer(buf); // Stream cannot skip data\n });\n }\n}\nexports.ReadStreamTokenizer = ReadStreamTokenizer;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst type_1 = require(\"./type\");\nclass AbstractTokenizer {\n constructor() {\n this.position = 0;\n this.numBuffer = Buffer.alloc(4);\n }\n readToken(token, position = null, maybeless) {\n return __awaiter(this, void 0, void 0, function* () {\n const buffer = Buffer.alloc(token.len);\n const len = yield this.readBuffer(buffer, 0, token.len, position);\n if (!maybeless && len < token.len)\n throw new Error(type_1.endOfFile);\n return token.get(buffer, 0);\n });\n }\n peekToken(token, position = this.position, maybeless) {\n return __awaiter(this, void 0, void 0, function* () {\n const buffer = Buffer.alloc(token.len);\n const len = yield this.peekBuffer(buffer, 0, token.len, position);\n if (!maybeless && len < token.len)\n throw new Error(type_1.endOfFile);\n return token.get(buffer, 0);\n });\n }\n readNumber(token) {\n return __awaiter(this, void 0, void 0, function* () {\n const len = yield this.readBuffer(this.numBuffer, 0, token.len, null);\n if (len < token.len)\n throw new Error(type_1.endOfFile);\n return token.get(this.numBuffer, 0);\n });\n }\n peekNumber(token) {\n return __awaiter(this, void 0, void 0, function* () {\n const len = yield this.peekBuffer(this.numBuffer, 0, token.len);\n if (len < token.len)\n throw new Error(type_1.endOfFile);\n return token.get(this.numBuffer, 0);\n });\n }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n // empty\n });\n }\n}\nexports.AbstractTokenizer = AbstractTokenizer;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst assert = require(\"assert\");\nclass Deferred {\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.reject = reject;\n this.resolve = resolve;\n });\n }\n}\n/**\n * Error message\n */\nexports.endOfStream = 'End-Of-Stream';\nclass StreamReader {\n constructor(s) {\n this.s = s;\n this.endOfStream = false;\n /**\n * Store peeked data\n * @type {Array}\n */\n this.peekQueue = [];\n if (!s.read || !s.once) {\n throw new Error('Expected an instance of stream.Readable');\n }\n this.s.once('end', () => this.reject(new Error(exports.endOfStream)));\n this.s.once('error', err => this.reject(err));\n this.s.once('close', () => this.reject(new Error('Stream closed')));\n }\n /**\n * Read ahead (peek) from stream. Subsequent read or peeks will return the same data\n * @param buffer Buffer to store data read from stream in\n * @param offset Offset buffer\n * @param length Number of bytes to read\n * @param position Source offset\n * @returns {any}\n */\n peek(buffer, offset, length) {\n return __awaiter(this, void 0, void 0, function* () {\n const bytesRead = yield this.read(buffer, offset, length);\n this.peekQueue.push(buffer.slice(offset, offset + bytesRead)); // Put read data back to peek buffer\n return bytesRead;\n });\n }\n /**\n * Read chunk from stream\n * @param buffer Target buffer to store data read from stream in\n * @param offset Offset of target buffer\n * @param length Number of bytes to read\n * @returns {any}\n */\n read(buffer, offset, length) {\n return __awaiter(this, void 0, void 0, function* () {\n if (length === 0) {\n return 0;\n }\n if (this.peekQueue.length === 0 && this.endOfStream) {\n throw new Error(exports.endOfStream);\n }\n let remaining = length;\n let bytesRead = 0;\n // consume peeked data first\n while (this.peekQueue.length > 0 && remaining > 0) {\n const peekData = this.peekQueue.pop(); // Front of queue\n const lenCopy = Math.min(peekData.length, remaining);\n peekData.copy(buffer, offset + bytesRead, 0, lenCopy);\n bytesRead += lenCopy;\n remaining -= lenCopy;\n if (lenCopy < peekData.length) {\n // remainder back to queue\n this.peekQueue.push(peekData.slice(lenCopy));\n }\n }\n // continue reading from stream if required\n if (remaining > 0 && !this.endOfStream) {\n bytesRead += yield this._read(buffer, offset + bytesRead, remaining);\n }\n return bytesRead;\n });\n }\n /**\n * Read chunk from stream\n * @param buffer Buffer to store data read from stream in\n * @param offset Offset buffer\n * @param length Number of bytes to read\n * @returns {any}\n */\n _read(buffer, offset, length) {\n return __awaiter(this, void 0, void 0, function* () {\n assert.ok(!this.request, 'Concurrent read operation?');\n const readBuffer = this.s.read(length);\n if (readBuffer) {\n readBuffer.copy(buffer, offset);\n return readBuffer.length;\n }\n else {\n this.request = {\n buffer,\n offset,\n length,\n deferred: new Deferred()\n };\n this.s.once('readable', () => {\n this.tryRead();\n });\n return this.request.deferred.promise.then(n => {\n this.request = null;\n return n;\n }).catch(err => {\n this.request = null;\n throw err;\n });\n }\n });\n }\n tryRead() {\n const readBuffer = this.s.read(this.request.length);\n if (readBuffer) {\n readBuffer.copy(this.request.buffer, this.request.offset);\n this.request.deferred.resolve(readBuffer.length);\n }\n else {\n this.s.once('readable', () => {\n this.tryRead();\n });\n }\n }\n reject(err) {\n this.endOfStream = true;\n if (this.request) {\n this.request.deferred.reject(err);\n this.request = null;\n }\n }\n}\nexports.StreamReader = StreamReader;\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\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst type_1 = require(\"./type\");\nclass BufferTokenizer {\n constructor(buffer) {\n this.buffer = buffer;\n this.position = 0;\n this.fileSize = buffer.length;\n }\n /**\n * Read buffer from tokenizer\n * @param buffer\n * @param offset is the offset in the buffer to start writing at; if not provided, start at 0\n * @param length is an integer specifying the number of bytes to read\n * @param position is an integer specifying where to begin reading from in the file. If position is null, data will be read from the current file position.\n * @returns {Promise<TResult|number>}\n */\n readBuffer(buffer, offset, length, position) {\n return __awaiter(this, void 0, void 0, function* () {\n this.position = position || this.position;\n return this.peekBuffer(buffer, offset, length, this.position).then(bytesRead => {\n this.position += bytesRead;\n return bytesRead;\n });\n });\n }\n /**\n * Peek (read ahead) buffer from tokenizer\n * @param buffer\n * @param offset is the offset in the buffer to start writing at; if not provided, start at 0\n * @param length is an integer specifying the number of bytes to read\n * @param position is an integer specifying where to begin reading from in the file. If position is null, data will be read from the current file position.\n * @param maybeLess If true, will return the bytes available if available bytes is less then length.\n * @returns {Promise<TResult|number>}\n */\n peekBuffer(buffer, offset, length, position, maybeLess = false) {\n return __awaiter(this, void 0, void 0, function* () {\n position = position || this.position;\n if (!length) {\n length = buffer.length;\n }\n const bytes2read = Math.min(this.buffer.length - position, length);\n if (!maybeLess && bytes2read < length) {\n throw new Error(type_1.endOfFile);\n }\n else {\n this.buffer.copy(buffer, offset, position, position + bytes2read);\n return bytes2read;\n }\n });\n }\n readToken(token, position) {\n return __awaiter(this, void 0, void 0, function* () {\n this.position = position || this.position;\n try {\n const tv = this.peekToken(token, this.position);\n this.position += token.len;\n return tv;\n }\n catch (err) {\n this.position += this.buffer.length - position;\n throw err;\n }\n });\n }\n peekToken(token, position = this.position) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.buffer.length - position < token.len) {\n throw new Error(type_1.endOfFile);\n }\n return token.get(this.buffer, position);\n });\n }\n readNumber(token) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.readToken(token);\n });\n }\n peekNumber(token) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.peekToken(token);\n });\n }\n /**\n * @return actual number of bytes ignored\n */\n ignore(length) {\n return __awaiter(this, void 0, void 0, function* () {\n const bytesIgnored = Math.min(this.buffer.length - this.position, length);\n this.position += bytesIgnored;\n return bytesIgnored;\n });\n }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n // empty\n });\n }\n}\nexports.BufferTokenizer = BufferTokenizer;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fileType = require(\"file-type\");\nconst MimeType = require(\"media-typer\");\nconst _debug = require(\"debug\");\nconst MetadataCollector_1 = require(\"./common/MetadataCollector\");\nconst AiffParser_1 = require(\"./aiff/AiffParser\");\nconst APEv2Parser_1 = require(\"./apev2/APEv2Parser\");\nconst AsfParser_1 = require(\"./asf/AsfParser\");\nconst FlacParser_1 = require(\"./flac/FlacParser\");\nconst MP4Parser_1 = require(\"./mp4/MP4Parser\");\nconst MpegParser_1 = require(\"./mpeg/MpegParser\");\nconst musepack_1 = require(\"./musepack\");\nconst OggParser_1 = require(\"./ogg/OggParser\");\nconst WaveParser_1 = require(\"./riff/WaveParser\");\nconst WavPackParser_1 = require(\"./wavpack/WavPackParser\");\nconst DsfParser_1 = require(\"./dsf/DsfParser\");\nconst DsdiffParser_1 = require(\"./dsdiff/DsdiffParser\");\nconst debug = _debug(\"music-metadata:parser:factory\");\nclass ParserFactory {\n constructor() {\n // ToDo: expose warnings to API\n this.warning = [];\n }\n /**\n * Parse metadata from tokenizer\n * @param {ITokenizer} tokenizer\n * @param {string} contentType\n * @param {IOptions} opts\n * @returns {Promise<INativeAudioMetadata>}\n */\n static parse(tokenizer, contentType, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n // Resolve parser based on MIME-type or file extension\n let parserId = ParserFactory.getParserIdForMimeType(contentType) || ParserFactory.getParserIdForExtension(contentType);\n if (!parserId) {\n // No MIME-type mapping found\n debug(\"No parser found for MIME-type / extension: \" + contentType);\n const buf = Buffer.alloc(4100);\n yield tokenizer.peekBuffer(buf, 0, buf.byteLength, tokenizer.position, true);\n const guessedType = fileType(buf);\n if (!guessedType)\n throw new Error(\"Failed to guess MIME-type\");\n debug(`Guessed file type is mime=${guessedType.mime}, extension=${guessedType.ext}`);\n parserId = ParserFactory.getParserIdForMimeType(guessedType.mime);\n if (!parserId)\n throw new Error(\"Guessed MIME-type not supported: \" + guessedType.mime);\n return this._parse(tokenizer, parserId, opts);\n }\n // Parser found, execute parser\n return this._parse(tokenizer, parserId, opts);\n });\n }\n /**\n * @param filePath Path, filename or extension to audio file\n * @return Parser sub-module name\n */\n static getParserIdForExtension(filePath) {\n if (!filePath)\n return;\n const extension = this.getExtension(filePath).toLocaleLowerCase() || filePath;\n switch (extension) {\n case \".mp2\":\n case \".mp3\":\n case \".m2a\":\n case '.aac': // Assume it is ADTS-container\n return 'mpeg';\n case \".ape\":\n return 'apev2';\n case \".mp4\":\n case \".m4a\":\n case \".m4b\":\n case \".m4pa\":\n case \".m4v\":\n case \".m4r\":\n case \".3gp\":\n return 'mp4';\n case \".wma\":\n case \".wmv\":\n case \".asf\":\n return 'asf';\n case \".flac\":\n return 'flac';\n case \".ogg\":\n case \".ogv\":\n case \".oga\":\n case \".ogm\":\n case \".ogx\":\n case \".opus\": // recommended filename extension for Ogg Opus\n case \".spx\": // recommended filename extension for Ogg Speex\n return 'ogg';\n case \".aif\":\n case \".aiff\":\n case \".aifc\":\n return 'aiff';\n case \".wav\":\n return 'riff';\n case \".wv\":\n case \".wvp\":\n return 'wavpack';\n case \".mpc\":\n return 'musepack';\n case '.dsf':\n return 'dsf';\n case '.dff':\n return 'dsdiff';\n }\n }\n static loadParser(moduleName, options) {\n return __awaiter(this, void 0, void 0, function* () {\n switch (moduleName) {\n case 'aiff': return new AiffParser_1.AIFFParser();\n case 'apev2': return new APEv2Parser_1.APEv2Parser();\n case 'asf': return new AsfParser_1.AsfParser();\n case 'dsf': return new DsfParser_1.DsfParser();\n case 'dsdiff': return new DsdiffParser_1.DsdiffParser();\n case 'flac': return new FlacParser_1.FlacParser();\n case 'mp4': return new MP4Parser_1.MP4Parser();\n case 'mpeg': return new MpegParser_1.MpegParser();\n case 'musepack': return new musepack_1.default();\n case 'ogg': return new OggParser_1.OggParser();\n case 'riff': return new WaveParser_1.WaveParser();\n case 'wavpack': return new WavPackParser_1.WavPackParser();\n default:\n throw new Error(`Unknown parser type: ${moduleName}`);\n }\n });\n }\n static _parse(tokenizer, parserId, opts = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n // Parser found, execute parser\n const parser = yield ParserFactory.loadParser(parserId, opts);\n const metadata = new MetadataCollector_1.MetadataCollector(opts);\n yield parser.init(metadata, tokenizer, opts).parse();\n return metadata.toCommonMetadata();\n });\n }\n static getExtension(fname) {\n const i = fname.lastIndexOf('.');\n return i === -1 ? '' : fname.slice(i);\n }\n /**\n * @param {string} mimeType MIME-Type, extension, path or filename\n * @returns {string} Parser sub-module name\n */\n static getParserIdForMimeType(mimeType) {\n let mime;\n try {\n mime = MimeType.parse(mimeType);\n }\n catch (err) {\n debug(`Invalid MIME-type: ${mimeType}`);\n return;\n }\n const subType = mime.subtype.indexOf('x-') === 0 ? mime.subtype.substring(2) : mime.subtype;\n switch (mime.type) {\n case 'audio':\n switch (subType) {\n case 'mp3': // Incorrect MIME-type, Chrome, in Web API File object\n case 'mpeg':\n return 'mpeg'; // ToDo: handle ID1 header as well\n case 'flac':\n return 'flac';\n case 'ape':\n case 'monkeys-audio':\n return 'apev2';\n case 'mp4':\n case 'aac':\n case 'aacp':\n case 'm4a':\n return 'mp4';\n case 'ogg': // RFC 7845\n case 'opus': // RFC 6716\n case 'speex': // RFC 5574\n return 'ogg';\n case 'ms-wma':\n case 'ms-wmv':\n case 'ms-asf':\n return 'asf';\n case 'aiff':\n case 'aif':\n case 'aifc':\n return 'aiff';\n case 'vnd.wave':\n case 'wav':\n case 'wave':\n return 'riff';\n case 'wavpack':\n return 'wavpack';\n case 'musepack':\n return 'musepack';\n case 'dsf':\n return 'dsf';\n }\n break;\n case 'video':\n switch (subType) {\n case 'ms-asf':\n case 'ms-wmv':\n return 'asf';\n case 'm4v':\n case 'mp4':\n return 'mp4';\n case 'ogg':\n return 'ogg';\n }\n break;\n case 'application':\n switch (subType) {\n case 'vnd.ms-asf':\n return 'asf';\n case 'ogg':\n return 'ogg';\n }\n break;\n }\n }\n}\nexports.ParserFactory = ParserFactory;\n//# sourceMappingURL=ParserFactory.js.map","'use strict';\n\nexports.stringToBytes = string => [...string].map(character => character.charCodeAt(0));\n\nconst uint8ArrayUtf8ByteString = (array, start, end) => {\n\treturn String.fromCharCode(...array.slice(start, end));\n};\n\nexports.readUInt64LE = (buffer, offset = 0) => {\n\tlet n = buffer[offset];\n\tlet mul = 1;\n\tlet i = 0;\n\n\twhile (++i < 8) {\n\t\tmul *= 0x100;\n\t\tn += buffer[offset + i] * mul;\n\t}\n\n\treturn n;\n};\n\nexports.tarHeaderChecksumMatches = buffer => { // Does not check if checksum field characters are valid\n\tif (buffer.length < 512) { // `tar` header size, cannot compute checksum without it\n\t\treturn false;\n\t}\n\n\tconst MASK_8TH_BIT = 0x80;\n\n\tlet sum = 256; // Intitalize sum, with 256 as sum of 8 spaces in checksum field\n\tlet signedBitSum = 0; // Initialize signed bit sum\n\n\tfor (let i = 0; i < 148; i++) {\n\t\tconst byte = buffer[i];\n\t\tsum += byte;\n\t\tsignedBitSum += byte & MASK_8TH_BIT; // Add signed bit to signed bit sum\n\t}\n\n\t// Skip checksum field\n\n\tfor (let i = 156; i < 512; i++) {\n\t\tconst byte = buffer[i];\n\t\tsum += byte;\n\t\tsignedBitSum += byte & MASK_8TH_BIT; // Add signed bit to signed bit sum\n\t}\n\n\tconst readSum = parseInt(uint8ArrayUtf8ByteString(buffer, 148, 154), 8); // Read sum in header\n\n\t// Some implementations compute checksum incorrectly using signed bytes\n\treturn (\n\t\t// Checksum in header equals the sum we calculated\n\t\treadSum === sum ||\n\n\t\t// Checksum in header equals sum we calculated plus signed-to-unsigned delta\n\t\treadSum === (sum - (signedBitSum << 1))\n\t);\n};\n\nexports.uint8ArrayUtf8ByteString = uint8ArrayUtf8ByteString;\n","/*!\n * media-typer\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 2616 sec 3.7\n *\n * parameter = token \"=\" ( token | quoted-string )\n * token = 1*<any CHAR except CTLs or separators>\n * separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n * | \",\" | \";\" | \":\" | \"\\\" | <\">\n * | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n * | \"{\" | \"}\" | SP | HT\n * quoted-string = ( <\"> *(qdtext | quoted-pair ) <\"> )\n * qdtext = <any TEXT except <\">>\n * quoted-pair = \"\\\" CHAR\n * CHAR = <any US-ASCII character (octets 0 - 127)>\n * TEXT = <any OCTET except CTLs, but including LWS>\n * LWS = [CRLF] 1*( SP | HT )\n * CRLF = CR LF\n * CR = <US-ASCII CR, carriage return (13)>\n * LF = <US-ASCII LF, linefeed (10)>\n * SP = <US-ASCII SP, space (32)>\n * SHT = <US-ASCII HT, horizontal-tab (9)>\n * CTL = <any US-ASCII control character (octets 0 - 31) and DEL (127)>\n * OCTET = <any 8-bit sequence of data>\n */\nvar paramRegExp = /; *([!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) *= *(\"(?:[ !\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u0020-\\u007e])*\"|[!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) */g;\nvar textRegExp = /^[\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar tokenRegExp = /^[!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 2616\n *\n * quoted-pair = \"\\\" CHAR\n * CHAR = <any US-ASCII character (octets 0 - 127)>\n */\nvar qescRegExp = /\\\\([\\u0000-\\u007f])/g;\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 2616\n */\nvar quoteRegExp = /([\\\\\"])/g;\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first = ALPHA / DIGIT\n * restricted-name-chars = ALPHA / DIGIT / \"!\" / \"#\" /\n * \"$\" / \"&\" / \"-\" / \"^\" / \"_\"\n * restricted-name-chars =/ \".\" ; Characters before first dot always\n * ; specify a facet name\n * restricted-name-chars =/ \"+\" ; Characters after last plus always\n * ; specify a structured syntax suffix\n * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z\n * DIGIT = %x30-39 ; 0-9\n */\nvar subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @api public\n */\n\nfunction format(obj) {\n if (!obj || typeof obj !== 'object') {\n throw new TypeError('argument obj is required')\n }\n\n var parameters = obj.parameters\n var subtype = obj.subtype\n var suffix = obj.suffix\n var type = obj.type\n\n if (!type || !typeNameRegExp.test(type)) {\n throw new TypeError('invalid type')\n }\n\n if (!subtype || !subtypeNameRegExp.test(subtype)) {\n throw new TypeError('invalid subtype')\n }\n\n // format as type/subtype\n var string = type + '/' + subtype\n\n // append +suffix\n if (suffix) {\n if (!typeNameRegExp.test(suffix)) {\n throw new TypeError('invalid suffix')\n }\n\n string += '+' + suffix\n }\n\n // append parameters\n if (parameters && typeof parameters === 'object') {\n var param\n var params = Object.keys(parameters).sort()\n\n for (var i = 0; i < params.length; i++) {\n param = params[i]\n\n if (!tokenRegExp.test(param)) {\n throw new TypeError('invalid parameter name')\n }\n\n string += '; ' + param + '=' + qstring(parameters[param])\n }\n }\n\n return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @api public\n */\n\nfunction parse(string) {\n if (!string) {\n throw new TypeError('argument string is required')\n }\n\n // support req/res-like objects as argument\n if (typeof string === 'object') {\n string = getcontenttype(string)\n }\n\n if (typeof string !== 'string') {\n throw new TypeError('argument string is required to be a string')\n }\n\n var index = string.indexOf(';')\n var type = index !== -1\n ? string.substr(0, index)\n : string\n\n var key\n var match\n var obj = splitType(type)\n var params = {}\n var value\n\n paramRegExp.lastIndex = index\n\n while (match = paramRegExp.exec(string)) {\n if (match.index !== index) {\n throw new TypeError('invalid parameter format')\n }\n\n index += match[0].length\n key = match[1].toLowerCase()\n value = match[2]\n\n if (value[0] === '\"') {\n // remove quotes and escapes\n value = value\n .substr(1, value.length - 2)\n .replace(qescRegExp, '$1')\n }\n\n params[key] = value\n }\n\n if (index !== -1 && index !== string.length) {\n throw new TypeError('invalid parameter format')\n }\n\n obj.parameters = params\n\n return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @api private\n */\n\nfunction getcontenttype(obj) {\n if (typeof obj.getHeader === 'function') {\n // res-like\n return obj.getHeader('content-type')\n }\n\n if (typeof obj.headers === 'object') {\n // req-like\n return obj.headers && obj.headers['content-type']\n }\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @api private\n */\n\nfunction qstring(val) {\n var str = String(val)\n\n // no need to quote tokens\n if (tokenRegExp.test(str)) {\n return str\n }\n\n if (str.length > 0 && !textRegExp.test(str)) {\n throw new TypeError('invalid parameter value')\n }\n\n return '\"' + str.replace(quoteRegExp, '\\\\$1') + '\"'\n}\n\n/**\n * Simply \"type/subtype+siffx\" into parts.\n *\n * @param {string} string\n * @return {Object}\n * @api private\n */\n\nfunction splitType(string) {\n var match = typeRegExp.exec(string.toLowerCase())\n\n if (!match) {\n throw new TypeError('invalid media type')\n }\n\n var type = match[1]\n var subtype = match[2]\n var suffix\n\n // suffix after last +\n var index = subtype.lastIndexOf('+')\n if (index !== -1) {\n suffix = subtype.substr(index + 1)\n subtype = subtype.substr(0, index)\n }\n\n var obj = {\n type: type,\n subtype: subtype,\n suffix: suffix\n }\n\n return obj\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst _debug = require(\"debug\");\nconst GenericTagTypes_1 = require(\"./GenericTagTypes\");\nconst CombinedTagMapper_1 = require(\"./CombinedTagMapper\");\nconst GenericTagMapper_1 = require(\"./GenericTagMapper\");\nconst debug = _debug(\"music-metadata:collector\");\nconst TagPriority = ['APEv2', 'vorbis', 'ID3v2.4', 'ID3v2.3', 'ID3v2.2', 'exif', 'asf', 'iTunes', 'ID3v1'];\n/**\n * Provided to the parser to uodate the metadata result.\n * Responsible for triggering async updates\n */\nclass MetadataCollector {\n constructor(opts) {\n this.opts = opts;\n this.format = {\n tagTypes: []\n };\n this.native = {};\n this.common = {\n track: { no: null, of: null },\n disk: { no: null, of: null }\n };\n /**\n * Keeps track of origin priority for each mapped id\n */\n this.commonOrigin = {};\n /**\n * Maps a tag type to a priority\n */\n this.originPriority = {};\n this.tagMapper = new CombinedTagMapper_1.CombinedTagMapper();\n let priority = 1;\n for (const tagType of TagPriority) {\n this.originPriority[tagType] = priority++;\n }\n this.originPriority.artificial = 500; // Filled using alternative tags\n this.originPriority.id3v1 = 600; // Consider worst due to field length limit\n }\n /**\n * @returns {boolean} true if one or more tags have been found\n */\n hasAny() {\n for (const tagType in this.native) {\n return true;\n }\n return false;\n }\n setFormat(key, value) {\n debug(`format: ${key} = ${value}`);\n this.format[key] = value; // as any to override readonly\n if (this.opts.observer) {\n this.opts.observer({ metadata: this, tag: { type: 'format', id: key, value } });\n }\n }\n addTag(tagType, tagId, value) {\n debug(`tag ${tagType}.${tagId} = ${value}`);\n if (!this.native[tagType]) {\n this.format.tagTypes.push(tagType);\n this.native[tagType] = [];\n }\n this.native[tagType].push({ id: tagId, value });\n this.toCommon(tagType, tagId, value);\n }\n getNativeMetadata() {\n return {\n format: this.format,\n native: this.native\n };\n }\n postMap(tagType, tag) {\n // Common tag (alias) found\n // check if we need to do something special with common tag\n // if the event has been aliased then we need to clean it before\n // it is emitted to the user. e.g. genre (20) -> Electronic\n switch (tag.id) {\n case 'artist':\n if (this.commonOrigin.artist === this.originPriority[tagType]) {\n // Assume the artist field is used as artists\n return this.postMap('artificial', { id: 'artists', value: tag.value });\n }\n if (!this.common.artists) {\n // Fill artists using artist source\n this.setGenericTag('artificial', { id: 'artists', value: tag.value });\n }\n break;\n case 'artists':\n if (!this.common.artist || this.commonOrigin.artist === this.originPriority.artificial) {\n if (!this.common.artists || this.common.artists.indexOf(tag.value) === -1) {\n // Fill artist using artists source\n const artists = (this.common.artists || []).concat([tag.value]);\n const value = joinArtists(artists);\n const artistTag = { id: 'artist', value };\n this.setGenericTag('artificial', artistTag);\n }\n }\n break;\n case 'genre':\n tag.value = GenericTagMapper_1.CommonTagMapper.parseGenre(tag.value);\n break;\n case 'picture':\n tag.value.format = GenericTagMapper_1.CommonTagMapper.fixPictureMimeType(tag.value.format);\n break;\n case 'totaltracks':\n this.common.track.of = GenericTagMapper_1.CommonTagMapper.toIntOrNull(tag.value);\n return;\n case 'totaldiscs':\n this.common.disk.of = GenericTagMapper_1.CommonTagMapper.toIntOrNull(tag.value);\n return;\n case 'track':\n case 'disk':\n const of = this.common[tag.id].of; // store of value, maybe maybe overwritten\n this.common[tag.id] = GenericTagMapper_1.CommonTagMapper.normalizeTrack(tag.value);\n this.common[tag.id].of = of != null ? of : this.common[tag.id].of;\n return;\n case 'year':\n case 'originalyear':\n tag.value = parseInt(tag.value, 10);\n break;\n case 'date':\n // ToDo: be more strict on 'YYYY...'\n const year = parseInt(tag.value.substr(0, 4), 10);\n if (year && !isNaN(year)) {\n this.common.year = year;\n }\n break;\n case 'discogs_label_id':\n case 'discogs_release_id':\n case 'discogs_master_release_id':\n case 'discogs_artist_id':\n case 'discogs_votes':\n tag.value = typeof tag.value === 'string' ? parseInt(tag.value, 10) : tag.value;\n break;\n case 'replaygain_track_peak':\n tag.value = typeof tag.value === 'string' ? parseFloat(tag.value) : tag.value;\n break;\n case 'gapless': // iTunes gap-less flag\n tag.value = tag.value === \"1\"; // boolean\n break;\n default:\n // nothing to do\n }\n this.setGenericTag(tagType, tag);\n }\n /**\n * Convert native tags to common tags\n * @returns {IAudioMetadata} Native + common tags\n */\n toCommonMetadata() {\n return {\n format: this.format,\n native: this.opts.native ? this.native : undefined,\n common: this.common\n };\n }\n /**\n * Convert native tag to common tags\n */\n toCommon(tagType, tagId, value) {\n const tag = { id: tagId, value };\n const genericTag = this.tagMapper.mapTag(tagType, tag);\n if (genericTag) {\n this.postMap(tagType, genericTag);\n }\n }\n /**\n * Set generic tag\n * @param {GenericTagId} tagId\n * @param {TagType} tagType originating header type, used to prioritize concurrent mappings\n * @param value\n */\n setGenericTag(tagType, tag) {\n debug(`common.${tag.id} = ${tag.value}`);\n const prio0 = this.commonOrigin[tag.id] || 1000;\n const prio1 = this.originPriority[tagType];\n if (GenericTagTypes_1.isSingleton(tag.id)) {\n if (prio1 <= prio0) {\n this.common[tag.id] = tag.value;\n this.commonOrigin[tag.id] = prio1;\n }\n else {\n return debug(`Ignore native tag (singleton): ${tagType}.${tag.id} = ${tag.value}`);\n }\n }\n else {\n if (prio1 === prio0) {\n if (!GenericTagTypes_1.isUnique(tag.id) || this.common[tag.id].indexOf(tag.value) === -1) {\n this.common[tag.id].push(tag.value);\n }\n else {\n debug(`Ignore duplicate value: ${tagType}.${tag.id} = ${tag.value}`);\n }\n // no effect? this.commonOrigin[tag.id] = prio1;\n }\n else if (prio1 < prio0) {\n this.common[tag.id] = [tag.value];\n this.commonOrigin[tag.id] = prio1;\n }\n else {\n return debug(`Ignore native tag (list): ${tagType}.${tag.id} = ${tag.value}`);\n }\n }\n if (this.opts.observer) {\n this.opts.observer({ metadata: this, tag: { type: 'common', id: tag.id, value: tag.value } });\n }\n // ToDo: trigger metadata event\n }\n}\nexports.MetadataCollector = MetadataCollector;\nfunction joinArtists(artists) {\n if (artists.length > 2) {\n return artists.slice(0, artists.length - 1).join(', ') + ' & ' + artists[artists.length - 1];\n }\n return artists.join(' & ');\n}\nexports.joinArtists = joinArtists;\n//# sourceMappingURL=MetadataCollector.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.commonTags = {\n year: { multiple: false },\n track: { multiple: false },\n disk: { multiple: false },\n title: { multiple: false },\n artist: { multiple: false },\n artists: { multiple: true, unique: true },\n albumartist: { multiple: false },\n album: { multiple: false },\n date: { multiple: false },\n originaldate: { multiple: false },\n originalyear: { multiple: false },\n comment: { multiple: true, unique: false },\n genre: { multiple: true, unique: true },\n picture: { multiple: true, unique: true },\n composer: { multiple: true, unique: true },\n lyrics: { multiple: true, unique: false },\n albumsort: { multiple: false, unique: true },\n titlesort: { multiple: false, unique: true },\n work: { multiple: false, unique: true },\n artistsort: { multiple: false, unique: true },\n albumartistsort: { multiple: false, unique: true },\n composersort: { multiple: true, unique: true },\n lyricist: { multiple: true, unique: true },\n writer: { multiple: true, unique: true },\n conductor: { multiple: true, unique: true },\n remixer: { multiple: true, unique: true },\n arranger: { multiple: true, unique: true },\n engineer: { multiple: true, unique: true },\n producer: { multiple: true, unique: true },\n technician: { multiple: true, unique: true },\n djmixer: { multiple: true, unique: true },\n mixer: { multiple: true, unique: true },\n label: { multiple: true, unique: true },\n grouping: { multiple: false },\n subtitle: { multiple: false },\n discsubtitle: { multiple: false },\n totaltracks: { multiple: false },\n totaldiscs: { multiple: false },\n compilation: { multiple: false },\n rating: { multiple: true },\n bpm: { multiple: false },\n mood: { multiple: false },\n media: { multiple: false },\n catalognumber: { multiple: true, unique: true },\n tvShow: { multiple: false },\n tvShowSort: { multiple: false },\n tvSeason: { multiple: false },\n tvEpisode: { multiple: false },\n tvEpisodeId: { multiple: false },\n tvNetwork: { multiple: false },\n podcast: { multiple: false },\n podcasturl: { multiple: false },\n releasestatus: { multiple: false },\n releasetype: { multiple: true },\n releasecountry: { multiple: false },\n script: { multiple: false },\n language: { multiple: false },\n copyright: { multiple: false },\n license: { multiple: false },\n encodedby: { multiple: false },\n encodersettings: { multiple: false },\n gapless: { multiple: false },\n barcode: { multiple: false },\n isrc: { multiple: true },\n asin: { multiple: false },\n musicbrainz_recordingid: { multiple: false },\n musicbrainz_trackid: { multiple: false },\n musicbrainz_albumid: { multiple: false },\n musicbrainz_artistid: { multiple: true },\n musicbrainz_albumartistid: { multiple: true },\n musicbrainz_releasegroupid: { multiple: false },\n musicbrainz_workid: { multiple: false },\n musicbrainz_trmid: { multiple: false },\n musicbrainz_discid: { multiple: false },\n acoustid_id: { multiple: false },\n acoustid_fingerprint: { multiple: false },\n musicip_puid: { multiple: false },\n musicip_fingerprint: { multiple: false },\n website: { multiple: false },\n 'performer:instrument': { multiple: true, unique: true },\n averageLevel: { multiple: false },\n peakLevel: { multiple: false },\n notes: { multiple: true, unique: false },\n key: { multiple: false },\n originalalbum: { multiple: false },\n originalartist: { multiple: false },\n discogs_artist_id: { multiple: true, unique: true },\n discogs_release_id: { multiple: false },\n discogs_label_id: { multiple: false },\n discogs_master_release_id: { multiple: false },\n discogs_votes: { multiple: false },\n discogs_rating: { multiple: false },\n replaygain_track_peak: { multiple: false },\n replaygain_track_gain: { multiple: false },\n description: { multiple: true }\n};\n/**\n * @param alias Name of common tag\n * @returns {boolean|*} true if given alias is mapped as a singleton', otherwise false\n */\nfunction isSingleton(alias) {\n return exports.commonTags.hasOwnProperty(alias) && !exports.commonTags[alias].multiple;\n}\nexports.isSingleton = isSingleton;\n/**\n * @param alias Common (generic) tag\n * @returns {boolean|*} true if given alias is a singleton or explicitly marked as unique\n */\nfunction isUnique(alias) {\n return !exports.commonTags[alias].multiple || exports.commonTags[alias].unique;\n}\nexports.isUnique = isUnique;\n//# sourceMappingURL=GenericTagTypes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ID3v1TagMap_1 = require(\"../id3v1/ID3v1TagMap\");\nconst ID3v24TagMapper_1 = require(\"../id3v2/ID3v24TagMapper\");\nconst AsfTagMapper_1 = require(\"../asf/AsfTagMapper\");\nconst ID3v22TagMapper_1 = require(\"../id3v2/ID3v22TagMapper\");\nconst APEv2TagMapper_1 = require(\"../apev2/APEv2TagMapper\");\nconst MP4TagMapper_1 = require(\"../mp4/MP4TagMapper\");\nconst VorbisTagMapper_1 = require(\"../ogg/vorbis/VorbisTagMapper\");\nconst RiffInfoTagMap_1 = require(\"../riff/RiffInfoTagMap\");\nclass CombinedTagMapper {\n constructor() {\n this.tagMappers = {};\n [\n new ID3v1TagMap_1.ID3v1TagMapper(),\n new ID3v22TagMapper_1.ID3v22TagMapper(),\n new ID3v24TagMapper_1.ID3v24TagMapper(),\n new MP4TagMapper_1.MP4TagMapper(),\n new MP4TagMapper_1.MP4TagMapper(),\n new VorbisTagMapper_1.VorbisTagMapper(),\n new APEv2TagMapper_1.APEv2TagMapper(),\n new AsfTagMapper_1.AsfTagMapper(),\n new RiffInfoTagMap_1.RiffInfoTagMapper()\n ].forEach(mapper => {\n this.registerTagMapper(mapper);\n });\n }\n /**\n * Convert native to generic (common) tags\n * @param tagType Originating tag format\n * @param tag Native tag to map to a generic tag id\n * @return Generic tag result (output of this function)\n */\n mapTag(tagType, tag) {\n const tagMapper = this.tagMappers[tagType];\n if (tagMapper) {\n return this.tagMappers[tagType].mapGenericTag(tag);\n }\n throw new Error(\"No generic tag mapper defined for tag-format: \" + tagType);\n }\n registerTagMapper(genericTagMapper) {\n for (const tagType of genericTagMapper.tagTypes) {\n this.tagMappers[tagType] = genericTagMapper;\n }\n }\n}\nexports.CombinedTagMapper = CombinedTagMapper;\n//# sourceMappingURL=CombinedTagMapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst GenericTagMapper_1 = require(\"../common/GenericTagMapper\");\n/**\n * ID3v1 tag mappings\n */\nconst id3v1TagMap = {\n title: 'title',\n artist: 'artist',\n album: 'album',\n year: 'year',\n comment: 'comment',\n track: 'track',\n genre: 'genre'\n};\nclass ID3v1TagMapper extends GenericTagMapper_1.CommonTagMapper {\n constructor() {\n super(['ID3v1'], id3v1TagMap);\n }\n}\nexports.ID3v1TagMapper = ID3v1TagMapper;\n//# sourceMappingURL=ID3v1TagMap.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * windows-1252 / iso_8859-1 decoder (ANSI)\n */\nclass Windows1292Decoder {\n static decode(buffer) {\n let str = '';\n for (const i in buffer) {\n if (buffer.hasOwnProperty(i)) {\n str += Windows1292Decoder.codePointToString(Windows1292Decoder.singleByteDecoder(buffer[i]));\n }\n }\n return str;\n }\n static inRange(a, min, max) {\n return min <= a && a <= max;\n }\n static codePointToString(cp) {\n if (cp <= 0xFFFF) {\n return String.fromCharCode(cp);\n }\n else {\n cp -= 0x10000;\n return String.fromCharCode((cp >> 10) + 0xD800, (cp & 0x3FF) + 0xDC00);\n }\n }\n static singleByteDecoder(bite) {\n if (Windows1292Decoder.inRange(bite, 0x00, 0x7F)) {\n return bite;\n }\n const codePoint = Windows1292Decoder.windows1252[bite - 0x80];\n if (codePoint === null) {\n throw Error('invaliding encoding');\n }\n return codePoint;\n }\n}\nWindows1292Decoder.windows1252 = [8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352,\n 8249, 338, 141, 381, 143, 144, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732,\n 8482, 353, 8250, 339, 157, 382, 376, 160, 161, 162, 163, 164, 165, 166, 167, 168,\n 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,\n 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,\n 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,\n 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,\n 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,\n 248, 249, 250, 251, 252, 253, 254, 255];\nexports.Windows1292Decoder = Windows1292Decoder;\n//# sourceMappingURL=Windows1292Decoder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst GenericTagMapper_1 = require(\"../common/GenericTagMapper\");\nconst Util_1 = require(\"../common/Util\");\n/**\n * ID3v2.3/ID3v2.4 tag mappings\n */\nconst id3v24TagMap = {\n // id3v2.3\n TIT2: \"title\",\n TPE1: \"artist\",\n \"TXXX:Artists\": \"artists\",\n TPE2: \"albumartist\",\n TALB: \"album\",\n TDRV: \"date\",\n /**\n * Original release year\n */\n TORY: \"originalyear\",\n TPOS: \"disk\",\n TCON: \"genre\",\n APIC: \"picture\",\n TCOM: \"composer\",\n \"USLT:description\": \"lyrics\",\n TSOA: \"albumsort\",\n TSOT: \"titlesort\",\n TOAL: \"originalalbum\",\n TSOP: \"artistsort\",\n TSO2: \"albumartistsort\",\n TSOC: \"composersort\",\n TEXT: \"lyricist\",\n \"TXXX:Writer\": \"writer\",\n TPE3: \"conductor\",\n // 'IPLS:instrument': 'performer:instrument', // ToDo\n TPE4: \"remixer\",\n \"IPLS:arranger\": \"arranger\",\n \"IPLS:engineer\": \"engineer\",\n \"IPLS:producer\": \"producer\",\n \"IPLS:DJ-mix\": \"djmixer\",\n \"IPLS:mix\": \"mixer\",\n TPUB: \"label\",\n TIT1: \"grouping\",\n TIT3: \"subtitle\",\n TRCK: \"track\",\n TCMP: \"compilation\",\n POPM: \"rating\",\n TBPM: \"bpm\",\n TMED: \"media\",\n \"TXXX:CATALOGNUMBER\": \"catalognumber\",\n \"TXXX:MusicBrainz Album Status\": \"releasestatus\",\n \"TXXX:MusicBrainz Album Type\": \"releasetype\",\n /**\n * Release country as documented: https://picard.musicbrainz.org/docs/mappings/#cite_note-0\n */\n \"TXXX:MusicBrainz Album Release Country\": \"releasecountry\",\n /**\n * Release country as implemented // ToDo: report\n */\n \"TXXX:RELEASECOUNTRY\": \"releasecountry\",\n \"TXXX:SCRIPT\": \"script\",\n TLAN: \"language\",\n TCOP: \"copyright\",\n WCOP: \"license\",\n TENC: \"encodedby\",\n TSSE: \"encodersettings\",\n \"TXXX:BARCODE\": \"barcode\",\n TSRC: \"isrc\",\n \"TXXX:ASIN\": \"asin\",\n \"TXXX:originalyear\": \"originalyear\",\n \"UFID:http://musicbrainz.org\": \"musicbrainz_recordingid\",\n \"TXXX:MusicBrainz Release Track Id\": \"musicbrainz_trackid\",\n \"TXXX:MusicBrainz Album Id\": \"musicbrainz_albumid\",\n \"TXXX:MusicBrainz Artist Id\": \"musicbrainz_artistid\",\n \"TXXX:MusicBrainz Album Artist Id\": \"musicbrainz_albumartistid\",\n \"TXXX:MusicBrainz Release Group Id\": \"musicbrainz_releasegroupid\",\n \"TXXX:MusicBrainz Work Id\": \"musicbrainz_workid\",\n \"TXXX:MusicBrainz TRM Id\": \"musicbrainz_trmid\",\n \"TXXX:MusicBrainz Disc Id\": \"musicbrainz_discid\",\n \"TXXX:ACOUSTID_ID\": \"acoustid_id\",\n \"TXXX:Acoustid Id\": \"acoustid_id\",\n \"TXXX:Acoustid Fingerprint\": \"acoustid_fingerprint\",\n \"TXXX:MusicIP PUID\": \"musicip_puid\",\n \"TXXX:MusicMagic Fingerprint\": \"musicip_fingerprint\",\n WOAR: \"website\",\n // id3v2.4\n // ToDo: In same sequence as defined at http://id3.org/id3v2.4.0-frames\n TDRC: \"date\",\n TYER: \"year\",\n TDOR: \"originaldate\",\n // 'TMCL:instrument': 'performer:instrument',\n \"TIPL:arranger\": \"arranger\",\n \"TIPL:engineer\": \"engineer\",\n \"TIPL:producer\": \"producer\",\n \"TIPL:DJ-mix\": \"djmixer\",\n \"TIPL:mix\": \"mixer\",\n TMOO: \"mood\",\n // additional mappings:\n SYLT: \"lyrics\",\n TSST: \"discsubtitle\",\n TKEY: \"key\",\n COMM: \"comment\",\n TOPE: \"originalartist\",\n // Windows Media Player\n \"PRIV:AverageLevel\": \"averageLevel\",\n \"PRIV:PeakLevel\": \"peakLevel\",\n // Discogs\n \"TXXX:DISCOGS_ARTIST_ID\": \"discogs_artist_id\",\n \"TXXX:DISCOGS_ARTISTS\": \"artists\",\n \"TXXX:DISCOGS_ARTIST_NAME\": \"artists\",\n \"TXXX:DISCOGS_ALBUM_ARTISTS\": \"albumartist\",\n \"TXXX:DISCOGS_CATALOG\": \"catalognumber\",\n \"TXXX:DISCOGS_COUNTRY\": \"releasecountry\",\n \"TXXX:DISCOGS_DATE\": \"originaldate\",\n \"TXXX:DISCOGS_LABEL\": \"label\",\n \"TXXX:DISCOGS_LABEL_ID\": \"discogs_label_id\",\n \"TXXX:DISCOGS_MASTER_RELEASE_ID\": \"discogs_master_release_id\",\n \"TXXX:DISCOGS_RATING\": \"discogs_rating\",\n \"TXXX:DISCOGS_RELEASED\": \"date\",\n \"TXXX:DISCOGS_RELEASE_ID\": \"discogs_release_id\",\n \"TXXX:DISCOGS_VOTES\": \"discogs_votes\",\n \"TXXX:CATALOGID\": \"catalognumber\",\n \"TXXX:STYLE\": \"genre\",\n \"TXXX:replaygain_track_peak\": \"replaygain_track_peak\",\n \"TXXX:replaygain_track_gain\": \"replaygain_track_gain\"\n};\nclass ID3v24TagMapper extends GenericTagMapper_1.CommonTagMapper {\n static toRating(popm) {\n return {\n source: popm.email,\n rating: popm.rating > 0 ? (popm.rating - 1) / 254 * GenericTagMapper_1.CommonTagMapper.maxRatingScore : undefined\n };\n }\n constructor() {\n super(['ID3v2.3', 'ID3v2.4'], id3v24TagMap);\n }\n /**\n * Handle post mapping exceptions / correction\n * @param {string} id Tag key e.g. \"©alb\"\n * @param id e.g. \"Buena Vista Social Club\"\n * @return Common value e.g. \"Buena Vista Social Club\"\n */\n postMap(tag) {\n switch (tag.id) {\n case 'UFID': // decode MusicBrainz Recording Id\n if (tag.value.owner_identifier === 'http://musicbrainz.org') {\n tag.id += ':' + tag.value.owner_identifier;\n tag.value = Util_1.default.decodeString(tag.value.identifier, 'iso-8859-1');\n }\n break;\n case 'PRIV':\n switch (tag.value.owner_identifier) {\n // decode Windows Media Player\n case 'AverageLevel':\n case 'PeakValue':\n tag.id += ':' + tag.value.owner_identifier;\n tag.value = tag.value.data.length === 4 ? tag.value.data.readUInt32LE() : null;\n // ToDo: flag warning if: tag.value === null\n break;\n default:\n // Unknown PRIV owner-identifier\n }\n break;\n case 'COMM':\n tag.value = tag.value ? tag.value.text : null;\n break;\n case 'POPM':\n tag.value = ID3v24TagMapper.toRating(tag.value);\n break;\n default:\n break;\n }\n }\n}\nexports.ID3v24TagMapper = ID3v24TagMapper;\n//# sourceMappingURL=ID3v24TagMapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst GenericTagMapper_1 = require(\"../common/GenericTagMapper\");\n/**\n * ASF Metadata tag mappings.\n * See http://msdn.microsoft.com/en-us/library/ms867702.aspx\n */\nconst asfTagMap = {\n Title: 'title',\n Author: 'artist',\n 'WM/AlbumArtist': 'albumartist',\n 'WM/AlbumTitle': 'album',\n 'WM/Year': 'date',\n 'WM/OriginalReleaseTime': 'originaldate',\n 'WM/OriginalReleaseYear': 'originalyear',\n Description: 'comment',\n 'WM/TrackNumber': 'track',\n 'WM/PartOfSet': 'disk',\n 'WM/Genre': 'genre',\n 'WM/Composer': 'composer',\n 'WM/Lyrics': 'lyrics',\n 'WM/AlbumSortOrder': 'albumsort',\n 'WM/TitleSortOrder': 'titlesort',\n 'WM/ArtistSortOrder': 'artistsort',\n 'WM/AlbumArtistSortOrder': 'albumartistsort',\n 'WM/ComposerSortOrder': 'composersort',\n 'WM/Writer': 'lyricist',\n 'WM/Conductor': 'conductor',\n 'WM/ModifiedBy': 'remixer',\n 'WM/Engineer': 'engineer',\n 'WM/Producer': 'producer',\n 'WM/DJMixer': 'djmixer',\n 'WM/Mixer': 'mixer',\n 'WM/Publisher': 'label',\n 'WM/ContentGroupDescription': 'grouping',\n 'WM/SubTitle': 'subtitle',\n 'WM/SetSubTitle': 'discsubtitle',\n // 'WM/PartOfSet': 'totaldiscs',\n 'WM/IsCompilation': 'compilation',\n 'WM/SharedUserRating': 'rating',\n 'WM/BeatsPerMinute': 'bpm',\n 'WM/Mood': 'mood',\n 'WM/Media': 'media',\n 'WM/CatalogNo': 'catalognumber',\n 'MusicBrainz/Album Status': 'releasestatus',\n 'MusicBrainz/Album Type': 'releasetype',\n 'MusicBrainz/Album Release Country': 'releasecountry',\n 'WM/Script': 'script',\n 'WM/Language': 'language',\n Copyright: 'copyright',\n LICENSE: 'license',\n 'WM/EncodedBy': 'encodedby',\n 'WM/EncodingSettings': 'encodersettings',\n 'WM/Barcode': 'barcode',\n 'WM/ISRC': 'isrc',\n 'MusicBrainz/Track Id': 'musicbrainz_recordingid',\n 'MusicBrainz/Release Track Id': 'musicbrainz_trackid',\n 'MusicBrainz/Album Id': 'musicbrainz_albumid',\n 'MusicBrainz/Artist Id': 'musicbrainz_artistid',\n 'MusicBrainz/Album Artist Id': 'musicbrainz_albumartistid',\n 'MusicBrainz/Release Group Id': 'musicbrainz_releasegroupid',\n 'MusicBrainz/Work Id': 'musicbrainz_workid',\n 'MusicBrainz/TRM Id': 'musicbrainz_trmid',\n 'MusicBrainz/Disc Id': 'musicbrainz_discid',\n 'Acoustid/Id': 'acoustid_id',\n 'Acoustid/Fingerprint': 'acoustid_fingerprint',\n 'MusicIP/PUID': 'musicip_puid',\n 'WM/ARTISTS': 'artists',\n 'WM/InitialKey': 'key',\n ASIN: 'asin',\n 'WM/Work': 'work',\n 'WM/AuthorURL': 'website',\n 'WM/Picture': 'picture'\n};\nclass AsfTagMapper extends GenericTagMapper_1.CommonTagMapper {\n static toRating(rating) {\n return {\n rating: parseFloat(rating + 1) / 5\n };\n }\n constructor() {\n super(['asf'], asfTagMap);\n }\n postMap(tag) {\n switch (tag.id) {\n case 'WM/SharedUserRating':\n const keys = tag.id.split(':');\n tag.value = AsfTagMapper.toRating(tag.value);\n tag.id = keys[0];\n break;\n }\n }\n}\nexports.AsfTagMapper = AsfTagMapper;\n//# sourceMappingURL=AsfTagMapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst GenericTagMapper_1 = require(\"../common/GenericTagMapper\");\n/**\n * ID3v2.2 tag mappings\n */\nexports.id3v22TagMap = {\n TT2: 'title',\n TP1: 'artist',\n TP2: 'albumartist',\n TAL: 'album',\n TYE: 'year',\n COM: 'comment',\n TRK: 'track',\n TPA: 'disk',\n TCO: 'genre',\n PIC: 'picture',\n TCM: 'composer',\n TOR: 'originaldate',\n TOT: 'work',\n TXT: 'lyricist',\n TP3: 'conductor',\n TPB: 'label',\n TT1: 'grouping',\n TT3: 'subtitle',\n TLA: 'language',\n TCR: 'copyright',\n WCP: 'license',\n TEN: 'encodedby',\n TSS: 'encodersettings',\n WAR: 'website',\n 'COM:iTunPGAP': 'gapless'\n /* ToDo: iTunes tags:\n 'COM:iTunNORM': ,\n 'COM:iTunSMPB': 'encoder delay',\n 'COM:iTunes_CDDB_IDs'\n */\n};\nclass ID3v22TagMapper extends GenericTagMapper_1.CommonTagMapper {\n constructor() {\n super(['ID3v2.2'], exports.id3v22TagMap);\n }\n}\nexports.ID3v22TagMapper = ID3v22TagMapper;\n//# sourceMappingURL=ID3v22TagMapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst GenericTagMapper_1 = require(\"../common/GenericTagMapper\");\n/**\n * ID3v2.2 tag mappings\n */\nconst apev2TagMap = {\n Title: 'title',\n Artist: 'artist',\n Artists: 'artists',\n 'Album Artist': 'albumartist',\n Album: 'album',\n Year: 'date',\n Originalyear: 'originalyear',\n Originaldate: 'originaldate',\n Comment: 'comment',\n Track: 'track',\n Disc: 'disk',\n DISCNUMBER: 'disk',\n Genre: 'genre',\n 'Cover Art (Front)': 'picture',\n 'Cover Art (Back)': 'picture',\n Composer: 'composer',\n Lyrics: 'lyrics',\n ALBUMSORT: 'albumsort',\n TITLESORT: 'titlesort',\n WORK: 'work',\n ARTISTSORT: 'artistsort',\n ALBUMARTISTSORT: 'albumartistsort',\n COMPOSERSORT: 'composersort',\n Lyricist: 'lyricist',\n Writer: 'writer',\n Conductor: 'conductor',\n // 'Performer=artist (instrument)': 'performer:instrument',\n MixArtist: 'remixer',\n Arranger: 'arranger',\n Engineer: 'engineer',\n Producer: 'producer',\n DJMixer: 'djmixer',\n Mixer: 'mixer',\n Label: 'label',\n Grouping: 'grouping',\n Subtitle: 'subtitle',\n DiscSubtitle: 'discsubtitle',\n Compilation: 'compilation',\n BPM: 'bpm',\n Mood: 'mood',\n Media: 'media',\n CatalogNumber: 'catalognumber',\n MUSICBRAINZ_ALBUMSTATUS: 'releasestatus',\n MUSICBRAINZ_ALBUMTYPE: 'releasetype',\n RELEASECOUNTRY: 'releasecountry',\n Script: 'script',\n Language: 'language',\n Copyright: 'copyright',\n LICENSE: 'license',\n EncodedBy: 'encodedby',\n EncoderSettings: 'encodersettings',\n Barcode: 'barcode',\n ISRC: 'isrc',\n ASIN: 'asin',\n musicbrainz_trackid: 'musicbrainz_recordingid',\n musicbrainz_releasetrackid: 'musicbrainz_trackid',\n MUSICBRAINZ_ALBUMID: 'musicbrainz_albumid',\n MUSICBRAINZ_ARTISTID: 'musicbrainz_artistid',\n MUSICBRAINZ_ALBUMARTISTID: 'musicbrainz_albumartistid',\n MUSICBRAINZ_RELEASEGROUPID: 'musicbrainz_releasegroupid',\n MUSICBRAINZ_WORKID: 'musicbrainz_workid',\n MUSICBRAINZ_TRMID: 'musicbrainz_trmid',\n MUSICBRAINZ_DISCID: 'musicbrainz_discid',\n Acoustid_Id: 'acoustid_id',\n ACOUSTID_FINGERPRINT: 'acoustid_fingerprint',\n MUSICIP_PUID: 'musicip_puid',\n Weblink: 'website'\n};\nclass APEv2TagMapper extends GenericTagMapper_1.CommonTagMapper {\n constructor() {\n const upperCaseMap = {};\n for (const tag in apev2TagMap) {\n upperCaseMap[tag.toUpperCase()] = apev2TagMap[tag];\n }\n super(['APEv2'], upperCaseMap);\n }\n /**\n * @tag Native header tag\n * @return common tag name (alias)\n */\n getCommonName(tag) {\n return this.tagMap[tag.toUpperCase()];\n }\n}\nexports.APEv2TagMapper = APEv2TagMapper;\n//# sourceMappingURL=APEv2TagMapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst GenericTagMapper_1 = require(\"../common/GenericTagMapper\");\n/**\n * Ref: https://github.com/sergiomb2/libmp4v2/wiki/iTunesMetadata\n */\nconst mp4TagMap = {\n '©nam': 'title',\n '©ART': 'artist',\n aART: 'albumartist',\n /**\n * ToDo: Album artist seems to be stored here while Picard documentation says: aART\n */\n '----:com.apple.iTunes:Band': 'albumartist',\n '©alb': 'album',\n '©day': 'date',\n '©cmt': 'comment',\n trkn: 'track',\n disk: 'disk',\n '©gen': 'genre',\n covr: 'picture',\n '©wrt': 'composer',\n '©lyr': 'lyrics',\n soal: 'albumsort',\n sonm: 'titlesort',\n soar: 'artistsort',\n soaa: 'albumartistsort',\n soco: 'composersort',\n '----:com.apple.iTunes:LYRICIST': 'lyricist',\n '----:com.apple.iTunes:CONDUCTOR': 'conductor',\n '----:com.apple.iTunes:REMIXER': 'remixer',\n '----:com.apple.iTunes:ENGINEER': 'engineer',\n '----:com.apple.iTunes:PRODUCER': 'producer',\n '----:com.apple.iTunes:DJMIXER': 'djmixer',\n '----:com.apple.iTunes:MIXER': 'mixer',\n '----:com.apple.iTunes:LABEL': 'label',\n '©grp': 'grouping',\n '----:com.apple.iTunes:SUBTITLE': 'subtitle',\n '----:com.apple.iTunes:DISCSUBTITLE': 'discsubtitle',\n cpil: 'compilation',\n tmpo: 'bpm',\n '----:com.apple.iTunes:MOOD': 'mood',\n '----:com.apple.iTunes:MEDIA': 'media',\n '----:com.apple.iTunes:CATALOGNUMBER': 'catalognumber',\n tvsh: 'tvShow',\n tvsn: 'tvSeason',\n tves: 'tvEpisode',\n sosn: 'tvShowSort',\n tven: 'tvEpisodeId',\n tvnn: 'tvNetwork',\n pcst: 'podcast',\n purl: 'podcasturl',\n '----:com.apple.iTunes:MusicBrainz Album Status': 'releasestatus',\n '----:com.apple.iTunes:MusicBrainz Album Type': 'releasetype',\n '----:com.apple.iTunes:MusicBrainz Album Release Country': 'releasecountry',\n '----:com.apple.iTunes:SCRIPT': 'script',\n '----:com.apple.iTunes:LANGUAGE': 'language',\n cprt: 'copyright',\n '----:com.apple.iTunes:LICENSE': 'license',\n '©too': 'encodedby',\n pgap: 'gapless',\n '----:com.apple.iTunes:BARCODE': 'barcode',\n '----:com.apple.iTunes:ISRC': 'isrc',\n '----:com.apple.iTunes:ASIN': 'asin',\n '----:com.apple.iTunes:NOTES': 'comment',\n '----:com.apple.iTunes:MusicBrainz Track Id': 'musicbrainz_recordingid',\n '----:com.apple.iTunes:MusicBrainz Release Track Id': 'musicbrainz_trackid',\n '----:com.apple.iTunes:MusicBrainz Album Id': 'musicbrainz_albumid',\n '----:com.apple.iTunes:MusicBrainz Artist Id': 'musicbrainz_artistid',\n '----:com.apple.iTunes:MusicBrainz Album Artist Id': 'musicbrainz_albumartistid',\n '----:com.apple.iTunes:MusicBrainz Release Group Id': 'musicbrainz_releasegroupid',\n '----:com.apple.iTunes:MusicBrainz Work Id': 'musicbrainz_workid',\n '----:com.apple.iTunes:MusicBrainz TRM Id': 'musicbrainz_trmid',\n '----:com.apple.iTunes:MusicBrainz Disc Id': 'musicbrainz_discid',\n '----:com.apple.iTunes:Acoustid Id': 'acoustid_id',\n '----:com.apple.iTunes:Acoustid Fingerprint': 'acoustid_fingerprint',\n '----:com.apple.iTunes:MusicIP PUID': 'musicip_puid',\n '----:com.apple.iTunes:fingerprint': 'musicip_fingerprint',\n // Additional mappings:\n gnre: 'genre',\n '----:com.apple.iTunes:ALBUMARTISTSORT': 'albumartistsort',\n '----:com.apple.iTunes:ARTISTS': 'artists',\n '----:com.apple.iTunes:ORIGINALDATE': 'originaldate',\n '----:com.apple.iTunes:ORIGINALYEAR': 'originalyear',\n // '----:com.apple.iTunes:PERFORMER': 'performer'\n desc: 'description',\n ldes: 'description'\n};\nexports.tagType = 'iTunes';\nclass MP4TagMapper extends GenericTagMapper_1.CommonTagMapper {\n constructor() {\n super([exports.tagType], mp4TagMap);\n }\n}\nexports.MP4TagMapper = MP4TagMapper;\n//# sourceMappingURL=MP4TagMapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst GenericTagMapper_1 = require(\"../../common/GenericTagMapper\");\n/**\n * Vorbis tag mappings\n *\n * Mapping from native header format to one or possibly more 'common' entries\n * The common entries aim to read the same information from different media files\n * independent of the underlying format\n */\nconst vorbisTagMap = {\n TITLE: \"title\",\n ARTIST: \"artist\",\n ARTISTS: \"artists\",\n ALBUMARTIST: \"albumartist\",\n ALBUM: \"album\",\n DATE: \"date\",\n ORIGINALDATE: \"originaldate\",\n ORIGINALYEAR: \"originalyear\",\n COMMENT: \"comment\",\n TRACKNUMBER: \"track\",\n DISCNUMBER: \"disk\",\n GENRE: \"genre\",\n METADATA_BLOCK_PICTURE: \"picture\",\n COMPOSER: \"composer\",\n LYRICS: \"lyrics\",\n ALBUMSORT: \"albumsort\",\n TITLESORT: \"titlesort\",\n WORK: \"work\",\n ARTISTSORT: \"artistsort\",\n ALBUMARTISTSORT: \"albumartistsort\",\n COMPOSERSORT: \"composersort\",\n LYRICIST: \"lyricist\",\n WRITER: \"writer\",\n CONDUCTOR: \"conductor\",\n // 'PERFORMER=artist (instrument)': 'performer:instrument', // ToDo\n REMIXER: \"remixer\",\n ARRANGER: \"arranger\",\n ENGINEER: \"engineer\",\n PRODUCER: \"producer\",\n DJMIXER: \"djmixer\",\n MIXER: \"mixer\",\n LABEL: \"label\",\n GROUPING: \"grouping\",\n SUBTITLE: \"subtitle\",\n DISCSUBTITLE: \"discsubtitle\",\n TRACKTOTAL: \"totaltracks\",\n DISCTOTAL: \"totaldiscs\",\n COMPILATION: \"compilation\",\n RATING: \"rating\",\n BPM: \"bpm\",\n MOOD: \"mood\",\n MEDIA: \"media\",\n CATALOGNUMBER: \"catalognumber\",\n RELEASESTATUS: \"releasestatus\",\n RELEASETYPE: \"releasetype\",\n RELEASECOUNTRY: \"releasecountry\",\n SCRIPT: \"script\",\n LANGUAGE: \"language\",\n COPYRIGHT: \"copyright\",\n LICENSE: \"license\",\n ENCODEDBY: \"encodedby\",\n ENCODERSETTINGS: \"encodersettings\",\n BARCODE: \"barcode\",\n ISRC: \"isrc\",\n ASIN: \"asin\",\n MUSICBRAINZ_TRACKID: \"musicbrainz_recordingid\",\n MUSICBRAINZ_RELEASETRACKID: \"musicbrainz_trackid\",\n MUSICBRAINZ_ALBUMID: \"musicbrainz_albumid\",\n MUSICBRAINZ_ARTISTID: \"musicbrainz_artistid\",\n MUSICBRAINZ_ALBUMARTISTID: \"musicbrainz_albumartistid\",\n MUSICBRAINZ_RELEASEGROUPID: \"musicbrainz_releasegroupid\",\n MUSICBRAINZ_WORKID: \"musicbrainz_workid\",\n MUSICBRAINZ_TRMID: \"musicbrainz_trmid\",\n MUSICBRAINZ_DISCID: \"musicbrainz_discid\",\n ACOUSTID_ID: \"acoustid_id\",\n ACOUSTID_ID_FINGERPRINT: \"acoustid_fingerprint\",\n MUSICIP_PUID: \"musicip_puid\",\n // 'FINGERPRINT=MusicMagic Fingerprint {fingerprint}': 'musicip_fingerprint', // ToDo\n WEBSITE: \"website\",\n NOTES: \"notes\",\n TOTALTRACKS: \"totaltracks\",\n TOTALDISCS: \"totaldiscs\",\n // Discogs\n DISCOGS_ARTIST_ID: \"discogs_artist_id\",\n DISCOGS_ARTISTS: \"artists\",\n DISCOGS_ARTIST_NAME: \"artists\",\n DISCOGS_ALBUM_ARTISTS: \"albumartist\",\n DISCOGS_CATALOG: \"catalognumber\",\n DISCOGS_COUNTRY: \"releasecountry\",\n DISCOGS_DATE: \"originaldate\",\n DISCOGS_LABEL: \"label\",\n DISCOGS_LABEL_ID: \"discogs_label_id\",\n DISCOGS_MASTER_RELEASE_ID: \"discogs_master_release_id\",\n DISCOGS_RATING: \"discogs_rating\",\n DISCOGS_RELEASED: \"date\",\n DISCOGS_RELEASE_ID: \"discogs_release_id\",\n DISCOGS_VOTES: \"discogs_votes\",\n CATALOGID: \"catalognumber\",\n STYLE: \"genre\",\n REPLAYGAIN_TRACK_GAIN: \"replaygain_track_gain\",\n REPLAYGAIN_TRACK_PEAK: \"replaygain_track_peak\"\n};\nclass VorbisTagMapper extends GenericTagMapper_1.CommonTagMapper {\n static toRating(email, rating) {\n return {\n source: email ? email.toLowerCase() : email,\n rating: parseFloat(rating) * GenericTagMapper_1.CommonTagMapper.maxRatingScore\n };\n }\n constructor() {\n super(['vorbis'], vorbisTagMap);\n }\n postMap(tag) {\n if (tag.id.indexOf('RATING:') === 0) {\n const keys = tag.id.split(':');\n tag.value = VorbisTagMapper.toRating(keys[1], tag.value);\n tag.id = keys[0];\n }\n }\n}\nexports.VorbisTagMapper = VorbisTagMapper;\n//# sourceMappingURL=VorbisTagMapper.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst GenericTagMapper_1 = require(\"../common/GenericTagMapper\");\n/**\n * RIFF Info Tags; part of the EXIF 2.3\n * Ref: http://owl.phy.queensu.ca/~phil/exiftool/TagNames/RIFF.html#Info\n */\nexports.riffInfoTagMap = {\n IART: 'artist',\n ICRD: 'date',\n INAM: 'title',\n TITL: 'title',\n IPRD: 'album',\n ITRK: 'track',\n COMM: 'comment',\n ICMT: 'comment',\n ICNT: 'releasecountry',\n GNRE: 'genre',\n IWRI: 'writer',\n RATE: 'rating',\n YEAR: 'year',\n ISFT: 'encodedby',\n CODE: 'encodedby',\n TURL: 'website',\n IGNR: 'genre',\n IENG: 'engineer',\n ITCH: 'technician',\n IMED: 'media',\n IRPD: 'album' // Product, where the file was intended for\n};\nclass RiffInfoTagMapper extends GenericTagMapper_1.CommonTagMapper {\n constructor() {\n super(['exif'], exports.riffInfoTagMap);\n }\n}\nexports.RiffInfoTagMapper = RiffInfoTagMapper;\n//# sourceMappingURL=RiffInfoTagMap.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst initDebug = require(\"debug\");\nconst type_1 = require(\"strtok3/lib/type\");\nconst strtok3 = require(\"strtok3/lib/core\");\nconst ID3v2Parser_1 = require(\"../id3v2/ID3v2Parser\");\nconst FourCC_1 = require(\"../common/FourCC\");\nconst BasicParser_1 = require(\"../common/BasicParser\");\nconst AiffToken = require(\"./AiffToken\");\nconst iff = require(\"../iff\");\nconst ID3Stream_1 = require(\"../id3v2/ID3Stream\");\nconst debug = initDebug('music-metadata:parser:aiff');\n/**\n * AIFF - Audio Interchange File Format\n *\n * Ref:\n * http://www.onicos.com/staff/iz/formats/aiff.html\n * http://muratnkonar.com/aiff/index.html\n * http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/AIFF/AIFF.html\n */\nclass AIFFParser extends BasicParser_1.BasicParser {\n parse() {\n return __awaiter(this, void 0, void 0, function* () {\n const header = yield this.tokenizer.readToken(iff.Header);\n if (header.chunkID !== 'FORM')\n throw new Error('Invalid Chunk-ID, expected \\'FORM\\''); // Not AIFF format\n const type = yield this.tokenizer.readToken(FourCC_1.FourCcToken);\n switch (type) {\n case 'AIFF':\n this.metadata.setFormat('dataformat', type);\n this.isCompressed = false;\n break;\n case 'AIFC':\n this.metadata.setFormat('dataformat', 'AIFF-C');\n this.isCompressed = true;\n break;\n default:\n throw Error('Unsupported AIFF type: ' + type);\n }\n this.metadata.setFormat('lossless', !this.isCompressed);\n try {\n do {\n const chunkHeader = yield this.tokenizer.readToken(iff.Header);\n debug(`Chunk id=${chunkHeader.chunkID}`);\n const nextChunk = 2 * Math.round(chunkHeader.chunkSize / 2);\n const bytesRead = yield this.readData(chunkHeader);\n yield this.tokenizer.ignore(nextChunk - bytesRead);\n } while (true);\n }\n catch (err) {\n if (err.message !== type_1.endOfFile) {\n throw err;\n }\n }\n });\n }\n readData(header) {\n return __awaiter(this, void 0, void 0, function* () {\n switch (header.chunkID) {\n case 'COMM': // The Common Chunk\n const common = yield this.tokenizer.readToken(new AiffToken.Common(header, this.isCompressed));\n this.metadata.setFormat('bitsPerSample', common.sampleSize);\n this.metadata.setFormat('sampleRate', common.sampleRate);\n this.metadata.setFormat('numberOfChannels', common.numChannels);\n this.metadata.setFormat('numberOfSamples', common.numSampleFrames);\n this.metadata.setFormat('duration', common.numSampleFrames / common.sampleRate);\n this.metadata.setFormat('encoder', common.compressionName);\n return header.chunkSize;\n case 'ID3 ': // ID3-meta-data\n const id3_data = yield this.tokenizer.readToken(new Token.BufferType(header.chunkSize));\n const id3stream = new ID3Stream_1.ID3Stream(id3_data);\n const rst = strtok3.fromStream(id3stream);\n yield new ID3v2Parser_1.ID3v2Parser().parse(this.metadata, rst, this.options);\n return header.chunkSize;\n case 'SSND': // Sound Data Chunk\n if (this.metadata.format.duration) {\n this.metadata.setFormat('bitrate', 8 * header.chunkSize / this.metadata.format.duration);\n }\n return 0;\n default:\n return 0;\n }\n });\n }\n}\nexports.AIFFParser = AIFFParser;\n//# sourceMappingURL=AiffParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst initDebug = require(\"debug\");\nconst Token = require(\"token-types\");\nconst Util_1 = require(\"../common/Util\");\nconst ID3v2_1 = require(\"./ID3v2\");\nconst debug = initDebug('music-metadata:id3v2:frame-parser');\nclass FrameParser {\n static readData(b, type, major, includeCovers) {\n const encoding = FrameParser.getTextEncoding(b[0]);\n const length = b.length;\n let offset = 0;\n let output = []; // ToDo\n const nullTerminatorLength = FrameParser.getNullTerminatorLength(encoding);\n let fzero;\n const out = {};\n switch (type !== 'TXXX' && type[0] === 'T' ? 'T*' : type) {\n case 'T*': // 4.2.1. Text information frames - details\n case 'IPLS': // v2.3: Involved people list\n const text = Util_1.default.decodeString(b.slice(1), encoding).replace(/\\x00+$/, '');\n switch (type) {\n case 'TMCL': // Musician credits list\n case 'TIPL': // Involved people list\n case 'IPLS': // Involved people list\n output = FrameParser.splitValue(4, text);\n output = FrameParser.functionList(output);\n break;\n case 'TRK':\n case 'TRCK':\n case 'TPOS':\n output = text;\n break;\n case 'TCOM':\n case 'TEXT':\n case 'TOLY':\n case 'TOPE':\n case 'TPE1':\n case 'TSRC':\n // id3v2.3 defines that TCOM, TEXT, TOLY, TOPE & TPE1 values are separated by /\n output = FrameParser.splitValue(major, text);\n break;\n default:\n output = major >= 4 ? FrameParser.splitValue(major, text) : [text];\n }\n break;\n case 'TXXX':\n output = FrameParser.readIdentifierAndData(b, offset + 1, length, encoding);\n output = {\n description: output.id,\n text: FrameParser.splitValue(major, Util_1.default.decodeString(output.data, encoding).replace(/\\x00+$/, ''))\n };\n break;\n case 'PIC':\n case 'APIC':\n if (includeCovers) {\n const pic = {};\n offset += 1;\n switch (major) {\n case 2:\n pic.format = Util_1.default.decodeString(b.slice(offset, offset + 3), encoding);\n offset += 3;\n break;\n case 3:\n case 4:\n const enc = 'iso-8859-1';\n fzero = Util_1.default.findZero(b, offset, length, enc);\n pic.format = Util_1.default.decodeString(b.slice(offset, fzero), enc);\n offset = fzero + 1;\n break;\n default:\n throw new Error('Warning: unexpected major versionIndex: ' + major);\n }\n pic.format = FrameParser.fixPictureMimeType(pic.format);\n pic.type = ID3v2_1.AttachedPictureType[b[offset]];\n offset += 1;\n fzero = Util_1.default.findZero(b, offset, length, encoding);\n pic.description = Util_1.default.decodeString(b.slice(offset, fzero), encoding);\n offset = fzero + nullTerminatorLength;\n pic.data = Buffer.from(b.slice(offset, length));\n output = pic;\n }\n break;\n case 'CNT':\n case 'PCNT':\n output = Token.UINT32_BE.get(b, 0);\n break;\n case 'SYLT':\n // skip text encoding (1 byte),\n // language (3 bytes),\n // time stamp format (1 byte),\n // content tagTypes (1 byte),\n // content descriptor (1 byte)\n offset += 7;\n output = [];\n while (offset < length) {\n const txt = b.slice(offset, offset = Util_1.default.findZero(b, offset, length, encoding));\n offset += 5; // push offset forward one + 4 byte timestamp\n output.push(Util_1.default.decodeString(txt, encoding));\n }\n break;\n case 'ULT':\n case 'USLT':\n case 'COM':\n case 'COMM':\n offset += 1;\n out.language = Util_1.default.decodeString(b.slice(offset, offset + 3), 'iso-8859-1');\n offset += 3;\n fzero = Util_1.default.findZero(b, offset, length, encoding);\n out.description = Util_1.default.decodeString(b.slice(offset, fzero), encoding);\n offset = fzero + nullTerminatorLength;\n out.text = Util_1.default.decodeString(b.slice(offset, length), encoding).replace(/\\x00+$/, '');\n output = [out];\n break;\n case 'UFID':\n output = FrameParser.readIdentifierAndData(b, offset, length, 'iso-8859-1');\n output = { owner_identifier: output.id, identifier: output.data };\n break;\n case 'PRIV': // private frame\n output = FrameParser.readIdentifierAndData(b, offset, length, 'iso-8859-1');\n output = { owner_identifier: output.id, data: output.data };\n break;\n case 'POPM': // Popularimeter\n fzero = Util_1.default.findZero(b, offset, length, encoding);\n const email = Util_1.default.decodeString(b.slice(offset, fzero), encoding);\n offset = fzero + FrameParser.getNullTerminatorLength(encoding);\n const dataLen = length - offset;\n output = {\n email,\n rating: b.readUInt8(offset),\n counter: dataLen >= 5 ? b.readUInt32BE(offset + 1) : undefined\n };\n break;\n case 'GEOB': { // General encapsulated object\n fzero = Util_1.default.findZero(b, offset + 1, length, encoding);\n const mimeType = Util_1.default.decodeString(b.slice(offset + 1, fzero), 'iso-8859-1');\n offset = fzero + 1;\n fzero = Util_1.default.findZero(b, offset, length - offset, encoding);\n const filename = Util_1.default.decodeString(b.slice(offset + 1, fzero), 'iso-8859-1');\n offset = fzero + 1;\n fzero = Util_1.default.findZero(b, offset, length - offset, encoding);\n const description = Util_1.default.decodeString(b.slice(offset + 1, fzero), 'iso-8859-1');\n output = {\n type: mimeType,\n filename,\n description,\n data: b.slice(offset + 1, length)\n };\n break;\n }\n // W-Frames:\n case 'WCOM':\n case 'WCOP':\n case 'WOAF':\n case 'WOAR':\n case 'WOAS':\n case 'WORS':\n case 'WPAY':\n case 'WPUB':\n // Decode URL\n output = Util_1.default.decodeString(b.slice(offset, fzero), encoding);\n break;\n case 'WXXX': {\n // Decode URL\n fzero = Util_1.default.findZero(b, offset + 1, length, encoding);\n const description = Util_1.default.decodeString(b.slice(offset + 1, fzero), 'iso-8859-1');\n offset = fzero + 1;\n fzero = Util_1.default.findZero(b, offset, length - offset, encoding);\n output = { description, url: Util_1.default.decodeString(b.slice(offset, length - offset), encoding) };\n break;\n }\n case 'MCDI': {\n // Music CD identifier\n output = b.slice(0, length);\n break;\n }\n default:\n debug('Warning: unsupported id3v2-tag-type: ' + type);\n break;\n }\n return output;\n }\n static fixPictureMimeType(pictureType) {\n pictureType = pictureType.toLocaleLowerCase();\n switch (pictureType) {\n case 'jpg':\n return 'image/jpeg';\n case 'png':\n return 'image/png';\n }\n return pictureType;\n }\n /**\n * Converts TMCL (Musician credits list) or TIPL (Involved people list)\n * @param entries\n */\n static functionList(entries) {\n const res = {};\n for (let i = 0; i + 1 < entries.length; i += 2) {\n const names = entries[i + 1].split(',');\n res[entries[i]] = res.hasOwnProperty(entries[i]) ? res[entries[i]].concat(names) : names;\n }\n return res;\n }\n /**\n * id3v2.4 defines that multiple T* values are separated by 0x00\n * id3v2.3 defines that TCOM, TEXT, TOLY, TOPE & TPE1 values are separated by /\n * @param {number} major Major version, e.g. (4) for id3v2.4\n * @param {string} text Concatenated tag value\n * @returns {string[]} Slitted value\n */\n static splitValue(major, text) {\n const values = text.split(major >= 4 ? /\\x00/g : /\\//g);\n return FrameParser.trimArray(values);\n }\n static trimArray(values) {\n for (let i = 0; i < values.length; ++i) {\n values[i] = values[i].replace(/\\x00+$/, '').trim();\n }\n return values;\n }\n static readIdentifierAndData(b, offset, length, encoding) {\n const fzero = Util_1.default.findZero(b, offset, length, encoding);\n const id = Util_1.default.decodeString(b.slice(offset, fzero), encoding);\n offset = fzero + FrameParser.getNullTerminatorLength(encoding);\n return { id, data: b.slice(offset, length) };\n }\n static getTextEncoding(byte) {\n switch (byte) {\n case 0x00:\n return 'iso-8859-1'; // binary\n case 0x01:\n case 0x02:\n return 'utf16'; // 01 = with bom, 02 = without bom\n case 0x03:\n return 'utf8';\n default:\n return 'utf8';\n }\n }\n static getNullTerminatorLength(enc) {\n switch (enc) {\n case 'utf16':\n return 2;\n default:\n return 1;\n }\n }\n}\nexports.default = FrameParser;\n//# sourceMappingURL=FrameParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst assert = require(\"assert\");\nconst FourCC_1 = require(\"../common/FourCC\");\nclass Common {\n constructor(header, isAifc) {\n this.isAifc = isAifc;\n const minimumChunkSize = isAifc ? 22 : 18;\n assert.ok(header.chunkSize >= minimumChunkSize, `COMMON CHUNK size should always be at least ${minimumChunkSize}`);\n this.len = header.chunkSize;\n }\n get(buf, off) {\n // see: https://cycling74.com/forums/aiffs-80-bit-sample-rate-value\n const shift = buf.readUInt16BE(off + 8) - 16398;\n const baseSampleRate = buf.readUInt16BE(off + 8 + 2);\n const res = {\n numChannels: buf.readUInt16BE(off),\n numSampleFrames: buf.readUInt32BE(off + 2),\n sampleSize: buf.readUInt16BE(off + 6),\n sampleRate: shift < 0 ? baseSampleRate >> Math.abs(shift) : baseSampleRate << shift\n };\n if (this.isAifc) {\n res.compressionType = FourCC_1.FourCcToken.get(buf, off + 18);\n if (this.len > 22) {\n const strLen = buf.readInt8(off + 22);\n const padding = (strLen + 1) % 2;\n if (23 + strLen + padding === this.len) {\n res.compressionName = new Token.StringType(strLen, 'binary').get(buf, off + 23);\n }\n else {\n throw new Error('Illegal pstring length');\n }\n }\n }\n else {\n res.compressionName = 'PCM';\n }\n return res;\n }\n}\nexports.Common = Common;\n//# sourceMappingURL=AiffToken.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst FourCC_1 = require(\"../common/FourCC\");\n/**\n * Common AIFF chunk header\n */\nexports.Header = {\n len: 8,\n get: (buf, off) => {\n return {\n // Chunk type ID\n chunkID: FourCC_1.FourCcToken.get(buf, off),\n // Chunk size\n chunkSize: buf.readUInt32BE(off + 4)\n };\n }\n};\n//# sourceMappingURL=index.js.map","/* (ignored) */","'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Buffer = require('safe-buffer').Buffer;\nvar util = require('util');\n\nfunction copyBuffer(src, target, offset) {\n src.copy(target, offset);\n}\n\nmodule.exports = function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n BufferList.prototype.push = function push(v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n };\n\n BufferList.prototype.unshift = function unshift(v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n };\n\n BufferList.prototype.shift = function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n };\n\n BufferList.prototype.clear = function clear() {\n this.head = this.tail = null;\n this.length = 0;\n };\n\n BufferList.prototype.join = function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n };\n\n BufferList.prototype.concat = function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n };\n\n return BufferList;\n}();\n\nif (util && util.inspect && util.inspect.custom) {\n module.exports.prototype[util.inspect.custom] = function () {\n var obj = util.inspect({ length: this.length });\n return this.constructor.name + ' ' + obj;\n };\n}","/* (ignored) */","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\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// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/*<replacement>*/\nvar util = Object.create(require('core-util-is'));\nutil.inherits = require('inherits');\n/*</replacement>*/\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};","module.exports = require('./lib/_stream_writable.js');\n","module.exports = require('./lib/_stream_duplex.js');\n","module.exports = require('./readable').Transform\n","module.exports = require('./readable').PassThrough\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst FourCC_1 = require(\"../common/FourCC\");\nvar DataType;\n(function (DataType) {\n DataType[DataType[\"text_utf8\"] = 0] = \"text_utf8\";\n DataType[DataType[\"binary\"] = 1] = \"binary\";\n DataType[DataType[\"external_info\"] = 2] = \"external_info\";\n DataType[DataType[\"reserved\"] = 3] = \"reserved\";\n})(DataType = exports.DataType || (exports.DataType = {}));\n/**\n * APE_DESCRIPTOR: defines the sizes (and offsets) of all the pieces, as well as the MD5 checksum\n */\nexports.DescriptorParser = {\n len: 52,\n get: (buf, off) => {\n return {\n // should equal 'MAC '\n ID: FourCC_1.FourCcToken.get(buf, off),\n // versionIndex number * 1000 (3.81 = 3810) (remember that 4-byte alignment causes this to take 4-bytes)\n version: Token.UINT32_LE.get(buf, off + 4) / 1000,\n // the number of descriptor bytes (allows later expansion of this header)\n descriptorBytes: Token.UINT32_LE.get(buf, off + 8),\n // the number of header APE_HEADER bytes\n headerBytes: Token.UINT32_LE.get(buf, off + 12),\n // the number of header APE_HEADER bytes\n seekTableBytes: Token.UINT32_LE.get(buf, off + 16),\n // the number of header data bytes (from original file)\n headerDataBytes: Token.UINT32_LE.get(buf, off + 20),\n // the number of bytes of APE frame data\n apeFrameDataBytes: Token.UINT32_LE.get(buf, off + 24),\n // the high order number of APE frame data bytes\n apeFrameDataBytesHigh: Token.UINT32_LE.get(buf, off + 28),\n // the terminating data of the file (not including tag data)\n terminatingDataBytes: Token.UINT32_LE.get(buf, off + 32),\n // the MD5 hash of the file (see notes for usage... it's a littly tricky)\n fileMD5: new Token.BufferType(16).get(buf, off + 36)\n };\n }\n};\n/**\n * APE_HEADER: describes all of the necessary information about the APE file\n */\nexports.Header = {\n len: 24,\n get: (buf, off) => {\n return {\n // the compression level (see defines I.E. COMPRESSION_LEVEL_FAST)\n compressionLevel: Token.UINT16_LE.get(buf, off),\n // any format flags (for future use)\n formatFlags: Token.UINT16_LE.get(buf, off + 2),\n // the number of audio blocks in one frame\n blocksPerFrame: Token.UINT32_LE.get(buf, off + 4),\n // the number of audio blocks in the final frame\n finalFrameBlocks: Token.UINT32_LE.get(buf, off + 8),\n // the total number of frames\n totalFrames: Token.UINT32_LE.get(buf, off + 12),\n // the bits per sample (typically 16)\n bitsPerSample: Token.UINT16_LE.get(buf, off + 16),\n // the number of channels (1 or 2)\n channel: Token.UINT16_LE.get(buf, off + 18),\n // the sample rate (typically 44100)\n sampleRate: Token.UINT32_LE.get(buf, off + 20)\n };\n }\n};\n/**\n * APE Tag Header/Footer Version 2.0\n * TAG: describes all the properties of the file [optional]\n */\nexports.TagFooter = {\n len: 32,\n get: (buf, off) => {\n return {\n // should equal 'APETAGEX'\n ID: new Token.StringType(8, 'ascii').get(buf, off),\n // equals CURRENT_APE_TAG_VERSION\n version: Token.UINT32_LE.get(buf, off + 8),\n // the complete size of the tag, including this footer (excludes header)\n size: Token.UINT32_LE.get(buf, off + 12),\n // the number of fields in the tag\n fields: Token.UINT32_LE.get(buf, off + 16),\n // reserved for later use (must be zero),\n flags: parseTagFlags(Token.UINT32_LE.get(buf, off + 20))\n };\n }\n};\n/**\n * APE Tag v2.0 Item Header\n */\nexports.TagItemHeader = {\n len: 8,\n get: (buf, off) => {\n return {\n // Length of assigned value in bytes\n size: Token.UINT32_LE.get(buf, off),\n // reserved for later use (must be zero),\n flags: parseTagFlags(Token.UINT32_LE.get(buf, off + 4))\n };\n }\n};\nexports.TagField = footer => {\n return new Token.BufferType(footer.size - exports.TagFooter.len);\n};\nfunction parseTagFlags(flags) {\n return {\n containsHeader: isBitSet(flags, 31),\n containsFooter: isBitSet(flags, 30),\n isHeader: isBitSet(flags, 31),\n readOnly: isBitSet(flags, 0),\n dataType: (flags & 6) >> 1\n };\n}\nexports.parseTagFlags = parseTagFlags;\n/**\n * @param num {number}\n * @param bit 0 is least significant bit (LSB)\n * @return {boolean} true if bit is 1; otherwise false\n */\nfunction isBitSet(num, bit) {\n return (num & 1 << bit) !== 0;\n}\nexports.isBitSet = isBitSet;\n//# sourceMappingURL=APEv2Token.js.map","'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst GUID_1 = require(\"./GUID\");\nconst AsfObject = require(\"./AsfObject\");\nconst _debug = require(\"debug\");\nconst BasicParser_1 = require(\"../common/BasicParser\");\nconst debug = _debug('music-metadata:parser:ASF');\nconst headerType = 'asf';\n/**\n * Windows Media Metadata Usage Guidelines\n * Ref: https://msdn.microsoft.com/en-us/library/ms867702.aspx\n *\n * Ref:\n * https://tools.ietf.org/html/draft-fleischman-asf-01\n * https://hwiegman.home.xs4all.nl/fileformats/asf/ASF_Specification.pdf\n * http://drang.s4.xrea.com/program/tips/id3tag/wmp/index.html\n * https://msdn.microsoft.com/en-us/library/windows/desktop/ee663575(v=vs.85).aspx\n */\nclass AsfParser extends BasicParser_1.BasicParser {\n parse() {\n return __awaiter(this, void 0, void 0, function* () {\n const header = yield this.tokenizer.readToken(AsfObject.TopLevelHeaderObjectToken);\n if (!header.objectId.equals(GUID_1.default.HeaderObject)) {\n throw new Error('expected asf header; but was not found; got: ' + header.objectId.str);\n }\n try {\n yield this.parseObjectHeader(header.numberOfHeaderObjects);\n }\n catch (err) {\n debug('Error while parsing ASF: %s', err);\n }\n });\n }\n parseObjectHeader(numberOfObjectHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n let tags;\n do {\n // Parse common header of the ASF Object (3.1)\n const header = yield this.tokenizer.readToken(AsfObject.HeaderObjectToken);\n // Parse data part of the ASF Object\n debug('header GUID=%s', header.objectId.str);\n switch (header.objectId.str) {\n case AsfObject.FilePropertiesObject.guid.str: // 3.2\n const fpo = yield this.tokenizer.readToken(new AsfObject.FilePropertiesObject(header));\n this.metadata.setFormat('duration', fpo.playDuration / 10000000);\n this.metadata.setFormat('bitrate', fpo.maximumBitrate);\n break;\n case AsfObject.StreamPropertiesObject.guid.str: // 3.3\n const spo = yield this.tokenizer.readToken(new AsfObject.StreamPropertiesObject(header));\n this.metadata.setFormat('dataformat', 'ASF/' + spo.streamType);\n break;\n case AsfObject.HeaderExtensionObject.guid.str: // 3.4\n const extHeader = yield this.tokenizer.readToken(new AsfObject.HeaderExtensionObject());\n yield this.parseExtensionObject(extHeader.extensionDataSize);\n break;\n case AsfObject.ContentDescriptionObjectState.guid.str: // 3.10\n tags = yield this.tokenizer.readToken(new AsfObject.ContentDescriptionObjectState(header));\n this.addTags(tags);\n break;\n case AsfObject.ExtendedContentDescriptionObjectState.guid.str: // 3.11\n tags = yield this.tokenizer.readToken(new AsfObject.ExtendedContentDescriptionObjectState(header));\n this.addTags(tags);\n break;\n case GUID_1.default.CodecListObject.str:\n // ToDo?\n yield this.tokenizer.ignore(header.objectSize - AsfObject.HeaderObjectToken.len);\n break;\n case GUID_1.default.StreamBitratePropertiesObject.str:\n // ToDo?\n yield this.tokenizer.ignore(header.objectSize - AsfObject.HeaderObjectToken.len);\n break;\n case GUID_1.default.PaddingObject.str:\n // ToDo: register bytes pad\n debug('Padding: %s bytes', header.objectSize - AsfObject.HeaderObjectToken.len);\n yield this.tokenizer.ignore(header.objectSize - AsfObject.HeaderObjectToken.len);\n break;\n default:\n this.warnings.push('Ignore ASF-Object-GUID: ' + header.objectId.str);\n debug('Ignore ASF-Object-GUID: %s', header.objectId.str);\n yield this.tokenizer.readToken(new AsfObject.IgnoreObjectState(header));\n }\n } while (--numberOfObjectHeaders);\n // done\n });\n }\n addTags(tags) {\n tags.forEach(tag => {\n this.metadata.addTag(headerType, tag.id, tag.value);\n });\n }\n parseExtensionObject(extensionSize) {\n return __awaiter(this, void 0, void 0, function* () {\n do {\n // Parse common header of the ASF Object (3.1)\n const header = yield this.tokenizer.readToken(AsfObject.HeaderObjectToken);\n // Parse data part of the ASF Object\n switch (header.objectId.str) {\n case AsfObject.ExtendedStreamPropertiesObjectState.guid.str: // 4.1\n const cd = yield this.tokenizer.readToken(new AsfObject.ExtendedStreamPropertiesObjectState(header));\n break;\n case AsfObject.MetadataObjectState.guid.str: // 4.7\n const moTags = yield this.tokenizer.readToken(new AsfObject.MetadataObjectState(header));\n this.addTags(moTags);\n break;\n case AsfObject.MetadataLibraryObjectState.guid.str: // 4.8\n const mlTags = yield this.tokenizer.readToken(new AsfObject.MetadataLibraryObjectState(header));\n this.addTags(mlTags);\n break;\n case GUID_1.default.PaddingObject.str:\n // ToDo: register bytes pad\n yield this.tokenizer.ignore(header.objectSize - AsfObject.HeaderObjectToken.len);\n break;\n case GUID_1.default.CompatibilityObject.str:\n this.tokenizer.ignore(header.objectSize - AsfObject.HeaderObjectToken.len);\n break;\n case GUID_1.default.ASF_Index_Placeholder_Object.str:\n yield this.tokenizer.ignore(header.objectSize - AsfObject.HeaderObjectToken.len);\n break;\n default:\n this.warnings.push('Ignore ASF-Object-GUID: ' + header.objectId.str);\n // console.log(\"Ignore ASF-Object-GUID: %s\", header.objectId.str);\n yield this.tokenizer.readToken(new AsfObject.IgnoreObjectState(header));\n break;\n }\n extensionSize -= header.objectSize;\n } while (extensionSize > 0);\n });\n }\n}\nexports.AsfParser = AsfParser;\n//# sourceMappingURL=AsfParser.js.map","// ASF Objects\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Util_1 = require(\"../common/Util\");\nconst Token = require(\"token-types\");\nconst GUID_1 = require(\"./GUID\");\nconst AsfUtil_1 = require(\"./AsfUtil\");\nconst ID3v2_1 = require(\"../id3v2/ID3v2\");\n/**\n * Data Type: Specifies the type of information being stored. The following values are recognized.\n */\nvar DataType;\n(function (DataType) {\n /**\n * Unicode string. The data consists of a sequence of Unicode characters.\n */\n DataType[DataType[\"UnicodeString\"] = 0] = \"UnicodeString\";\n /**\n * BYTE array. The type of data is implementation-specific.\n */\n DataType[DataType[\"ByteArray\"] = 1] = \"ByteArray\";\n /**\n * BOOL. The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer. Only 0x0000 or 0x0001 are permitted values.\n */\n DataType[DataType[\"Bool\"] = 2] = \"Bool\";\n /**\n * DWORD. The data is 4 bytes long and should be interpreted as a 32-bit unsigned integer.\n */\n DataType[DataType[\"DWord\"] = 3] = \"DWord\";\n /**\n * QWORD. The data is 8 bytes long and should be interpreted as a 64-bit unsigned integer.\n */\n DataType[DataType[\"QWord\"] = 4] = \"QWord\";\n /**\n * WORD. The data is 2 bytes long and should be interpreted as a 16-bit unsigned integer.\n */\n DataType[DataType[\"Word\"] = 5] = \"Word\";\n})(DataType = exports.DataType || (exports.DataType = {}));\n/**\n * Token for: 3. ASF top-level Header Object\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3\n */\nexports.TopLevelHeaderObjectToken = {\n len: 30,\n get: (buf, off) => {\n return {\n objectId: GUID_1.default.fromBin(new Token.BufferType(16).get(buf, off)),\n objectSize: Token.UINT64_LE.get(buf, off + 16),\n numberOfHeaderObjects: Token.UINT32_LE.get(buf, off + 24)\n // Reserved: 2 bytes\n };\n }\n};\n/**\n * Token for: 3.1 Header Object (mandatory, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_1\n */\nexports.HeaderObjectToken = {\n len: 24,\n get: (buf, off) => {\n return {\n objectId: GUID_1.default.fromBin(new Token.BufferType(16).get(buf, off)),\n objectSize: Token.UINT64_LE.get(buf, off + 16)\n };\n }\n};\nclass State {\n constructor(header) {\n this.len = header.objectSize - exports.HeaderObjectToken.len;\n }\n postProcessTag(tags, name, valueType, data) {\n if (name === \"WM/Picture\") {\n tags.push({ id: name, value: WmPictureToken.fromBuffer(data) });\n }\n else {\n const parseAttr = AsfUtil_1.AsfUtil.getParserForAttr(valueType);\n if (!parseAttr) {\n throw new Error(\"unexpected value headerType: \" + valueType);\n }\n tags.push({ id: name, value: parseAttr(data) });\n }\n }\n}\nexports.State = State;\n// ToDo: use ignore type\nclass IgnoreObjectState extends State {\n constructor(header) {\n super(header);\n }\n get(buf, off) {\n return null;\n }\n}\nexports.IgnoreObjectState = IgnoreObjectState;\n/**\n * Token for: 3.2: File Properties Object (mandatory, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_2\n */\nclass FilePropertiesObject extends State {\n constructor(header) {\n super(header);\n }\n get(buf, off) {\n return {\n fileId: GUID_1.default.fromBin(buf, off),\n fileSize: Token.UINT64_LE.get(buf, off + 16),\n creationDate: Token.UINT64_LE.get(buf, off + 24),\n dataPacketsCount: Token.UINT64_LE.get(buf, off + 32),\n playDuration: Token.UINT64_LE.get(buf, off + 40),\n sendDuration: Token.UINT64_LE.get(buf, off + 48),\n preroll: Token.UINT64_LE.get(buf, off + 56),\n flags: {\n broadcast: Util_1.default.strtokBITSET.get(buf, off + 64, 24),\n seekable: Util_1.default.strtokBITSET.get(buf, off + 64, 25)\n },\n // flagsNumeric: Token.UINT32_LE.get(buf, off + 64),\n minimumDataPacketSize: Token.UINT32_LE.get(buf, off + 68),\n maximumDataPacketSize: Token.UINT32_LE.get(buf, off + 72),\n maximumBitrate: Token.UINT32_LE.get(buf, off + 76)\n };\n }\n}\nFilePropertiesObject.guid = GUID_1.default.FilePropertiesObject;\nexports.FilePropertiesObject = FilePropertiesObject;\n/**\n * Token for: 3.3 Stream Properties Object (mandatory, one per stream)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_3\n */\nclass StreamPropertiesObject extends State {\n constructor(header) {\n super(header);\n }\n get(buf, off) {\n return {\n streamType: GUID_1.default.decodeMediaType(GUID_1.default.fromBin(buf, off)),\n errorCorrectionType: GUID_1.default.fromBin(buf, off + 8)\n // ToDo\n };\n }\n}\nStreamPropertiesObject.guid = GUID_1.default.StreamPropertiesObject;\nexports.StreamPropertiesObject = StreamPropertiesObject;\n/**\n * 3.4: Header Extension Object (mandatory, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_4\n */\nclass HeaderExtensionObject {\n constructor() {\n this.len = 22;\n }\n get(buf, off) {\n const dataSize = buf.readUInt32LE(off + 18);\n return {\n reserved1: GUID_1.default.fromBin(buf, off),\n reserved2: buf.readUInt16LE(off + 16),\n extensionDataSize: buf.readUInt32LE(off + 18)\n };\n }\n}\nHeaderExtensionObject.guid = GUID_1.default.HeaderExtensionObject;\nexports.HeaderExtensionObject = HeaderExtensionObject;\n/**\n * 3.10 Content Description Object (optional, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_10\n */\nclass ContentDescriptionObjectState extends State {\n constructor(header) {\n super(header);\n }\n get(buf, off) {\n const tags = [];\n let pos = off + 10;\n for (let i = 0; i < ContentDescriptionObjectState.contentDescTags.length; ++i) {\n const length = buf.readUInt16LE(off + i * 2);\n if (length > 0) {\n const tagName = ContentDescriptionObjectState.contentDescTags[i];\n const end = pos + length;\n tags.push({ id: tagName, value: AsfUtil_1.AsfUtil.parseUnicodeAttr(buf.slice(pos, end)) });\n pos = end;\n }\n }\n return tags;\n }\n}\nContentDescriptionObjectState.guid = GUID_1.default.ContentDescriptionObject;\nContentDescriptionObjectState.contentDescTags = [\"Title\", \"Author\", \"Copyright\", \"Description\", \"Rating\"];\nexports.ContentDescriptionObjectState = ContentDescriptionObjectState;\n/**\n * 3.11 Extended Content Description Object (optional, one only)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/03_asf_top_level_header_object.html#3_11\n */\nclass ExtendedContentDescriptionObjectState extends State {\n constructor(header) {\n super(header);\n }\n get(buf, off) {\n const tags = [];\n const attrCount = buf.readUInt16LE(off);\n let pos = off + 2;\n for (let i = 0; i < attrCount; i += 1) {\n const nameLen = buf.readUInt16LE(pos);\n pos += 2;\n const name = AsfUtil_1.AsfUtil.parseUnicodeAttr(buf.slice(pos, pos + nameLen));\n pos += nameLen;\n const valueType = buf.readUInt16LE(pos);\n pos += 2;\n const valueLen = buf.readUInt16LE(pos);\n pos += 2;\n const value = buf.slice(pos, pos + valueLen);\n pos += valueLen;\n this.postProcessTag(tags, name, valueType, value);\n }\n return tags;\n }\n}\nExtendedContentDescriptionObjectState.guid = GUID_1.default.ExtendedContentDescriptionObject;\nexports.ExtendedContentDescriptionObjectState = ExtendedContentDescriptionObjectState;\n/**\n * 4.1 Extended Stream Properties Object (optional, 1 per media stream)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/04_objects_in_the_asf_header_extension_object.html#4_1\n */\nclass ExtendedStreamPropertiesObjectState extends State {\n constructor(header) {\n super(header);\n }\n get(buf, off) {\n return {\n startTime: Token.UINT64_LE.get(buf, off),\n endTime: Token.UINT64_LE.get(buf, off + 8),\n dataBitrate: buf.readInt32LE(off + 12),\n bufferSize: buf.readInt32LE(off + 16),\n initialBufferFullness: buf.readInt32LE(off + 20),\n alternateDataBitrate: buf.readInt32LE(off + 24),\n alternateBufferSize: buf.readInt32LE(off + 28),\n alternateInitialBufferFullness: buf.readInt32LE(off + 32),\n maximumObjectSize: buf.readInt32LE(off + 36),\n flags: {\n reliableFlag: Util_1.default.strtokBITSET.get(buf, off + 40, 0),\n seekableFlag: Util_1.default.strtokBITSET.get(buf, off + 40, 1),\n resendLiveCleanpointsFlag: Util_1.default.strtokBITSET.get(buf, off + 40, 2)\n },\n // flagsNumeric: Token.UINT32_LE.get(buf, off + 64),\n streamNumber: buf.readInt16LE(off + 42),\n streamLanguageId: buf.readInt16LE(off + 44),\n averageTimePerFrame: buf.readInt32LE(off + 52),\n streamNameCount: buf.readInt32LE(off + 54),\n payloadExtensionSystems: buf.readInt32LE(off + 56),\n streamNames: [],\n streamPropertiesObject: null\n };\n }\n}\nExtendedStreamPropertiesObjectState.guid = GUID_1.default.ExtendedStreamPropertiesObject;\nexports.ExtendedStreamPropertiesObjectState = ExtendedStreamPropertiesObjectState;\n/**\n * 4.7 Metadata Object (optional, 0 or 1)\n * Ref: http://drang.s4.xrea.com/program/tips/id3tag/wmp/04_objects_in_the_asf_header_extension_object.html#4_7\n */\nclass MetadataObjectState extends State {\n constructor(header) {\n super(header);\n }\n get(buf, off) {\n const tags = [];\n const descriptionRecordsCount = buf.readUInt16LE(off);\n let pos = off + 2;\n for (let i = 0; i < descriptionRecordsCount; i += 1) {\n pos += 4;\n const nameLen = buf.readUInt16LE(pos);\n pos += 2;\n const dataType = buf.readUInt16LE(pos);\n pos += 2;\n const dataLen = buf.readUInt32LE(pos);\n pos += 4;\n const name = AsfUtil_1.AsfUtil.parseUnicodeAttr(buf.slice(pos, pos + nameLen));\n pos += nameLen;\n const data = buf.slice(pos, pos + dataLen);\n pos += dataLen;\n const parseAttr = AsfUtil_1.AsfUtil.getParserForAttr(dataType);\n if (!parseAttr) {\n throw new Error(\"unexpected value headerType: \" + dataType);\n }\n this.postProcessTag(tags, name, dataType, data);\n }\n return tags;\n }\n}\nMetadataObjectState.guid = GUID_1.default.MetadataObject;\nexports.MetadataObjectState = MetadataObjectState;\n// 4.8\tMetadata Library Object (optional, 0 or 1)\nclass MetadataLibraryObjectState extends MetadataObjectState {\n constructor(header) {\n super(header);\n }\n}\nMetadataLibraryObjectState.guid = GUID_1.default.MetadataLibraryObject;\nexports.MetadataLibraryObjectState = MetadataLibraryObjectState;\n/**\n * Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd757977(v=vs.85).aspx\n */\nclass WmPictureToken {\n constructor(len) {\n this.len = len;\n }\n static fromBase64(base64str) {\n return this.fromBuffer(Buffer.from(base64str, \"base64\"));\n }\n static fromBuffer(buffer) {\n const pic = new WmPictureToken(buffer.length);\n return pic.get(buffer, 0);\n }\n get(buffer, offset) {\n const typeId = buffer.readUInt8(offset++);\n const size = buffer.readInt32LE(offset);\n let index = 5;\n while (buffer.readUInt16BE(index) !== 0) {\n index += 2;\n }\n const format = buffer.slice(5, index).toString(\"utf16le\");\n while (buffer.readUInt16BE(index) !== 0) {\n index += 2;\n }\n const description = buffer.slice(5, index).toString(\"utf16le\");\n return {\n type: ID3v2_1.AttachedPictureType[typeId],\n format,\n description,\n size,\n data: buffer.slice(index + 4)\n };\n }\n}\nexports.WmPictureToken = WmPictureToken;\n//# sourceMappingURL=AsfObject.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Util_1 = require(\"../common/Util\");\nconst Token = require(\"token-types\");\nclass AsfUtil {\n static getParserForAttr(i) {\n return AsfUtil.attributeParsers[i];\n }\n static parseUnicodeAttr(buf) {\n return Util_1.default.stripNulls(Util_1.default.decodeString(buf, \"utf16le\"));\n }\n static parseByteArrayAttr(buf) {\n const newBuf = Buffer.alloc(buf.length);\n buf.copy(newBuf);\n return newBuf;\n }\n static parseBoolAttr(buf, offset = 0) {\n return AsfUtil.parseWordAttr(buf, offset) === 1;\n }\n static parseDWordAttr(buf, offset = 0) {\n return buf.readUInt32LE(offset);\n }\n static parseQWordAttr(buf, offset = 0) {\n return Token.UINT64_LE.get(buf, offset);\n }\n static parseWordAttr(buf, offset = 0) {\n return buf.readUInt16LE(offset);\n }\n}\nAsfUtil.attributeParsers = [\n AsfUtil.parseUnicodeAttr,\n AsfUtil.parseByteArrayAttr,\n AsfUtil.parseBoolAttr,\n AsfUtil.parseDWordAttr,\n AsfUtil.parseQWordAttr,\n AsfUtil.parseWordAttr,\n AsfUtil.parseByteArrayAttr\n];\nexports.AsfUtil = AsfUtil;\n//# sourceMappingURL=AsfUtil.js.map","'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Util_1 = require(\"../common/Util\");\nconst Token = require(\"token-types\");\nconst Vorbis_1 = require(\"../ogg/vorbis/Vorbis\");\nconst AbstractID3Parser_1 = require(\"../id3v2/AbstractID3Parser\");\nconst FourCC_1 = require(\"../common/FourCC\");\nconst _debug = require(\"debug\");\nconst debug = _debug('music-metadata:parser:FLAC');\n/**\n * FLAC supports up to 128 kinds of metadata blocks; currently the following are defined:\n * ref: https://xiph.org/flac/format.html#metadata_block\n */\nvar BlockType;\n(function (BlockType) {\n BlockType[BlockType[\"STREAMINFO\"] = 0] = \"STREAMINFO\";\n BlockType[BlockType[\"PADDING\"] = 1] = \"PADDING\";\n BlockType[BlockType[\"APPLICATION\"] = 2] = \"APPLICATION\";\n BlockType[BlockType[\"SEEKTABLE\"] = 3] = \"SEEKTABLE\";\n BlockType[BlockType[\"VORBIS_COMMENT\"] = 4] = \"VORBIS_COMMENT\";\n BlockType[BlockType[\"CUESHEET\"] = 5] = \"CUESHEET\";\n BlockType[BlockType[\"PICTURE\"] = 6] = \"PICTURE\";\n})(BlockType || (BlockType = {}));\nclass FlacParser extends AbstractID3Parser_1.AbstractID3Parser {\n constructor() {\n super(...arguments);\n this.padding = 0;\n }\n static getInstance() {\n return new FlacParser();\n }\n _parse() {\n return __awaiter(this, void 0, void 0, function* () {\n const fourCC = yield this.tokenizer.readToken(FourCC_1.FourCcToken);\n if (fourCC.toString() !== 'fLaC') {\n throw new Error('Invalid FLAC preamble');\n }\n let blockHeader;\n do {\n // Read block header\n blockHeader = yield this.tokenizer.readToken(Metadata.BlockHeader);\n // Parse block data\n yield this.parseDataBlock(blockHeader);\n } while (!blockHeader.lastBlock);\n if (this.tokenizer.fileSize && this.metadata.format.duration) {\n const dataSize = this.tokenizer.fileSize - this.tokenizer.position;\n this.metadata.setFormat('bitrate', 8 * dataSize / this.metadata.format.duration);\n }\n });\n }\n addTag(id, value) {\n this.metadata.addTag('vorbis', id, value);\n }\n parseDataBlock(blockHeader) {\n debug(`blockHeader type=${blockHeader.type}, length=${blockHeader.length}`);\n switch (blockHeader.type) {\n case BlockType.STREAMINFO:\n return this.parseBlockStreamInfo(blockHeader.length);\n case BlockType.PADDING:\n this.padding += blockHeader.length;\n break;\n case BlockType.APPLICATION:\n break;\n case BlockType.SEEKTABLE:\n break;\n case BlockType.VORBIS_COMMENT:\n return this.parseComment(blockHeader.length);\n case BlockType.CUESHEET:\n break;\n case BlockType.PICTURE:\n return this.parsePicture(blockHeader.length);\n default:\n this.warnings.push('Unknown block type: ' + blockHeader.type);\n }\n // Ignore data block\n return this.tokenizer.readToken(new Token.IgnoreType(blockHeader.length));\n }\n /**\n * Parse STREAMINFO\n */\n parseBlockStreamInfo(dataLen) {\n return __awaiter(this, void 0, void 0, function* () {\n if (dataLen !== Metadata.BlockStreamInfo.len)\n throw new Error('Unexpected block-stream-info length');\n const streamInfo = yield this.tokenizer.readToken(Metadata.BlockStreamInfo);\n this.metadata.setFormat('dataformat', 'flac');\n this.metadata.setFormat('lossless', true);\n this.metadata.setFormat('numberOfChannels', streamInfo.channels);\n this.metadata.setFormat('bitsPerSample', streamInfo.bitsPerSample);\n this.metadata.setFormat('sampleRate', streamInfo.sampleRate);\n this.metadata.setFormat('duration', streamInfo.totalSamples / streamInfo.sampleRate);\n });\n }\n /**\n * Parse VORBIS_COMMENT\n * Ref: https://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-640004.2.3\n */\n parseComment(dataLen) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = yield this.tokenizer.readToken(new Token.BufferType(dataLen));\n const decoder = new DataDecoder(data);\n decoder.readStringUtf8(); // vendor (skip)\n const commentListLength = decoder.readInt32();\n for (let i = 0; i < commentListLength; i++) {\n const comment = decoder.readStringUtf8();\n const split = comment.split('=');\n this.addTag(split[0].toUpperCase(), split.splice(1).join('='));\n }\n });\n }\n parsePicture(dataLen) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.options.skipCovers) {\n return this.tokenizer.ignore(dataLen);\n }\n else {\n const picture = yield this.tokenizer.readToken(new Vorbis_1.VorbisPictureToken(dataLen));\n this.addTag('METADATA_BLOCK_PICTURE', picture);\n }\n });\n }\n}\nexports.FlacParser = FlacParser;\nclass Metadata {\n}\nMetadata.BlockHeader = {\n len: 4,\n get: (buf, off) => {\n return {\n lastBlock: Util_1.default.strtokBITSET.get(buf, off, 7),\n type: Util_1.default.getBitAllignedNumber(buf, off, 1, 7),\n length: Token.UINT24_BE.get(buf, off + 1)\n };\n }\n};\n/**\n * METADATA_BLOCK_DATA\n * Ref: https://xiph.org/flac/format.html#metadata_block_streaminfo\n */\nMetadata.BlockStreamInfo = {\n len: 34,\n get: (buf, off) => {\n return {\n // The minimum block size (in samples) used in the stream.\n minimumBlockSize: Token.UINT16_BE.get(buf, off),\n // The maximum block size (in samples) used in the stream.\n // (Minimum blocksize == maximum blocksize) implies a fixed-blocksize stream.\n maximumBlockSize: Token.UINT16_BE.get(buf, off + 2) / 1000,\n // The minimum frame size (in bytes) used in the stream.\n // May be 0 to imply the value is not known.\n minimumFrameSize: Token.UINT24_BE.get(buf, off + 4),\n // The maximum frame size (in bytes) used in the stream.\n // May be 0 to imply the value is not known.\n maximumFrameSize: Token.UINT24_BE.get(buf, off + 7),\n // Sample rate in Hz. Though 20 bits are available,\n // the maximum sample rate is limited by the structure of frame headers to 655350Hz.\n // Also, a value of 0 is invalid.\n sampleRate: Token.UINT24_BE.get(buf, off + 10) >> 4,\n // probably slower: sampleRate: common.getBitAllignedNumber(buf, off + 10, 0, 20),\n // (number of channels)-1. FLAC supports from 1 to 8 channels\n channels: Util_1.default.getBitAllignedNumber(buf, off + 12, 4, 3) + 1,\n // bits per sample)-1.\n // FLAC supports from 4 to 32 bits per sample. Currently the reference encoder and decoders only support up to 24 bits per sample.\n bitsPerSample: Util_1.default.getBitAllignedNumber(buf, off + 12, 7, 5) + 1,\n // Total samples in stream.\n // 'Samples' means inter-channel sample, i.e. one second of 44.1Khz audio will have 44100 samples regardless of the number of channels.\n // A value of zero here means the number of total samples is unknown.\n totalSamples: Util_1.default.getBitAllignedNumber(buf, off + 13, 4, 36),\n // the MD5 hash of the file (see notes for usage... it's a littly tricky)\n fileMD5: new Token.BufferType(16).get(buf, off + 18)\n };\n }\n};\nclass DataDecoder {\n constructor(data) {\n this.data = data;\n this.offset = 0;\n }\n readInt32() {\n const value = Token.UINT32_LE.get(this.data, this.offset);\n this.offset += 4;\n return value;\n }\n readStringUtf8() {\n const len = this.readInt32();\n const value = this.data.toString('utf8', this.offset, this.offset + len);\n this.offset += len;\n return value;\n }\n}\n//# sourceMappingURL=FlacParser.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst initDebug = require(\"debug\");\nconst Token = require(\"token-types\");\nconst BasicParser_1 = require(\"../common/BasicParser\");\nconst Atom_1 = require(\"./Atom\");\nconst AtomToken = require(\"./AtomToken\");\nconst ID3v1Parser_1 = require(\"../id3v1/ID3v1Parser\");\nconst debug = initDebug('music-metadata:parser:MP4');\nconst tagFormat = 'iTunes';\nconst encoderDict = {\n alac: {\n lossy: false,\n format: 'ALAC'\n },\n mp4a: {\n lossy: true,\n format: 'MP4A'\n },\n mp4s: {\n lossy: true,\n format: 'MP4S'\n },\n // Closed Captioning Media, https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFChap3/qtff3.html#//apple_ref/doc/uid/TP40000939-CH205-SW87\n c608: {\n lossy: true,\n format: 'CEA-608'\n },\n c708: {\n lossy: true,\n format: 'CEA-708'\n }\n};\nfunction distinct(value, index, self) {\n return self.indexOf(value) === index;\n}\n/*\n * Parser for ISO base media file format (ISO/IEC 14496-12 MPEG-4 Part 12), supporting:\n * - QuickTime container\n * - MP4 File Format\n * - 3GPP file format\n * - 3GPP2 file format\n *\n * MPEG-4 Audio / Part 3 (.m4a)& MPEG 4 Video (m4v, mp4) extension.\n * Support for Apple iTunes tags as found in a M4A/M4V files.\n * Ref:\n * https://en.wikipedia.org/wiki/ISO_base_media_file_format\n * https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/Metadata/Metadata.html\n * http://atomicparsley.sourceforge.net/mpeg-4files.html\n * https://github.com/sergiomb2/libmp4v2/wiki/iTunesMetadata\n * https://wiki.multimedia.cx/index.php/QuickTime_container\n */\nclass MP4Parser extends BasicParser_1.BasicParser {\n static read_BE_Signed_Integer(value) {\n return Token.readIntBE(value, 0, value.length);\n }\n static read_BE_Unsigned_Integer(value) {\n return Token.readUIntBE(value, 0, value.length);\n }\n parse() {\n return __awaiter(this, void 0, void 0, function* () {\n this.formatList = [];\n const rootAtom = new Atom_1.Atom({ name: 'mp4', length: this.tokenizer.fileSize }, false, null);\n yield rootAtom.readAtoms(this.tokenizer, (atom) => __awaiter(this, void 0, void 0, function* () {\n if (atom.parent) {\n switch (atom.parent.header.name) {\n case 'ilst':\n case '<id>':\n return this.parseMetadataItemData(atom);\n case 'stbl': // The Sample Table Atom\n switch (atom.header.name) {\n case 'stsd': // sample descriptions\n return this.parseAtom_stsd(atom.dataLen);\n }\n }\n }\n switch (atom.header.name) {\n case \"ftyp\":\n const types = yield this.parseAtom_ftyp(atom.dataLen);\n debug(`ftyp: ${types.join('/')}`);\n this.metadata.setFormat('dataformat', types.filter(distinct).join('/'));\n return;\n case 'mdhd': // Media header atom\n return this.parseAtom_mdhd(atom);\n case 'mvhd': // 'movie' => 'mvhd': movie header atom; child of Movie Atom\n return this.parseAtom_mvhd(atom);\n case 'mdat': // media data atom:\n if (this.tokenizer.fileSize && this.metadata.format.duration) {\n this.metadata.setFormat('bitrate', 8 * atom.dataLen / this.metadata.format.duration);\n }\n break;\n }\n yield this.tokenizer.readToken(new Token.IgnoreType(atom.dataLen));\n debug(`Ignore atom data: path=${atom.atomPath}, payload-len=${atom.dataLen}`);\n }), this.tokenizer.fileSize);\n this.metadata.setFormat('encoder', this.formatList.filter(distinct).join('+'));\n });\n }\n addTag(id, value) {\n this.metadata.addTag(tagFormat, id, value);\n }\n addWarning(message) {\n debug('Warning:' + message);\n this.warnings.push(message);\n }\n /**\n * Parse data of Meta-item-list-atom (item of 'ilst' atom)\n * @param metaAtom\n * Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW8\n */\n parseMetadataItemData(metaAtom) {\n let tagKey = metaAtom.header.name;\n return metaAtom.readAtoms(this.tokenizer, (child) => __awaiter(this, void 0, void 0, function* () {\n switch (child.header.name) {\n case \"data\": // value atom\n return this.parseValueAtom(tagKey, child);\n case \"name\": // name atom (optional)\n const name = yield this.tokenizer.readToken(new AtomToken.NameAtom(child.dataLen));\n tagKey += \":\" + name.name;\n break;\n case \"mean\": // name atom (optional)\n const mean = yield this.tokenizer.readToken(new AtomToken.NameAtom(child.dataLen));\n // console.log(\" %s[%s] = %s\", tagKey, header.name, mean.name);\n tagKey += \":\" + mean.name;\n break;\n default:\n const dataAtom = yield this.tokenizer.readToken(new Token.BufferType(child.dataLen));\n this.addWarning(\"Unsupported meta-item: \" + tagKey + \"[\" + child.header.name + \"] => value=\" + dataAtom.toString(\"hex\") + \" ascii=\" + dataAtom.toString(\"ascii\"));\n }\n }), metaAtom.dataLen);\n }\n parseValueAtom(tagKey, metaAtom) {\n return __awaiter(this, void 0, void 0, function* () {\n const dataAtom = yield this.tokenizer.readToken(new AtomToken.DataAtom(metaAtom.header.length - AtomToken.Header.len));\n if (dataAtom.type.set !== 0) {\n throw new Error(\"Unsupported type-set != 0: \" + dataAtom.type.set);\n }\n // Use well-known-type table\n // Ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW35\n switch (dataAtom.type.type) {\n case 0: // reserved: Reserved for use where no type needs to be indicated\n switch (tagKey) {\n case \"trkn\":\n case \"disk\":\n const num = Token.UINT8.get(dataAtom.value, 3);\n const of = Token.UINT8.get(dataAtom.value, 5);\n // console.log(\" %s[data] = %s/%s\", tagKey, num, of);\n this.addTag(tagKey, num + \"/\" + of);\n break;\n case \"gnre\":\n const genreInt = Token.UINT8.get(dataAtom.value, 1);\n const genreStr = ID3v1Parser_1.Genres[genreInt - 1];\n // console.log(\" %s[data] = %s\", tagKey, genreStr);\n this.addTag(tagKey, genreStr);\n break;\n default:\n // console.log(\" reserved-data: name=%s, len=%s, set=%s, type=%s, locale=%s, value{ hex=%s, ascii=%s }\",\n // header.name, header.length, dataAtom.type.set, dataAtom.type.type, dataAtom.locale, dataAtom.value.toString('hex'), dataAtom.value.toString('ascii'));\n }\n break;\n case 1: // UTF-8: Without any count or NULL terminator\n case 18: // Unknown: Found in m4b in combination with a '©gen' tag\n this.addTag(tagKey, dataAtom.value.toString(\"utf-8\"));\n break;\n case 13: // JPEG\n if (this.options.skipCovers)\n break;\n this.addTag(tagKey, {\n format: \"image/jpeg\",\n data: Buffer.from(dataAtom.value)\n });\n break;\n case 14: // PNG\n if (this.options.skipCovers)\n break;\n this.addTag(tagKey, {\n format: \"image/png\",\n data: Buffer.from(dataAtom.value)\n });\n break;\n case 21: // BE Signed Integer\n this.addTag(tagKey, MP4Parser.read_BE_Signed_Integer(dataAtom.value));\n break;\n case 22: // BE Unsigned Integer\n this.addTag(tagKey, MP4Parser.read_BE_Unsigned_Integer(dataAtom.value));\n break;\n case 65: // An 8-bit signed integer\n this.addTag(tagKey, dataAtom.value.readInt8(0));\n break;\n case 66: // A big-endian 16-bit signed integer\n this.addTag(tagKey, dataAtom.value.readInt16BE(0));\n break;\n case 67: // A big-endian 32-bit signed integer\n this.addTag(tagKey, dataAtom.value.readInt32BE(0));\n break;\n default:\n this.addWarning(`atom key=${tagKey}, has unknown well-known-type (data-type): ${dataAtom.type.type}`);\n }\n });\n }\n /**\n * Parse movie header (mvhd) atom\n * @param mvhd mvhd atom\n */\n parseAtom_mvhd(mvhd) {\n return __awaiter(this, void 0, void 0, function* () {\n const mvhd_data = yield this.tokenizer.readToken(new AtomToken.MvhdAtom(mvhd.dataLen));\n this.parse_mxhd(mvhd_data);\n });\n }\n /**\n * Parse media header (mdhd) atom\n * @param mdhd mdhd atom\n */\n parseAtom_mdhd(mdhd) {\n return __awaiter(this, void 0, void 0, function* () {\n const mdhd_data = yield this.tokenizer.readToken(new AtomToken.MdhdAtom(mdhd.dataLen));\n this.parse_mxhd(mdhd_data);\n });\n }\n parse_mxhd(mxhd) {\n if (mxhd.timeScale) {\n this.metadata.setFormat('sampleRate', mxhd.timeScale);\n if (!this.metadata.format.duration) {\n const duration = (mxhd.duration / mxhd.timeScale);\n this.metadata.setFormat('duration', duration); // calculate duration in seconds\n }\n }\n }\n parseAtom_ftyp(len) {\n return __awaiter(this, void 0, void 0, function* () {\n const ftype = yield this.tokenizer.readToken(AtomToken.ftyp);\n len -= AtomToken.ftyp.len;\n if (len > 0) {\n const types = yield this.parseAtom_ftyp(len);\n const value = ftype.type.replace(/\\W/g, '');\n if (value.length > 0) {\n types.push(value);\n }\n return types;\n }\n return [];\n });\n }\n parseAtom_stsd(len) {\n return __awaiter(this, void 0, void 0, function* () {\n const stsd = yield this.tokenizer.readToken(new AtomToken.StsdAtom(len));\n const formatList = [];\n for (const dfEntry of stsd.table) {\n const encoderInfo = encoderDict[dfEntry.dataFormat];\n if (encoderInfo) {\n this.metadata.setFormat('lossless', !encoderInfo.lossy);\n formatList.push(encoderInfo.format);\n }\n else {\n debug(`Warning: data-format '${dfEntry.dataFormat}' missing in MP4Parser.encoderDict`);\n formatList.push(dfEntry.dataFormat);\n }\n }\n this.formatList.push(formatList.join('/'));\n });\n }\n}\nexports.MP4Parser = MP4Parser;\n//# sourceMappingURL=MP4Parser.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst type_1 = require(\"strtok3/lib/type\");\nconst initDebug = require(\"debug\");\nconst Token = require(\"token-types\");\nconst AtomToken = require(\"./AtomToken\");\nconst debug = initDebug(\"music-metadata:parser:MP4:Atom\");\nclass Atom {\n constructor(header, extended, parent) {\n this.header = header;\n this.extended = extended;\n this.parent = parent;\n this.children = [];\n this.atomPath = (this.parent ? this.parent.atomPath + '/' : '') + this.header.name;\n this.dataLen = this.header.length - (extended ? 16 : 8);\n }\n readAtoms(tokenizer, dataHandler, size) {\n return __awaiter(this, void 0, void 0, function* () {\n const atomBean = yield this.readAtom(tokenizer, dataHandler);\n this.children.push(atomBean);\n if (size === undefined) {\n return this.readAtoms(tokenizer, dataHandler, size).catch(err => {\n if (err.message === type_1.endOfFile) {\n debug(`Reached end-of-file`);\n }\n else {\n throw err;\n }\n });\n }\n size -= atomBean.header.length;\n if (size > 0) {\n return this.readAtoms(tokenizer, dataHandler, size);\n }\n });\n }\n readAtom(tokenizer, dataHandler) {\n return __awaiter(this, void 0, void 0, function* () {\n // Parse atom header\n const offset = tokenizer.position;\n // debug(`Reading next token on offset=${offset}...`); // buf.toString('ascii')\n const header = yield tokenizer.readToken(AtomToken.Header);\n const extended = header.length === 1;\n if (extended) {\n header.length = yield tokenizer.readToken(AtomToken.ExtendedSize);\n }\n const atomBean = new Atom(header, extended, this);\n debug(`parse atom name=${atomBean.atomPath}, extended=${atomBean.extended}, offset=${offset}, len=${atomBean.header.length}`); // buf.toString('ascii')\n yield atomBean.readData(tokenizer, dataHandler);\n return atomBean;\n });\n }\n readData(tokenizer, dataHandler) {\n return __awaiter(this, void 0, void 0, function* () {\n switch (this.header.name) {\n // \"Container\" atoms, contains nested atoms\n case \"moov\": // The Movie Atom: contains other atoms\n case \"udta\": // User defined atom\n case \"trak\":\n case \"mdia\": // Media atom\n case \"minf\": // Media Information Atom\n case \"stbl\": // The Sample Table Atom\n case \"<id>\":\n case \"ilst\":\n return this.readAtoms(tokenizer, dataHandler, this.dataLen);\n case \"meta\": // Metadata Atom, ref: https://developer.apple.com/library/content/documentation/QuickTime/QTFF/Metadata/Metadata.html#//apple_ref/doc/uid/TP40000939-CH1-SW8\n // meta has 4 bytes of padding, ignore\n yield tokenizer.readToken(new Token.IgnoreType(4));\n return this.readAtoms(tokenizer, dataHandler, this.dataLen - 4);\n case \"mdhd\": // Media header atom\n case \"mvhd\": // 'movie' => 'mvhd': movie header atom; child of Movie Atom\n case \"tkhd\":\n case \"stsz\":\n case \"mdat\":\n default:\n return dataHandler(this);\n }\n });\n }\n}\nexports.Atom = Atom;\n//# sourceMappingURL=Atom.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst assert = require(\"assert\");\nconst Token = require(\"token-types\");\nconst type_1 = require(\"strtok3/lib/type\");\nconst initDebug = require(\"debug\");\nconst Util_1 = require(\"../common/Util\");\nconst AbstractID3Parser_1 = require(\"../id3v2/AbstractID3Parser\");\nconst XingTag_1 = require(\"./XingTag\");\nconst debug = initDebug('music-metadata:parser:mpeg');\n/**\n * Cache buffer size used for searching synchronization preabmle\n */\nconst maxPeekLen = 1024;\n/**\n * MPEG-4 Audio definitions\n * Ref: https://wiki.multimedia.cx/index.php/MPEG-4_Audio\n */\nconst MPEG4 = {\n /**\n * Audio Object Types\n */\n AudioObjectTypes: [\n 'AAC Main',\n 'AAC LC',\n 'AAC SSR',\n 'AAC LTP' // Long Term Prediction\n ],\n /**\n * Sampling Frequencies\n * https://wiki.multimedia.cx/index.php/MPEG-4_Audio#Sampling_Frequencies\n */\n SamplingFrequencies: [\n 96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350, undefined, undefined, -1\n ]\n /**\n * Channel Configurations\n */\n};\nconst MPEG4_ChannelConfigurations = [\n undefined,\n ['front-center'],\n ['front-left', 'front-right'],\n ['front-center', 'front-left', 'front-right'],\n ['front-center', 'front-left', 'front-right', 'back-center'],\n ['front-center', 'front-left', 'front-right', 'back-left', 'back-right'],\n ['front-center', 'front-left', 'front-right', 'back-left', 'back-right', 'LFE-channel'],\n ['front-center', 'front-left', 'front-right', 'side-left', 'side-right', 'back-left', 'back-right', 'LFE-channel']\n];\n/**\n * MPEG Audio Layer I/II/III frame header\n * Ref: https://www.mp3-tech.org/programmer/frame_header.html\n * Bit layout: AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM\n * Ref: https://wiki.multimedia.cx/index.php/ADTS\n */\nclass MpegFrameHeader {\n constructor(buf, off) {\n // B(20,19): MPEG Audio versionIndex ID\n this.versionIndex = Util_1.default.getBitAllignedNumber(buf, off + 1, 3, 2);\n // C(18,17): Layer description\n this.layer = MpegFrameHeader.LayerDescription[Util_1.default.getBitAllignedNumber(buf, off + 1, 5, 2)];\n if (this.versionIndex > 1 && this.layer === 0) {\n this.parseAdtsHeader(buf, off); // Audio Data Transport Stream (ADTS)\n }\n else {\n this.parseMpegHeader(buf, off); // Conventional MPEG header\n }\n // D(16): Protection bit (if true 16-bit CRC follows header)\n this.isProtectedByCRC = !Util_1.default.isBitSet(buf, off + 1, 7);\n }\n calcDuration(numFrames) {\n return numFrames * this.calcSamplesPerFrame() / this.samplingRate;\n }\n calcSamplesPerFrame() {\n return MpegFrameHeader.samplesInFrameTable[this.version === 1 ? 0 : 1][this.layer];\n }\n calculateSideInfoLength() {\n if (this.layer !== 3)\n return 2;\n if (this.channelModeIndex === 3) {\n // mono\n if (this.version === 1) {\n return 17;\n }\n else if (this.version === 2 || this.version === 2.5) {\n return 9;\n }\n }\n else {\n if (this.version === 1) {\n return 32;\n }\n else if (this.version === 2 || this.version === 2.5) {\n return 17;\n }\n }\n }\n calcSlotSize() {\n return [null, 4, 1, 1][this.layer];\n }\n parseMpegHeader(buf, off) {\n this.container = 'MPEG';\n // E(15,12): Bitrate index\n this.bitrateIndex = Util_1.default.getBitAllignedNumber(buf, off + 2, 0, 4);\n // F(11,10): Sampling rate frequency index\n this.sampRateFreqIndex = Util_1.default.getBitAllignedNumber(buf, off + 2, 4, 2);\n // G(9): Padding bit\n this.padding = Util_1.default.isBitSet(buf, off + 2, 6);\n // H(8): Private bit\n this.privateBit = Util_1.default.isBitSet(buf, off + 2, 7);\n // I(7,6): Channel Mode\n this.channelModeIndex = Util_1.default.getBitAllignedNumber(buf, off + 3, 0, 2);\n // J(5,4): Mode extension (Only used in Joint stereo)\n this.modeExtension = Util_1.default.getBitAllignedNumber(buf, off + 3, 2, 2);\n // K(3): Copyright\n this.isCopyrighted = Util_1.default.isBitSet(buf, off + 3, 4);\n // L(2): Original\n this.isOriginalMedia = Util_1.default.isBitSet(buf, off + 3, 5);\n // M(3): The original bit indicates, if it is set, that the frame is located on its original media.\n this.emphasis = Util_1.default.getBitAllignedNumber(buf, off + 3, 7, 2);\n this.version = MpegFrameHeader.VersionID[this.versionIndex];\n this.channelMode = MpegFrameHeader.ChannelMode[this.channelModeIndex];\n this.codec = 'mp' + this.layer;\n // Calculate bitrate\n const bitrateInKbps = this.calcBitrate();\n if (!bitrateInKbps) {\n throw new Error('Cannot determine bit-rate');\n }\n this.bitrate = bitrateInKbps === null ? null : bitrateInKbps * 1000;\n // Calculate sampling rate\n this.samplingRate = this.calcSamplingRate();\n if (this.samplingRate == null) {\n throw new Error('Cannot determine sampling-rate');\n }\n }\n parseAdtsHeader(buf, off) {\n debug(`layer=0 => ADTS`);\n this.version = this.versionIndex === 2 ? 4 : 2;\n this.container = 'ADTS/MPEG-' + this.version;\n const profileIndex = Util_1.default.getBitAllignedNumber(buf, off + 2, 0, 2);\n this.codec = 'AAC';\n this.codecProfile = MPEG4.AudioObjectTypes[profileIndex];\n debug(`MPEG-4 audio-codec=${this.codec}`);\n const samplingFrequencyIndex = Util_1.default.getBitAllignedNumber(buf, off + 2, 2, 4);\n this.samplingRate = MPEG4.SamplingFrequencies[samplingFrequencyIndex];\n debug(`sampling-rate=${this.samplingRate}`);\n const channelIndex = Util_1.default.getBitAllignedNumber(buf, off + 2, 7, 3);\n this.mp4ChannelConfig = MPEG4_ChannelConfigurations[channelIndex];\n debug(`channel-config=${this.mp4ChannelConfig.join('+')}`);\n this.frameLength = Util_1.default.getBitAllignedNumber(buf, off + 3, 6, 2) << 11;\n }\n calcBitrate() {\n if (this.bitrateIndex === 0x00)\n return null; // free\n if (this.bitrateIndex === 0x0F)\n return null; // 'reserved'\n const mpegVersion = this.version.toString() + this.layer;\n return MpegFrameHeader.bitrate_index[this.bitrateIndex][mpegVersion];\n }\n calcSamplingRate() {\n if (this.sampRateFreqIndex === 0x03)\n return null; // 'reserved'\n return MpegFrameHeader.sampling_rate_freq_index[this.version][this.sampRateFreqIndex];\n }\n}\nMpegFrameHeader.SyncByte1 = 0xFF;\nMpegFrameHeader.SyncByte2 = 0xE0;\nMpegFrameHeader.VersionID = [2.5, null, 2, 1];\nMpegFrameHeader.LayerDescription = [0, 3, 2, 1];\nMpegFrameHeader.ChannelMode = ['stereo', 'joint_stereo', 'dual_channel', 'mono'];\nMpegFrameHeader.bitrate_index = {\n 0x01: { 11: 32, 12: 32, 13: 32, 21: 32, 22: 8, 23: 8 },\n 0x02: { 11: 64, 12: 48, 13: 40, 21: 48, 22: 16, 23: 16 },\n 0x03: { 11: 96, 12: 56, 13: 48, 21: 56, 22: 24, 23: 24 },\n 0x04: { 11: 128, 12: 64, 13: 56, 21: 64, 22: 32, 23: 32 },\n 0x05: { 11: 160, 12: 80, 13: 64, 21: 80, 22: 40, 23: 40 },\n 0x06: { 11: 192, 12: 96, 13: 80, 21: 96, 22: 48, 23: 48 },\n 0x07: { 11: 224, 12: 112, 13: 96, 21: 112, 22: 56, 23: 56 },\n 0x08: { 11: 256, 12: 128, 13: 112, 21: 128, 22: 64, 23: 64 },\n 0x09: { 11: 288, 12: 160, 13: 128, 21: 144, 22: 80, 23: 80 },\n 0x0A: { 11: 320, 12: 192, 13: 160, 21: 160, 22: 96, 23: 96 },\n 0x0B: { 11: 352, 12: 224, 13: 192, 21: 176, 22: 112, 23: 112 },\n 0x0C: { 11: 384, 12: 256, 13: 224, 21: 192, 22: 128, 23: 128 },\n 0x0D: { 11: 416, 12: 320, 13: 256, 21: 224, 22: 144, 23: 144 },\n 0x0E: { 11: 448, 12: 384, 13: 320, 21: 256, 22: 160, 23: 160 }\n};\nMpegFrameHeader.sampling_rate_freq_index = {\n 1: { 0x00: 44100, 0x01: 48000, 0x02: 32000 },\n 2: { 0x00: 22050, 0x01: 24000, 0x02: 16000 },\n 2.5: { 0x00: 11025, 0x01: 12000, 0x02: 8000 }\n};\nMpegFrameHeader.samplesInFrameTable = [\n /* Layer I II III */\n [0, 384, 1152, 1152],\n [0, 384, 1152, 576] // MPEG-2(.5\n];\n/**\n * MPEG Audio Layer I/II/III\n */\nconst FrameHeader = {\n len: 4,\n get: (buf, off) => {\n return new MpegFrameHeader(buf, off);\n }\n};\nfunction getVbrCodecProfile(vbrScale) {\n return 'V' + (100 - vbrScale) / 10;\n}\nclass MpegParser extends AbstractID3Parser_1.AbstractID3Parser {\n constructor() {\n super(...arguments);\n this.frameCount = 0;\n this.syncFrameCount = -1;\n this.countSkipFrameData = 0;\n this.totalAudioLength = 0;\n this.bitrates = [];\n this.calculateEofDuration = false;\n this.buf_frame_header = Buffer.alloc(4);\n this.syncPeek = {\n buf: Buffer.alloc(maxPeekLen),\n len: 0\n };\n }\n /**\n * Called after ID3 headers have been parsed\n */\n _parse() {\n return __awaiter(this, void 0, void 0, function* () {\n this.metadata.setFormat('lossless', false);\n try {\n let quit = false;\n while (!quit) {\n yield this.sync();\n quit = yield this.parseAudioFrameHeader();\n }\n }\n catch (err) {\n if (err.message === type_1.endOfFile) {\n if (this.calculateEofDuration) {\n const numberOfSamples = this.frameCount * this.samplesPerFrame;\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n const duration = numberOfSamples / this.metadata.format.sampleRate;\n debug(`Calculate duration at EOF: ${duration} sec.`, duration);\n this.metadata.setFormat('duration', duration);\n }\n }\n else {\n throw err;\n }\n }\n });\n }\n /**\n * Called after file has been fully parsed, this allows, if present, to exclude the ID3v1.1 header length\n * @param metadata\n * @returns {INativeAudioMetadata}\n */\n finalize() {\n const format = this.metadata.format;\n const hasID3v1 = this.metadata.native.hasOwnProperty('ID3v1');\n if (format.duration && this.tokenizer.fileSize) {\n const mpegSize = this.tokenizer.fileSize - this.mpegOffset - (hasID3v1 ? 128 : 0);\n if (format.codecProfile && format.codecProfile[0] === 'V') {\n this.metadata.setFormat('bitrate', mpegSize * 8 / format.duration);\n }\n }\n else if (this.tokenizer.fileSize && format.codecProfile === 'CBR') {\n const mpegSize = this.tokenizer.fileSize - this.mpegOffset - (hasID3v1 ? 128 : 0);\n const numberOfSamples = Math.round(mpegSize / this.frame_size) * this.samplesPerFrame;\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n const duration = numberOfSamples / format.sampleRate;\n debug(\"Calculate CBR duration based on file size: %s\", duration);\n this.metadata.setFormat('duration', duration);\n }\n }\n sync() {\n return __awaiter(this, void 0, void 0, function* () {\n let gotFirstSync = false;\n while (true) {\n let bo = 0;\n this.syncPeek.len = yield this.tokenizer.peekBuffer(this.syncPeek.buf, 0, maxPeekLen, this.tokenizer.position, true);\n if (this.syncPeek.len <= 256) {\n throw new Error(type_1.endOfFile);\n }\n if (this.syncPeek.len === 0)\n throw new Error(type_1.endOfFile);\n while (true) {\n if (gotFirstSync && (this.syncPeek.buf[bo] & 0xE0) === 0xE0) {\n this.buf_frame_header[0] = MpegFrameHeader.SyncByte1;\n this.buf_frame_header[1] = this.syncPeek.buf[bo];\n yield this.tokenizer.ignore(bo);\n debug(`Sync at offset=${this.tokenizer.position - 1}, frameCount=${this.frameCount}`);\n if (this.syncFrameCount === this.frameCount) {\n debug(`Re-synced MPEG stream, frameCount=${this.frameCount}`);\n this.frameCount = 0;\n this.frame_size = 0;\n }\n this.syncFrameCount = this.frameCount;\n return; // sync\n }\n else {\n gotFirstSync = false;\n bo = this.syncPeek.buf.indexOf(MpegFrameHeader.SyncByte1, bo);\n if (bo === -1) {\n if (this.syncPeek.len < this.syncPeek.buf.length) {\n throw new Error(type_1.endOfFile);\n }\n yield this.tokenizer.ignore(this.syncPeek.len);\n break; // continue with next buffer\n }\n else {\n ++bo;\n gotFirstSync = true;\n }\n }\n }\n }\n });\n }\n /**\n * @return {Promise<boolean>} true if parser should quit\n */\n parseAudioFrameHeader() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.frameCount === 0) {\n this.mpegOffset = this.tokenizer.position - 1;\n }\n yield this.tokenizer.peekBuffer(this.buf_frame_header, 1, 3);\n let header;\n try {\n header = FrameHeader.get(this.buf_frame_header, 0);\n }\n catch (err) {\n yield this.tokenizer.ignore(1);\n this.warnings.push('Parse error: ' + err.message);\n return false; // sync\n }\n yield this.tokenizer.ignore(3);\n this.metadata.setFormat('dataformat', header.container);\n this.metadata.setFormat('encoder', header.codec);\n this.metadata.setFormat('lossless', false);\n this.metadata.setFormat('sampleRate', header.samplingRate);\n if (header.version >= 2 && header.layer === 0) {\n return this.parseAdts(header);\n }\n this.metadata.setFormat('numberOfChannels', header.channelMode === 'mono' ? 1 : 2);\n this.metadata.setFormat('bitrate', header.bitrate);\n if (this.frameCount < 20 * 10000) {\n debug('offset=%s MP%s bitrate=%s sample-rate=%s', this.tokenizer.position - 4, header.layer, header.bitrate, header.samplingRate);\n }\n const slot_size = header.calcSlotSize();\n if (slot_size === null) {\n throw new Error('invalid slot_size');\n }\n const samples_per_frame = header.calcSamplesPerFrame();\n debug(`samples_per_frame=${samples_per_frame}`);\n const bps = samples_per_frame / 8.0;\n const fsize = (bps * header.bitrate / header.samplingRate) +\n ((header.padding) ? slot_size : 0);\n this.frame_size = Math.floor(fsize);\n this.audioFrameHeader = header;\n this.frameCount++;\n this.bitrates.push(header.bitrate);\n // xtra header only exists in first frame\n if (this.frameCount === 1) {\n this.offset = FrameHeader.len;\n yield this.skipSideInformation();\n return false;\n }\n if (this.frameCount === 3) {\n // the stream is CBR if the first 3 frame bitrates are the same\n if (this.areAllSame(this.bitrates)) {\n // Actual calculation will be done in finalize\n this.samplesPerFrame = samples_per_frame;\n this.metadata.setFormat('codecProfile', 'CBR');\n if (this.tokenizer.fileSize)\n return true; // Will calculate duration based on the file size\n }\n else if (this.metadata.format.duration) {\n return true; // We already got the duration, stop processing MPEG stream any further\n }\n if (!this.options.duration) {\n return true; // Enforce duration not enabled, stop processing entire stream\n }\n }\n // once we know the file is VBR attach listener to end of\n // stream so we can do the duration calculation when we\n // have counted all the frames\n if (this.options.duration && this.frameCount === 4) {\n this.samplesPerFrame = samples_per_frame;\n this.calculateEofDuration = true;\n }\n this.offset = 4;\n if (header.isProtectedByCRC) {\n yield this.parseCrc();\n return false;\n }\n else {\n yield this.skipSideInformation();\n return false;\n }\n });\n }\n parseAdts(header) {\n return __awaiter(this, void 0, void 0, function* () {\n const buf = Buffer.alloc(3);\n yield this.tokenizer.readBuffer(buf);\n header.frameLength += Util_1.default.getBitAllignedNumber(buf, 0, 0, 11);\n this.tokenizer.ignore(header.frameLength - 7 + 1);\n this.frameCount++;\n this.totalAudioLength += header.frameLength;\n const framesPerSec = header.samplingRate / 1024;\n const bytesPerFrame = this.frameCount === 0 ? 0 : this.totalAudioLength / this.frameCount;\n const bitrate = 8 * bytesPerFrame * framesPerSec + 0.5;\n this.metadata.setFormat('codecProfile', header.codecProfile);\n this.metadata.setFormat('bitrate', bitrate);\n if (header.mp4ChannelConfig) {\n this.metadata.setFormat('numberOfChannels', header.mp4ChannelConfig.length);\n }\n debug(`size=${header.frameLength} bytes, bit-rate=${bitrate}`);\n return this.frameCount === 3; // Stop parsing after the third frame\n });\n }\n parseCrc() {\n return __awaiter(this, void 0, void 0, function* () {\n this.crc = yield this.tokenizer.readNumber(Token.INT16_BE);\n this.offset += 2;\n return this.skipSideInformation();\n });\n }\n skipSideInformation() {\n return __awaiter(this, void 0, void 0, function* () {\n const sideinfo_length = this.audioFrameHeader.calculateSideInfoLength();\n // side information\n yield this.tokenizer.readToken(new Token.BufferType(sideinfo_length));\n this.offset += sideinfo_length;\n yield this.readXtraInfoHeader();\n return;\n });\n }\n readXtraInfoHeader() {\n return __awaiter(this, void 0, void 0, function* () {\n const headerTag = yield this.tokenizer.readToken(XingTag_1.InfoTagHeaderTag);\n this.offset += XingTag_1.InfoTagHeaderTag.len; // 12\n switch (headerTag) {\n case 'Info':\n this.metadata.setFormat('codecProfile', 'CBR');\n return this.readXingInfoHeader();\n case 'Xing':\n const infoTag = yield this.readXingInfoHeader();\n const codecProfile = getVbrCodecProfile(infoTag.vbrScale);\n this.metadata.setFormat('codecProfile', codecProfile);\n return null;\n case 'Xtra':\n // ToDo: ???\n break;\n case 'LAME':\n const version = yield this.tokenizer.readToken(XingTag_1.LameEncoderVersion);\n this.offset += XingTag_1.LameEncoderVersion.len;\n this.metadata.setFormat('tool', 'LAME ' + version);\n yield this.skipFrameData(this.frame_size - this.offset);\n return null;\n // ToDo: ???\n }\n // ToDo: promise duration???\n const frameDataLeft = this.frame_size - this.offset;\n if (frameDataLeft < 0) {\n this.warnings.push('Frame ' + this.frameCount + 'corrupt: negative frameDataLeft');\n }\n else {\n yield this.skipFrameData(frameDataLeft);\n }\n return null;\n });\n }\n /**\n * Ref: http://gabriel.mp3-tech.org/mp3infotag.html\n * @returns {Promise<string>}\n */\n readXingInfoHeader() {\n return __awaiter(this, void 0, void 0, function* () {\n const infoTag = yield this.tokenizer.readToken(XingTag_1.XingInfoTag);\n this.offset += XingTag_1.XingInfoTag.len; // 12\n this.metadata.setFormat('tool', Util_1.default.stripNulls(infoTag.encoder));\n if ((infoTag.headerFlags[3] & 0x01) === 1) {\n const duration = this.audioFrameHeader.calcDuration(infoTag.numFrames);\n this.metadata.setFormat('duration', duration);\n debug('Get duration from Xing header: %s', this.metadata.format.duration);\n return infoTag;\n }\n // frames field is not present\n const frameDataLeft = this.frame_size - this.offset;\n yield this.skipFrameData(frameDataLeft);\n return infoTag;\n });\n }\n skipFrameData(frameDataLeft) {\n return __awaiter(this, void 0, void 0, function* () {\n assert.ok(frameDataLeft >= 0, 'frame-data-left cannot be negative');\n yield this.tokenizer.readToken(new Token.IgnoreType(frameDataLeft));\n this.countSkipFrameData += frameDataLeft;\n });\n }\n areAllSame(array) {\n const first = array[0];\n return array.every(element => {\n return element === first;\n });\n }\n}\nexports.MpegParser = MpegParser;\n//# sourceMappingURL=MpegParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\n/**\n * Info Tag: Xing, LAME\n */\nexports.InfoTagHeaderTag = new Token.StringType(4, 'ascii');\n/**\n * LAME TAG value\n * Did not find any official documentation for this\n * Value e.g.: \"3.98.4\"\n */\nexports.LameEncoderVersion = new Token.StringType(6, 'ascii');\n/**\n * Info Tag\n * Ref: http://gabriel.mp3-tech.org/mp3infotag.html\n */\nexports.XingInfoTag = {\n len: 136,\n get: (buf, off) => {\n return {\n // === ZONE A - Traditional Xing VBR Tag data ===\n // 4 bytes for HeaderFlags\n headerFlags: new Token.BufferType(4).get(buf, off),\n numFrames: Token.UINT32_BE.get(buf, off + 4),\n streamSize: Token.UINT32_BE.get(buf, off + 8),\n // the number of header data bytes (from original file)\n vbrScale: Token.UINT32_BE.get(buf, off + 112),\n /**\n * LAME Tag, extends the Xing header format\n * First added in LAME 3.12 for VBR\n * The modified header is also included in CBR files (effective LAME 3.94), with \"Info\" instead of \"XING\" near the beginning.\n */\n // === ZONE B - Initial LAME info ===\n // Initial LAME info, e.g.: LAME3.99r\n encoder: new Token.StringType(9, 'ascii').get(buf, off + 116),\n // \t Info tag revision\n infoTagRevision: Token.UINT8.get(buf, off + 125) >> 4,\n // VBR method\n vbrMethod: Token.UINT8.get(buf, off + 125) & 0xf // $A5\n };\n }\n};\n//# sourceMappingURL=XingTag.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst initDebug = require(\"debug\");\nconst Token = require(\"token-types\");\nconst MpcSv8Parser_1 = require(\"./sv8/MpcSv8Parser\");\nconst MpcSv7Parser_1 = require(\"./sv7/MpcSv7Parser\");\nconst AbstractID3Parser_1 = require(\"../id3v2/AbstractID3Parser\");\nconst debug = initDebug('music-metadata:parser:musepack');\nclass MusepackParser extends AbstractID3Parser_1.AbstractID3Parser {\n _parse() {\n return __awaiter(this, void 0, void 0, function* () {\n const signature = yield this.tokenizer.peekToken(new Token.StringType(3, 'binary'));\n let mpcParser;\n switch (signature) {\n case 'MP+': {\n debug('Musepack stream-version 7');\n mpcParser = new MpcSv7Parser_1.MpcSv7Parser();\n break;\n }\n case 'MPC': {\n debug('Musepack stream-version 8');\n mpcParser = new MpcSv8Parser_1.MpcSv8Parser();\n break;\n }\n default: {\n throw new Error('Invalid Musepack signature prefix');\n }\n }\n mpcParser.init(this.metadata, this.tokenizer, this.options);\n return mpcParser.parse();\n });\n }\n}\nexports.default = MusepackParser;\n//# sourceMappingURL=index.js.map","'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst initDebug = require(\"debug\");\nconst assert = require(\"assert\");\nconst BasicParser_1 = require(\"../../common/BasicParser\");\nconst SV8 = require(\"./StreamVersion8\");\nconst APEv2Parser_1 = require(\"../../apev2/APEv2Parser\");\nconst FourCC_1 = require(\"../../common/FourCC\");\nconst debug = initDebug('music-metadata:parser:musepack');\nclass MpcSv8Parser extends BasicParser_1.BasicParser {\n constructor() {\n super(...arguments);\n this.audioLength = 0;\n }\n parse() {\n return __awaiter(this, void 0, void 0, function* () {\n const signature = yield this.tokenizer.readToken(FourCC_1.FourCcToken);\n assert.equal(signature, 'MPCK', 'Magic number');\n this.metadata.setFormat('dataformat', 'Musepack, SV8');\n return this.parsePacket();\n });\n }\n parsePacket() {\n return __awaiter(this, void 0, void 0, function* () {\n const sv8reader = new SV8.StreamReader(this.tokenizer);\n do {\n const header = yield sv8reader.readPacketHeader();\n debug(`packet-header key=${header.key}, payloadLength=${header.payloadLength}`);\n switch (header.key) {\n case 'SH': // Stream Header\n const sh = yield sv8reader.readStreamHeader(header.payloadLength);\n this.metadata.setFormat('numberOfSamples', sh.sampleCount);\n this.metadata.setFormat('sampleRate', sh.sampleFrequency);\n this.metadata.setFormat('duration', sh.sampleCount / sh.sampleFrequency);\n this.metadata.setFormat('numberOfChannels', sh.channelCount);\n break;\n case 'AP': // Audio Packet\n this.audioLength += header.payloadLength;\n yield this.tokenizer.ignore(header.payloadLength);\n break;\n case 'RG': // Replaygain\n case 'EI': // Encoder Info\n case 'SO': // Seek Table Offset\n case 'ST': // Seek Table\n case 'CT': // Chapter-Tag\n yield this.tokenizer.ignore(header.payloadLength);\n break;\n case 'SE': // Stream End\n this.metadata.setFormat('bitrate', this.audioLength * 8 / this.metadata.format.duration);\n return APEv2Parser_1.APEv2Parser.parseTagHeader(this.metadata, this.tokenizer, this.options);\n default:\n throw new Error(`Unexpected header: ${header.key}`);\n }\n } while (true);\n });\n }\n}\nexports.MpcSv8Parser = MpcSv8Parser;\n//# sourceMappingURL=MpcSv8Parser.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst Util_1 = require(\"../../common/Util\");\nconst initDebug = require(\"debug\");\nconst debug = initDebug('music-metadata:parser:musepack:sv8');\nconst PacketKey = new Token.StringType(2, 'binary');\n/**\n * Stream Header Packet part 1\n * Ref: http://trac.musepack.net/musepack/wiki/SV8Specification#StreamHeaderPacket\n */\nconst SH_part1 = {\n len: 5,\n get: (buf, off) => {\n return {\n crc: Token.UINT32_LE.get(buf, off),\n streamVersion: Token.UINT8.get(buf, off + 4)\n };\n }\n};\n/**\n * Stream Header Packet part 3\n * Ref: http://trac.musepack.net/musepack/wiki/SV8Specification#StreamHeaderPacket\n */\nconst SH_part3 = {\n len: 2,\n get: (buf, off) => {\n return {\n sampleFrequency: [44100, 48000, 37800, 32000][Util_1.default.getBitAllignedNumber(buf, off, 0, 3)],\n maxUsedBands: Util_1.default.getBitAllignedNumber(buf, off, 3, 5),\n channelCount: Util_1.default.getBitAllignedNumber(buf, off + 1, 0, 4) + 1,\n msUsed: Util_1.default.isBitSet(buf, off + 1, 4),\n audioBlockFrames: Util_1.default.getBitAllignedNumber(buf, off + 1, 5, 3)\n };\n }\n};\nclass StreamReader {\n constructor(tokenizer) {\n this.tokenizer = tokenizer;\n }\n readPacketHeader() {\n return __awaiter(this, void 0, void 0, function* () {\n const key = yield this.tokenizer.readToken(PacketKey);\n const size = yield this.readVariableSizeField();\n return {\n key,\n payloadLength: size.value - 2 - size.len\n };\n });\n }\n readStreamHeader(size) {\n return __awaiter(this, void 0, void 0, function* () {\n const streamHeader = {};\n debug(`Reading SH at offset=${this.tokenizer.position}`);\n const part1 = yield this.tokenizer.readToken(SH_part1);\n size -= SH_part1.len;\n Object.assign(streamHeader, part1);\n debug(`SH.streamVersion = ${part1.streamVersion}`);\n const sampleCount = yield this.readVariableSizeField();\n size -= sampleCount.len;\n streamHeader.sampleCount = sampleCount.value;\n const bs = yield this.readVariableSizeField();\n size -= bs.len;\n streamHeader.beginningOfSilence = bs.value;\n const part3 = yield this.tokenizer.readToken(SH_part3);\n size -= SH_part3.len;\n Object.assign(streamHeader, part3);\n // assert.equal(size, 0);\n yield this.tokenizer.ignore(size);\n return streamHeader;\n });\n }\n readVariableSizeField(len = 1, hb = 0) {\n return __awaiter(this, void 0, void 0, function* () {\n let n = yield this.tokenizer.readToken(Token.UINT8);\n if ((n & 0x80) === 0) {\n return { len, value: hb + n };\n }\n n &= 0x7F;\n n += hb;\n return this.readVariableSizeField(len + 1, n << 7);\n });\n }\n}\nexports.StreamReader = StreamReader;\n//# sourceMappingURL=StreamVersion8.js.map","'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst initDebug = require(\"debug\");\nconst assert = require(\"assert\");\nconst BasicParser_1 = require(\"../../common/BasicParser\");\nconst SV7 = require(\"./StreamVersion7\");\nconst APEv2Parser_1 = require(\"../../apev2/APEv2Parser\");\nconst BitReader_1 = require(\"./BitReader\");\nconst debug = initDebug('music-metadata:parser:musepack');\nclass MpcSv7Parser extends BasicParser_1.BasicParser {\n constructor() {\n super(...arguments);\n this.audioLength = 0;\n }\n parse() {\n return __awaiter(this, void 0, void 0, function* () {\n const header = yield this.tokenizer.readToken(SV7.Header);\n assert.equal(header.signature, 'MP+', 'Magic number');\n debug(`stream-version=${header.streamMajorVersion}.${header.streamMinorVersion}`);\n this.metadata.setFormat('dataformat', 'Musepack, SV7');\n this.metadata.setFormat('sampleRate', header.sampleFrequency);\n const numberOfSamples = 1152 * (header.frameCount - 1) + header.lastFrameLength;\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n this.duration = numberOfSamples / header.sampleFrequency;\n this.metadata.setFormat('duration', this.duration);\n this.bitreader = new BitReader_1.BitReader(this.tokenizer);\n this.metadata.setFormat('numberOfChannels', header.midSideStereo || header.intensityStereo ? 2 : 1);\n const version = yield this.bitreader.read(8);\n this.metadata.setFormat('encoder', (version / 100).toFixed(2));\n yield this.skipAudioData(header.frameCount);\n debug(`End of audio stream, switching to APEv2, offset=${this.tokenizer.position}`);\n return APEv2Parser_1.APEv2Parser.parseTagHeader(this.metadata, this.tokenizer, this.options);\n });\n }\n skipAudioData(frameCount) {\n return __awaiter(this, void 0, void 0, function* () {\n while (frameCount-- > 0) {\n const frameLength = yield this.bitreader.read(20);\n this.audioLength += 20 + frameLength;\n yield this.bitreader.ignore(frameLength);\n }\n // last frame\n const lastFrameLength = yield this.bitreader.read(11);\n this.audioLength += lastFrameLength;\n this.metadata.setFormat('bitrate', this.audioLength / this.duration);\n });\n }\n}\nexports.MpcSv7Parser = MpcSv7Parser;\n//# sourceMappingURL=MpcSv7Parser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst Util_1 = require(\"../../common/Util\");\n/**\n * BASIC STRUCTURE\n */\nexports.Header = {\n len: 6 * 4,\n get: (buf, off) => {\n const header = {\n // word 0\n signature: buf.toString(\"binary\", off, off + 3),\n // versionIndex number * 1000 (3.81 = 3810) (remember that 4-byte alignment causes this to take 4-bytes)\n streamMinorVersion: Util_1.default.getBitAllignedNumber(buf, off + 3, 0, 4),\n streamMajorVersion: Util_1.default.getBitAllignedNumber(buf, off + 3, 4, 4),\n // word 1\n frameCount: Token.UINT32_LE.get(buf, off + 4),\n // word 2\n maxLevel: Token.UINT16_LE.get(buf, off + 8),\n sampleFrequency: [44100, 48000, 37800, 32000][Util_1.default.getBitAllignedNumber(buf, off + 10, 0, 2)],\n link: Util_1.default.getBitAllignedNumber(buf, off + 10, 2, 2),\n profile: Util_1.default.getBitAllignedNumber(buf, off + 10, 4, 4),\n maxBand: Util_1.default.getBitAllignedNumber(buf, off + 11, 0, 6),\n intensityStereo: Util_1.default.isBitSet(buf, off + 11, 6),\n midSideStereo: Util_1.default.isBitSet(buf, off + 11, 7),\n // word 3\n titlePeak: Token.UINT16_LE.get(buf, off + 12),\n titleGain: Token.UINT16_LE.get(buf, off + 14),\n // word 4\n albumPeak: Token.UINT16_LE.get(buf, off + 16),\n albumGain: Token.UINT16_LE.get(buf, off + 18),\n // word\n lastFrameLength: (Token.UINT32_LE.get(buf, off + 20) >>> 20) & 0x7FF,\n trueGapless: Util_1.default.isBitSet(buf, off + 23, 0)\n };\n header.lastFrameLength = header.trueGapless ? (Token.UINT32_LE.get(buf, 20) >>> 20) & 0x7FF : 0;\n return header;\n }\n};\n//# sourceMappingURL=StreamVersion7.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nclass BitReader {\n constructor(tokenizer) {\n this.tokenizer = tokenizer;\n this.pos = 0;\n this.dword = undefined;\n }\n /**\n *\n * @param bits 1..30 bits\n */\n read(bits) {\n return __awaiter(this, void 0, void 0, function* () {\n while (this.dword === undefined) {\n this.dword = yield this.tokenizer.readToken(Token.UINT32_LE);\n }\n let out = this.dword;\n this.pos += bits;\n if (this.pos < 32) {\n out >>>= (32 - this.pos);\n return out & ((1 << bits) - 1);\n }\n else {\n this.pos -= 32;\n if (this.pos === 0) {\n this.dword = undefined;\n return out & ((1 << bits) - 1);\n }\n else {\n this.dword = yield this.tokenizer.readToken(Token.UINT32_LE);\n if (this.pos) {\n out <<= this.pos;\n out |= this.dword >>> (32 - this.pos);\n }\n return out & ((1 << bits) - 1);\n }\n }\n });\n }\n ignore(bits) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.pos > 0) {\n const remaining = 32 - this.pos;\n this.dword = undefined;\n bits -= remaining;\n this.pos = 0;\n }\n const remainder = bits % 32;\n const numOfWords = (bits - remainder) / 32;\n yield this.tokenizer.ignore(numOfWords * 4);\n return this.read(remainder);\n });\n }\n}\nexports.BitReader = BitReader;\n//# sourceMappingURL=BitReader.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst initDebug = require(\"debug\");\nconst assert = require(\"assert\");\nconst Util_1 = require(\"../common/Util\");\nconst FourCC_1 = require(\"../common/FourCC\");\nconst VorbisParser_1 = require(\"./vorbis/VorbisParser\");\nconst OpusParser_1 = require(\"./opus/OpusParser\");\nconst SpeexParser_1 = require(\"./speex/SpeexParser\");\nconst BasicParser_1 = require(\"../common/BasicParser\");\nconst debug = initDebug('music-metadata:parser:ogg');\nclass SegmentTable {\n static sum(buf, off, len) {\n let s = 0;\n for (let i = off; i < off + len; ++i) {\n s += buf[i];\n }\n return s;\n }\n constructor(header) {\n this.len = header.page_segments;\n }\n get(buf, off) {\n return {\n totalPageSize: SegmentTable.sum(buf, off, this.len)\n };\n }\n}\nexports.SegmentTable = SegmentTable;\n/**\n * Parser for Ogg logical bitstream framing\n */\nclass OggParser extends BasicParser_1.BasicParser {\n /**\n * Parse page\n * @returns {Promise<void>}\n */\n parse() {\n return __awaiter(this, void 0, void 0, function* () {\n debug('pos=%s, parsePage()', this.tokenizer.position);\n try {\n let header;\n do {\n header = yield this.tokenizer.readToken(OggParser.Header);\n assert.strictEqual(header.capturePattern, 'OggS', 'Ogg capture pattern');\n this.header = header;\n this.pageNumber = header.pageSequenceNo;\n debug('page#=%s, Ogg.id=%s', header.pageSequenceNo, header.capturePattern);\n const segmentTable = yield this.tokenizer.readToken(new SegmentTable(header));\n debug('totalPageSize=%s', segmentTable.totalPageSize);\n const pageData = yield this.tokenizer.readToken(new Token.BufferType(segmentTable.totalPageSize));\n debug('firstPage=%s, lastPage=%s, continued=%s', header.headerType.firstPage, header.headerType.lastPage, header.headerType.continued);\n if (header.headerType.firstPage) {\n const id = new Token.StringType(7, 'ascii').get(pageData, 0);\n switch (id) {\n case '\u0001vorbis': // Ogg/Vorbis\n debug('Set page consumer to Ogg/Vorbis ');\n this.pageConsumer = new VorbisParser_1.VorbisParser(this.metadata, this.options);\n break;\n case 'OpusHea': // Ogg/Opus\n debug('Set page consumer to Ogg/Opus');\n this.pageConsumer = new OpusParser_1.OpusParser(this.metadata, this.options, this.tokenizer);\n break;\n case 'Speex ': // Ogg/Speex\n debug('Set page consumer to Ogg/Speex');\n this.pageConsumer = new SpeexParser_1.SpeexParser(this.metadata, this.options, this.tokenizer);\n break;\n default:\n throw new Error('gg audio-codec not recognized (id=' + id + ')');\n }\n this.metadata.setFormat('dataformat', 'Ogg/' + this.pageConsumer.codecName);\n }\n this.pageConsumer.parsePage(header, pageData);\n } while (!header.headerType.lastPage);\n }\n catch (err) {\n if (err.message === 'End-Of-File') {\n return; // Ignore this error\n }\n else if (err.message.startsWith('FourCC')) {\n if (this.pageNumber > 0) {\n // ignore this error: work-around if last OGG-page is not marked with last-page flag\n this.warnings.push('Invalid FourCC ID, maybe last OGG-page is not marked with last-page flag');\n return this.pageConsumer.flush();\n }\n }\n throw err;\n }\n });\n }\n}\nOggParser.Header = {\n len: 27,\n get: (buf, off) => {\n return {\n capturePattern: FourCC_1.FourCcToken.get(buf, off),\n version: buf.readUInt8(off + 4),\n headerType: {\n continued: Util_1.default.strtokBITSET.get(buf, off + 5, 0),\n firstPage: Util_1.default.strtokBITSET.get(buf, off + 5, 1),\n lastPage: Util_1.default.strtokBITSET.get(buf, off + 5, 2)\n },\n // packet_flag: buf.readUInt8(off + 5),\n absoluteGranulePosition: buf.readIntLE(off + 6, 6),\n streamSerialNumber: Token.UINT32_LE.get(buf, off + 14),\n pageSequenceNo: Token.UINT32_LE.get(buf, off + 18),\n pageChecksum: Token.UINT32_LE.get(buf, off + 22),\n page_segments: buf.readUInt8(off + 26)\n };\n }\n};\nexports.OggParser = OggParser;\n//# sourceMappingURL=OggParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst Opus = require(\"./Opus\");\nconst VorbisParser_1 = require(\"../vorbis/VorbisParser\");\n/**\n * Opus parser\n * Internet Engineering Task Force (IETF) - RFC 6716\n * Used by OggParser\n */\nclass OpusParser extends VorbisParser_1.VorbisParser {\n constructor(metadata, options, tokenizer) {\n super(metadata, options);\n this.tokenizer = tokenizer;\n this.codecName = 'Opus';\n this.lastPos = -1;\n }\n /**\n * Parse first Opus Ogg page\n * @param {IPageHeader} header\n * @param {Buffer} pageData\n */\n parseFirstPage(header, pageData) {\n // Parse Opus ID Header\n this.idHeader = new Opus.IdHeader(pageData.length).get(pageData, 0);\n if (this.idHeader.magicSignature !== \"OpusHead\")\n throw new Error(\"Illegal ogg/Opus magic-signature\");\n this.metadata.setFormat('sampleRate', this.idHeader.inputSampleRate);\n this.metadata.setFormat('numberOfChannels', this.idHeader.channelCount);\n }\n parseFullPage(pageData) {\n const magicSignature = new Token.StringType(8, 'ascii').get(pageData, 0);\n switch (magicSignature) {\n case 'OpusTags':\n this.parseUserCommentList(pageData, 8);\n this.lastPos = this.tokenizer.position;\n break;\n default:\n break;\n }\n }\n calculateDuration(header) {\n if (this.metadata.format.sampleRate && header.absoluteGranulePosition >= 0) {\n // Calculate duration\n this.metadata.setFormat('numberOfSamples', header.absoluteGranulePosition - this.idHeader.preSkip);\n this.metadata.setFormat('duration', this.metadata.format.numberOfSamples / this.idHeader.inputSampleRate);\n if (this.lastPos !== -1 && this.tokenizer.fileSize && this.metadata.format.duration) {\n const dataSize = this.tokenizer.fileSize - this.lastPos;\n this.metadata.setFormat('bitrate', 8 * dataSize / this.metadata.format.duration);\n }\n }\n }\n}\nexports.OpusParser = OpusParser;\n//# sourceMappingURL=OpusParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\n/**\n * Opus ID Header parser\n * Ref: https://wiki.xiph.org/OggOpus#ID_Header\n */\nclass IdHeader {\n constructor(len) {\n this.len = len;\n if (len < 19) {\n throw new Error(\"ID-header-page 0 should be at least 19 bytes long\");\n }\n }\n get(buf, off) {\n return {\n magicSignature: new Token.StringType(8, 'ascii').get(buf, off + 0),\n version: buf.readUInt8(off + 8),\n channelCount: buf.readUInt8(off + 9),\n preSkip: buf.readInt16LE(off + 10),\n inputSampleRate: buf.readInt32LE(off + 12),\n outputGain: buf.readInt16LE(off + 16),\n channelMapping: buf.readUInt8(off + 18)\n };\n }\n}\nexports.IdHeader = IdHeader;\n//# sourceMappingURL=Opus.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst initDebug = require(\"debug\");\nconst Speex = require(\"./Speex\");\nconst VorbisParser_1 = require(\"../vorbis/VorbisParser\");\nconst debug = initDebug('music-metadata:parser:ogg:speex');\n/**\n * Speex, RFC 5574\n * Ref:\n * https://www.speex.org/docs/manual/speex-manual/\n * https://tools.ietf.org/html/rfc5574\n */\nclass SpeexParser extends VorbisParser_1.VorbisParser {\n constructor(metadata, options, tokenizer) {\n super(metadata, options);\n this.tokenizer = tokenizer;\n this.codecName = 'Speex';\n this.lastPos = -1;\n }\n /**\n * Parse first Speex Ogg page\n * @param {IPageHeader} header\n * @param {Buffer} pageData\n */\n parseFirstPage(header, pageData) {\n debug('First Ogg/Speex page');\n let speexHeader = Speex.Header.get(pageData, 0);\n speexHeader = speexHeader;\n this.metadata.setFormat('numberOfChannels', speexHeader.nb_channels);\n this.metadata.setFormat('sampleRate', speexHeader.rate);\n this.metadata.setFormat('encoder', speexHeader.version);\n if (speexHeader.bitrate !== -1) {\n this.metadata.setFormat('bitrate', speexHeader.bitrate);\n }\n }\n}\nexports.SpeexParser = SpeexParser;\n//# sourceMappingURL=SpeexParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst Util_1 = require(\"../../common/Util\");\n/**\n * Speex Header Packet\n * Ref: https://www.speex.org/docs/manual/speex-manual/node8.html#SECTION00830000000000000000\n */\nexports.Header = {\n len: 80,\n get: (buf, off) => {\n return {\n speex: new Token.StringType(8, 'ascii').get(buf, off + 0),\n version: Util_1.default.trimRightNull(new Token.StringType(20, 'ascii').get(buf, off + 8)),\n version_id: buf.readInt32LE(off + 28),\n header_size: buf.readInt32LE(off + 32),\n rate: buf.readInt32LE(off + 36),\n mode: buf.readInt32LE(off + 40),\n mode_bitstream_version: buf.readInt32LE(off + 44),\n nb_channels: buf.readInt32LE(off + 48),\n bitrate: buf.readInt32LE(off + 52),\n frame_size: buf.readInt32LE(off + 56),\n vbr: buf.readInt32LE(off + 60),\n frames_per_packet: buf.readInt32LE(off + 64),\n extra_headers: buf.readInt32LE(off + 68),\n reserved1: buf.readInt32LE(off + 72),\n reserved2: buf.readInt32LE(off + 76)\n };\n }\n};\n//# sourceMappingURL=Speex.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst type_1 = require(\"strtok3/lib/type\");\nconst strtok3 = require(\"strtok3/lib/core\");\nconst Token = require(\"token-types\");\nconst initDebug = require(\"debug\");\nconst riff = require(\"./RiffChunk\");\nconst WaveChunk = require(\"./../wav/WaveChunk\");\nconst ID3v2Parser_1 = require(\"../id3v2/ID3v2Parser\");\nconst Util_1 = require(\"../common/Util\");\nconst FourCC_1 = require(\"../common/FourCC\");\nconst BasicParser_1 = require(\"../common/BasicParser\");\nconst ID3Stream_1 = require(\"../id3v2/ID3Stream\");\nconst debug = initDebug('music-metadata:parser:RIFF');\n/**\n * Resource Interchange File Format (RIFF) Parser\n *\n * WAVE PCM soundfile format\n *\n * Ref:\n * http://www.johnloomis.org/cpe102/asgn/asgn1/riff.html\n * http://soundfile.sapp.org/doc/WaveFormat\n *\n * ToDo: Split WAVE part from RIFF parser\n */\nclass WaveParser extends BasicParser_1.BasicParser {\n parse() {\n return __awaiter(this, void 0, void 0, function* () {\n const riffHeader = yield this.tokenizer.readToken(riff.Header);\n debug(`pos=${this.tokenizer.position}, parse: chunkID=${riffHeader.chunkID}`);\n if (riffHeader.chunkID !== 'RIFF')\n return; // Not RIFF format\n return this.parseRiffChunk().catch(err => {\n if (err.message !== type_1.endOfFile) {\n throw err;\n }\n });\n });\n }\n parseRiffChunk() {\n return __awaiter(this, void 0, void 0, function* () {\n const type = yield this.tokenizer.readToken(FourCC_1.FourCcToken);\n this.metadata.setFormat('dataformat', type);\n switch (type) {\n case 'WAVE':\n return this.readWaveChunk();\n default:\n throw new Error(`Unsupported RIFF format: RIFF/${type}`);\n }\n });\n }\n readWaveChunk() {\n return __awaiter(this, void 0, void 0, function* () {\n do {\n const header = yield this.tokenizer.readToken(riff.Header);\n this.header = header;\n debug(`pos=${this.tokenizer.position}, readChunk: chunkID=RIFF/WAVE/${header.chunkID}`);\n switch (header.chunkID) {\n case 'LIST':\n yield this.parseListTag(header);\n break;\n case 'fact': // extended Format chunk,\n this.metadata.setFormat('lossless', false);\n this.fact = yield this.tokenizer.readToken(new WaveChunk.FactChunk(header));\n break;\n case 'fmt ': // The Util Chunk, non-PCM Formats\n const fmt = yield this.tokenizer.readToken(new WaveChunk.Format(header));\n let subFormat = WaveChunk.WaveFormat[fmt.wFormatTag];\n if (!subFormat) {\n debug('WAVE/non-PCM format=' + fmt.wFormatTag);\n subFormat = 'non-PCM (' + fmt.wFormatTag + ')';\n }\n this.metadata.setFormat('dataformat', 'WAVE/' + subFormat);\n this.metadata.setFormat('bitsPerSample', fmt.wBitsPerSample);\n this.metadata.setFormat('sampleRate', fmt.nSamplesPerSec);\n this.metadata.setFormat('numberOfChannels', fmt.nChannels);\n this.metadata.setFormat('bitrate', fmt.nBlockAlign * fmt.nSamplesPerSec * 8);\n this.blockAlign = fmt.nBlockAlign;\n break;\n case 'id3 ': // The way Picard, FooBar currently stores, ID3 meta-data\n case 'ID3 ': // The way Mp3Tags stores ID3 meta-data\n const id3_data = yield this.tokenizer.readToken(new Token.BufferType(header.chunkSize));\n const id3stream = new ID3Stream_1.ID3Stream(id3_data);\n const rst = strtok3.fromStream(id3stream);\n yield new ID3v2Parser_1.ID3v2Parser().parse(this.metadata, rst, this.options);\n break;\n case 'data': // PCM-data\n if (this.metadata.format.lossless !== false) {\n this.metadata.setFormat('lossless', true);\n }\n const numberOfSamples = this.fact ? this.fact.dwSampleLength : (header.chunkSize / this.blockAlign);\n this.metadata.setFormat('numberOfSamples', numberOfSamples);\n this.metadata.setFormat('duration', numberOfSamples / this.metadata.format.sampleRate);\n this.metadata.setFormat('bitrate', this.metadata.format.numberOfChannels * this.blockAlign * this.metadata.format.sampleRate); // ToDo: check me\n yield this.tokenizer.ignore(header.chunkSize);\n break;\n default:\n debug(`Ignore chunk: RIFF/${header.chunkID} of ${header.chunkSize} bytes`);\n this.warnings.push('Ignore chunk: RIFF/' + header.chunkID);\n yield this.tokenizer.ignore(header.chunkSize);\n }\n if (this.header.chunkSize % 2 === 1) {\n debug('Read odd padding byte'); // https://wiki.multimedia.cx/index.php/RIFF\n yield this.tokenizer.ignore(1);\n }\n } while (true);\n });\n }\n parseListTag(listHeader) {\n return __awaiter(this, void 0, void 0, function* () {\n const listType = yield this.tokenizer.readToken(FourCC_1.FourCcToken);\n debug('pos=%s, parseListTag: chunkID=RIFF/WAVE/LIST/%s', this.tokenizer.position, listType);\n switch (listType) {\n case 'INFO':\n return this.parseRiffInfoTags(listHeader.chunkSize - 4);\n case 'adtl':\n default:\n this.warnings.push('Ignore chunk: RIFF/WAVE/LIST/' + listType);\n debug('Ignoring chunkID=RIFF/WAVE/LIST/' + listType);\n return this.tokenizer.ignore(listHeader.chunkSize - 4);\n }\n });\n }\n parseRiffInfoTags(chunkSize) {\n return __awaiter(this, void 0, void 0, function* () {\n while (chunkSize >= 8) {\n const header = yield this.tokenizer.readToken(riff.Header);\n const valueToken = new riff.ListInfoTagValue(header);\n const value = yield this.tokenizer.readToken(valueToken);\n this.addTag(header.chunkID, Util_1.default.stripNulls(value));\n chunkSize -= (8 + valueToken.len);\n }\n if (chunkSize !== 0) {\n throw Error('Illegal remaining size: ' + chunkSize);\n }\n });\n }\n addTag(id, value) {\n this.metadata.addTag('exif', id, value);\n }\n}\nexports.WaveParser = WaveParser;\n//# sourceMappingURL=WaveParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst FourCC_1 = require(\"../common/FourCC\");\n/**\n * Common RIFF chunk header\n */\nexports.Header = {\n len: 8,\n get: (buf, off) => {\n return {\n // Group-ID\n chunkID: FourCC_1.FourCcToken.get(buf, off),\n // Size\n chunkSize: buf.readUInt32LE(off + 4)\n };\n }\n};\n/**\n * Token to parse RIFF-INFO tag value\n */\nclass ListInfoTagValue {\n constructor(tagHeader) {\n this.tagHeader = tagHeader;\n this.len = tagHeader.chunkSize;\n this.len += this.len & 1; // if it is an odd length, round up to even\n }\n get(buf, off) {\n return new Token.StringType(this.tagHeader.chunkSize, 'ascii').get(buf, off);\n }\n}\nexports.ListInfoTagValue = ListInfoTagValue;\n//# sourceMappingURL=RiffChunk.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst assert = require(\"assert\");\n/**\n * Ref: https://msdn.microsoft.com/en-us/library/windows/desktop/dd317599(v=vs.85).aspx\n */\nvar WaveFormat;\n(function (WaveFormat) {\n WaveFormat[WaveFormat[\"PCM\"] = 1] = \"PCM\";\n // MPEG-4 and AAC Audio Types\n WaveFormat[WaveFormat[\"ADPCM\"] = 2] = \"ADPCM\";\n WaveFormat[WaveFormat[\"IEEE_FLOAT\"] = 3] = \"IEEE_FLOAT\";\n WaveFormat[WaveFormat[\"MPEG_ADTS_AAC\"] = 5632] = \"MPEG_ADTS_AAC\";\n WaveFormat[WaveFormat[\"MPEG_LOAS\"] = 5634] = \"MPEG_LOAS\";\n WaveFormat[WaveFormat[\"RAW_AAC1\"] = 255] = \"RAW_AAC1\";\n // Dolby Audio Types\n WaveFormat[WaveFormat[\"DOLBY_AC3_SPDIF\"] = 146] = \"DOLBY_AC3_SPDIF\";\n WaveFormat[WaveFormat[\"DVM\"] = 8192] = \"DVM\";\n WaveFormat[WaveFormat[\"RAW_SPORT\"] = 576] = \"RAW_SPORT\";\n WaveFormat[WaveFormat[\"ESST_AC3\"] = 577] = \"ESST_AC3\";\n WaveFormat[WaveFormat[\"DRM\"] = 9] = \"DRM\";\n WaveFormat[WaveFormat[\"DTS2\"] = 8193] = \"DTS2\";\n WaveFormat[WaveFormat[\"MPEG\"] = 80] = \"MPEG\";\n})(WaveFormat = exports.WaveFormat || (exports.WaveFormat = {}));\n/**\n * format chunk; chunk-id is \"fmt \"\n * http://soundfile.sapp.org/doc/WaveFormat/\n */\nclass Format {\n constructor(header) {\n assert.ok(header.chunkSize >= 16, \"16 for PCM.\");\n this.len = header.chunkSize;\n }\n get(buf, off) {\n return {\n wFormatTag: buf.readUInt16LE(off),\n nChannels: buf.readUInt16LE(off + 2),\n nSamplesPerSec: buf.readUInt32LE(off + 4),\n nAvgBytesPerSec: buf.readUInt32LE(off + 8),\n nBlockAlign: buf.readUInt16LE(off + 12),\n wBitsPerSample: buf.readUInt16LE(off + 14)\n };\n }\n}\nexports.Format = Format;\n/**\n * Fact chunk; chunk-id is \"fact\"\n * http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html\n * http://www.recordingblogs.com/wiki/fact-chunk-of-a-wave-file\n */\nclass FactChunk {\n constructor(header) {\n assert.ok(header.chunkSize >= 4, \"minimum fact chunk size.\");\n this.len = header.chunkSize;\n }\n get(buf, off) {\n return {\n dwSampleLength: buf.readUInt32LE(off)\n };\n }\n}\nexports.FactChunk = FactChunk;\n//# sourceMappingURL=WaveChunk.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst assert = require(\"assert\");\nconst APEv2Parser_1 = require(\"../apev2/APEv2Parser\");\nconst FourCC_1 = require(\"../common/FourCC\");\nconst BasicParser_1 = require(\"../common/BasicParser\");\nconst WavPackToken_1 = require(\"./WavPackToken\");\nconst initDebug = require(\"debug\");\nconst debug = initDebug('music-metadata:parser:WavPack');\n/**\n * WavPack Parser\n */\nclass WavPackParser extends BasicParser_1.BasicParser {\n parse() {\n return __awaiter(this, void 0, void 0, function* () {\n this.audioDataSize = 0;\n // First parse all WavPack blocks\n yield this.parseWavPackBlocks();\n // try to parse APEv2 header\n return APEv2Parser_1.APEv2Parser.parseTagHeader(this.metadata, this.tokenizer, this.options);\n });\n }\n parseWavPackBlocks() {\n return __awaiter(this, void 0, void 0, function* () {\n do {\n const blockId = yield this.tokenizer.peekToken(FourCC_1.FourCcToken);\n if (blockId !== 'wvpk')\n break;\n const header = yield this.tokenizer.readToken(WavPackToken_1.WavPack.BlockHeaderToken);\n assert.strictEqual(header.BlockID, 'wvpk', 'WavPack Block-ID');\n debug(`WavPack header blockIndex=${header.blockIndex}, len=${WavPackToken_1.WavPack.BlockHeaderToken.len}`);\n if (header.blockIndex === 0 && !this.metadata.format.dataformat) {\n this.metadata.setFormat('dataformat', 'WavPack');\n this.metadata.setFormat('lossless', !header.flags.isHybrid);\n // tagTypes: this.type,\n this.metadata.setFormat('bitsPerSample', header.flags.bitsPerSample);\n if (!header.flags.isDSD) {\n // In case isDSD, these values will ne set in ID_DSD_BLOCK\n this.metadata.setFormat('sampleRate', header.flags.samplingRate);\n this.metadata.setFormat('duration', header.totalSamples / header.flags.samplingRate);\n }\n this.metadata.setFormat('numberOfChannels', header.flags.isMono ? 1 : 2);\n this.metadata.setFormat('numberOfSamples', header.totalSamples);\n this.metadata.setFormat('codecProfile', header.flags.isDSD ? 'DSD' : 'PCM');\n }\n const ignoreBytes = header.blockSize - (WavPackToken_1.WavPack.BlockHeaderToken.len - 8);\n if (header.blockIndex === 0) {\n // Meta-data block\n yield this.parseMetadataSubBlock(header, ignoreBytes);\n }\n else {\n yield this.tokenizer.ignore(ignoreBytes);\n }\n if (header.blockSamples > 0) {\n this.audioDataSize += header.blockSize; // Count audio data for bit-rate calculation\n }\n } while (!this.tokenizer.fileSize || this.tokenizer.fileSize - this.tokenizer.position >= WavPackToken_1.WavPack.BlockHeaderToken.len);\n this.metadata.setFormat('bitrate', this.audioDataSize * 8 / this.metadata.format.duration);\n });\n }\n /**\n * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf, 3.0 Metadata Sub-blocks\n * @param remainingLength\n */\n parseMetadataSubBlock(header, remainingLength) {\n return __awaiter(this, void 0, void 0, function* () {\n while (remainingLength > WavPackToken_1.WavPack.MetadataIdToken.len) {\n const id = yield this.tokenizer.readToken(WavPackToken_1.WavPack.MetadataIdToken);\n const dataSizeInWords = yield this.tokenizer.readNumber(id.largeBlock ? Token.UINT24_LE : Token.UINT8);\n const data = Buffer.alloc(dataSizeInWords * 2 - (id.isOddSize ? 1 : 0));\n yield this.tokenizer.readBuffer(data, 0, data.length);\n debug(`Metadata Sub-Blocks functionId=0x${id.functionId.toString(16)}, id.largeBlock=${id.largeBlock},data-size=${data.length}`);\n switch (id.functionId) {\n case 0x0: // ID_DUMMY: could be used to pad WavPack blocks\n break;\n case 0xe: // ID_DSD_BLOCK\n debug('ID_DSD_BLOCK');\n // https://github.com/dbry/WavPack/issues/71#issuecomment-483094813\n const mp = 1 << data.readUInt8(0);\n const samplingRate = header.flags.samplingRate * mp * 8; // ToDo: second factor should be read from DSD-metadata block https://github.com/dbry/WavPack/issues/71#issuecomment-483094813\n assert.ok(header.flags.isDSD, 'Only expect DSD block if DSD-flag is set');\n this.metadata.setFormat('sampleRate', samplingRate);\n this.metadata.setFormat('duration', header.totalSamples / samplingRate);\n break;\n case 0x24: // ID_ALT_TRAILER: maybe used to embed original ID3 tag header\n debug('ID_ALT_TRAILER: trailer for non-wav files');\n break;\n case 0x26: // ID_MD5_CHECKSUM\n this.metadata.setFormat('audioMD5', data);\n break;\n case 0x2f: // ID_BLOCK_CHECKSUM\n debug(`ID_BLOCK_CHECKSUM: checksum=${data.toString('hex')}`);\n break;\n default:\n debug(`Ignore unsupported meta-sub-block-id functionId=0x${id.functionId.toString(16)}`);\n break;\n }\n remainingLength -= WavPackToken_1.WavPack.MetadataIdToken.len + (id.largeBlock ? Token.UINT24_LE.len : Token.UINT8.len) + dataSizeInWords * 2;\n debug(`remainingLength=${remainingLength}`);\n if (id.isOddSize)\n this.tokenizer.ignore(1);\n }\n assert.strictEqual(remainingLength, 0, 'metadata-sub-block should fit it remaining length');\n });\n }\n}\nexports.WavPackParser = WavPackParser;\n//# sourceMappingURL=WavPackParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst FourCC_1 = require(\"../common/FourCC\");\nconst SampleRates = [6000, 8000, 9600, 11025, 12000, 16000, 22050, 24000, 32000, 44100,\n 48000, 64000, 88200, 96000, 192000, -1];\nclass WavPack {\n static isBitSet(flags, bitOffset) {\n return WavPack.getBitAllignedNumber(flags, bitOffset, 1) === 1;\n }\n static getBitAllignedNumber(flags, bitOffset, len) {\n return (flags >>> bitOffset) & (0xffffffff >>> (32 - len));\n }\n}\n/**\n * WavPack Block Header\n *\n * 32-byte little-endian header at the front of every WavPack block\n *\n * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 2/6: 2.0 \"Block Header\")\n */\nWavPack.BlockHeaderToken = {\n len: 32,\n get: (buf, off) => {\n const flags = Token.UINT32_LE.get(buf, off + 24);\n const res = {\n // should equal 'wvpk'\n BlockID: FourCC_1.FourCcToken.get(buf, off),\n // 0x402 to 0x410 are valid for decode\n blockSize: Token.UINT32_LE.get(buf, off + 4),\n // 0x402 (1026) to 0x410 are valid for decode\n version: Token.UINT16_LE.get(buf, off + 8),\n // 40-bit total samples for entire file (if block_index == 0 and a value of -1 indicates an unknown length)\n totalSamples: (Token.UINT8.get(buf, off + 11) << 32) + Token.UINT32_LE.get(buf, off + 12),\n // 40-bit block_index\n blockIndex: (Token.UINT8.get(buf, off + 10) << 32) + Token.UINT32_LE.get(buf, off + 16),\n // 40-bit total samples for entire file (if block_index == 0 and a value of -1 indicates an unknown length)\n blockSamples: Token.UINT32_LE.get(buf, off + 20),\n // various flags for id and decoding\n flags: {\n bitsPerSample: (1 + WavPack.getBitAllignedNumber(flags, 0, 2)) * 8,\n isMono: WavPack.isBitSet(flags, 2),\n isHybrid: WavPack.isBitSet(flags, 3),\n isJointStereo: WavPack.isBitSet(flags, 4),\n crossChannel: WavPack.isBitSet(flags, 5),\n hybridNoiseShaping: WavPack.isBitSet(flags, 6),\n floatingPoint: WavPack.isBitSet(flags, 7),\n samplingRate: SampleRates[WavPack.getBitAllignedNumber(flags, 23, 4)],\n isDSD: WavPack.isBitSet(flags, 31)\n },\n // crc for actual decoded data\n crc: new Token.BufferType(4).get(buf, off + 28)\n };\n if (res.flags.isDSD) {\n res.totalSamples *= 8;\n }\n return res;\n }\n};\n/**\n * 3.0 Metadata Sub-Blocks\n * Ref: http://www.wavpack.com/WavPack5FileFormat.pdf (page 4/6: 3.0 \"Metadata Sub-Block\")\n */\nWavPack.MetadataIdToken = {\n len: 1,\n get: (buf, off) => {\n return {\n functionId: WavPack.getBitAllignedNumber(buf[off], 0, 6),\n isOptional: WavPack.isBitSet(buf[off], 5),\n isOddSize: WavPack.isBitSet(buf[off], 6),\n largeBlock: WavPack.isBitSet(buf[off], 7)\n };\n }\n};\nexports.WavPack = WavPack;\n//# sourceMappingURL=WavPackToken.js.map","'use strict';\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst AbstractID3Parser_1 = require(\"../id3v2/AbstractID3Parser\");\nconst assert = require(\"assert\");\nconst _debug = require(\"debug\");\nconst DsfChunk_1 = require(\"./DsfChunk\");\nconst ID3v2Parser_1 = require(\"../id3v2/ID3v2Parser\");\nconst debug = _debug('music-metadata:parser:DSF');\n/**\n * DSF (dsd stream file) File Parser\n * Ref: https://dsd-guide.com/sites/default/files/white-papers/DSFFileFormatSpec_E.pdf\n */\nclass DsfParser extends AbstractID3Parser_1.AbstractID3Parser {\n _parse() {\n return __awaiter(this, void 0, void 0, function* () {\n const p0 = this.tokenizer.position; // mark start position, normally 0\n const chunkHeader = yield this.tokenizer.readToken(DsfChunk_1.ChunkHeader);\n assert.strictEqual(chunkHeader.id, 'DSD ', 'Invalid chunk signature');\n this.metadata.setFormat('dataformat', 'DSF');\n this.metadata.setFormat('lossless', true);\n const dsdChunk = yield this.tokenizer.readToken(DsfChunk_1.DsdChunk);\n if (dsdChunk.metadataPointer === 0) {\n debug(`No ID3v2 tag present`);\n }\n else {\n debug(`expect ID3v2 at offset=${dsdChunk.metadataPointer}`);\n yield this.parseChunks(dsdChunk.fileSize - chunkHeader.size);\n // Jump to ID3 header\n yield this.tokenizer.ignore(dsdChunk.metadataPointer - this.tokenizer.position - p0);\n return new ID3v2Parser_1.ID3v2Parser().parse(this.metadata, this.tokenizer, this.options);\n }\n });\n }\n parseChunks(bytesRemaining) {\n return __awaiter(this, void 0, void 0, function* () {\n while (bytesRemaining >= DsfChunk_1.ChunkHeader.len) {\n const chunkHeader = yield this.tokenizer.readToken(DsfChunk_1.ChunkHeader);\n debug(`Parsing chunk name=${chunkHeader.id} size=${chunkHeader.size}`);\n switch (chunkHeader.id) {\n case 'fmt ':\n const formatChunk = yield this.tokenizer.readToken(DsfChunk_1.FormatChunk);\n this.metadata.setFormat('numberOfChannels', formatChunk.channelNum);\n this.metadata.setFormat('sampleRate', formatChunk.samplingFrequency);\n this.metadata.setFormat('bitsPerSample', formatChunk.bitsPerSample);\n this.metadata.setFormat('numberOfSamples', formatChunk.sampleCount);\n this.metadata.setFormat('duration', formatChunk.sampleCount / formatChunk.samplingFrequency);\n const bitrate = formatChunk.bitsPerSample * formatChunk.samplingFrequency * formatChunk.channelNum;\n this.metadata.setFormat('bitrate', bitrate);\n return; // We got what we want, stop further processing of chunks\n default:\n this.tokenizer.ignore(chunkHeader.size - DsfChunk_1.ChunkHeader.len);\n break;\n }\n bytesRemaining -= chunkHeader.size;\n }\n });\n }\n}\nexports.DsfParser = DsfParser;\n//# sourceMappingURL=DsfParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst FourCC_1 = require(\"../common/FourCC\");\n/**\n * Common chunk DSD header: the 'chunk name (Four-CC)' & chunk size\n */\nexports.ChunkHeader = {\n len: 12,\n get: (buf, off) => {\n return { id: FourCC_1.FourCcToken.get(buf, off), size: Token.UINT64_LE.get(buf, off + 4) };\n }\n};\n/**\n * Common chunk DSD header: the 'chunk name (Four-CC)' & chunk size\n */\nexports.DsdChunk = {\n len: 16,\n get: (buf, off) => {\n return {\n fileSize: Token.INT64_LE.get(buf, off),\n metadataPointer: Token.INT64_LE.get(buf, off + 8)\n };\n }\n};\nvar ChannelType;\n(function (ChannelType) {\n ChannelType[ChannelType[\"mono\"] = 1] = \"mono\";\n ChannelType[ChannelType[\"stereo\"] = 2] = \"stereo\";\n ChannelType[ChannelType[\"channels\"] = 3] = \"channels\";\n ChannelType[ChannelType[\"quad\"] = 4] = \"quad\";\n ChannelType[ChannelType[\"4 channels\"] = 5] = \"4 channels\";\n ChannelType[ChannelType[\"5 channels\"] = 6] = \"5 channels\";\n ChannelType[ChannelType[\"5.1 channels\"] = 7] = \"5.1 channels\";\n})(ChannelType = exports.ChannelType || (exports.ChannelType = {}));\n/**\n * Common chunk DSD header: the 'chunk name (Four-CC)' & chunk size\n */\nexports.FormatChunk = {\n len: 40,\n get: (buf, off) => {\n return {\n formatVersion: Token.INT32_LE.get(buf, off),\n formatID: Token.INT32_LE.get(buf, off + 4),\n channelType: Token.INT32_LE.get(buf, off + 8),\n channelNum: Token.INT32_LE.get(buf, off + 12),\n samplingFrequency: Token.INT32_LE.get(buf, off + 16),\n bitsPerSample: Token.INT32_LE.get(buf, off + 20),\n sampleCount: Token.INT64_LE.get(buf, off + 24),\n blockSizePerChannel: Token.INT32_LE.get(buf, off + 32)\n };\n }\n};\n//# sourceMappingURL=DsfChunk.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst assert = require(\"assert\");\nconst Token = require(\"token-types\");\nconst initDebug = require(\"debug\");\nconst FourCC_1 = require(\"../common/FourCC\");\nconst BasicParser_1 = require(\"../common/BasicParser\");\nconst ID3Stream_1 = require(\"../id3v2/ID3Stream\");\nconst DsdiffToken_1 = require(\"./DsdiffToken\");\nconst strtok3 = require(\"strtok3/lib/core\");\nconst ID3v2Parser_1 = require(\"../id3v2/ID3v2Parser\");\nconst debug = initDebug('music-metadata:parser:aiff');\n/**\n * DSDIFF - Direct Stream Digital Interchange File Format (Phillips)\n *\n * Ref:\n * http://www.sonicstudio.com/pdf/dsd/DSDIFF_1.5_Spec.pdf\n */\nclass DsdiffParser extends BasicParser_1.BasicParser {\n parse() {\n return __awaiter(this, void 0, void 0, function* () {\n const header = yield this.tokenizer.readToken(DsdiffToken_1.ChunkHeader);\n assert.strictEqual(header.chunkID, 'FRM8');\n const type = (yield this.tokenizer.readToken(FourCC_1.FourCcToken)).trim();\n switch (type) {\n case 'DSD':\n this.metadata.setFormat('dataformat', `DSDIFF/${type}`);\n this.metadata.setFormat('lossless', true);\n return this.readFmt8Chunks(header.chunkSize - FourCC_1.FourCcToken.len);\n default:\n throw Error(`Unsupported DSDIFF type: ${type}`);\n }\n });\n }\n readFmt8Chunks(remainingSize) {\n return __awaiter(this, void 0, void 0, function* () {\n while (remainingSize >= DsdiffToken_1.ChunkHeader.len) {\n const chunkHeader = yield this.tokenizer.readToken(DsdiffToken_1.ChunkHeader);\n // If the data is an odd number of bytes in length, a pad byte must be added at the end\n debug(`Chunk id=${chunkHeader.chunkID}`);\n yield this.readData(chunkHeader);\n remainingSize -= (DsdiffToken_1.ChunkHeader.len + chunkHeader.chunkSize);\n }\n });\n }\n readData(header) {\n return __awaiter(this, void 0, void 0, function* () {\n debug(`Reading data of chunk[ID=${header.chunkID}, size=${header.chunkSize}]`);\n const p0 = this.tokenizer.position;\n switch (header.chunkID.trim()) {\n case 'FVER': // 3.1 FORMAT VERSION CHUNK\n const version = yield this.tokenizer.readToken(Token.UINT32_LE);\n debug(`DSDIFF version=${version}`);\n break;\n case 'PROP': // 3.2 PROPERTY CHUNK\n const propType = yield this.tokenizer.readToken(FourCC_1.FourCcToken);\n assert.strictEqual(propType, 'SND ');\n yield this.handleSoundPropertyChunks(header.chunkSize - FourCC_1.FourCcToken.len);\n break;\n case 'ID3': // Unofficial ID3 tag support\n const id3_data = yield this.tokenizer.readToken(new Token.BufferType(header.chunkSize));\n const id3stream = new ID3Stream_1.ID3Stream(id3_data);\n const rst = strtok3.fromStream(id3stream);\n yield new ID3v2Parser_1.ID3v2Parser().parse(this.metadata, rst, this.options);\n break;\n default:\n debug(`Ignore chunk[ID=${header.chunkID}, size=${header.chunkSize}]`);\n break;\n case 'DSD':\n this.metadata.setFormat('numberOfSamples', header.chunkSize * 8 / this.metadata.format.numberOfChannels);\n this.metadata.setFormat('duration', this.metadata.format.numberOfSamples / this.metadata.format.sampleRate);\n break;\n }\n const remaining = header.chunkSize - (this.tokenizer.position - p0);\n if (remaining > 0) {\n debug(`After Parsing chunk, remaining ${remaining} bytes`);\n yield this.tokenizer.ignore(remaining);\n }\n });\n }\n handleSoundPropertyChunks(remainingSize) {\n return __awaiter(this, void 0, void 0, function* () {\n debug(`Parsing sound-property-chunks, remainingSize=${remainingSize}`);\n while (remainingSize > 0) {\n const sndPropHeader = yield this.tokenizer.readToken(DsdiffToken_1.ChunkHeader);\n debug(`Sound-property-chunk[ID=${sndPropHeader.chunkID}, size=${sndPropHeader.chunkSize}]`);\n const p0 = this.tokenizer.position;\n switch (sndPropHeader.chunkID.trim()) {\n case 'FS': // 3.2.1 Sample Rate Chunk\n const sampleRate = yield this.tokenizer.readToken(Token.UINT32_BE);\n this.metadata.setFormat('sampleRate', sampleRate);\n break;\n case 'CHNL': // 3.2.2 Channels Chunk\n const numChannels = yield this.tokenizer.readToken(Token.UINT16_BE);\n this.metadata.setFormat('numberOfChannels', numChannels);\n yield this.handleChannelChunks(sndPropHeader.chunkSize - Token.UINT16_BE.len);\n break;\n case 'CMPR': // 3.2.3 Compression Type Chunk\n const compressionIdCode = (yield this.tokenizer.readToken(FourCC_1.FourCcToken)).trim();\n const count = yield this.tokenizer.readToken(Token.UINT8);\n const compressionName = yield this.tokenizer.readToken(new Token.StringType(count, 'ascii'));\n if (compressionIdCode === 'DSD') {\n this.metadata.setFormat('lossless', true);\n this.metadata.setFormat('bitsPerSample', 1);\n }\n this.metadata.setFormat('encoder', `${compressionIdCode} (${compressionName})`);\n break;\n case 'ABSS': // 3.2.4 Absolute Start Time Chunk\n const hours = yield this.tokenizer.readToken(Token.UINT16_BE);\n const minutes = yield this.tokenizer.readToken(Token.UINT8);\n const seconds = yield this.tokenizer.readToken(Token.UINT8);\n const samples = yield this.tokenizer.readToken(Token.UINT32_BE);\n debug(`ABSS ${hours}:${minutes}:${seconds}.${samples}`);\n break;\n case 'LSCO': // 3.2.5 Loudspeaker Configuration Chunk\n const lsConfig = yield this.tokenizer.readToken(Token.UINT16_BE);\n debug(`LSCO lsConfig=${lsConfig}`);\n break;\n case 'COMT':\n default:\n debug(`Unknown sound-property-chunk[ID=${sndPropHeader.chunkID}, size=${sndPropHeader.chunkSize}]`);\n yield this.tokenizer.ignore(sndPropHeader.chunkSize);\n }\n const remaining = sndPropHeader.chunkSize - (this.tokenizer.position - p0);\n if (remaining > 0) {\n debug(`After Parsing sound-property-chunk ${sndPropHeader.chunkSize}, remaining ${remaining} bytes`);\n yield this.tokenizer.ignore(remaining);\n }\n remainingSize -= DsdiffToken_1.ChunkHeader.len + sndPropHeader.chunkSize;\n debug(`Parsing sound-property-chunks, remainingSize=${remainingSize}`);\n }\n if (this.metadata.format.lossless && this.metadata.format.sampleRate && this.metadata.format.numberOfChannels && this.metadata.format.bitsPerSample) {\n const bitrate = this.metadata.format.sampleRate * this.metadata.format.numberOfChannels * this.metadata.format.bitsPerSample;\n this.metadata.setFormat('bitrate', bitrate);\n }\n });\n }\n handleChannelChunks(remainingSize) {\n return __awaiter(this, void 0, void 0, function* () {\n debug(`Parsing channel-chunks, remainingSize=${remainingSize}`);\n const channels = [];\n while (remainingSize >= FourCC_1.FourCcToken.len) {\n const channelId = yield this.tokenizer.readToken(FourCC_1.FourCcToken);\n debug(`Channel[ID=${channelId}]`);\n channels.push(channelId);\n remainingSize -= FourCC_1.FourCcToken.len;\n }\n debug(`Channels: ${channels.join(', ')}`);\n return channels;\n });\n }\n}\nexports.DsdiffParser = DsdiffParser;\n//# sourceMappingURL=DsdiffParser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Token = require(\"token-types\");\nconst FourCC_1 = require(\"../common/FourCC\");\n/**\n * DSDIFF chunk header\n * The data-size encoding is deviating from EA-IFF 85\n * Ref: http://www.sonicstudio.com/pdf/dsd/DSDIFF_1.5_Spec.pdf\n */\nexports.ChunkHeader = {\n len: 12,\n get: (buf, off) => {\n return {\n // Group-ID\n chunkID: FourCC_1.FourCcToken.get(buf, off),\n // Size\n chunkSize: Token.INT64_BE.get(buf, off + 4)\n };\n }\n};\n//# sourceMappingURL=DsdiffToken.js.map","/**\n * Convert a typed array to a Buffer without a copy\n *\n * Author: Feross Aboukhadijeh <https://feross.org>\n * License: MIT\n *\n * `npm install typedarray-to-buffer`\n */\n\nvar isTypedArray = require('is-typedarray').strict\n\nmodule.exports = function typedarrayToBuffer (arr) {\n if (isTypedArray(arr)) {\n // To avoid a copy, use the typed array's underlying ArrayBuffer to back new Buffer\n var buf = Buffer.from(arr.buffer)\n if (arr.byteLength !== arr.buffer.byteLength) {\n // Respect the \"view\", i.e. byteOffset and byteLength, without doing a copy\n buf = buf.slice(arr.byteOffset, arr.byteOffset + arr.byteLength)\n }\n return buf\n } else {\n // Pass through all other types to `Buffer.from`\n return Buffer.from(arr)\n }\n}\n","module.exports = isTypedArray\nisTypedArray.strict = isStrictTypedArray\nisTypedArray.loose = isLooseTypedArray\n\nvar toString = Object.prototype.toString\nvar names = {\n '[object Int8Array]': true\n , '[object Int16Array]': true\n , '[object Int32Array]': true\n , '[object Uint8Array]': true\n , '[object Uint8ClampedArray]': true\n , '[object Uint16Array]': true\n , '[object Uint32Array]': true\n , '[object Float32Array]': true\n , '[object Float64Array]': true\n}\n\nfunction isTypedArray(arr) {\n return (\n isStrictTypedArray(arr)\n || isLooseTypedArray(arr)\n )\n}\n\nfunction isStrictTypedArray(arr) {\n return (\n arr instanceof Int8Array\n || arr instanceof Int16Array\n || arr instanceof Int32Array\n || arr instanceof Uint8Array\n || arr instanceof Uint8ClampedArray\n || arr instanceof Uint16Array\n || arr instanceof Uint32Array\n || arr instanceof Float32Array\n || arr instanceof Float64Array\n )\n}\n\nfunction isLooseTypedArray(arr) {\n return names[toString.call(arr)]\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * A mock readable-stream, using string to read from\n */\nconst stream_1 = require(\"stream\");\n/**\n * Converts a ReadableStream\n * https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader/read\n */\nclass Browser2NodeStream extends stream_1.Readable {\n constructor(stream) {\n super();\n this.bytesRead = 0;\n this.reader = stream.getReader();\n }\n _read() {\n this.reader.read().then(res => {\n if (res.done) {\n this.push(null);\n }\n else {\n this.bytesRead += res.value.length;\n this.push(res.value);\n }\n });\n }\n _destroy(error, callback) {\n this.reader.cancel().then(() => {\n callback(null);\n }).catch(err => {\n callback(err);\n });\n }\n}\nexports.Browser2NodeStream = Browser2NodeStream;\n"],"sourceRoot":""}