{"version":3,"file":"static/js/main.091c7828.js","mappings":"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","sources":["../node_modules/@emotion/hash/dist/hash.browser.esm.js","../node_modules/automation-events/build/es5/bundle.js","../node_modules/css-in-js-utils/lib/hyphenateProperty.js","../node_modules/css-in-js-utils/lib/isPrefixedValue.js","../node_modules/howler/dist/howler.js","../node_modules/hyphenate-style-name/index.js","../node_modules/inline-style-prefixer/es/utils/capitalizeString.js","../node_modules/inline-style-prefixer/es/utils/prefixProperty.js","../node_modules/inline-style-prefixer/es/utils/prefixValue.js","../node_modules/inline-style-prefixer/es/utils/addNewValuesOnly.js","../node_modules/inline-style-prefixer/es/utils/isObject.js","../node_modules/inline-style-prefixer/es/createPrefixer.js","../node_modules/inline-style-prefixer/es/data.js","../node_modules/inline-style-prefixer/es/plugins/cursor.js","../node_modules/inline-style-prefixer/es/plugins/crossFade.js","../node_modules/inline-style-prefixer/es/plugins/filter.js","../node_modules/inline-style-prefixer/es/plugins/flex.js","../node_modules/inline-style-prefixer/es/plugins/flexboxOld.js","../node_modules/inline-style-prefixer/es/plugins/gradient.js","../node_modules/inline-style-prefixer/es/plugins/grid.js","../node_modules/inline-style-prefixer/es/plugins/imageSet.js","../node_modules/inline-style-prefixer/es/plugins/logical.js","../node_modules/inline-style-prefixer/es/plugins/sizing.js","../node_modules/inline-style-prefixer/es/plugins/transition.js","../node_modules/inline-style-prefixer/es/index.js","../node_modules/inline-style-prefixer/es/plugins/backgroundClip.js","../node_modules/inline-style-prefixer/es/plugins/position.js","../node_modules/lodash.merge/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-device-detect/dist/lib.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/ua-parser-js/dist/ua-parser.min.js","../node_modules/ui-box/dist/src/box.js","../node_modules/ui-box/dist/src/cache.js","../node_modules/ui-box/dist/src/enhance-props.js","../node_modules/ui-box/dist/src/enhancers/animation.js","../node_modules/ui-box/dist/src/enhancers/background.js","../node_modules/ui-box/dist/src/enhancers/border-radius.js","../node_modules/ui-box/dist/src/enhancers/borders.js","../node_modules/ui-box/dist/src/enhancers/box-shadow.js","../node_modules/ui-box/dist/src/enhancers/dimensions.js","../node_modules/ui-box/dist/src/enhancers/flex.js","../node_modules/ui-box/dist/src/enhancers/grid.js","../node_modules/ui-box/dist/src/enhancers/index.js","../node_modules/ui-box/dist/src/enhancers/interaction.js","../node_modules/ui-box/dist/src/enhancers/layout.js","../node_modules/ui-box/dist/src/enhancers/list.js","../node_modules/ui-box/dist/src/enhancers/opacity.js","../node_modules/ui-box/dist/src/enhancers/outline.js","../node_modules/ui-box/dist/src/enhancers/overflow.js","../node_modules/ui-box/dist/src/enhancers/position.js","../node_modules/ui-box/dist/src/enhancers/resize.js","../node_modules/ui-box/dist/src/enhancers/selectors.js","../node_modules/ui-box/dist/src/enhancers/spacing.js","../node_modules/ui-box/dist/src/enhancers/svg.js","../node_modules/ui-box/dist/src/enhancers/text.js","../node_modules/ui-box/dist/src/enhancers/transform.js","../node_modules/ui-box/dist/src/enhancers/transition.js","../node_modules/ui-box/dist/src/expand-aliases.js","../node_modules/ui-box/dist/src/get-class-name.js","../node_modules/ui-box/dist/src/get-css.js","../node_modules/ui-box/dist/src/get-safe-value.js","../node_modules/ui-box/dist/src/index.js","../node_modules/ui-box/dist/src/keyframes.js","../node_modules/ui-box/dist/src/prefixer.js","../node_modules/ui-box/dist/src/styles.js","../node_modules/ui-box/dist/src/utils/decamelize.js","../node_modules/ui-box/dist/src/utils/flatten-object.js","../node_modules/ui-box/dist/src/utils/is-production.js","../node_modules/ui-box/dist/src/utils/regex.js","../node_modules/ui-box/dist/src/utils/safeHref.js","../node_modules/ui-box/dist/src/utils/split-box-props.js","../node_modules/ui-box/dist/src/utils/split-props.js","../node_modules/ui-box/dist/src/utils/style-sheet.js","../node_modules/ui-box/dist/src/value-to-string.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/evergreen-ui/esm/theme/src/theme-tools.js","../node_modules/evergreen-ui/esm/themes/default/components/alert.js","../node_modules/evergreen-ui/esm/themes/default/components/avatar.js","../node_modules/evergreen-ui/esm/themes/default/components/badge.js","../node_modules/evergreen-ui/esm/themes/default/components/button.js","../node_modules/evergreen-ui/esm/themes/default/components/card.js","../node_modules/evergreen-ui/esm/themes/default/components/checkbox.js","../node_modules/evergreen-ui/esm/themes/default/components/code.js","../node_modules/evergreen-ui/esm/themes/default/components/dialog-body.js","../node_modules/evergreen-ui/esm/themes/default/components/dialog-footer.js","../node_modules/evergreen-ui/esm/themes/default/components/dialog-header.js","../node_modules/evergreen-ui/esm/themes/default/components/file-card.js","../node_modules/evergreen-ui/esm/themes/default/tokens/colors.js","../node_modules/evergreen-ui/esm/themes/default/components/file-uploader.js","../node_modules/evergreen-ui/esm/themes/default/components/group.js","../node_modules/evergreen-ui/esm/themes/default/components/heading.js","../node_modules/evergreen-ui/esm/themes/default/components/icon.js","../node_modules/evergreen-ui/esm/themes/default/components/inline-alert.js","../node_modules/evergreen-ui/esm/themes/default/components/input.js","../node_modules/evergreen-ui/esm/themes/default/components/label.js","../node_modules/evergreen-ui/esm/themes/default/components/link.js","../node_modules/evergreen-ui/esm/themes/default/components/list.js","../node_modules/evergreen-ui/esm/themes/default/components/menu-item.js","../node_modules/evergreen-ui/esm/themes/default/components/option.js","../node_modules/evergreen-ui/esm/themes/default/components/pane.js","../node_modules/evergreen-ui/esm/themes/default/components/paragraph.js","../node_modules/evergreen-ui/esm/themes/default/components/table-row.js","../node_modules/evergreen-ui/esm/themes/default/components/text.js","../node_modules/evergreen-ui/esm/themes/default/components/tooltip.js","../node_modules/evergreen-ui/esm/themes/default/components/index.js","../node_modules/evergreen-ui/esm/themes/default/components/select.js","../node_modules/evergreen-ui/esm/themes/default/components/spinner.js","../node_modules/evergreen-ui/esm/themes/default/components/switch.js","../node_modules/evergreen-ui/esm/themes/default/components/tab.js","../node_modules/evergreen-ui/esm/themes/default/components/table.js","../node_modules/evergreen-ui/esm/themes/default/components/table-cell.js","../node_modules/evergreen-ui/esm/themes/default/components/table-head.js","../node_modules/evergreen-ui/esm/themes/default/components/tag-input.js","../node_modules/evergreen-ui/esm/themes/default/components/text-dropdown-button.js","../node_modules/evergreen-ui/esm/themes/default/tokens/fills.js","../node_modules/evergreen-ui/esm/themes/default/tokens/intents.js","../node_modules/evergreen-ui/esm/themes/default/tokens/radii.js","../node_modules/evergreen-ui/esm/themes/default/tokens/shadows.js","../node_modules/evergreen-ui/esm/themes/default/tokens/typography.js","../node_modules/evergreen-ui/esm/themes/default/tokens/z-indices.js","../node_modules/evergreen-ui/esm/themes/default/tokens/index.js","../node_modules/evergreen-ui/esm/themes/default/index.js","../node_modules/evergreen-ui/esm/theme/src/ThemeContext.js","../node_modules/evergreen-ui/esm/theme/src/useTheme.js","../node_modules/evergreen-ui/esm/hooks/use-style-config.js","../node_modules/evergreen-ui/esm/layers/src/Pane.js","../node_modules/evergreen-ui/esm/scales/src/majorScale.js","../node_modules/gsap/gsap-core.js","../node_modules/gsap/CSSPlugin.js","../node_modules/gsap/index.js","../node_modules/tone/Tone/version.ts","../node_modules/standardized-audio-context/src/factories/abort-error.ts","../node_modules/standardized-audio-context/src/globals.ts","../node_modules/standardized-audio-context/src/helpers/is-constructible.ts","../node_modules/standardized-audio-context/src/helpers/split-import-statements.ts","../node_modules/standardized-audio-context/src/factories/add-audio-worklet-module.ts","../node_modules/standardized-audio-context/src/helpers/get-value-for-key.ts","../node_modules/standardized-audio-context/src/helpers/pick-element-from-set.ts","../node_modules/standardized-audio-context/src/helpers/delete-passive-input-connection-to-audio-node.ts","../node_modules/standardized-audio-context/src/helpers/get-event-listeners-of-audio-node.ts","../node_modules/standardized-audio-context/src/helpers/set-internal-state-to-active.ts","../node_modules/standardized-audio-context/src/guards/audio-worklet-node.ts","../node_modules/standardized-audio-context/src/helpers/set-internal-state-to-passive.ts","../node_modules/standardized-audio-context/src/helpers/set-internal-state-to-passive-when-necessary.ts","../node_modules/standardized-audio-context/src/factories/analyser-node-constructor.ts","../node_modules/standardized-audio-context/src/helpers/is-owned-by-context.ts","../node_modules/standardized-audio-context/src/helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support.ts","../node_modules/standardized-audio-context/src/factories/index-size-error.ts","../node_modules/standardized-audio-context/src/helpers/wrap-audio-buffer-get-channel-data-method.ts","../node_modules/standardized-audio-context/src/factories/audio-buffer-constructor.ts","../node_modules/standardized-audio-context/src/constants.ts","../node_modules/standardized-audio-context/src/helpers/is-active-audio-node.ts","../node_modules/standardized-audio-context/src/factories/audio-buffer-source-node-constructor.ts","../node_modules/standardized-audio-context/src/helpers/get-audio-node-connections.ts","../node_modules/standardized-audio-context/src/helpers/get-audio-param-connections.ts","../node_modules/standardized-audio-context/src/helpers/deactivate-active-audio-node-input-connections.ts","../node_modules/standardized-audio-context/src/guards/audio-buffer-source-node.ts","../node_modules/standardized-audio-context/src/guards/biquad-filter-node.ts","../node_modules/standardized-audio-context/src/guards/constant-source-node.ts","../node_modules/standardized-audio-context/src/guards/gain-node.ts","../node_modules/standardized-audio-context/src/guards/oscillator-node.ts","../node_modules/standardized-audio-context/src/guards/stereo-panner-node.ts","../node_modules/standardized-audio-context/src/helpers/deactivate-audio-graph.ts","../node_modules/standardized-audio-context/src/helpers/is-valid-latency-hint.ts","../node_modules/standardized-audio-context/src/guards/audio-node.ts","../node_modules/standardized-audio-context/src/guards/audio-node-output-connection.ts","../node_modules/standardized-audio-context/src/helpers/insert-element-in-set.ts","../node_modules/standardized-audio-context/src/helpers/add-active-input-connection-to-audio-param.ts","../node_modules/standardized-audio-context/src/helpers/add-passive-input-connection-to-audio-param.ts","../node_modules/standardized-audio-context/src/guards/native-audio-node-faker.ts","../node_modules/standardized-audio-context/src/helpers/connect-native-audio-node-to-native-audio-node.ts","../node_modules/standardized-audio-context/src/helpers/delete-active-input-connection.ts","../node_modules/standardized-audio-context/src/helpers/delete-event-listeners-of-audio-node.ts","../node_modules/standardized-audio-context/src/helpers/delete-passive-input-connection-to-audio-param.ts","../node_modules/standardized-audio-context/src/helpers/disconnect-native-audio-node-from-native-audio-node.ts","../node_modules/standardized-audio-context/src/helpers/get-native-audio-node.ts","../node_modules/standardized-audio-context/src/helpers/get-native-audio-param.ts","../node_modules/standardized-audio-context/src/helpers/is-part-of-a-cycle.ts","../node_modules/standardized-audio-context/src/helpers/is-passive-audio-node.ts","../node_modules/standardized-audio-context/src/helpers/test-audio-node-disconnect-method-support.ts","../node_modules/standardized-audio-context/src/helpers/visit-each-audio-node-once.ts","../node_modules/standardized-audio-context/src/guards/native-audio-node.ts","../node_modules/standardized-audio-context/src/helpers/wrap-audio-node-disconnect-method.ts","../node_modules/standardized-audio-context/src/factories/audio-node-constructor.ts","../node_modules/standardized-audio-context/src/helpers/delete-active-input-connection-to-audio-param.ts","../node_modules/standardized-audio-context/src/read-only-map.ts","../node_modules/standardized-audio-context/src/factories/audio-worklet-node-constructor.ts","../node_modules/standardized-audio-context/src/helpers/copy-from-channel.ts","../node_modules/standardized-audio-context/src/helpers/copy-to-channel.ts","../node_modules/standardized-audio-context/src/helpers/create-nested-arrays.ts","../node_modules/standardized-audio-context/src/factories/audio-worklet-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/helpers/get-audio-worklet-processor.ts","../node_modules/standardized-audio-context/src/factories/biquad-filter-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/channel-merger-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/channel-splitter-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/constant-source-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/convolver-node-constructor.ts","../node_modules/standardized-audio-context/src/helpers/detach-array-buffer.ts","../node_modules/standardized-audio-context/src/factories/delay-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/disconnect-multiple-outputs.ts","../node_modules/standardized-audio-context/src/factories/dynamics-compressor-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/gain-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/invalid-state-error.ts","../node_modules/standardized-audio-context/src/factories/invalid-access-error.ts","../node_modules/standardized-audio-context/src/factories/iir-filter-node-constructor.ts","../node_modules/standardized-audio-context/src/helpers/filter-buffer.ts","../node_modules/standardized-audio-context/src/factories/media-stream-audio-destination-node-constructor.ts","../node_modules/standardized-audio-context/src/helpers/test-promise-support.ts","../node_modules/standardized-audio-context/src/factories/minimal-offline-audio-context-constructor.ts","../node_modules/standardized-audio-context/src/helpers/assign-native-audio-node-option.ts","../node_modules/standardized-audio-context/src/helpers/assign-native-audio-node-options.ts","../node_modules/standardized-audio-context/src/helpers/test-analyser-node-get-float-time-domain-data-method-support.ts","../node_modules/standardized-audio-context/src/helpers/assign-native-audio-node-audio-param-value.ts","../node_modules/standardized-audio-context/src/helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters.ts","../node_modules/standardized-audio-context/src/helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters.ts","../node_modules/standardized-audio-context/src/helpers/compute-buffer-size.ts","../node_modules/standardized-audio-context/src/helpers/create-audio-worklet-processor-promise.ts","../node_modules/standardized-audio-context/src/helpers/clone-audio-worklet-node-options.ts","../node_modules/standardized-audio-context/src/factories/native-biquad-filter-node.ts","../node_modules/standardized-audio-context/src/factories/native-channel-splitter-node.ts","../node_modules/standardized-audio-context/src/helpers/wrap-channel-splitter-node.ts","../node_modules/standardized-audio-context/src/helpers/intercept-connections.ts","../node_modules/standardized-audio-context/src/factories/native-delay-node.ts","../node_modules/standardized-audio-context/src/factories/native-gain-node.ts","../node_modules/standardized-audio-context/src/factories/native-iir-filter-node-faker-factory.ts","../node_modules/standardized-audio-context/src/factories/native-script-processor-node.ts","../node_modules/standardized-audio-context/src/factories/not-supported-error.ts","../node_modules/standardized-audio-context/src/factories/offline-audio-context-constructor.ts","../node_modules/standardized-audio-context/src/factories/oscillator-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/panner-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/periodic-wave-constructor.ts","../node_modules/standardized-audio-context/src/factories/stereo-panner-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/unknown-error.ts","../node_modules/standardized-audio-context/src/factories/wave-shaper-node-constructor.ts","../node_modules/standardized-audio-context/src/helpers/get-first-sample.ts","../node_modules/standardized-audio-context/src/helpers/is-dc-curve.ts","../node_modules/standardized-audio-context/src/helpers/overwrite-accessors.ts","../node_modules/standardized-audio-context/src/helpers/set-value-at-time-until-possible.ts","../node_modules/standardized-audio-context/src/helpers/test-audio-scheduled-source-node-start-method-negative-parameters-support.ts","../node_modules/standardized-audio-context/src/helpers/test-audio-scheduled-source-node-stop-method-consecutive-calls-support.ts","../node_modules/standardized-audio-context/src/helpers/test-audio-scheduled-source-node-stop-method-negative-parameters-support.ts","../node_modules/standardized-audio-context/src/helpers/wrap-audio-scheduled-source-node-stop-method-consecutive-calls.ts","../node_modules/standardized-audio-context/src/helpers/wrap-event-listener.ts","../node_modules/standardized-audio-context/src/module.ts","../node_modules/standardized-audio-context/src/factories/add-active-input-connection-to-audio-node.ts","../node_modules/standardized-audio-context/src/factories/add-passive-input-connection-to-audio-node.ts","../node_modules/standardized-audio-context/src/factories/delete-active-input-connection-to-audio-node.ts","../node_modules/standardized-audio-context/src/factories/get-audio-node-tail-time.ts","../node_modules/standardized-audio-context/src/factories/cache-test-result.ts","../node_modules/standardized-audio-context/src/factories/window.ts","../node_modules/standardized-audio-context/src/factories/native-analyser-node-factory.ts","../node_modules/standardized-audio-context/src/helpers/wrap-analyser-node-get-float-time-domain-data-method.ts","../node_modules/standardized-audio-context/src/factories/get-audio-node-renderer.ts","../node_modules/standardized-audio-context/src/factories/render-inputs-of-audio-node.ts","../node_modules/standardized-audio-context/src/factories/analyser-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/get-native-context.ts","../node_modules/standardized-audio-context/src/factories/native-offline-audio-context-constructor.ts","../node_modules/standardized-audio-context/src/factories/is-native-offline-audio-context.ts","../node_modules/standardized-audio-context/src/factories/event-target-constructor.ts","../node_modules/standardized-audio-context/src/factories/native-audio-context-constructor.ts","../node_modules/standardized-audio-context/src/factories/is-native-audio-context.ts","../node_modules/standardized-audio-context/src/factories/is-native-audio-node.ts","../node_modules/standardized-audio-context/src/factories/is-native-audio-param.ts","../node_modules/standardized-audio-context/src/factories/native-audio-worklet-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/add-audio-node-connections.ts","../node_modules/standardized-audio-context/src/factories/add-connection-to-audio-node.ts","../node_modules/standardized-audio-context/src/factories/increment-cycle-counter-factory.ts","../node_modules/standardized-audio-context/src/factories/decrement-cycle-counter.ts","../node_modules/standardized-audio-context/src/factories/detect-cycles.ts","../node_modules/standardized-audio-context/src/guards/delay-node.ts","../node_modules/standardized-audio-context/src/factories/native-audio-buffer-constructor.ts","../node_modules/standardized-audio-context/src/factories/convert-number-to-unsigned-long.ts","../node_modules/standardized-audio-context/src/factories/wrap-audio-buffer-copy-channel-methods.ts","../node_modules/standardized-audio-context/src/factories/wrap-audio-buffer-copy-channel-methods-out-of-bounds.ts","../node_modules/standardized-audio-context/src/factories/test-audio-buffer-constructor-support.ts","../node_modules/standardized-audio-context/src/factories/add-silent-connection.ts","../node_modules/standardized-audio-context/src/factories/render-inputs-of-audio-param.ts","../node_modules/standardized-audio-context/src/factories/connect-audio-param.ts","../node_modules/standardized-audio-context/src/factories/native-audio-buffer-source-node-factory.ts","../node_modules/standardized-audio-context/src/helpers/wrap-audio-buffer-source-node-start-method-consecutive-calls.ts","../node_modules/standardized-audio-context/src/helpers/test-audio-buffer-source-node-start-method-consecutive-calls-support.ts","../node_modules/standardized-audio-context/src/helpers/test-audio-buffer-source-node-start-method-offset-clamping-support.ts","../node_modules/standardized-audio-context/src/helpers/test-audio-buffer-source-node-stop-method-nullified-buffer-support.ts","../node_modules/standardized-audio-context/src/helpers/wrap-audio-buffer-source-node-start-method-offset-clamping.ts","../node_modules/standardized-audio-context/src/factories/wrap-audio-buffer-source-node-stop-method-nullified-buffer.ts","../node_modules/standardized-audio-context/src/factories/render-automation.ts","../node_modules/standardized-audio-context/src/factories/get-audio-param-renderer.ts","../node_modules/standardized-audio-context/src/factories/audio-buffer-source-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/audio-param-factory.ts","../node_modules/standardized-audio-context/src/factories/add-audio-param-connections.ts","../node_modules/standardized-audio-context/src/factories/audio-param-renderer.ts","../node_modules/standardized-audio-context/src/factories/audio-destination-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/audio-destination-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/native-audio-destination-node.ts","../node_modules/standardized-audio-context/src/factories/biquad-filter-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/set-audio-node-tail-time.ts","../node_modules/standardized-audio-context/src/factories/monitor-connections.ts","../node_modules/standardized-audio-context/src/factories/wrap-channel-merger-node.ts","../node_modules/standardized-audio-context/src/factories/native-channel-merger-node-factory.ts","../node_modules/standardized-audio-context/src/factories/channel-merger-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/channel-splitter-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/helpers/sanitize-channel-splitter-options.ts","../node_modules/standardized-audio-context/src/factories/native-constant-source-node-faker-factory.ts","../node_modules/standardized-audio-context/src/factories/native-constant-source-node-factory.ts","../node_modules/standardized-audio-context/src/factories/constant-source-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/native-convolver-node-factory.ts","../node_modules/standardized-audio-context/src/factories/convolver-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/delay-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/native-dynamics-compressor-node-factory.ts","../node_modules/standardized-audio-context/src/factories/dynamics-compressor-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/gain-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/render-native-offline-audio-context.ts","../node_modules/standardized-audio-context/src/factories/test-offline-audio-context-current-time-support.ts","../node_modules/standardized-audio-context/src/factories/iir-filter-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/native-iir-filter-node-factory.ts","../node_modules/standardized-audio-context/src/helpers/wrap-iir-filter-node-get-frequency-response-method.ts","../node_modules/standardized-audio-context/src/factories/audio-listener-factory.ts","../node_modules/standardized-audio-context/src/factories/minimal-base-audio-context-constructor.ts","../node_modules/standardized-audio-context/src/factories/native-oscillator-node-factory.ts","../node_modules/standardized-audio-context/src/factories/oscillator-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/connected-native-audio-buffer-source-node-factory.ts","../node_modules/standardized-audio-context/src/factories/native-wave-shaper-node-faker-factory.ts","../node_modules/standardized-audio-context/src/factories/native-wave-shaper-node-factory.ts","../node_modules/standardized-audio-context/src/factories/native-panner-node-faker-factory.ts","../node_modules/standardized-audio-context/src/factories/native-panner-node-factory.ts","../node_modules/standardized-audio-context/src/factories/panner-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/native-periodic-wave-factory.ts","../node_modules/standardized-audio-context/src/helpers/sanitize-periodic-wave-options.ts","../node_modules/standardized-audio-context/src/factories/native-stereo-panner-node-faker-factory.ts","../node_modules/standardized-audio-context/src/factories/native-stereo-panner-node-factory.ts","../node_modules/standardized-audio-context/src/factories/stereo-panner-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/wave-shaper-node-renderer-factory.ts","../node_modules/standardized-audio-context/src/factories/is-secure-context.ts","../node_modules/standardized-audio-context/src/factories/expose-current-frame-and-current-time.ts","../node_modules/standardized-audio-context/src/factories/get-or-create-backup-offline-audio-context.ts","../node_modules/standardized-audio-context/src/factories/evaluate-source.ts","../node_modules/standardized-audio-context/src/factories/fetch-source.ts","../node_modules/standardized-audio-context/src/factories/test-audio-worklet-processor-post-message-support.ts","../node_modules/standardized-audio-context/src/factories/is-native-context.ts","../node_modules/standardized-audio-context/src/factories/decode-audio-data.ts","../node_modules/standardized-audio-context/src/factories/data-clone-error.ts","../node_modules/standardized-audio-context/src/factories/encoding-error.ts","../node_modules/standardized-audio-context/src/factories/base-audio-context-constructor.ts","../node_modules/standardized-audio-context/src/factories/media-element-audio-source-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/native-media-element-audio-source-node.ts","../node_modules/standardized-audio-context/src/factories/native-media-stream-audio-destination-node.ts","../node_modules/standardized-audio-context/src/factories/media-stream-audio-source-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/native-media-stream-audio-source-node.ts","../node_modules/standardized-audio-context/src/factories/native-media-stream-track-audio-source-node-factory.ts","../node_modules/standardized-audio-context/src/factories/media-stream-track-audio-source-node-constructor.ts","../node_modules/standardized-audio-context/src/factories/audio-context-constructor.ts","../node_modules/standardized-audio-context/src/factories/get-unrendered-audio-worklet-nodes.ts","../node_modules/standardized-audio-context/src/factories/add-unrendered-audio-worklet-node.ts","../node_modules/standardized-audio-context/src/factories/connect-multiple-outputs.ts","../node_modules/standardized-audio-context/src/factories/delete-unrendered-audio-worklet-node.ts","../node_modules/standardized-audio-context/src/factories/get-active-audio-worklet-node-inputs.ts","../node_modules/standardized-audio-context/src/factories/native-audio-worklet-node-faker-factory.ts","../node_modules/standardized-audio-context/src/helpers/create-audio-worklet-processor.ts","../node_modules/standardized-audio-context/src/factories/native-audio-worklet-node-factory.ts","../node_modules/standardized-audio-context/src/helpers/test-clonability-of-audio-worklet-node-options.ts","../node_modules/standardized-audio-context/src/factories/get-backup-offline-audio-context.ts","../node_modules/standardized-audio-context/src/factories/set-active-audio-worklet-node-inputs.ts","../node_modules/standardized-audio-context/src/helpers/sanitize-audio-worklet-node-options.ts","../node_modules/standardized-audio-context/src/helpers/test-audio-worklet-node-options-clonability.ts","../node_modules/standardized-audio-context/src/factories/minimal-audio-context-constructor.ts","../node_modules/standardized-audio-context/src/factories/create-native-offline-audio-context.ts","../node_modules/standardized-audio-context/src/factories/start-rendering.ts","../node_modules/standardized-audio-context/src/factories/is-any-audio-context.ts","../node_modules/standardized-audio-context/src/factories/is-any-audio-node.ts","../node_modules/standardized-audio-context/src/factories/is-any-audio-param.ts","../node_modules/standardized-audio-context/src/factories/is-any-offline-audio-context.ts","../node_modules/tone/Tone/core/util/Debug.ts","../node_modules/tone/Tone/core/util/TypeCheck.ts","../node_modules/tone/Tone/core/context/AudioContext.ts","../node_modules/tslib/tslib.es6.mjs","../node_modules/tone/Tone/core/clock/Ticker.ts","../node_modules/tone/Tone/core/util/AdvancedTypeCheck.ts","../node_modules/tone/Tone/core/util/Defaults.ts","../node_modules/tone/Tone/core/Tone.ts","../node_modules/tone/Tone/core/util/Math.ts","../node_modules/tone/Tone/core/util/Timeline.ts","../node_modules/tone/Tone/core/context/ContextInitialization.ts","../node_modules/tone/Tone/core/util/Emitter.ts","../node_modules/tone/Tone/core/context/BaseContext.ts","../node_modules/tone/Tone/core/context/Context.ts","../node_modules/tone/Tone/core/util/Interface.ts","../node_modules/tone/Tone/core/context/ToneAudioBuffer.ts","../node_modules/tone/Tone/core/context/OfflineContext.ts","../node_modules/tone/Tone/core/Global.ts","../node_modules/tone/Tone/core/context/DummyContext.ts","../node_modules/tone/Tone/core/type/Conversions.ts","../node_modules/tone/Tone/core/type/TimeBase.ts","../node_modules/tone/Tone/core/type/Time.ts","../node_modules/tone/Tone/core/type/Frequency.ts","../node_modules/tone/Tone/core/type/TransportTime.ts","../node_modules/tone/Tone/core/context/ToneWithContext.ts","../node_modules/tone/Tone/core/util/StateTimeline.ts","../node_modules/tone/Tone/core/context/Param.ts","../node_modules/tone/Tone/core/context/ToneAudioNode.ts","../node_modules/tone/Tone/core/context/Gain.ts","../node_modules/tone/Tone/source/OneShotSource.ts","../node_modules/tone/Tone/signal/ToneConstantSource.ts","../node_modules/tone/Tone/signal/Signal.ts","../node_modules/tone/Tone/core/clock/TickParam.ts","../node_modules/tone/Tone/core/clock/TickSignal.ts","../node_modules/tone/Tone/core/clock/TickSource.ts","../node_modules/tone/Tone/core/clock/Clock.ts","../node_modules/tone/Tone/core/context/ToneAudioBuffers.ts","../node_modules/tone/Tone/core/type/Ticks.ts","../node_modules/tone/Tone/core/util/Draw.ts","../node_modules/tone/Tone/core/util/IntervalTimeline.ts","../node_modules/tone/Tone/component/channel/Volume.ts","../node_modules/tone/Tone/core/context/Destination.ts","../node_modules/tone/Tone/core/util/TimelineValue.ts","../node_modules/tone/Tone/core/clock/TransportEvent.ts","../node_modules/tone/Tone/core/clock/TransportRepeatEvent.ts","../node_modules/tone/Tone/core/clock/Transport.ts","../node_modules/tone/Tone/source/Source.ts","../node_modules/tone/Tone/source/buffer/ToneBufferSource.ts","../node_modules/tone/Tone/source/UserMedia.ts","../node_modules/tone/Tone/source/oscillator/OscillatorInterface.ts","../node_modules/tone/Tone/source/oscillator/ToneOscillatorNode.ts","../node_modules/tone/Tone/source/oscillator/Oscillator.ts","../node_modules/tone/Tone/signal/SignalOperator.ts","../node_modules/tone/Tone/signal/WaveShaper.ts","../node_modules/tone/Tone/signal/AudioToGain.ts","../node_modules/tone/Tone/signal/Multiply.ts","../node_modules/tone/Tone/source/oscillator/AMOscillator.ts","../node_modules/tone/Tone/source/oscillator/FMOscillator.ts","../node_modules/tone/Tone/source/oscillator/PulseOscillator.ts","../node_modules/tone/Tone/source/oscillator/FatOscillator.ts","../node_modules/tone/Tone/source/oscillator/PWMOscillator.ts","../node_modules/tone/Tone/source/oscillator/OmniOscillator.ts","../node_modules/tone/Tone/core/util/Decorator.ts","../node_modules/tone/Tone/source/buffer/Player.ts","../node_modules/tone/Tone/component/envelope/Envelope.ts","../node_modules/tone/Tone/instrument/Instrument.ts","../node_modules/tone/Tone/instrument/Monophonic.ts","../node_modules/tone/Tone/component/envelope/AmplitudeEnvelope.ts","../node_modules/tone/Tone/instrument/Synth.ts","../node_modules/tone/Tone/instrument/MembraneSynth.ts","../node_modules/tone/Tone/core/worklet/WorkletGlobalScope.ts","../node_modules/tone/Tone/core/worklet/ToneAudioWorkletProcessor.worklet.ts","../node_modules/tone/Tone/core/worklet/SingleIOProcessor.worklet.ts","../node_modules/tone/Tone/core/worklet/DelayLine.worklet.ts","../node_modules/tone/Tone/component/filter/FeedbackCombFilter.worklet.ts","../node_modules/tone/Tone/instrument/Sampler.ts","../node_modules/tone/Tone/component/channel/Panner.ts","../node_modules/tone/Tone/effect/BitCrusher.worklet.ts","../node_modules/tone/Tone/component/channel/Split.ts","../node_modules/tone/Tone/component/analysis/Analyser.ts","../node_modules/tone/Tone/component/channel/Solo.ts","../node_modules/tone/Tone/component/channel/PanVol.ts","../node_modules/tone/Tone/component/channel/Channel.ts","../node_modules/tone/Tone/core/context/Listener.ts","../node_modules/tone/Tone/index.ts","canvasComponent.jsx","assets/images/infoButton.svg","countDown.jsx","App.jsx","index.js"],"sourcesContent":["/* eslint-disable */\n// murmurhash2 via https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js\nfunction murmurhash2_32_gc(str) {\n var l = str.length,\n h = l ^ l,\n i = 0,\n k;\n\n while (l >= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n k ^= k >>> 24;\n k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;\n l -= 4;\n ++i;\n }\n\n switch (l) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n }\n\n h ^= h >>> 13;\n h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);\n h ^= h >>> 15;\n return (h >>> 0).toString(36);\n}\n\nexport default murmurhash2_32_gc;\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@babel/runtime/helpers/slicedToArray'), require('@babel/runtime/helpers/classCallCheck'), require('@babel/runtime/helpers/createClass')) :\n typeof define === 'function' && define.amd ? define(['exports', '@babel/runtime/helpers/slicedToArray', '@babel/runtime/helpers/classCallCheck', '@babel/runtime/helpers/createClass'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.automationEvents = {}, global._slicedToArray, global._classCallCheck, global._createClass));\n})(this, (function (exports, _slicedToArray, _classCallCheck, _createClass) { 'use strict';\n\n var createExtendedExponentialRampToValueAutomationEvent = function createExtendedExponentialRampToValueAutomationEvent(value, endTime, insertTime) {\n return {\n endTime: endTime,\n insertTime: insertTime,\n type: 'exponentialRampToValue',\n value: value\n };\n };\n\n var createExtendedLinearRampToValueAutomationEvent = function createExtendedLinearRampToValueAutomationEvent(value, endTime, insertTime) {\n return {\n endTime: endTime,\n insertTime: insertTime,\n type: 'linearRampToValue',\n value: value\n };\n };\n\n var createSetValueAutomationEvent = function createSetValueAutomationEvent(value, startTime) {\n return {\n startTime: startTime,\n type: 'setValue',\n value: value\n };\n };\n\n var createSetValueCurveAutomationEvent = function createSetValueCurveAutomationEvent(values, startTime, duration) {\n return {\n duration: duration,\n startTime: startTime,\n type: 'setValueCurve',\n values: values\n };\n };\n\n var getTargetValueAtTime = function getTargetValueAtTime(time, valueAtStartTime, _ref) {\n var startTime = _ref.startTime,\n target = _ref.target,\n timeConstant = _ref.timeConstant;\n return target + (valueAtStartTime - target) * Math.exp((startTime - time) / timeConstant);\n };\n\n var isExponentialRampToValueAutomationEvent = function isExponentialRampToValueAutomationEvent(automationEvent) {\n return automationEvent.type === 'exponentialRampToValue';\n };\n\n var isLinearRampToValueAutomationEvent = function isLinearRampToValueAutomationEvent(automationEvent) {\n return automationEvent.type === 'linearRampToValue';\n };\n\n var isAnyRampToValueAutomationEvent = function isAnyRampToValueAutomationEvent(automationEvent) {\n return isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent);\n };\n\n var isSetValueAutomationEvent = function isSetValueAutomationEvent(automationEvent) {\n return automationEvent.type === 'setValue';\n };\n\n var isSetValueCurveAutomationEvent = function isSetValueCurveAutomationEvent(automationEvent) {\n return automationEvent.type === 'setValueCurve';\n };\n\n var getValueOfAutomationEventAtIndexAtTime = function getValueOfAutomationEventAtIndexAtTime(automationEvents, index, time, defaultValue) {\n var automationEvent = automationEvents[index];\n return automationEvent === undefined ? defaultValue : isAnyRampToValueAutomationEvent(automationEvent) || isSetValueAutomationEvent(automationEvent) ? automationEvent.value : isSetValueCurveAutomationEvent(automationEvent) ? automationEvent.values[automationEvent.values.length - 1] : getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, automationEvent.startTime, defaultValue), automationEvent);\n };\n\n var getEndTimeAndValueOfPreviousAutomationEvent = function getEndTimeAndValueOfPreviousAutomationEvent(automationEvents, index, currentAutomationEvent, nextAutomationEvent, defaultValue) {\n return currentAutomationEvent === undefined ? [nextAutomationEvent.insertTime, defaultValue] : isAnyRampToValueAutomationEvent(currentAutomationEvent) ? [currentAutomationEvent.endTime, currentAutomationEvent.value] : isSetValueAutomationEvent(currentAutomationEvent) ? [currentAutomationEvent.startTime, currentAutomationEvent.value] : isSetValueCurveAutomationEvent(currentAutomationEvent) ? [currentAutomationEvent.startTime + currentAutomationEvent.duration, currentAutomationEvent.values[currentAutomationEvent.values.length - 1]] : [currentAutomationEvent.startTime, getValueOfAutomationEventAtIndexAtTime(automationEvents, index - 1, currentAutomationEvent.startTime, defaultValue)];\n };\n\n var isCancelAndHoldAutomationEvent = function isCancelAndHoldAutomationEvent(automationEvent) {\n return automationEvent.type === 'cancelAndHold';\n };\n\n var isCancelScheduledValuesAutomationEvent = function isCancelScheduledValuesAutomationEvent(automationEvent) {\n return automationEvent.type === 'cancelScheduledValues';\n };\n\n var getEventTime = function getEventTime(automationEvent) {\n if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) {\n return automationEvent.cancelTime;\n }\n if (isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent)) {\n return automationEvent.endTime;\n }\n return automationEvent.startTime;\n };\n\n var getExponentialRampValueAtTime = function getExponentialRampValueAtTime(time, startTime, valueAtStartTime, _ref) {\n var endTime = _ref.endTime,\n value = _ref.value;\n if (valueAtStartTime === value) {\n return value;\n }\n if (0 < valueAtStartTime && 0 < value || valueAtStartTime < 0 && value < 0) {\n return valueAtStartTime * Math.pow(value / valueAtStartTime, (time - startTime) / (endTime - startTime));\n }\n return 0;\n };\n\n var getLinearRampValueAtTime = function getLinearRampValueAtTime(time, startTime, valueAtStartTime, _ref) {\n var endTime = _ref.endTime,\n value = _ref.value;\n return valueAtStartTime + (time - startTime) / (endTime - startTime) * (value - valueAtStartTime);\n };\n\n var interpolateValue = function interpolateValue(values, theoreticIndex) {\n var lowerIndex = Math.floor(theoreticIndex);\n var upperIndex = Math.ceil(theoreticIndex);\n if (lowerIndex === upperIndex) {\n return values[lowerIndex];\n }\n return (1 - (theoreticIndex - lowerIndex)) * values[lowerIndex] + (1 - (upperIndex - theoreticIndex)) * values[upperIndex];\n };\n\n var getValueCurveValueAtTime = function getValueCurveValueAtTime(time, _ref) {\n var duration = _ref.duration,\n startTime = _ref.startTime,\n values = _ref.values;\n var theoreticIndex = (time - startTime) / duration * (values.length - 1);\n return interpolateValue(values, theoreticIndex);\n };\n\n var isSetTargetAutomationEvent = function isSetTargetAutomationEvent(automationEvent) {\n return automationEvent.type === 'setTarget';\n };\n\n var AutomationEventList = /*#__PURE__*/function () {\n function AutomationEventList(defaultValue) {\n _classCallCheck(this, AutomationEventList);\n this._automationEvents = [];\n this._currenTime = 0;\n this._defaultValue = defaultValue;\n }\n return _createClass(AutomationEventList, [{\n key: Symbol.iterator,\n value: function value() {\n return this._automationEvents[Symbol.iterator]();\n }\n }, {\n key: \"add\",\n value: function add(automationEvent) {\n var eventTime = getEventTime(automationEvent);\n if (isCancelAndHoldAutomationEvent(automationEvent) || isCancelScheduledValuesAutomationEvent(automationEvent)) {\n var index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n if (isCancelScheduledValuesAutomationEvent(automationEvent) && isSetValueCurveAutomationEvent(currentAutomationEvent)) {\n return currentAutomationEvent.startTime + currentAutomationEvent.duration >= eventTime;\n }\n return getEventTime(currentAutomationEvent) >= eventTime;\n });\n var removedAutomationEvent = this._automationEvents[index];\n if (index !== -1) {\n this._automationEvents = this._automationEvents.slice(0, index);\n }\n if (isCancelAndHoldAutomationEvent(automationEvent)) {\n var lastAutomationEvent = this._automationEvents[this._automationEvents.length - 1];\n if (removedAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(removedAutomationEvent)) {\n if (lastAutomationEvent !== undefined && isSetTargetAutomationEvent(lastAutomationEvent)) {\n throw new Error('The internal list is malformed.');\n }\n var startTime = lastAutomationEvent === undefined ? removedAutomationEvent.insertTime : isSetValueCurveAutomationEvent(lastAutomationEvent) ? lastAutomationEvent.startTime + lastAutomationEvent.duration : getEventTime(lastAutomationEvent);\n var startValue = lastAutomationEvent === undefined ? this._defaultValue : isSetValueCurveAutomationEvent(lastAutomationEvent) ? lastAutomationEvent.values[lastAutomationEvent.values.length - 1] : lastAutomationEvent.value;\n var value = isExponentialRampToValueAutomationEvent(removedAutomationEvent) ? getExponentialRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent) : getLinearRampValueAtTime(eventTime, startTime, startValue, removedAutomationEvent);\n var truncatedAutomationEvent = isExponentialRampToValueAutomationEvent(removedAutomationEvent) ? createExtendedExponentialRampToValueAutomationEvent(value, eventTime, this._currenTime) : createExtendedLinearRampToValueAutomationEvent(value, eventTime, this._currenTime);\n this._automationEvents.push(truncatedAutomationEvent);\n }\n if (lastAutomationEvent !== undefined && isSetTargetAutomationEvent(lastAutomationEvent)) {\n this._automationEvents.push(createSetValueAutomationEvent(this.getValue(eventTime), eventTime));\n }\n if (lastAutomationEvent !== undefined && isSetValueCurveAutomationEvent(lastAutomationEvent) && lastAutomationEvent.startTime + lastAutomationEvent.duration > eventTime) {\n var duration = eventTime - lastAutomationEvent.startTime;\n var ratio = (lastAutomationEvent.values.length - 1) / lastAutomationEvent.duration;\n var length = Math.max(2, 1 + Math.ceil(duration * ratio));\n var fraction = duration / (length - 1) * ratio;\n var values = lastAutomationEvent.values.slice(0, length);\n if (fraction < 1) {\n for (var i = 1; i < length; i += 1) {\n var factor = fraction * i % 1;\n values[i] = lastAutomationEvent.values[i - 1] * (1 - factor) + lastAutomationEvent.values[i] * factor;\n }\n }\n this._automationEvents[this._automationEvents.length - 1] = createSetValueCurveAutomationEvent(values, lastAutomationEvent.startTime, duration);\n }\n }\n } else {\n var _index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n return getEventTime(currentAutomationEvent) > eventTime;\n });\n var previousAutomationEvent = _index === -1 ? this._automationEvents[this._automationEvents.length - 1] : this._automationEvents[_index - 1];\n if (previousAutomationEvent !== undefined && isSetValueCurveAutomationEvent(previousAutomationEvent) && getEventTime(previousAutomationEvent) + previousAutomationEvent.duration > eventTime) {\n return false;\n }\n var persistentAutomationEvent = isExponentialRampToValueAutomationEvent(automationEvent) ? createExtendedExponentialRampToValueAutomationEvent(automationEvent.value, automationEvent.endTime, this._currenTime) : isLinearRampToValueAutomationEvent(automationEvent) ? createExtendedLinearRampToValueAutomationEvent(automationEvent.value, eventTime, this._currenTime) : automationEvent;\n if (_index === -1) {\n this._automationEvents.push(persistentAutomationEvent);\n } else {\n if (isSetValueCurveAutomationEvent(automationEvent) && eventTime + automationEvent.duration > getEventTime(this._automationEvents[_index])) {\n return false;\n }\n this._automationEvents.splice(_index, 0, persistentAutomationEvent);\n }\n }\n return true;\n }\n }, {\n key: \"flush\",\n value: function flush(time) {\n var index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n return getEventTime(currentAutomationEvent) > time;\n });\n if (index > 1) {\n var remainingAutomationEvents = this._automationEvents.slice(index - 1);\n var firstRemainingAutomationEvent = remainingAutomationEvents[0];\n if (isSetTargetAutomationEvent(firstRemainingAutomationEvent)) {\n remainingAutomationEvents.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents, index - 2, firstRemainingAutomationEvent.startTime, this._defaultValue), firstRemainingAutomationEvent.startTime));\n }\n this._automationEvents = remainingAutomationEvents;\n }\n }\n }, {\n key: \"getValue\",\n value: function getValue(time) {\n if (this._automationEvents.length === 0) {\n return this._defaultValue;\n }\n var indexOfNextEvent = this._automationEvents.findIndex(function (automationEvent) {\n return getEventTime(automationEvent) > time;\n });\n var nextAutomationEvent = this._automationEvents[indexOfNextEvent];\n var indexOfCurrentEvent = (indexOfNextEvent === -1 ? this._automationEvents.length : indexOfNextEvent) - 1;\n var currentAutomationEvent = this._automationEvents[indexOfCurrentEvent];\n if (currentAutomationEvent !== undefined && isSetTargetAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent) || nextAutomationEvent.insertTime > time)) {\n return getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(this._automationEvents, indexOfCurrentEvent - 1, currentAutomationEvent.startTime, this._defaultValue), currentAutomationEvent);\n }\n if (currentAutomationEvent !== undefined && isSetValueAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) {\n return currentAutomationEvent.value;\n }\n if (currentAutomationEvent !== undefined && isSetValueCurveAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent) || currentAutomationEvent.startTime + currentAutomationEvent.duration > time)) {\n if (time < currentAutomationEvent.startTime + currentAutomationEvent.duration) {\n return getValueCurveValueAtTime(time, currentAutomationEvent);\n }\n return currentAutomationEvent.values[currentAutomationEvent.values.length - 1];\n }\n if (currentAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) {\n return currentAutomationEvent.value;\n }\n if (nextAutomationEvent !== undefined && isExponentialRampToValueAutomationEvent(nextAutomationEvent)) {\n var _getEndTimeAndValueOf = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, indexOfCurrentEvent, currentAutomationEvent, nextAutomationEvent, this._defaultValue),\n _getEndTimeAndValueOf2 = _slicedToArray(_getEndTimeAndValueOf, 2),\n startTime = _getEndTimeAndValueOf2[0],\n value = _getEndTimeAndValueOf2[1];\n return getExponentialRampValueAtTime(time, startTime, value, nextAutomationEvent);\n }\n if (nextAutomationEvent !== undefined && isLinearRampToValueAutomationEvent(nextAutomationEvent)) {\n var _getEndTimeAndValueOf3 = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, indexOfCurrentEvent, currentAutomationEvent, nextAutomationEvent, this._defaultValue),\n _getEndTimeAndValueOf4 = _slicedToArray(_getEndTimeAndValueOf3, 2),\n _startTime = _getEndTimeAndValueOf4[0],\n _value = _getEndTimeAndValueOf4[1];\n return getLinearRampValueAtTime(time, _startTime, _value, nextAutomationEvent);\n }\n return this._defaultValue;\n }\n }]);\n }();\n\n var createCancelAndHoldAutomationEvent = function createCancelAndHoldAutomationEvent(cancelTime) {\n return {\n cancelTime: cancelTime,\n type: 'cancelAndHold'\n };\n };\n\n var createCancelScheduledValuesAutomationEvent = function createCancelScheduledValuesAutomationEvent(cancelTime) {\n return {\n cancelTime: cancelTime,\n type: 'cancelScheduledValues'\n };\n };\n\n var createExponentialRampToValueAutomationEvent = function createExponentialRampToValueAutomationEvent(value, endTime) {\n return {\n endTime: endTime,\n type: 'exponentialRampToValue',\n value: value\n };\n };\n\n var createLinearRampToValueAutomationEvent = function createLinearRampToValueAutomationEvent(value, endTime) {\n return {\n endTime: endTime,\n type: 'linearRampToValue',\n value: value\n };\n };\n\n var createSetTargetAutomationEvent = function createSetTargetAutomationEvent(target, startTime, timeConstant) {\n return {\n startTime: startTime,\n target: target,\n timeConstant: timeConstant,\n type: 'setTarget'\n };\n };\n\n exports.AutomationEventList = AutomationEventList;\n exports.createCancelAndHoldAutomationEvent = createCancelAndHoldAutomationEvent;\n exports.createCancelScheduledValuesAutomationEvent = createCancelScheduledValuesAutomationEvent;\n exports.createExponentialRampToValueAutomationEvent = createExponentialRampToValueAutomationEvent;\n exports.createLinearRampToValueAutomationEvent = createLinearRampToValueAutomationEvent;\n exports.createSetTargetAutomationEvent = createSetTargetAutomationEvent;\n exports.createSetValueAutomationEvent = createSetValueAutomationEvent;\n exports.createSetValueCurveAutomationEvent = createSetValueCurveAutomationEvent;\n\n}));\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = hyphenateProperty;\n\nvar _hyphenateStyleName = require('hyphenate-style-name');\n\nvar _hyphenateStyleName2 = _interopRequireDefault(_hyphenateStyleName);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hyphenateProperty(property) {\n return (0, _hyphenateStyleName2.default)(property);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isPrefixedValue;\nvar regex = /-webkit-|-moz-|-ms-/;\n\nfunction isPrefixedValue(value) {\n return typeof value === 'string' && regex.test(value);\n}\nmodule.exports = exports['default'];","/*!\n * howler.js v2.2.4\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/(\\d+)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (!node.bufferSource) {\n return self;\n }\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.4\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, ∞]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i 0) {\n style[property] = combinedValue;\n }\n } else {\n var _processedValue = prefixValue(plugins, property, value, style, prefixMap);\n\n // only modify the value if it was touched\n // by any plugin to prevent unnecessary mutations\n if (_processedValue) {\n style[property] = _processedValue;\n }\n\n style = prefixProperty(prefixMap, property, style);\n }\n }\n\n return style;\n };\n}","\nvar w = [\"Webkit\"];\nvar m = [\"Moz\"];\nvar ms = [\"ms\"];\nvar wm = [\"Webkit\", \"Moz\"];\nvar wms = [\"Webkit\", \"ms\"];\nvar wmms = [\"Webkit\", \"Moz\", \"ms\"];\n\nexport default {\n plugins: [],\n prefixMap: { \"appearance\": wm, \"textEmphasisPosition\": w, \"textEmphasis\": w, \"textEmphasisStyle\": w, \"textEmphasisColor\": w, \"boxDecorationBreak\": w, \"maskImage\": w, \"maskMode\": w, \"maskRepeat\": w, \"maskPosition\": w, \"maskClip\": w, \"maskOrigin\": w, \"maskSize\": w, \"maskComposite\": w, \"mask\": w, \"maskBorderSource\": w, \"maskBorderMode\": w, \"maskBorderSlice\": w, \"maskBorderWidth\": w, \"maskBorderOutset\": w, \"maskBorderRepeat\": w, \"maskBorder\": w, \"maskType\": w, \"textDecorationStyle\": w, \"textDecorationSkip\": w, \"textDecorationLine\": w, \"textDecorationColor\": w, \"userSelect\": wmms, \"backdropFilter\": w, \"fontKerning\": w, \"scrollSnapType\": wms, \"scrollSnapPointsX\": wms, \"scrollSnapPointsY\": wms, \"scrollSnapDestination\": wms, \"scrollSnapCoordinate\": wms, \"clipPath\": w, \"shapeImageThreshold\": w, \"shapeImageMargin\": w, \"shapeImageOutside\": w, \"filter\": w, \"hyphens\": wms, \"flowInto\": wms, \"flowFrom\": wms, \"breakBefore\": wms, \"breakAfter\": wms, \"breakInside\": wms, \"regionFragment\": wms, \"writingMode\": wms, \"textOrientation\": w, \"tabSize\": m, \"fontFeatureSettings\": w, \"columnCount\": w, \"columnFill\": w, \"columnGap\": w, \"columnRule\": w, \"columnRuleColor\": w, \"columnRuleStyle\": w, \"columnRuleWidth\": w, \"columns\": w, \"columnSpan\": w, \"columnWidth\": w, \"wrapFlow\": ms, \"wrapThrough\": ms, \"wrapMargin\": ms, \"textSizeAdjust\": wms }\n};","var prefixes = ['-webkit-', '-moz-', ''];\n\nvar values = {\n 'zoom-in': true,\n 'zoom-out': true,\n grab: true,\n grabbing: true\n};\n\nexport default function cursor(property, value) {\n if (property === 'cursor' && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\n// http://caniuse.com/#search=cross-fade\nvar prefixes = ['-webkit-', ''];\n\nexport default function crossFade(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && value.indexOf('cross-fade(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/cross-fade\\(/g, prefix + 'cross-fade(');\n });\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\n// http://caniuse.com/#feat=css-filter-function\nvar prefixes = ['-webkit-', ''];\n\nexport default function filter(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && value.indexOf('filter(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/filter\\(/g, prefix + 'filter(');\n });\n }\n}","var values = {\n flex: ['-webkit-box', '-moz-box', '-ms-flexbox', '-webkit-flex', 'flex'],\n 'inline-flex': ['-webkit-inline-box', '-moz-inline-box', '-ms-inline-flexbox', '-webkit-inline-flex', 'inline-flex']\n};\n\nexport default function flex(property, value) {\n if (property === 'display' && values.hasOwnProperty(value)) {\n return values[value];\n }\n}","var alternativeValues = {\n 'space-around': 'justify',\n 'space-between': 'justify',\n 'flex-start': 'start',\n 'flex-end': 'end',\n 'wrap-reverse': 'multiple',\n wrap: 'multiple'\n};\n\nvar alternativeProps = {\n alignItems: 'WebkitBoxAlign',\n justifyContent: 'WebkitBoxPack',\n flexWrap: 'WebkitBoxLines',\n flexGrow: 'WebkitBoxFlex'\n};\n\nexport default function flexboxOld(property, value, style) {\n if (property === 'flexDirection' && typeof value === 'string') {\n if (value.indexOf('column') > -1) {\n style.WebkitBoxOrient = 'vertical';\n } else {\n style.WebkitBoxOrient = 'horizontal';\n }\n if (value.indexOf('reverse') > -1) {\n style.WebkitBoxDirection = 'reverse';\n } else {\n style.WebkitBoxDirection = 'normal';\n }\n }\n if (alternativeProps.hasOwnProperty(property)) {\n style[alternativeProps[property]] = alternativeValues[value] || value;\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\nvar prefixes = ['-webkit-', '-moz-', ''];\nvar values = /linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient/gi;\n\nexport default function gradient(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && values.test(value)) {\n return prefixes.map(function (prefix) {\n return value.replace(values, function (grad) {\n return prefix + grad;\n });\n });\n }\n}","var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nfunction isSimplePositionValue(value) {\n return typeof value === 'number' && !isNaN(value);\n}\n\nfunction isComplexSpanValue(value) {\n return typeof value === 'string' && value.includes('/');\n}\n\nvar alignmentValues = ['center', 'end', 'start', 'stretch'];\n\nvar displayValues = {\n 'inline-grid': ['-ms-inline-grid', 'inline-grid'],\n grid: ['-ms-grid', 'grid']\n};\n\nvar propertyConverters = {\n alignSelf: function alignSelf(value, style) {\n if (alignmentValues.indexOf(value) > -1) {\n style.msGridRowAlign = value;\n }\n },\n\n gridColumn: function gridColumn(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridColumn = value;\n } else if (isComplexSpanValue(value)) {\n var _value$split = value.split('/'),\n _value$split2 = _slicedToArray(_value$split, 2),\n start = _value$split2[0],\n end = _value$split2[1];\n\n propertyConverters.gridColumnStart(+start, style);\n\n var _end$split = end.split(/ ?span /),\n _end$split2 = _slicedToArray(_end$split, 2),\n maybeSpan = _end$split2[0],\n maybeNumber = _end$split2[1];\n\n if (maybeSpan === '') {\n propertyConverters.gridColumnEnd(+start + +maybeNumber, style);\n } else {\n propertyConverters.gridColumnEnd(+end, style);\n }\n } else {\n propertyConverters.gridColumnStart(value, style);\n }\n },\n\n gridColumnEnd: function gridColumnEnd(value, style) {\n var msGridColumn = style.msGridColumn;\n\n if (isSimplePositionValue(value) && isSimplePositionValue(msGridColumn)) {\n style.msGridColumnSpan = value - msGridColumn;\n }\n },\n\n gridColumnStart: function gridColumnStart(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridColumn = value;\n }\n },\n\n gridRow: function gridRow(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridRow = value;\n } else if (isComplexSpanValue(value)) {\n var _value$split3 = value.split('/'),\n _value$split4 = _slicedToArray(_value$split3, 2),\n start = _value$split4[0],\n end = _value$split4[1];\n\n propertyConverters.gridRowStart(+start, style);\n\n var _end$split3 = end.split(/ ?span /),\n _end$split4 = _slicedToArray(_end$split3, 2),\n maybeSpan = _end$split4[0],\n maybeNumber = _end$split4[1];\n\n if (maybeSpan === '') {\n propertyConverters.gridRowEnd(+start + +maybeNumber, style);\n } else {\n propertyConverters.gridRowEnd(+end, style);\n }\n } else {\n propertyConverters.gridRowStart(value, style);\n }\n },\n\n gridRowEnd: function gridRowEnd(value, style) {\n var msGridRow = style.msGridRow;\n\n if (isSimplePositionValue(value) && isSimplePositionValue(msGridRow)) {\n style.msGridRowSpan = value - msGridRow;\n }\n },\n\n gridRowStart: function gridRowStart(value, style) {\n if (isSimplePositionValue(value)) {\n style.msGridRow = value;\n }\n },\n\n gridTemplateColumns: function gridTemplateColumns(value, style) {\n style.msGridColumns = value;\n },\n\n gridTemplateRows: function gridTemplateRows(value, style) {\n style.msGridRows = value;\n },\n\n justifySelf: function justifySelf(value, style) {\n if (alignmentValues.indexOf(value) > -1) {\n style.msGridColumnAlign = value;\n }\n }\n};\n\nexport default function grid(property, value, style) {\n if (property === 'display' && value in displayValues) {\n return displayValues[value];\n }\n\n if (property in propertyConverters) {\n var propertyConverter = propertyConverters[property];\n propertyConverter(value, style);\n }\n}","import isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\n// http://caniuse.com/#feat=css-image-set\nvar prefixes = ['-webkit-', ''];\n\nexport default function imageSet(property, value) {\n if (typeof value === 'string' && !isPrefixedValue(value) && value.indexOf('image-set(') > -1) {\n return prefixes.map(function (prefix) {\n return value.replace(/image-set\\(/g, prefix + 'image-set(');\n });\n }\n}","var alternativeProps = {\n marginBlockStart: ['WebkitMarginBefore'],\n marginBlockEnd: ['WebkitMarginAfter'],\n marginInlineStart: ['WebkitMarginStart', 'MozMarginStart'],\n marginInlineEnd: ['WebkitMarginEnd', 'MozMarginEnd'],\n paddingBlockStart: ['WebkitPaddingBefore'],\n paddingBlockEnd: ['WebkitPaddingAfter'],\n paddingInlineStart: ['WebkitPaddingStart', 'MozPaddingStart'],\n paddingInlineEnd: ['WebkitPaddingEnd', 'MozPaddingEnd'],\n borderBlockStart: ['WebkitBorderBefore'],\n borderBlockStartColor: ['WebkitBorderBeforeColor'],\n borderBlockStartStyle: ['WebkitBorderBeforeStyle'],\n borderBlockStartWidth: ['WebkitBorderBeforeWidth'],\n borderBlockEnd: ['WebkitBorderAfter'],\n borderBlockEndColor: ['WebkitBorderAfterColor'],\n borderBlockEndStyle: ['WebkitBorderAfterStyle'],\n borderBlockEndWidth: ['WebkitBorderAfterWidth'],\n borderInlineStart: ['WebkitBorderStart', 'MozBorderStart'],\n borderInlineStartColor: ['WebkitBorderStartColor', 'MozBorderStartColor'],\n borderInlineStartStyle: ['WebkitBorderStartStyle', 'MozBorderStartStyle'],\n borderInlineStartWidth: ['WebkitBorderStartWidth', 'MozBorderStartWidth'],\n borderInlineEnd: ['WebkitBorderEnd', 'MozBorderEnd'],\n borderInlineEndColor: ['WebkitBorderEndColor', 'MozBorderEndColor'],\n borderInlineEndStyle: ['WebkitBorderEndStyle', 'MozBorderEndStyle'],\n borderInlineEndWidth: ['WebkitBorderEndWidth', 'MozBorderEndWidth']\n};\n\nexport default function logical(property, value, style) {\n if (Object.prototype.hasOwnProperty.call(alternativeProps, property)) {\n var alternativePropList = alternativeProps[property];\n for (var i = 0, len = alternativePropList.length; i < len; ++i) {\n style[alternativePropList[i]] = value;\n }\n }\n}","var prefixes = ['-webkit-', '-moz-', ''];\n\nvar properties = {\n maxHeight: true,\n maxWidth: true,\n width: true,\n height: true,\n columnWidth: true,\n minWidth: true,\n minHeight: true\n};\nvar values = {\n 'min-content': true,\n 'max-content': true,\n 'fill-available': true,\n 'fit-content': true,\n 'contain-floats': true\n};\n\nexport default function sizing(property, value) {\n if (properties.hasOwnProperty(property) && values.hasOwnProperty(value)) {\n return prefixes.map(function (prefix) {\n return prefix + value;\n });\n }\n}","import hyphenateProperty from 'css-in-js-utils/lib/hyphenateProperty';\nimport isPrefixedValue from 'css-in-js-utils/lib/isPrefixedValue';\n\nimport capitalizeString from '../utils/capitalizeString';\n\nvar properties = {\n transition: true,\n transitionProperty: true,\n WebkitTransition: true,\n WebkitTransitionProperty: true,\n MozTransition: true,\n MozTransitionProperty: true\n};\n\nvar prefixMapping = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n ms: '-ms-'\n};\n\nfunction prefixValue(value, propertyPrefixMap) {\n if (isPrefixedValue(value)) {\n return value;\n }\n\n // only split multi values, not cubic beziers\n var multipleValues = value.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g);\n\n for (var i = 0, len = multipleValues.length; i < len; ++i) {\n var singleValue = multipleValues[i];\n var values = [singleValue];\n for (var property in propertyPrefixMap) {\n var dashCaseProperty = hyphenateProperty(property);\n\n if (singleValue.indexOf(dashCaseProperty) > -1 && dashCaseProperty !== 'order') {\n var prefixes = propertyPrefixMap[property];\n for (var j = 0, pLen = prefixes.length; j < pLen; ++j) {\n // join all prefixes and create a new value\n values.unshift(singleValue.replace(dashCaseProperty, prefixMapping[prefixes[j]] + dashCaseProperty));\n }\n }\n }\n\n multipleValues[i] = values.join(',');\n }\n\n return multipleValues.join(',');\n}\n\nexport default function transition(property, value, style, propertyPrefixMap) {\n // also check for already prefixed transitions\n if (typeof value === 'string' && properties.hasOwnProperty(property)) {\n var outputValue = prefixValue(value, propertyPrefixMap);\n // if the property is already prefixed\n var webkitOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-moz-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Webkit') > -1) {\n return webkitOutput;\n }\n\n var mozOutput = outputValue.split(/,(?![^()]*(?:\\([^()]*\\))?\\))/g).filter(function (val) {\n return !/-webkit-|-ms-/.test(val);\n }).join(',');\n\n if (property.indexOf('Moz') > -1) {\n return mozOutput;\n }\n\n style['Webkit' + capitalizeString(property)] = webkitOutput;\n style['Moz' + capitalizeString(property)] = mozOutput;\n return outputValue;\n }\n}","import createPrefixer from './createPrefixer';\n\nimport data from './data';\n\nimport backgroundClip from './plugins/backgroundClip';\nimport cursor from './plugins/cursor';\nimport crossFade from './plugins/crossFade';\nimport filter from './plugins/filter';\nimport flex from './plugins/flex';\nimport flexboxOld from './plugins/flexboxOld';\nimport gradient from './plugins/gradient';\nimport grid from './plugins/grid';\nimport imageSet from './plugins/imageSet';\nimport logical from './plugins/logical';\nimport position from './plugins/position';\nimport sizing from './plugins/sizing';\nimport transition from './plugins/transition';\n\nvar plugins = [backgroundClip, crossFade, cursor, filter, flexboxOld, gradient, grid, imageSet, logical, position, sizing, transition, flex];\n\nvar prefix = createPrefixer({\n prefixMap: data.prefixMap,\n plugins: plugins\n});\n\nexport { createPrefixer, prefix };","\n// https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip#Browser_compatibility\nexport default function backgroundClip(property, value) {\n if (typeof value === 'string' && value === 'text') {\n return ['-webkit-text', 'text'];\n }\n}","export default function position(property, value) {\n if (property === 'position' && value === 'sticky') {\n return ['-webkit-sticky', 'sticky'];\n }\n}","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * 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/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\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\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\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\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\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\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\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\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\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\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = merge;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\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","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar ClientUAInstance = new UAParser();\nvar browser = ClientUAInstance.getBrowser();\nvar cpu = ClientUAInstance.getCPU();\nvar device = ClientUAInstance.getDevice();\nvar engine = ClientUAInstance.getEngine();\nvar os = ClientUAInstance.getOS();\nvar ua = ClientUAInstance.getUA();\nvar setUa = function setUa(userAgentString) {\n return ClientUAInstance.setUA(userAgentString);\n};\nvar parseUserAgent = function parseUserAgent(userAgent) {\n if (!userAgent) {\n console.error('No userAgent string was provided');\n return;\n }\n\n var UserAgentInstance = new UAParser(userAgent);\n return {\n UA: UserAgentInstance,\n browser: UserAgentInstance.getBrowser(),\n cpu: UserAgentInstance.getCPU(),\n device: UserAgentInstance.getDevice(),\n engine: UserAgentInstance.getEngine(),\n os: UserAgentInstance.getOS(),\n ua: UserAgentInstance.getUA(),\n setUserAgent: function setUserAgent(userAgentString) {\n return UserAgentInstance.setUA(userAgentString);\n }\n };\n};\n\nvar UAHelper = /*#__PURE__*/Object.freeze({\n ClientUAInstance: ClientUAInstance,\n browser: browser,\n cpu: cpu,\n device: device,\n engine: engine,\n os: os,\n ua: ua,\n setUa: setUa,\n parseUserAgent: parseUserAgent\n});\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\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 _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _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 _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _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\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\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\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar DeviceTypes = {\n Mobile: 'mobile',\n Tablet: 'tablet',\n SmartTv: 'smarttv',\n Console: 'console',\n Wearable: 'wearable',\n Embedded: 'embedded',\n Browser: undefined\n};\nvar BrowserTypes = {\n Chrome: 'Chrome',\n Firefox: 'Firefox',\n Opera: 'Opera',\n Yandex: 'Yandex',\n Safari: 'Safari',\n InternetExplorer: 'Internet Explorer',\n Edge: 'Edge',\n Chromium: 'Chromium',\n Ie: 'IE',\n MobileSafari: 'Mobile Safari',\n EdgeChromium: 'Edge Chromium',\n MIUI: 'MIUI Browser',\n SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n IOS: 'iOS',\n Android: 'Android',\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar InitialDeviceTypes = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\n\nvar checkDeviceType = function checkDeviceType(type) {\n switch (type) {\n case DeviceTypes.Mobile:\n return {\n isMobile: true\n };\n\n case DeviceTypes.Tablet:\n return {\n isTablet: true\n };\n\n case DeviceTypes.SmartTv:\n return {\n isSmartTV: true\n };\n\n case DeviceTypes.Console:\n return {\n isConsole: true\n };\n\n case DeviceTypes.Wearable:\n return {\n isWearable: true\n };\n\n case DeviceTypes.Browser:\n return {\n isBrowser: true\n };\n\n case DeviceTypes.Embedded:\n return {\n isEmbedded: true\n };\n\n default:\n return InitialDeviceTypes;\n }\n};\nvar setUserAgent = function setUserAgent(userAgent) {\n return setUa(userAgent);\n};\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nvar browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearablePayload = function wearablePayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {\n return {\n isEmbedded: isEmbedded,\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\n\nfunction deviceDetect(userAgent) {\n var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n engine = _ref.engine,\n os = _ref.os,\n ua = _ref.ua;\n\n var type = checkDeviceType(device.type);\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable,\n isEmbedded = type.isEmbedded;\n\n if (isBrowser) {\n return browserPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return smartTvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearablePayload(isWearable, engine, os, ua);\n }\n\n if (isEmbedded) {\n return embeddedPayload(isEmbedded, device, engine, os, ua);\n }\n}\n\nvar isMobileType = function isMobileType(_ref) {\n var type = _ref.type;\n return type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType(_ref2) {\n var type = _ref2.type;\n return type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType(_ref3) {\n var type = _ref3.type;\n return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;\n};\nvar isSmartTVType = function isSmartTVType(_ref4) {\n var type = _ref4.type;\n return type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType(_ref5) {\n var type = _ref5.type;\n return type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType(_ref6) {\n var type = _ref6.type;\n return type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType(_ref7) {\n var type = _ref7.type;\n return type === DeviceTypes.Console;\n};\nvar isEmbeddedType = function isEmbeddedType(_ref8) {\n var type = _ref8.type;\n return type === DeviceTypes.Embedded;\n};\nvar getMobileVendor = function getMobileVendor(_ref9) {\n var vendor = _ref9.vendor;\n return setDefaults(vendor);\n};\nvar getMobileModel = function getMobileModel(_ref10) {\n var model = _ref10.model;\n return setDefaults(model);\n};\nvar getDeviceType = function getDeviceType(_ref11) {\n var type = _ref11.type;\n return setDefaults(type, 'browser');\n}; // os types\n\nvar isAndroidType = function isAndroidType(_ref12) {\n var name = _ref12.name;\n return name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType(_ref13) {\n var name = _ref13.name;\n return name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType(_ref14) {\n var name = _ref14.name;\n return name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType(_ref15) {\n var name = _ref15.name;\n return name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType(_ref16) {\n var name = _ref16.name;\n return name === OsTypes.IOS;\n};\nvar getOsVersion = function getOsVersion(_ref17) {\n var version = _ref17.version;\n return setDefaults(version);\n};\nvar getOsName = function getOsName(_ref18) {\n var name = _ref18.name;\n return setDefaults(name);\n}; // browser types\n\nvar isChromeType = function isChromeType(_ref19) {\n var name = _ref19.name;\n return name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType(_ref20) {\n var name = _ref20.name;\n return name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType(_ref21) {\n var name = _ref21.name;\n return name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType(_ref22) {\n var name = _ref22.name;\n return name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType(_ref23) {\n var name = _ref23.name;\n return name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType(_ref24) {\n var name = _ref24.name;\n return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType(_ref25) {\n var name = _ref25.name;\n return name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType(_ref26) {\n var name = _ref26.name;\n return name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType(_ref27) {\n var name = _ref27.name;\n return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType(_ref28) {\n var name = _ref28.name;\n return name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType(_ref29) {\n var name = _ref29.name;\n return name === BrowserTypes.SamsungBrowser;\n};\nvar getBrowserFullVersion = function getBrowserFullVersion(_ref30) {\n var version = _ref30.version;\n return setDefaults(version);\n};\nvar getBrowserVersion = function getBrowserVersion(_ref31) {\n var major = _ref31.major;\n return setDefaults(major);\n};\nvar getBrowserName = function getBrowserName(_ref32) {\n var name = _ref32.name;\n return setDefaults(name);\n}; // engine types\n\nvar getEngineName = function getEngineName(_ref33) {\n var name = _ref33.name;\n return setDefaults(name);\n};\nvar getEngineVersion = function getEngineVersion(_ref34) {\n var version = _ref34.version;\n return setDefaults(version);\n};\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar isEdgeChromiumType = function isEdgeChromiumType(ua) {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\nvar getUseragent = function getUseragent(userAg) {\n return setDefaults(userAg);\n};\n\nfunction buildSelectorsObject(options) {\n var _ref = options ? options : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n os = _ref.os,\n engine = _ref.engine,\n ua = _ref.ua;\n\n return {\n isSmartTV: isSmartTVType(device),\n isConsole: isConsoleType(device),\n isWearable: isWearableType(device),\n isEmbedded: isEmbeddedType(device),\n isMobileSafari: isMobileSafariType(browser) || getIPad13(),\n isChromium: isChromiumType(browser),\n isMobile: isMobileAndTabletType(device) || getIPad13(),\n isMobileOnly: isMobileType(device),\n isTablet: isTabletType(device) || getIPad13(),\n isBrowser: isBrowserType(device),\n isDesktop: isBrowserType(device),\n isAndroid: isAndroidType(os),\n isWinPhone: isWinPhoneType(os),\n isIOS: isIOSType(os) || getIPad13(),\n isChrome: isChromeType(browser),\n isFirefox: isFirefoxType(browser),\n isSafari: isSafariType(browser),\n isOpera: isOperaType(browser),\n isIE: isIEType(browser),\n osVersion: getOsVersion(os),\n osName: getOsName(os),\n fullBrowserVersion: getBrowserFullVersion(browser),\n browserVersion: getBrowserVersion(browser),\n browserName: getBrowserName(browser),\n mobileVendor: getMobileVendor(device),\n mobileModel: getMobileModel(device),\n engineName: getEngineName(engine),\n engineVersion: getEngineVersion(engine),\n getUA: getUseragent(ua),\n isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),\n isYandex: isYandexType(browser),\n deviceType: getDeviceType(device),\n isIOS13: getIOS13(),\n isIPad13: getIPad13(),\n isIPhone13: getIphone13(),\n isIPod13: getIPod13(),\n isElectron: isElectronType(),\n isEdgeChromium: isEdgeChromiumType(ua),\n isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),\n isWindows: isWindowsType(os),\n isMacOs: isMacOsType(os),\n isMIUI: isMIUIType(browser),\n isSamsungBrowser: isSamsungBrowserType(browser)\n };\n}\n\nvar isSmartTV = isSmartTVType(device);\nvar isConsole = isConsoleType(device);\nvar isWearable = isWearableType(device);\nvar isEmbedded = isEmbeddedType(device);\nvar isMobileSafari = isMobileSafariType(browser) || getIPad13();\nvar isChromium = isChromiumType(browser);\nvar isMobile = isMobileAndTabletType(device) || getIPad13();\nvar isMobileOnly = isMobileType(device);\nvar isTablet = isTabletType(device) || getIPad13();\nvar isBrowser = isBrowserType(device);\nvar isDesktop = isBrowserType(device);\nvar isAndroid = isAndroidType(os);\nvar isWinPhone = isWinPhoneType(os);\nvar isIOS = isIOSType(os) || getIPad13();\nvar isChrome = isChromeType(browser);\nvar isFirefox = isFirefoxType(browser);\nvar isSafari = isSafariType(browser);\nvar isOpera = isOperaType(browser);\nvar isIE = isIEType(browser);\nvar osVersion = getOsVersion(os);\nvar osName = getOsName(os);\nvar fullBrowserVersion = getBrowserFullVersion(browser);\nvar browserVersion = getBrowserVersion(browser);\nvar browserName = getBrowserName(browser);\nvar mobileVendor = getMobileVendor(device);\nvar mobileModel = getMobileModel(device);\nvar engineName = getEngineName(engine);\nvar engineVersion = getEngineVersion(engine);\nvar getUA = getUseragent(ua);\nvar isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);\nvar isYandex = isYandexType(browser);\nvar deviceType = getDeviceType(device);\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType(ua);\nvar isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);\nvar isWindows = isWindowsType(os);\nvar isMacOs = isMacOsType(os);\nvar isMIUI = isMIUIType(browser);\nvar isSamsungBrowser = isSamsungBrowserType(browser);\nvar getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {\n if (!userAgent || typeof userAgent !== 'string') {\n console.error('No valid user agent string was provided');\n return;\n }\n\n var _UAHelper$parseUserAg = parseUserAgent(userAgent),\n device = _UAHelper$parseUserAg.device,\n browser = _UAHelper$parseUserAg.browser,\n os = _UAHelper$parseUserAg.os,\n engine = _UAHelper$parseUserAg.engine,\n ua = _UAHelper$parseUserAg.ua;\n\n return buildSelectorsObject({\n device: device,\n browser: browser,\n os: os,\n engine: engine,\n ua: ua\n });\n};\n\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\"]);\n\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\"]);\n\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\"]);\n\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\"]);\n\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\"]);\n\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\"]);\n\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\"]);\n\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style,\n props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\"]);\n\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\"]);\n\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\"]);\n\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition,\n props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n return /*#__PURE__*/function (_React$Component) {\n _inherits(_class, _React$Component);\n\n function _class(props) {\n var _this;\n\n _classCallCheck(this, _class);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n\n return _class;\n }(React__default.Component);\n}\n\nfunction useMobileOrientation() {\n var _useState = React.useState(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n return {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n }),\n _useState2 = _slicedToArray(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n\n var handleOrientationChange = React.useCallback(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n var next = {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n state.orientation !== next.orientation && setState(next);\n }, [state.orientation]);\n React.useEffect(function () {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n handleOrientationChange();\n window.addEventListener(\"load\", handleOrientationChange, false);\n window.addEventListener(\"resize\", handleOrientationChange, false);\n }\n\n return function () {\n window.removeEventListener(\"resize\", handleOrientationChange, false);\n window.removeEventListener(\"load\", handleOrientationChange, false);\n };\n }, [handleOrientationChange]);\n return state;\n}\n\nfunction useDeviceData(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n return parseUserAgent(hookUserAgent);\n}\n\nfunction useDeviceSelectors(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n var deviceData = useDeviceData(hookUserAgent);\n var selectors = buildSelectorsObject(deviceData);\n return [selectors, deviceData];\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getSelectorsByUserAgent = getSelectorsByUserAgent;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isEmbedded = isEmbedded;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.parseUserAgent = parseUserAgent;\nexports.setUserAgent = setUserAgent;\nexports.useDeviceData = useDeviceData;\nexports.useDeviceSelectors = useDeviceSelectors;\nexports.useMobileOrientation = useMobileOrientation;\nexports.withOrientationChange = withOrientationChange;\n","/**\n * @license React\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\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(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 z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(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){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(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(ra,\nsa);z[b]=new v(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(ra,sa);z[b]=new v(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(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(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 ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction 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 A({},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 ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(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\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(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 cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!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,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({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 ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(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}}var wb=null;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(p(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>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){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 Ne(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)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=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&&Ne(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&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;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}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)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=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(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}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(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 mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(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 qh(a,b,c,d){var e=a.updateQueue;jh=!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 m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"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[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,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=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(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.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(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.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;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 Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(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 al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=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.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3 &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/**\n * @license React\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';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.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:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\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=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}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}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\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","/* UAParser.js v1.0.37\n Copyright © 2012-2021 Faisal Salman \n MIT License */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"1.0.37\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\",UA_MAX_LENGTH=500;var AMAZON=\"Amazon\",APPLE=\"Apple\",ASUS=\"ASUS\",BLACKBERRY=\"BlackBerry\",BROWSER=\"Browser\",CHROME=\"Chrome\",EDGE=\"Edge\",FIREFOX=\"Firefox\",GOOGLE=\"Google\",HUAWEI=\"Huawei\",LG=\"LG\",MICROSOFT=\"Microsoft\",MOTOROLA=\"Motorola\",OPERA=\"Opera\",SAMSUNG=\"Samsung\",SHARP=\"Sharp\",SONY=\"Sony\",XIAOMI=\"Xiaomi\",ZEBRA=\"Zebra\",FACEBOOK=\"Facebook\",CHROMIUM_OS=\"Chromium OS\",MAC_OS=\"Mac OS\";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j2){_device[MODEL]=\"iPad\";_device[TYPE]=TABLET}return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined;_engine[VERSION]=undefined;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined;_os[VERSION]=undefined;rgxMapper.call(_os,_ua,_rgxmap.os);if(_isSelfNav&&!_os[NAME]&&_uach&&_uach.platform!=\"Unknown\"){_os[NAME]=_uach.platform.replace(/chrome os/i,CHROMIUM_OS).replace(/macos/i,MAC_OS)}return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);","\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst enhancers_1 = require(\"./enhancers\");\nconst enhance_props_1 = __importDefault(require(\"./enhance-props\"));\nconst safeHref_1 = require(\"./utils/safeHref\");\nconst Box = react_1.default.forwardRef((_a, ref) => {\n var { is, children, allowUnsafeHref } = _a, props = __rest(_a, [\"is\", \"children\", \"allowUnsafeHref\"]);\n const { className, enhancedProps: parsedProps } = (0, enhance_props_1.default)(props);\n parsedProps.className = className;\n if (ref) {\n parsedProps.ref = ref;\n }\n const safeHrefEnabled = (typeof allowUnsafeHref === 'boolean' ? !allowUnsafeHref : (0, safeHref_1.getUseSafeHref)()) && is === 'a' && parsedProps.href;\n if (safeHrefEnabled) {\n const { safeHref, safeRel } = (0, safeHref_1.extractAnchorProps)(parsedProps.href, parsedProps.rel);\n parsedProps.href = safeHref;\n parsedProps.rel = safeRel;\n }\n return react_1.default.createElement(is || 'div', parsedProps, children);\n});\nBox.displayName = 'Box';\nBox.propTypes = Object.assign(Object.assign({}, enhancers_1.propTypes), { is: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.func, prop_types_1.default.elementType]), allowUnsafeHref: prop_types_1.default.bool });\nBox.defaultProps = {\n is: 'div',\n boxSizing: 'border-box'\n};\nexports.default = Box;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clear = exports.hydrate = exports.entries = exports.set = exports.get = void 0;\nlet cache = new Map();\nfunction get(property, value, selectorHead = '') {\n return cache.get(selectorHead + property + value);\n}\nexports.get = get;\nfunction set(property, value, className, selectorHead = '') {\n if (process.env.NODE_ENV !== 'production') {\n const valueType = typeof value;\n if (valueType !== 'boolean' &&\n valueType !== 'number' &&\n valueType !== 'string') {\n const encodedValue = JSON.stringify(value);\n throw new TypeError(`📦 ui-box: invalid cache value “${encodedValue}”. Only booleans, numbers and strings are supported.`);\n }\n }\n cache.set(selectorHead + property + value, className);\n}\nexports.set = set;\nfunction entries() {\n return [...cache];\n}\nexports.entries = entries;\nfunction hydrate(newEntries) {\n cache = new Map([...cache, ...newEntries]);\n}\nexports.hydrate = hydrate;\nfunction clear() {\n cache.clear();\n}\nexports.clear = clear;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst enhancers_1 = require(\"./enhancers\");\nconst expand_aliases_1 = __importDefault(require(\"./expand-aliases\"));\nconst cache = __importStar(require(\"./cache\"));\nconst styles = __importStar(require(\"./styles\"));\nconst SELECTORS_PROP = 'selectors';\nfunction enhanceProps(props, selectorHead = '', parentProperty = '') {\n const propsMap = (0, expand_aliases_1.default)(props);\n const preservedProps = {};\n let className = props.className || '';\n for (const [property, value] of propsMap) {\n const isSelectorOrChildProp = property === SELECTORS_PROP || parentProperty.length > 0;\n if (isObject(value) && isSelectorOrChildProp) {\n const prop = property === SELECTORS_PROP ? '' : property;\n const newSelectorHead = selectorHead.includes(',')\n ? selectorHead\n .split(',')\n .map(selector => `${selector}${prop}`)\n .join(',')\n : `${selectorHead}${prop}`;\n const parsed = enhanceProps(value, noAnd(newSelectorHead), property);\n className = `${className} ${parsed.className}`;\n continue;\n }\n const enhancer = enhancers_1.propEnhancers[property];\n if (!enhancer) {\n preservedProps[property] = value;\n continue;\n }\n if (value === null || value === undefined || value === false) {\n continue;\n }\n const cachedClassName = cache.get(property, value, selectorHead);\n if (cachedClassName) {\n className = `${className} ${cachedClassName}`;\n continue;\n }\n const newCss = enhancer(value, selectorHead);\n if (newCss) {\n styles.add(newCss.styles);\n cache.set(property, value, newCss.className, selectorHead);\n className = `${className} ${newCss.className}`;\n }\n }\n className = className.trim();\n return { className, enhancedProps: preservedProps };\n}\nexports.default = enhanceProps;\nconst isObject = (value) => value != null && typeof value === 'object';\nconst noAnd = (value) => value.replace(/&/g, '');\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n animation: prop_types_1.default.string,\n animationDelay: prop_types_1.default.string,\n animationDirection: prop_types_1.default.string,\n animationDuration: prop_types_1.default.string,\n animationFillMode: prop_types_1.default.string,\n animationIterationCount: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n animationName: prop_types_1.default.string,\n animationPlayState: prop_types_1.default.string,\n animationTimingFunction: prop_types_1.default.string\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst animation = {\n className: 'a',\n cssName: 'animation',\n jsName: 'animation',\n complexValue: true\n};\nconst animationDelay = {\n className: 'a-dly',\n cssName: 'animation-delay',\n jsName: 'animationDelay',\n defaultUnit: 'ms'\n};\nconst animationDirection = {\n className: 'a-dir',\n cssName: 'animation-direction',\n jsName: 'animationDirection',\n safeValue: true\n};\nconst animationDuration = {\n className: 'a-dur',\n cssName: 'animation-duration',\n jsName: 'animationDuration',\n defaultUnit: 'ms'\n};\nconst animationFillMode = {\n className: 'a-fill-md',\n cssName: 'animation-fill-mode',\n jsName: 'animationFillMode',\n safeValue: true\n};\nconst animationIterationCount = {\n className: 'a-itr-ct',\n cssName: 'animation-iteration-count',\n jsName: 'animationIterationCount',\n defaultUnit: ''\n};\nconst animationName = {\n className: 'a-nm',\n cssName: 'animation-name',\n jsName: 'animationName'\n};\nconst animationPlayState = {\n className: 'a-ply-ste',\n cssName: 'animation-play-state',\n jsName: 'animationPlayState',\n safeValue: true\n};\nconst animationTimingFunction = {\n className: 'a-tmng-fn',\n cssName: 'animation-timing-function',\n jsName: 'animationTimingFunction',\n complexValue: true\n};\nexports.propEnhancers = {\n animation: (value, selector) => (0, get_css_1.default)(animation, value, selector),\n animationDelay: (value, selector) => (0, get_css_1.default)(animationDelay, value, selector),\n animationDirection: (value, selector) => (0, get_css_1.default)(animationDirection, value, selector),\n animationDuration: (value, selector) => (0, get_css_1.default)(animationDuration, value, selector),\n animationFillMode: (value, selector) => (0, get_css_1.default)(animationFillMode, value, selector),\n animationIterationCount: (value, selector) => (0, get_css_1.default)(animationIterationCount, value, selector),\n animationName: (value, selector) => (0, get_css_1.default)(animationName, value, selector),\n animationPlayState: (value, selector) => (0, get_css_1.default)(animationPlayState, value, selector),\n animationTimingFunction: (value, selector) => (0, get_css_1.default)(animationTimingFunction, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n background: prop_types_1.default.string,\n backgroundBlendMode: prop_types_1.default.string,\n backgroundClip: prop_types_1.default.string,\n backgroundColor: prop_types_1.default.string,\n backgroundImage: prop_types_1.default.string,\n backgroundOrigin: prop_types_1.default.string,\n backgroundPosition: prop_types_1.default.string,\n backgroundRepeat: prop_types_1.default.string,\n backgroundSize: prop_types_1.default.string\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst background = {\n className: 'bg',\n cssName: 'background',\n jsName: 'background',\n isPrefixed: true,\n complexValue: true\n};\nconst backgroundColor = {\n className: 'bg-clr',\n cssName: 'background-color',\n jsName: 'backgroundColor'\n};\nconst backgroundImage = {\n className: 'bg-img',\n cssName: 'background-image',\n jsName: 'backgroundImage',\n isPrefixed: true,\n complexValue: true\n};\nconst backgroundPosition = {\n className: 'bg-pos',\n cssName: 'background-position',\n jsName: 'backgroundPosition'\n};\nconst backgroundSize = {\n className: 'bg-siz',\n cssName: 'background-size',\n jsName: 'backgroundSize'\n};\nconst backgroundOrigin = {\n className: 'bg-orgn',\n cssName: 'background-origin',\n jsName: 'backgroundOrigin'\n};\nconst backgroundRepeat = {\n className: 'bg-rpt',\n cssName: 'background-repeat',\n jsName: 'backgroundRepeat'\n};\nconst backgroundClip = {\n className: 'bg-clp',\n cssName: 'background-clip',\n jsName: 'backgroundClip'\n};\nconst backgroundBlendMode = {\n className: 'bg-blnd-md',\n cssName: 'background-blend-mode',\n jsName: 'backgroundBlendMode'\n};\nexports.propEnhancers = {\n background: (value, selector) => (0, get_css_1.default)(background, value, selector),\n backgroundBlendMode: (value, selector) => (0, get_css_1.default)(backgroundBlendMode, value, selector),\n backgroundClip: (value, selector) => (0, get_css_1.default)(backgroundClip, value, selector),\n backgroundColor: (value, selector) => (0, get_css_1.default)(backgroundColor, value, selector),\n backgroundImage: (value, selector) => (0, get_css_1.default)(backgroundImage, value, selector),\n backgroundOrigin: (value, selector) => (0, get_css_1.default)(backgroundOrigin, value, selector),\n backgroundPosition: (value, selector) => (0, get_css_1.default)(backgroundPosition, value, selector),\n backgroundRepeat: (value, selector) => (0, get_css_1.default)(backgroundRepeat, value, selector),\n backgroundSize: (value, selector) => (0, get_css_1.default)(backgroundSize, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nconst regex_1 = require(\"../utils/regex\");\nexports.propTypes = {\n borderBottomLeftRadius: prop_types_1.default.oneOfType([\n prop_types_1.default.string,\n prop_types_1.default.number\n ]),\n borderBottomRightRadius: prop_types_1.default.oneOfType([\n prop_types_1.default.string,\n prop_types_1.default.number\n ]),\n borderRadius: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n borderTopLeftRadius: prop_types_1.default.oneOfType([\n prop_types_1.default.string,\n prop_types_1.default.number\n ]),\n borderTopRightRadius: prop_types_1.default.oneOfType([\n prop_types_1.default.string,\n prop_types_1.default.number\n ])\n};\nexports.propAliases = {\n borderRadius: [\n 'borderBottomLeftRadius',\n 'borderBottomRightRadius',\n 'borderTopLeftRadius',\n 'borderTopRightRadius'\n ]\n};\nexports.propValidators = {};\nif (process.env.NODE_ENV !== 'production') {\n exports.propValidators.borderRadius = value => {\n if (regex_1.spacesOutsideParentheses.test(value)) {\n return `multiple values (“${value}”) aren՚t supported with “borderRadius”. Use “borderBottomLeftRadius”, “borderBottomRightRadius” “borderTopLeftRadius” and “borderTopRightRadius” instead.`;\n }\n return;\n };\n}\nconst borderTopLeftRadius = {\n className: 'btlr',\n cssName: 'border-top-left-radius',\n jsName: 'borderTopLeftRadius'\n};\nconst borderTopRightRadius = {\n className: 'btrr',\n cssName: 'border-top-right-radius',\n jsName: 'borderTopRightRadius'\n};\nconst borderBottomLeftRadius = {\n className: 'bblr',\n cssName: 'border-bottom-left-radius',\n jsName: 'borderBottomLeftRadius'\n};\nconst borderBottomRightRadius = {\n className: 'bbrr',\n cssName: 'border-bottom-right-radius',\n jsName: 'borderBottomRightRadius'\n};\nexports.propEnhancers = {\n borderBottomLeftRadius: (value, selector) => (0, get_css_1.default)(borderBottomLeftRadius, value, selector),\n borderBottomRightRadius: (value, selector) => (0, get_css_1.default)(borderBottomRightRadius, value, selector),\n borderTopLeftRadius: (value, selector) => (0, get_css_1.default)(borderTopLeftRadius, value, selector),\n borderTopRightRadius: (value, selector) => (0, get_css_1.default)(borderTopRightRadius, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nconst regex_1 = require(\"../utils/regex\");\nexports.propTypes = {\n border: prop_types_1.default.string,\n borderBottom: prop_types_1.default.string,\n borderBottomColor: prop_types_1.default.string,\n borderBottomStyle: prop_types_1.default.string,\n borderBottomWidth: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n borderColor: prop_types_1.default.string,\n borderLeft: prop_types_1.default.string,\n borderLeftColor: prop_types_1.default.string,\n borderLeftStyle: prop_types_1.default.string,\n borderLeftWidth: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n borderRight: prop_types_1.default.string,\n borderRightColor: prop_types_1.default.string,\n borderRightStyle: prop_types_1.default.string,\n borderRightWidth: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n borderStyle: prop_types_1.default.string,\n borderTop: prop_types_1.default.string,\n borderTopColor: prop_types_1.default.string,\n borderTopStyle: prop_types_1.default.string,\n borderTopWidth: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n borderWidth: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number])\n};\nexports.propAliases = {\n border: ['borderBottom', 'borderLeft', 'borderRight', 'borderTop'],\n borderColor: [\n 'borderBottomColor',\n 'borderLeftColor',\n 'borderRightColor',\n 'borderTopColor'\n ],\n borderStyle: [\n 'borderBottomStyle',\n 'borderLeftStyle',\n 'borderRightStyle',\n 'borderTopStyle'\n ],\n borderWidth: [\n 'borderBottomWidth',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth'\n ]\n};\nexports.propValidators = {};\nif (process.env.NODE_ENV !== 'production') {\n exports.propValidators.borderColor = value => {\n if (regex_1.spacesOutsideParentheses.test(value)) {\n return `multiple values (“${value}”) aren՚t supported with “borderColor”. Use “borderBottomColor”, “borderLeftColor” “borderRightColor” and “borderTopColor” instead.`;\n }\n return;\n };\n exports.propValidators.borderStyle = value => {\n if (regex_1.spacesOutsideParentheses.test(value)) {\n return `multiple values (“${value}”) aren՚t supported with “borderStyle”. Use “borderBottomStyle”, “borderLeftStyle” “borderRightStyle” and “borderTopStyle” instead.`;\n }\n return;\n };\n exports.propValidators.borderWidth = value => {\n if (regex_1.spacesOutsideParentheses.test(value)) {\n return `multiple values (“${value}”) aren՚t supported with “borderWidth”. Use “borderBottomWidth”, “borderLeftWidth” “borderRightWidth” and “borderTopWidth” instead.`;\n }\n return;\n };\n}\nconst borderLeft = {\n className: 'b-lft',\n cssName: 'border-left',\n jsName: 'borderLeft'\n};\nconst borderLeftColor = {\n className: 'b-lft-clr',\n cssName: 'border-left-color',\n jsName: 'borderLeftColor'\n};\nconst borderLeftStyle = {\n className: 'b-lft-stl',\n cssName: 'border-left-style',\n jsName: 'borderLeftStyle',\n safeValue: true\n};\nconst borderLeftWidth = {\n className: 'b-lft-wdt',\n cssName: 'border-left-width',\n jsName: 'borderLeftWidth'\n};\nconst borderRight = {\n className: 'b-rgt',\n cssName: 'border-right',\n jsName: 'borderRight'\n};\nconst borderRightColor = {\n className: 'b-rgt-clr',\n cssName: 'border-right-color',\n jsName: 'borderRightColor'\n};\nconst borderRightStyle = {\n className: 'b-rgt-stl',\n cssName: 'border-right-style',\n jsName: 'borderRightStyle',\n safeValue: true\n};\nconst borderRightWidth = {\n className: 'b-rgt-wdt',\n cssName: 'border-right-width',\n jsName: 'borderRightWidth'\n};\nconst borderTop = {\n className: 'b-top',\n cssName: 'border-top',\n jsName: 'borderTop'\n};\nconst borderTopColor = {\n className: 'b-top-clr',\n cssName: 'border-top-color',\n jsName: 'borderTopColor'\n};\nconst borderTopStyle = {\n className: 'b-top-stl',\n cssName: 'border-top-style',\n jsName: 'borderTopStyle',\n safeValue: true\n};\nconst borderTopWidth = {\n className: 'b-top-wdt',\n cssName: 'border-top-width',\n jsName: 'borderTopWidth'\n};\nconst borderBottom = {\n className: 'b-btm',\n cssName: 'border-bottom',\n jsName: 'borderBottom'\n};\nconst borderBottomColor = {\n className: 'b-btm-clr',\n cssName: 'border-bottom-color',\n jsName: 'borderBottomColor'\n};\nconst borderBottomStyle = {\n className: 'b-btm-stl',\n cssName: 'border-bottom-style',\n jsName: 'borderBottomStyle',\n safeValue: true\n};\nconst borderBottomWidth = {\n className: 'b-btm-wdt',\n cssName: 'border-bottom-width',\n jsName: 'borderBottomWidth'\n};\nexports.propEnhancers = {\n borderBottom: (value, selector) => (0, get_css_1.default)(borderBottom, value, selector),\n borderBottomColor: (value, selector) => (0, get_css_1.default)(borderBottomColor, value, selector),\n borderBottomStyle: (value, selector) => (0, get_css_1.default)(borderBottomStyle, value, selector),\n borderBottomWidth: (value, selector) => (0, get_css_1.default)(borderBottomWidth, value, selector),\n borderLeft: (value, selector) => (0, get_css_1.default)(borderLeft, value, selector),\n borderLeftColor: (value, selector) => (0, get_css_1.default)(borderLeftColor, value, selector),\n borderLeftStyle: (value, selector) => (0, get_css_1.default)(borderLeftStyle, value, selector),\n borderLeftWidth: (value, selector) => (0, get_css_1.default)(borderLeftWidth, value, selector),\n borderRight: (value, selector) => (0, get_css_1.default)(borderRight, value, selector),\n borderRightColor: (value, selector) => (0, get_css_1.default)(borderRightColor, value, selector),\n borderRightStyle: (value, selector) => (0, get_css_1.default)(borderRightStyle, value, selector),\n borderRightWidth: (value, selector) => (0, get_css_1.default)(borderRightWidth, value, selector),\n borderTop: (value, selector) => (0, get_css_1.default)(borderTop, value, selector),\n borderTopColor: (value, selector) => (0, get_css_1.default)(borderTopColor, value, selector),\n borderTopStyle: (value, selector) => (0, get_css_1.default)(borderTopStyle, value, selector),\n borderTopWidth: (value, selector) => (0, get_css_1.default)(borderTopWidth, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n boxShadow: prop_types_1.default.string\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst boxShadow = {\n className: 'bs',\n cssName: 'box-shadow',\n jsName: 'boxShadow',\n complexValue: true\n};\nexports.propEnhancers = {\n boxShadow: (value, selector) => (0, get_css_1.default)(boxShadow, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n height: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n maxHeight: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n maxWidth: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n minHeight: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n minWidth: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n width: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number])\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst width = {\n className: 'w',\n cssName: 'width',\n jsName: 'width'\n};\nconst height = {\n className: 'h',\n cssName: 'height',\n jsName: 'height'\n};\nconst minWidth = {\n className: 'min-w',\n cssName: 'min-width',\n jsName: 'minWidth'\n};\nconst minHeight = {\n className: 'min-h',\n cssName: 'min-height',\n jsName: 'minHeight'\n};\nconst maxWidth = {\n className: 'max-w',\n cssName: 'max-width',\n jsName: 'maxWidth'\n};\nconst maxHeight = {\n className: 'max-h',\n cssName: 'max-height',\n jsName: 'maxHeight'\n};\nexports.propEnhancers = {\n height: (value, selector) => (0, get_css_1.default)(height, value, selector),\n maxHeight: (value, selector) => (0, get_css_1.default)(maxHeight, value, selector),\n maxWidth: (value, selector) => (0, get_css_1.default)(maxWidth, value, selector),\n minHeight: (value, selector) => (0, get_css_1.default)(minHeight, value, selector),\n minWidth: (value, selector) => (0, get_css_1.default)(minWidth, value, selector),\n width: (value, selector) => (0, get_css_1.default)(width, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n alignContent: prop_types_1.default.string,\n alignItems: prop_types_1.default.string,\n alignSelf: prop_types_1.default.string,\n flex: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n flexBasis: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n flexDirection: prop_types_1.default.string,\n flexFlow: prop_types_1.default.string,\n flexGrow: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n flexShrink: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n flexWrap: prop_types_1.default.string,\n justifyContent: prop_types_1.default.string,\n justifyItems: prop_types_1.default.string,\n justifySelf: prop_types_1.default.string,\n order: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n placeContent: prop_types_1.default.string,\n placeItems: prop_types_1.default.string,\n placeSelf: prop_types_1.default.string\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst flex = {\n className: 'flx',\n cssName: 'flex',\n jsName: 'flex',\n isPrefixed: true,\n defaultUnit: ''\n};\nconst alignItems = {\n className: 'algn-itms',\n cssName: 'align-items',\n jsName: 'alignItems',\n isPrefixed: true\n};\nconst alignSelf = {\n className: 'algn-slf',\n cssName: 'align-self',\n jsName: 'alignSelf',\n isPrefixed: true\n};\nconst alignContent = {\n className: 'algn-cnt',\n cssName: 'align-content',\n jsName: 'alignContent',\n isPrefixed: true\n};\nconst justifyContent = {\n className: 'just-cnt',\n cssName: 'justify-content',\n jsName: 'justifyContent',\n isPrefixed: true\n};\nconst justifyItems = {\n className: 'just-items',\n cssName: 'justify-items',\n jsName: 'justifyItems',\n isPrefixed: true\n};\nconst justifySelf = {\n className: 'just-self',\n cssName: 'justify-self',\n jsName: 'justifySelf',\n isPrefixed: true\n};\nconst flexDirection = {\n className: 'flx-drct',\n cssName: 'flex-direction',\n jsName: 'flexDirection',\n isPrefixed: true,\n safeValue: true\n};\nconst flexWrap = {\n className: 'flx-wrap',\n cssName: 'flex-wrap',\n jsName: 'flexWrap',\n isPrefixed: true,\n safeValue: true\n};\nconst flexGrow = {\n className: 'flx-grow',\n cssName: 'flex-grow',\n jsName: 'flexGrow',\n isPrefixed: true,\n defaultUnit: ''\n};\nconst flexShrink = {\n className: 'flx-srnk',\n cssName: 'flex-shrink',\n jsName: 'flexShrink',\n isPrefixed: true,\n defaultUnit: ''\n};\nconst flexBasis = {\n className: 'flx-basis',\n cssName: 'flex-basis',\n jsName: 'flexBasis',\n isPrefixed: true\n};\nconst order = {\n className: 'order',\n cssName: 'order',\n jsName: 'order',\n isPrefixed: true,\n defaultUnit: '',\n safeValue: true\n};\nconst flexFlow = {\n className: 'flx-flow',\n cssName: 'flex-flow',\n jsName: 'flexFlow',\n isPrefixed: true,\n defaultUnit: ''\n};\nconst placeContent = {\n className: 'plc-cnt',\n cssName: 'place-content',\n jsName: 'placeContent'\n};\nconst placeItems = {\n className: 'plc-items',\n cssName: 'place-items',\n jsName: 'placeItems'\n};\nconst placeSelf = {\n className: 'plc-self',\n cssName: 'place-self',\n jsName: 'placeSelf'\n};\nexports.propEnhancers = {\n alignContent: (value, selector) => (0, get_css_1.default)(alignContent, value, selector),\n alignItems: (value, selector) => (0, get_css_1.default)(alignItems, value, selector),\n alignSelf: (value, selector) => (0, get_css_1.default)(alignSelf, value, selector),\n flex: (value, selector) => (0, get_css_1.default)(flex, value, selector),\n flexBasis: (value, selector) => (0, get_css_1.default)(flexBasis, value, selector),\n flexDirection: (value, selector) => (0, get_css_1.default)(flexDirection, value, selector),\n flexFlow: (value, selector) => (0, get_css_1.default)(flexFlow, value, selector),\n flexGrow: (value, selector) => (0, get_css_1.default)(flexGrow, value, selector),\n flexShrink: (value, selector) => (0, get_css_1.default)(flexShrink, value, selector),\n flexWrap: (value, selector) => (0, get_css_1.default)(flexWrap, value, selector),\n justifyContent: (value, selector) => (0, get_css_1.default)(justifyContent, value, selector),\n justifyItems: (value, selector) => (0, get_css_1.default)(justifyItems, value, selector),\n justifySelf: (value, selector) => (0, get_css_1.default)(justifySelf, value, selector),\n order: (value, selector) => (0, get_css_1.default)(order, value, selector),\n placeContent: (value, selector) => (0, get_css_1.default)(placeContent, value, selector),\n placeItems: (value, selector) => (0, get_css_1.default)(placeItems, value, selector),\n placeSelf: (value, selector) => (0, get_css_1.default)(placeSelf, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n columnGap: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n gap: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n grid: prop_types_1.default.string,\n gridArea: prop_types_1.default.string,\n gridAutoColumns: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n gridAutoFlow: prop_types_1.default.string,\n gridAutoRows: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n gridColumn: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n gridColumnEnd: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n gridColumnGap: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n gridColumnStart: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n gridGap: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n gridRow: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n gridRowEnd: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n gridRowGap: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n gridRowStart: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n gridTemplate: prop_types_1.default.string,\n gridTemplateAreas: prop_types_1.default.string,\n gridTemplateColumns: prop_types_1.default.string,\n gridTemplateRows: prop_types_1.default.string,\n rowGap: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number])\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst columnGap = {\n className: 'col-gap',\n cssName: 'column-gap',\n jsName: 'columnGap'\n};\nconst gap = {\n className: 'gap',\n cssName: 'gap',\n jsName: 'gap'\n};\nconst grid = {\n className: 'grd',\n cssName: 'grid',\n jsName: 'grid',\n complexValue: true\n};\nconst gridArea = {\n className: 'grd-ara',\n cssName: 'grid-area',\n jsName: 'gridArea',\n complexValue: true\n};\nconst gridAutoColumns = {\n className: 'grd-ato-col',\n cssName: 'grid-auto-columns',\n jsName: 'gridAutoColumns',\n complexValue: true\n};\nconst gridAutoFlow = {\n className: 'grd-ato-flw',\n cssName: 'grid-auto-flow',\n jsName: 'gridAutoFlow'\n};\nconst gridAutoRows = {\n className: 'grd-ato-row',\n cssName: 'grid-auto-rows',\n jsName: 'gridAutoRows',\n complexValue: true\n};\nconst gridColumn = {\n className: 'grd-col',\n cssName: 'grid-column',\n jsName: 'gridColumn',\n defaultUnit: '',\n complexValue: true\n};\nconst gridColumnEnd = {\n className: 'grd-col-end',\n cssName: 'grid-column-end',\n jsName: 'gridColumnEnd',\n defaultUnit: ''\n};\nconst gridColumnGap = {\n className: 'grd-col-gap',\n cssName: 'grid-column-gap',\n jsName: 'gridColumnGap'\n};\nconst gridColumnStart = {\n className: 'grd-col-str',\n cssName: 'grid-column-start',\n jsName: 'gridColumnStart',\n defaultUnit: ''\n};\nconst gridGap = {\n className: 'grd-gap',\n cssName: 'grid-gap',\n jsName: 'gridGap'\n};\nconst gridRow = {\n className: 'grd-row',\n cssName: 'grid-row',\n jsName: 'gridRow',\n defaultUnit: '',\n complexValue: true\n};\nconst gridRowEnd = {\n className: 'grd-row-end',\n cssName: 'grid-row-end',\n jsName: 'gridRowEnd',\n defaultUnit: ''\n};\nconst gridRowGap = {\n className: 'grd-row-gap',\n cssName: 'grid-row-gap',\n jsName: 'gridRowGap'\n};\nconst gridRowStart = {\n className: 'grd-row-str',\n cssName: 'grid-row-start',\n jsName: 'gridRowStart',\n defaultUnit: ''\n};\nconst gridTemplate = {\n className: 'grd-tmp',\n cssName: 'grid-template',\n jsName: 'gridTemplate',\n complexValue: true\n};\nconst gridTemplateAreas = {\n className: 'grd-tmp-ara',\n cssName: 'grid-template-areas',\n jsName: 'gridTemplateAreas',\n complexValue: true\n};\nconst gridTemplateColumns = {\n className: 'grd-tmp-col',\n cssName: 'grid-template-columns',\n jsName: 'gridTemplateColumns',\n complexValue: true\n};\nconst gridTemplateRows = {\n className: 'grd-tmp-row',\n cssName: 'grid-template-rows',\n jsName: 'gridTemplateRows',\n complexValue: true\n};\nconst rowGap = {\n className: 'row-gap',\n cssName: 'row-gap',\n jsName: 'rowGap'\n};\nexports.propEnhancers = {\n columnGap: (value, selector) => (0, get_css_1.default)(columnGap, value, selector),\n gap: (value, selector) => (0, get_css_1.default)(gap, value, selector),\n grid: (value, selector) => (0, get_css_1.default)(grid, value, selector),\n gridArea: (value, selector) => (0, get_css_1.default)(gridArea, value, selector),\n gridAutoColumns: (value, selector) => (0, get_css_1.default)(gridAutoColumns, value, selector),\n gridAutoFlow: (value, selector) => (0, get_css_1.default)(gridAutoFlow, value, selector),\n gridAutoRows: (value, selector) => (0, get_css_1.default)(gridAutoRows, value, selector),\n gridColumn: (value, selector) => (0, get_css_1.default)(gridColumn, value, selector),\n gridColumnEnd: (value, selector) => (0, get_css_1.default)(gridColumnEnd, value, selector),\n gridColumnGap: (value, selector) => (0, get_css_1.default)(gridColumnGap, value, selector),\n gridColumnStart: (value, selector) => (0, get_css_1.default)(gridColumnStart, value, selector),\n gridGap: (value, selector) => (0, get_css_1.default)(gridGap, value, selector),\n gridRow: (value, selector) => (0, get_css_1.default)(gridRow, value, selector),\n gridRowEnd: (value, selector) => (0, get_css_1.default)(gridRowEnd, value, selector),\n gridRowGap: (value, selector) => (0, get_css_1.default)(gridRowGap, value, selector),\n gridRowStart: (value, selector) => (0, get_css_1.default)(gridRowStart, value, selector),\n gridTemplate: (value, selector) => (0, get_css_1.default)(gridTemplate, value, selector),\n gridTemplateAreas: (value, selector) => (0, get_css_1.default)(gridTemplateAreas, value, selector),\n gridTemplateColumns: (value, selector) => (0, get_css_1.default)(gridTemplateColumns, value, selector),\n gridTemplateRows: (value, selector) => (0, get_css_1.default)(gridTemplateRows, value, selector),\n rowGap: (value, selector) => (0, get_css_1.default)(rowGap, value, selector)\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propNames = exports.propTypes = exports.transition = exports.transform = exports.text = exports.svg = exports.spacing = exports.selectors = exports.resize = exports.position = exports.overflow = exports.outline = exports.opacity = exports.list = exports.layout = exports.interaction = exports.grid = exports.flex = exports.dimensions = exports.boxShadow = exports.borders = exports.borderRadius = exports.background = exports.animation = void 0;\nconst animation = __importStar(require(\"./animation\"));\nexports.animation = animation;\nconst background = __importStar(require(\"./background\"));\nexports.background = background;\nconst borderRadius = __importStar(require(\"./border-radius\"));\nexports.borderRadius = borderRadius;\nconst borders = __importStar(require(\"./borders\"));\nexports.borders = borders;\nconst boxShadow = __importStar(require(\"./box-shadow\"));\nexports.boxShadow = boxShadow;\nconst dimensions = __importStar(require(\"./dimensions\"));\nexports.dimensions = dimensions;\nconst flex = __importStar(require(\"./flex\"));\nexports.flex = flex;\nconst grid = __importStar(require(\"./grid\"));\nexports.grid = grid;\nconst interaction = __importStar(require(\"./interaction\"));\nexports.interaction = interaction;\nconst layout = __importStar(require(\"./layout\"));\nexports.layout = layout;\nconst list = __importStar(require(\"./list\"));\nexports.list = list;\nconst opacity = __importStar(require(\"./opacity\"));\nexports.opacity = opacity;\nconst outline = __importStar(require(\"./outline\"));\nexports.outline = outline;\nconst overflow = __importStar(require(\"./overflow\"));\nexports.overflow = overflow;\nconst position = __importStar(require(\"./position\"));\nexports.position = position;\nconst resize = __importStar(require(\"./resize\"));\nexports.resize = resize;\nconst selectors = __importStar(require(\"./selectors\"));\nexports.selectors = selectors;\nconst spacing = __importStar(require(\"./spacing\"));\nexports.spacing = spacing;\nconst svg = __importStar(require(\"./svg\"));\nexports.svg = svg;\nconst text = __importStar(require(\"./text\"));\nexports.text = text;\nconst transform = __importStar(require(\"./transform\"));\nexports.transform = transform;\nconst transition = __importStar(require(\"./transition\"));\nexports.transition = transition;\nexports.propTypes = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, animation.propTypes), background.propTypes), borderRadius.propTypes), borders.propTypes), boxShadow.propTypes), dimensions.propTypes), flex.propTypes), grid.propTypes), interaction.propTypes), layout.propTypes), list.propTypes), opacity.propTypes), outline.propTypes), overflow.propTypes), position.propTypes), resize.propTypes), selectors.propTypes), spacing.propTypes), svg.propTypes), text.propTypes), transform.propTypes), transition.propTypes);\nexports.propNames = Object.keys(exports.propTypes);\nexports.propAliases = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, animation.propAliases), background.propAliases), borderRadius.propAliases), borders.propAliases), boxShadow.propAliases), dimensions.propAliases), flex.propAliases), grid.propAliases), interaction.propAliases), layout.propAliases), list.propAliases), opacity.propAliases), outline.propAliases), overflow.propAliases), position.propAliases), resize.propAliases), selectors.propAliases), spacing.propAliases), svg.propAliases), text.propAliases), transform.propAliases), transition.propAliases);\nexports.propValidators = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, animation.propValidators), background.propValidators), borderRadius.propValidators), borders.propValidators), boxShadow.propValidators), dimensions.propValidators), flex.propValidators), grid.propValidators), interaction.propValidators), layout.propValidators), list.propValidators), opacity.propValidators), outline.propValidators), overflow.propValidators), position.propValidators), resize.propValidators), selectors.propValidators), spacing.propValidators), svg.propValidators), text.propValidators), transform.propValidators), transition.propValidators);\nexports.propEnhancers = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, animation.propEnhancers), background.propEnhancers), borderRadius.propEnhancers), borders.propEnhancers), boxShadow.propEnhancers), dimensions.propEnhancers), flex.propEnhancers), grid.propEnhancers), interaction.propEnhancers), layout.propEnhancers), list.propEnhancers), opacity.propEnhancers), outline.propEnhancers), overflow.propEnhancers), position.propEnhancers), resize.propEnhancers), selectors.propEnhancers), spacing.propEnhancers), svg.propEnhancers), text.propEnhancers), transform.propEnhancers), transition.propEnhancers);\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n cursor: prop_types_1.default.string,\n pointerEvents: prop_types_1.default.string,\n userSelect: prop_types_1.default.string,\n visibility: prop_types_1.default.string\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst cursor = {\n className: 'crsr',\n cssName: 'cursor',\n jsName: 'cursor'\n};\nconst userSelect = {\n className: 'usr-slct',\n cssName: 'user-select',\n jsName: 'userSelect',\n safeValue: true,\n isPrefixed: true\n};\nconst visibility = {\n className: 'vsblt',\n cssName: 'visibility',\n jsName: 'visibility',\n safeValue: true\n};\nconst pointerEvents = {\n className: 'ptr-evts',\n cssName: 'pointer-events',\n jsName: 'pointerEvents',\n safeValue: true\n};\nexports.propEnhancers = {\n cursor: (value, selector) => (0, get_css_1.default)(cursor, value, selector),\n pointerEvents: (value, selector) => (0, get_css_1.default)(pointerEvents, value, selector),\n userSelect: (value, selector) => (0, get_css_1.default)(userSelect, value, selector),\n visibility: (value, selector) => (0, get_css_1.default)(visibility, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nconst get_class_name_1 = require(\"../get-class-name\");\nexports.propTypes = {\n boxSizing: prop_types_1.default.string,\n clear: prop_types_1.default.string,\n clearfix: prop_types_1.default.bool,\n content: prop_types_1.default.string,\n display: prop_types_1.default.string,\n float: prop_types_1.default.string,\n zIndex: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number])\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst display = {\n className: 'dspl',\n cssName: 'display',\n jsName: 'display',\n safeValue: true,\n isPrefixed: true\n};\nconst float = {\n className: 'flt',\n cssName: 'float',\n jsName: 'float',\n safeValue: true\n};\nconst clear = {\n className: 'clr',\n cssName: 'clear',\n jsName: 'clear',\n safeValue: true\n};\nconst zIndex = {\n className: 'z-idx',\n cssName: 'z-index',\n jsName: 'zIndex',\n safeValue: true,\n defaultUnit: ''\n};\nconst boxSizing = {\n className: 'box-szg',\n cssName: 'box-sizing',\n jsName: 'boxSizing',\n safeValue: true\n};\nconst clearfix = () => {\n const className = `${(0, get_class_name_1.getClassNamePrefix)()}clearfix`;\n const rules = [\n { property: 'display', value: 'table' },\n { property: 'clear', value: 'both' },\n { property: 'content', value: '\"\"' }\n ];\n const concatenatedRules = rules.map(rule => ` ${rule.property}: ${rule.value};`).join('\\n');\n const styles = `\\n.${className}:before, .${className}:after {\\n${concatenatedRules}\\n}`;\n return { className, rules, styles };\n};\nconst content = {\n className: 'cnt',\n cssName: 'content',\n jsName: 'content',\n complexValue: true\n};\nexports.propEnhancers = {\n boxSizing: (value, selector) => (0, get_css_1.default)(boxSizing, value, selector),\n clear: (value, selector) => (0, get_css_1.default)(clear, value, selector),\n clearfix,\n content: (value, selector) => (0, get_css_1.default)(content, value, selector),\n display: (value, selector) => (0, get_css_1.default)(display, value, selector),\n float: (value, selector) => (0, get_css_1.default)(float, value, selector),\n zIndex: (value, selector) => (0, get_css_1.default)(zIndex, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n listStyle: prop_types_1.default.string,\n listStyleType: prop_types_1.default.string,\n listStyleImage: prop_types_1.default.string,\n listStylePosition: prop_types_1.default.string\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst listStyle = {\n className: 'ls',\n cssName: 'list-style',\n jsName: 'listStyle',\n complexValue: true\n};\nconst listStyleType = {\n className: 'ls-typ',\n cssName: 'list-style-type',\n jsName: 'listStyleType'\n};\nconst listStyleImage = {\n className: 'ls-img',\n cssName: 'list-style-image',\n jsName: 'listStyleImage',\n complexValue: true\n};\nconst listStylePosition = {\n className: 'ls-pos',\n cssName: 'list-style-position',\n jsName: 'listStylePosition',\n safeValue: true\n};\nexports.propEnhancers = {\n listStyle: (value, selector) => (0, get_css_1.default)(listStyle, value, selector),\n listStyleType: (value, selector) => (0, get_css_1.default)(listStyleType, value, selector),\n listStyleImage: (value, selector) => (0, get_css_1.default)(listStyleImage, value, selector),\n listStylePosition: (value, selector) => (0, get_css_1.default)(listStylePosition, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n opacity: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number])\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst opacity = {\n className: 'opct',\n cssName: 'opacity',\n jsName: 'opacity',\n defaultUnit: ''\n};\nexports.propEnhancers = {\n opacity: (value, selector) => (0, get_css_1.default)(opacity, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n outline: prop_types_1.default.string\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst outline = {\n className: 'otln',\n cssName: 'outline',\n jsName: 'outline',\n complexValue: true\n};\nexports.propEnhancers = {\n outline: (value, selector) => (0, get_css_1.default)(outline, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n overflow: prop_types_1.default.string,\n overflowX: prop_types_1.default.string,\n overflowY: prop_types_1.default.string\n};\nexports.propAliases = {\n overflow: ['overflowX', 'overflowY']\n};\nexports.propValidators = {};\nconst overflowY = {\n className: 'ovflw-y',\n cssName: 'overflow-y',\n jsName: 'overflowY',\n safeValue: true\n};\nconst overflowX = {\n className: 'ovflw-x',\n cssName: 'overflow-x',\n jsName: 'overflowX',\n safeValue: true\n};\nexports.propEnhancers = {\n overflowX: (value, selector) => (0, get_css_1.default)(overflowX, value, selector),\n overflowY: (value, selector) => (0, get_css_1.default)(overflowY, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n bottom: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n left: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n position: prop_types_1.default.string,\n right: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n top: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number])\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst position = {\n className: 'pst',\n cssName: 'position',\n jsName: 'position',\n safeValue: true,\n isPrefixed: true\n};\nconst top = {\n className: 'top',\n cssName: 'top',\n jsName: 'top'\n};\nconst right = {\n className: 'rgt',\n cssName: 'right',\n jsName: 'right'\n};\nconst bottom = {\n className: 'btm',\n cssName: 'bottom',\n jsName: 'bottom'\n};\nconst left = {\n className: 'lft',\n cssName: 'left',\n jsName: 'left'\n};\nexports.propEnhancers = {\n bottom: (value, selector) => (0, get_css_1.default)(bottom, value, selector),\n left: (value, selector) => (0, get_css_1.default)(left, value, selector),\n position: (value, selector) => (0, get_css_1.default)(position, value, selector),\n right: (value, selector) => (0, get_css_1.default)(right, value, selector),\n top: (value, selector) => (0, get_css_1.default)(top, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n resize: prop_types_1.default.string\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst resize = {\n className: 'rsz',\n cssName: 'resize',\n jsName: 'resize'\n};\nexports.propEnhancers = {\n resize: (value, selector) => (0, get_css_1.default)(resize, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nexports.propTypes = {\n selectors: prop_types_1.default.object\n};\nexports.propAliases = {};\nexports.propValidators = {};\nexports.propEnhancers = {};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nconst regex_1 = require(\"../utils/regex\");\nexports.propTypes = {\n margin: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n marginBottom: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n marginLeft: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n marginRight: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n marginTop: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n marginX: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n marginY: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n padding: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n paddingBottom: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n paddingLeft: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n paddingRight: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n paddingTop: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n paddingX: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n paddingY: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number])\n};\nexports.propAliases = {\n margin: ['marginBottom', 'marginLeft', 'marginRight', 'marginTop'],\n marginX: ['marginLeft', 'marginRight'],\n marginY: ['marginBottom', 'marginTop'],\n padding: ['paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop'],\n paddingX: ['paddingLeft', 'paddingRight'],\n paddingY: ['paddingBottom', 'paddingTop']\n};\nexports.propValidators = {};\nif (process.env.NODE_ENV !== 'production') {\n exports.propValidators.margin = value => {\n if (regex_1.spacesOutsideParentheses.test(value)) {\n return `multiple values (“${value}”) aren՚t supported with “margin”. Use “marginX”, “marginY” “marginBottom”, “marginLeft”, “marginRight” and “marginTop” instead.`;\n }\n return;\n };\n exports.propValidators.marginX = value => {\n if (regex_1.spacesOutsideParentheses.test(value)) {\n return `multiple values (“${value}”) aren՚t supported with “marginX”. Use “marginLeft” and “marginRight” instead.`;\n }\n return;\n };\n exports.propValidators.marginY = value => {\n if (regex_1.spacesOutsideParentheses.test(value)) {\n return `multiple values (“${value}”) aren՚t supported with “marginY”. Use “marginBottom” and “marginTop” instead.`;\n }\n return;\n };\n exports.propValidators.padding = value => {\n if (regex_1.spacesOutsideParentheses.test(value)) {\n return `multiple values (“${value}”) aren՚t supported with “padding”. Use “paddingX”, “paddingY” “paddingBottom”, “paddingLeft”, “paddingRight” and “paddingTop” instead.`;\n }\n return;\n };\n exports.propValidators.paddingX = value => {\n if (regex_1.spacesOutsideParentheses.test(value)) {\n return `multiple values (“${value}”) aren՚t supported with “paddingX”. Use “paddingLeft” and “paddingRight” instead.`;\n }\n return;\n };\n exports.propValidators.paddingY = value => {\n if (regex_1.spacesOutsideParentheses.test(value)) {\n return `multiple values (“${value}”) aren՚t supported with “paddingY”. Use “paddingBottom” and “paddingTop” instead.`;\n }\n return;\n };\n}\nconst marginTop = {\n className: 'mt',\n cssName: 'margin-top',\n jsName: 'marginTop'\n};\nconst marginRight = {\n className: 'mr',\n cssName: 'margin-right',\n jsName: 'marginRight'\n};\nconst marginBottom = {\n className: 'mb',\n cssName: 'margin-bottom',\n jsName: 'marginBottom'\n};\nconst marginLeft = {\n className: 'ml',\n cssName: 'margin-left',\n jsName: 'marginLeft'\n};\nconst paddingTop = {\n className: 'pt',\n cssName: 'padding-top',\n jsName: 'paddingTop'\n};\nconst paddingRight = {\n className: 'pr',\n cssName: 'padding-right',\n jsName: 'paddingRight'\n};\nconst paddingBottom = {\n className: 'pb',\n cssName: 'padding-bottom',\n jsName: 'paddingBottom'\n};\nconst paddingLeft = {\n className: 'pl',\n cssName: 'padding-left',\n jsName: 'paddingLeft'\n};\nexports.propEnhancers = {\n marginBottom: (value, selector) => (0, get_css_1.default)(marginBottom, value, selector),\n marginLeft: (value, selector) => (0, get_css_1.default)(marginLeft, value, selector),\n marginRight: (value, selector) => (0, get_css_1.default)(marginRight, value, selector),\n marginTop: (value, selector) => (0, get_css_1.default)(marginTop, value, selector),\n paddingBottom: (value, selector) => (0, get_css_1.default)(paddingBottom, value, selector),\n paddingLeft: (value, selector) => (0, get_css_1.default)(paddingLeft, value, selector),\n paddingRight: (value, selector) => (0, get_css_1.default)(paddingRight, value, selector),\n paddingTop: (value, selector) => (0, get_css_1.default)(paddingTop, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n fill: prop_types_1.default.string,\n stroke: prop_types_1.default.string,\n strokeDasharray: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n strokeDashoffset: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n strokeLinecap: prop_types_1.default.string,\n strokeMiterlimit: prop_types_1.default.number,\n strokeWidth: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number])\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst fill = {\n className: 'fill',\n cssName: 'fill',\n jsName: 'fill'\n};\nconst stroke = { className: 'strk', cssName: 'stroke', jsName: 'stroke' };\nconst strokeDasharray = {\n className: 'strk-dshary',\n cssName: 'stroke-dasharray',\n jsName: 'strokeDasharray',\n defaultUnit: ''\n};\nconst strokeDashoffset = {\n className: 'strk-dshofst',\n cssName: 'stroke-dashoffset',\n jsName: 'strokeDashoffset',\n defaultUnit: ''\n};\nconst strokeLinecap = { className: 'strk-lncp', cssName: 'stroke-linecap', jsName: 'strokeLinecap', safeValue: true };\nconst strokeMiterlimit = {\n className: 'strk-mtrlmt',\n cssName: 'stroke-miterlimit',\n jsName: 'strokeMiterlimit',\n defaultUnit: ''\n};\nconst strokeWidth = { className: 'strk-w', cssName: 'stroke-width', jsName: 'strokeWidth', defaultUnit: '' };\nexports.propEnhancers = {\n fill: (value, selector) => (0, get_css_1.default)(fill, value, selector),\n stroke: (value, selector) => (0, get_css_1.default)(stroke, value, selector),\n strokeDasharray: (value, selector) => (0, get_css_1.default)(strokeDasharray, value, selector),\n strokeDashoffset: (value, selector) => (0, get_css_1.default)(strokeDashoffset, value, selector),\n strokeLinecap: (value, selector) => (0, get_css_1.default)(strokeLinecap, value, selector),\n strokeMiterlimit: (value, selector) => (0, get_css_1.default)(strokeMiterlimit, value, selector),\n strokeWidth: (value, selector) => (0, get_css_1.default)(strokeWidth, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n color: prop_types_1.default.string,\n font: prop_types_1.default.string,\n fontFamily: prop_types_1.default.string,\n fontSize: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n fontStyle: prop_types_1.default.string,\n fontVariant: prop_types_1.default.string,\n fontWeight: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n letterSpacing: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n lineHeight: prop_types_1.default.oneOfType([prop_types_1.default.string, prop_types_1.default.number]),\n textAlign: prop_types_1.default.string,\n textDecoration: prop_types_1.default.string,\n textOverflow: prop_types_1.default.string,\n textShadow: prop_types_1.default.string,\n textTransform: prop_types_1.default.string,\n verticalAlign: prop_types_1.default.string,\n whiteSpace: prop_types_1.default.string,\n wordBreak: prop_types_1.default.string,\n wordWrap: prop_types_1.default.string\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst textAlign = {\n className: 'txt-algn',\n safeValue: true,\n cssName: 'text-align',\n jsName: 'textAlign'\n};\nconst textDecoration = {\n className: 'txt-deco',\n cssName: 'text-decoration',\n jsName: 'textDecoration'\n};\nconst textTransform = {\n className: 'txt-trns',\n cssName: 'text-transform',\n jsName: 'textTransform',\n safeValue: true\n};\nconst textShadow = {\n className: 'txt-shdw',\n cssName: 'text-shadow',\n jsName: 'textShadow',\n complexValue: true\n};\nconst textOverflow = {\n className: 'txt-ovrf',\n cssName: 'text-overflow',\n jsName: 'textOverflow',\n safeValue: true\n};\nconst color = {\n className: 'color',\n cssName: 'color',\n jsName: 'color'\n};\nconst font = {\n className: 'fnt',\n cssName: 'font',\n jsName: 'font',\n complexValue: true\n};\nconst fontFamily = {\n className: 'fnt-fam',\n cssName: 'font-family',\n jsName: 'fontFamily',\n complexValue: true\n};\nconst fontSize = {\n className: 'fnt-sze',\n cssName: 'font-size',\n jsName: 'fontSize'\n};\nconst fontStyle = {\n className: 'fnt-stl',\n cssName: 'font-style',\n jsName: 'fontStyle',\n safeValue: true\n};\nconst fontVariant = {\n className: 'f-vari',\n cssName: 'font-variant',\n jsName: 'fontVariant'\n};\nconst fontWeight = {\n className: 'f-wght',\n cssName: 'font-weight',\n jsName: 'fontWeight',\n safeValue: true,\n defaultUnit: ''\n};\nconst lineHeight = {\n className: 'ln-ht',\n cssName: 'line-height',\n jsName: 'lineHeight',\n defaultUnit: ''\n};\nconst verticalAlign = {\n className: 'ver-algn',\n cssName: 'vertical-align',\n jsName: 'verticalAlign',\n safeValue: true\n};\nconst wordBreak = {\n className: 'wrd-brk',\n cssName: 'word-break',\n jsName: 'wordBreak',\n safeValue: true\n};\nconst wordWrap = {\n className: 'wrd-wrp',\n cssName: 'word-wrap',\n jsName: 'wordWrap',\n safeValue: true\n};\nconst whiteSpace = {\n className: 'wht-spc',\n cssName: 'white-space',\n jsName: 'whiteSpace',\n safeValue: true\n};\nconst letterSpacing = {\n className: 'ltr-spc',\n cssName: 'letter-spacing',\n jsName: 'letterSpacing'\n};\nexports.propEnhancers = {\n color: (value, selector) => (0, get_css_1.default)(color, value, selector),\n font: (value, selector) => (0, get_css_1.default)(font, value, selector),\n fontFamily: (value, selector) => (0, get_css_1.default)(fontFamily, value, selector),\n fontSize: (value, selector) => (0, get_css_1.default)(fontSize, value, selector),\n fontStyle: (value, selector) => (0, get_css_1.default)(fontStyle, value, selector),\n fontVariant: (value, selector) => (0, get_css_1.default)(fontVariant, value, selector),\n fontWeight: (value, selector) => (0, get_css_1.default)(fontWeight, value, selector),\n letterSpacing: (value, selector) => (0, get_css_1.default)(letterSpacing, value, selector),\n lineHeight: (value, selector) => (0, get_css_1.default)(lineHeight, value, selector),\n textAlign: (value, selector) => (0, get_css_1.default)(textAlign, value, selector),\n textDecoration: (value, selector) => (0, get_css_1.default)(textDecoration, value, selector),\n textOverflow: (value, selector) => (0, get_css_1.default)(textOverflow, value, selector),\n textShadow: (value, selector) => (0, get_css_1.default)(textShadow, value, selector),\n textTransform: (value, selector) => (0, get_css_1.default)(textTransform, value, selector),\n verticalAlign: (value, selector) => (0, get_css_1.default)(verticalAlign, value, selector),\n whiteSpace: (value, selector) => (0, get_css_1.default)(whiteSpace, value, selector),\n wordBreak: (value, selector) => (0, get_css_1.default)(wordBreak, value, selector),\n wordWrap: (value, selector) => (0, get_css_1.default)(wordWrap, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n transform: prop_types_1.default.string,\n transformOrigin: prop_types_1.default.string\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst transform = {\n className: 'tfrm',\n cssName: 'transform',\n jsName: 'transform',\n complexValue: true\n};\nconst transformOrigin = {\n className: 'tfrm-orgn',\n cssName: 'transform-origin',\n jsName: 'transformOrigin',\n complexValue: true\n};\nexports.propEnhancers = {\n transform: (value, selector) => (0, get_css_1.default)(transform, value, selector),\n transformOrigin: (value, selector) => (0, get_css_1.default)(transformOrigin, value, selector)\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.propEnhancers = exports.propValidators = exports.propAliases = exports.propTypes = void 0;\nconst prop_types_1 = __importDefault(require(\"prop-types\"));\nconst get_css_1 = __importDefault(require(\"../get-css\"));\nexports.propTypes = {\n transition: prop_types_1.default.string,\n transitionDelay: prop_types_1.default.string,\n transitionDuration: prop_types_1.default.string,\n transitionProperty: prop_types_1.default.string,\n transitionTimingFunction: prop_types_1.default.string\n};\nexports.propAliases = {};\nexports.propValidators = {};\nconst transition = {\n className: 'tstn',\n cssName: 'transition',\n jsName: 'transition',\n complexValue: true\n};\nconst transitionDelay = {\n className: 'tstn-dly',\n cssName: 'transition-delay',\n jsName: 'transitionDelay',\n complexValue: true\n};\nconst transitionDuration = {\n className: 'tstn-drn',\n cssName: 'transition-duration',\n jsName: 'transitionDuration',\n complexValue: true\n};\nconst transitionProperty = {\n className: 'tstn-pty',\n cssName: 'transition-property',\n jsName: 'transitionProperty',\n complexValue: true\n};\nconst transitionTimingFunction = {\n className: 'tstn-tf',\n cssName: 'transition-timing-function',\n jsName: 'transitionTimingFunction',\n complexValue: true\n};\nexports.propEnhancers = {\n transition: (value, selector) => (0, get_css_1.default)(transition, value, selector),\n transitionDelay: (value, selector) => (0, get_css_1.default)(transitionDelay, value, selector),\n transitionDuration: (value, selector) => (0, get_css_1.default)(transitionDuration, value, selector),\n transitionProperty: (value, selector) => (0, get_css_1.default)(transitionProperty, value, selector),\n transitionTimingFunction: (value, selector) => (0, get_css_1.default)(transitionTimingFunction, value, selector)\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst index_1 = require(\"./enhancers/index\");\nfunction expandAliases(props) {\n const propNames = Object.keys(props);\n const newProps = new Map();\n propNames.forEach(propName => {\n const propValue = props[propName];\n const aliases = index_1.propAliases[propName] || [propName];\n if (process.env.NODE_ENV !== 'production') {\n const validator = index_1.propValidators[propName];\n if (validator) {\n const result = validator(propValue);\n if (result) {\n throw new Error(`📦 ui-box: ${result}`);\n }\n }\n }\n aliases.forEach(alias => {\n newProps.set(alias, propValue);\n });\n });\n return newProps;\n}\nexports.default = expandAliases;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setClassNamePrefix = exports.getClassNamePrefix = void 0;\nconst hash_1 = __importDefault(require(\"@emotion/hash\"));\nconst get_safe_value_1 = __importDefault(require(\"./get-safe-value\"));\nlet PREFIX = 'ub-';\nfunction getClassNamePrefix() {\n return PREFIX;\n}\nexports.getClassNamePrefix = getClassNamePrefix;\nfunction setClassNamePrefix(prefix) {\n PREFIX = prefix;\n}\nexports.setClassNamePrefix = setClassNamePrefix;\nfunction getClassName(propertyInfo, value, selector = '') {\n const { className, safeValue = false, complexValue = false } = propertyInfo;\n let valueKey;\n if (value === 'inherit' || value === 'initial' || value === 'unset') {\n valueKey = value;\n }\n else if (complexValue || value.includes('calc(')) {\n valueKey = (0, hash_1.default)(value);\n }\n else if (safeValue) {\n valueKey = value;\n }\n else {\n valueKey = (0, get_safe_value_1.default)(value);\n }\n if (selector) {\n valueKey = `${valueKey}_${(0, hash_1.default)(selector)}`;\n }\n return `${PREFIX}${className}_${valueKey}`;\n}\nexports.default = getClassName;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst prefixer_1 = __importDefault(require(\"./prefixer\"));\nconst value_to_string_1 = __importDefault(require(\"./value-to-string\"));\nconst get_class_name_1 = __importDefault(require(\"./get-class-name\"));\nconst is_production_1 = __importDefault(require(\"./utils/is-production\"));\nfunction getCss(propertyInfo, value, selector = '') {\n let rules;\n const valueType = typeof value;\n if (valueType !== 'string' && valueType !== 'number') {\n if (process.env.NODE_ENV !== 'production') {\n const name = propertyInfo.jsName;\n const encodedValue = JSON.stringify(value);\n console.error(`📦 ui-box: property “${name}” was passed invalid value “${encodedValue}”. Only numbers and strings are supported.`);\n }\n return null;\n }\n const valueString = (0, value_to_string_1.default)(value, propertyInfo.defaultUnit);\n const className = (0, get_class_name_1.default)(propertyInfo, valueString, selector);\n if (propertyInfo.isPrefixed) {\n rules = (0, prefixer_1.default)(propertyInfo.jsName || '', valueString);\n }\n else {\n rules = [{ property: propertyInfo.cssName || '', value: valueString }];\n }\n let styles;\n if ((0, is_production_1.default)()) {\n const rulesString = rules.map(rule => `${rule.property}:${rule.value}`).join(';');\n styles = `${expandSelectors(className, selector)}{${rulesString}}`;\n }\n else {\n const rulesString = rules.map(rule => ` ${rule.property}: ${rule.value};`).join('\\n');\n styles = `\n${expandSelectors(className, selector)} {\n${rulesString}\n}`;\n }\n return { className, styles, rules };\n}\nexports.default = getCss;\nconst expandSelectors = (className, selector) => {\n if (!selector.includes(',')) {\n return `.${className}${selector}`;\n }\n return selector\n .split(',')\n .map(selectorPart => `.${className}${selectorPart}`)\n .join(', ');\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst regex_1 = require(\"./utils/regex\");\nconst dashRegex = /[ .]/g;\nconst percentRegex = /%/g;\nfunction getSafeValue(value) {\n return value\n .replace(dashRegex, '-')\n .replace(percentRegex, 'prcnt')\n .replace(regex_1.unsafeClassNameCharacters, '');\n}\nexports.default = getSafeValue;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clearStyles = exports.extractStyles = exports.hydrate = exports.propEnhancers = exports.propAliases = exports.propNames = exports.propTypes = exports.transform = exports.text = exports.spacing = exports.position = exports.overflow = exports.opacity = exports.list = exports.layout = exports.interaction = exports.flex = exports.dimensions = exports.boxShadow = exports.borders = exports.borderRadius = exports.background = exports.configureSafeHref = exports.setClassNamePrefix = exports.splitBoxProps = exports.splitProps = exports.keyframes = exports.default = void 0;\nconst cache = __importStar(require(\"./cache\"));\nconst styles = __importStar(require(\"./styles\"));\nvar box_1 = require(\"./box\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return __importDefault(box_1).default; } });\nvar keyframes_1 = require(\"./keyframes\");\nObject.defineProperty(exports, \"keyframes\", { enumerable: true, get: function () { return __importDefault(keyframes_1).default; } });\nvar split_props_1 = require(\"./utils/split-props\");\nObject.defineProperty(exports, \"splitProps\", { enumerable: true, get: function () { return __importDefault(split_props_1).default; } });\nvar split_box_props_1 = require(\"./utils/split-box-props\");\nObject.defineProperty(exports, \"splitBoxProps\", { enumerable: true, get: function () { return __importDefault(split_box_props_1).default; } });\nvar get_class_name_1 = require(\"./get-class-name\");\nObject.defineProperty(exports, \"setClassNamePrefix\", { enumerable: true, get: function () { return get_class_name_1.setClassNamePrefix; } });\nvar safeHref_1 = require(\"./utils/safeHref\");\nObject.defineProperty(exports, \"configureSafeHref\", { enumerable: true, get: function () { return safeHref_1.configureSafeHref; } });\nvar index_1 = require(\"./enhancers/index\");\nObject.defineProperty(exports, \"background\", { enumerable: true, get: function () { return index_1.background; } });\nObject.defineProperty(exports, \"borderRadius\", { enumerable: true, get: function () { return index_1.borderRadius; } });\nObject.defineProperty(exports, \"borders\", { enumerable: true, get: function () { return index_1.borders; } });\nObject.defineProperty(exports, \"boxShadow\", { enumerable: true, get: function () { return index_1.boxShadow; } });\nObject.defineProperty(exports, \"dimensions\", { enumerable: true, get: function () { return index_1.dimensions; } });\nObject.defineProperty(exports, \"flex\", { enumerable: true, get: function () { return index_1.flex; } });\nObject.defineProperty(exports, \"interaction\", { enumerable: true, get: function () { return index_1.interaction; } });\nObject.defineProperty(exports, \"layout\", { enumerable: true, get: function () { return index_1.layout; } });\nObject.defineProperty(exports, \"list\", { enumerable: true, get: function () { return index_1.list; } });\nObject.defineProperty(exports, \"opacity\", { enumerable: true, get: function () { return index_1.opacity; } });\nObject.defineProperty(exports, \"overflow\", { enumerable: true, get: function () { return index_1.overflow; } });\nObject.defineProperty(exports, \"position\", { enumerable: true, get: function () { return index_1.position; } });\nObject.defineProperty(exports, \"spacing\", { enumerable: true, get: function () { return index_1.spacing; } });\nObject.defineProperty(exports, \"text\", { enumerable: true, get: function () { return index_1.text; } });\nObject.defineProperty(exports, \"transform\", { enumerable: true, get: function () { return index_1.transform; } });\nObject.defineProperty(exports, \"propTypes\", { enumerable: true, get: function () { return index_1.propTypes; } });\nObject.defineProperty(exports, \"propNames\", { enumerable: true, get: function () { return index_1.propNames; } });\nObject.defineProperty(exports, \"propAliases\", { enumerable: true, get: function () { return index_1.propAliases; } });\nObject.defineProperty(exports, \"propEnhancers\", { enumerable: true, get: function () { return index_1.propEnhancers; } });\nexports.hydrate = cache.hydrate;\nfunction extractStyles() {\n const output = {\n cache: cache.entries(),\n styles: styles.getAll()\n };\n clearStyles();\n return output;\n}\nexports.extractStyles = extractStyles;\nfunction clearStyles() {\n cache.clear();\n styles.clear();\n}\nexports.clearStyles = clearStyles;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst hash_1 = __importDefault(require(\"@emotion/hash\"));\nconst flatten_object_1 = __importDefault(require(\"./utils/flatten-object\"));\nconst enhancers_1 = require(\"./enhancers\");\nconst is_production_1 = __importDefault(require(\"./utils/is-production\"));\nconst stylesheet = __importStar(require(\"./styles\"));\nconst cache = __importStar(require(\"./cache\"));\nconst keyframes = (friendlyName, timeline) => {\n const hashedValue = (0, hash_1.default)((0, flatten_object_1.default)(timeline));\n const name = `${friendlyName}_${hashedValue}`;\n const cachedStyles = cache.get(friendlyName, hashedValue, 'keyframe');\n if (cachedStyles != null) {\n return name;\n }\n const keys = Object.keys(timeline);\n const timelineStyles = keys.map(key => getStylesForTimelineKey(key, timeline[key] || {}));\n const styles = getKeyframesStyles(name, timelineStyles);\n cache.set(friendlyName, hashedValue, styles, 'keyframe');\n stylesheet.add(styles);\n return name;\n};\nconst flatten = (values) => {\n const flattenedValues = [];\n return flattenedValues.concat(...values);\n};\nconst getStylesForTimelineKey = (timelineKey, cssProps) => {\n const cssPropKeys = Object.keys(cssProps);\n const rules = flatten(cssPropKeys.map(cssPropKey => getRulesForKey(cssPropKey, cssProps)));\n const key = timelineKeyToString(timelineKey);\n const rulesString = rules\n .map(rule => {\n const { property, value } = rule;\n if ((0, is_production_1.default)()) {\n return `${property}:${value};`;\n }\n return ` ${property}: ${value};`;\n })\n .join((0, is_production_1.default)() ? '' : '\\n');\n if ((0, is_production_1.default)()) {\n return `${key} {${rulesString}}`;\n }\n return ` ${key} {\\n${rulesString}\\n }`;\n};\nconst getRulesForKey = (key, cssProps) => {\n const value = cssProps[key];\n const enhancer = enhancers_1.propEnhancers[key];\n if (enhancer == null || value == null || value === false) {\n return [];\n }\n const enhancedProp = enhancer(value, '');\n if (enhancedProp == null) {\n return [];\n }\n return enhancedProp.rules;\n};\nconst getKeyframesStyles = (name, rules) => {\n const separator = (0, is_production_1.default)() ? '' : '\\n';\n const openBrace = `{${separator}`;\n const closeBrace = `${separator}}`;\n const concatenatedRules = rules.join(separator);\n return `@keyframes ${name} ${openBrace}${concatenatedRules}${closeBrace}`;\n};\nconst timelineKeyToString = (timelineKey) => {\n const isNumber = !isNaN(Number(timelineKey));\n return isNumber ? `${timelineKey}%` : timelineKey.toString();\n};\nexports.default = keyframes;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst inline_style_prefixer_1 = require(\"inline-style-prefixer\");\nconst decamelize_1 = __importDefault(require(\"./utils/decamelize\"));\nconst prefixRegex = /^(Webkit|ms|Moz|O)/;\nfunction prefixer(property, value) {\n const rules = (0, inline_style_prefixer_1.prefix)({ [property]: value });\n const rulesArray = [];\n const propertyNames = Object.keys(rules);\n for (let i = 0; i < propertyNames.length; i++) {\n const propertyName = propertyNames[i];\n const prefixedProp = propertyName.match(prefixRegex)\n ? `-${propertyName}`\n : propertyName;\n const prop = (0, decamelize_1.default)(prefixedProp);\n const values = rules[propertyName];\n if (Array.isArray(values)) {\n for (let j = 0; j < values.length; j++) {\n rulesArray.push({ property: prop, value: values[j] });\n }\n }\n else {\n rulesArray.push({ property: prop, value: values });\n }\n }\n return rulesArray;\n}\nexports.default = prefixer;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clear = exports.getAll = exports.add = void 0;\nconst style_sheet_1 = __importDefault(require(\"./utils/style-sheet\"));\nconst styleSheet = new style_sheet_1.default({});\nstyleSheet.inject();\nfunction add(styles) {\n styleSheet.insert(styles);\n}\nexports.add = add;\nfunction getAll() {\n return styleSheet\n .rules()\n .reduce((combinedRules, rule) => combinedRules + rule.cssText, '');\n}\nexports.getAll = getAll;\nfunction clear() {\n styleSheet.flush();\n styleSheet.inject();\n}\nexports.clear = clear;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst separator = '-';\nconst regex1 = /([a-z\\d])([A-Z])/g;\nconst regex2 = /([a-z]+)([A-Z][a-z\\d]+)/g;\nfunction decamelize(text) {\n return text\n .replace(regex1, `$1${separator}$2`)\n .replace(regex2, `$1${separator}$2`)\n .toLowerCase();\n}\nexports.default = decamelize;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst flattenObject = (object) => {\n const keys = Object.keys(object);\n return keys\n .map(key => {\n const value = object[key];\n const type = typeof value;\n if (Array.isArray(value)) {\n return `${key}:array:[${value.map((value, index) => flattenObject({ [index]: value }))}]`;\n }\n if (value != null && type === 'object') {\n return `${key}:${type}:${flattenObject(value)}`;\n }\n return `${key}:${type}:${value}`;\n })\n .join(';');\n};\nexports.default = flattenObject;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst isProduction = () => process.env.NODE_ENV === 'production';\nexports.default = isProduction;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unsafeClassNameCharacters = exports.spacesOutsideParentheses = void 0;\nexports.spacesOutsideParentheses = / (?=([^()]*\\([^()]*\\))*[^()]*$)/g;\nexports.unsafeClassNameCharacters = /[^_a-zA-Z0-9-]/g;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extractAnchorProps = exports.getURLInfo = exports.getUseSafeHref = exports.configureSafeHref = void 0;\nconst PROTOCOL_REGEX = /^[a-z]+:/;\nconst ORIGIN_REGEX = /^(?:[a-z]+:?:)?(?:\\/\\/)?([^\\/\\?]+)/;\nlet useSafeHref = true;\nlet globalOrigin = typeof window !== 'undefined' ? window.location.origin : false;\nfunction configureSafeHref(configObject) {\n if (typeof configObject.enabled === 'boolean') {\n useSafeHref = configObject.enabled;\n }\n if (configObject.origin) {\n globalOrigin = configObject.origin;\n }\n}\nexports.configureSafeHref = configureSafeHref;\nfunction getUseSafeHref() {\n return useSafeHref;\n}\nexports.getUseSafeHref = getUseSafeHref;\nfunction getURLInfo(url) {\n const safeProtocols = ['http:', 'https:', 'mailto:', 'tel:', 'data:'];\n const protocolResult = url.match(PROTOCOL_REGEX);\n const originResult = url.match(ORIGIN_REGEX);\n const urlProtocol = protocolResult ? protocolResult[0] : 'relative';\n let sameOrigin = urlProtocol === 'relative';\n if (!sameOrigin && globalOrigin) {\n sameOrigin = globalOrigin === (originResult && originResult[0]);\n }\n const isSafeProtocol = sameOrigin ? true : safeProtocols.includes(urlProtocol);\n if (!isSafeProtocol) {\n console.error('📦 `href` passed to anchor tag is unsafe. Because of this, the `href` on the element was not set. Please review the safe href documentation if you have questions.', 'https://www.github.com/segmentio/ui-box');\n return {\n url: undefined,\n sameOrigin\n };\n }\n return {\n url,\n sameOrigin\n };\n}\nexports.getURLInfo = getURLInfo;\nfunction extractAnchorProps(href, rel) {\n const urlInfo = getURLInfo(href);\n const safeHref = urlInfo.url;\n let safeRel = rel || '';\n if (urlInfo.url) {\n if (!safeRel.includes('noopener')) {\n safeRel += `${safeRel.length > 0 ? ' ' : ''}noopener`;\n }\n if (!safeRel.includes('noreferrer') && !urlInfo.sameOrigin) {\n safeRel += `${safeRel.length > 0 ? ' ' : ''}noreferrer`;\n }\n }\n return {\n safeHref,\n safeRel\n };\n}\nexports.extractAnchorProps = extractAnchorProps;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst index_1 = require(\"../enhancers/index\");\nconst split_props_1 = __importDefault(require(\"./split-props\"));\nfunction splitBoxProps(props) {\n return (0, split_props_1.default)(props, index_1.propNames);\n}\nexports.default = splitBoxProps;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction splitProps(props, keys) {\n const matchedProps = {};\n const remainingProps = {};\n const propKeys = Object.keys(props);\n for (let i = 0; i < propKeys.length; i++) {\n const propKey = propKeys[i];\n const propValue = props[propKey];\n if (keys.includes(propKey)) {\n matchedProps[propKey] = propValue;\n }\n else {\n remainingProps[propKey] = propValue;\n }\n }\n return { matchedProps, remainingProps };\n}\nexports.default = splitProps;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst is_production_1 = __importDefault(require(\"./is-production\"));\nconst isBrowser = typeof window !== 'undefined';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n }\n for (let i = 0; i < document.styleSheets.length; i += 1) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n }\n return;\n}\nfunction makeStyleTag() {\n const tag = document.createElement('style');\n tag.type = 'text/css';\n tag.setAttribute('data-ui-box', '');\n tag.append(document.createTextNode(''));\n (document.head || document.querySelector('head')).append(tag);\n return tag;\n}\nclass CustomStyleSheet {\n constructor(options = {}) {\n this.tags = [];\n this.ctr = 0;\n this.injected = false;\n this.isSpeedy = options.speedy === undefined ? (0, is_production_1.default)() : options.speedy;\n this.maxLength = options.maxLength || 65000;\n }\n getSheet() {\n return sheetForTag(last(this.tags));\n }\n inject() {\n if (this.injected) {\n throw new Error('StyleSheet has already been injected.');\n }\n if (isBrowser) {\n this.tags[0] = makeStyleTag();\n }\n else {\n this.sheet = {\n cssRules: [],\n insertRule: (rule) => {\n ;\n this.sheet.cssRules.push({ cssText: rule });\n }\n };\n }\n this.injected = true;\n }\n speedy(bool) {\n if (this.ctr !== 0) {\n throw new Error(`StyleSheet cannot change speedy mode after inserting any rule to sheet. Either call speedy(${bool}) earlier in your app, or call flush() before speedy(${bool})`);\n }\n this.isSpeedy = Boolean(bool);\n }\n _insert(sheet, rule) {\n sheet.insertRule(rule, sheet.cssRules.length);\n }\n insert(rule) {\n if (isBrowser) {\n const sheet = this.getSheet();\n if (this.isSpeedy && sheet != null) {\n this._insert(sheet, rule);\n }\n else {\n last(this.tags).append(document.createTextNode(rule));\n }\n }\n else if (this.sheet) {\n this.sheet.insertRule(rule, this.sheet.cssRules.length);\n }\n this.ctr += 1;\n if (isBrowser && this.ctr % this.maxLength === 0) {\n this.tags.push(makeStyleTag());\n }\n return this.ctr - 1;\n }\n flush() {\n if (isBrowser) {\n this.tags.forEach(tag => tag.parentNode.removeChild(tag));\n this.tags = [];\n this.sheet = null;\n this.ctr = 0;\n }\n else if (this.sheet) {\n this.sheet.cssRules = [];\n }\n this.injected = false;\n }\n rules() {\n if (!isBrowser) {\n return (this.sheet ? this.sheet.cssRules : []);\n }\n const arr = [];\n this.tags.forEach(tag => {\n const sheet = sheetForTag(tag);\n if (sheet) {\n const rules = Array.from(sheet.cssRules);\n arr.splice(arr.length, 0, ...[...rules]);\n }\n });\n return arr;\n }\n}\nexports.default = CustomStyleSheet;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction valueToString(value, unit = 'px') {\n return typeof value === 'number' ? `${value}${unit}` : value;\n}\nexports.default = valueToString;\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}","import _typeof from \"./typeof.js\";\nexport default function toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport merge from 'lodash.merge';\nexport function get(obj, path, fallback) {\n var keys = path && path.split ? path.split('.') : [path];\n var value = obj;\n\n var _iterator = _createForOfIteratorHelper(keys),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var key = _step.value;\n value = value ? value[key] : undefined;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return value === undefined ? fallback : value;\n}\n/**\n * Gets a value from the given theme based on a path when present,\n * else returns the provided value\n * @param {object} theme\n * @param {unknown} pathOrValue\n */\n\nexport function getValue(theme, pathOrValue) {\n return get(theme, pathOrValue, pathOrValue);\n}\n/**\n * Adds or overrides theme values on top of an existing theme object\n * @param destinationTheme Theme object to merge on top of\n * @param sourceTheme Theme object that adds or overrides values\n */\n\nexport function mergeTheme(destinationTheme, sourceTheme) {\n return merge({}, destinationTheme, sourceTheme);\n}\n/**\n * Resolves an object (or style config) when referencing theme paths\n * It will preserve the original object structure (nesting)\n * @param {object} theme\n * @param {object} obj\n * @returns {object} a new object with theme-resolved properties\n */\n\nexport function resolveThemeTokens(theme, obj) {\n var result = {};\n\n for (var _i = 0, _Object$keys = Object.keys(obj); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n var raw = obj[key];\n\n if (raw === null) {\n continue;\n }\n\n if (_typeof(raw) === 'object') {\n result[key] = resolveThemeTokens(theme, raw);\n } else {\n result[key] = getValue(theme, raw);\n }\n }\n\n return result;\n}","var baseStyle = function baseStyle(theme, _ref) {\n var _ref$intent = _ref.intent,\n intent = _ref$intent === void 0 ? 'info' : _ref$intent;\n return {\n backgroundColor: \"intents.\".concat(intent, \".background\"),\n border: \"1px solid \".concat(theme.intents[intent].border),\n borderRadius: 'radii.2',\n color: theme.intents[intent].text\n };\n};\n\nvar appearances = {};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction getColor(theme, _ref) {\n var color = _ref.color,\n hashValue = _ref.hashValue;\n\n if (color === 'automatic') {\n var keys = Object.keys(theme.fills);\n\n if (hashValue) {\n return theme.fills[keys[hashValue % keys.length]];\n } else {\n return theme.fills[keys[Math.floor(Math.random() * keys.length)]];\n }\n }\n\n return theme.fills[color];\n}\n\nvar baseStyle = function baseStyle(theme, props) {\n return _objectSpread({\n borderRadius: props.shape === 'round' ? '100%' : 'radii.1'\n }, getColor(theme, props));\n};\n\nvar appearances = {};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","import { get } from '../../../theme/src/theme-tools';\nvar baseStyle = {\n height: 16,\n paddingY: 0,\n paddingX: 6,\n borderRadius: 'radii.1',\n fontSize: '11.5px',\n textAlign: 'center',\n textDecoration: 'none',\n textTransform: 'uppercase'\n};\nvar appearances = {\n subtle: function subtle(theme, props) {\n var scheme = get(theme, \"fills.\".concat(props.color), {\n backgroundColor: props.color,\n color: props.color\n });\n return {\n color: scheme.color,\n backgroundColor: scheme.backgroundColor\n };\n }\n};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n fontFamily: 'fontFamilies.ui',\n border: '1px solid transparent',\n borderRadius: 'radii.1',\n color: function color(theme, _ref) {\n var _color = _ref.color;\n return theme.colors[_color] || _color || 'colors.default';\n },\n transition: 'box-shadow 80ms ease-in-out',\n selectors: {\n _focus: {\n boxShadow: 'shadows.focusRing'\n },\n _disabled: {\n cursor: 'not-allowed',\n pointerEvents: 'none'\n }\n }\n};\n\nvar colorKeyForAppearanceOrIntent = function colorKeyForAppearanceOrIntent(appearance, intent) {\n if (appearance === 'destructive') {\n return 'red';\n }\n\n switch (intent) {\n case 'success':\n return 'green';\n\n case 'danger':\n return 'red';\n\n default:\n return 'blue';\n }\n};\n\nvar colorKeyForIntent = function colorKeyForIntent(intent) {\n if (intent === 'danger') {\n return \"red500\";\n } else if (intent === 'success') {\n return \"green500\";\n } else {\n return \"gray800\";\n }\n};\n\nvar borderColorForIntent = function borderColorForIntent(intent, isHover) {\n if (intent === 'danger') {\n return \"red\".concat(isHover ? 500 : 300);\n } else if (intent === 'success') {\n return \"green\".concat(isHover ? 400 : 300);\n } else {\n return \"gray\".concat(isHover ? 600 : 500);\n }\n};\n\nvar getPrimaryButtonAppearance = function getPrimaryButtonAppearance(appearance, intent, textColor, theme) {\n var color = colorKeyForAppearanceOrIntent(appearance, intent);\n return {\n backgroundColor: \"colors.\".concat(color, \"500\"),\n borderColor: \"colors.\".concat(color, \"500\"),\n color: textColor || 'white',\n selectors: {\n _hover: {\n backgroundColor: \"colors.\".concat(color, \"600\"),\n borderColor: \"colors.\".concat(color, \"600\")\n },\n _disabled: {\n backgroundColor: \"colors.\".concat(color, \"100\"),\n borderColor: \"colors.\".concat(color, \"100\")\n },\n _focus: {\n backgroundColor: \"colors.\".concat(color, \"500\"),\n boxShadow: \"0 0 0 2px \".concat(theme && theme.colors[\"\".concat(color, \"100\")]),\n borderColor: \"colors.\".concat(color, \"500\")\n },\n _active: {\n backgroundColor: \"colors.\".concat(color, \"700\"),\n borderColor: \"colors.\".concat(color, \"700\")\n }\n }\n };\n};\n\nvar appearances = {\n primary: function primary(theme, _ref2) {\n var appearance = _ref2.appearance,\n color = _ref2.color,\n intent = _ref2.intent;\n return getPrimaryButtonAppearance(appearance, intent, color, theme);\n },\n \"default\": {\n backgroundColor: 'white',\n border: function border(theme, props) {\n return \"1px solid \".concat(theme.colors[borderColorForIntent(props.intent)]);\n },\n color: function color(theme, props) {\n return props.color || theme.colors[colorKeyForIntent(props.intent)];\n },\n selectors: {\n _disabled: {\n color: 'colors.gray500',\n borderColor: 'colors.gray300'\n },\n _hover: {\n border: function border(theme, props) {\n return \"1px solid \".concat(theme.colors[borderColorForIntent(props.intent, true)]);\n },\n backgroundColor: 'colors.gray50'\n },\n _active: {\n backgroundColor: 'colors.gray100'\n }\n }\n },\n minimal: {\n backgroundColor: 'transparent',\n color: function color(theme, props) {\n return props.color || theme.colors[colorKeyForIntent(props.intent)];\n },\n selectors: {\n _disabled: {\n color: 'colors.gray500',\n opacity: 0.6\n },\n _hover: {\n backgroundColor: 'colors.gray100'\n },\n _active: {\n backgroundColor: 'colors.gray200'\n }\n }\n },\n destructive: getPrimaryButtonAppearance('destructive')\n};\nvar sizes = {\n small: {\n height: 24,\n minWidth: 24,\n fontSize: 'fontSizes.1',\n lineHeight: '24px',\n paddingLeft: 12,\n paddingRight: 12\n },\n medium: {\n height: 32,\n minWidth: 32,\n fontSize: 'fontSizes.1',\n lineHeight: '32px',\n paddingLeft: 16,\n paddingRight: 16\n },\n large: {\n height: 40,\n minWidth: 40,\n fontSize: 'fontSizes.2',\n lineHeight: '40px',\n paddingLeft: 20,\n paddingRight: 20\n }\n};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n borderRadius: 'radii.1'\n};\nvar appearances = {};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {};\nvar appearances = {\n \"default\": {\n selectors: {\n _base: {\n color: 'white',\n background: 'white',\n boxShadow: function boxShadow(theme) {\n return \"inset 0 0 0 1px \".concat(theme.colors.gray400);\n }\n },\n _disabled: {\n cursor: 'not-allowed',\n background: 'colors.gray100',\n color: 'colors.gray100',\n boxShadow: function boxShadow(theme) {\n return \"inset 0 0 0 1px \".concat(theme.colors.gray100);\n }\n },\n _hover: {\n boxShadow: function boxShadow(theme) {\n return \"inset 0 0 0 1px \".concat(theme.colors.gray600);\n }\n },\n _focus: {\n boxShadow: function boxShadow(theme) {\n return \"0 0 0 2px \".concat(theme.colors.blue100);\n }\n },\n _active: {\n background: 'colors.gray100',\n boxShadow: function boxShadow(theme) {\n return \"inset 0 0 0 1px \".concat(theme.colors.gray500);\n }\n },\n _checked: {\n color: 'white',\n boxShadow: function boxShadow(theme) {\n return \"inset 0 0 0 -1px \".concat(theme.colors.blue700);\n },\n background: 'colors.blue500'\n },\n _checkedHover: {\n color: 'white',\n background: 'colors.blue600',\n boxShadow: function boxShadow(theme) {\n return \"inset 0 0 0 1px \".concat(theme.colors.blue600);\n }\n },\n _checkedActive: {\n color: 'white',\n boxShadow: function boxShadow(theme) {\n return \"inset 0 0 0 -1px \".concat(theme.colors.blue700);\n },\n background: 'colors.blue700'\n },\n _checkedDisabled: {\n color: 'colors.gray600',\n background: 'colors.gray100'\n }\n }\n }\n};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {};\nvar codeBackgroundColor = 'rgba(16, 112, 202, 0.06)';\nvar codeBorderColor = 'rgba(16, 112, 202, 0.14)';\nvar appearances = {\n \"default\": {\n backgroundColor: codeBackgroundColor,\n boxShadow: \"inset 0 0 0 1px \".concat(codeBorderColor),\n paddingX: 6,\n paddingY: 3,\n borderRadius: 'radii.1'\n }\n};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n paddingY: 8,\n paddingX: 32\n};\nexport default {\n baseStyle: baseStyle\n};","var baseStyle = {\n paddingX: 32,\n paddingBottom: 32,\n paddingTop: 24\n};\nexport default {\n baseStyle: baseStyle\n};","var baseStyle = {\n paddingX: 32,\n paddingTop: 32,\n paddingBottom: 24\n};\nexport default {\n baseStyle: baseStyle\n};","var baseStyle = {\n display: 'flex',\n flexDirection: 'row',\n height: 64,\n width: '100%',\n borderWidth: 1,\n borderRadius: 'radii.1',\n borderStyle: 'solid',\n borderColor: 'colors.gray400',\n alignItems: 'center',\n justifyContent: 'space-between',\n selectors: {\n _invalid: {\n backgroundColor: 'colors.red25',\n borderColor: 'colors.red500'\n }\n }\n};\nexport default {\n baseStyle: baseStyle\n};","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar colorScales = {\n // Grays / neutrals\n gray900: '#101840',\n gray800: '#474d66',\n gray700: '#696f8c',\n gray600: '#8f95b2',\n gray500: '#c1c4d6',\n gray400: '#d8dae5',\n gray300: '#E6E8F0',\n gray200: '#edeff5',\n gray100: '#F4F5F9',\n gray90: '#F4F6FA',\n gray75: '#F9FAFC',\n gray50: '#FAFBFF',\n white: '#FFFFFF',\n // Blues\n blue900: '#0A1433',\n blue800: '#142966',\n blue700: '#1F3D99',\n blue600: '#2952CC',\n blue500: '#3366FF',\n blue400: '#5C85FF',\n blue300: '#85A3FF',\n blue200: '#ADC2FF',\n blue100: '#D6E0FF',\n blue50: '#EBF0FF',\n blue25: '#F3F6FF',\n // Reds\n red700: '#7D2828',\n red600: '#A73636',\n red500: '#D14343',\n red300: '#EE9191',\n red100: '#F9DADA',\n red25: '#FDF4F4',\n // Greens\n green900: '#10261E',\n green800: '#214C3C',\n green700: '#317159',\n green600: '#429777',\n green500: '#52BD95',\n green400: '#75CAAA',\n green300: '#97D7BF',\n green200: '#BAE5D5',\n green100: '#DCF2EA',\n green25: '#F5FBF8',\n // Oranges\n orange700: '#996A13',\n orange500: '#FFB020',\n orange100: '#F8E3DA',\n orange25: '#FFFAF2',\n // Purple\n purple600: '#6E62B6',\n purple100: '#E7E4F9',\n // Teals\n teal800: '#0F5156',\n teal100: '#D3F5F7',\n // Yellows\n yellow800: '#66460D',\n yellow100: '#FFEFD2'\n};\n\nvar colors = _objectSpread(_objectSpread({}, colorScales), {}, {\n muted: colorScales.gray700,\n \"default\": colorScales.gray800,\n dark: colorScales.gray900,\n selected: colorScales.blue500,\n tint1: colorScales.gray50,\n tint2: colorScales.gray75,\n overlay: 'rgba(67, 90, 111, 0.7)',\n yellowTint: colorScales.yellow100,\n greenTint: colorScales.green25,\n orangeTint: colorScales.orange25,\n redTint: colorScales.red25,\n blueTint: colorScales.blue25,\n purpleTint: colorScales.purple100,\n tealTint: colorScales.teal100,\n border: {\n \"default\": colorScales.gray300,\n muted: colorScales.gray200\n },\n icon: {\n \"default\": colorScales.gray700,\n muted: colorScales.gray600,\n disabled: colorScales.gray400,\n selected: colorScales.blue500\n },\n text: {\n danger: colorScales.red500,\n success: colorScales.green500,\n info: colorScales.blue500\n }\n});\n\nexport default colors;","import colors from '../tokens/colors';\nvar baseStyle = {\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n justifyContent: 'center',\n backgroundColor: 'colors.gray50',\n borderWidth: 1,\n borderRadius: 'radii.1',\n borderStyle: 'dashed',\n borderColor: 'colors.gray400',\n height: '100%',\n width: '100%',\n paddingX: 40,\n paddingY: 40,\n selectors: {\n _focus: {\n outline: 'none',\n // Disable default browser focus outline\n borderStyle: 'solid',\n borderColor: 'colors.blue200',\n boxShadow: \"0px 0px 0px 2px \".concat(colors.blue100)\n },\n _hover: {\n cursor: 'pointer',\n backgroundColor: 'colors.gray90',\n borderColor: 'colors.gray600'\n },\n _hoverBrowseCopy: {\n color: 'colors.blue500',\n cursor: 'pointer'\n },\n _hoverOrDragCopy: {\n color: 'colors.gray800',\n cursor: 'pointer'\n },\n _disabled: {\n backgroundColor: 'colors.gray50',\n borderColor: 'colors.gray50',\n borderStyle: 'solid'\n },\n _dragHover: {\n backgroundColor: 'colors.blue50',\n borderColor: 'colors.blue500',\n borderStyle: 'solid'\n },\n _invalid: {\n backgroundColor: 'colors.red100',\n borderColor: 'colors.red500',\n borderStyle: 'solid'\n }\n }\n};\nexport default {\n baseStyle: baseStyle\n};","var baseStyle = {\n selectors: {\n _child: {\n selectors: {\n '&:focus': {\n zIndex: 'zIndices.focused'\n },\n '&:active': {\n zIndex: 'zIndices.focused'\n }\n }\n },\n _firstChild: {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0\n },\n _middleChild: {\n borderRadius: 0,\n marginLeft: '-1px'\n },\n _lastChild: {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n marginLeft: '-1px'\n }\n }\n};\nvar appearances = {};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n color: 'colors.dark',\n fontFamily: 'fontFamilies.display',\n fontWeight: 'fontWeights.semibold'\n};\nvar appearances = {};\nvar sizes = {\n 900: {\n fontSize: 'fontSizes.7',\n lineHeight: 'lineHeights.6',\n fontWeight: 'fontWeights.bold',\n letterSpacing: 'letterSpacings.tightest'\n },\n 800: {\n fontSize: 'fontSizes.6',\n lineHeight: 'lineHeights.5',\n fontWeight: 'fontWeights.bold',\n letterSpacing: 'letterSpacings.tightest'\n },\n 700: {\n fontSize: 'fontSizes.5',\n lineHeight: 'lineHeights.3',\n fontWeight: 'fontWeights.bold',\n letterSpacing: 'letterSpacings.tighter'\n },\n 600: {\n fontSize: 'fontSizes.4',\n lineHeight: 'lineHeights.3',\n fontWeight: 'fontWeights.bold',\n letterSpacing: 'letterSpacings.tighter'\n },\n 500: {\n fontFamily: 'fontFamilies.ui',\n fontSize: 'fontSizes.3',\n fontWeight: 'fontWeights.bold',\n letterSpacing: 'letterSpacings.tight',\n lineHeight: 'lineHeights.2'\n },\n 400: {\n fontSize: 'fontSizes.2',\n lineHeight: 'lineHeights.1',\n letterSpacing: 'letterSpacings.tight',\n fontFamily: 'fontFamilies.ui'\n },\n 300: {\n fontSize: 'fontSizes.1',\n lineHeight: 'lineHeights.0',\n letterSpacing: 'letterSpacings.normal',\n fontFamily: 'fontFamilies.ui'\n },\n 200: {\n fontSize: 'fontSizes.1',\n lineHeight: 'lineHeights.0',\n letterSpacing: 'letterSpacings.normal',\n fontFamily: 'fontFamilies.ui',\n color: 'colors.muted'\n },\n 100: {\n fontSize: 'fontSizes.0',\n textTransform: 'uppercase',\n lineHeight: 'lineHeights.0',\n letterSpacing: 'letterSpacings.wide',\n fontFamily: 'fontFamilies.ui',\n color: 'colors.muted'\n }\n};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","import { get } from '../../../theme/src/theme-tools';\n\nvar baseStyle = function baseStyle(theme, _ref) {\n var color = _ref.color;\n return {\n fill: get(theme, \"intents.\".concat(color, \".icon\")) || get(theme, \"colors.icon.\".concat(color)) || get(theme, \"colors.\".concat(color)) || color\n };\n};\n\nvar appearances = {};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = function baseStyle(theme, _ref) {\n var _ref$intent = _ref.intent,\n intent = _ref$intent === void 0 ? 'info' : _ref$intent;\n return {\n color: theme.intents[intent].text\n };\n};\n\nvar appearances = {};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n borderColor: 'colors.gray400',\n borderRadius: 'radii.1',\n borderStyle: 'solid',\n borderWidth: 1,\n color: 'colors.default',\n fontFamily: 'fontFamilies.ui',\n fontSize: 'fontSizes.1',\n lineHeight: 'lineHeights.0',\n paddingX: 12,\n transition: 'box-shadow 80ms ease-in-out',\n selectors: {\n _placeholder: {\n color: 'colors.gray600'\n },\n _disabled: {\n cursor: 'not-allowed',\n backgroundColor: 'colors.gray100',\n color: 'colors.muted'\n }\n }\n};\nvar appearances = {\n \"default\": {\n backgroundColor: 'white',\n borderColor: 'colors.gray400',\n selectors: {\n _focus: {\n zIndex: 'zIndices.focused',\n boxShadow: 'shadows.focusRing',\n borderColor: 'colors.blue200'\n },\n _invalid: {\n borderColor: 'colors.red500'\n }\n }\n },\n none: {\n borderColor: 'transparent',\n backgroundColor: 'transparent'\n }\n};\nvar sizes = {\n small: {\n height: 24\n },\n medium: {\n height: 32\n },\n large: {\n height: 40,\n lineHeight: 'lineHeights.1'\n }\n};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n color: 'colors.dark',\n fontFamily: 'fontFamilies.display',\n fontWeight: 'fontWeights.semibold'\n};\nvar appearances = {};\nvar sizes = {\n 900: {\n fontSize: 'fontSizes.7',\n lineHeight: 'lineHeights.6',\n fontWeight: 'fontWeights.bold',\n letterSpacing: 'letterSpacings.tightest'\n },\n 800: {\n fontSize: 'fontSizes.6',\n lineHeight: 'lineHeights.5',\n fontWeight: 'fontWeights.bold',\n letterSpacing: 'letterSpacings.tightest'\n },\n 700: {\n fontSize: 'fontSizes.5',\n lineHeight: 'lineHeights.3',\n fontWeight: 'fontWeights.bold',\n letterSpacing: 'letterSpacings.tighter'\n },\n 600: {\n fontSize: 'fontSizes.4',\n lineHeight: 'lineHeights.3',\n fontWeight: 'fontWeights.bold',\n letterSpacing: 'letterSpacings.tighter'\n },\n 500: {\n fontFamily: 'fontFamilies.ui',\n fontSize: 'fontSizes.3',\n fontWeight: 'fontWeights.bold',\n letterSpacing: 'letterSpacings.tight',\n lineHeight: 'lineHeights.2'\n },\n 400: {\n fontSize: 'fontSizes.2',\n lineHeight: 'lineHeights.1',\n letterSpacing: 'letterSpacings.tight',\n fontFamily: 'fontFamilies.ui'\n },\n 300: {\n fontSize: 'fontSizes.1',\n lineHeight: 'lineHeights.0',\n letterSpacing: 'letterSpacings.normal',\n fontFamily: 'fontFamilies.ui'\n },\n 200: {\n fontSize: 'fontSizes.1',\n lineHeight: 'lineHeights.0',\n letterSpacing: 'letterSpacings.normal',\n fontFamily: 'fontFamilies.ui',\n color: 'colors.muted'\n },\n 100: {\n fontSize: 'fontSizes.0',\n textTransform: 'uppercase',\n lineHeight: 'lineHeights.0',\n letterSpacing: 'letterSpacings.wide',\n fontFamily: 'fontFamilies.ui',\n color: 'colors.muted'\n }\n};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n borderRadius: 'radii.1',\n transition: '120ms all ease-in-out',\n color: function color(_, _ref) {\n var _color = _ref.color;\n\n switch (_color) {\n case 'neutral':\n return 'gray700';\n\n case 'default':\n default:\n return 'blue500';\n }\n },\n textDecoration: 'none',\n selectors: {\n _hover: {\n color: function color(theme, _ref2) {\n var _color2 = _ref2.color;\n\n switch (_color2) {\n case 'neutral':\n return theme.colors.gray800;\n\n case 'default':\n default:\n return theme.colors.blue600;\n }\n }\n },\n _active: {\n color: function color(theme, _ref3) {\n var _color3 = _ref3.color;\n\n switch (_color3) {\n case 'neutral':\n return theme.colors.gray900;\n\n case 'default':\n default:\n return theme.colors.blue700;\n }\n }\n },\n _focus: {\n boxShadow: function boxShadow(theme, _ref4) {\n var color = _ref4.color;\n\n switch (color) {\n case 'neutral':\n return \"0 0 0 2px \".concat(theme.colors.gray300);\n\n case 'default':\n default:\n return \"0 0 0 2px \".concat(theme.colors.blue200);\n }\n }\n }\n }\n};\nvar appearances = {};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {};\nvar appearances = {};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n outline: 'none',\n textDecoration: 'none',\n display: 'flex',\n position: 'relative',\n paddingX: 12,\n selectors: {\n _isSelectable: {\n cursor: 'pointer'\n },\n _disabled: {\n cursor: 'not-allowed',\n userSelect: 'none'\n }\n }\n};\nvar appearances = {\n \"default\": {\n backgroundColor: 'white',\n selectors: {\n '&:before': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n bottom: 0,\n width: 2,\n borderRadiusTopLeft: 0,\n borderRadiusTopRight: 2,\n borderRadiusBottomRight: 2,\n borderRadiusBottomLeft: 0,\n backgroundColor: 'colors.blue500',\n transition: '0.25s',\n transformOrigin: 'left center',\n transform: 'scaleX(0)'\n },\n _hover: {\n backgroundColor: 'colors.gray75'\n },\n _focus: {\n backgroundColor: 'colors.gray75'\n },\n _active: {\n backgroundColor: 'intents.info.background',\n selectors: {\n '&:before': {\n transform: 'scaleX(1)'\n }\n }\n },\n _current: {\n backgroundColor: 'intents.info.background',\n selectors: {\n '&:before': {\n transform: 'scaleX(1)'\n }\n }\n }\n }\n }\n};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances\n};","var baseStyle = {\n outline: 'none',\n textDecoration: 'none',\n display: 'flex',\n position: 'relative',\n backgroundColor: 'white',\n height: 32,\n borderBottom: function borderBottom(theme) {\n return \"1px solid \".concat(theme.colors.border.muted);\n },\n selectors: {\n _before: {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n top: 0,\n bottom: 0,\n width: 2,\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n borderTopRightRadius: 2,\n borderBottomRightRadius: 2,\n backgroundColor: 'colors.blue500',\n transition: '0.25s',\n transformOrigin: 'left center',\n transform: 'scaleX(0)'\n },\n _isSelectable: {\n cursor: 'pointer'\n },\n _hover: {\n backgroundColor: 'colors.gray75'\n },\n _focus: {\n backgroundColor: 'colors.gray75'\n },\n _active: {\n backgroundColor: 'intents.info.background'\n },\n _selected: {\n backgroundColor: 'intents.info.background',\n ' span': {\n color: 'intents.info.text'\n },\n '&:before': {\n transform: 'scaleX(1)'\n }\n },\n _disabled: {\n opacity: 0.5,\n pointerEvents: 'none',\n cursor: 'not-allowed'\n }\n }\n};\nexport default {\n baseStyle: baseStyle\n};","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction borderProperty(theme, _ref) {\n var border = _ref.border,\n value = _ref.value;\n\n if (Object.prototype.hasOwnProperty.call(theme.colors.border, value)) {\n return \"1px solid \".concat(theme.colors.border[value]);\n }\n\n if (value === true) {\n return \"1px solid \".concat(theme.colors.border[\"default\"]);\n }\n\n if (value === false) {\n return null;\n }\n\n if (Object.prototype.hasOwnProperty.call(theme.colors.border, border)) {\n return \"1px solid \".concat(theme.colors.border[border]);\n }\n\n if (border === true) {\n return \"1px solid \".concat(theme.colors.border[\"default\"]);\n }\n\n return value || border;\n}\n\nvar baseStyle = function baseStyle(theme, props) {\n var transitionStyles = {};\n\n if (theme.shadows[props.hoverElevation] || theme.shadows[props.activeElevation]) {\n Object.assign(transitionStyles, {\n transitionDuration: '150ms',\n transitionProperty: 'box-shadow, transform',\n transitionTimingFunction: 'cubic-bezier(0.0, 0.0, 0.2, 1)'\n });\n }\n\n var hoverStyles;\n\n if (theme.shadows[props.hoverElevation]) {\n hoverStyles = {\n transform: 'translateY(-2px)',\n boxShadow: \"shadows.\".concat(props.hoverElevation)\n };\n }\n\n var activeStyles;\n\n if (theme.shadows[props.activeElevation]) {\n activeStyles = {\n transform: 'translateY(-1px)',\n boxShadow: \"shadows.\".concat(props.activeElevation)\n };\n }\n\n return _objectSpread(_objectSpread({\n background: theme.colors[props.background] || props.background,\n boxShadow: theme.shadows[props.elevation],\n borderTop: borderProperty(theme, {\n border: props.border,\n value: props.borderTop\n }),\n borderRight: borderProperty(theme, {\n border: props.border,\n value: props.borderRight\n }),\n borderBottom: borderProperty(theme, {\n border: props.border,\n value: props.borderBottom\n }),\n borderLeft: borderProperty(theme, {\n border: props.border,\n value: props.borderLeft\n })\n }, transitionStyles), {}, {\n selectors: {\n _hover: hoverStyles,\n _active: activeStyles\n }\n });\n};\n\nvar appearances = {};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar baseStyle = {\n fontFamily: function fontFamily(theme, _ref) {\n var _ref$fontFamily = _ref.fontFamily,\n _fontFamily = _ref$fontFamily === void 0 ? 'ui' : _ref$fontFamily;\n\n return theme.fontFamilies[_fontFamily] ? \"fontFamilies.\".concat(_fontFamily) : _fontFamily;\n },\n color: function color(theme, _ref2) {\n var _ref2$color = _ref2.color,\n _color = _ref2$color === void 0 ? 'default' : _ref2$color;\n\n return theme.colors[_color] ? \"colors.\".concat(_color) : _color;\n },\n marginTop: 0,\n marginBottom: 0\n};\nvar appearances = {};\nvar paragraphSizes = {\n 300: {\n fontSize: 'fontSizes.1',\n fontWeight: 'fontWeights.normal',\n lineHeight: 'lineHeights.1',\n letterSpacing: 'letterSpacings.normal'\n },\n 400: {\n fontSize: 'fontSizes.2',\n fontWeight: 'fontWeights.normal',\n lineHeight: 'lineHeights.3',\n letterSpacing: 'letterSpacings.tight'\n },\n 500: {\n fontSize: 'fontSizes.3',\n fontWeight: 'fontWeights.normal',\n lineHeight: 'lineHeights.3',\n letterSpacing: 'letterSpacings.tight'\n },\n 600: {\n fontSize: 'fontSizes.4',\n fontWeight: 'fontWeights.normal',\n lineHeight: 'lineHeights.4',\n letterSpacing: 'letterSpacings.tighter'\n }\n};\n\nvar sizes = _objectSpread(_objectSpread({}, paragraphSizes), {}, {\n small: paragraphSizes['300'],\n medium: paragraphSizes['400'],\n large: paragraphSizes['500']\n});\n\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var colorMap = {\n none: {\n base: 'white',\n hover: 'colors.gray75',\n focus: 'colors.gray75',\n active: 'intents.info.background',\n current: 'intents.info.background'\n },\n danger: {\n base: 'intents.danger.background',\n hover: 'intents.danger.background',\n focus: 'colors.red100',\n active: 'colors.red100',\n current: 'colors.red100'\n },\n warning: {\n base: 'intents.warning.background',\n hover: 'intents.warning.background',\n focus: 'colors.orange100',\n active: 'colors.orange100',\n current: 'colors.orange100'\n },\n success: {\n base: 'intents.success.background',\n hover: 'intents.success.background',\n focus: 'colors.green100',\n active: 'colors.green100',\n current: 'colors.green100'\n }\n};\n\nvar getBackgroundForIntentAndState = function getBackgroundForIntentAndState(intent, state) {\n return colorMap[intent][state];\n};\n\nvar baseStyle = {\n outline: 'none',\n textDecoration: 'none',\n height: 64,\n selectors: {\n _lastOfType: {\n borderBottom: 'none',\n borderBottomLeftRadius: 'radii.1',\n borderBottomRightRadius: 'radii.1'\n },\n _isSelectable: {\n cursor: 'pointer'\n }\n }\n};\nvar appearances = {\n \"default\": {\n backgroundColor: function backgroundColor(_, props) {\n return getBackgroundForIntentAndState(props.intent, 'base');\n },\n selectors: {\n _hover: {\n backgroundColor: function backgroundColor(_, props) {\n return getBackgroundForIntentAndState(props.intent, 'hover');\n }\n },\n _focus: {\n backgroundColor: function backgroundColor(_, props) {\n return getBackgroundForIntentAndState(props.intent, 'focus');\n }\n },\n _active: {\n backgroundColor: function backgroundColor(_, props) {\n return getBackgroundForIntentAndState(props.intent, 'active');\n }\n },\n _current: {\n backgroundColor: function backgroundColor(_, props) {\n return getBackgroundForIntentAndState(props.intent, 'current');\n }\n }\n }\n }\n};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances\n};","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nvar baseStyle = {};\nvar appearances = {};\nvar textSizes = {\n 300: {\n fontSize: 'fontSizes.1',\n fontWeight: 'fontWeights.normal',\n lineHeight: 'lineHeights.0',\n letterSpacing: 'letterSpacings.normal'\n },\n 400: {\n fontSize: 'fontSizes.2',\n fontWeight: 'fontWeights.normal',\n lineHeight: 'lineHeights.2',\n letterSpacing: 'letterSpacings.tight'\n },\n 500: {\n fontSize: 'fontSizes.3',\n fontWeight: 'fontWeights.normal',\n lineHeight: 'lineHeights.2',\n letterSpacing: 'letterSpacings.tight'\n },\n 600: {\n fontSize: 'fontSizes.4',\n fontWeight: 'fontWeights.normal',\n lineHeight: 'lineHeights.3',\n letterSpacing: 'letterSpacings.tighter'\n }\n};\n\nvar sizes = _objectSpread(_objectSpread({}, textSizes), {}, {\n small: textSizes['300'],\n medium: textSizes['400'],\n large: textSizes['500']\n});\n\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n paddingY: 8,\n paddingX: 16,\n maxWidth: 240,\n borderRadius: 'radii.2',\n boxShadow: 'shadows.3'\n};\nvar appearances = {\n card: {\n backgroundColor: 'white'\n },\n \"default\": {\n color: 'white',\n backgroundColor: 'colors.gray800'\n }\n};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","import Alert from './alert';\nimport Avatar from './avatar';\nimport Badge from './badge';\nimport Button from './button';\nimport Card from './card';\nimport Checkbox from './checkbox';\nimport Code from './code';\nimport DialogBody from './dialog-body';\nimport DialogFooter from './dialog-footer';\nimport DialogHeader from './dialog-header';\nimport FileCard from './file-card';\nimport FileUploader from './file-uploader';\nimport Group from './group';\nimport Heading from './heading';\nimport Icon from './icon';\nimport InlineAlert from './inline-alert';\nimport Input from './input';\nimport Label from './label';\nimport Link from './link';\nimport List from './list';\nimport MenuItem from './menu-item';\nimport Option from './option';\nimport Pane from './pane';\nimport Paragraph from './paragraph';\nimport Radio from './radio';\nimport Select from './select';\nimport Spinner from './spinner';\nimport Switch from './switch';\nimport Tab from './tab';\nimport Table from './table';\nimport TableCell from './table-cell';\nimport TableHead from './table-head';\nimport TableRow from './table-row';\nimport TagInput from './tag-input';\nimport Text from './text';\nimport TextDropdownButton from './text-dropdown-button';\nimport Tooltip from './tooltip';\nexport default {\n Alert: Alert,\n Avatar: Avatar,\n Badge: Badge,\n Button: Button,\n Card: Card,\n Checkbox: Checkbox,\n Code: Code,\n DialogBody: DialogBody,\n DialogFooter: DialogFooter,\n DialogHeader: DialogHeader,\n FileCard: FileCard,\n FileUploader: FileUploader,\n Group: Group,\n Heading: Heading,\n Icon: Icon,\n InlineAlert: InlineAlert,\n Input: Input,\n Label: Label,\n List: List,\n Link: Link,\n MenuItem: MenuItem,\n Option: Option,\n Pane: Pane,\n Paragraph: Paragraph,\n Radio: Radio,\n Select: Select,\n Spinner: Spinner,\n Switch: Switch,\n Tab: Tab,\n Table: Table,\n TableCell: TableCell,\n TableHead: TableHead,\n TableRow: TableRow,\n TagInput: TagInput,\n Text: Text,\n TextDropdownButton: TextDropdownButton,\n Tooltip: Tooltip\n};","var baseStyle = {\n fontFamily: 'fontFamilies.ui',\n borderRadius: 'radii.1',\n border: 0\n};\nvar appearances = {\n \"default\": {\n backgroundColor: 'white',\n border: function border(theme) {\n return \"1px solid \".concat(theme.colors.gray400);\n },\n color: 'colors.gray800',\n selectors: {\n _disabled: {\n cursor: 'not-allowed',\n color: 'colors.gray500',\n borderColor: 'colors.gray300'\n },\n _hover: {\n borderColor: 'colors.gray600',\n backgroundColor: 'colors.gray50'\n },\n _invalid: {\n borderColor: 'colors.red500'\n },\n _focus: {\n borderColor: 'colors.blue200',\n boxShadow: 'shadows.focusRing'\n },\n _active: {\n backgroundColor: 'colors.gray100'\n }\n }\n }\n};\nvar sizes = {\n small: {\n height: 24,\n fontSize: 'fontSizes.1',\n lineHeight: 'lineHeights.0'\n },\n medium: {\n height: 32,\n fontSize: 'fontSizes.1',\n lineHeight: 'lineHeights.0'\n },\n large: {\n height: 40,\n fontSize: 'fontSizes.2',\n lineHeight: 'lineHeights.2'\n }\n};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n color: 'rgba(67, 90, 111, 0.47)'\n};\nvar appearances = {};\nvar sizes = {\n small: {\n width: 32,\n height: 32\n },\n medium: {\n width: 40,\n height: 40\n },\n large: {\n width: 48,\n height: 48\n }\n};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {};\nvar appearances = {\n \"default\": {\n selectors: {\n _base: {\n color: 'white',\n backgroundColor: 'colors.gray400'\n },\n _disabled: {\n cursor: 'not-allowed',\n opacity: 0.5\n },\n _hover: {\n backgroundColor: 'colors.gray500'\n },\n _focus: {\n boxShadow: function boxShadow(theme) {\n return \"0 0 0 3px \".concat(theme.colors.blue100);\n }\n },\n _active: {\n backgroundColor: 'colors.gray600'\n },\n _checked: {\n backgroundColor: 'colors.blue500',\n color: 'white'\n },\n _checkedHover: {\n backgroundColor: 'colors.blue600',\n color: 'white'\n },\n _checkedActive: {\n backgroundColor: 'colors.blue700',\n color: 'white'\n },\n _checkedDisabled: {}\n }\n }\n};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n fontFamily: 'fontFamilies.ui',\n fontWeight: 500,\n marginBottom: function marginBottom(_, props) {\n return props.direction === 'vertical' ? '8px' : null;\n }\n};\nvar appearances = {\n primary: {\n color: 'colors.muted',\n paddingTop: '6px',\n paddingBottom: '6px',\n paddingLeft: '2px',\n paddingRight: '2px',\n position: 'relative',\n selectors: {\n ':not(:last-child)': {\n marginRight: function marginRight(_, props) {\n return props.direction === 'horizontal' ? '20px' : null;\n }\n },\n _before: {\n content: '\"\"',\n position: 'absolute',\n bottom: 0,\n right: 0,\n height: '2px',\n borderTopLeftRadius: 2,\n borderTopRightRadius: 2,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n backgroundColor: 'colors.blue500',\n width: '100%',\n transition: '0.25s',\n transform: 'scaleY(0)',\n transformOrigin: 'bottom center'\n },\n _hover: {\n color: 'colors.default'\n },\n _current: {\n color: 'colors.blue500',\n '&:before': {\n transform: 'scaleY(1)'\n },\n '&:focus': {\n color: 'colors.blue600'\n }\n },\n _focus: {\n boxShadow: 'shadows.focusRing',\n color: 'colors.default'\n },\n _disabled: {\n pointerEvents: 'none',\n cursor: 'not-allowed',\n color: 'colors.gray500',\n '&:before': {\n backgroundColor: 'colors.gray500'\n }\n }\n }\n },\n secondary: {\n paddingX: '16px',\n paddingY: '8px',\n borderRadius: 'radii.1',\n color: 'colors.default',\n selectors: {\n ':not(:last-child)': {\n marginRight: function marginRight(_, props) {\n return props.direction === 'horizontal' ? '8px' : null;\n }\n },\n _hover: {\n backgroundColor: 'colors.gray100',\n color: 'colors.gray800'\n },\n _active: {\n backgroundColor: 'colors.gray200'\n },\n _current: {\n backgroundColor: 'colors.blue50',\n color: 'colors.blue500'\n },\n _focus: {\n boxShadow: 'shadows.focusRing'\n },\n _disabled: {\n pointerEvents: 'none',\n cursor: 'not-allowed',\n color: 'colors.gray500',\n '&[aria-current=\"page\"],&[aria-selected=\"true\"]': {\n backgroundColor: 'colors.gray100'\n }\n }\n }\n }\n};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances\n};","var baseStyle = {\n borderRadius: 'radii.1',\n border: 'muted'\n};\nvar appearances = {};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n paddingX: 12\n};\nvar appearances = {\n \"default\": {\n selectors: {\n _focus: {\n outline: 'none',\n background: 'colors.blue50',\n boxShadow: function boxShadow(theme) {\n return \"inset 0 0 0 1px \".concat(theme.colors.blue500);\n }\n }\n }\n }\n};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n borderBottom: 'default',\n background: 'colors.tint2',\n height: '56px',\n fontSize: 'fontSizes.1',\n fontWeight: 'fontWeights.bold',\n lineHeight: 'lineHeights.0',\n letterSpacing: 'letterSpacings.normal',\n fontFamily: 'fontFamilies.ui',\n color: 'colors.muted',\n textTransform: 'uppercase',\n selectors: {\n _firstOfType: {\n borderTopLeftRadius: 'radii.1',\n borderTopRightRadius: 'radii.1'\n }\n }\n};\nvar appearances = {};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n paddingY: '2px',\n backgroundColor: 'white',\n borderRadius: 'radii.1'\n};\nvar appearances = {\n \"default\": {\n border: function border(theme) {\n return \"1px solid \".concat(theme.colors.gray400);\n },\n selectors: {\n _focused: {\n outline: 'none',\n zIndex: 'zIndices.focused',\n border: function border(theme) {\n return \"1px solid \".concat(theme.colors.blue200);\n },\n transition: 'box-shadow 80ms ease-in-out',\n boxShadow: 'shadows.focusRing'\n },\n _disabled: {\n cursor: 'not-allowed',\n backgroundColor: 'colors.gray100'\n },\n _invalid: {\n borderColor: 'colors.red600'\n }\n }\n }\n};\nvar sizes = {};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","var baseStyle = {\n fontFamily: 'fontFamilies.ui',\n backgroundColor: 'transparent',\n borderRadius: 'radii.1',\n paddingX: 4,\n marginX: -4,\n paddingY: 2,\n marginY: -2,\n color: 'colors.default',\n selectors: {\n _disabled: {\n cursor: 'not-allowed',\n pointerEvents: 'none'\n },\n _focus: {\n boxShadow: 'shadows.focusRing'\n }\n }\n};\nvar appearances = {};\nvar sizes = {\n small: {\n fontSize: 'fontSizes.1',\n lineHeight: 'lineHeights.0'\n },\n medium: {\n fontSize: 'fontSizes.1',\n lineHeight: 'lineHeights.0'\n },\n large: {\n fontSize: 'fontSizes.2',\n lineHeight: 'lineHeights.2'\n }\n};\nexport default {\n baseStyle: baseStyle,\n appearances: appearances,\n sizes: sizes\n};","import colors from './colors';\n/**\n * Used for matching background colors and foreground colors\n */\n\nvar fills = {\n neutral: {\n color: colors.gray800,\n backgroundColor: colors.gray200\n },\n blue: {\n color: colors.blue600,\n backgroundColor: colors.blue100\n },\n red: {\n color: colors.red700,\n backgroundColor: colors.red100\n },\n orange: {\n color: colors.orange700,\n backgroundColor: colors.orange100\n },\n yellow: {\n color: colors.yellow800,\n backgroundColor: colors.yellow100\n },\n green: {\n color: colors.green700,\n backgroundColor: colors.green100\n },\n teal: {\n color: colors.teal800,\n backgroundColor: colors.teal100\n },\n purple: {\n color: colors.purple600,\n backgroundColor: colors.purple100\n }\n};\nexport default fills;","import colors from './colors';\nvar intents = {\n info: {\n background: colors.blue25,\n border: colors.blue500,\n text: colors.blue600,\n icon: colors.blue500\n },\n success: {\n background: colors.green25,\n border: colors.green500,\n text: colors.green700,\n icon: colors.green500\n },\n warning: {\n background: colors.orange25,\n border: colors.orange500,\n text: colors.orange700,\n icon: colors.orange500\n },\n danger: {\n background: colors.red25,\n border: colors.red500,\n text: colors.red600,\n icon: colors.red500\n }\n};\nexport default intents;","var radii = ['0px', '4px', '8px'];\nexport default radii;","import colors from './colors';\nvar borderShadowColor = 'rgba(67, 90, 111, 0.3)';\nvar blurryShadowColor = 'rgba(67, 90, 111, 0.47)';\n/**\n * Elevation styles are applied as box shadows.\n * Available levels: 0, 1, 2, 3, 4.\n */\n\nvar shadows = [\"0 0 1px \".concat(borderShadowColor), \"0 0 1px \".concat(borderShadowColor, \", 0 2px 4px -2px \").concat(blurryShadowColor), \"0 0 1px \".concat(borderShadowColor, \", 0 5px 8px -4px \").concat(blurryShadowColor), \"0 0 1px \".concat(borderShadowColor, \", 0 8px 10px -4px \").concat(blurryShadowColor), \"0 0 1px \".concat(borderShadowColor, \", 0 16px 24px -8px \").concat(blurryShadowColor)];\nshadows.focusRing = \"0 0 0 2px \".concat(colors.blue100);\nexport default shadows;","var fontSizes = ['10px', '12px', '14px', '16px', '18px', '20px', '24px', '32px'];\nfontSizes.body = '14px';\nfontSizes.heading = '16px';\nfontSizes.caption = '10px';\nvar typography = {\n fontFamilies: {\n display: \"\\\"SF UI Display\\\", -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Helvetica, Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\"\",\n ui: \"\\\"SF UI Text\\\", -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Roboto, Helvetica, Arial, sans-serif, \\\"Apple Color Emoji\\\", \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\"\",\n mono: \"\\\"SF Mono\\\", \\\"Monaco\\\", \\\"Inconsolata\\\", \\\"Fira Mono\\\", \\\"Droid Sans Mono\\\", \\\"Source Code Pro\\\", monospace\"\n },\n fontSizes: fontSizes,\n fontWeights: {\n light: 300,\n normal: 400,\n semibold: 500,\n bold: 600\n },\n letterSpacings: {\n tightest: '-0.2px',\n tighter: '-0.07px',\n tight: '-0.05px',\n normal: '0',\n wide: '0.6px'\n },\n lineHeights: ['16px', '18px', '20px', '24px', '28px', '32px', '40px']\n};\nexport default typography;","/**\n * Stacking order contains z-index values that are used through.\n * Note that the Stack component might increase the z-index for certain components.\n */\nvar zIndices = {\n focused: 2,\n stack: 5,\n positioner: 10,\n overlay: 20,\n toaster: 30\n};\nexport default zIndices;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport colors from './colors';\nimport fills from './fills';\nimport intents from './intents';\nimport radii from './radii';\nimport shadows from './shadows';\nimport typography from './typography';\nimport zIndices from './z-indices';\n\nvar tokens = _objectSpread(_objectSpread({\n colors: colors,\n fills: fills,\n intents: intents,\n radii: radii,\n shadows: shadows\n}, typography), {}, {\n zIndices: zIndices\n});\n\nexport default tokens;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport components from './components';\nimport tokens from './tokens';\nexport default _objectSpread(_objectSpread({}, tokens), {}, {\n // Component-specific theming\n components: components\n});","import React from 'react';\nimport defaultTheme from '../../themes/default';\n/**\n * Use React 16.3+ createContext API.\n */\n// NOTE(allen) - switch this back once we properly refactor Toasts to render\n// them in the existing DOM tree flow, instead of mounting a new root\n// outside of whatever app root an EG consumer is using.\n\nvar ThemeContext = /*#__PURE__*/React.createContext(defaultTheme);\nvar ThemeConsumer = ThemeContext.Consumer,\n ThemeProvider = ThemeContext.Provider;\n/**\n * Returns a typed version of the ThemeContext when using a custom theme\n */\n\nvar getThemeContext = function getThemeContext() {\n return ThemeContext;\n};\n\nexport default ThemeContext;\nexport { getThemeContext, ThemeProvider, ThemeConsumer };","import { useContext } from 'react';\nimport ThemeContext from './ThemeContext';\n\nfunction useTheme() {\n return useContext(ThemeContext);\n}\n\nexport default useTheme;","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nvar _excluded = [\"selectors\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { useMemo, useRef } from 'react';\nimport merge from 'lodash.merge';\nimport isEqual from 'react-fast-compare';\nimport { splitBoxProps } from 'ui-box';\nimport { useTheme, get, resolveThemeTokens } from '../theme';\n/**\n * @typedef {object} StateStyles\n * @property {import('csstype').Properties} [_hover]\n * @property {import('csstype').Properties} [_active]\n * @property {import('csstype').Properties} [_disabled]\n * @property {import('csstype').Properties} [_focus]\n * @property {import('csstype').Properties} [_invalid]\n */\n\n/**\n * @typedef {{ [placeholder in keyof StateStyles]: string }} PseudoSelectors\n */\n\n/**\n * @typedef {object} StyleModifiers\n * @property {string} [appearance]\n * @property {string} [size]\n */\n\n/** @typedef {import('ui-box').EnhancerProps & StateStyles} Style */\n\n/**\n * @typedef {object} StyleConfig\n * @property {Style} baseStyle\n * @property {{ [appearance: string]: Style }} [appearances]\n * @property {{ [size: string]: Style }} [sizes]\n */\n\nfunction maybeRun(value) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return typeof value === 'function' ? value.apply(void 0, args) : value;\n}\n\nfunction maybeRunDeep(raw) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n if (raw && _typeof(raw) === 'object') {\n var result = {};\n\n for (var _i = 0, _Object$keys = Object.keys(raw); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n result[key] = maybeRunDeep.apply(void 0, [raw[key]].concat(args));\n }\n\n return result;\n }\n\n return maybeRun.apply(void 0, [raw].concat(args));\n}\n/**\n * Combines styles from a styleConfig, with the given style modifiers (appearance, size, etc) and internal styles\n * @param {object} theme\n * @param {StyleModifiers} props\n * @param {StyleConfig} styleConfig\n * @param {import('ui-box').BoxCssProps} [internalStyles]\n * @returns {StyleConfig}\n */\n\n\nfunction combineStyles(theme, props, styleConfig) {\n var internalStyles = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var config = maybeRun(styleConfig, theme, props);\n var baseStyle = maybeRunDeep(config.baseStyle, theme, props);\n var sizeStyle = maybeRunDeep(get(config, \"sizes.\".concat(props.size), {}), theme, props);\n var appearanceStyle = maybeRunDeep(get(config, \"appearances.\".concat(props.appearance), {}), theme, props);\n return merge({}, internalStyles, baseStyle, sizeStyle, appearanceStyle);\n}\n/**\n * Combines a styleConfig object with internal styles based on the theme + style modifiers (props)\n * and returns a memoized style object\n * @returns {StyleConfig}\n */\n\n\nfunction useMergedStyles(theme, props, styleConfig, internalStyles) {\n var styleRef = useRef({});\n return useMemo(function () {\n var combinedStyles = combineStyles(theme, props, styleConfig, internalStyles);\n\n if (!isEqual(styleRef.current, combinedStyles)) {\n styleRef.current = combinedStyles;\n }\n\n return styleRef.current;\n }, [theme, props, styleConfig, internalStyles]);\n}\n/**\n * Split up the style props into box-ready props (selectors + spreadable props)\n */\n\n\nfunction useBoxProps(styleProps, placeholderSelectors) {\n return useMemo(function () {\n // Split the resulting style object into ui-box-compatible props and the rest\n var _splitBoxProps = splitBoxProps(styleProps),\n _splitBoxProps$matche = _splitBoxProps.matchedProps,\n _splitBoxProps$matche2 = _splitBoxProps$matche.selectors,\n actualSelectors = _splitBoxProps$matche2 === void 0 ? {} : _splitBoxProps$matche2,\n matchedProps = _objectWithoutProperties(_splitBoxProps$matche, _excluded),\n remainingProps = _splitBoxProps.remainingProps;\n /** @type {import('ui-box').EnhancerProps['selectors']} */\n\n\n var selectors = {}; // Swap out pseudo selector placeholders for their actual css selector strings\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(actualSelectors); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n var key = k in placeholderSelectors ? placeholderSelectors[k] : k;\n selectors[key] = actualSelectors[k];\n }\n\n var result = _objectSpread({}, matchedProps);\n\n if (!isEqual({}, remainingProps)) {\n result.style = remainingProps;\n }\n\n if (!isEqual({}, selectors)) {\n result.selectors = selectors;\n }\n\n return result;\n }, [styleProps, placeholderSelectors]);\n}\n/**\n * Takes a styleConfig object and outputs `boxProps` that can be spread on a Box component\n * @param {string} componentKey the name of the component in the theme\n * @param {StyleModifiers} props props that modify the resulting visual style (e.g. `size` or `appearance`)\n * @param {PseudoSelectors} placeholderSelectors mapping for the component between states and actual pseudo selectors\n * @param {import('ui-box').BoxCssProps} [internalStyles] additional styles that are specified internally, separate from the visual styles\n * @returns {{ selectors: import('ui-box').EnhancerProps['selectors'], style: import('react').CSSProperties } & import('ui-box').EnhancerProps}\n */\n\n\nexport function useStyleConfig(componentKey, props, placeholderSelectors, internalStyles) {\n var theme = useTheme(); // Get the component style object from the theme\n\n var componentStyles = get(theme, \"components.\".concat(componentKey)) || {}; // Merges the theme styles with the modifiers/props (appearance, size, etc)\n\n var mergedStyles = useMergedStyles(theme, props, componentStyles, internalStyles); // Resolve theme token strings found throughout the style object\n\n var styles = useMemo(function () {\n return resolveThemeTokens(theme, mergedStyles);\n }, [theme, mergedStyles]); // Finally, split up the styles based which ones Box supports and the rest construct an inline style object\n\n return useBoxProps(styles, placeholderSelectors);\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"activeElevation\", \"background\", \"border\", \"borderBottom\", \"borderLeft\", \"borderRight\", \"borderTop\", \"className\", \"elevation\", \"hoverElevation\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React, { memo, forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nimport Box from 'ui-box';\nimport { useStyleConfig } from '../../hooks';\nvar pseudoSelectors = {\n _hover: '&:hover',\n _active: '&:active'\n};\nvar internalStyles = {};\n\nvar _Pane = function _Pane(props, ref) {\n var activeElevation = props.activeElevation,\n background = props.background,\n border = props.border,\n borderBottom = props.borderBottom,\n borderLeft = props.borderLeft,\n borderRight = props.borderRight,\n borderTop = props.borderTop,\n className = props.className,\n elevation = props.elevation,\n hoverElevation = props.hoverElevation,\n restProps = _objectWithoutProperties(props, _excluded);\n\n var themedProps = useStyleConfig('Pane', {\n // @ts-expect-error TS(2345): Argument of type '{ elevation: Elevation | undefin... Remove this comment to see the full error message\n elevation: elevation,\n hoverElevation: hoverElevation,\n activeElevation: activeElevation,\n background: background,\n border: border,\n borderTop: borderTop,\n borderRight: borderRight,\n borderBottom: borderBottom,\n borderLeft: borderLeft,\n className: className\n }, pseudoSelectors, internalStyles); // @ts-expect-error TS(2322): Type '{ selectors: SelectorMap | undefined; style:... Remove this comment to see the full error message\n\n return /*#__PURE__*/React.createElement(Box, _extends({\n ref: ref,\n className: className\n }, themedProps, restProps));\n};\n\n_Pane.displayName = \"_Pane\";\nvar Pane = /*#__PURE__*/memo( /*#__PURE__*/forwardRef(_Pane)); // @ts-expect-error TS(2339): Property 'propTypes' does not exist on type ' 2*8 = 16\n * majorScale(4) => 4*8 = 32\n */\nexport default function majorScale(x) {\n if (!Number.isInteger(x)) {\n throw new TypeError(\"majorScale only accepts integers as input, instead \".concat(x, \" was passed.\"));\n }\n\n return x * 8;\n}","function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/*!\n * GSAP 3.12.5\n * https://gsap.com\n *\n * @license Copyright 2008-2024, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nvar _config = {\n autoSleep: 120,\n force3D: \"auto\",\n nullTargetWarn: 1,\n units: {\n lineHeight: \"\"\n }\n},\n _defaults = {\n duration: .5,\n overwrite: false,\n delay: 0\n},\n _suppressOverwrites,\n _reverting,\n _context,\n _bigNum = 1e8,\n _tinyNum = 1 / _bigNum,\n _2PI = Math.PI * 2,\n _HALF_PI = _2PI / 4,\n _gsID = 0,\n _sqrt = Math.sqrt,\n _cos = Math.cos,\n _sin = Math.sin,\n _isString = function _isString(value) {\n return typeof value === \"string\";\n},\n _isFunction = function _isFunction(value) {\n return typeof value === \"function\";\n},\n _isNumber = function _isNumber(value) {\n return typeof value === \"number\";\n},\n _isUndefined = function _isUndefined(value) {\n return typeof value === \"undefined\";\n},\n _isObject = function _isObject(value) {\n return typeof value === \"object\";\n},\n _isNotFalse = function _isNotFalse(value) {\n return value !== false;\n},\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _isFuncOrString = function _isFuncOrString(value) {\n return _isFunction(value) || _isString(value);\n},\n _isTypedArray = typeof ArrayBuffer === \"function\" && ArrayBuffer.isView || function () {},\n // note: IE10 has ArrayBuffer, but NOT ArrayBuffer.isView().\n_isArray = Array.isArray,\n _strictNumExp = /(?:-?\\.?\\d|\\.)+/gi,\n //only numbers (including negatives and decimals) but NOT relative values.\n_numExp = /[-+=.]*\\d+[.e\\-+]*\\d*[e\\-+]*\\d*/g,\n //finds any numbers, including ones that start with += or -=, negative numbers, and ones in scientific notation like 1e-8.\n_numWithUnitExp = /[-+=.]*\\d+[.e-]*\\d*[a-z%]*/g,\n _complexStringNumExp = /[-+=.]*\\d+\\.?\\d*(?:e-|e\\+)?\\d*/gi,\n //duplicate so that while we're looping through matches from exec(), it doesn't contaminate the lastIndex of _numExp which we use to search for colors too.\n_relExp = /[+-]=-?[.\\d]+/,\n _delimitedValueExp = /[^,'\"\\[\\]\\s]+/gi,\n // previously /[#\\-+.]*\\b[a-z\\d\\-=+%.]+/gi but didn't catch special characters.\n_unitExp = /^[+\\-=e\\s\\d]*\\d+[.\\d]*([a-z]*|%)\\s*$/i,\n _globalTimeline,\n _win,\n _coreInitted,\n _doc,\n _globals = {},\n _installScope = {},\n _coreReady,\n _install = function _install(scope) {\n return (_installScope = _merge(scope, _globals)) && gsap;\n},\n _missingPlugin = function _missingPlugin(property, value) {\n return console.warn(\"Invalid property\", property, \"set to\", value, \"Missing plugin? gsap.registerPlugin()\");\n},\n _warn = function _warn(message, suppress) {\n return !suppress && console.warn(message);\n},\n _addGlobal = function _addGlobal(name, obj) {\n return name && (_globals[name] = obj) && _installScope && (_installScope[name] = obj) || _globals;\n},\n _emptyFunc = function _emptyFunc() {\n return 0;\n},\n _startAtRevertConfig = {\n suppressEvents: true,\n isStart: true,\n kill: false\n},\n _revertConfigNoKill = {\n suppressEvents: true,\n kill: false\n},\n _revertConfig = {\n suppressEvents: true\n},\n _reservedProps = {},\n _lazyTweens = [],\n _lazyLookup = {},\n _lastRenderedFrame,\n _plugins = {},\n _effects = {},\n _nextGCFrame = 30,\n _harnessPlugins = [],\n _callbackNames = \"\",\n _harness = function _harness(targets) {\n var target = targets[0],\n harnessPlugin,\n i;\n _isObject(target) || _isFunction(target) || (targets = [targets]);\n\n if (!(harnessPlugin = (target._gsap || {}).harness)) {\n // find the first target with a harness. We assume targets passed into an animation will be of similar type, meaning the same kind of harness can be used for them all (performance optimization)\n i = _harnessPlugins.length;\n\n while (i-- && !_harnessPlugins[i].targetTest(target)) {}\n\n harnessPlugin = _harnessPlugins[i];\n }\n\n i = targets.length;\n\n while (i--) {\n targets[i] && (targets[i]._gsap || (targets[i]._gsap = new GSCache(targets[i], harnessPlugin))) || targets.splice(i, 1);\n }\n\n return targets;\n},\n _getCache = function _getCache(target) {\n return target._gsap || _harness(toArray(target))[0]._gsap;\n},\n _getProperty = function _getProperty(target, property, v) {\n return (v = target[property]) && _isFunction(v) ? target[property]() : _isUndefined(v) && target.getAttribute && target.getAttribute(property) || v;\n},\n _forEachName = function _forEachName(names, func) {\n return (names = names.split(\",\")).forEach(func) || names;\n},\n //split a comma-delimited list of names into an array, then run a forEach() function and return the split array (this is just a way to consolidate/shorten some code).\n_round = function _round(value) {\n return Math.round(value * 100000) / 100000 || 0;\n},\n _roundPrecise = function _roundPrecise(value) {\n return Math.round(value * 10000000) / 10000000 || 0;\n},\n // increased precision mostly for timing values.\n_parseRelative = function _parseRelative(start, value) {\n var operator = value.charAt(0),\n end = parseFloat(value.substr(2));\n start = parseFloat(start);\n return operator === \"+\" ? start + end : operator === \"-\" ? start - end : operator === \"*\" ? start * end : start / end;\n},\n _arrayContainsAny = function _arrayContainsAny(toSearch, toFind) {\n //searches one array to find matches for any of the items in the toFind array. As soon as one is found, it returns true. It does NOT return all the matches; it's simply a boolean search.\n var l = toFind.length,\n i = 0;\n\n for (; toSearch.indexOf(toFind[i]) < 0 && ++i < l;) {}\n\n return i < l;\n},\n _lazyRender = function _lazyRender() {\n var l = _lazyTweens.length,\n a = _lazyTweens.slice(0),\n i,\n tween;\n\n _lazyLookup = {};\n _lazyTweens.length = 0;\n\n for (i = 0; i < l; i++) {\n tween = a[i];\n tween && tween._lazy && (tween.render(tween._lazy[0], tween._lazy[1], true)._lazy = 0);\n }\n},\n _lazySafeRender = function _lazySafeRender(animation, time, suppressEvents, force) {\n _lazyTweens.length && !_reverting && _lazyRender();\n animation.render(time, suppressEvents, force || _reverting && time < 0 && (animation._initted || animation._startAt));\n _lazyTweens.length && !_reverting && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when someone calls seek() or time() or progress(), they expect an immediate render.\n},\n _numericIfPossible = function _numericIfPossible(value) {\n var n = parseFloat(value);\n return (n || n === 0) && (value + \"\").match(_delimitedValueExp).length < 2 ? n : _isString(value) ? value.trim() : value;\n},\n _passThrough = function _passThrough(p) {\n return p;\n},\n _setDefaults = function _setDefaults(obj, defaults) {\n for (var p in defaults) {\n p in obj || (obj[p] = defaults[p]);\n }\n\n return obj;\n},\n _setKeyframeDefaults = function _setKeyframeDefaults(excludeDuration) {\n return function (obj, defaults) {\n for (var p in defaults) {\n p in obj || p === \"duration\" && excludeDuration || p === \"ease\" || (obj[p] = defaults[p]);\n }\n };\n},\n _merge = function _merge(base, toMerge) {\n for (var p in toMerge) {\n base[p] = toMerge[p];\n }\n\n return base;\n},\n _mergeDeep = function _mergeDeep(base, toMerge) {\n for (var p in toMerge) {\n p !== \"__proto__\" && p !== \"constructor\" && p !== \"prototype\" && (base[p] = _isObject(toMerge[p]) ? _mergeDeep(base[p] || (base[p] = {}), toMerge[p]) : toMerge[p]);\n }\n\n return base;\n},\n _copyExcluding = function _copyExcluding(obj, excluding) {\n var copy = {},\n p;\n\n for (p in obj) {\n p in excluding || (copy[p] = obj[p]);\n }\n\n return copy;\n},\n _inheritDefaults = function _inheritDefaults(vars) {\n var parent = vars.parent || _globalTimeline,\n func = vars.keyframes ? _setKeyframeDefaults(_isArray(vars.keyframes)) : _setDefaults;\n\n if (_isNotFalse(vars.inherit)) {\n while (parent) {\n func(vars, parent.vars.defaults);\n parent = parent.parent || parent._dp;\n }\n }\n\n return vars;\n},\n _arraysMatch = function _arraysMatch(a1, a2) {\n var i = a1.length,\n match = i === a2.length;\n\n while (match && i-- && a1[i] === a2[i]) {}\n\n return i < 0;\n},\n _addLinkedListItem = function _addLinkedListItem(parent, child, firstProp, lastProp, sortBy) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = parent[lastProp],\n t;\n\n if (sortBy) {\n t = child[sortBy];\n\n while (prev && prev[sortBy] > t) {\n prev = prev._prev;\n }\n }\n\n if (prev) {\n child._next = prev._next;\n prev._next = child;\n } else {\n child._next = parent[firstProp];\n parent[firstProp] = child;\n }\n\n if (child._next) {\n child._next._prev = child;\n } else {\n parent[lastProp] = child;\n }\n\n child._prev = prev;\n child.parent = child._dp = parent;\n return child;\n},\n _removeLinkedListItem = function _removeLinkedListItem(parent, child, firstProp, lastProp) {\n if (firstProp === void 0) {\n firstProp = \"_first\";\n }\n\n if (lastProp === void 0) {\n lastProp = \"_last\";\n }\n\n var prev = child._prev,\n next = child._next;\n\n if (prev) {\n prev._next = next;\n } else if (parent[firstProp] === child) {\n parent[firstProp] = next;\n }\n\n if (next) {\n next._prev = prev;\n } else if (parent[lastProp] === child) {\n parent[lastProp] = prev;\n }\n\n child._next = child._prev = child.parent = null; // don't delete the _dp just so we can revert if necessary. But parent should be null to indicate the item isn't in a linked list.\n},\n _removeFromParent = function _removeFromParent(child, onlyIfParentHasAutoRemove) {\n child.parent && (!onlyIfParentHasAutoRemove || child.parent.autoRemoveChildren) && child.parent.remove && child.parent.remove(child);\n child._act = 0;\n},\n _uncache = function _uncache(animation, child) {\n if (animation && (!child || child._end > animation._dur || child._start < 0)) {\n // performance optimization: if a child animation is passed in we should only uncache if that child EXTENDS the animation (its end time is beyond the end)\n var a = animation;\n\n while (a) {\n a._dirty = 1;\n a = a.parent;\n }\n }\n\n return animation;\n},\n _recacheAncestors = function _recacheAncestors(animation) {\n var parent = animation.parent;\n\n while (parent && parent.parent) {\n //sometimes we must force a re-sort of all children and update the duration/totalDuration of all ancestor timelines immediately in case, for example, in the middle of a render loop, one tween alters another tween's timeScale which shoves its startTime before 0, forcing the parent timeline to shift around and shiftChildren() which could affect that next tween's render (startTime). Doesn't matter for the root timeline though.\n parent._dirty = 1;\n parent.totalDuration();\n parent = parent.parent;\n }\n\n return animation;\n},\n _rewindStartAt = function _rewindStartAt(tween, totalTime, suppressEvents, force) {\n return tween._startAt && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween.vars.immediateRender && !tween.vars.autoRevert || tween._startAt.render(totalTime, true, force));\n},\n _hasNoPausedAncestors = function _hasNoPausedAncestors(animation) {\n return !animation || animation._ts && _hasNoPausedAncestors(animation.parent);\n},\n _elapsedCycleDuration = function _elapsedCycleDuration(animation) {\n return animation._repeat ? _animationCycle(animation._tTime, animation = animation.duration() + animation._rDelay) * animation : 0;\n},\n // feed in the totalTime and cycleDuration and it'll return the cycle (iteration minus 1) and if the playhead is exactly at the very END, it will NOT bump up to the next cycle.\n_animationCycle = function _animationCycle(tTime, cycleDuration) {\n var whole = Math.floor(tTime /= cycleDuration);\n return tTime && whole === tTime ? whole - 1 : whole;\n},\n _parentToChildTotalTime = function _parentToChildTotalTime(parentTime, child) {\n return (parentTime - child._start) * child._ts + (child._ts >= 0 ? 0 : child._dirty ? child.totalDuration() : child._tDur);\n},\n _setEnd = function _setEnd(animation) {\n return animation._end = _roundPrecise(animation._start + (animation._tDur / Math.abs(animation._ts || animation._rts || _tinyNum) || 0));\n},\n _alignPlayhead = function _alignPlayhead(animation, totalTime) {\n // adjusts the animation's _start and _end according to the provided totalTime (only if the parent's smoothChildTiming is true and the animation isn't paused). It doesn't do any rendering or forcing things back into parent timelines, etc. - that's what totalTime() is for.\n var parent = animation._dp;\n\n if (parent && parent.smoothChildTiming && animation._ts) {\n animation._start = _roundPrecise(parent._time - (animation._ts > 0 ? totalTime / animation._ts : ((animation._dirty ? animation.totalDuration() : animation._tDur) - totalTime) / -animation._ts));\n\n _setEnd(animation);\n\n parent._dirty || _uncache(parent, animation); //for performance improvement. If the parent's cache is already dirty, it already took care of marking the ancestors as dirty too, so skip the function call here.\n }\n\n return animation;\n},\n\n/*\n_totalTimeToTime = (clampedTotalTime, duration, repeat, repeatDelay, yoyo) => {\n\tlet cycleDuration = duration + repeatDelay,\n\t\ttime = _round(clampedTotalTime % cycleDuration);\n\tif (time > duration) {\n\t\ttime = duration;\n\t}\n\treturn (yoyo && (~~(clampedTotalTime / cycleDuration) & 1)) ? duration - time : time;\n},\n*/\n_postAddChecks = function _postAddChecks(timeline, child) {\n var t;\n\n if (child._time || !child._dur && child._initted || child._start < timeline._time && (child._dur || !child.add)) {\n // in case, for example, the _start is moved on a tween that has already rendered, or if it's being inserted into a timeline BEFORE where the playhead is currently. Imagine it's at its end state, then the startTime is moved WAY later (after the end of this timeline), it should render at its beginning. Special case: if it's a timeline (has .add() method) and no duration, we can skip rendering because the user may be populating it AFTER adding it to a parent timeline (unconventional, but possible, and we wouldn't want it to get removed if the parent's autoRemoveChildren is true).\n t = _parentToChildTotalTime(timeline.rawTime(), child);\n\n if (!child._dur || _clamp(0, child.totalDuration(), t) - child._tTime > _tinyNum) {\n child.render(t, true);\n }\n } //if the timeline has already ended but the inserted tween/timeline extends the duration, we should enable this timeline again so that it renders properly. We should also align the playhead with the parent timeline's when appropriate.\n\n\n if (_uncache(timeline, child)._dp && timeline._initted && timeline._time >= timeline._dur && timeline._ts) {\n //in case any of the ancestors had completed but should now be enabled...\n if (timeline._dur < timeline.duration()) {\n t = timeline;\n\n while (t._dp) {\n t.rawTime() >= 0 && t.totalTime(t._tTime); //moves the timeline (shifts its startTime) if necessary, and also enables it. If it's currently zero, though, it may not be scheduled to render until later so there's no need to force it to align with the current playhead position. Only move to catch up with the playhead.\n\n t = t._dp;\n }\n }\n\n timeline._zTime = -_tinyNum; // helps ensure that the next render() will be forced (crossingStart = true in render()), even if the duration hasn't changed (we're adding a child which would need to get rendered). Definitely an edge case. Note: we MUST do this AFTER the loop above where the totalTime() might trigger a render() because this _addToTimeline() method gets called from the Animation constructor, BEFORE tweens even record their targets, etc. so we wouldn't want things to get triggered in the wrong order.\n }\n},\n _addToTimeline = function _addToTimeline(timeline, child, position, skipChecks) {\n child.parent && _removeFromParent(child);\n child._start = _roundPrecise((_isNumber(position) ? position : position || timeline !== _globalTimeline ? _parsePosition(timeline, position, child) : timeline._time) + child._delay);\n child._end = _roundPrecise(child._start + (child.totalDuration() / Math.abs(child.timeScale()) || 0));\n\n _addLinkedListItem(timeline, child, \"_first\", \"_last\", timeline._sort ? \"_start\" : 0);\n\n _isFromOrFromStart(child) || (timeline._recent = child);\n skipChecks || _postAddChecks(timeline, child);\n timeline._ts < 0 && _alignPlayhead(timeline, timeline._tTime); // if the timeline is reversed and the new child makes it longer, we may need to adjust the parent's _start (push it back)\n\n return timeline;\n},\n _scrollTrigger = function _scrollTrigger(animation, trigger) {\n return (_globals.ScrollTrigger || _missingPlugin(\"scrollTrigger\", trigger)) && _globals.ScrollTrigger.create(trigger, animation);\n},\n _attemptInitTween = function _attemptInitTween(tween, time, force, suppressEvents, tTime) {\n _initTween(tween, time, tTime);\n\n if (!tween._initted) {\n return 1;\n }\n\n if (!force && tween._pt && !_reverting && (tween._dur && tween.vars.lazy !== false || !tween._dur && tween.vars.lazy) && _lastRenderedFrame !== _ticker.frame) {\n _lazyTweens.push(tween);\n\n tween._lazy = [tTime, suppressEvents];\n return 1;\n }\n},\n _parentPlayheadIsBeforeStart = function _parentPlayheadIsBeforeStart(_ref) {\n var parent = _ref.parent;\n return parent && parent._ts && parent._initted && !parent._lock && (parent.rawTime() < 0 || _parentPlayheadIsBeforeStart(parent));\n},\n // check parent's _lock because when a timeline repeats/yoyos and does its artificial wrapping, we shouldn't force the ratio back to 0\n_isFromOrFromStart = function _isFromOrFromStart(_ref2) {\n var data = _ref2.data;\n return data === \"isFromStart\" || data === \"isStart\";\n},\n _renderZeroDurationTween = function _renderZeroDurationTween(tween, totalTime, suppressEvents, force) {\n var prevRatio = tween.ratio,\n ratio = totalTime < 0 || !totalTime && (!tween._start && _parentPlayheadIsBeforeStart(tween) && !(!tween._initted && _isFromOrFromStart(tween)) || (tween._ts < 0 || tween._dp._ts < 0) && !_isFromOrFromStart(tween)) ? 0 : 1,\n // if the tween or its parent is reversed and the totalTime is 0, we should go to a ratio of 0. Edge case: if a from() or fromTo() stagger tween is placed later in a timeline, the \"startAt\" zero-duration tween could initially render at a time when the parent timeline's playhead is technically BEFORE where this tween is, so make sure that any \"from\" and \"fromTo\" startAt tweens are rendered the first time at a ratio of 1.\n repeatDelay = tween._rDelay,\n tTime = 0,\n pt,\n iteration,\n prevIteration;\n\n if (repeatDelay && tween._repeat) {\n // in case there's a zero-duration tween that has a repeat with a repeatDelay\n tTime = _clamp(0, tween._tDur, totalTime);\n iteration = _animationCycle(tTime, repeatDelay);\n tween._yoyo && iteration & 1 && (ratio = 1 - ratio);\n\n if (iteration !== _animationCycle(tween._tTime, repeatDelay)) {\n // if iteration changed\n prevRatio = 1 - ratio;\n tween.vars.repeatRefresh && tween._initted && tween.invalidate();\n }\n }\n\n if (ratio !== prevRatio || _reverting || force || tween._zTime === _tinyNum || !totalTime && tween._zTime) {\n if (!tween._initted && _attemptInitTween(tween, totalTime, force, suppressEvents, tTime)) {\n // if we render the very beginning (time == 0) of a fromTo(), we must force the render (normal tweens wouldn't need to render at a time of 0 when the prevTime was also 0). This is also mandatory to make sure overwriting kicks in immediately.\n return;\n }\n\n prevIteration = tween._zTime;\n tween._zTime = totalTime || (suppressEvents ? _tinyNum : 0); // when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration tween, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n suppressEvents || (suppressEvents = totalTime && !prevIteration); // if it was rendered previously at exactly 0 (_zTime) and now the playhead is moving away, DON'T fire callbacks otherwise they'll seem like duplicates.\n\n tween.ratio = ratio;\n tween._from && (ratio = 1 - ratio);\n tween._time = 0;\n tween._tTime = tTime;\n pt = tween._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n totalTime < 0 && _rewindStartAt(tween, totalTime, suppressEvents, true);\n tween._onUpdate && !suppressEvents && _callback(tween, \"onUpdate\");\n tTime && tween._repeat && !suppressEvents && tween.parent && _callback(tween, \"onRepeat\");\n\n if ((totalTime >= tween._tDur || totalTime < 0) && tween.ratio === ratio) {\n ratio && _removeFromParent(tween, 1);\n\n if (!suppressEvents && !_reverting) {\n _callback(tween, ratio ? \"onComplete\" : \"onReverseComplete\", true);\n\n tween._prom && tween._prom();\n }\n }\n } else if (!tween._zTime) {\n tween._zTime = totalTime;\n }\n},\n _findNextPauseTween = function _findNextPauseTween(animation, prevTime, time) {\n var child;\n\n if (time > prevTime) {\n child = animation._first;\n\n while (child && child._start <= time) {\n if (child.data === \"isPause\" && child._start > prevTime) {\n return child;\n }\n\n child = child._next;\n }\n } else {\n child = animation._last;\n\n while (child && child._start >= time) {\n if (child.data === \"isPause\" && child._start < prevTime) {\n return child;\n }\n\n child = child._prev;\n }\n }\n},\n _setDuration = function _setDuration(animation, duration, skipUncache, leavePlayhead) {\n var repeat = animation._repeat,\n dur = _roundPrecise(duration) || 0,\n totalProgress = animation._tTime / animation._tDur;\n totalProgress && !leavePlayhead && (animation._time *= dur / animation._dur);\n animation._dur = dur;\n animation._tDur = !repeat ? dur : repeat < 0 ? 1e10 : _roundPrecise(dur * (repeat + 1) + animation._rDelay * repeat);\n totalProgress > 0 && !leavePlayhead && _alignPlayhead(animation, animation._tTime = animation._tDur * totalProgress);\n animation.parent && _setEnd(animation);\n skipUncache || _uncache(animation.parent, animation);\n return animation;\n},\n _onUpdateTotalDuration = function _onUpdateTotalDuration(animation) {\n return animation instanceof Timeline ? _uncache(animation) : _setDuration(animation, animation._dur);\n},\n _zeroPosition = {\n _start: 0,\n endTime: _emptyFunc,\n totalDuration: _emptyFunc\n},\n _parsePosition = function _parsePosition(animation, position, percentAnimation) {\n var labels = animation.labels,\n recent = animation._recent || _zeroPosition,\n clippedDuration = animation.duration() >= _bigNum ? recent.endTime(false) : animation._dur,\n //in case there's a child that infinitely repeats, users almost never intend for the insertion point of a new child to be based on a SUPER long value like that so we clip it and assume the most recently-added child's endTime should be used instead.\n i,\n offset,\n isPercent;\n\n if (_isString(position) && (isNaN(position) || position in labels)) {\n //if the string is a number like \"1\", check to see if there's a label with that name, otherwise interpret it as a number (absolute value).\n offset = position.charAt(0);\n isPercent = position.substr(-1) === \"%\";\n i = position.indexOf(\"=\");\n\n if (offset === \"<\" || offset === \">\") {\n i >= 0 && (position = position.replace(/=/, \"\"));\n return (offset === \"<\" ? recent._start : recent.endTime(recent._repeat >= 0)) + (parseFloat(position.substr(1)) || 0) * (isPercent ? (i < 0 ? recent : percentAnimation).totalDuration() / 100 : 1);\n }\n\n if (i < 0) {\n position in labels || (labels[position] = clippedDuration);\n return labels[position];\n }\n\n offset = parseFloat(position.charAt(i - 1) + position.substr(i + 1));\n\n if (isPercent && percentAnimation) {\n offset = offset / 100 * (_isArray(percentAnimation) ? percentAnimation[0] : percentAnimation).totalDuration();\n }\n\n return i > 1 ? _parsePosition(animation, position.substr(0, i - 1), percentAnimation) + offset : clippedDuration + offset;\n }\n\n return position == null ? clippedDuration : +position;\n},\n _createTweenType = function _createTweenType(type, params, timeline) {\n var isLegacy = _isNumber(params[1]),\n varsIndex = (isLegacy ? 2 : 1) + (type < 2 ? 0 : 1),\n vars = params[varsIndex],\n irVars,\n parent;\n\n isLegacy && (vars.duration = params[1]);\n vars.parent = timeline;\n\n if (type) {\n irVars = vars;\n parent = timeline;\n\n while (parent && !(\"immediateRender\" in irVars)) {\n // inheritance hasn't happened yet, but someone may have set a default in an ancestor timeline. We could do vars.immediateRender = _isNotFalse(_inheritDefaults(vars).immediateRender) but that'd exact a slight performance penalty because _inheritDefaults() also runs in the Tween constructor. We're paying a small kb price here to gain speed.\n irVars = parent.vars.defaults || {};\n parent = _isNotFalse(parent.vars.inherit) && parent.parent;\n }\n\n vars.immediateRender = _isNotFalse(irVars.immediateRender);\n type < 2 ? vars.runBackwards = 1 : vars.startAt = params[varsIndex - 1]; // \"from\" vars\n }\n\n return new Tween(params[0], vars, params[varsIndex + 1]);\n},\n _conditionalReturn = function _conditionalReturn(value, func) {\n return value || value === 0 ? func(value) : func;\n},\n _clamp = function _clamp(min, max, value) {\n return value < min ? min : value > max ? max : value;\n},\n getUnit = function getUnit(value, v) {\n return !_isString(value) || !(v = _unitExp.exec(value)) ? \"\" : v[1];\n},\n // note: protect against padded numbers as strings, like \"100.100\". That shouldn't return \"00\" as the unit. If it's numeric, return no unit.\nclamp = function clamp(min, max, value) {\n return _conditionalReturn(value, function (v) {\n return _clamp(min, max, v);\n });\n},\n _slice = [].slice,\n _isArrayLike = function _isArrayLike(value, nonEmpty) {\n return value && _isObject(value) && \"length\" in value && (!nonEmpty && !value.length || value.length - 1 in value && _isObject(value[0])) && !value.nodeType && value !== _win;\n},\n _flatten = function _flatten(ar, leaveStrings, accumulator) {\n if (accumulator === void 0) {\n accumulator = [];\n }\n\n return ar.forEach(function (value) {\n var _accumulator;\n\n return _isString(value) && !leaveStrings || _isArrayLike(value, 1) ? (_accumulator = accumulator).push.apply(_accumulator, toArray(value)) : accumulator.push(value);\n }) || accumulator;\n},\n //takes any value and returns an array. If it's a string (and leaveStrings isn't true), it'll use document.querySelectorAll() and convert that to an array. It'll also accept iterables like jQuery objects.\ntoArray = function toArray(value, scope, leaveStrings) {\n return _context && !scope && _context.selector ? _context.selector(value) : _isString(value) && !leaveStrings && (_coreInitted || !_wake()) ? _slice.call((scope || _doc).querySelectorAll(value), 0) : _isArray(value) ? _flatten(value, leaveStrings) : _isArrayLike(value) ? _slice.call(value, 0) : value ? [value] : [];\n},\n selector = function selector(value) {\n value = toArray(value)[0] || _warn(\"Invalid scope\") || {};\n return function (v) {\n var el = value.current || value.nativeElement || value;\n return toArray(v, el.querySelectorAll ? el : el === value ? _warn(\"Invalid scope\") || _doc.createElement(\"div\") : value);\n };\n},\n shuffle = function shuffle(a) {\n return a.sort(function () {\n return .5 - Math.random();\n });\n},\n // alternative that's a bit faster and more reliably diverse but bigger: for (let j, v, i = a.length; i; j = Math.floor(Math.random() * i), v = a[--i], a[i] = a[j], a[j] = v); return a;\n//for distributing values across an array. Can accept a number, a function or (most commonly) a function which can contain the following properties: {base, amount, from, ease, grid, axis, length, each}. Returns a function that expects the following parameters: index, target, array. Recognizes the following\ndistribute = function distribute(v) {\n if (_isFunction(v)) {\n return v;\n }\n\n var vars = _isObject(v) ? v : {\n each: v\n },\n //n:1 is just to indicate v was a number; we leverage that later to set v according to the length we get. If a number is passed in, we treat it like the old stagger value where 0.1, for example, would mean that things would be distributed with 0.1 between each element in the array rather than a total \"amount\" that's chunked out among them all.\n ease = _parseEase(vars.ease),\n from = vars.from || 0,\n base = parseFloat(vars.base) || 0,\n cache = {},\n isDecimal = from > 0 && from < 1,\n ratios = isNaN(from) || isDecimal,\n axis = vars.axis,\n ratioX = from,\n ratioY = from;\n\n if (_isString(from)) {\n ratioX = ratioY = {\n center: .5,\n edges: .5,\n end: 1\n }[from] || 0;\n } else if (!isDecimal && ratios) {\n ratioX = from[0];\n ratioY = from[1];\n }\n\n return function (i, target, a) {\n var l = (a || vars).length,\n distances = cache[l],\n originX,\n originY,\n x,\n y,\n d,\n j,\n max,\n min,\n wrapAt;\n\n if (!distances) {\n wrapAt = vars.grid === \"auto\" ? 0 : (vars.grid || [1, _bigNum])[1];\n\n if (!wrapAt) {\n max = -_bigNum;\n\n while (max < (max = a[wrapAt++].getBoundingClientRect().left) && wrapAt < l) {}\n\n wrapAt < l && wrapAt--;\n }\n\n distances = cache[l] = [];\n originX = ratios ? Math.min(wrapAt, l) * ratioX - .5 : from % wrapAt;\n originY = wrapAt === _bigNum ? 0 : ratios ? l * ratioY / wrapAt - .5 : from / wrapAt | 0;\n max = 0;\n min = _bigNum;\n\n for (j = 0; j < l; j++) {\n x = j % wrapAt - originX;\n y = originY - (j / wrapAt | 0);\n distances[j] = d = !axis ? _sqrt(x * x + y * y) : Math.abs(axis === \"y\" ? y : x);\n d > max && (max = d);\n d < min && (min = d);\n }\n\n from === \"random\" && shuffle(distances);\n distances.max = max - min;\n distances.min = min;\n distances.v = l = (parseFloat(vars.amount) || parseFloat(vars.each) * (wrapAt > l ? l - 1 : !axis ? Math.max(wrapAt, l / wrapAt) : axis === \"y\" ? l / wrapAt : wrapAt) || 0) * (from === \"edges\" ? -1 : 1);\n distances.b = l < 0 ? base - l : base;\n distances.u = getUnit(vars.amount || vars.each) || 0; //unit\n\n ease = ease && l < 0 ? _invertEase(ease) : ease;\n }\n\n l = (distances[i] - distances.min) / distances.max || 0;\n return _roundPrecise(distances.b + (ease ? ease(l) : l) * distances.v) + distances.u; //round in order to work around floating point errors\n };\n},\n _roundModifier = function _roundModifier(v) {\n //pass in 0.1 get a function that'll round to the nearest tenth, or 5 to round to the closest 5, or 0.001 to the closest 1000th, etc.\n var p = Math.pow(10, ((v + \"\").split(\".\")[1] || \"\").length); //to avoid floating point math errors (like 24 * 0.1 == 2.4000000000000004), we chop off at a specific number of decimal places (much faster than toFixed())\n\n return function (raw) {\n var n = _roundPrecise(Math.round(parseFloat(raw) / v) * v * p);\n\n return (n - n % 1) / p + (_isNumber(raw) ? 0 : getUnit(raw)); // n - n % 1 replaces Math.floor() in order to handle negative values properly. For example, Math.floor(-150.00000000000003) is 151!\n };\n},\n snap = function snap(snapTo, value) {\n var isArray = _isArray(snapTo),\n radius,\n is2D;\n\n if (!isArray && _isObject(snapTo)) {\n radius = isArray = snapTo.radius || _bigNum;\n\n if (snapTo.values) {\n snapTo = toArray(snapTo.values);\n\n if (is2D = !_isNumber(snapTo[0])) {\n radius *= radius; //performance optimization so we don't have to Math.sqrt() in the loop.\n }\n } else {\n snapTo = _roundModifier(snapTo.increment);\n }\n }\n\n return _conditionalReturn(value, !isArray ? _roundModifier(snapTo) : _isFunction(snapTo) ? function (raw) {\n is2D = snapTo(raw);\n return Math.abs(is2D - raw) <= radius ? is2D : raw;\n } : function (raw) {\n var x = parseFloat(is2D ? raw.x : raw),\n y = parseFloat(is2D ? raw.y : 0),\n min = _bigNum,\n closest = 0,\n i = snapTo.length,\n dx,\n dy;\n\n while (i--) {\n if (is2D) {\n dx = snapTo[i].x - x;\n dy = snapTo[i].y - y;\n dx = dx * dx + dy * dy;\n } else {\n dx = Math.abs(snapTo[i] - x);\n }\n\n if (dx < min) {\n min = dx;\n closest = i;\n }\n }\n\n closest = !radius || min <= radius ? snapTo[closest] : raw;\n return is2D || closest === raw || _isNumber(raw) ? closest : closest + getUnit(raw);\n });\n},\n random = function random(min, max, roundingIncrement, returnFunction) {\n return _conditionalReturn(_isArray(min) ? !max : roundingIncrement === true ? !!(roundingIncrement = 0) : !returnFunction, function () {\n return _isArray(min) ? min[~~(Math.random() * min.length)] : (roundingIncrement = roundingIncrement || 1e-5) && (returnFunction = roundingIncrement < 1 ? Math.pow(10, (roundingIncrement + \"\").length - 2) : 1) && Math.floor(Math.round((min - roundingIncrement / 2 + Math.random() * (max - min + roundingIncrement * .99)) / roundingIncrement) * roundingIncrement * returnFunction) / returnFunction;\n });\n},\n pipe = function pipe() {\n for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {\n functions[_key] = arguments[_key];\n }\n\n return function (value) {\n return functions.reduce(function (v, f) {\n return f(v);\n }, value);\n };\n},\n unitize = function unitize(func, unit) {\n return function (value) {\n return func(parseFloat(value)) + (unit || getUnit(value));\n };\n},\n normalize = function normalize(min, max, value) {\n return mapRange(min, max, 0, 1, value);\n},\n _wrapArray = function _wrapArray(a, wrapper, value) {\n return _conditionalReturn(value, function (index) {\n return a[~~wrapper(index)];\n });\n},\n wrap = function wrap(min, max, value) {\n // NOTE: wrap() CANNOT be an arrow function! A very odd compiling bug causes problems (unrelated to GSAP).\n var range = max - min;\n return _isArray(min) ? _wrapArray(min, wrap(0, min.length), max) : _conditionalReturn(value, function (value) {\n return (range + (value - min) % range) % range + min;\n });\n},\n wrapYoyo = function wrapYoyo(min, max, value) {\n var range = max - min,\n total = range * 2;\n return _isArray(min) ? _wrapArray(min, wrapYoyo(0, min.length - 1), max) : _conditionalReturn(value, function (value) {\n value = (total + (value - min) % total) % total || 0;\n return min + (value > range ? total - value : value);\n });\n},\n _replaceRandom = function _replaceRandom(value) {\n //replaces all occurrences of random(...) in a string with the calculated random value. can be a range like random(-100, 100, 5) or an array like random([0, 100, 500])\n var prev = 0,\n s = \"\",\n i,\n nums,\n end,\n isArray;\n\n while (~(i = value.indexOf(\"random(\", prev))) {\n end = value.indexOf(\")\", i);\n isArray = value.charAt(i + 7) === \"[\";\n nums = value.substr(i + 7, end - i - 7).match(isArray ? _delimitedValueExp : _strictNumExp);\n s += value.substr(prev, i - prev) + random(isArray ? nums : +nums[0], isArray ? 0 : +nums[1], +nums[2] || 1e-5);\n prev = end + 1;\n }\n\n return s + value.substr(prev, value.length - prev);\n},\n mapRange = function mapRange(inMin, inMax, outMin, outMax, value) {\n var inRange = inMax - inMin,\n outRange = outMax - outMin;\n return _conditionalReturn(value, function (value) {\n return outMin + ((value - inMin) / inRange * outRange || 0);\n });\n},\n interpolate = function interpolate(start, end, progress, mutate) {\n var func = isNaN(start + end) ? 0 : function (p) {\n return (1 - p) * start + p * end;\n };\n\n if (!func) {\n var isString = _isString(start),\n master = {},\n p,\n i,\n interpolators,\n l,\n il;\n\n progress === true && (mutate = 1) && (progress = null);\n\n if (isString) {\n start = {\n p: start\n };\n end = {\n p: end\n };\n } else if (_isArray(start) && !_isArray(end)) {\n interpolators = [];\n l = start.length;\n il = l - 2;\n\n for (i = 1; i < l; i++) {\n interpolators.push(interpolate(start[i - 1], start[i])); //build the interpolators up front as a performance optimization so that when the function is called many times, it can just reuse them.\n }\n\n l--;\n\n func = function func(p) {\n p *= l;\n var i = Math.min(il, ~~p);\n return interpolators[i](p - i);\n };\n\n progress = end;\n } else if (!mutate) {\n start = _merge(_isArray(start) ? [] : {}, start);\n }\n\n if (!interpolators) {\n for (p in end) {\n _addPropTween.call(master, start, p, \"get\", end[p]);\n }\n\n func = function func(p) {\n return _renderPropTweens(p, master) || (isString ? start.p : start);\n };\n }\n }\n\n return _conditionalReturn(progress, func);\n},\n _getLabelInDirection = function _getLabelInDirection(timeline, fromTime, backward) {\n //used for nextLabel() and previousLabel()\n var labels = timeline.labels,\n min = _bigNum,\n p,\n distance,\n label;\n\n for (p in labels) {\n distance = labels[p] - fromTime;\n\n if (distance < 0 === !!backward && distance && min > (distance = Math.abs(distance))) {\n label = p;\n min = distance;\n }\n }\n\n return label;\n},\n _callback = function _callback(animation, type, executeLazyFirst) {\n var v = animation.vars,\n callback = v[type],\n prevContext = _context,\n context = animation._ctx,\n params,\n scope,\n result;\n\n if (!callback) {\n return;\n }\n\n params = v[type + \"Params\"];\n scope = v.callbackScope || animation;\n executeLazyFirst && _lazyTweens.length && _lazyRender(); //in case rendering caused any tweens to lazy-init, we should render them because typically when a timeline finishes, users expect things to have rendered fully. Imagine an onUpdate on a timeline that reports/checks tweened values.\n\n context && (_context = context);\n result = params ? callback.apply(scope, params) : callback.call(scope);\n _context = prevContext;\n return result;\n},\n _interrupt = function _interrupt(animation) {\n _removeFromParent(animation);\n\n animation.scrollTrigger && animation.scrollTrigger.kill(!!_reverting);\n animation.progress() < 1 && _callback(animation, \"onInterrupt\");\n return animation;\n},\n _quickTween,\n _registerPluginQueue = [],\n _createPlugin = function _createPlugin(config) {\n if (!config) return;\n config = !config.name && config[\"default\"] || config; // UMD packaging wraps things oddly, so for example MotionPathHelper becomes {MotionPathHelper:MotionPathHelper, default:MotionPathHelper}.\n\n if (_windowExists() || config.headless) {\n // edge case: some build tools may pass in a null/undefined value\n var name = config.name,\n isFunc = _isFunction(config),\n Plugin = name && !isFunc && config.init ? function () {\n this._props = [];\n } : config,\n //in case someone passes in an object that's not a plugin, like CustomEase\n instanceDefaults = {\n init: _emptyFunc,\n render: _renderPropTweens,\n add: _addPropTween,\n kill: _killPropTweensOf,\n modifier: _addPluginModifier,\n rawVars: 0\n },\n statics = {\n targetTest: 0,\n get: 0,\n getSetter: _getSetter,\n aliases: {},\n register: 0\n };\n\n _wake();\n\n if (config !== Plugin) {\n if (_plugins[name]) {\n return;\n }\n\n _setDefaults(Plugin, _setDefaults(_copyExcluding(config, instanceDefaults), statics)); //static methods\n\n\n _merge(Plugin.prototype, _merge(instanceDefaults, _copyExcluding(config, statics))); //instance methods\n\n\n _plugins[Plugin.prop = name] = Plugin;\n\n if (config.targetTest) {\n _harnessPlugins.push(Plugin);\n\n _reservedProps[name] = 1;\n }\n\n name = (name === \"css\" ? \"CSS\" : name.charAt(0).toUpperCase() + name.substr(1)) + \"Plugin\"; //for the global name. \"motionPath\" should become MotionPathPlugin\n }\n\n _addGlobal(name, Plugin);\n\n config.register && config.register(gsap, Plugin, PropTween);\n } else {\n _registerPluginQueue.push(config);\n }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * COLORS\n * --------------------------------------------------------------------------------------\n */\n_255 = 255,\n _colorLookup = {\n aqua: [0, _255, _255],\n lime: [0, _255, 0],\n silver: [192, 192, 192],\n black: [0, 0, 0],\n maroon: [128, 0, 0],\n teal: [0, 128, 128],\n blue: [0, 0, _255],\n navy: [0, 0, 128],\n white: [_255, _255, _255],\n olive: [128, 128, 0],\n yellow: [_255, _255, 0],\n orange: [_255, 165, 0],\n gray: [128, 128, 128],\n purple: [128, 0, 128],\n green: [0, 128, 0],\n red: [_255, 0, 0],\n pink: [_255, 192, 203],\n cyan: [0, _255, _255],\n transparent: [_255, _255, _255, 0]\n},\n // possible future idea to replace the hard-coded color name values - put this in the ticker.wake() where we set the _doc:\n// let ctx = _doc.createElement(\"canvas\").getContext(\"2d\");\n// _forEachName(\"aqua,lime,silver,black,maroon,teal,blue,navy,white,olive,yellow,orange,gray,purple,green,red,pink,cyan\", color => {ctx.fillStyle = color; _colorLookup[color] = splitColor(ctx.fillStyle)});\n_hue = function _hue(h, m1, m2) {\n h += h < 0 ? 1 : h > 1 ? -1 : 0;\n return (h * 6 < 1 ? m1 + (m2 - m1) * h * 6 : h < .5 ? m2 : h * 3 < 2 ? m1 + (m2 - m1) * (2 / 3 - h) * 6 : m1) * _255 + .5 | 0;\n},\n splitColor = function splitColor(v, toHSL, forceAlpha) {\n var a = !v ? _colorLookup.black : _isNumber(v) ? [v >> 16, v >> 8 & _255, v & _255] : 0,\n r,\n g,\n b,\n h,\n s,\n l,\n max,\n min,\n d,\n wasHSL;\n\n if (!a) {\n if (v.substr(-1) === \",\") {\n //sometimes a trailing comma is included and we should chop it off (typically from a comma-delimited list of values like a textShadow:\"2px 2px 2px blue, 5px 5px 5px rgb(255,0,0)\" - in this example \"blue,\" has a trailing comma. We could strip it out inside parseComplex() but we'd need to do it to the beginning and ending values plus it wouldn't provide protection from other potential scenarios like if the user passes in a similar value.\n v = v.substr(0, v.length - 1);\n }\n\n if (_colorLookup[v]) {\n a = _colorLookup[v];\n } else if (v.charAt(0) === \"#\") {\n if (v.length < 6) {\n //for shorthand like #9F0 or #9F0F (could have alpha)\n r = v.charAt(1);\n g = v.charAt(2);\n b = v.charAt(3);\n v = \"#\" + r + r + g + g + b + b + (v.length === 5 ? v.charAt(4) + v.charAt(4) : \"\");\n }\n\n if (v.length === 9) {\n // hex with alpha, like #fd5e53ff\n a = parseInt(v.substr(1, 6), 16);\n return [a >> 16, a >> 8 & _255, a & _255, parseInt(v.substr(7), 16) / 255];\n }\n\n v = parseInt(v.substr(1), 16);\n a = [v >> 16, v >> 8 & _255, v & _255];\n } else if (v.substr(0, 3) === \"hsl\") {\n a = wasHSL = v.match(_strictNumExp);\n\n if (!toHSL) {\n h = +a[0] % 360 / 360;\n s = +a[1] / 100;\n l = +a[2] / 100;\n g = l <= .5 ? l * (s + 1) : l + s - l * s;\n r = l * 2 - g;\n a.length > 3 && (a[3] *= 1); //cast as number\n\n a[0] = _hue(h + 1 / 3, r, g);\n a[1] = _hue(h, r, g);\n a[2] = _hue(h - 1 / 3, r, g);\n } else if (~v.indexOf(\"=\")) {\n //if relative values are found, just return the raw strings with the relative prefixes in place.\n a = v.match(_numExp);\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n }\n } else {\n a = v.match(_strictNumExp) || _colorLookup.transparent;\n }\n\n a = a.map(Number);\n }\n\n if (toHSL && !wasHSL) {\n r = a[0] / _255;\n g = a[1] / _255;\n b = a[2] / _255;\n max = Math.max(r, g, b);\n min = Math.min(r, g, b);\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = max === r ? (g - b) / d + (g < b ? 6 : 0) : max === g ? (b - r) / d + 2 : (r - g) / d + 4;\n h *= 60;\n }\n\n a[0] = ~~(h + .5);\n a[1] = ~~(s * 100 + .5);\n a[2] = ~~(l * 100 + .5);\n }\n\n forceAlpha && a.length < 4 && (a[3] = 1);\n return a;\n},\n _colorOrderData = function _colorOrderData(v) {\n // strips out the colors from the string, finds all the numeric slots (with units) and returns an array of those. The Array also has a \"c\" property which is an Array of the index values where the colors belong. This is to help work around issues where there's a mis-matched order of color/numeric data like drop-shadow(#f00 0px 1px 2px) and drop-shadow(0x 1px 2px #f00). This is basically a helper function used in _formatColors()\n var values = [],\n c = [],\n i = -1;\n v.split(_colorExp).forEach(function (v) {\n var a = v.match(_numWithUnitExp) || [];\n values.push.apply(values, a);\n c.push(i += a.length + 1);\n });\n values.c = c;\n return values;\n},\n _formatColors = function _formatColors(s, toHSL, orderMatchData) {\n var result = \"\",\n colors = (s + result).match(_colorExp),\n type = toHSL ? \"hsla(\" : \"rgba(\",\n i = 0,\n c,\n shell,\n d,\n l;\n\n if (!colors) {\n return s;\n }\n\n colors = colors.map(function (color) {\n return (color = splitColor(color, toHSL, 1)) && type + (toHSL ? color[0] + \",\" + color[1] + \"%,\" + color[2] + \"%,\" + color[3] : color.join(\",\")) + \")\";\n });\n\n if (orderMatchData) {\n d = _colorOrderData(s);\n c = orderMatchData.c;\n\n if (c.join(result) !== d.c.join(result)) {\n shell = s.replace(_colorExp, \"1\").split(_numWithUnitExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + (~c.indexOf(i) ? colors.shift() || type + \"0,0,0,0)\" : (d.length ? d : colors.length ? colors : orderMatchData).shift());\n }\n }\n }\n\n if (!shell) {\n shell = s.split(_colorExp);\n l = shell.length - 1;\n\n for (; i < l; i++) {\n result += shell[i] + colors[i];\n }\n }\n\n return result + shell[l];\n},\n _colorExp = function () {\n var s = \"(?:\\\\b(?:(?:rgb|rgba|hsl|hsla)\\\\(.+?\\\\))|\\\\B#(?:[0-9a-f]{3,4}){1,2}\\\\b\",\n //we'll dynamically build this Regular Expression to conserve file size. After building it, it will be able to find rgb(), rgba(), # (hexadecimal), and named color values like red, blue, purple, etc.,\n p;\n\n for (p in _colorLookup) {\n s += \"|\" + p + \"\\\\b\";\n }\n\n return new RegExp(s + \")\", \"gi\");\n}(),\n _hslExp = /hsl[a]?\\(/,\n _colorStringFilter = function _colorStringFilter(a) {\n var combined = a.join(\" \"),\n toHSL;\n _colorExp.lastIndex = 0;\n\n if (_colorExp.test(combined)) {\n toHSL = _hslExp.test(combined);\n a[1] = _formatColors(a[1], toHSL);\n a[0] = _formatColors(a[0], toHSL, _colorOrderData(a[1])); // make sure the order of numbers/colors match with the END value.\n\n return true;\n }\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TICKER\n * --------------------------------------------------------------------------------------\n */\n_tickerActive,\n _ticker = function () {\n var _getTime = Date.now,\n _lagThreshold = 500,\n _adjustedLag = 33,\n _startTime = _getTime(),\n _lastUpdate = _startTime,\n _gap = 1000 / 240,\n _nextTime = _gap,\n _listeners = [],\n _id,\n _req,\n _raf,\n _self,\n _delta,\n _i,\n _tick = function _tick(v) {\n var elapsed = _getTime() - _lastUpdate,\n manual = v === true,\n overlap,\n dispatch,\n time,\n frame;\n\n (elapsed > _lagThreshold || elapsed < 0) && (_startTime += elapsed - _adjustedLag);\n _lastUpdate += elapsed;\n time = _lastUpdate - _startTime;\n overlap = time - _nextTime;\n\n if (overlap > 0 || manual) {\n frame = ++_self.frame;\n _delta = time - _self.time * 1000;\n _self.time = time = time / 1000;\n _nextTime += overlap + (overlap >= _gap ? 4 : _gap - overlap);\n dispatch = 1;\n }\n\n manual || (_id = _req(_tick)); //make sure the request is made before we dispatch the \"tick\" event so that timing is maintained. Otherwise, if processing the \"tick\" requires a bunch of time (like 15ms) and we're using a setTimeout() that's based on 16.7ms, it'd technically take 31.7ms between frames otherwise.\n\n if (dispatch) {\n for (_i = 0; _i < _listeners.length; _i++) {\n // use _i and check _listeners.length instead of a variable because a listener could get removed during the loop, and if that happens to an element less than the current index, it'd throw things off in the loop.\n _listeners[_i](time, _delta, frame, v);\n }\n }\n };\n\n _self = {\n time: 0,\n frame: 0,\n tick: function tick() {\n _tick(true);\n },\n deltaRatio: function deltaRatio(fps) {\n return _delta / (1000 / (fps || 60));\n },\n wake: function wake() {\n if (_coreReady) {\n if (!_coreInitted && _windowExists()) {\n _win = _coreInitted = window;\n _doc = _win.document || {};\n _globals.gsap = gsap;\n (_win.gsapVersions || (_win.gsapVersions = [])).push(gsap.version);\n\n _install(_installScope || _win.GreenSockGlobals || !_win.gsap && _win || {});\n\n _registerPluginQueue.forEach(_createPlugin);\n }\n\n _raf = typeof requestAnimationFrame !== \"undefined\" && requestAnimationFrame;\n _id && _self.sleep();\n\n _req = _raf || function (f) {\n return setTimeout(f, _nextTime - _self.time * 1000 + 1 | 0);\n };\n\n _tickerActive = 1;\n\n _tick(2);\n }\n },\n sleep: function sleep() {\n (_raf ? cancelAnimationFrame : clearTimeout)(_id);\n _tickerActive = 0;\n _req = _emptyFunc;\n },\n lagSmoothing: function lagSmoothing(threshold, adjustedLag) {\n _lagThreshold = threshold || Infinity; // zero should be interpreted as basically unlimited\n\n _adjustedLag = Math.min(adjustedLag || 33, _lagThreshold);\n },\n fps: function fps(_fps) {\n _gap = 1000 / (_fps || 240);\n _nextTime = _self.time * 1000 + _gap;\n },\n add: function add(callback, once, prioritize) {\n var func = once ? function (t, d, f, v) {\n callback(t, d, f, v);\n\n _self.remove(func);\n } : callback;\n\n _self.remove(callback);\n\n _listeners[prioritize ? \"unshift\" : \"push\"](func);\n\n _wake();\n\n return func;\n },\n remove: function remove(callback, i) {\n ~(i = _listeners.indexOf(callback)) && _listeners.splice(i, 1) && _i >= i && _i--;\n },\n _listeners: _listeners\n };\n return _self;\n}(),\n _wake = function _wake() {\n return !_tickerActive && _ticker.wake();\n},\n //also ensures the core classes are initialized.\n\n/*\n* -------------------------------------------------\n* EASING\n* -------------------------------------------------\n*/\n_easeMap = {},\n _customEaseExp = /^[\\d.\\-M][\\d.\\-,\\s]/,\n _quotesExp = /[\"']/g,\n _parseObjectInString = function _parseObjectInString(value) {\n //takes a string like \"{wiggles:10, type:anticipate})\" and turns it into a real object. Notice it ends in \")\" and includes the {} wrappers. This is because we only use this function for parsing ease configs and prioritized optimization rather than reusability.\n var obj = {},\n split = value.substr(1, value.length - 3).split(\":\"),\n key = split[0],\n i = 1,\n l = split.length,\n index,\n val,\n parsedVal;\n\n for (; i < l; i++) {\n val = split[i];\n index = i !== l - 1 ? val.lastIndexOf(\",\") : val.length;\n parsedVal = val.substr(0, index);\n obj[key] = isNaN(parsedVal) ? parsedVal.replace(_quotesExp, \"\").trim() : +parsedVal;\n key = val.substr(index + 1).trim();\n }\n\n return obj;\n},\n _valueInParentheses = function _valueInParentheses(value) {\n var open = value.indexOf(\"(\") + 1,\n close = value.indexOf(\")\"),\n nested = value.indexOf(\"(\", open);\n return value.substring(open, ~nested && nested < close ? value.indexOf(\")\", close + 1) : close);\n},\n _configEaseFromString = function _configEaseFromString(name) {\n //name can be a string like \"elastic.out(1,0.5)\", and pass in _easeMap as obj and it'll parse it out and call the actual function like _easeMap.Elastic.easeOut.config(1,0.5). It will also parse custom ease strings as long as CustomEase is loaded and registered (internally as _easeMap._CE).\n var split = (name + \"\").split(\"(\"),\n ease = _easeMap[split[0]];\n return ease && split.length > 1 && ease.config ? ease.config.apply(null, ~name.indexOf(\"{\") ? [_parseObjectInString(split[1])] : _valueInParentheses(name).split(\",\").map(_numericIfPossible)) : _easeMap._CE && _customEaseExp.test(name) ? _easeMap._CE(\"\", name) : ease;\n},\n _invertEase = function _invertEase(ease) {\n return function (p) {\n return 1 - ease(1 - p);\n };\n},\n // allow yoyoEase to be set in children and have those affected when the parent/ancestor timeline yoyos.\n_propagateYoyoEase = function _propagateYoyoEase(timeline, isYoyo) {\n var child = timeline._first,\n ease;\n\n while (child) {\n if (child instanceof Timeline) {\n _propagateYoyoEase(child, isYoyo);\n } else if (child.vars.yoyoEase && (!child._yoyo || !child._repeat) && child._yoyo !== isYoyo) {\n if (child.timeline) {\n _propagateYoyoEase(child.timeline, isYoyo);\n } else {\n ease = child._ease;\n child._ease = child._yEase;\n child._yEase = ease;\n child._yoyo = isYoyo;\n }\n }\n\n child = child._next;\n }\n},\n _parseEase = function _parseEase(ease, defaultEase) {\n return !ease ? defaultEase : (_isFunction(ease) ? ease : _easeMap[ease] || _configEaseFromString(ease)) || defaultEase;\n},\n _insertEase = function _insertEase(names, easeIn, easeOut, easeInOut) {\n if (easeOut === void 0) {\n easeOut = function easeOut(p) {\n return 1 - easeIn(1 - p);\n };\n }\n\n if (easeInOut === void 0) {\n easeInOut = function easeInOut(p) {\n return p < .5 ? easeIn(p * 2) / 2 : 1 - easeIn((1 - p) * 2) / 2;\n };\n }\n\n var ease = {\n easeIn: easeIn,\n easeOut: easeOut,\n easeInOut: easeInOut\n },\n lowercaseName;\n\n _forEachName(names, function (name) {\n _easeMap[name] = _globals[name] = ease;\n _easeMap[lowercaseName = name.toLowerCase()] = easeOut;\n\n for (var p in ease) {\n _easeMap[lowercaseName + (p === \"easeIn\" ? \".in\" : p === \"easeOut\" ? \".out\" : \".inOut\")] = _easeMap[name + \".\" + p] = ease[p];\n }\n });\n\n return ease;\n},\n _easeInOutFromOut = function _easeInOutFromOut(easeOut) {\n return function (p) {\n return p < .5 ? (1 - easeOut(1 - p * 2)) / 2 : .5 + easeOut((p - .5) * 2) / 2;\n };\n},\n _configElastic = function _configElastic(type, amplitude, period) {\n var p1 = amplitude >= 1 ? amplitude : 1,\n //note: if amplitude is < 1, we simply adjust the period for a more natural feel. Otherwise the math doesn't work right and the curve starts at 1.\n p2 = (period || (type ? .3 : .45)) / (amplitude < 1 ? amplitude : 1),\n p3 = p2 / _2PI * (Math.asin(1 / p1) || 0),\n easeOut = function easeOut(p) {\n return p === 1 ? 1 : p1 * Math.pow(2, -10 * p) * _sin((p - p3) * p2) + 1;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n p2 = _2PI / p2; //precalculate to optimize\n\n ease.config = function (amplitude, period) {\n return _configElastic(type, amplitude, period);\n };\n\n return ease;\n},\n _configBack = function _configBack(type, overshoot) {\n if (overshoot === void 0) {\n overshoot = 1.70158;\n }\n\n var easeOut = function easeOut(p) {\n return p ? --p * p * ((overshoot + 1) * p + overshoot) + 1 : 0;\n },\n ease = type === \"out\" ? easeOut : type === \"in\" ? function (p) {\n return 1 - easeOut(1 - p);\n } : _easeInOutFromOut(easeOut);\n\n ease.config = function (overshoot) {\n return _configBack(type, overshoot);\n };\n\n return ease;\n}; // a cheaper (kb and cpu) but more mild way to get a parameterized weighted ease by feeding in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEase = ratio => {\n// \tlet y = 0.5 + ratio / 2;\n// \treturn p => (2 * (1 - p) * p * y + p * p);\n// },\n// a stronger (but more expensive kb/cpu) parameterized weighted ease that lets you feed in a value between -1 (easeIn) and 1 (easeOut) where 0 is linear.\n// _weightedEaseStrong = ratio => {\n// \tratio = .5 + ratio / 2;\n// \tlet o = 1 / 3 * (ratio < .5 ? ratio : 1 - ratio),\n// \t\tb = ratio - o,\n// \t\tc = ratio + o;\n// \treturn p => p === 1 ? p : 3 * b * (1 - p) * (1 - p) * p + 3 * c * (1 - p) * p * p + p * p * p;\n// };\n\n\n_forEachName(\"Linear,Quad,Cubic,Quart,Quint,Strong\", function (name, i) {\n var power = i < 5 ? i + 1 : i;\n\n _insertEase(name + \",Power\" + (power - 1), i ? function (p) {\n return Math.pow(p, power);\n } : function (p) {\n return p;\n }, function (p) {\n return 1 - Math.pow(1 - p, power);\n }, function (p) {\n return p < .5 ? Math.pow(p * 2, power) / 2 : 1 - Math.pow((1 - p) * 2, power) / 2;\n });\n});\n\n_easeMap.Linear.easeNone = _easeMap.none = _easeMap.Linear.easeIn;\n\n_insertEase(\"Elastic\", _configElastic(\"in\"), _configElastic(\"out\"), _configElastic());\n\n(function (n, c) {\n var n1 = 1 / c,\n n2 = 2 * n1,\n n3 = 2.5 * n1,\n easeOut = function easeOut(p) {\n return p < n1 ? n * p * p : p < n2 ? n * Math.pow(p - 1.5 / c, 2) + .75 : p < n3 ? n * (p -= 2.25 / c) * p + .9375 : n * Math.pow(p - 2.625 / c, 2) + .984375;\n };\n\n _insertEase(\"Bounce\", function (p) {\n return 1 - easeOut(1 - p);\n }, easeOut);\n})(7.5625, 2.75);\n\n_insertEase(\"Expo\", function (p) {\n return p ? Math.pow(2, 10 * (p - 1)) : 0;\n});\n\n_insertEase(\"Circ\", function (p) {\n return -(_sqrt(1 - p * p) - 1);\n});\n\n_insertEase(\"Sine\", function (p) {\n return p === 1 ? 1 : -_cos(p * _HALF_PI) + 1;\n});\n\n_insertEase(\"Back\", _configBack(\"in\"), _configBack(\"out\"), _configBack());\n\n_easeMap.SteppedEase = _easeMap.steps = _globals.SteppedEase = {\n config: function config(steps, immediateStart) {\n if (steps === void 0) {\n steps = 1;\n }\n\n var p1 = 1 / steps,\n p2 = steps + (immediateStart ? 0 : 1),\n p3 = immediateStart ? 1 : 0,\n max = 1 - _tinyNum;\n return function (p) {\n return ((p2 * _clamp(0, max, p) | 0) + p3) * p1;\n };\n }\n};\n_defaults.ease = _easeMap[\"quad.out\"];\n\n_forEachName(\"onComplete,onUpdate,onStart,onRepeat,onReverseComplete,onInterrupt\", function (name) {\n return _callbackNames += name + \",\" + name + \"Params,\";\n});\n/*\n * --------------------------------------------------------------------------------------\n * CACHE\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var GSCache = function GSCache(target, harness) {\n this.id = _gsID++;\n target._gsap = this;\n this.target = target;\n this.harness = harness;\n this.get = harness ? harness.get : _getProperty;\n this.set = harness ? harness.getSetter : _getSetter;\n};\n/*\n * --------------------------------------------------------------------------------------\n * ANIMATION\n * --------------------------------------------------------------------------------------\n */\n\nexport var Animation = /*#__PURE__*/function () {\n function Animation(vars) {\n this.vars = vars;\n this._delay = +vars.delay || 0;\n\n if (this._repeat = vars.repeat === Infinity ? -2 : vars.repeat || 0) {\n // TODO: repeat: Infinity on a timeline's children must flag that timeline internally and affect its totalDuration, otherwise it'll stop in the negative direction when reaching the start.\n this._rDelay = vars.repeatDelay || 0;\n this._yoyo = !!vars.yoyo || !!vars.yoyoEase;\n }\n\n this._ts = 1;\n\n _setDuration(this, +vars.duration, 1, 1);\n\n this.data = vars.data;\n\n if (_context) {\n this._ctx = _context;\n\n _context.data.push(this);\n }\n\n _tickerActive || _ticker.wake();\n }\n\n var _proto = Animation.prototype;\n\n _proto.delay = function delay(value) {\n if (value || value === 0) {\n this.parent && this.parent.smoothChildTiming && this.startTime(this._start + value - this._delay);\n this._delay = value;\n return this;\n }\n\n return this._delay;\n };\n\n _proto.duration = function duration(value) {\n return arguments.length ? this.totalDuration(this._repeat > 0 ? value + (value + this._rDelay) * this._repeat : value) : this.totalDuration() && this._dur;\n };\n\n _proto.totalDuration = function totalDuration(value) {\n if (!arguments.length) {\n return this._tDur;\n }\n\n this._dirty = 0;\n return _setDuration(this, this._repeat < 0 ? value : (value - this._repeat * this._rDelay) / (this._repeat + 1));\n };\n\n _proto.totalTime = function totalTime(_totalTime, suppressEvents) {\n _wake();\n\n if (!arguments.length) {\n return this._tTime;\n }\n\n var parent = this._dp;\n\n if (parent && parent.smoothChildTiming && this._ts) {\n _alignPlayhead(this, _totalTime);\n\n !parent._dp || parent.parent || _postAddChecks(parent, this); // edge case: if this is a child of a timeline that already completed, for example, we must re-activate the parent.\n //in case any of the ancestor timelines had completed but should now be enabled, we should reset their totalTime() which will also ensure that they're lined up properly and enabled. Skip for animations that are on the root (wasteful). Example: a TimelineLite.exportRoot() is performed when there's a paused tween on the root, the export will not complete until that tween is unpaused, but imagine a child gets restarted later, after all [unpaused] tweens have completed. The start of that child would get pushed out, but one of the ancestors may have completed.\n\n while (parent && parent.parent) {\n if (parent.parent._time !== parent._start + (parent._ts >= 0 ? parent._tTime / parent._ts : (parent.totalDuration() - parent._tTime) / -parent._ts)) {\n parent.totalTime(parent._tTime, true);\n }\n\n parent = parent.parent;\n }\n\n if (!this.parent && this._dp.autoRemoveChildren && (this._ts > 0 && _totalTime < this._tDur || this._ts < 0 && _totalTime > 0 || !this._tDur && !_totalTime)) {\n //if the animation doesn't have a parent, put it back into its last parent (recorded as _dp for exactly cases like this). Limit to parents with autoRemoveChildren (like globalTimeline) so that if the user manually removes an animation from a timeline and then alters its playhead, it doesn't get added back in.\n _addToTimeline(this._dp, this, this._start - this._delay);\n }\n }\n\n if (this._tTime !== _totalTime || !this._dur && !suppressEvents || this._initted && Math.abs(this._zTime) === _tinyNum || !_totalTime && !this._initted && (this.add || this._ptLookup)) {\n // check for _ptLookup on a Tween instance to ensure it has actually finished being instantiated, otherwise if this.reverse() gets called in the Animation constructor, it could trigger a render() here even though the _targets weren't populated, thus when _init() is called there won't be any PropTweens (it'll act like the tween is non-functional)\n this._ts || (this._pTime = _totalTime); // otherwise, if an animation is paused, then the playhead is moved back to zero, then resumed, it'd revert back to the original time at the pause\n //if (!this._lock) { // avoid endless recursion (not sure we need this yet or if it's worth the performance hit)\n // this._lock = 1;\n\n _lazySafeRender(this, _totalTime, suppressEvents); // this._lock = 0;\n //}\n\n }\n\n return this;\n };\n\n _proto.time = function time(value, suppressEvents) {\n return arguments.length ? this.totalTime(Math.min(this.totalDuration(), value + _elapsedCycleDuration(this)) % (this._dur + this._rDelay) || (value ? this._dur : 0), suppressEvents) : this._time; // note: if the modulus results in 0, the playhead could be exactly at the end or the beginning, and we always defer to the END with a non-zero value, otherwise if you set the time() to the very end (duration()), it would render at the START!\n };\n\n _proto.totalProgress = function totalProgress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.totalDuration() * value, suppressEvents) : this.totalDuration() ? Math.min(1, this._tTime / this._tDur) : this.rawTime() > 0 ? 1 : 0;\n };\n\n _proto.progress = function progress(value, suppressEvents) {\n return arguments.length ? this.totalTime(this.duration() * (this._yoyo && !(this.iteration() & 1) ? 1 - value : value) + _elapsedCycleDuration(this), suppressEvents) : this.duration() ? Math.min(1, this._time / this._dur) : this.rawTime() > 0 ? 1 : 0;\n };\n\n _proto.iteration = function iteration(value, suppressEvents) {\n var cycleDuration = this.duration() + this._rDelay;\n\n return arguments.length ? this.totalTime(this._time + (value - 1) * cycleDuration, suppressEvents) : this._repeat ? _animationCycle(this._tTime, cycleDuration) + 1 : 1;\n } // potential future addition:\n // isPlayingBackwards() {\n // \tlet animation = this,\n // \t\torientation = 1; // 1 = forward, -1 = backward\n // \twhile (animation) {\n // \t\torientation *= animation.reversed() || (animation.repeat() && !(animation.iteration() & 1)) ? -1 : 1;\n // \t\tanimation = animation.parent;\n // \t}\n // \treturn orientation < 0;\n // }\n ;\n\n _proto.timeScale = function timeScale(value, suppressEvents) {\n if (!arguments.length) {\n return this._rts === -_tinyNum ? 0 : this._rts; // recorded timeScale. Special case: if someone calls reverse() on an animation with timeScale of 0, we assign it -_tinyNum to remember it's reversed.\n }\n\n if (this._rts === value) {\n return this;\n }\n\n var tTime = this.parent && this._ts ? _parentToChildTotalTime(this.parent._time, this) : this._tTime; // make sure to do the parentToChildTotalTime() BEFORE setting the new _ts because the old one must be used in that calculation.\n // future addition? Up side: fast and minimal file size. Down side: only works on this animation; if a timeline is reversed, for example, its childrens' onReverse wouldn't get called.\n //(+value < 0 && this._rts >= 0) && _callback(this, \"onReverse\", true);\n // prioritize rendering where the parent's playhead lines up instead of this._tTime because there could be a tween that's animating another tween's timeScale in the same rendering loop (same parent), thus if the timeScale tween renders first, it would alter _start BEFORE _tTime was set on that tick (in the rendering loop), effectively freezing it until the timeScale tween finishes.\n\n this._rts = +value || 0;\n this._ts = this._ps || value === -_tinyNum ? 0 : this._rts; // _ts is the functional timeScale which would be 0 if the animation is paused.\n\n this.totalTime(_clamp(-Math.abs(this._delay), this._tDur, tTime), suppressEvents !== false);\n\n _setEnd(this); // if parent.smoothChildTiming was false, the end time didn't get updated in the _alignPlayhead() method, so do it here.\n\n\n return _recacheAncestors(this);\n };\n\n _proto.paused = function paused(value) {\n if (!arguments.length) {\n return this._ps;\n }\n\n if (this._ps !== value) {\n this._ps = value;\n\n if (value) {\n this._pTime = this._tTime || Math.max(-this._delay, this.rawTime()); // if the pause occurs during the delay phase, make sure that's factored in when resuming.\n\n this._ts = this._act = 0; // _ts is the functional timeScale, so a paused tween would effectively have a timeScale of 0. We record the \"real\" timeScale as _rts (recorded time scale)\n } else {\n _wake();\n\n this._ts = this._rts; //only defer to _pTime (pauseTime) if tTime is zero. Remember, someone could pause() an animation, then scrub the playhead and resume(). If the parent doesn't have smoothChildTiming, we render at the rawTime() because the startTime won't get updated.\n\n this.totalTime(this.parent && !this.parent.smoothChildTiming ? this.rawTime() : this._tTime || this._pTime, this.progress() === 1 && Math.abs(this._zTime) !== _tinyNum && (this._tTime -= _tinyNum)); // edge case: animation.progress(1).pause().play() wouldn't render again because the playhead is already at the end, but the call to totalTime() below will add it back to its parent...and not remove it again (since removing only happens upon rendering at a new time). Offsetting the _tTime slightly is done simply to cause the final render in totalTime() that'll pop it off its timeline (if autoRemoveChildren is true, of course). Check to make sure _zTime isn't -_tinyNum to avoid an edge case where the playhead is pushed to the end but INSIDE a tween/callback, the timeline itself is paused thus halting rendering and leaving a few unrendered. When resuming, it wouldn't render those otherwise.\n }\n }\n\n return this;\n };\n\n _proto.startTime = function startTime(value) {\n if (arguments.length) {\n this._start = value;\n var parent = this.parent || this._dp;\n parent && (parent._sort || !this.parent) && _addToTimeline(parent, this, value - this._delay);\n return this;\n }\n\n return this._start;\n };\n\n _proto.endTime = function endTime(includeRepeats) {\n return this._start + (_isNotFalse(includeRepeats) ? this.totalDuration() : this.duration()) / Math.abs(this._ts || 1);\n };\n\n _proto.rawTime = function rawTime(wrapRepeats) {\n var parent = this.parent || this._dp; // _dp = detached parent\n\n return !parent ? this._tTime : wrapRepeats && (!this._ts || this._repeat && this._time && this.totalProgress() < 1) ? this._tTime % (this._dur + this._rDelay) : !this._ts ? this._tTime : _parentToChildTotalTime(parent.rawTime(wrapRepeats), this);\n };\n\n _proto.revert = function revert(config) {\n if (config === void 0) {\n config = _revertConfig;\n }\n\n var prevIsReverting = _reverting;\n _reverting = config;\n\n if (this._initted || this._startAt) {\n this.timeline && this.timeline.revert(config);\n this.totalTime(-0.01, config.suppressEvents);\n }\n\n this.data !== \"nested\" && config.kill !== false && this.kill();\n _reverting = prevIsReverting;\n return this;\n };\n\n _proto.globalTime = function globalTime(rawTime) {\n var animation = this,\n time = arguments.length ? rawTime : animation.rawTime();\n\n while (animation) {\n time = animation._start + time / (Math.abs(animation._ts) || 1);\n animation = animation._dp;\n }\n\n return !this.parent && this._sat ? this._sat.globalTime(rawTime) : time; // the _startAt tweens for .fromTo() and .from() that have immediateRender should always be FIRST in the timeline (important for context.revert()). \"_sat\" stands for _startAtTween, referring to the parent tween that created the _startAt. We must discern if that tween had immediateRender so that we can know whether or not to prioritize it in revert().\n };\n\n _proto.repeat = function repeat(value) {\n if (arguments.length) {\n this._repeat = value === Infinity ? -2 : value;\n return _onUpdateTotalDuration(this);\n }\n\n return this._repeat === -2 ? Infinity : this._repeat;\n };\n\n _proto.repeatDelay = function repeatDelay(value) {\n if (arguments.length) {\n var time = this._time;\n this._rDelay = value;\n\n _onUpdateTotalDuration(this);\n\n return time ? this.time(time) : this;\n }\n\n return this._rDelay;\n };\n\n _proto.yoyo = function yoyo(value) {\n if (arguments.length) {\n this._yoyo = value;\n return this;\n }\n\n return this._yoyo;\n };\n\n _proto.seek = function seek(position, suppressEvents) {\n return this.totalTime(_parsePosition(this, position), _isNotFalse(suppressEvents));\n };\n\n _proto.restart = function restart(includeDelay, suppressEvents) {\n return this.play().totalTime(includeDelay ? -this._delay : 0, _isNotFalse(suppressEvents));\n };\n\n _proto.play = function play(from, suppressEvents) {\n from != null && this.seek(from, suppressEvents);\n return this.reversed(false).paused(false);\n };\n\n _proto.reverse = function reverse(from, suppressEvents) {\n from != null && this.seek(from || this.totalDuration(), suppressEvents);\n return this.reversed(true).paused(false);\n };\n\n _proto.pause = function pause(atTime, suppressEvents) {\n atTime != null && this.seek(atTime, suppressEvents);\n return this.paused(true);\n };\n\n _proto.resume = function resume() {\n return this.paused(false);\n };\n\n _proto.reversed = function reversed(value) {\n if (arguments.length) {\n !!value !== this.reversed() && this.timeScale(-this._rts || (value ? -_tinyNum : 0)); // in case timeScale is zero, reversing would have no effect so we use _tinyNum.\n\n return this;\n }\n\n return this._rts < 0;\n };\n\n _proto.invalidate = function invalidate() {\n this._initted = this._act = 0;\n this._zTime = -_tinyNum;\n return this;\n };\n\n _proto.isActive = function isActive() {\n var parent = this.parent || this._dp,\n start = this._start,\n rawTime;\n return !!(!parent || this._ts && this._initted && parent.isActive() && (rawTime = parent.rawTime(true)) >= start && rawTime < this.endTime(true) - _tinyNum);\n };\n\n _proto.eventCallback = function eventCallback(type, callback, params) {\n var vars = this.vars;\n\n if (arguments.length > 1) {\n if (!callback) {\n delete vars[type];\n } else {\n vars[type] = callback;\n params && (vars[type + \"Params\"] = params);\n type === \"onUpdate\" && (this._onUpdate = callback);\n }\n\n return this;\n }\n\n return vars[type];\n };\n\n _proto.then = function then(onFulfilled) {\n var self = this;\n return new Promise(function (resolve) {\n var f = _isFunction(onFulfilled) ? onFulfilled : _passThrough,\n _resolve = function _resolve() {\n var _then = self.then;\n self.then = null; // temporarily null the then() method to avoid an infinite loop (see https://github.com/greensock/GSAP/issues/322)\n\n _isFunction(f) && (f = f(self)) && (f.then || f === self) && (self.then = _then);\n resolve(f);\n self.then = _then;\n };\n\n if (self._initted && self.totalProgress() === 1 && self._ts >= 0 || !self._tTime && self._ts < 0) {\n _resolve();\n } else {\n self._prom = _resolve;\n }\n });\n };\n\n _proto.kill = function kill() {\n _interrupt(this);\n };\n\n return Animation;\n}();\n\n_setDefaults(Animation.prototype, {\n _time: 0,\n _start: 0,\n _end: 0,\n _tTime: 0,\n _tDur: 0,\n _dirty: 0,\n _repeat: 0,\n _yoyo: false,\n parent: null,\n _initted: false,\n _rDelay: 0,\n _ts: 1,\n _dp: 0,\n ratio: 0,\n _zTime: -_tinyNum,\n _prom: 0,\n _ps: false,\n _rts: 1\n});\n/*\n * -------------------------------------------------\n * TIMELINE\n * -------------------------------------------------\n */\n\n\nexport var Timeline = /*#__PURE__*/function (_Animation) {\n _inheritsLoose(Timeline, _Animation);\n\n function Timeline(vars, position) {\n var _this;\n\n if (vars === void 0) {\n vars = {};\n }\n\n _this = _Animation.call(this, vars) || this;\n _this.labels = {};\n _this.smoothChildTiming = !!vars.smoothChildTiming;\n _this.autoRemoveChildren = !!vars.autoRemoveChildren;\n _this._sort = _isNotFalse(vars.sortChildren);\n _globalTimeline && _addToTimeline(vars.parent || _globalTimeline, _assertThisInitialized(_this), position);\n vars.reversed && _this.reverse();\n vars.paused && _this.paused(true);\n vars.scrollTrigger && _scrollTrigger(_assertThisInitialized(_this), vars.scrollTrigger);\n return _this;\n }\n\n var _proto2 = Timeline.prototype;\n\n _proto2.to = function to(targets, vars, position) {\n _createTweenType(0, arguments, this);\n\n return this;\n };\n\n _proto2.from = function from(targets, vars, position) {\n _createTweenType(1, arguments, this);\n\n return this;\n };\n\n _proto2.fromTo = function fromTo(targets, fromVars, toVars, position) {\n _createTweenType(2, arguments, this);\n\n return this;\n };\n\n _proto2.set = function set(targets, vars, position) {\n vars.duration = 0;\n vars.parent = this;\n _inheritDefaults(vars).repeatDelay || (vars.repeat = 0);\n vars.immediateRender = !!vars.immediateRender;\n new Tween(targets, vars, _parsePosition(this, position), 1);\n return this;\n };\n\n _proto2.call = function call(callback, params, position) {\n return _addToTimeline(this, Tween.delayedCall(0, callback, params), position);\n } //ONLY for backward compatibility! Maybe delete?\n ;\n\n _proto2.staggerTo = function staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.duration = duration;\n vars.stagger = vars.stagger || stagger;\n vars.onComplete = onCompleteAll;\n vars.onCompleteParams = onCompleteAllParams;\n vars.parent = this;\n new Tween(targets, vars, _parsePosition(this, position));\n return this;\n };\n\n _proto2.staggerFrom = function staggerFrom(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams) {\n vars.runBackwards = 1;\n _inheritDefaults(vars).immediateRender = _isNotFalse(vars.immediateRender);\n return this.staggerTo(targets, duration, vars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.staggerFromTo = function staggerFromTo(targets, duration, fromVars, toVars, stagger, position, onCompleteAll, onCompleteAllParams) {\n toVars.startAt = fromVars;\n _inheritDefaults(toVars).immediateRender = _isNotFalse(toVars.immediateRender);\n return this.staggerTo(targets, duration, toVars, stagger, position, onCompleteAll, onCompleteAllParams);\n };\n\n _proto2.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._dirty ? this.totalDuration() : this._tDur,\n dur = this._dur,\n tTime = totalTime <= 0 ? 0 : _roundPrecise(totalTime),\n // if a paused timeline is resumed (or its _start is updated for another reason...which rounds it), that could result in the playhead shifting a **tiny** amount and a zero-duration child at that spot may get rendered at a different ratio, like its totalTime in render() may be 1e-17 instead of 0, for example.\n crossingStart = this._zTime < 0 !== totalTime < 0 && (this._initted || !dur),\n time,\n child,\n next,\n iteration,\n cycleDuration,\n prevPaused,\n pauseTween,\n timeScale,\n prevStart,\n prevIteration,\n yoyo,\n isYoyo;\n this !== _globalTimeline && tTime > tDur && totalTime >= 0 && (tTime = tDur);\n\n if (tTime !== this._tTime || force || crossingStart) {\n if (prevTime !== this._time && dur) {\n //if totalDuration() finds a child with a negative startTime and smoothChildTiming is true, things get shifted around internally so we need to adjust the time accordingly. For example, if a tween starts at -30 we must shift EVERYTHING forward 30 seconds and move this timeline's startTime backward by 30 seconds so that things align with the playhead (no jump).\n tTime += this._time - prevTime;\n totalTime += this._time - prevTime;\n }\n\n time = tTime;\n prevStart = this._start;\n timeScale = this._ts;\n prevPaused = !timeScale;\n\n if (crossingStart) {\n dur || (prevTime = this._zTime); //when the playhead arrives at EXACTLY time 0 (right on top) of a zero-duration timeline, we need to discern if events are suppressed so that when the playhead moves again (next time), it'll trigger the callback. If events are NOT suppressed, obviously the callback would be triggered in this render. Basically, the callback should fire either when the playhead ARRIVES or LEAVES this exact spot, not both. Imagine doing a timeline.seek(0) and there's a callback that sits at 0. Since events are suppressed on that seek() by default, nothing will fire, but when the playhead moves off of that position, the callback should fire. This behavior is what people intuitively expect.\n\n (totalTime || !suppressEvents) && (this._zTime = totalTime);\n }\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n yoyo = this._yoyo;\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && totalTime < 0) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === tTime / cycleDuration) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n !prevTime && this._tTime && prevIteration !== iteration && this._tTime - prevIteration * cycleDuration - this._dur <= 0 && (prevIteration = iteration); // edge case - if someone does addPause() at the very beginning of a repeating timeline, that pause is technically at the same spot as the end which causes this._time to get set to 0 when the totalTime would normally place the playhead at the end. See https://gsap.com/forums/topic/23823-closing-nav-animation-not-working-on-ie-and-iphone-6-maybe-other-older-browser/?tab=comments#comment-113005 also, this._tTime - prevIteration * cycleDuration - this._dur <= 0 just checks to make sure it wasn't previously in the \"repeatDelay\" portion\n\n if (yoyo && iteration & 1) {\n time = dur - time;\n isYoyo = 1;\n }\n /*\n make sure children at the end/beginning of the timeline are rendered properly. If, for example,\n a 3-second long timeline rendered at 2.9 seconds previously, and now renders at 3.2 seconds (which\n would get translated to 2.8 seconds if the timeline yoyos or 0.2 seconds if it just repeats), there\n could be a callback or a short tween that's at 2.95 or 3 seconds in which wouldn't render. So\n we need to push the timeline to the end (and/or beginning depending on its yoyo value). Also we must\n ensure that zero-duration tweens at the very beginning or end of the Timeline work.\n */\n\n\n if (iteration !== prevIteration && !this._lock) {\n var rewinding = yoyo && prevIteration & 1,\n doesWrap = rewinding === (yoyo && iteration & 1);\n iteration < prevIteration && (rewinding = !rewinding);\n prevTime = rewinding ? 0 : tTime % dur ? dur : tTime; // if the playhead is landing exactly at the end of an iteration, use that totalTime rather than only the duration, otherwise it'll skip the 2nd render since it's effectively at the same time.\n\n this._lock = 1;\n this.render(prevTime || (isYoyo ? 0 : _roundPrecise(iteration * cycleDuration)), suppressEvents, !dur)._lock = 0;\n this._tTime = tTime; // if a user gets the iteration() inside the onRepeat, for example, it should be accurate.\n\n !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n this.vars.repeatRefresh && !isYoyo && (this.invalidate()._lock = 1);\n\n if (prevTime && prevTime !== this._time || prevPaused !== !this._ts || this.vars.onRepeat && !this.parent && !this._act) {\n // if prevTime is 0 and we render at the very end, _time will be the end, thus won't match. So in this edge case, prevTime won't match _time but that's okay. If it gets killed in the onRepeat, eject as well.\n return this;\n }\n\n dur = this._dur; // in case the duration changed in the onRepeat\n\n tDur = this._tDur;\n\n if (doesWrap) {\n this._lock = 2;\n prevTime = rewinding ? dur : -0.0001;\n this.render(prevTime, true);\n this.vars.repeatRefresh && !isYoyo && this.invalidate();\n }\n\n this._lock = 0;\n\n if (!this._ts && !prevPaused) {\n return this;\n } //in order for yoyoEase to work properly when there's a stagger, we must swap out the ease in each sub-tween.\n\n\n _propagateYoyoEase(this, isYoyo);\n }\n }\n\n if (this._hasPause && !this._forcing && this._lock < 2) {\n pauseTween = _findNextPauseTween(this, _roundPrecise(prevTime), _roundPrecise(time));\n\n if (pauseTween) {\n tTime -= time - (time = pauseTween._start);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n this._act = !timeScale; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n if (!this._initted) {\n this._onUpdate = this.vars.onUpdate;\n this._initted = 1;\n this._zTime = totalTime;\n prevTime = 0; // upon init, the playhead should always go forward; someone could invalidate() a completed timeline and then if they restart(), that would make child tweens render in reverse order which could lock in the wrong starting values if they build on each other, like tl.to(obj, {x: 100}).to(obj, {x: 0}).\n }\n\n if (!prevTime && time && !suppressEvents && !iteration) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n return this;\n }\n }\n\n if (time >= prevTime && totalTime >= 0) {\n child = this._first;\n\n while (child) {\n next = child._next;\n\n if ((child._act || time >= child._start) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (time - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (time - child._start) * child._ts, suppressEvents, force);\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = -_tinyNum); // it didn't finish rendering, so flag zTime as negative so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n } else {\n child = this._last;\n var adjustedTime = totalTime < 0 ? totalTime : time; //when the playhead goes backward beyond the start of this timeline, we must pass that information down to the child animations so that zero-duration tweens know whether to render their starting or ending values.\n\n while (child) {\n next = child._prev;\n\n if ((child._act || adjustedTime <= child._end) && child._ts && pauseTween !== child) {\n if (child.parent !== this) {\n // an extreme edge case - the child's render could do something like kill() the \"next\" one in the linked list, or reparent it. In that case we must re-initiate the whole render to be safe.\n return this.render(totalTime, suppressEvents, force);\n }\n\n child.render(child._ts > 0 ? (adjustedTime - child._start) * child._ts : (child._dirty ? child.totalDuration() : child._tDur) + (adjustedTime - child._start) * child._ts, suppressEvents, force || _reverting && (child._initted || child._startAt)); // if reverting, we should always force renders of initted tweens (but remember that .fromTo() or .from() may have a _startAt but not _initted yet). If, for example, a .fromTo() tween with a stagger (which creates an internal timeline) gets reverted BEFORE some of its child tweens render for the first time, it may not properly trigger them to revert.\n\n if (time !== this._time || !this._ts && !prevPaused) {\n //in case a tween pauses or seeks the timeline when rendering, like inside of an onUpdate/onComplete\n pauseTween = 0;\n next && (tTime += this._zTime = adjustedTime ? -_tinyNum : _tinyNum); // it didn't finish rendering, so adjust zTime so that so that the next time render() is called it'll be forced (to render any remaining children)\n\n break;\n }\n }\n\n child = next;\n }\n }\n\n if (pauseTween && !suppressEvents) {\n this.pause();\n pauseTween.render(time >= prevTime ? 0 : -_tinyNum)._zTime = time >= prevTime ? 1 : -1;\n\n if (this._ts) {\n //the callback resumed playback! So since we may have held back the playhead due to where the pause is positioned, go ahead and jump to where it's SUPPOSED to be (if no pause happened).\n this._start = prevStart; //if the pause was at an earlier time and the user resumed in the callback, it could reposition the timeline (changing its startTime), throwing things off slightly, so we make sure the _start doesn't shift.\n\n _setEnd(this);\n\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._onUpdate && !suppressEvents && _callback(this, \"onUpdate\", true);\n if (tTime === tDur && this._tTime >= this.totalDuration() || !tTime && prevTime) if (prevStart === this._start || Math.abs(timeScale) !== Math.abs(this._ts)) if (!this._lock) {\n // remember, a child's callback may alter this timeline's playhead or timeScale which is why we need to add some of these checks.\n (totalTime || !dur) && (tTime === tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(totalTime < 0 && !prevTime) && (tTime || prevTime || !tDur)) {\n _callback(this, tTime === tDur && totalTime >= 0 ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto2.add = function add(child, position) {\n var _this2 = this;\n\n _isNumber(position) || (position = _parsePosition(this, position, child));\n\n if (!(child instanceof Animation)) {\n if (_isArray(child)) {\n child.forEach(function (obj) {\n return _this2.add(obj, position);\n });\n return this;\n }\n\n if (_isString(child)) {\n return this.addLabel(child, position);\n }\n\n if (_isFunction(child)) {\n child = Tween.delayedCall(0, child);\n } else {\n return this;\n }\n }\n\n return this !== child ? _addToTimeline(this, child, position) : this; //don't allow a timeline to be added to itself as a child!\n };\n\n _proto2.getChildren = function getChildren(nested, tweens, timelines, ignoreBeforeTime) {\n if (nested === void 0) {\n nested = true;\n }\n\n if (tweens === void 0) {\n tweens = true;\n }\n\n if (timelines === void 0) {\n timelines = true;\n }\n\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = -_bigNum;\n }\n\n var a = [],\n child = this._first;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n if (child instanceof Tween) {\n tweens && a.push(child);\n } else {\n timelines && a.push(child);\n nested && a.push.apply(a, child.getChildren(true, tweens, timelines));\n }\n }\n\n child = child._next;\n }\n\n return a;\n };\n\n _proto2.getById = function getById(id) {\n var animations = this.getChildren(1, 1, 1),\n i = animations.length;\n\n while (i--) {\n if (animations[i].vars.id === id) {\n return animations[i];\n }\n }\n };\n\n _proto2.remove = function remove(child) {\n if (_isString(child)) {\n return this.removeLabel(child);\n }\n\n if (_isFunction(child)) {\n return this.killTweensOf(child);\n }\n\n _removeLinkedListItem(this, child);\n\n if (child === this._recent) {\n this._recent = this._last;\n }\n\n return _uncache(this);\n };\n\n _proto2.totalTime = function totalTime(_totalTime2, suppressEvents) {\n if (!arguments.length) {\n return this._tTime;\n }\n\n this._forcing = 1;\n\n if (!this._dp && this._ts) {\n //special case for the global timeline (or any other that has no parent or detached parent).\n this._start = _roundPrecise(_ticker.time - (this._ts > 0 ? _totalTime2 / this._ts : (this.totalDuration() - _totalTime2) / -this._ts));\n }\n\n _Animation.prototype.totalTime.call(this, _totalTime2, suppressEvents);\n\n this._forcing = 0;\n return this;\n };\n\n _proto2.addLabel = function addLabel(label, position) {\n this.labels[label] = _parsePosition(this, position);\n return this;\n };\n\n _proto2.removeLabel = function removeLabel(label) {\n delete this.labels[label];\n return this;\n };\n\n _proto2.addPause = function addPause(position, callback, params) {\n var t = Tween.delayedCall(0, callback || _emptyFunc, params);\n t.data = \"isPause\";\n this._hasPause = 1;\n return _addToTimeline(this, t, _parsePosition(this, position));\n };\n\n _proto2.removePause = function removePause(position) {\n var child = this._first;\n position = _parsePosition(this, position);\n\n while (child) {\n if (child._start === position && child.data === \"isPause\") {\n _removeFromParent(child);\n }\n\n child = child._next;\n }\n };\n\n _proto2.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n var tweens = this.getTweensOf(targets, onlyActive),\n i = tweens.length;\n\n while (i--) {\n _overwritingTween !== tweens[i] && tweens[i].kill(targets, props);\n }\n\n return this;\n };\n\n _proto2.getTweensOf = function getTweensOf(targets, onlyActive) {\n var a = [],\n parsedTargets = toArray(targets),\n child = this._first,\n isGlobalTime = _isNumber(onlyActive),\n // a number is interpreted as a global time. If the animation spans\n children;\n\n while (child) {\n if (child instanceof Tween) {\n if (_arrayContainsAny(child._targets, parsedTargets) && (isGlobalTime ? (!_overwritingTween || child._initted && child._ts) && child.globalTime(0) <= onlyActive && child.globalTime(child.totalDuration()) > onlyActive : !onlyActive || child.isActive())) {\n // note: if this is for overwriting, it should only be for tweens that aren't paused and are initted.\n a.push(child);\n }\n } else if ((children = child.getTweensOf(parsedTargets, onlyActive)).length) {\n a.push.apply(a, children);\n }\n\n child = child._next;\n }\n\n return a;\n } // potential future feature - targets() on timelines\n // targets() {\n // \tlet result = [];\n // \tthis.getChildren(true, true, false).forEach(t => result.push(...t.targets()));\n // \treturn result.filter((v, i) => result.indexOf(v) === i);\n // }\n ;\n\n _proto2.tweenTo = function tweenTo(position, vars) {\n vars = vars || {};\n\n var tl = this,\n endTime = _parsePosition(tl, position),\n _vars = vars,\n startAt = _vars.startAt,\n _onStart = _vars.onStart,\n onStartParams = _vars.onStartParams,\n immediateRender = _vars.immediateRender,\n initted,\n tween = Tween.to(tl, _setDefaults({\n ease: vars.ease || \"none\",\n lazy: false,\n immediateRender: false,\n time: endTime,\n overwrite: \"auto\",\n duration: vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale()) || _tinyNum,\n onStart: function onStart() {\n tl.pause();\n\n if (!initted) {\n var duration = vars.duration || Math.abs((endTime - (startAt && \"time\" in startAt ? startAt.time : tl._time)) / tl.timeScale());\n tween._dur !== duration && _setDuration(tween, duration, 0, 1).render(tween._time, true, true);\n initted = 1;\n }\n\n _onStart && _onStart.apply(tween, onStartParams || []); //in case the user had an onStart in the vars - we don't want to overwrite it.\n }\n }, vars));\n\n return immediateRender ? tween.render(0) : tween;\n };\n\n _proto2.tweenFromTo = function tweenFromTo(fromPosition, toPosition, vars) {\n return this.tweenTo(toPosition, _setDefaults({\n startAt: {\n time: _parsePosition(this, fromPosition)\n }\n }, vars));\n };\n\n _proto2.recent = function recent() {\n return this._recent;\n };\n\n _proto2.nextLabel = function nextLabel(afterTime) {\n if (afterTime === void 0) {\n afterTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, afterTime));\n };\n\n _proto2.previousLabel = function previousLabel(beforeTime) {\n if (beforeTime === void 0) {\n beforeTime = this._time;\n }\n\n return _getLabelInDirection(this, _parsePosition(this, beforeTime), 1);\n };\n\n _proto2.currentLabel = function currentLabel(value) {\n return arguments.length ? this.seek(value, true) : this.previousLabel(this._time + _tinyNum);\n };\n\n _proto2.shiftChildren = function shiftChildren(amount, adjustLabels, ignoreBeforeTime) {\n if (ignoreBeforeTime === void 0) {\n ignoreBeforeTime = 0;\n }\n\n var child = this._first,\n labels = this.labels,\n p;\n\n while (child) {\n if (child._start >= ignoreBeforeTime) {\n child._start += amount;\n child._end += amount;\n }\n\n child = child._next;\n }\n\n if (adjustLabels) {\n for (p in labels) {\n if (labels[p] >= ignoreBeforeTime) {\n labels[p] += amount;\n }\n }\n }\n\n return _uncache(this);\n };\n\n _proto2.invalidate = function invalidate(soft) {\n var child = this._first;\n this._lock = 0;\n\n while (child) {\n child.invalidate(soft);\n child = child._next;\n }\n\n return _Animation.prototype.invalidate.call(this, soft);\n };\n\n _proto2.clear = function clear(includeLabels) {\n if (includeLabels === void 0) {\n includeLabels = true;\n }\n\n var child = this._first,\n next;\n\n while (child) {\n next = child._next;\n this.remove(child);\n child = next;\n }\n\n this._dp && (this._time = this._tTime = this._pTime = 0);\n includeLabels && (this.labels = {});\n return _uncache(this);\n };\n\n _proto2.totalDuration = function totalDuration(value) {\n var max = 0,\n self = this,\n child = self._last,\n prevStart = _bigNum,\n prev,\n start,\n parent;\n\n if (arguments.length) {\n return self.timeScale((self._repeat < 0 ? self.duration() : self.totalDuration()) / (self.reversed() ? -value : value));\n }\n\n if (self._dirty) {\n parent = self.parent;\n\n while (child) {\n prev = child._prev; //record it here in case the tween changes position in the sequence...\n\n child._dirty && child.totalDuration(); //could change the tween._startTime, so make sure the animation's cache is clean before analyzing it.\n\n start = child._start;\n\n if (start > prevStart && self._sort && child._ts && !self._lock) {\n //in case one of the tweens shifted out of order, it needs to be re-inserted into the correct position in the sequence\n self._lock = 1; //prevent endless recursive calls - there are methods that get triggered that check duration/totalDuration when we add().\n\n _addToTimeline(self, child, start - child._delay, 1)._lock = 0;\n } else {\n prevStart = start;\n }\n\n if (start < 0 && child._ts) {\n //children aren't allowed to have negative startTimes unless smoothChildTiming is true, so adjust here if one is found.\n max -= start;\n\n if (!parent && !self._dp || parent && parent.smoothChildTiming) {\n self._start += start / self._ts;\n self._time -= start;\n self._tTime -= start;\n }\n\n self.shiftChildren(-start, false, -1e999);\n prevStart = 0;\n }\n\n child._end > max && child._ts && (max = child._end);\n child = prev;\n }\n\n _setDuration(self, self === _globalTimeline && self._time > max ? self._time : max, 1, 1);\n\n self._dirty = 0;\n }\n\n return self._tDur;\n };\n\n Timeline.updateRoot = function updateRoot(time) {\n if (_globalTimeline._ts) {\n _lazySafeRender(_globalTimeline, _parentToChildTotalTime(time, _globalTimeline));\n\n _lastRenderedFrame = _ticker.frame;\n }\n\n if (_ticker.frame >= _nextGCFrame) {\n _nextGCFrame += _config.autoSleep || 120;\n var child = _globalTimeline._first;\n if (!child || !child._ts) if (_config.autoSleep && _ticker._listeners.length < 2) {\n while (child && !child._ts) {\n child = child._next;\n }\n\n child || _ticker.sleep();\n }\n }\n };\n\n return Timeline;\n}(Animation);\n\n_setDefaults(Timeline.prototype, {\n _lock: 0,\n _hasPause: 0,\n _forcing: 0\n});\n\nvar _addComplexStringPropTween = function _addComplexStringPropTween(target, prop, start, end, setter, stringFilter, funcParam) {\n //note: we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n var pt = new PropTween(this._pt, target, prop, 0, 1, _renderComplexString, null, setter),\n index = 0,\n matchIndex = 0,\n result,\n startNums,\n color,\n endNum,\n chunk,\n startNum,\n hasRandom,\n a;\n pt.b = start;\n pt.e = end;\n start += \"\"; //ensure values are strings\n\n end += \"\";\n\n if (hasRandom = ~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (stringFilter) {\n a = [start, end];\n stringFilter(a, target, prop); //pass an array with the starting and ending values and let the filter do whatever it needs to the values.\n\n start = a[0];\n end = a[1];\n }\n\n startNums = start.match(_complexStringNumExp) || [];\n\n while (result = _complexStringNumExp.exec(end)) {\n endNum = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\") {\n color = 1;\n }\n\n if (endNum !== startNums[matchIndex++]) {\n startNum = parseFloat(startNums[matchIndex - 1]) || 0; //these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum.charAt(1) === \"=\" ? _parseRelative(startNum, endNum) - startNum : parseFloat(endNum) - startNum,\n m: color && color < 4 ? Math.round : 0\n };\n index = _complexStringNumExp.lastIndex;\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n\n pt.fp = funcParam;\n\n if (_relExp.test(end) || hasRandom) {\n pt.e = 0; //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n }\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _addComplexStringPropTween.call(tweenInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _addPropTween = function _addPropTween(target, prop, start, end, index, targets, modifier, stringFilter, funcParam, optional) {\n _isFunction(end) && (end = end(index || 0, target, targets));\n var currentValue = target[prop],\n parsedStart = start !== \"get\" ? start : !_isFunction(currentValue) ? currentValue : funcParam ? target[prop.indexOf(\"set\") || !_isFunction(target[\"get\" + prop.substr(3)]) ? prop : \"get\" + prop.substr(3)](funcParam) : target[prop](),\n setter = !_isFunction(currentValue) ? _setterPlain : funcParam ? _setterFuncWithParam : _setterFunc,\n pt;\n\n if (_isString(end)) {\n if (~end.indexOf(\"random(\")) {\n end = _replaceRandom(end);\n }\n\n if (end.charAt(1) === \"=\") {\n pt = _parseRelative(parsedStart, end) + (getUnit(parsedStart) || 0);\n\n if (pt || pt === 0) {\n // to avoid isNaN, like if someone passes in a value like \"!= whatever\"\n end = pt;\n }\n }\n }\n\n if (!optional || parsedStart !== end || _forceAllPropTweens) {\n if (!isNaN(parsedStart * end) && end !== \"\") {\n // fun fact: any number multiplied by \"\" is evaluated as the number 0!\n pt = new PropTween(this._pt, target, prop, +parsedStart || 0, end - (parsedStart || 0), typeof currentValue === \"boolean\" ? _renderBoolean : _renderPlain, 0, setter);\n funcParam && (pt.fp = funcParam);\n modifier && pt.modifier(modifier, this, target);\n return this._pt = pt;\n }\n\n !currentValue && !(prop in target) && _missingPlugin(prop, end);\n return _addComplexStringPropTween.call(this, target, prop, parsedStart, end, setter, stringFilter || _config.stringFilter, funcParam);\n }\n},\n //creates a copy of the vars object and processes any function-based values (putting the resulting values directly into the copy) as well as strings with \"random()\" in them. It does NOT process relative values.\n_processVars = function _processVars(vars, index, target, targets, tween) {\n _isFunction(vars) && (vars = _parseFuncOrString(vars, tween, index, target, targets));\n\n if (!_isObject(vars) || vars.style && vars.nodeType || _isArray(vars) || _isTypedArray(vars)) {\n return _isString(vars) ? _parseFuncOrString(vars, tween, index, target, targets) : vars;\n }\n\n var copy = {},\n p;\n\n for (p in vars) {\n copy[p] = _parseFuncOrString(vars[p], tween, index, target, targets);\n }\n\n return copy;\n},\n _checkPlugin = function _checkPlugin(property, vars, tween, index, target, targets) {\n var plugin, pt, ptLookup, i;\n\n if (_plugins[property] && (plugin = new _plugins[property]()).init(target, plugin.rawVars ? vars[property] : _processVars(vars[property], index, target, targets, tween), tween, index, targets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, property, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n if (tween !== _quickTween) {\n ptLookup = tween._ptLookup[tween._targets.indexOf(target)]; //note: we can't use tween._ptLookup[index] because for staggered tweens, the index from the fullTargets array won't match what it is in each individual tween that spawns from the stagger.\n\n i = plugin._props.length;\n\n while (i--) {\n ptLookup[plugin._props[i]] = pt;\n }\n }\n }\n\n return plugin;\n},\n _overwritingTween,\n //store a reference temporarily so we can avoid overwriting itself.\n_forceAllPropTweens,\n _initTween = function _initTween(tween, time, tTime) {\n var vars = tween.vars,\n ease = vars.ease,\n startAt = vars.startAt,\n immediateRender = vars.immediateRender,\n lazy = vars.lazy,\n onUpdate = vars.onUpdate,\n runBackwards = vars.runBackwards,\n yoyoEase = vars.yoyoEase,\n keyframes = vars.keyframes,\n autoRevert = vars.autoRevert,\n dur = tween._dur,\n prevStartAt = tween._startAt,\n targets = tween._targets,\n parent = tween.parent,\n fullTargets = parent && parent.data === \"nested\" ? parent.vars.targets : targets,\n autoOverwrite = tween._overwrite === \"auto\" && !_suppressOverwrites,\n tl = tween.timeline,\n cleanVars,\n i,\n p,\n pt,\n target,\n hasPriority,\n gsData,\n harness,\n plugin,\n ptLookup,\n index,\n harnessVars,\n overwritten;\n tl && (!keyframes || !ease) && (ease = \"none\");\n tween._ease = _parseEase(ease, _defaults.ease);\n tween._yEase = yoyoEase ? _invertEase(_parseEase(yoyoEase === true ? ease : yoyoEase, _defaults.ease)) : 0;\n\n if (yoyoEase && tween._yoyo && !tween._repeat) {\n //there must have been a parent timeline with yoyo:true that is currently in its yoyo phase, so flip the eases.\n yoyoEase = tween._yEase;\n tween._yEase = tween._ease;\n tween._ease = yoyoEase;\n }\n\n tween._from = !tl && !!vars.runBackwards; //nested timelines should never run backwards - the backwards-ness is in the child tweens.\n\n if (!tl || keyframes && !vars.stagger) {\n //if there's an internal timeline, skip all the parsing because we passed that task down the chain.\n harness = targets[0] ? _getCache(targets[0]).harness : 0;\n harnessVars = harness && vars[harness.prop]; //someone may need to specify CSS-specific values AND non-CSS values, like if the element has an \"x\" property plus it's a standard DOM element. We allow people to distinguish by wrapping plugin-specific stuff in a css:{} object for example.\n\n cleanVars = _copyExcluding(vars, _reservedProps);\n\n if (prevStartAt) {\n prevStartAt._zTime < 0 && prevStartAt.progress(1); // in case it's a lazy startAt that hasn't rendered yet.\n\n time < 0 && runBackwards && immediateRender && !autoRevert ? prevStartAt.render(-1, true) : prevStartAt.revert(runBackwards && dur ? _revertConfigNoKill : _startAtRevertConfig); // if it's a \"startAt\" (not \"from()\" or runBackwards: true), we only need to do a shallow revert (keep transforms cached in CSSPlugin)\n // don't just _removeFromParent(prevStartAt.render(-1, true)) because that'll leave inline styles. We're creating a new _startAt for \"startAt\" tweens that re-capture things to ensure that if the pre-tween values changed since the tween was created, they're recorded.\n\n prevStartAt._lazy = 0;\n }\n\n if (startAt) {\n _removeFromParent(tween._startAt = Tween.set(targets, _setDefaults({\n data: \"isStart\",\n overwrite: false,\n parent: parent,\n immediateRender: true,\n lazy: !prevStartAt && _isNotFalse(lazy),\n startAt: null,\n delay: 0,\n onUpdate: onUpdate && function () {\n return _callback(tween, \"onUpdate\");\n },\n stagger: 0\n }, startAt))); //copy the properties/values into a new object to avoid collisions, like var to = {x:0}, from = {x:500}; timeline.fromTo(e, from, to).fromTo(e, to, from);\n\n\n tween._startAt._dp = 0; // don't allow it to get put back into root timeline! Like when revert() is called and totalTime() gets set.\n\n tween._startAt._sat = tween; // used in globalTime(). _sat stands for _startAtTween\n\n time < 0 && (_reverting || !immediateRender && !autoRevert) && tween._startAt.revert(_revertConfigNoKill); // rare edge case, like if a render is forced in the negative direction of a non-initted tween.\n\n if (immediateRender) {\n if (dur && time <= 0 && tTime <= 0) {\n // check tTime here because in the case of a yoyo tween whose playhead gets pushed to the end like tween.progress(1), we should allow it through so that the onComplete gets fired properly.\n time && (tween._zTime = time);\n return; //we skip initialization here so that overwriting doesn't occur until the tween actually begins. Otherwise, if you create several immediateRender:true tweens of the same target/properties to drop into a Timeline, the last one created would overwrite the first ones because they didn't get placed into the timeline yet before the first render occurs and kicks in overwriting.\n }\n }\n } else if (runBackwards && dur) {\n //from() tweens must be handled uniquely: their beginning values must be rendered but we don't want overwriting to occur yet (when time is still 0). Wait until the tween actually begins before doing all the routines like overwriting. At that time, we should render at the END of the tween to ensure that things initialize correctly (remember, from() tweens go backwards)\n if (!prevStartAt) {\n time && (immediateRender = false); //in rare cases (like if a from() tween runs and then is invalidate()-ed), immediateRender could be true but the initial forced-render gets skipped, so there's no need to force the render in this context when the _time is greater than 0\n\n p = _setDefaults({\n overwrite: false,\n data: \"isFromStart\",\n //we tag the tween with as \"isFromStart\" so that if [inside a plugin] we need to only do something at the very END of a tween, we have a way of identifying this tween as merely the one that's setting the beginning values for a \"from()\" tween. For example, clearProps in CSSPlugin should only get applied at the very END of a tween and without this tag, from(...{height:100, clearProps:\"height\", delay:1}) would wipe the height at the beginning of the tween and after 1 second, it'd kick back in.\n lazy: immediateRender && !prevStartAt && _isNotFalse(lazy),\n immediateRender: immediateRender,\n //zero-duration tweens render immediately by default, but if we're not specifically instructed to render this tween immediately, we should skip this and merely _init() to record the starting values (rendering them immediately would push them to completion which is wasteful in that case - we'd have to render(-1) immediately after)\n stagger: 0,\n parent: parent //ensures that nested tweens that had a stagger are handled properly, like gsap.from(\".class\", {y: gsap.utils.wrap([-100,100]), stagger: 0.5})\n\n }, cleanVars);\n harnessVars && (p[harness.prop] = harnessVars); // in case someone does something like .from(..., {css:{}})\n\n _removeFromParent(tween._startAt = Tween.set(targets, p));\n\n tween._startAt._dp = 0; // don't allow it to get put back into root timeline!\n\n tween._startAt._sat = tween; // used in globalTime()\n\n time < 0 && (_reverting ? tween._startAt.revert(_revertConfigNoKill) : tween._startAt.render(-1, true));\n tween._zTime = time;\n\n if (!immediateRender) {\n _initTween(tween._startAt, _tinyNum, _tinyNum); //ensures that the initial values are recorded\n\n } else if (!time) {\n return;\n }\n }\n }\n\n tween._pt = tween._ptCache = 0;\n lazy = dur && _isNotFalse(lazy) || lazy && !dur;\n\n for (i = 0; i < targets.length; i++) {\n target = targets[i];\n gsData = target._gsap || _harness(targets)[i]._gsap;\n tween._ptLookup[i] = ptLookup = {};\n _lazyLookup[gsData.id] && _lazyTweens.length && _lazyRender(); //if other tweens of the same target have recently initted but haven't rendered yet, we've got to force the render so that the starting values are correct (imagine populating a timeline with a bunch of sequential tweens and then jumping to the end)\n\n index = fullTargets === targets ? i : fullTargets.indexOf(target);\n\n if (harness && (plugin = new harness()).init(target, harnessVars || cleanVars, tween, index, fullTargets) !== false) {\n tween._pt = pt = new PropTween(tween._pt, target, plugin.name, 0, 1, plugin.render, plugin, 0, plugin.priority);\n\n plugin._props.forEach(function (name) {\n ptLookup[name] = pt;\n });\n\n plugin.priority && (hasPriority = 1);\n }\n\n if (!harness || harnessVars) {\n for (p in cleanVars) {\n if (_plugins[p] && (plugin = _checkPlugin(p, cleanVars, tween, index, target, fullTargets))) {\n plugin.priority && (hasPriority = 1);\n } else {\n ptLookup[p] = pt = _addPropTween.call(tween, target, p, \"get\", cleanVars[p], index, fullTargets, 0, vars.stringFilter);\n }\n }\n }\n\n tween._op && tween._op[i] && tween.kill(target, tween._op[i]);\n\n if (autoOverwrite && tween._pt) {\n _overwritingTween = tween;\n\n _globalTimeline.killTweensOf(target, ptLookup, tween.globalTime(time)); // make sure the overwriting doesn't overwrite THIS tween!!!\n\n\n overwritten = !tween.parent;\n _overwritingTween = 0;\n }\n\n tween._pt && lazy && (_lazyLookup[gsData.id] = 1);\n }\n\n hasPriority && _sortPropTweensByPriority(tween);\n tween._onInit && tween._onInit(tween); //plugins like RoundProps must wait until ALL of the PropTweens are instantiated. In the plugin's init() function, it sets the _onInit on the tween instance. May not be pretty/intuitive, but it's fast and keeps file size down.\n }\n\n tween._onUpdate = onUpdate;\n tween._initted = (!tween._op || tween._pt) && !overwritten; // if overwrittenProps resulted in the entire tween being killed, do NOT flag it as initted or else it may render for one tick.\n\n keyframes && time <= 0 && tl.render(_bigNum, true, true); // if there's a 0% keyframe, it'll render in the \"before\" state for any staggered/delayed animations thus when the following tween initializes, it'll use the \"before\" state instead of the \"after\" state as the initial values.\n},\n _updatePropTweens = function _updatePropTweens(tween, property, value, start, startIsRelative, ratio, time, skipRecursion) {\n var ptCache = (tween._pt && tween._ptCache || (tween._ptCache = {}))[property],\n pt,\n rootPT,\n lookup,\n i;\n\n if (!ptCache) {\n ptCache = tween._ptCache[property] = [];\n lookup = tween._ptLookup;\n i = tween._targets.length;\n\n while (i--) {\n pt = lookup[i][property];\n\n if (pt && pt.d && pt.d._pt) {\n // it's a plugin, so find the nested PropTween\n pt = pt.d._pt;\n\n while (pt && pt.p !== property && pt.fp !== property) {\n // \"fp\" is functionParam for things like setting CSS variables which require .setProperty(\"--var-name\", value)\n pt = pt._next;\n }\n }\n\n if (!pt) {\n // there is no PropTween associated with that property, so we must FORCE one to be created and ditch out of this\n // if the tween has other properties that already rendered at new positions, we'd normally have to rewind to put them back like tween.render(0, true) before forcing an _initTween(), but that can create another edge case like tweening a timeline's progress would trigger onUpdates to fire which could move other things around. It's better to just inform users that .resetTo() should ONLY be used for tweens that already have that property. For example, you can't gsap.to(...{ y: 0 }) and then tween.restTo(\"x\", 200) for example.\n _forceAllPropTweens = 1; // otherwise, when we _addPropTween() and it finds no change between the start and end values, it skips creating a PropTween (for efficiency...why tween when there's no difference?) but in this case we NEED that PropTween created so we can edit it.\n\n tween.vars[property] = \"+=0\";\n\n _initTween(tween, time);\n\n _forceAllPropTweens = 0;\n return skipRecursion ? _warn(property + \" not eligible for reset\") : 1; // if someone tries to do a quickTo() on a special property like borderRadius which must get split into 4 different properties, that's not eligible for .resetTo().\n }\n\n ptCache.push(pt);\n }\n }\n\n i = ptCache.length;\n\n while (i--) {\n rootPT = ptCache[i];\n pt = rootPT._pt || rootPT; // complex values may have nested PropTweens. We only accommodate the FIRST value.\n\n pt.s = (start || start === 0) && !startIsRelative ? start : pt.s + (start || 0) + ratio * pt.c;\n pt.c = value - pt.s;\n rootPT.e && (rootPT.e = _round(value) + getUnit(rootPT.e)); // mainly for CSSPlugin (end value)\n\n rootPT.b && (rootPT.b = pt.s + getUnit(rootPT.b)); // (beginning value)\n }\n},\n _addAliasesToVars = function _addAliasesToVars(targets, vars) {\n var harness = targets[0] ? _getCache(targets[0]).harness : 0,\n propertyAliases = harness && harness.aliases,\n copy,\n p,\n i,\n aliases;\n\n if (!propertyAliases) {\n return vars;\n }\n\n copy = _merge({}, vars);\n\n for (p in propertyAliases) {\n if (p in copy) {\n aliases = propertyAliases[p].split(\",\");\n i = aliases.length;\n\n while (i--) {\n copy[aliases[i]] = copy[p];\n }\n }\n }\n\n return copy;\n},\n // parses multiple formats, like {\"0%\": {x: 100}, {\"50%\": {x: -20}} and { x: {\"0%\": 100, \"50%\": -20} }, and an \"ease\" can be set on any object. We populate an \"allProps\" object with an Array for each property, like {x: [{}, {}], y:[{}, {}]} with data for each property tween. The objects have a \"t\" (time), \"v\", (value), and \"e\" (ease) property. This allows us to piece together a timeline later.\n_parseKeyframe = function _parseKeyframe(prop, obj, allProps, easeEach) {\n var ease = obj.ease || easeEach || \"power1.inOut\",\n p,\n a;\n\n if (_isArray(obj)) {\n a = allProps[prop] || (allProps[prop] = []); // t = time (out of 100), v = value, e = ease\n\n obj.forEach(function (value, i) {\n return a.push({\n t: i / (obj.length - 1) * 100,\n v: value,\n e: ease\n });\n });\n } else {\n for (p in obj) {\n a = allProps[p] || (allProps[p] = []);\n p === \"ease\" || a.push({\n t: parseFloat(prop),\n v: obj[p],\n e: ease\n });\n }\n }\n},\n _parseFuncOrString = function _parseFuncOrString(value, tween, i, target, targets) {\n return _isFunction(value) ? value.call(tween, i, target, targets) : _isString(value) && ~value.indexOf(\"random(\") ? _replaceRandom(value) : value;\n},\n _staggerTweenProps = _callbackNames + \"repeat,repeatDelay,yoyo,repeatRefresh,yoyoEase,autoRevert\",\n _staggerPropsToSkip = {};\n\n_forEachName(_staggerTweenProps + \",id,stagger,delay,duration,paused,scrollTrigger\", function (name) {\n return _staggerPropsToSkip[name] = 1;\n});\n/*\n * --------------------------------------------------------------------------------------\n * TWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nexport var Tween = /*#__PURE__*/function (_Animation2) {\n _inheritsLoose(Tween, _Animation2);\n\n function Tween(targets, vars, position, skipInherit) {\n var _this3;\n\n if (typeof vars === \"number\") {\n position.duration = vars;\n vars = position;\n position = null;\n }\n\n _this3 = _Animation2.call(this, skipInherit ? vars : _inheritDefaults(vars)) || this;\n var _this3$vars = _this3.vars,\n duration = _this3$vars.duration,\n delay = _this3$vars.delay,\n immediateRender = _this3$vars.immediateRender,\n stagger = _this3$vars.stagger,\n overwrite = _this3$vars.overwrite,\n keyframes = _this3$vars.keyframes,\n defaults = _this3$vars.defaults,\n scrollTrigger = _this3$vars.scrollTrigger,\n yoyoEase = _this3$vars.yoyoEase,\n parent = vars.parent || _globalTimeline,\n parsedTargets = (_isArray(targets) || _isTypedArray(targets) ? _isNumber(targets[0]) : \"length\" in vars) ? [targets] : toArray(targets),\n tl,\n i,\n copy,\n l,\n p,\n curTarget,\n staggerFunc,\n staggerVarsToMerge;\n _this3._targets = parsedTargets.length ? _harness(parsedTargets) : _warn(\"GSAP target \" + targets + \" not found. https://gsap.com\", !_config.nullTargetWarn) || [];\n _this3._ptLookup = []; //PropTween lookup. An array containing an object for each target, having keys for each tweening property\n\n _this3._overwrite = overwrite;\n\n if (keyframes || stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n vars = _this3.vars;\n tl = _this3.timeline = new Timeline({\n data: \"nested\",\n defaults: defaults || {},\n targets: parent && parent.data === \"nested\" ? parent.vars.targets : parsedTargets\n }); // we need to store the targets because for staggers and keyframes, we end up creating an individual tween for each but function-based values need to know the index and the whole Array of targets.\n\n tl.kill();\n tl.parent = tl._dp = _assertThisInitialized(_this3);\n tl._start = 0;\n\n if (stagger || _isFuncOrString(duration) || _isFuncOrString(delay)) {\n l = parsedTargets.length;\n staggerFunc = stagger && distribute(stagger);\n\n if (_isObject(stagger)) {\n //users can pass in callbacks like onStart/onComplete in the stagger object. These should fire with each individual tween.\n for (p in stagger) {\n if (~_staggerTweenProps.indexOf(p)) {\n staggerVarsToMerge || (staggerVarsToMerge = {});\n staggerVarsToMerge[p] = stagger[p];\n }\n }\n }\n\n for (i = 0; i < l; i++) {\n copy = _copyExcluding(vars, _staggerPropsToSkip);\n copy.stagger = 0;\n yoyoEase && (copy.yoyoEase = yoyoEase);\n staggerVarsToMerge && _merge(copy, staggerVarsToMerge);\n curTarget = parsedTargets[i]; //don't just copy duration or delay because if they're a string or function, we'd end up in an infinite loop because _isFuncOrString() would evaluate as true in the child tweens, entering this loop, etc. So we parse the value straight from vars and default to 0.\n\n copy.duration = +_parseFuncOrString(duration, _assertThisInitialized(_this3), i, curTarget, parsedTargets);\n copy.delay = (+_parseFuncOrString(delay, _assertThisInitialized(_this3), i, curTarget, parsedTargets) || 0) - _this3._delay;\n\n if (!stagger && l === 1 && copy.delay) {\n // if someone does delay:\"random(1, 5)\", repeat:-1, for example, the delay shouldn't be inside the repeat.\n _this3._delay = delay = copy.delay;\n _this3._start += delay;\n copy.delay = 0;\n }\n\n tl.to(curTarget, copy, staggerFunc ? staggerFunc(i, curTarget, parsedTargets) : 0);\n tl._ease = _easeMap.none;\n }\n\n tl.duration() ? duration = delay = 0 : _this3.timeline = 0; // if the timeline's duration is 0, we don't need a timeline internally!\n } else if (keyframes) {\n _inheritDefaults(_setDefaults(tl.vars.defaults, {\n ease: \"none\"\n }));\n\n tl._ease = _parseEase(keyframes.ease || vars.ease || \"none\");\n var time = 0,\n a,\n kf,\n v;\n\n if (_isArray(keyframes)) {\n keyframes.forEach(function (frame) {\n return tl.to(parsedTargets, frame, \">\");\n });\n tl.duration(); // to ensure tl._dur is cached because we tap into it for performance purposes in the render() method.\n } else {\n copy = {};\n\n for (p in keyframes) {\n p === \"ease\" || p === \"easeEach\" || _parseKeyframe(p, keyframes[p], copy, keyframes.easeEach);\n }\n\n for (p in copy) {\n a = copy[p].sort(function (a, b) {\n return a.t - b.t;\n });\n time = 0;\n\n for (i = 0; i < a.length; i++) {\n kf = a[i];\n v = {\n ease: kf.e,\n duration: (kf.t - (i ? a[i - 1].t : 0)) / 100 * duration\n };\n v[p] = kf.v;\n tl.to(parsedTargets, v, time);\n time += v.duration;\n }\n }\n\n tl.duration() < duration && tl.to({}, {\n duration: duration - tl.duration()\n }); // in case keyframes didn't go to 100%\n }\n }\n\n duration || _this3.duration(duration = tl.duration());\n } else {\n _this3.timeline = 0; //speed optimization, faster lookups (no going up the prototype chain)\n }\n\n if (overwrite === true && !_suppressOverwrites) {\n _overwritingTween = _assertThisInitialized(_this3);\n\n _globalTimeline.killTweensOf(parsedTargets);\n\n _overwritingTween = 0;\n }\n\n _addToTimeline(parent, _assertThisInitialized(_this3), position);\n\n vars.reversed && _this3.reverse();\n vars.paused && _this3.paused(true);\n\n if (immediateRender || !duration && !keyframes && _this3._start === _roundPrecise(parent._time) && _isNotFalse(immediateRender) && _hasNoPausedAncestors(_assertThisInitialized(_this3)) && parent.data !== \"nested\") {\n _this3._tTime = -_tinyNum; //forces a render without having to set the render() \"force\" parameter to true because we want to allow lazying by default (using the \"force\" parameter always forces an immediate full render)\n\n _this3.render(Math.max(0, -delay) || 0); //in case delay is negative\n\n }\n\n scrollTrigger && _scrollTrigger(_assertThisInitialized(_this3), scrollTrigger);\n return _this3;\n }\n\n var _proto3 = Tween.prototype;\n\n _proto3.render = function render(totalTime, suppressEvents, force) {\n var prevTime = this._time,\n tDur = this._tDur,\n dur = this._dur,\n isNegative = totalTime < 0,\n tTime = totalTime > tDur - _tinyNum && !isNegative ? tDur : totalTime < _tinyNum ? 0 : totalTime,\n time,\n pt,\n iteration,\n cycleDuration,\n prevIteration,\n isYoyo,\n ratio,\n timeline,\n yoyoEase;\n\n if (!dur) {\n _renderZeroDurationTween(this, totalTime, suppressEvents, force);\n } else if (tTime !== this._tTime || !totalTime || force || !this._initted && this._tTime || this._startAt && this._zTime < 0 !== isNegative) {\n //this senses if we're crossing over the start time, in which case we must record _zTime and force the render, but we do it in this lengthy conditional way for performance reasons (usually we can skip the calculations): this._initted && (this._zTime < 0) !== (totalTime < 0)\n time = tTime;\n timeline = this.timeline;\n\n if (this._repeat) {\n //adjust the time for repeats and yoyos\n cycleDuration = dur + this._rDelay;\n\n if (this._repeat < -1 && isNegative) {\n return this.totalTime(cycleDuration * 100 + totalTime, suppressEvents, force);\n }\n\n time = _roundPrecise(tTime % cycleDuration); //round to avoid floating point errors. (4 % 0.8 should be 0 but some browsers report it as 0.79999999!)\n\n if (tTime === tDur) {\n // the tDur === tTime is for edge cases where there's a lengthy decimal on the duration and it may reach the very end but the time is rendered as not-quite-there (remember, tDur is rounded to 4 decimals whereas dur isn't)\n iteration = this._repeat;\n time = dur;\n } else {\n iteration = ~~(tTime / cycleDuration);\n\n if (iteration && iteration === _roundPrecise(tTime / cycleDuration)) {\n time = dur;\n iteration--;\n }\n\n time > dur && (time = dur);\n }\n\n isYoyo = this._yoyo && iteration & 1;\n\n if (isYoyo) {\n yoyoEase = this._yEase;\n time = dur - time;\n }\n\n prevIteration = _animationCycle(this._tTime, cycleDuration);\n\n if (time === prevTime && !force && this._initted && iteration === prevIteration) {\n //could be during the repeatDelay part. No need to render and fire callbacks.\n this._tTime = tTime;\n return this;\n }\n\n if (iteration !== prevIteration) {\n timeline && this._yEase && _propagateYoyoEase(timeline, isYoyo); //repeatRefresh functionality\n\n if (this.vars.repeatRefresh && !isYoyo && !this._lock && this._time !== cycleDuration && this._initted) {\n // this._time will === cycleDuration when we render at EXACTLY the end of an iteration. Without this condition, it'd often do the repeatRefresh render TWICE (again on the very next tick).\n this._lock = force = 1; //force, otherwise if lazy is true, the _attemptInitTween() will return and we'll jump out and get caught bouncing on each tick.\n\n this.render(_roundPrecise(cycleDuration * iteration), true).invalidate()._lock = 0;\n }\n }\n }\n\n if (!this._initted) {\n if (_attemptInitTween(this, isNegative ? totalTime : time, force, suppressEvents, tTime)) {\n this._tTime = 0; // in constructor if immediateRender is true, we set _tTime to -_tinyNum to have the playhead cross the starting point but we can't leave _tTime as a negative number.\n\n return this;\n }\n\n if (prevTime !== this._time && !(force && this.vars.repeatRefresh && iteration !== prevIteration)) {\n // rare edge case - during initialization, an onUpdate in the _startAt (.fromTo()) might force this tween to render at a different spot in which case we should ditch this render() call so that it doesn't revert the values. But we also don't want to dump if we're doing a repeatRefresh render!\n return this;\n }\n\n if (dur !== this._dur) {\n // while initting, a plugin like InertiaPlugin might alter the duration, so rerun from the start to ensure everything renders as it should.\n return this.render(totalTime, suppressEvents, force);\n }\n }\n\n this._tTime = tTime;\n this._time = time;\n\n if (!this._act && this._ts) {\n this._act = 1; //as long as it's not paused, force it to be active so that if the user renders independent of the parent timeline, it'll be forced to re-render on the next tick.\n\n this._lazy = 0;\n }\n\n this.ratio = ratio = (yoyoEase || this._ease)(time / dur);\n\n if (this._from) {\n this.ratio = ratio = 1 - ratio;\n }\n\n if (time && !prevTime && !suppressEvents && !iteration) {\n _callback(this, \"onStart\");\n\n if (this._tTime !== tTime) {\n // in case the onStart triggered a render at a different spot, eject. Like if someone did animation.pause(0.5) or something inside the onStart.\n return this;\n }\n }\n\n pt = this._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n\n timeline && timeline.render(totalTime < 0 ? totalTime : timeline._dur * timeline._ease(time / this._dur), suppressEvents, force) || this._startAt && (this._zTime = totalTime);\n\n if (this._onUpdate && !suppressEvents) {\n isNegative && _rewindStartAt(this, totalTime, suppressEvents, force); //note: for performance reasons, we tuck this conditional logic inside less traveled areas (most tweens don't have an onUpdate). We'd just have it at the end before the onComplete, but the values should be updated before any onUpdate is called, so we ALSO put it here and then if it's not called, we do so later near the onComplete.\n\n _callback(this, \"onUpdate\");\n }\n\n this._repeat && iteration !== prevIteration && this.vars.onRepeat && !suppressEvents && this.parent && _callback(this, \"onRepeat\");\n\n if ((tTime === this._tDur || !tTime) && this._tTime === tTime) {\n isNegative && !this._onUpdate && _rewindStartAt(this, totalTime, true, true);\n (totalTime || !dur) && (tTime === this._tDur && this._ts > 0 || !tTime && this._ts < 0) && _removeFromParent(this, 1); // don't remove if we're rendering at exactly a time of 0, as there could be autoRevert values that should get set on the next tick (if the playhead goes backward beyond the startTime, negative totalTime). Don't remove if the timeline is reversed and the playhead isn't at 0, otherwise tl.progress(1).reverse() won't work. Only remove if the playhead is at the end and timeScale is positive, or if the playhead is at 0 and the timeScale is negative.\n\n if (!suppressEvents && !(isNegative && !prevTime) && (tTime || prevTime || isYoyo)) {\n // if prevTime and tTime are zero, we shouldn't fire the onReverseComplete. This could happen if you gsap.to(... {paused:true}).play();\n _callback(this, tTime === tDur ? \"onComplete\" : \"onReverseComplete\", true);\n\n this._prom && !(tTime < tDur && this.timeScale() > 0) && this._prom();\n }\n }\n }\n\n return this;\n };\n\n _proto3.targets = function targets() {\n return this._targets;\n };\n\n _proto3.invalidate = function invalidate(soft) {\n // \"soft\" gives us a way to clear out everything EXCEPT the recorded pre-\"from\" portion of from() tweens. Otherwise, for example, if you tween.progress(1).render(0, true true).invalidate(), the \"from\" values would persist and then on the next render, the from() tweens would initialize and the current value would match the \"from\" values, thus animate from the same value to the same value (no animation). We tap into this in ScrollTrigger's refresh() where we must push a tween to completion and then back again but honor its init state in case the tween is dependent on another tween further up on the page.\n (!soft || !this.vars.runBackwards) && (this._startAt = 0);\n this._pt = this._op = this._onUpdate = this._lazy = this.ratio = 0;\n this._ptLookup = [];\n this.timeline && this.timeline.invalidate(soft);\n return _Animation2.prototype.invalidate.call(this, soft);\n };\n\n _proto3.resetTo = function resetTo(property, value, start, startIsRelative, skipRecursion) {\n _tickerActive || _ticker.wake();\n this._ts || this.play();\n var time = Math.min(this._dur, (this._dp._time - this._start) * this._ts),\n ratio;\n this._initted || _initTween(this, time);\n ratio = this._ease(time / this._dur); // don't just get tween.ratio because it may not have rendered yet.\n // possible future addition to allow an object with multiple values to update, like tween.resetTo({x: 100, y: 200}); At this point, it doesn't seem worth the added kb given the fact that most users will likely opt for the convenient gsap.quickTo() way of interacting with this method.\n // if (_isObject(property)) { // performance optimization\n // \tfor (p in property) {\n // \t\tif (_updatePropTweens(this, p, property[p], value ? value[p] : null, start, ratio, time)) {\n // \t\t\treturn this.resetTo(property, value, start, startIsRelative); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n // \t\t}\n // \t}\n // } else {\n\n if (_updatePropTweens(this, property, value, start, startIsRelative, ratio, time, skipRecursion)) {\n return this.resetTo(property, value, start, startIsRelative, 1); // if a PropTween wasn't found for the property, it'll get forced with a re-initialization so we need to jump out and start over again.\n } //}\n\n\n _alignPlayhead(this, 0);\n\n this.parent || _addLinkedListItem(this._dp, this, \"_first\", \"_last\", this._dp._sort ? \"_start\" : 0);\n return this.render(0);\n };\n\n _proto3.kill = function kill(targets, vars) {\n if (vars === void 0) {\n vars = \"all\";\n }\n\n if (!targets && (!vars || vars === \"all\")) {\n this._lazy = this._pt = 0;\n return this.parent ? _interrupt(this) : this;\n }\n\n if (this.timeline) {\n var tDur = this.timeline.totalDuration();\n this.timeline.killTweensOf(targets, vars, _overwritingTween && _overwritingTween.vars.overwrite !== true)._first || _interrupt(this); // if nothing is left tweening, interrupt.\n\n this.parent && tDur !== this.timeline.totalDuration() && _setDuration(this, this._dur * this.timeline._tDur / tDur, 0, 1); // if a nested tween is killed that changes the duration, it should affect this tween's duration. We must use the ratio, though, because sometimes the internal timeline is stretched like for keyframes where they don't all add up to whatever the parent tween's duration was set to.\n\n return this;\n }\n\n var parsedTargets = this._targets,\n killingTargets = targets ? toArray(targets) : parsedTargets,\n propTweenLookup = this._ptLookup,\n firstPT = this._pt,\n overwrittenProps,\n curLookup,\n curOverwriteProps,\n props,\n p,\n pt,\n i;\n\n if ((!vars || vars === \"all\") && _arraysMatch(parsedTargets, killingTargets)) {\n vars === \"all\" && (this._pt = 0);\n return _interrupt(this);\n }\n\n overwrittenProps = this._op = this._op || [];\n\n if (vars !== \"all\") {\n //so people can pass in a comma-delimited list of property names\n if (_isString(vars)) {\n p = {};\n\n _forEachName(vars, function (name) {\n return p[name] = 1;\n });\n\n vars = p;\n }\n\n vars = _addAliasesToVars(parsedTargets, vars);\n }\n\n i = parsedTargets.length;\n\n while (i--) {\n if (~killingTargets.indexOf(parsedTargets[i])) {\n curLookup = propTweenLookup[i];\n\n if (vars === \"all\") {\n overwrittenProps[i] = vars;\n props = curLookup;\n curOverwriteProps = {};\n } else {\n curOverwriteProps = overwrittenProps[i] = overwrittenProps[i] || {};\n props = vars;\n }\n\n for (p in props) {\n pt = curLookup && curLookup[p];\n\n if (pt) {\n if (!(\"kill\" in pt.d) || pt.d.kill(p) === true) {\n _removeLinkedListItem(this, pt, \"_pt\");\n }\n\n delete curLookup[p];\n }\n\n if (curOverwriteProps !== \"all\") {\n curOverwriteProps[p] = 1;\n }\n }\n }\n }\n\n this._initted && !this._pt && firstPT && _interrupt(this); //if all tweening properties are killed, kill the tween. Without this line, if there's a tween with multiple targets and then you killTweensOf() each target individually, the tween would technically still remain active and fire its onComplete even though there aren't any more properties tweening.\n\n return this;\n };\n\n Tween.to = function to(targets, vars) {\n return new Tween(targets, vars, arguments[2]);\n };\n\n Tween.from = function from(targets, vars) {\n return _createTweenType(1, arguments);\n };\n\n Tween.delayedCall = function delayedCall(delay, callback, params, scope) {\n return new Tween(callback, 0, {\n immediateRender: false,\n lazy: false,\n overwrite: false,\n delay: delay,\n onComplete: callback,\n onReverseComplete: callback,\n onCompleteParams: params,\n onReverseCompleteParams: params,\n callbackScope: scope\n }); // we must use onReverseComplete too for things like timeline.add(() => {...}) which should be triggered in BOTH directions (forward and reverse)\n };\n\n Tween.fromTo = function fromTo(targets, fromVars, toVars) {\n return _createTweenType(2, arguments);\n };\n\n Tween.set = function set(targets, vars) {\n vars.duration = 0;\n vars.repeatDelay || (vars.repeat = 0);\n return new Tween(targets, vars);\n };\n\n Tween.killTweensOf = function killTweensOf(targets, props, onlyActive) {\n return _globalTimeline.killTweensOf(targets, props, onlyActive);\n };\n\n return Tween;\n}(Animation);\n\n_setDefaults(Tween.prototype, {\n _targets: [],\n _lazy: 0,\n _startAt: 0,\n _op: 0,\n _onInit: 0\n}); //add the pertinent timeline methods to Tween instances so that users can chain conveniently and create a timeline automatically. (removed due to concerns that it'd ultimately add to more confusion especially for beginners)\n// _forEachName(\"to,from,fromTo,set,call,add,addLabel,addPause\", name => {\n// \tTween.prototype[name] = function() {\n// \t\tlet tl = new Timeline();\n// \t\treturn _addToTimeline(tl, this)[name].apply(tl, toArray(arguments));\n// \t}\n// });\n//for backward compatibility. Leverage the timeline calls.\n\n\n_forEachName(\"staggerTo,staggerFrom,staggerFromTo\", function (name) {\n Tween[name] = function () {\n var tl = new Timeline(),\n params = _slice.call(arguments, 0);\n\n params.splice(name === \"staggerFromTo\" ? 5 : 4, 0, 0);\n return tl[name].apply(tl, params);\n };\n});\n/*\n * --------------------------------------------------------------------------------------\n * PROPTWEEN\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _setterPlain = function _setterPlain(target, property, value) {\n return target[property] = value;\n},\n _setterFunc = function _setterFunc(target, property, value) {\n return target[property](value);\n},\n _setterFuncWithParam = function _setterFuncWithParam(target, property, value, data) {\n return target[property](data.fp, value);\n},\n _setterAttribute = function _setterAttribute(target, property, value) {\n return target.setAttribute(property, value);\n},\n _getSetter = function _getSetter(target, property) {\n return _isFunction(target[property]) ? _setterFunc : _isUndefined(target[property]) && target.setAttribute ? _setterAttribute : _setterPlain;\n},\n _renderPlain = function _renderPlain(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 1000000) / 1000000, data);\n},\n _renderBoolean = function _renderBoolean(ratio, data) {\n return data.set(data.t, data.p, !!(data.s + data.c * ratio), data);\n},\n _renderComplexString = function _renderComplexString(ratio, data) {\n var pt = data._pt,\n s = \"\";\n\n if (!ratio && data.b) {\n //b = beginning string\n s = data.b;\n } else if (ratio === 1 && data.e) {\n //e = ending string\n s = data.e;\n } else {\n while (pt) {\n s = pt.p + (pt.m ? pt.m(pt.s + pt.c * ratio) : Math.round((pt.s + pt.c * ratio) * 10000) / 10000) + s; //we use the \"p\" property for the text inbetween (like a suffix). And in the context of a complex string, the modifier (m) is typically just Math.round(), like for RGB colors.\n\n pt = pt._next;\n }\n\n s += data.c; //we use the \"c\" of the PropTween to store the final chunk of non-numeric text.\n }\n\n data.set(data.t, data.p, s, data);\n},\n _renderPropTweens = function _renderPropTweens(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n},\n _addPluginModifier = function _addPluginModifier(modifier, tween, target, property) {\n var pt = this._pt,\n next;\n\n while (pt) {\n next = pt._next;\n pt.p === property && pt.modifier(modifier, tween, target);\n pt = next;\n }\n},\n _killPropTweensOf = function _killPropTweensOf(property) {\n var pt = this._pt,\n hasNonDependentRemaining,\n next;\n\n while (pt) {\n next = pt._next;\n\n if (pt.p === property && !pt.op || pt.op === property) {\n _removeLinkedListItem(this, pt, \"_pt\");\n } else if (!pt.dep) {\n hasNonDependentRemaining = 1;\n }\n\n pt = next;\n }\n\n return !hasNonDependentRemaining;\n},\n _setterWithModifier = function _setterWithModifier(target, property, value, data) {\n data.mSet(target, property, data.m.call(data.tween, value, data.mt), data);\n},\n _sortPropTweensByPriority = function _sortPropTweensByPriority(parent) {\n var pt = parent._pt,\n next,\n pt2,\n first,\n last; //sorts the PropTween linked list in order of priority because some plugins need to do their work after ALL of the PropTweens were created (like RoundPropsPlugin and ModifiersPlugin)\n\n while (pt) {\n next = pt._next;\n pt2 = first;\n\n while (pt2 && pt2.pr > pt.pr) {\n pt2 = pt2._next;\n }\n\n if (pt._prev = pt2 ? pt2._prev : last) {\n pt._prev._next = pt;\n } else {\n first = pt;\n }\n\n if (pt._next = pt2) {\n pt2._prev = pt;\n } else {\n last = pt;\n }\n\n pt = next;\n }\n\n parent._pt = first;\n}; //PropTween key: t = target, p = prop, r = renderer, d = data, s = start, c = change, op = overwriteProperty (ONLY populated when it's different than p), pr = priority, _next/_prev for the linked list siblings, set = setter, m = modifier, mSet = modifierSetter (the original setter, before a modifier was added)\n\n\nexport var PropTween = /*#__PURE__*/function () {\n function PropTween(next, target, prop, start, change, renderer, data, setter, priority) {\n this.t = target;\n this.s = start;\n this.c = change;\n this.p = prop;\n this.r = renderer || _renderPlain;\n this.d = data || this;\n this.set = setter || _setterPlain;\n this.pr = priority || 0;\n this._next = next;\n\n if (next) {\n next._prev = this;\n }\n }\n\n var _proto4 = PropTween.prototype;\n\n _proto4.modifier = function modifier(func, tween, target) {\n this.mSet = this.mSet || this.set; //in case it was already set (a PropTween can only have one modifier)\n\n this.set = _setterWithModifier;\n this.m = func;\n this.mt = target; //modifier target\n\n this.tween = tween;\n };\n\n return PropTween;\n}(); //Initialization tasks\n\n_forEachName(_callbackNames + \"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger\", function (name) {\n return _reservedProps[name] = 1;\n});\n\n_globals.TweenMax = _globals.TweenLite = Tween;\n_globals.TimelineLite = _globals.TimelineMax = Timeline;\n_globalTimeline = new Timeline({\n sortChildren: false,\n defaults: _defaults,\n autoRemoveChildren: true,\n id: \"root\",\n smoothChildTiming: true\n});\n_config.stringFilter = _colorStringFilter;\n\nvar _media = [],\n _listeners = {},\n _emptyArray = [],\n _lastMediaTime = 0,\n _contextID = 0,\n _dispatch = function _dispatch(type) {\n return (_listeners[type] || _emptyArray).map(function (f) {\n return f();\n });\n},\n _onMediaChange = function _onMediaChange() {\n var time = Date.now(),\n matches = [];\n\n if (time - _lastMediaTime > 2) {\n _dispatch(\"matchMediaInit\");\n\n _media.forEach(function (c) {\n var queries = c.queries,\n conditions = c.conditions,\n match,\n p,\n anyMatch,\n toggled;\n\n for (p in queries) {\n match = _win.matchMedia(queries[p]).matches; // Firefox doesn't update the \"matches\" property of the MediaQueryList object correctly - it only does so as it calls its change handler - so we must re-create a media query here to ensure it's accurate.\n\n match && (anyMatch = 1);\n\n if (match !== conditions[p]) {\n conditions[p] = match;\n toggled = 1;\n }\n }\n\n if (toggled) {\n c.revert();\n anyMatch && matches.push(c);\n }\n });\n\n _dispatch(\"matchMediaRevert\");\n\n matches.forEach(function (c) {\n return c.onMatch(c, function (func) {\n return c.add(null, func);\n });\n });\n _lastMediaTime = time;\n\n _dispatch(\"matchMedia\");\n }\n};\n\nvar Context = /*#__PURE__*/function () {\n function Context(func, scope) {\n this.selector = scope && selector(scope);\n this.data = [];\n this._r = []; // returned/cleanup functions\n\n this.isReverted = false;\n this.id = _contextID++; // to work around issues that frameworks like Vue cause by making things into Proxies which make it impossible to do something like _media.indexOf(this) because \"this\" would no longer refer to the Context instance itself - it'd refer to a Proxy! We needed a way to identify the context uniquely\n\n func && this.add(func);\n }\n\n var _proto5 = Context.prototype;\n\n _proto5.add = function add(name, func, scope) {\n // possible future addition if we need the ability to add() an animation to a context and for whatever reason cannot create that animation inside of a context.add(() => {...}) function.\n // if (name && _isFunction(name.revert)) {\n // \tthis.data.push(name);\n // \treturn (name._ctx = this);\n // }\n if (_isFunction(name)) {\n scope = func;\n func = name;\n name = _isFunction;\n }\n\n var self = this,\n f = function f() {\n var prev = _context,\n prevSelector = self.selector,\n result;\n prev && prev !== self && prev.data.push(self);\n scope && (self.selector = selector(scope));\n _context = self;\n result = func.apply(self, arguments);\n _isFunction(result) && self._r.push(result);\n _context = prev;\n self.selector = prevSelector;\n self.isReverted = false;\n return result;\n };\n\n self.last = f;\n return name === _isFunction ? f(self, function (func) {\n return self.add(null, func);\n }) : name ? self[name] = f : f;\n };\n\n _proto5.ignore = function ignore(func) {\n var prev = _context;\n _context = null;\n func(this);\n _context = prev;\n };\n\n _proto5.getTweens = function getTweens() {\n var a = [];\n this.data.forEach(function (e) {\n return e instanceof Context ? a.push.apply(a, e.getTweens()) : e instanceof Tween && !(e.parent && e.parent.data === \"nested\") && a.push(e);\n });\n return a;\n };\n\n _proto5.clear = function clear() {\n this._r.length = this.data.length = 0;\n };\n\n _proto5.kill = function kill(revert, matchMedia) {\n var _this4 = this;\n\n if (revert) {\n (function () {\n var tweens = _this4.getTweens(),\n i = _this4.data.length,\n t;\n\n while (i--) {\n // Flip plugin tweens are very different in that they should actually be pushed to their end. The plugin replaces the timeline's .revert() method to do exactly that. But we also need to remove any of those nested tweens inside the flip timeline so that they don't get individually reverted.\n t = _this4.data[i];\n\n if (t.data === \"isFlip\") {\n t.revert();\n t.getChildren(true, true, false).forEach(function (tween) {\n return tweens.splice(tweens.indexOf(tween), 1);\n });\n }\n } // save as an object so that we can cache the globalTime for each tween to optimize performance during the sort\n\n\n tweens.map(function (t) {\n return {\n g: t._dur || t._delay || t._sat && !t._sat.vars.immediateRender ? t.globalTime(0) : -Infinity,\n t: t\n };\n }).sort(function (a, b) {\n return b.g - a.g || -Infinity;\n }).forEach(function (o) {\n return o.t.revert(revert);\n }); // note: all of the _startAt tweens should be reverted in reverse order that they were created, and they'll all have the same globalTime (-1) so the \" || -1\" in the sort keeps the order properly.\n\n i = _this4.data.length;\n\n while (i--) {\n // make sure we loop backwards so that, for example, SplitTexts that were created later on the same element get reverted first\n t = _this4.data[i];\n\n if (t instanceof Timeline) {\n if (t.data !== \"nested\") {\n t.scrollTrigger && t.scrollTrigger.revert();\n t.kill(); // don't revert() the timeline because that's duplicating efforts since we already reverted all the tweens\n }\n } else {\n !(t instanceof Tween) && t.revert && t.revert(revert);\n }\n }\n\n _this4._r.forEach(function (f) {\n return f(revert, _this4);\n });\n\n _this4.isReverted = true;\n })();\n } else {\n this.data.forEach(function (e) {\n return e.kill && e.kill();\n });\n }\n\n this.clear();\n\n if (matchMedia) {\n var i = _media.length;\n\n while (i--) {\n // previously, we checked _media.indexOf(this), but some frameworks like Vue enforce Proxy objects that make it impossible to get the proper result that way, so we must use a unique ID number instead.\n _media[i].id === this.id && _media.splice(i, 1);\n }\n }\n };\n\n _proto5.revert = function revert(config) {\n this.kill(config || {});\n };\n\n return Context;\n}();\n\nvar MatchMedia = /*#__PURE__*/function () {\n function MatchMedia(scope) {\n this.contexts = [];\n this.scope = scope;\n _context && _context.data.push(this);\n }\n\n var _proto6 = MatchMedia.prototype;\n\n _proto6.add = function add(conditions, func, scope) {\n _isObject(conditions) || (conditions = {\n matches: conditions\n });\n var context = new Context(0, scope || this.scope),\n cond = context.conditions = {},\n mq,\n p,\n active;\n _context && !context.selector && (context.selector = _context.selector); // in case a context is created inside a context. Like a gsap.matchMedia() that's inside a scoped gsap.context()\n\n this.contexts.push(context);\n func = context.add(\"onMatch\", func);\n context.queries = conditions;\n\n for (p in conditions) {\n if (p === \"all\") {\n active = 1;\n } else {\n mq = _win.matchMedia(conditions[p]);\n\n if (mq) {\n _media.indexOf(context) < 0 && _media.push(context);\n (cond[p] = mq.matches) && (active = 1);\n mq.addListener ? mq.addListener(_onMediaChange) : mq.addEventListener(\"change\", _onMediaChange);\n }\n }\n }\n\n active && func(context, function (f) {\n return context.add(null, f);\n });\n return this;\n } // refresh() {\n // \tlet time = _lastMediaTime,\n // \t\tmedia = _media;\n // \t_lastMediaTime = -1;\n // \t_media = this.contexts;\n // \t_onMediaChange();\n // \t_lastMediaTime = time;\n // \t_media = media;\n // }\n ;\n\n _proto6.revert = function revert(config) {\n this.kill(config || {});\n };\n\n _proto6.kill = function kill(revert) {\n this.contexts.forEach(function (c) {\n return c.kill(revert, true);\n });\n };\n\n return MatchMedia;\n}();\n/*\n * --------------------------------------------------------------------------------------\n * GSAP\n * --------------------------------------------------------------------------------------\n */\n\n\nvar _gsap = {\n registerPlugin: function registerPlugin() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n args.forEach(function (config) {\n return _createPlugin(config);\n });\n },\n timeline: function timeline(vars) {\n return new Timeline(vars);\n },\n getTweensOf: function getTweensOf(targets, onlyActive) {\n return _globalTimeline.getTweensOf(targets, onlyActive);\n },\n getProperty: function getProperty(target, property, unit, uncache) {\n _isString(target) && (target = toArray(target)[0]); //in case selector text or an array is passed in\n\n var getter = _getCache(target || {}).get,\n format = unit ? _passThrough : _numericIfPossible;\n\n unit === \"native\" && (unit = \"\");\n return !target ? target : !property ? function (property, unit, uncache) {\n return format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n } : format((_plugins[property] && _plugins[property].get || getter)(target, property, unit, uncache));\n },\n quickSetter: function quickSetter(target, property, unit) {\n target = toArray(target);\n\n if (target.length > 1) {\n var setters = target.map(function (t) {\n return gsap.quickSetter(t, property, unit);\n }),\n l = setters.length;\n return function (value) {\n var i = l;\n\n while (i--) {\n setters[i](value);\n }\n };\n }\n\n target = target[0] || {};\n\n var Plugin = _plugins[property],\n cache = _getCache(target),\n p = cache.harness && (cache.harness.aliases || {})[property] || property,\n // in case it's an alias, like \"rotate\" for \"rotation\".\n setter = Plugin ? function (value) {\n var p = new Plugin();\n _quickTween._pt = 0;\n p.init(target, unit ? value + unit : value, _quickTween, 0, [target]);\n p.render(1, p);\n _quickTween._pt && _renderPropTweens(1, _quickTween);\n } : cache.set(target, p);\n\n return Plugin ? setter : function (value) {\n return setter(target, p, unit ? value + unit : value, cache, 1);\n };\n },\n quickTo: function quickTo(target, property, vars) {\n var _merge2;\n\n var tween = gsap.to(target, _merge((_merge2 = {}, _merge2[property] = \"+=0.1\", _merge2.paused = true, _merge2), vars || {})),\n func = function func(value, start, startIsRelative) {\n return tween.resetTo(property, value, start, startIsRelative);\n };\n\n func.tween = tween;\n return func;\n },\n isTweening: function isTweening(targets) {\n return _globalTimeline.getTweensOf(targets, true).length > 0;\n },\n defaults: function defaults(value) {\n value && value.ease && (value.ease = _parseEase(value.ease, _defaults.ease));\n return _mergeDeep(_defaults, value || {});\n },\n config: function config(value) {\n return _mergeDeep(_config, value || {});\n },\n registerEffect: function registerEffect(_ref3) {\n var name = _ref3.name,\n effect = _ref3.effect,\n plugins = _ref3.plugins,\n defaults = _ref3.defaults,\n extendTimeline = _ref3.extendTimeline;\n (plugins || \"\").split(\",\").forEach(function (pluginName) {\n return pluginName && !_plugins[pluginName] && !_globals[pluginName] && _warn(name + \" effect requires \" + pluginName + \" plugin.\");\n });\n\n _effects[name] = function (targets, vars, tl) {\n return effect(toArray(targets), _setDefaults(vars || {}, defaults), tl);\n };\n\n if (extendTimeline) {\n Timeline.prototype[name] = function (targets, vars, position) {\n return this.add(_effects[name](targets, _isObject(vars) ? vars : (position = vars) && {}, this), position);\n };\n }\n },\n registerEase: function registerEase(name, ease) {\n _easeMap[name] = _parseEase(ease);\n },\n parseEase: function parseEase(ease, defaultEase) {\n return arguments.length ? _parseEase(ease, defaultEase) : _easeMap;\n },\n getById: function getById(id) {\n return _globalTimeline.getById(id);\n },\n exportRoot: function exportRoot(vars, includeDelayedCalls) {\n if (vars === void 0) {\n vars = {};\n }\n\n var tl = new Timeline(vars),\n child,\n next;\n tl.smoothChildTiming = _isNotFalse(vars.smoothChildTiming);\n\n _globalTimeline.remove(tl);\n\n tl._dp = 0; //otherwise it'll get re-activated when adding children and be re-introduced into _globalTimeline's linked list (then added to itself).\n\n tl._time = tl._tTime = _globalTimeline._time;\n child = _globalTimeline._first;\n\n while (child) {\n next = child._next;\n\n if (includeDelayedCalls || !(!child._dur && child instanceof Tween && child.vars.onComplete === child._targets[0])) {\n _addToTimeline(tl, child, child._start - child._delay);\n }\n\n child = next;\n }\n\n _addToTimeline(_globalTimeline, tl, 0);\n\n return tl;\n },\n context: function context(func, scope) {\n return func ? new Context(func, scope) : _context;\n },\n matchMedia: function matchMedia(scope) {\n return new MatchMedia(scope);\n },\n matchMediaRefresh: function matchMediaRefresh() {\n return _media.forEach(function (c) {\n var cond = c.conditions,\n found,\n p;\n\n for (p in cond) {\n if (cond[p]) {\n cond[p] = false;\n found = 1;\n }\n }\n\n found && c.revert();\n }) || _onMediaChange();\n },\n addEventListener: function addEventListener(type, callback) {\n var a = _listeners[type] || (_listeners[type] = []);\n ~a.indexOf(callback) || a.push(callback);\n },\n removeEventListener: function removeEventListener(type, callback) {\n var a = _listeners[type],\n i = a && a.indexOf(callback);\n i >= 0 && a.splice(i, 1);\n },\n utils: {\n wrap: wrap,\n wrapYoyo: wrapYoyo,\n distribute: distribute,\n random: random,\n snap: snap,\n normalize: normalize,\n getUnit: getUnit,\n clamp: clamp,\n splitColor: splitColor,\n toArray: toArray,\n selector: selector,\n mapRange: mapRange,\n pipe: pipe,\n unitize: unitize,\n interpolate: interpolate,\n shuffle: shuffle\n },\n install: _install,\n effects: _effects,\n ticker: _ticker,\n updateRoot: Timeline.updateRoot,\n plugins: _plugins,\n globalTimeline: _globalTimeline,\n core: {\n PropTween: PropTween,\n globals: _addGlobal,\n Tween: Tween,\n Timeline: Timeline,\n Animation: Animation,\n getCache: _getCache,\n _removeLinkedListItem: _removeLinkedListItem,\n reverting: function reverting() {\n return _reverting;\n },\n context: function context(toAdd) {\n if (toAdd && _context) {\n _context.data.push(toAdd);\n\n toAdd._ctx = _context;\n }\n\n return _context;\n },\n suppressOverwrites: function suppressOverwrites(value) {\n return _suppressOverwrites = value;\n }\n }\n};\n\n_forEachName(\"to,from,fromTo,delayedCall,set,killTweensOf\", function (name) {\n return _gsap[name] = Tween[name];\n});\n\n_ticker.add(Timeline.updateRoot);\n\n_quickTween = _gsap.to({}, {\n duration: 0\n}); // ---- EXTRA PLUGINS --------------------------------------------------------\n\nvar _getPluginPropTween = function _getPluginPropTween(plugin, prop) {\n var pt = plugin._pt;\n\n while (pt && pt.p !== prop && pt.op !== prop && pt.fp !== prop) {\n pt = pt._next;\n }\n\n return pt;\n},\n _addModifiers = function _addModifiers(tween, modifiers) {\n var targets = tween._targets,\n p,\n i,\n pt;\n\n for (p in modifiers) {\n i = targets.length;\n\n while (i--) {\n pt = tween._ptLookup[i][p];\n\n if (pt && (pt = pt.d)) {\n if (pt._pt) {\n // is a plugin\n pt = _getPluginPropTween(pt, p);\n }\n\n pt && pt.modifier && pt.modifier(modifiers[p], tween, targets[i], p);\n }\n }\n }\n},\n _buildModifierPlugin = function _buildModifierPlugin(name, modifier) {\n return {\n name: name,\n rawVars: 1,\n //don't pre-process function-based values or \"random()\" strings.\n init: function init(target, vars, tween) {\n tween._onInit = function (tween) {\n var temp, p;\n\n if (_isString(vars)) {\n temp = {};\n\n _forEachName(vars, function (name) {\n return temp[name] = 1;\n }); //if the user passes in a comma-delimited list of property names to roundProps, like \"x,y\", we round to whole numbers.\n\n\n vars = temp;\n }\n\n if (modifier) {\n temp = {};\n\n for (p in vars) {\n temp[p] = modifier(vars[p]);\n }\n\n vars = temp;\n }\n\n _addModifiers(tween, vars);\n };\n }\n };\n}; //register core plugins\n\n\nexport var gsap = _gsap.registerPlugin({\n name: \"attr\",\n init: function init(target, vars, tween, index, targets) {\n var p, pt, v;\n this.tween = tween;\n\n for (p in vars) {\n v = target.getAttribute(p) || \"\";\n pt = this.add(target, \"setAttribute\", (v || 0) + \"\", vars[p], index, targets, 0, 0, p);\n pt.op = p;\n pt.b = v; // record the beginning value so we can revert()\n\n this._props.push(p);\n }\n },\n render: function render(ratio, data) {\n var pt = data._pt;\n\n while (pt) {\n _reverting ? pt.set(pt.t, pt.p, pt.b, pt) : pt.r(ratio, pt.d); // if reverting, go back to the original (pt.b)\n\n pt = pt._next;\n }\n }\n}, {\n name: \"endArray\",\n init: function init(target, value) {\n var i = value.length;\n\n while (i--) {\n this.add(target, i, target[i] || 0, value[i], 0, 0, 0, 0, 0, 1);\n }\n }\n}, _buildModifierPlugin(\"roundProps\", _roundModifier), _buildModifierPlugin(\"modifiers\"), _buildModifierPlugin(\"snap\", snap)) || _gsap; //to prevent the core plugins from being dropped via aggressive tree shaking, we must include them in the variable declaration in this way.\n\nTween.version = Timeline.version = gsap.version = \"3.12.5\";\n_coreReady = 1;\n_windowExists() && _wake();\nvar Power0 = _easeMap.Power0,\n Power1 = _easeMap.Power1,\n Power2 = _easeMap.Power2,\n Power3 = _easeMap.Power3,\n Power4 = _easeMap.Power4,\n Linear = _easeMap.Linear,\n Quad = _easeMap.Quad,\n Cubic = _easeMap.Cubic,\n Quart = _easeMap.Quart,\n Quint = _easeMap.Quint,\n Strong = _easeMap.Strong,\n Elastic = _easeMap.Elastic,\n Back = _easeMap.Back,\n SteppedEase = _easeMap.SteppedEase,\n Bounce = _easeMap.Bounce,\n Sine = _easeMap.Sine,\n Expo = _easeMap.Expo,\n Circ = _easeMap.Circ;\nexport { Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };\nexport { Tween as TweenMax, Tween as TweenLite, Timeline as TimelineMax, Timeline as TimelineLite, gsap as default, wrap, wrapYoyo, distribute, random, snap, normalize, getUnit, clamp, splitColor, toArray, selector, mapRange, pipe, unitize, interpolate, shuffle }; //export some internal methods/orojects for use in CSSPlugin so that we can externalize that file and allow custom builds that exclude it.\n\nexport { _getProperty, _numExp, _numWithUnitExp, _isString, _isUndefined, _renderComplexString, _relExp, _setDefaults, _removeLinkedListItem, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _replaceRandom, _checkPlugin, _plugins, _ticker, _config, _roundModifier, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative };","/*!\n * CSSPlugin 3.12.5\n * https://gsap.com\n *\n * Copyright 2008-2024, GreenSock. All rights reserved.\n * Subject to the terms at https://gsap.com/standard-license or for\n * Club GSAP members, the agreement issued with that membership.\n * @author: Jack Doyle, jack@greensock.com\n*/\n\n/* eslint-disable */\nimport { gsap, _getProperty, _numExp, _numWithUnitExp, getUnit, _isString, _isUndefined, _renderComplexString, _relExp, _forEachName, _sortPropTweensByPriority, _colorStringFilter, _checkPlugin, _replaceRandom, _plugins, GSCache, PropTween, _config, _ticker, _round, _missingPlugin, _getSetter, _getCache, _colorExp, _parseRelative, _setDefaults, _removeLinkedListItem //for the commented-out className feature.\n} from \"./gsap-core.js\";\n\nvar _win,\n _doc,\n _docElement,\n _pluginInitted,\n _tempDiv,\n _tempDivStyler,\n _recentSetterPlugin,\n _reverting,\n _windowExists = function _windowExists() {\n return typeof window !== \"undefined\";\n},\n _transformProps = {},\n _RAD2DEG = 180 / Math.PI,\n _DEG2RAD = Math.PI / 180,\n _atan2 = Math.atan2,\n _bigNum = 1e8,\n _capsExp = /([A-Z])/g,\n _horizontalExp = /(left|right|width|margin|padding|x)/i,\n _complexExp = /[\\s,\\(]\\S/,\n _propertyAliases = {\n autoAlpha: \"opacity,visibility\",\n scale: \"scaleX,scaleY\",\n alpha: \"opacity\"\n},\n _renderCSSProp = function _renderCSSProp(ratio, data) {\n return data.set(data.t, data.p, Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n _renderPropWithEnd = function _renderPropWithEnd(ratio, data) {\n return data.set(data.t, data.p, ratio === 1 ? data.e : Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u, data);\n},\n _renderCSSPropWithBeginning = function _renderCSSPropWithBeginning(ratio, data) {\n return data.set(data.t, data.p, ratio ? Math.round((data.s + data.c * ratio) * 10000) / 10000 + data.u : data.b, data);\n},\n //if units change, we need a way to render the original unit/value when the tween goes all the way back to the beginning (ratio:0)\n_renderRoundedCSSProp = function _renderRoundedCSSProp(ratio, data) {\n var value = data.s + data.c * ratio;\n data.set(data.t, data.p, ~~(value + (value < 0 ? -.5 : .5)) + data.u, data);\n},\n _renderNonTweeningValue = function _renderNonTweeningValue(ratio, data) {\n return data.set(data.t, data.p, ratio ? data.e : data.b, data);\n},\n _renderNonTweeningValueOnlyAtEnd = function _renderNonTweeningValueOnlyAtEnd(ratio, data) {\n return data.set(data.t, data.p, ratio !== 1 ? data.b : data.e, data);\n},\n _setterCSSStyle = function _setterCSSStyle(target, property, value) {\n return target.style[property] = value;\n},\n _setterCSSProp = function _setterCSSProp(target, property, value) {\n return target.style.setProperty(property, value);\n},\n _setterTransform = function _setterTransform(target, property, value) {\n return target._gsap[property] = value;\n},\n _setterScale = function _setterScale(target, property, value) {\n return target._gsap.scaleX = target._gsap.scaleY = value;\n},\n _setterScaleWithRender = function _setterScaleWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache.scaleX = cache.scaleY = value;\n cache.renderTransform(ratio, cache);\n},\n _setterTransformWithRender = function _setterTransformWithRender(target, property, value, data, ratio) {\n var cache = target._gsap;\n cache[property] = value;\n cache.renderTransform(ratio, cache);\n},\n _transformProp = \"transform\",\n _transformOriginProp = _transformProp + \"Origin\",\n _saveStyle = function _saveStyle(property, isNotCSS) {\n var _this = this;\n\n var target = this.target,\n style = target.style,\n cache = target._gsap;\n\n if (property in _transformProps && style) {\n this.tfm = this.tfm || {};\n\n if (property !== \"transform\") {\n property = _propertyAliases[property] || property;\n ~property.indexOf(\",\") ? property.split(\",\").forEach(function (a) {\n return _this.tfm[a] = _get(target, a);\n }) : this.tfm[property] = cache.x ? cache[property] : _get(target, property); // note: scale would map to \"scaleX,scaleY\", thus we loop and apply them both.\n\n property === _transformOriginProp && (this.tfm.zOrigin = cache.zOrigin);\n } else {\n return _propertyAliases.transform.split(\",\").forEach(function (p) {\n return _saveStyle.call(_this, p, isNotCSS);\n });\n }\n\n if (this.props.indexOf(_transformProp) >= 0) {\n return;\n }\n\n if (cache.svg) {\n this.svgo = target.getAttribute(\"data-svg-origin\");\n this.props.push(_transformOriginProp, isNotCSS, \"\");\n }\n\n property = _transformProp;\n }\n\n (style || isNotCSS) && this.props.push(property, isNotCSS, style[property]);\n},\n _removeIndependentTransforms = function _removeIndependentTransforms(style) {\n if (style.translate) {\n style.removeProperty(\"translate\");\n style.removeProperty(\"scale\");\n style.removeProperty(\"rotate\");\n }\n},\n _revertStyle = function _revertStyle() {\n var props = this.props,\n target = this.target,\n style = target.style,\n cache = target._gsap,\n i,\n p;\n\n for (i = 0; i < props.length; i += 3) {\n // stored like this: property, isNotCSS, value\n props[i + 1] ? target[props[i]] = props[i + 2] : props[i + 2] ? style[props[i]] = props[i + 2] : style.removeProperty(props[i].substr(0, 2) === \"--\" ? props[i] : props[i].replace(_capsExp, \"-$1\").toLowerCase());\n }\n\n if (this.tfm) {\n for (p in this.tfm) {\n cache[p] = this.tfm[p];\n }\n\n if (cache.svg) {\n cache.renderTransform();\n target.setAttribute(\"data-svg-origin\", this.svgo || \"\");\n }\n\n i = _reverting();\n\n if ((!i || !i.isStart) && !style[_transformProp]) {\n _removeIndependentTransforms(style);\n\n if (cache.zOrigin && style[_transformOriginProp]) {\n style[_transformOriginProp] += \" \" + cache.zOrigin + \"px\"; // since we're uncaching, we must put the zOrigin back into the transformOrigin so that we can pull it out accurately when we parse again. Otherwise, we'd lose the z portion of the origin since we extract it to protect from Safari bugs.\n\n cache.zOrigin = 0;\n cache.renderTransform();\n }\n\n cache.uncache = 1; // if it's a startAt that's being reverted in the _initTween() of the core, we don't need to uncache transforms. This is purely a performance optimization.\n }\n }\n},\n _getStyleSaver = function _getStyleSaver(target, properties) {\n var saver = {\n target: target,\n props: [],\n revert: _revertStyle,\n save: _saveStyle\n };\n target._gsap || gsap.core.getCache(target); // just make sure there's a _gsap cache defined because we read from it in _saveStyle() and it's more efficient to just check it here once.\n\n properties && properties.split(\",\").forEach(function (p) {\n return saver.save(p);\n });\n return saver;\n},\n _supports3D,\n _createElement = function _createElement(type, ns) {\n var e = _doc.createElementNS ? _doc.createElementNS((ns || \"http://www.w3.org/1999/xhtml\").replace(/^https/, \"http\"), type) : _doc.createElement(type); //some servers swap in https for http in the namespace which can break things, making \"style\" inaccessible.\n\n return e && e.style ? e : _doc.createElement(type); //some environments won't allow access to the element's style when created with a namespace in which case we default to the standard createElement() to work around the issue. Also note that when GSAP is embedded directly inside an SVG file, createElement() won't allow access to the style object in Firefox (see https://gsap.com/forums/topic/20215-problem-using-tweenmax-in-standalone-self-containing-svg-file-err-cannot-set-property-csstext-of-undefined/).\n},\n _getComputedProperty = function _getComputedProperty(target, property, skipPrefixFallback) {\n var cs = getComputedStyle(target);\n return cs[property] || cs.getPropertyValue(property.replace(_capsExp, \"-$1\").toLowerCase()) || cs.getPropertyValue(property) || !skipPrefixFallback && _getComputedProperty(target, _checkPropPrefix(property) || property, 1) || \"\"; //css variables may not need caps swapped out for dashes and lowercase.\n},\n _prefixes = \"O,Moz,ms,Ms,Webkit\".split(\",\"),\n _checkPropPrefix = function _checkPropPrefix(property, element, preferPrefix) {\n var e = element || _tempDiv,\n s = e.style,\n i = 5;\n\n if (property in s && !preferPrefix) {\n return property;\n }\n\n property = property.charAt(0).toUpperCase() + property.substr(1);\n\n while (i-- && !(_prefixes[i] + property in s)) {}\n\n return i < 0 ? null : (i === 3 ? \"ms\" : i >= 0 ? _prefixes[i] : \"\") + property;\n},\n _initCore = function _initCore() {\n if (_windowExists() && window.document) {\n _win = window;\n _doc = _win.document;\n _docElement = _doc.documentElement;\n _tempDiv = _createElement(\"div\") || {\n style: {}\n };\n _tempDivStyler = _createElement(\"div\");\n _transformProp = _checkPropPrefix(_transformProp);\n _transformOriginProp = _transformProp + \"Origin\";\n _tempDiv.style.cssText = \"border-width:0;line-height:0;position:absolute;padding:0\"; //make sure to override certain properties that may contaminate measurements, in case the user has overreaching style sheets.\n\n _supports3D = !!_checkPropPrefix(\"perspective\");\n _reverting = gsap.core.reverting;\n _pluginInitted = 1;\n }\n},\n _getBBoxHack = function _getBBoxHack(swapIfPossible) {\n //works around issues in some browsers (like Firefox) that don't correctly report getBBox() on SVG elements inside a element and/or . We try creating an SVG, adding it to the documentElement and toss the element in there so that it's definitely part of the rendering tree, then grab the bbox and if it works, we actually swap out the original getBBox() method for our own that does these extra steps whenever getBBox is needed. This helps ensure that performance is optimal (only do all these extra steps when absolutely necessary...most elements don't need it).\n var svg = _createElement(\"svg\", this.ownerSVGElement && this.ownerSVGElement.getAttribute(\"xmlns\") || \"http://www.w3.org/2000/svg\"),\n oldParent = this.parentNode,\n oldSibling = this.nextSibling,\n oldCSS = this.style.cssText,\n bbox;\n\n _docElement.appendChild(svg);\n\n svg.appendChild(this);\n this.style.display = \"block\";\n\n if (swapIfPossible) {\n try {\n bbox = this.getBBox();\n this._gsapBBox = this.getBBox; //store the original\n\n this.getBBox = _getBBoxHack;\n } catch (e) {}\n } else if (this._gsapBBox) {\n bbox = this._gsapBBox();\n }\n\n if (oldParent) {\n if (oldSibling) {\n oldParent.insertBefore(this, oldSibling);\n } else {\n oldParent.appendChild(this);\n }\n }\n\n _docElement.removeChild(svg);\n\n this.style.cssText = oldCSS;\n return bbox;\n},\n _getAttributeFallbacks = function _getAttributeFallbacks(target, attributesArray) {\n var i = attributesArray.length;\n\n while (i--) {\n if (target.hasAttribute(attributesArray[i])) {\n return target.getAttribute(attributesArray[i]);\n }\n }\n},\n _getBBox = function _getBBox(target) {\n var bounds;\n\n try {\n bounds = target.getBBox(); //Firefox throws errors if you try calling getBBox() on an SVG element that's not rendered (like in a or ). https://bugzilla.mozilla.org/show_bug.cgi?id=612118\n } catch (error) {\n bounds = _getBBoxHack.call(target, true);\n }\n\n bounds && (bounds.width || bounds.height) || target.getBBox === _getBBoxHack || (bounds = _getBBoxHack.call(target, true)); //some browsers (like Firefox) misreport the bounds if the element has zero width and height (it just assumes it's at x:0, y:0), thus we need to manually grab the position in that case.\n\n return bounds && !bounds.width && !bounds.x && !bounds.y ? {\n x: +_getAttributeFallbacks(target, [\"x\", \"cx\", \"x1\"]) || 0,\n y: +_getAttributeFallbacks(target, [\"y\", \"cy\", \"y1\"]) || 0,\n width: 0,\n height: 0\n } : bounds;\n},\n _isSVG = function _isSVG(e) {\n return !!(e.getCTM && (!e.parentNode || e.ownerSVGElement) && _getBBox(e));\n},\n //reports if the element is an SVG on which getBBox() actually works\n_removeProperty = function _removeProperty(target, property) {\n if (property) {\n var style = target.style,\n first2Chars;\n\n if (property in _transformProps && property !== _transformOriginProp) {\n property = _transformProp;\n }\n\n if (style.removeProperty) {\n first2Chars = property.substr(0, 2);\n\n if (first2Chars === \"ms\" || property.substr(0, 6) === \"webkit\") {\n //Microsoft and some Webkit browsers don't conform to the standard of capitalizing the first prefix character, so we adjust so that when we prefix the caps with a dash, it's correct (otherwise it'd be \"ms-transform\" instead of \"-ms-transform\" for IE9, for example)\n property = \"-\" + property;\n }\n\n style.removeProperty(first2Chars === \"--\" ? property : property.replace(_capsExp, \"-$1\").toLowerCase());\n } else {\n //note: old versions of IE use \"removeAttribute()\" instead of \"removeProperty()\"\n style.removeAttribute(property);\n }\n }\n},\n _addNonTweeningPT = function _addNonTweeningPT(plugin, target, property, beginning, end, onlySetAtEnd) {\n var pt = new PropTween(plugin._pt, target, property, 0, 1, onlySetAtEnd ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue);\n plugin._pt = pt;\n pt.b = beginning;\n pt.e = end;\n\n plugin._props.push(property);\n\n return pt;\n},\n _nonConvertibleUnits = {\n deg: 1,\n rad: 1,\n turn: 1\n},\n _nonStandardLayouts = {\n grid: 1,\n flex: 1\n},\n //takes a single value like 20px and converts it to the unit specified, like \"%\", returning only the numeric amount.\n_convertToUnit = function _convertToUnit(target, property, value, unit) {\n var curValue = parseFloat(value) || 0,\n curUnit = (value + \"\").trim().substr((curValue + \"\").length) || \"px\",\n // some browsers leave extra whitespace at the beginning of CSS variables, hence the need to trim()\n style = _tempDiv.style,\n horizontal = _horizontalExp.test(property),\n isRootSVG = target.tagName.toLowerCase() === \"svg\",\n measureProperty = (isRootSVG ? \"client\" : \"offset\") + (horizontal ? \"Width\" : \"Height\"),\n amount = 100,\n toPixels = unit === \"px\",\n toPercent = unit === \"%\",\n px,\n parent,\n cache,\n isSVG;\n\n if (unit === curUnit || !curValue || _nonConvertibleUnits[unit] || _nonConvertibleUnits[curUnit]) {\n return curValue;\n }\n\n curUnit !== \"px\" && !toPixels && (curValue = _convertToUnit(target, property, value, \"px\"));\n isSVG = target.getCTM && _isSVG(target);\n\n if ((toPercent || curUnit === \"%\") && (_transformProps[property] || ~property.indexOf(\"adius\"))) {\n px = isSVG ? target.getBBox()[horizontal ? \"width\" : \"height\"] : target[measureProperty];\n return _round(toPercent ? curValue / px * amount : curValue / 100 * px);\n }\n\n style[horizontal ? \"width\" : \"height\"] = amount + (toPixels ? curUnit : unit);\n parent = ~property.indexOf(\"adius\") || unit === \"em\" && target.appendChild && !isRootSVG ? target : target.parentNode;\n\n if (isSVG) {\n parent = (target.ownerSVGElement || {}).parentNode;\n }\n\n if (!parent || parent === _doc || !parent.appendChild) {\n parent = _doc.body;\n }\n\n cache = parent._gsap;\n\n if (cache && toPercent && cache.width && horizontal && cache.time === _ticker.time && !cache.uncache) {\n return _round(curValue / cache.width * amount);\n } else {\n if (toPercent && (property === \"height\" || property === \"width\")) {\n // if we're dealing with width/height that's inside a container with padding and/or it's a flexbox/grid container, we must apply it to the target itself rather than the _tempDiv in order to ensure complete accuracy, factoring in the parent's padding.\n var v = target.style[property];\n target.style[property] = amount + unit;\n px = target[measureProperty];\n v ? target.style[property] = v : _removeProperty(target, property);\n } else {\n (toPercent || curUnit === \"%\") && !_nonStandardLayouts[_getComputedProperty(parent, \"display\")] && (style.position = _getComputedProperty(target, \"position\"));\n parent === target && (style.position = \"static\"); // like for borderRadius, if it's a % we must have it relative to the target itself but that may not have position: relative or position: absolute in which case it'd go up the chain until it finds its offsetParent (bad). position: static protects against that.\n\n parent.appendChild(_tempDiv);\n px = _tempDiv[measureProperty];\n parent.removeChild(_tempDiv);\n style.position = \"absolute\";\n }\n\n if (horizontal && toPercent) {\n cache = _getCache(parent);\n cache.time = _ticker.time;\n cache.width = parent[measureProperty];\n }\n }\n\n return _round(toPixels ? px * curValue / amount : px && curValue ? amount / px * curValue : 0);\n},\n _get = function _get(target, property, unit, uncache) {\n var value;\n _pluginInitted || _initCore();\n\n if (property in _propertyAliases && property !== \"transform\") {\n property = _propertyAliases[property];\n\n if (~property.indexOf(\",\")) {\n property = property.split(\",\")[0];\n }\n }\n\n if (_transformProps[property] && property !== \"transform\") {\n value = _parseTransform(target, uncache);\n value = property !== \"transformOrigin\" ? value[property] : value.svg ? value.origin : _firstTwoOnly(_getComputedProperty(target, _transformOriginProp)) + \" \" + value.zOrigin + \"px\";\n } else {\n value = target.style[property];\n\n if (!value || value === \"auto\" || uncache || ~(value + \"\").indexOf(\"calc(\")) {\n value = _specialProps[property] && _specialProps[property](target, property, unit) || _getComputedProperty(target, property) || _getProperty(target, property) || (property === \"opacity\" ? 1 : 0); // note: some browsers, like Firefox, don't report borderRadius correctly! Instead, it only reports every corner like borderTopLeftRadius\n }\n }\n\n return unit && !~(value + \"\").trim().indexOf(\" \") ? _convertToUnit(target, property, value, unit) + unit : value;\n},\n _tweenComplexCSSString = function _tweenComplexCSSString(target, prop, start, end) {\n // note: we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within a plugin too, thus \"this\" would refer to the plugin.\n if (!start || start === \"none\") {\n // some browsers like Safari actually PREFER the prefixed property and mis-report the unprefixed value like clipPath (BUG). In other words, even though clipPath exists in the style (\"clipPath\" in target.style) and it's set in the CSS properly (along with -webkit-clip-path), Safari reports clipPath as \"none\" whereas WebkitClipPath reports accurately like \"ellipse(100% 0% at 50% 0%)\", so in this case we must SWITCH to using the prefixed property instead. See https://gsap.com/forums/topic/18310-clippath-doesnt-work-on-ios/\n var p = _checkPropPrefix(prop, target, 1),\n s = p && _getComputedProperty(target, p, 1);\n\n if (s && s !== start) {\n prop = p;\n start = s;\n } else if (prop === \"borderColor\") {\n start = _getComputedProperty(target, \"borderTopColor\"); // Firefox bug: always reports \"borderColor\" as \"\", so we must fall back to borderTopColor. See https://gsap.com/forums/topic/24583-how-to-return-colors-that-i-had-after-reverse/\n }\n }\n\n var pt = new PropTween(this._pt, target.style, prop, 0, 1, _renderComplexString),\n index = 0,\n matchIndex = 0,\n a,\n result,\n startValues,\n startNum,\n color,\n startValue,\n endValue,\n endNum,\n chunk,\n endUnit,\n startUnit,\n endValues;\n pt.b = start;\n pt.e = end;\n start += \"\"; // ensure values are strings\n\n end += \"\";\n\n if (end === \"auto\") {\n startValue = target.style[prop];\n target.style[prop] = end;\n end = _getComputedProperty(target, prop) || end;\n startValue ? target.style[prop] = startValue : _removeProperty(target, prop);\n }\n\n a = [start, end];\n\n _colorStringFilter(a); // pass an array with the starting and ending values and let the filter do whatever it needs to the values. If colors are found, it returns true and then we must match where the color shows up order-wise because for things like boxShadow, sometimes the browser provides the computed values with the color FIRST, but the user provides it with the color LAST, so flip them if necessary. Same for drop-shadow().\n\n\n start = a[0];\n end = a[1];\n startValues = start.match(_numWithUnitExp) || [];\n endValues = end.match(_numWithUnitExp) || [];\n\n if (endValues.length) {\n while (result = _numWithUnitExp.exec(end)) {\n endValue = result[0];\n chunk = end.substring(index, result.index);\n\n if (color) {\n color = (color + 1) % 5;\n } else if (chunk.substr(-5) === \"rgba(\" || chunk.substr(-5) === \"hsla(\") {\n color = 1;\n }\n\n if (endValue !== (startValue = startValues[matchIndex++] || \"\")) {\n startNum = parseFloat(startValue) || 0;\n startUnit = startValue.substr((startNum + \"\").length);\n endValue.charAt(1) === \"=\" && (endValue = _parseRelative(startNum, endValue) + startUnit);\n endNum = parseFloat(endValue);\n endUnit = endValue.substr((endNum + \"\").length);\n index = _numWithUnitExp.lastIndex - endUnit.length;\n\n if (!endUnit) {\n //if something like \"perspective:300\" is passed in and we must add a unit to the end\n endUnit = endUnit || _config.units[prop] || startUnit;\n\n if (index === end.length) {\n end += endUnit;\n pt.e += endUnit;\n }\n }\n\n if (startUnit !== endUnit) {\n startNum = _convertToUnit(target, prop, startValue, endUnit) || 0;\n } // these nested PropTweens are handled in a special way - we'll never actually call a render or setter method on them. We'll just loop through them in the parent complex string PropTween's render method.\n\n\n pt._pt = {\n _next: pt._pt,\n p: chunk || matchIndex === 1 ? chunk : \",\",\n //note: SVG spec allows omission of comma/space when a negative sign is wedged between two numbers, like 2.5-5.3 instead of 2.5,-5.3 but when tweening, the negative value may switch to positive, so we insert the comma just in case.\n s: startNum,\n c: endNum - startNum,\n m: color && color < 4 || prop === \"zIndex\" ? Math.round : 0\n };\n }\n }\n\n pt.c = index < end.length ? end.substring(index, end.length) : \"\"; //we use the \"c\" of the PropTween to store the final part of the string (after the last number)\n } else {\n pt.r = prop === \"display\" && end === \"none\" ? _renderNonTweeningValueOnlyAtEnd : _renderNonTweeningValue;\n }\n\n _relExp.test(end) && (pt.e = 0); //if the end string contains relative values or dynamic random(...) values, delete the end it so that on the final render we don't actually set it to the string with += or -= characters (forces it to use the calculated value).\n\n this._pt = pt; //start the linked list with this new PropTween. Remember, we call _tweenComplexCSSString.call(pluginInstance...) to ensure that it's scoped properly. We may call it from within another plugin too, thus \"this\" would refer to the plugin.\n\n return pt;\n},\n _keywordToPercent = {\n top: \"0%\",\n bottom: \"100%\",\n left: \"0%\",\n right: \"100%\",\n center: \"50%\"\n},\n _convertKeywordsToPercentages = function _convertKeywordsToPercentages(value) {\n var split = value.split(\" \"),\n x = split[0],\n y = split[1] || \"50%\";\n\n if (x === \"top\" || x === \"bottom\" || y === \"left\" || y === \"right\") {\n //the user provided them in the wrong order, so flip them\n value = x;\n x = y;\n y = value;\n }\n\n split[0] = _keywordToPercent[x] || x;\n split[1] = _keywordToPercent[y] || y;\n return split.join(\" \");\n},\n _renderClearProps = function _renderClearProps(ratio, data) {\n if (data.tween && data.tween._time === data.tween._dur) {\n var target = data.t,\n style = target.style,\n props = data.u,\n cache = target._gsap,\n prop,\n clearTransforms,\n i;\n\n if (props === \"all\" || props === true) {\n style.cssText = \"\";\n clearTransforms = 1;\n } else {\n props = props.split(\",\");\n i = props.length;\n\n while (--i > -1) {\n prop = props[i];\n\n if (_transformProps[prop]) {\n clearTransforms = 1;\n prop = prop === \"transformOrigin\" ? _transformOriginProp : _transformProp;\n }\n\n _removeProperty(target, prop);\n }\n }\n\n if (clearTransforms) {\n _removeProperty(target, _transformProp);\n\n if (cache) {\n cache.svg && target.removeAttribute(\"transform\");\n\n _parseTransform(target, 1); // force all the cached values back to \"normal\"/identity, otherwise if there's another tween that's already set to render transforms on this element, it could display the wrong values.\n\n\n cache.uncache = 1;\n\n _removeIndependentTransforms(style);\n }\n }\n }\n},\n // note: specialProps should return 1 if (and only if) they have a non-zero priority. It indicates we need to sort the linked list.\n_specialProps = {\n clearProps: function clearProps(plugin, target, property, endValue, tween) {\n if (tween.data !== \"isFromStart\") {\n var pt = plugin._pt = new PropTween(plugin._pt, target, property, 0, 0, _renderClearProps);\n pt.u = endValue;\n pt.pr = -10;\n pt.tween = tween;\n\n plugin._props.push(property);\n\n return 1;\n }\n }\n /* className feature (about 0.4kb gzipped).\n , className(plugin, target, property, endValue, tween) {\n \tlet _renderClassName = (ratio, data) => {\n \t\t\tdata.css.render(ratio, data.css);\n \t\t\tif (!ratio || ratio === 1) {\n \t\t\t\tlet inline = data.rmv,\n \t\t\t\t\ttarget = data.t,\n \t\t\t\t\tp;\n \t\t\t\ttarget.setAttribute(\"class\", ratio ? data.e : data.b);\n \t\t\t\tfor (p in inline) {\n \t\t\t\t\t_removeProperty(target, p);\n \t\t\t\t}\n \t\t\t}\n \t\t},\n \t\t_getAllStyles = (target) => {\n \t\t\tlet styles = {},\n \t\t\t\tcomputed = getComputedStyle(target),\n \t\t\t\tp;\n \t\t\tfor (p in computed) {\n \t\t\t\tif (isNaN(p) && p !== \"cssText\" && p !== \"length\") {\n \t\t\t\t\tstyles[p] = computed[p];\n \t\t\t\t}\n \t\t\t}\n \t\t\t_setDefaults(styles, _parseTransform(target, 1));\n \t\t\treturn styles;\n \t\t},\n \t\tstartClassList = target.getAttribute(\"class\"),\n \t\tstyle = target.style,\n \t\tcssText = style.cssText,\n \t\tcache = target._gsap,\n \t\tclassPT = cache.classPT,\n \t\tinlineToRemoveAtEnd = {},\n \t\tdata = {t:target, plugin:plugin, rmv:inlineToRemoveAtEnd, b:startClassList, e:(endValue.charAt(1) !== \"=\") ? endValue : startClassList.replace(new RegExp(\"(?:\\\\s|^)\" + endValue.substr(2) + \"(?![\\\\w-])\"), \"\") + ((endValue.charAt(0) === \"+\") ? \" \" + endValue.substr(2) : \"\")},\n \t\tchangingVars = {},\n \t\tstartVars = _getAllStyles(target),\n \t\ttransformRelated = /(transform|perspective)/i,\n \t\tendVars, p;\n \tif (classPT) {\n \t\tclassPT.r(1, classPT.d);\n \t\t_removeLinkedListItem(classPT.d.plugin, classPT, \"_pt\");\n \t}\n \ttarget.setAttribute(\"class\", data.e);\n \tendVars = _getAllStyles(target, true);\n \ttarget.setAttribute(\"class\", startClassList);\n \tfor (p in endVars) {\n \t\tif (endVars[p] !== startVars[p] && !transformRelated.test(p)) {\n \t\t\tchangingVars[p] = endVars[p];\n \t\t\tif (!style[p] && style[p] !== \"0\") {\n \t\t\t\tinlineToRemoveAtEnd[p] = 1;\n \t\t\t}\n \t\t}\n \t}\n \tcache.classPT = plugin._pt = new PropTween(plugin._pt, target, \"className\", 0, 0, _renderClassName, data, 0, -11);\n \tif (style.cssText !== cssText) { //only apply if things change. Otherwise, in cases like a background-image that's pulled dynamically, it could cause a refresh. See https://gsap.com/forums/topic/20368-possible-gsap-bug-switching-classnames-in-chrome/.\n \t\tstyle.cssText = cssText; //we recorded cssText before we swapped classes and ran _getAllStyles() because in cases when a className tween is overwritten, we remove all the related tweening properties from that class change (otherwise class-specific stuff can't override properties we've directly set on the target's style object due to specificity).\n \t}\n \t_parseTransform(target, true); //to clear the caching of transforms\n \tdata.css = new gsap.plugins.css();\n \tdata.css.init(target, changingVars, tween);\n \tplugin._props.push(...data.css._props);\n \treturn 1;\n }\n */\n\n},\n\n/*\n * --------------------------------------------------------------------------------------\n * TRANSFORMS\n * --------------------------------------------------------------------------------------\n */\n_identity2DMatrix = [1, 0, 0, 1, 0, 0],\n _rotationalProperties = {},\n _isNullTransform = function _isNullTransform(value) {\n return value === \"matrix(1, 0, 0, 1, 0, 0)\" || value === \"none\" || !value;\n},\n _getComputedTransformMatrixAsArray = function _getComputedTransformMatrixAsArray(target) {\n var matrixString = _getComputedProperty(target, _transformProp);\n\n return _isNullTransform(matrixString) ? _identity2DMatrix : matrixString.substr(7).match(_numExp).map(_round);\n},\n _getMatrix = function _getMatrix(target, force2D) {\n var cache = target._gsap || _getCache(target),\n style = target.style,\n matrix = _getComputedTransformMatrixAsArray(target),\n parent,\n nextSibling,\n temp,\n addedToDOM;\n\n if (cache.svg && target.getAttribute(\"transform\")) {\n temp = target.transform.baseVal.consolidate().matrix; //ensures that even complex values like \"translate(50,60) rotate(135,0,0)\" are parsed because it mashes it into a matrix.\n\n matrix = [temp.a, temp.b, temp.c, temp.d, temp.e, temp.f];\n return matrix.join(\",\") === \"1,0,0,1,0,0\" ? _identity2DMatrix : matrix;\n } else if (matrix === _identity2DMatrix && !target.offsetParent && target !== _docElement && !cache.svg) {\n //note: if offsetParent is null, that means the element isn't in the normal document flow, like if it has display:none or one of its ancestors has display:none). Firefox returns null for getComputedStyle() if the element is in an iframe that has display:none. https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n //browsers don't report transforms accurately unless the element is in the DOM and has a display value that's not \"none\". Firefox and Microsoft browsers have a partial bug where they'll report transforms even if display:none BUT not any percentage-based values like translate(-50%, 8px) will be reported as if it's translate(0, 8px).\n temp = style.display;\n style.display = \"block\";\n parent = target.parentNode;\n\n if (!parent || !target.offsetParent) {\n // note: in 3.3.0 we switched target.offsetParent to _doc.body.contains(target) to avoid [sometimes unnecessary] MutationObserver calls but that wasn't adequate because there are edge cases where nested position: fixed elements need to get reparented to accurately sense transforms. See https://github.com/greensock/GSAP/issues/388 and https://github.com/greensock/GSAP/issues/375\n addedToDOM = 1; //flag\n\n nextSibling = target.nextElementSibling;\n\n _docElement.appendChild(target); //we must add it to the DOM in order to get values properly\n\n }\n\n matrix = _getComputedTransformMatrixAsArray(target);\n temp ? style.display = temp : _removeProperty(target, \"display\");\n\n if (addedToDOM) {\n nextSibling ? parent.insertBefore(target, nextSibling) : parent ? parent.appendChild(target) : _docElement.removeChild(target);\n }\n }\n\n return force2D && matrix.length > 6 ? [matrix[0], matrix[1], matrix[4], matrix[5], matrix[12], matrix[13]] : matrix;\n},\n _applySVGOrigin = function _applySVGOrigin(target, origin, originIsAbsolute, smooth, matrixArray, pluginToAddPropTweensTo) {\n var cache = target._gsap,\n matrix = matrixArray || _getMatrix(target, true),\n xOriginOld = cache.xOrigin || 0,\n yOriginOld = cache.yOrigin || 0,\n xOffsetOld = cache.xOffset || 0,\n yOffsetOld = cache.yOffset || 0,\n a = matrix[0],\n b = matrix[1],\n c = matrix[2],\n d = matrix[3],\n tx = matrix[4],\n ty = matrix[5],\n originSplit = origin.split(\" \"),\n xOrigin = parseFloat(originSplit[0]) || 0,\n yOrigin = parseFloat(originSplit[1]) || 0,\n bounds,\n determinant,\n x,\n y;\n\n if (!originIsAbsolute) {\n bounds = _getBBox(target);\n xOrigin = bounds.x + (~originSplit[0].indexOf(\"%\") ? xOrigin / 100 * bounds.width : xOrigin);\n yOrigin = bounds.y + (~(originSplit[1] || originSplit[0]).indexOf(\"%\") ? yOrigin / 100 * bounds.height : yOrigin); // if (!(\"xOrigin\" in cache) && (xOrigin || yOrigin)) { // added in 3.12.3, reverted in 3.12.4; requires more exploration\n // \txOrigin -= bounds.x;\n // \tyOrigin -= bounds.y;\n // }\n } else if (matrix !== _identity2DMatrix && (determinant = a * d - b * c)) {\n //if it's zero (like if scaleX and scaleY are zero), skip it to avoid errors with dividing by zero.\n x = xOrigin * (d / determinant) + yOrigin * (-c / determinant) + (c * ty - d * tx) / determinant;\n y = xOrigin * (-b / determinant) + yOrigin * (a / determinant) - (a * ty - b * tx) / determinant;\n xOrigin = x;\n yOrigin = y; // theory: we only had to do this for smoothing and it assumes that the previous one was not originIsAbsolute.\n }\n\n if (smooth || smooth !== false && cache.smooth) {\n tx = xOrigin - xOriginOld;\n ty = yOrigin - yOriginOld;\n cache.xOffset = xOffsetOld + (tx * a + ty * c) - tx;\n cache.yOffset = yOffsetOld + (tx * b + ty * d) - ty;\n } else {\n cache.xOffset = cache.yOffset = 0;\n }\n\n cache.xOrigin = xOrigin;\n cache.yOrigin = yOrigin;\n cache.smooth = !!smooth;\n cache.origin = origin;\n cache.originIsAbsolute = !!originIsAbsolute;\n target.style[_transformOriginProp] = \"0px 0px\"; //otherwise, if someone sets an origin via CSS, it will likely interfere with the SVG transform attribute ones (because remember, we're baking the origin into the matrix() value).\n\n if (pluginToAddPropTweensTo) {\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOrigin\", xOriginOld, xOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOrigin\", yOriginOld, yOrigin);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"xOffset\", xOffsetOld, cache.xOffset);\n\n _addNonTweeningPT(pluginToAddPropTweensTo, cache, \"yOffset\", yOffsetOld, cache.yOffset);\n }\n\n target.setAttribute(\"data-svg-origin\", xOrigin + \" \" + yOrigin);\n},\n _parseTransform = function _parseTransform(target, uncache) {\n var cache = target._gsap || new GSCache(target);\n\n if (\"x\" in cache && !uncache && !cache.uncache) {\n return cache;\n }\n\n var style = target.style,\n invertedScaleX = cache.scaleX < 0,\n px = \"px\",\n deg = \"deg\",\n cs = getComputedStyle(target),\n origin = _getComputedProperty(target, _transformOriginProp) || \"0\",\n x,\n y,\n z,\n scaleX,\n scaleY,\n rotation,\n rotationX,\n rotationY,\n skewX,\n skewY,\n perspective,\n xOrigin,\n yOrigin,\n matrix,\n angle,\n cos,\n sin,\n a,\n b,\n c,\n d,\n a12,\n a22,\n t1,\n t2,\n t3,\n a13,\n a23,\n a33,\n a42,\n a43,\n a32;\n x = y = z = rotation = rotationX = rotationY = skewX = skewY = perspective = 0;\n scaleX = scaleY = 1;\n cache.svg = !!(target.getCTM && _isSVG(target));\n\n if (cs.translate) {\n // accommodate independent transforms by combining them into normal ones.\n if (cs.translate !== \"none\" || cs.scale !== \"none\" || cs.rotate !== \"none\") {\n style[_transformProp] = (cs.translate !== \"none\" ? \"translate3d(\" + (cs.translate + \" 0 0\").split(\" \").slice(0, 3).join(\", \") + \") \" : \"\") + (cs.rotate !== \"none\" ? \"rotate(\" + cs.rotate + \") \" : \"\") + (cs.scale !== \"none\" ? \"scale(\" + cs.scale.split(\" \").join(\",\") + \") \" : \"\") + (cs[_transformProp] !== \"none\" ? cs[_transformProp] : \"\");\n }\n\n style.scale = style.rotate = style.translate = \"none\";\n }\n\n matrix = _getMatrix(target, cache.svg);\n\n if (cache.svg) {\n if (cache.uncache) {\n // if cache.uncache is true (and maybe if origin is 0,0), we need to set element.style.transformOrigin = (cache.xOrigin - bbox.x) + \"px \" + (cache.yOrigin - bbox.y) + \"px\". Previously we let the data-svg-origin stay instead, but when introducing revert(), it complicated things.\n t2 = target.getBBox();\n origin = cache.xOrigin - t2.x + \"px \" + (cache.yOrigin - t2.y) + \"px\";\n t1 = \"\";\n } else {\n t1 = !uncache && target.getAttribute(\"data-svg-origin\"); // Remember, to work around browser inconsistencies we always force SVG elements' transformOrigin to 0,0 and offset the translation accordingly.\n }\n\n _applySVGOrigin(target, t1 || origin, !!t1 || cache.originIsAbsolute, cache.smooth !== false, matrix);\n }\n\n xOrigin = cache.xOrigin || 0;\n yOrigin = cache.yOrigin || 0;\n\n if (matrix !== _identity2DMatrix) {\n a = matrix[0]; //a11\n\n b = matrix[1]; //a21\n\n c = matrix[2]; //a31\n\n d = matrix[3]; //a41\n\n x = a12 = matrix[4];\n y = a22 = matrix[5]; //2D matrix\n\n if (matrix.length === 6) {\n scaleX = Math.sqrt(a * a + b * b);\n scaleY = Math.sqrt(d * d + c * c);\n rotation = a || b ? _atan2(b, a) * _RAD2DEG : 0; //note: if scaleX is 0, we cannot accurately measure rotation. Same for skewX with a scaleY of 0. Therefore, we default to the previously recorded value (or zero if that doesn't exist).\n\n skewX = c || d ? _atan2(c, d) * _RAD2DEG + rotation : 0;\n skewX && (scaleY *= Math.abs(Math.cos(skewX * _DEG2RAD)));\n\n if (cache.svg) {\n x -= xOrigin - (xOrigin * a + yOrigin * c);\n y -= yOrigin - (xOrigin * b + yOrigin * d);\n } //3D matrix\n\n } else {\n a32 = matrix[6];\n a42 = matrix[7];\n a13 = matrix[8];\n a23 = matrix[9];\n a33 = matrix[10];\n a43 = matrix[11];\n x = matrix[12];\n y = matrix[13];\n z = matrix[14];\n angle = _atan2(a32, a33);\n rotationX = angle * _RAD2DEG; //rotationX\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a12 * cos + a13 * sin;\n t2 = a22 * cos + a23 * sin;\n t3 = a32 * cos + a33 * sin;\n a13 = a12 * -sin + a13 * cos;\n a23 = a22 * -sin + a23 * cos;\n a33 = a32 * -sin + a33 * cos;\n a43 = a42 * -sin + a43 * cos;\n a12 = t1;\n a22 = t2;\n a32 = t3;\n } //rotationY\n\n\n angle = _atan2(-c, a33);\n rotationY = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(-angle);\n sin = Math.sin(-angle);\n t1 = a * cos - a13 * sin;\n t2 = b * cos - a23 * sin;\n t3 = c * cos - a33 * sin;\n a43 = d * sin + a43 * cos;\n a = t1;\n b = t2;\n c = t3;\n } //rotationZ\n\n\n angle = _atan2(b, a);\n rotation = angle * _RAD2DEG;\n\n if (angle) {\n cos = Math.cos(angle);\n sin = Math.sin(angle);\n t1 = a * cos + b * sin;\n t2 = a12 * cos + a22 * sin;\n b = b * cos - a * sin;\n a22 = a22 * cos - a12 * sin;\n a = t1;\n a12 = t2;\n }\n\n if (rotationX && Math.abs(rotationX) + Math.abs(rotation) > 359.9) {\n //when rotationY is set, it will often be parsed as 180 degrees different than it should be, and rotationX and rotation both being 180 (it looks the same), so we adjust for that here.\n rotationX = rotation = 0;\n rotationY = 180 - rotationY;\n }\n\n scaleX = _round(Math.sqrt(a * a + b * b + c * c));\n scaleY = _round(Math.sqrt(a22 * a22 + a32 * a32));\n angle = _atan2(a12, a22);\n skewX = Math.abs(angle) > 0.0002 ? angle * _RAD2DEG : 0;\n perspective = a43 ? 1 / (a43 < 0 ? -a43 : a43) : 0;\n }\n\n if (cache.svg) {\n //sense if there are CSS transforms applied on an SVG element in which case we must overwrite them when rendering. The transform attribute is more reliable cross-browser, but we can't just remove the CSS ones because they may be applied in a CSS rule somewhere (not just inline).\n t1 = target.getAttribute(\"transform\");\n cache.forceCSS = target.setAttribute(\"transform\", \"\") || !_isNullTransform(_getComputedProperty(target, _transformProp));\n t1 && target.setAttribute(\"transform\", t1);\n }\n }\n\n if (Math.abs(skewX) > 90 && Math.abs(skewX) < 270) {\n if (invertedScaleX) {\n scaleX *= -1;\n skewX += rotation <= 0 ? 180 : -180;\n rotation += rotation <= 0 ? 180 : -180;\n } else {\n scaleY *= -1;\n skewX += skewX <= 0 ? 180 : -180;\n }\n }\n\n uncache = uncache || cache.uncache;\n cache.x = x - ((cache.xPercent = x && (!uncache && cache.xPercent || (Math.round(target.offsetWidth / 2) === Math.round(-x) ? -50 : 0))) ? target.offsetWidth * cache.xPercent / 100 : 0) + px;\n cache.y = y - ((cache.yPercent = y && (!uncache && cache.yPercent || (Math.round(target.offsetHeight / 2) === Math.round(-y) ? -50 : 0))) ? target.offsetHeight * cache.yPercent / 100 : 0) + px;\n cache.z = z + px;\n cache.scaleX = _round(scaleX);\n cache.scaleY = _round(scaleY);\n cache.rotation = _round(rotation) + deg;\n cache.rotationX = _round(rotationX) + deg;\n cache.rotationY = _round(rotationY) + deg;\n cache.skewX = skewX + deg;\n cache.skewY = skewY + deg;\n cache.transformPerspective = perspective + px;\n\n if (cache.zOrigin = parseFloat(origin.split(\" \")[2]) || !uncache && cache.zOrigin || 0) {\n style[_transformOriginProp] = _firstTwoOnly(origin);\n }\n\n cache.xOffset = cache.yOffset = 0;\n cache.force3D = _config.force3D;\n cache.renderTransform = cache.svg ? _renderSVGTransforms : _supports3D ? _renderCSSTransforms : _renderNon3DTransforms;\n cache.uncache = 0;\n return cache;\n},\n _firstTwoOnly = function _firstTwoOnly(value) {\n return (value = value.split(\" \"))[0] + \" \" + value[1];\n},\n //for handling transformOrigin values, stripping out the 3rd dimension\n_addPxTranslate = function _addPxTranslate(target, start, value) {\n var unit = getUnit(start);\n return _round(parseFloat(start) + parseFloat(_convertToUnit(target, \"x\", value + \"px\", unit))) + unit;\n},\n _renderNon3DTransforms = function _renderNon3DTransforms(ratio, cache) {\n cache.z = \"0px\";\n cache.rotationY = cache.rotationX = \"0deg\";\n cache.force3D = 0;\n\n _renderCSSTransforms(ratio, cache);\n},\n _zeroDeg = \"0deg\",\n _zeroPx = \"0px\",\n _endParenthesis = \") \",\n _renderCSSTransforms = function _renderCSSTransforms(ratio, cache) {\n var _ref = cache || this,\n xPercent = _ref.xPercent,\n yPercent = _ref.yPercent,\n x = _ref.x,\n y = _ref.y,\n z = _ref.z,\n rotation = _ref.rotation,\n rotationY = _ref.rotationY,\n rotationX = _ref.rotationX,\n skewX = _ref.skewX,\n skewY = _ref.skewY,\n scaleX = _ref.scaleX,\n scaleY = _ref.scaleY,\n transformPerspective = _ref.transformPerspective,\n force3D = _ref.force3D,\n target = _ref.target,\n zOrigin = _ref.zOrigin,\n transforms = \"\",\n use3D = force3D === \"auto\" && ratio && ratio !== 1 || force3D === true; // Safari has a bug that causes it not to render 3D transform-origin values properly, so we force the z origin to 0, record it in the cache, and then do the math here to offset the translate values accordingly (basically do the 3D transform-origin part manually)\n\n\n if (zOrigin && (rotationX !== _zeroDeg || rotationY !== _zeroDeg)) {\n var angle = parseFloat(rotationY) * _DEG2RAD,\n a13 = Math.sin(angle),\n a33 = Math.cos(angle),\n cos;\n\n angle = parseFloat(rotationX) * _DEG2RAD;\n cos = Math.cos(angle);\n x = _addPxTranslate(target, x, a13 * cos * -zOrigin);\n y = _addPxTranslate(target, y, -Math.sin(angle) * -zOrigin);\n z = _addPxTranslate(target, z, a33 * cos * -zOrigin + zOrigin);\n }\n\n if (transformPerspective !== _zeroPx) {\n transforms += \"perspective(\" + transformPerspective + _endParenthesis;\n }\n\n if (xPercent || yPercent) {\n transforms += \"translate(\" + xPercent + \"%, \" + yPercent + \"%) \";\n }\n\n if (use3D || x !== _zeroPx || y !== _zeroPx || z !== _zeroPx) {\n transforms += z !== _zeroPx || use3D ? \"translate3d(\" + x + \", \" + y + \", \" + z + \") \" : \"translate(\" + x + \", \" + y + _endParenthesis;\n }\n\n if (rotation !== _zeroDeg) {\n transforms += \"rotate(\" + rotation + _endParenthesis;\n }\n\n if (rotationY !== _zeroDeg) {\n transforms += \"rotateY(\" + rotationY + _endParenthesis;\n }\n\n if (rotationX !== _zeroDeg) {\n transforms += \"rotateX(\" + rotationX + _endParenthesis;\n }\n\n if (skewX !== _zeroDeg || skewY !== _zeroDeg) {\n transforms += \"skew(\" + skewX + \", \" + skewY + _endParenthesis;\n }\n\n if (scaleX !== 1 || scaleY !== 1) {\n transforms += \"scale(\" + scaleX + \", \" + scaleY + _endParenthesis;\n }\n\n target.style[_transformProp] = transforms || \"translate(0, 0)\";\n},\n _renderSVGTransforms = function _renderSVGTransforms(ratio, cache) {\n var _ref2 = cache || this,\n xPercent = _ref2.xPercent,\n yPercent = _ref2.yPercent,\n x = _ref2.x,\n y = _ref2.y,\n rotation = _ref2.rotation,\n skewX = _ref2.skewX,\n skewY = _ref2.skewY,\n scaleX = _ref2.scaleX,\n scaleY = _ref2.scaleY,\n target = _ref2.target,\n xOrigin = _ref2.xOrigin,\n yOrigin = _ref2.yOrigin,\n xOffset = _ref2.xOffset,\n yOffset = _ref2.yOffset,\n forceCSS = _ref2.forceCSS,\n tx = parseFloat(x),\n ty = parseFloat(y),\n a11,\n a21,\n a12,\n a22,\n temp;\n\n rotation = parseFloat(rotation);\n skewX = parseFloat(skewX);\n skewY = parseFloat(skewY);\n\n if (skewY) {\n //for performance reasons, we combine all skewing into the skewX and rotation values. Remember, a skewY of 10 degrees looks the same as a rotation of 10 degrees plus a skewX of 10 degrees.\n skewY = parseFloat(skewY);\n skewX += skewY;\n rotation += skewY;\n }\n\n if (rotation || skewX) {\n rotation *= _DEG2RAD;\n skewX *= _DEG2RAD;\n a11 = Math.cos(rotation) * scaleX;\n a21 = Math.sin(rotation) * scaleX;\n a12 = Math.sin(rotation - skewX) * -scaleY;\n a22 = Math.cos(rotation - skewX) * scaleY;\n\n if (skewX) {\n skewY *= _DEG2RAD;\n temp = Math.tan(skewX - skewY);\n temp = Math.sqrt(1 + temp * temp);\n a12 *= temp;\n a22 *= temp;\n\n if (skewY) {\n temp = Math.tan(skewY);\n temp = Math.sqrt(1 + temp * temp);\n a11 *= temp;\n a21 *= temp;\n }\n }\n\n a11 = _round(a11);\n a21 = _round(a21);\n a12 = _round(a12);\n a22 = _round(a22);\n } else {\n a11 = scaleX;\n a22 = scaleY;\n a21 = a12 = 0;\n }\n\n if (tx && !~(x + \"\").indexOf(\"px\") || ty && !~(y + \"\").indexOf(\"px\")) {\n tx = _convertToUnit(target, \"x\", x, \"px\");\n ty = _convertToUnit(target, \"y\", y, \"px\");\n }\n\n if (xOrigin || yOrigin || xOffset || yOffset) {\n tx = _round(tx + xOrigin - (xOrigin * a11 + yOrigin * a12) + xOffset);\n ty = _round(ty + yOrigin - (xOrigin * a21 + yOrigin * a22) + yOffset);\n }\n\n if (xPercent || yPercent) {\n //The SVG spec doesn't support percentage-based translation in the \"transform\" attribute, so we merge it into the translation to simulate it.\n temp = target.getBBox();\n tx = _round(tx + xPercent / 100 * temp.width);\n ty = _round(ty + yPercent / 100 * temp.height);\n }\n\n temp = \"matrix(\" + a11 + \",\" + a21 + \",\" + a12 + \",\" + a22 + \",\" + tx + \",\" + ty + \")\";\n target.setAttribute(\"transform\", temp);\n forceCSS && (target.style[_transformProp] = temp); //some browsers prioritize CSS transforms over the transform attribute. When we sense that the user has CSS transforms applied, we must overwrite them this way (otherwise some browser simply won't render the transform attribute changes!)\n},\n _addRotationalPropTween = function _addRotationalPropTween(plugin, target, property, startNum, endValue) {\n var cap = 360,\n isString = _isString(endValue),\n endNum = parseFloat(endValue) * (isString && ~endValue.indexOf(\"rad\") ? _RAD2DEG : 1),\n change = endNum - startNum,\n finalValue = startNum + change + \"deg\",\n direction,\n pt;\n\n if (isString) {\n direction = endValue.split(\"_\")[1];\n\n if (direction === \"short\") {\n change %= cap;\n\n if (change !== change % (cap / 2)) {\n change += change < 0 ? cap : -cap;\n }\n }\n\n if (direction === \"cw\" && change < 0) {\n change = (change + cap * _bigNum) % cap - ~~(change / cap) * cap;\n } else if (direction === \"ccw\" && change > 0) {\n change = (change - cap * _bigNum) % cap - ~~(change / cap) * cap;\n }\n }\n\n plugin._pt = pt = new PropTween(plugin._pt, target, property, startNum, change, _renderPropWithEnd);\n pt.e = finalValue;\n pt.u = \"deg\";\n\n plugin._props.push(property);\n\n return pt;\n},\n _assign = function _assign(target, source) {\n // Internet Explorer doesn't have Object.assign(), so we recreate it here.\n for (var p in source) {\n target[p] = source[p];\n }\n\n return target;\n},\n _addRawTransformPTs = function _addRawTransformPTs(plugin, transforms, target) {\n //for handling cases where someone passes in a whole transform string, like transform: \"scale(2, 3) rotate(20deg) translateY(30em)\"\n var startCache = _assign({}, target._gsap),\n exclude = \"perspective,force3D,transformOrigin,svgOrigin\",\n style = target.style,\n endCache,\n p,\n startValue,\n endValue,\n startNum,\n endNum,\n startUnit,\n endUnit;\n\n if (startCache.svg) {\n startValue = target.getAttribute(\"transform\");\n target.setAttribute(\"transform\", \"\");\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n\n _removeProperty(target, _transformProp);\n\n target.setAttribute(\"transform\", startValue);\n } else {\n startValue = getComputedStyle(target)[_transformProp];\n style[_transformProp] = transforms;\n endCache = _parseTransform(target, 1);\n style[_transformProp] = startValue;\n }\n\n for (p in _transformProps) {\n startValue = startCache[p];\n endValue = endCache[p];\n\n if (startValue !== endValue && exclude.indexOf(p) < 0) {\n //tweening to no perspective gives very unintuitive results - just keep the same perspective in that case.\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n startNum = startUnit !== endUnit ? _convertToUnit(target, p, startValue, endUnit) : parseFloat(startValue);\n endNum = parseFloat(endValue);\n plugin._pt = new PropTween(plugin._pt, endCache, p, startNum, endNum - startNum, _renderCSSProp);\n plugin._pt.u = endUnit || 0;\n\n plugin._props.push(p);\n }\n }\n\n _assign(endCache, startCache);\n}; // handle splitting apart padding, margin, borderWidth, and borderRadius into their 4 components. Firefox, for example, won't report borderRadius correctly - it will only do borderTopLeftRadius and the other corners. We also want to handle paddingTop, marginLeft, borderRightWidth, etc.\n\n\n_forEachName(\"padding,margin,Width,Radius\", function (name, index) {\n var t = \"Top\",\n r = \"Right\",\n b = \"Bottom\",\n l = \"Left\",\n props = (index < 3 ? [t, r, b, l] : [t + l, t + r, b + r, b + l]).map(function (side) {\n return index < 2 ? name + side : \"border\" + side + name;\n });\n\n _specialProps[index > 1 ? \"border\" + name : name] = function (plugin, target, property, endValue, tween) {\n var a, vars;\n\n if (arguments.length < 4) {\n // getter, passed target, property, and unit (from _get())\n a = props.map(function (prop) {\n return _get(plugin, prop, property);\n });\n vars = a.join(\" \");\n return vars.split(a[0]).length === 5 ? a[0] : vars;\n }\n\n a = (endValue + \"\").split(\" \");\n vars = {};\n props.forEach(function (prop, i) {\n return vars[prop] = a[i] = a[i] || a[(i - 1) / 2 | 0];\n });\n plugin.init(target, vars, tween);\n };\n});\n\nexport var CSSPlugin = {\n name: \"css\",\n register: _initCore,\n targetTest: function targetTest(target) {\n return target.style && target.nodeType;\n },\n init: function init(target, vars, tween, index, targets) {\n var props = this._props,\n style = target.style,\n startAt = tween.vars.startAt,\n startValue,\n endValue,\n endNum,\n startNum,\n type,\n specialProp,\n p,\n startUnit,\n endUnit,\n relative,\n isTransformRelated,\n transformPropTween,\n cache,\n smooth,\n hasPriority,\n inlineProps;\n _pluginInitted || _initCore(); // we may call init() multiple times on the same plugin instance, like when adding special properties, so make sure we don't overwrite the revert data or inlineProps\n\n this.styles = this.styles || _getStyleSaver(target);\n inlineProps = this.styles.props;\n this.tween = tween;\n\n for (p in vars) {\n if (p === \"autoRound\") {\n continue;\n }\n\n endValue = vars[p];\n\n if (_plugins[p] && _checkPlugin(p, vars, tween, index, target, targets)) {\n // plugins\n continue;\n }\n\n type = typeof endValue;\n specialProp = _specialProps[p];\n\n if (type === \"function\") {\n endValue = endValue.call(tween, index, target, targets);\n type = typeof endValue;\n }\n\n if (type === \"string\" && ~endValue.indexOf(\"random(\")) {\n endValue = _replaceRandom(endValue);\n }\n\n if (specialProp) {\n specialProp(this, target, p, endValue, tween) && (hasPriority = 1);\n } else if (p.substr(0, 2) === \"--\") {\n //CSS variable\n startValue = (getComputedStyle(target).getPropertyValue(p) + \"\").trim();\n endValue += \"\";\n _colorExp.lastIndex = 0;\n\n if (!_colorExp.test(startValue)) {\n // colors don't have units\n startUnit = getUnit(startValue);\n endUnit = getUnit(endValue);\n }\n\n endUnit ? startUnit !== endUnit && (startValue = _convertToUnit(target, p, startValue, endUnit) + endUnit) : startUnit && (endValue += startUnit);\n this.add(style, \"setProperty\", startValue, endValue, index, targets, 0, 0, p);\n props.push(p);\n inlineProps.push(p, 0, style[p]);\n } else if (type !== \"undefined\") {\n if (startAt && p in startAt) {\n // in case someone hard-codes a complex value as the start, like top: \"calc(2vh / 2)\". Without this, it'd use the computed value (always in px)\n startValue = typeof startAt[p] === \"function\" ? startAt[p].call(tween, index, target, targets) : startAt[p];\n _isString(startValue) && ~startValue.indexOf(\"random(\") && (startValue = _replaceRandom(startValue));\n getUnit(startValue + \"\") || startValue === \"auto\" || (startValue += _config.units[p] || getUnit(_get(target, p)) || \"\"); // for cases when someone passes in a unitless value like {x: 100}; if we try setting translate(100, 0px) it won't work.\n\n (startValue + \"\").charAt(1) === \"=\" && (startValue = _get(target, p)); // can't work with relative values\n } else {\n startValue = _get(target, p);\n }\n\n startNum = parseFloat(startValue);\n relative = type === \"string\" && endValue.charAt(1) === \"=\" && endValue.substr(0, 2);\n relative && (endValue = endValue.substr(2));\n endNum = parseFloat(endValue);\n\n if (p in _propertyAliases) {\n if (p === \"autoAlpha\") {\n //special case where we control the visibility along with opacity. We still allow the opacity value to pass through and get tweened.\n if (startNum === 1 && _get(target, \"visibility\") === \"hidden\" && endNum) {\n //if visibility is initially set to \"hidden\", we should interpret that as intent to make opacity 0 (a convenience)\n startNum = 0;\n }\n\n inlineProps.push(\"visibility\", 0, style.visibility);\n\n _addNonTweeningPT(this, style, \"visibility\", startNum ? \"inherit\" : \"hidden\", endNum ? \"inherit\" : \"hidden\", !endNum);\n }\n\n if (p !== \"scale\" && p !== \"transform\") {\n p = _propertyAliases[p];\n ~p.indexOf(\",\") && (p = p.split(\",\")[0]);\n }\n }\n\n isTransformRelated = p in _transformProps; //--- TRANSFORM-RELATED ---\n\n if (isTransformRelated) {\n this.styles.save(p);\n\n if (!transformPropTween) {\n cache = target._gsap;\n cache.renderTransform && !vars.parseTransform || _parseTransform(target, vars.parseTransform); // if, for example, gsap.set(... {transform:\"translateX(50vw)\"}), the _get() call doesn't parse the transform, thus cache.renderTransform won't be set yet so force the parsing of the transform here.\n\n smooth = vars.smoothOrigin !== false && cache.smooth;\n transformPropTween = this._pt = new PropTween(this._pt, style, _transformProp, 0, 1, cache.renderTransform, cache, 0, -1); //the first time through, create the rendering PropTween so that it runs LAST (in the linked list, we keep adding to the beginning)\n\n transformPropTween.dep = 1; //flag it as dependent so that if things get killed/overwritten and this is the only PropTween left, we can safely kill the whole tween.\n }\n\n if (p === \"scale\") {\n this._pt = new PropTween(this._pt, cache, \"scaleY\", cache.scaleY, (relative ? _parseRelative(cache.scaleY, relative + endNum) : endNum) - cache.scaleY || 0, _renderCSSProp);\n this._pt.u = 0;\n props.push(\"scaleY\", p);\n p += \"X\";\n } else if (p === \"transformOrigin\") {\n inlineProps.push(_transformOriginProp, 0, style[_transformOriginProp]);\n endValue = _convertKeywordsToPercentages(endValue); //in case something like \"left top\" or \"bottom right\" is passed in. Convert to percentages.\n\n if (cache.svg) {\n _applySVGOrigin(target, endValue, 0, smooth, 0, this);\n } else {\n endUnit = parseFloat(endValue.split(\" \")[2]) || 0; //handle the zOrigin separately!\n\n endUnit !== cache.zOrigin && _addNonTweeningPT(this, cache, \"zOrigin\", cache.zOrigin, endUnit);\n\n _addNonTweeningPT(this, style, p, _firstTwoOnly(startValue), _firstTwoOnly(endValue));\n }\n\n continue;\n } else if (p === \"svgOrigin\") {\n _applySVGOrigin(target, endValue, 1, smooth, 0, this);\n\n continue;\n } else if (p in _rotationalProperties) {\n _addRotationalPropTween(this, cache, p, startNum, relative ? _parseRelative(startNum, relative + endValue) : endValue);\n\n continue;\n } else if (p === \"smoothOrigin\") {\n _addNonTweeningPT(this, cache, \"smooth\", cache.smooth, endValue);\n\n continue;\n } else if (p === \"force3D\") {\n cache[p] = endValue;\n continue;\n } else if (p === \"transform\") {\n _addRawTransformPTs(this, endValue, target);\n\n continue;\n }\n } else if (!(p in style)) {\n p = _checkPropPrefix(p) || p;\n }\n\n if (isTransformRelated || (endNum || endNum === 0) && (startNum || startNum === 0) && !_complexExp.test(endValue) && p in style) {\n startUnit = (startValue + \"\").substr((startNum + \"\").length);\n endNum || (endNum = 0); // protect against NaN\n\n endUnit = getUnit(endValue) || (p in _config.units ? _config.units[p] : startUnit);\n startUnit !== endUnit && (startNum = _convertToUnit(target, p, startValue, endUnit));\n this._pt = new PropTween(this._pt, isTransformRelated ? cache : style, p, startNum, (relative ? _parseRelative(startNum, relative + endNum) : endNum) - startNum, !isTransformRelated && (endUnit === \"px\" || p === \"zIndex\") && vars.autoRound !== false ? _renderRoundedCSSProp : _renderCSSProp);\n this._pt.u = endUnit || 0;\n\n if (startUnit !== endUnit && endUnit !== \"%\") {\n //when the tween goes all the way back to the beginning, we need to revert it to the OLD/ORIGINAL value (with those units). We record that as a \"b\" (beginning) property and point to a render method that handles that. (performance optimization)\n this._pt.b = startValue;\n this._pt.r = _renderCSSPropWithBeginning;\n }\n } else if (!(p in style)) {\n if (p in target) {\n //maybe it's not a style - it could be a property added directly to an element in which case we'll try to animate that.\n this.add(target, p, startValue || target[p], relative ? relative + endValue : endValue, index, targets);\n } else if (p !== \"parseTransform\") {\n _missingPlugin(p, endValue);\n\n continue;\n }\n } else {\n _tweenComplexCSSString.call(this, target, p, startValue, relative ? relative + endValue : endValue);\n }\n\n isTransformRelated || (p in style ? inlineProps.push(p, 0, style[p]) : inlineProps.push(p, 1, startValue || target[p]));\n props.push(p);\n }\n }\n\n hasPriority && _sortPropTweensByPriority(this);\n },\n render: function render(ratio, data) {\n if (data.tween._time || !_reverting()) {\n var pt = data._pt;\n\n while (pt) {\n pt.r(ratio, pt.d);\n pt = pt._next;\n }\n } else {\n data.styles.revert();\n }\n },\n get: _get,\n aliases: _propertyAliases,\n getSetter: function getSetter(target, property, plugin) {\n //returns a setter function that accepts target, property, value and applies it accordingly. Remember, properties like \"x\" aren't as simple as target.style.property = value because they've got to be applied to a proxy object and then merged into a transform string in a renderer.\n var p = _propertyAliases[property];\n p && p.indexOf(\",\") < 0 && (property = p);\n return property in _transformProps && property !== _transformOriginProp && (target._gsap.x || _get(target, \"x\")) ? plugin && _recentSetterPlugin === plugin ? property === \"scale\" ? _setterScale : _setterTransform : (_recentSetterPlugin = plugin || {}) && (property === \"scale\" ? _setterScaleWithRender : _setterTransformWithRender) : target.style && !_isUndefined(target.style[property]) ? _setterCSSStyle : ~property.indexOf(\"-\") ? _setterCSSProp : _getSetter(target, property);\n },\n core: {\n _removeProperty: _removeProperty,\n _getMatrix: _getMatrix\n }\n};\ngsap.utils.checkPrefix = _checkPropPrefix;\ngsap.core.getStyleSaver = _getStyleSaver;\n\n(function (positionAndScale, rotation, others, aliases) {\n var all = _forEachName(positionAndScale + \",\" + rotation + \",\" + others, function (name) {\n _transformProps[name] = 1;\n });\n\n _forEachName(rotation, function (name) {\n _config.units[name] = \"deg\";\n _rotationalProperties[name] = 1;\n });\n\n _propertyAliases[all[13]] = positionAndScale + \",\" + rotation;\n\n _forEachName(aliases, function (name) {\n var split = name.split(\":\");\n _propertyAliases[split[1]] = all[split[0]];\n });\n})(\"x,y,z,scale,scaleX,scaleY,xPercent,yPercent\", \"rotation,rotationX,rotationY,skewX,skewY\", \"transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective\", \"0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY\");\n\n_forEachName(\"x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective\", function (name) {\n _config.units[name] = \"px\";\n});\n\ngsap.registerPlugin(CSSPlugin);\nexport { CSSPlugin as default, _getBBox, _createElement, _checkPropPrefix as checkPrefix };","import { gsap, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ, TweenLite, TimelineLite, TimelineMax } from \"./gsap-core.js\";\nimport { CSSPlugin } from \"./CSSPlugin.js\";\nvar gsapWithCSS = gsap.registerPlugin(CSSPlugin) || gsap,\n // to protect from tree shaking\nTweenMaxWithCSS = gsapWithCSS.core.Tween;\nexport { gsapWithCSS as gsap, gsapWithCSS as default, CSSPlugin, TweenMaxWithCSS as TweenMax, TweenLite, TimelineMax, TimelineLite, Power0, Power1, Power2, Power3, Power4, Linear, Quad, Cubic, Quart, Quint, Strong, Elastic, Back, SteppedEase, Bounce, Sine, Expo, Circ };","export const version: string = \"14.7.77\";\n","import { TAbortErrorFactory } from '../types';\n\nexport const createAbortError: TAbortErrorFactory = () => new DOMException('', 'AbortError');\n","import { IAudioNode, IAudioWorkletProcessor, IAudioWorkletProcessorConstructor } from './interfaces';\nimport {\n TAudioNodeConnectionsStore,\n TAudioNodeStore,\n TAudioParamConnectionsStore,\n TAudioParamStore,\n TContext,\n TContextStore,\n TCycleCounters,\n TInternalStateEventListener,\n TNativeAudioWorkletNode,\n TNativeContext\n} from './types';\n\nexport const ACTIVE_AUDIO_NODE_STORE: WeakSet> = new WeakSet();\n\nexport const AUDIO_NODE_CONNECTIONS_STORE: TAudioNodeConnectionsStore = new WeakMap();\n\nexport const AUDIO_NODE_STORE: TAudioNodeStore = new WeakMap();\n\nexport const AUDIO_PARAM_CONNECTIONS_STORE: TAudioParamConnectionsStore = new WeakMap();\n\nexport const AUDIO_PARAM_STORE: TAudioParamStore = new WeakMap();\n\nexport const CONTEXT_STORE: TContextStore = new WeakMap();\n\nexport const EVENT_LISTENERS: WeakMap, Set> = new WeakMap();\n\nexport const CYCLE_COUNTERS: TCycleCounters = new WeakMap();\n\n// This clunky name is borrowed from the spec. :-)\nexport const NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS: WeakMap<\n TNativeContext,\n Map\n> = new WeakMap();\n\nexport const NODE_TO_PROCESSOR_MAPS: WeakMap<\n TNativeContext,\n WeakMap>\n> = new WeakMap();\n","import { TConstructor } from '../types';\n\nconst handler = {\n construct(): any {\n return handler;\n }\n};\n\nexport const isConstructible = (constructible: TConstructor): boolean => {\n try {\n const proxy = new Proxy(constructible, handler);\n\n new proxy(); // tslint:disable-line:no-unused-expression\n } catch {\n return false;\n }\n\n return true;\n};\n","/*\n * This massive regex tries to cover all the following cases.\n *\n * import './path';\n * import defaultImport from './path';\n * import { namedImport } from './path';\n * import { namedImport as renamendImport } from './path';\n * import * as namespaceImport from './path';\n * import defaultImport, { namedImport } from './path';\n * import defaultImport, { namedImport as renamendImport } from './path';\n * import defaultImport, * as namespaceImport from './path';\n */\nconst IMPORT_STATEMENT_REGEX = /^import(?:(?:[\\s]+[\\w]+|(?:[\\s]+[\\w]+[\\s]*,)?[\\s]*\\{[\\s]*[\\w]+(?:[\\s]+as[\\s]+[\\w]+)?(?:[\\s]*,[\\s]*[\\w]+(?:[\\s]+as[\\s]+[\\w]+)?)*[\\s]*}|(?:[\\s]+[\\w]+[\\s]*,)?[\\s]*\\*[\\s]+as[\\s]+[\\w]+)[\\s]+from)?(?:[\\s]*)(\"([^\"\\\\]|\\\\.)+\"|'([^'\\\\]|\\\\.)+')(?:[\\s]*);?/; // tslint:disable-line:max-line-length\n\nexport const splitImportStatements = (source: string, url: string): [string, string] => {\n const importStatements = [];\n\n let sourceWithoutImportStatements = source.replace(/^[\\s]+/, '');\n let result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX);\n\n while (result !== null) {\n const unresolvedUrl = result[1].slice(1, -1);\n\n const importStatementWithResolvedUrl = result[0]\n .replace(/([\\s]+)?;?$/, '')\n .replace(unresolvedUrl, new URL(unresolvedUrl, url).toString());\n importStatements.push(importStatementWithResolvedUrl);\n\n sourceWithoutImportStatements = sourceWithoutImportStatements.slice(result[0].length).replace(/^[\\s]+/, '');\n result = sourceWithoutImportStatements.match(IMPORT_STATEMENT_REGEX);\n }\n\n return [importStatements.join(';'), sourceWithoutImportStatements];\n};\n","import { NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS } from '../globals';\nimport { isConstructible } from '../helpers/is-constructible';\nimport { splitImportStatements } from '../helpers/split-import-statements';\nimport { IAudioWorkletProcessorConstructor } from '../interfaces';\nimport { TAddAudioWorkletModuleFactory, TEvaluateAudioWorkletGlobalScopeFunction } from '../types';\n\nconst verifyParameterDescriptors = (parameterDescriptors: IAudioWorkletProcessorConstructor['parameterDescriptors']) => {\n if (parameterDescriptors !== undefined && !Array.isArray(parameterDescriptors)) {\n throw new TypeError('The parameterDescriptors property of given value for processorCtor is not an array.');\n }\n};\n\nconst verifyProcessorCtor = (processorCtor: T) => {\n if (!isConstructible(processorCtor)) {\n throw new TypeError('The given value for processorCtor should be a constructor.');\n }\n\n if (processorCtor.prototype === null || typeof processorCtor.prototype !== 'object') {\n throw new TypeError('The given value for processorCtor should have a prototype.');\n }\n};\n\nexport const createAddAudioWorkletModule: TAddAudioWorkletModuleFactory = (\n cacheTestResult,\n createNotSupportedError,\n evaluateSource,\n exposeCurrentFrameAndCurrentTime,\n fetchSource,\n getNativeContext,\n getOrCreateBackupOfflineAudioContext,\n isNativeOfflineAudioContext,\n nativeAudioWorkletNodeConstructor,\n ongoingRequests,\n resolvedRequests,\n testAudioWorkletProcessorPostMessageSupport,\n window\n) => {\n let index = 0;\n\n return (context, moduleURL, options = { credentials: 'omit' }) => {\n const resolvedRequestsOfContext = resolvedRequests.get(context);\n\n if (resolvedRequestsOfContext !== undefined && resolvedRequestsOfContext.has(moduleURL)) {\n return Promise.resolve();\n }\n\n const ongoingRequestsOfContext = ongoingRequests.get(context);\n\n if (ongoingRequestsOfContext !== undefined) {\n const promiseOfOngoingRequest = ongoingRequestsOfContext.get(moduleURL);\n\n if (promiseOfOngoingRequest !== undefined) {\n return promiseOfOngoingRequest;\n }\n }\n\n const nativeContext = getNativeContext(context);\n\n // Bug #59: Safari does not implement the audioWorklet property.\n const promise =\n nativeContext.audioWorklet === undefined\n ? fetchSource(moduleURL)\n .then(([source, absoluteUrl]) => {\n const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl);\n\n /*\n * This is the unminified version of the code used below:\n *\n * ```js\n * ${ importStatements };\n * ((a, b) => {\n * (a[b] = a[b] || [ ]).push(\n * (AudioWorkletProcessor, global, registerProcessor, sampleRate, self, window) => {\n * ${ sourceWithoutImportStatements }\n * }\n * );\n * })(window, '_AWGS');\n * ```\n */\n // tslint:disable-next-line:max-line-length\n const wrappedSource = `${importStatements};((a,b)=>{(a[b]=a[b]||[]).push((AudioWorkletProcessor,global,registerProcessor,sampleRate,self,window)=>{${sourceWithoutImportStatements}\n})})(window,'_AWGS')`;\n\n // @todo Evaluating the given source code is a possible security problem.\n return evaluateSource(wrappedSource);\n })\n .then(() => {\n const evaluateAudioWorkletGlobalScope = ((window)._AWGS).pop();\n\n if (evaluateAudioWorkletGlobalScope === undefined) {\n // Bug #182 Chrome and Edge do throw an instance of a SyntaxError instead of a DOMException.\n throw new SyntaxError();\n }\n\n exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () =>\n evaluateAudioWorkletGlobalScope(\n class AudioWorkletProcessor {},\n undefined,\n (name, processorCtor) => {\n if (name.trim() === '') {\n throw createNotSupportedError();\n }\n\n const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext);\n\n if (nodeNameToProcessorConstructorMap !== undefined) {\n if (nodeNameToProcessorConstructorMap.has(name)) {\n throw createNotSupportedError();\n }\n\n verifyProcessorCtor(processorCtor);\n verifyParameterDescriptors(processorCtor.parameterDescriptors);\n\n nodeNameToProcessorConstructorMap.set(name, processorCtor);\n } else {\n verifyProcessorCtor(processorCtor);\n verifyParameterDescriptors(processorCtor.parameterDescriptors);\n\n NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.set(nativeContext, new Map([[name, processorCtor]]));\n }\n },\n nativeContext.sampleRate,\n undefined,\n undefined\n )\n );\n })\n : Promise.all([\n fetchSource(moduleURL),\n Promise.resolve(\n cacheTestResult(testAudioWorkletProcessorPostMessageSupport, testAudioWorkletProcessorPostMessageSupport)\n )\n ]).then(([[source, absoluteUrl], isSupportingPostMessage]) => {\n const currentIndex = index + 1;\n\n index = currentIndex;\n\n const [importStatements, sourceWithoutImportStatements] = splitImportStatements(source, absoluteUrl);\n /*\n * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\n *\n * This is the unminified version of the code used below.\n *\n * ```js\n * class extends AudioWorkletProcessor {\n *\n * __buffers = new WeakSet();\n *\n * constructor () {\n * super();\n *\n * this.port.postMessage = ((postMessage) => {\n * return (message, transferables) => {\n * const filteredTransferables = (transferables)\n * ? transferables.filter((transferable) => !this.__buffers.has(transferable))\n * : transferables;\n *\n * return postMessage.call(this.port, message, filteredTransferables);\n * };\n * })(this.port.postMessage);\n * }\n * }\n * ```\n */\n const patchedAudioWorkletProcessor = isSupportingPostMessage\n ? 'AudioWorkletProcessor'\n : 'class extends AudioWorkletProcessor {__b=new WeakSet();constructor(){super();(p=>p.postMessage=(q=>(m,t)=>q.call(p,m,t?t.filter(u=>!this.__b.has(u)):t))(p.postMessage))(this.port)}}';\n /*\n * Bug #170: Chrome and Edge do call process() with an array with empty channelData for each input if no input is connected.\n *\n * Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\n *\n * Bug #190: Safari doesn't throw an error when loading an unparsable module.\n *\n * This is the unminified version of the code used below:\n *\n * ```js\n * `${ importStatements };\n * ((AudioWorkletProcessor, registerProcessor) => {${ sourceWithoutImportStatements }\n * })(\n * ${ patchedAudioWorkletProcessor },\n * (name, processorCtor) => registerProcessor(name, class extends processorCtor {\n *\n * __collectBuffers = (array) => {\n * array.forEach((element) => this.__buffers.add(element.buffer));\n * };\n *\n * process (inputs, outputs, parameters) {\n * inputs.forEach(this.__collectBuffers);\n * outputs.forEach(this.__collectBuffers);\n * this.__collectBuffers(Object.values(parameters));\n *\n * return super.process(\n * (inputs.map((input) => input.some((channelData) => channelData.length === 0)) ? [ ] : input),\n * outputs,\n * parameters\n * );\n * }\n *\n * })\n * );\n *\n * registerProcessor(`__sac${currentIndex}`, class extends AudioWorkletProcessor{\n *\n * process () {\n * return false;\n * }\n *\n * })`\n * ```\n */\n const memberDefinition = isSupportingPostMessage ? '' : '__c = (a) => a.forEach(e=>this.__b.add(e.buffer));';\n const bufferRegistration = isSupportingPostMessage\n ? ''\n : 'i.forEach(this.__c);o.forEach(this.__c);this.__c(Object.values(p));';\n const wrappedSource = `${importStatements};((AudioWorkletProcessor,registerProcessor)=>{${sourceWithoutImportStatements}\n})(${patchedAudioWorkletProcessor},(n,p)=>registerProcessor(n,class extends p{${memberDefinition}process(i,o,p){${bufferRegistration}return super.process(i.map(j=>j.some(k=>k.length===0)?[]:j),o,p)}}));registerProcessor('__sac${currentIndex}',class extends AudioWorkletProcessor{process(){return !1}})`;\n const blob = new Blob([wrappedSource], { type: 'application/javascript; charset=utf-8' });\n const url = URL.createObjectURL(blob);\n\n return nativeContext.audioWorklet\n .addModule(url, options)\n .then(() => {\n if (isNativeOfflineAudioContext(nativeContext)) {\n return nativeContext;\n }\n\n // Bug #186: Chrome and Edge do not allow to create an AudioWorkletNode on a closed AudioContext.\n const backupOfflineAudioContext = getOrCreateBackupOfflineAudioContext(nativeContext);\n\n return backupOfflineAudioContext.audioWorklet.addModule(url, options).then(() => backupOfflineAudioContext);\n })\n .then((nativeContextOrBackupOfflineAudioContext) => {\n if (nativeAudioWorkletNodeConstructor === null) {\n throw new SyntaxError();\n }\n\n try {\n // Bug #190: Safari doesn't throw an error when loading an unparsable module.\n new nativeAudioWorkletNodeConstructor(nativeContextOrBackupOfflineAudioContext, `__sac${currentIndex}`); // tslint:disable-line:no-unused-expression\n } catch {\n throw new SyntaxError();\n }\n })\n .finally(() => URL.revokeObjectURL(url));\n });\n\n if (ongoingRequestsOfContext === undefined) {\n ongoingRequests.set(context, new Map([[moduleURL, promise]]));\n } else {\n ongoingRequestsOfContext.set(moduleURL, promise);\n }\n\n promise\n .then(() => {\n const updatedResolvedRequestsOfContext = resolvedRequests.get(context);\n\n if (updatedResolvedRequestsOfContext === undefined) {\n resolvedRequests.set(context, new Set([moduleURL]));\n } else {\n updatedResolvedRequestsOfContext.add(moduleURL);\n }\n })\n .finally(() => {\n const updatedOngoingRequestsOfContext = ongoingRequests.get(context);\n\n if (updatedOngoingRequestsOfContext !== undefined) {\n updatedOngoingRequestsOfContext.delete(moduleURL);\n }\n });\n\n return promise;\n };\n};\n","import { TGetValueForKeyFunction } from '../types';\n\nexport const getValueForKey: TGetValueForKeyFunction = (map, key) => {\n const value = map.get(key);\n\n if (value === undefined) {\n throw new Error('A value with the given key could not be found.');\n }\n\n return value;\n};\n","import { TPickElementFromSetFunction } from '../types';\n\nexport const pickElementFromSet: TPickElementFromSetFunction = (set, predicate) => {\n const matchingElements = Array.from(set).filter(predicate);\n\n if (matchingElements.length > 1) {\n throw Error('More than one element was found.');\n }\n\n if (matchingElements.length === 0) {\n throw Error('No element was found.');\n }\n\n const [matchingElement] = matchingElements;\n\n set.delete(matchingElement);\n\n return matchingElement;\n};\n","import { IAudioNode } from '../interfaces';\nimport { TContext, TPassiveAudioNodeInputConnection } from '../types';\nimport { getValueForKey } from './get-value-for-key';\nimport { pickElementFromSet } from './pick-element-from-set';\n\nexport const deletePassiveInputConnectionToAudioNode = (\n passiveInputs: WeakMap, Set>,\n source: IAudioNode,\n output: number,\n input: number\n) => {\n const passiveInputConnections = getValueForKey(passiveInputs, source);\n const matchingConnection = pickElementFromSet(\n passiveInputConnections,\n (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input\n );\n\n if (passiveInputConnections.size === 0) {\n passiveInputs.delete(source);\n }\n\n return matchingConnection;\n};\n","import { EVENT_LISTENERS } from '../globals';\nimport { TGetEventListenersOfAudioNodeFunction } from '../types';\nimport { getValueForKey } from './get-value-for-key';\n\nexport const getEventListenersOfAudioNode: TGetEventListenersOfAudioNodeFunction = (audioNode) => {\n return getValueForKey(EVENT_LISTENERS, audioNode);\n};\n","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { IAudioNode } from '../interfaces';\nimport { TContext } from '../types';\nimport { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\n\nexport const setInternalStateToActive = (audioNode: IAudioNode) => {\n if (ACTIVE_AUDIO_NODE_STORE.has(audioNode)) {\n throw new Error('The AudioNode is already stored.');\n }\n\n ACTIVE_AUDIO_NODE_STORE.add(audioNode);\n\n getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(true));\n};\n","import { IAudioNode, IAudioWorkletNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isAudioWorkletNode = (audioNode: IAudioNode): audioNode is IAudioWorkletNode => {\n return 'port' in audioNode;\n};\n","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { IAudioNode } from '../interfaces';\nimport { TContext } from '../types';\nimport { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\n\nexport const setInternalStateToPassive = (audioNode: IAudioNode) => {\n if (!ACTIVE_AUDIO_NODE_STORE.has(audioNode)) {\n throw new Error('The AudioNode is not stored.');\n }\n\n ACTIVE_AUDIO_NODE_STORE.delete(audioNode);\n\n getEventListenersOfAudioNode(audioNode).forEach((eventListener) => eventListener(false));\n};\n","import { isAudioWorkletNode } from '../guards/audio-worklet-node';\nimport { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection, TContext } from '../types';\nimport { setInternalStateToPassive } from './set-internal-state-to-passive';\n\n// Set the internalState of the audioNode to 'passive' if it is not an AudioWorkletNode and if it has no 'active' input connections.\nexport const setInternalStateToPassiveWhenNecessary = (\n audioNode: IAudioNode,\n activeInputs: Set>[]\n) => {\n if (!isAudioWorkletNode(audioNode) && activeInputs.every((connections) => connections.size === 0)) {\n setInternalStateToPassive(audioNode);\n }\n};\n","import { IAnalyserNode, IAnalyserOptions } from '../interfaces';\nimport { TAnalyserNodeConstructorFactory, TAudioNodeRenderer, TContext, TNativeAnalyserNode } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n fftSize: 2048,\n maxDecibels: -30,\n minDecibels: -100,\n smoothingTimeConstant: 0.8\n} as const;\n\nexport const createAnalyserNodeConstructor: TAnalyserNodeConstructorFactory = (\n audionNodeConstructor,\n createAnalyserNodeRenderer,\n createIndexSizeError,\n createNativeAnalyserNode,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class AnalyserNode extends audionNodeConstructor implements IAnalyserNode {\n private _nativeAnalyserNode: TNativeAnalyserNode;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeAnalyserNode = createNativeAnalyserNode(nativeContext, mergedOptions);\n const analyserNodeRenderer = >(\n (isNativeOfflineAudioContext(nativeContext) ? createAnalyserNodeRenderer() : null)\n );\n\n super(context, false, nativeAnalyserNode, analyserNodeRenderer);\n\n this._nativeAnalyserNode = nativeAnalyserNode;\n }\n\n get fftSize(): number {\n return this._nativeAnalyserNode.fftSize;\n }\n\n set fftSize(value) {\n this._nativeAnalyserNode.fftSize = value;\n }\n\n get frequencyBinCount(): number {\n return this._nativeAnalyserNode.frequencyBinCount;\n }\n\n get maxDecibels(): number {\n return this._nativeAnalyserNode.maxDecibels;\n }\n\n set maxDecibels(value) {\n // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels.\n const maxDecibels = this._nativeAnalyserNode.maxDecibels;\n\n this._nativeAnalyserNode.maxDecibels = value;\n\n if (!(value > this._nativeAnalyserNode.minDecibels)) {\n this._nativeAnalyserNode.maxDecibels = maxDecibels;\n\n throw createIndexSizeError();\n }\n }\n\n get minDecibels(): number {\n return this._nativeAnalyserNode.minDecibels;\n }\n\n set minDecibels(value) {\n // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels.\n const minDecibels = this._nativeAnalyserNode.minDecibels;\n\n this._nativeAnalyserNode.minDecibels = value;\n\n if (!(this._nativeAnalyserNode.maxDecibels > value)) {\n this._nativeAnalyserNode.minDecibels = minDecibels;\n\n throw createIndexSizeError();\n }\n }\n\n get smoothingTimeConstant(): number {\n return this._nativeAnalyserNode.smoothingTimeConstant;\n }\n\n set smoothingTimeConstant(value) {\n this._nativeAnalyserNode.smoothingTimeConstant = value;\n }\n\n public getByteFrequencyData(array: Uint8Array): void {\n this._nativeAnalyserNode.getByteFrequencyData(array);\n }\n\n public getByteTimeDomainData(array: Uint8Array): void {\n this._nativeAnalyserNode.getByteTimeDomainData(array);\n }\n\n public getFloatFrequencyData(array: Float32Array): void {\n this._nativeAnalyserNode.getFloatFrequencyData(array);\n }\n\n public getFloatTimeDomainData(array: Float32Array): void {\n this._nativeAnalyserNode.getFloatTimeDomainData(array);\n }\n };\n};\n","import { TNativeAudioNode, TNativeContext } from '../types';\n\nexport const isOwnedByContext = (nativeAudioNode: TNativeAudioNode, nativeContext: TNativeContext): boolean => {\n return nativeAudioNode.context === nativeContext;\n};\n","import { TNativeAudioBuffer } from '../types';\n\nexport const testAudioBufferCopyChannelMethodsOutOfBoundsSupport = (nativeAudioBuffer: TNativeAudioBuffer): boolean => {\n try {\n nativeAudioBuffer.copyToChannel(new Float32Array(1), 0, -1);\n } catch {\n return false;\n }\n\n return true;\n};\n","import { TIndexSizeErrorFactory } from '../types';\n\nexport const createIndexSizeError: TIndexSizeErrorFactory = () => new DOMException('', 'IndexSizeError');\n","import { createIndexSizeError } from '../factories/index-size-error';\nimport { TNativeAudioBuffer } from '../types';\n\nexport const wrapAudioBufferGetChannelDataMethod = (audioBuffer: TNativeAudioBuffer): void => {\n audioBuffer.getChannelData = ((getChannelData) => {\n return (channel: number) => {\n try {\n return getChannelData.call(audioBuffer, channel);\n } catch (err) {\n if (err.code === 12) {\n throw createIndexSizeError();\n }\n\n throw err;\n }\n };\n })(audioBuffer.getChannelData);\n};\n","import { testAudioBufferCopyChannelMethodsOutOfBoundsSupport } from '../helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support';\nimport { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nimport { IAudioBuffer, IAudioBufferOptions } from '../interfaces';\nimport { TAudioBufferConstructorFactory, TNativeOfflineAudioContext } from '../types';\n\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n} as const;\n\nexport const createAudioBufferConstructor: TAudioBufferConstructorFactory = (\n audioBufferStore,\n cacheTestResult,\n createNotSupportedError,\n nativeAudioBufferConstructor,\n nativeOfflineAudioContextConstructor,\n testNativeAudioBufferConstructorSupport,\n wrapAudioBufferCopyChannelMethods,\n wrapAudioBufferCopyChannelMethodsOutOfBounds\n) => {\n let nativeOfflineAudioContext: null | TNativeOfflineAudioContext = null;\n\n return class AudioBuffer implements IAudioBuffer {\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public copyFromChannel!: (destination: Float32Array, channelNumber: number, bufferOffset?: number) => void;\n\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public copyToChannel!: (source: Float32Array, channelNumber: number, bufferOffset?: number) => void;\n\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public duration!: number;\n\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public getChannelData!: (channel: number) => Float32Array;\n\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public length!: number;\n\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public numberOfChannels!: number;\n\n // This field needs to be defined to convince TypeScript that the IAudioBuffer will be implemented.\n public sampleRate!: number;\n\n constructor(options: IAudioBufferOptions) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n\n if (nativeOfflineAudioContext === null) {\n nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n }\n\n /*\n * Bug #99: Firefox does not throw a NotSupportedError when the numberOfChannels is zero. But it only does it when using the\n * factory function. But since Firefox also supports the constructor everything should be fine.\n */\n const audioBuffer =\n nativeAudioBufferConstructor !== null &&\n cacheTestResult(testNativeAudioBufferConstructorSupport, testNativeAudioBufferConstructorSupport)\n ? new nativeAudioBufferConstructor({ length, numberOfChannels, sampleRate })\n : nativeOfflineAudioContext.createBuffer(numberOfChannels, length, sampleRate);\n\n // Bug #99: Safari does not throw an error when the numberOfChannels is zero.\n if (audioBuffer.numberOfChannels === 0) {\n throw createNotSupportedError();\n }\n\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n } else if (\n !cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () =>\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer)\n )\n ) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n\n audioBufferStore.add(audioBuffer);\n\n /*\n * This does violate all good pratices but it is necessary to allow this AudioBuffer to be used with native\n * (Offline)AudioContexts.\n */\n return audioBuffer;\n }\n\n public static [Symbol.hasInstance](instance: unknown): boolean {\n return (\n (instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === AudioBuffer.prototype) ||\n audioBufferStore.has(instance)\n );\n }\n };\n};\n","export const MOST_NEGATIVE_SINGLE_FLOAT = -3.4028234663852886e38;\n\nexport const MOST_POSITIVE_SINGLE_FLOAT = -MOST_NEGATIVE_SINGLE_FLOAT;\n","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { TIsActiveAudioNodeFunction } from '../types';\n\nexport const isActiveAudioNode: TIsActiveAudioNodeFunction = (audioNode) => ACTIVE_AUDIO_NODE_STORE.has(audioNode);\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nimport { IAudioBufferSourceNode, IAudioBufferSourceOptions, IAudioParam, IAudioScheduledSourceNodeEventMap } from '../interfaces';\nimport {\n TAnyAudioBuffer,\n TAudioBufferSourceNodeConstructorFactory,\n TAudioBufferSourceNodeRenderer,\n TContext,\n TEventHandler,\n TNativeAudioBufferSourceNode\n} from '../types';\n\nconst DEFAULT_OPTIONS = {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n // Bug #149: Safari does not yet support the detune AudioParam.\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n} as const;\n\nexport const createAudioBufferSourceNodeConstructor: TAudioBufferSourceNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioBufferSourceNodeRenderer,\n createAudioParam,\n createInvalidStateError,\n createNativeAudioBufferSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n wrapEventListener\n) => {\n return class AudioBufferSourceNode\n extends audioNodeConstructor\n implements IAudioBufferSourceNode\n {\n private _audioBufferSourceNodeRenderer: TAudioBufferSourceNodeRenderer;\n\n private _isBufferNullified: boolean;\n\n private _isBufferSet: boolean;\n\n private _nativeAudioBufferSourceNode: TNativeAudioBufferSourceNode;\n\n private _onended: null | TEventHandler;\n\n private _playbackRate: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const audioBufferSourceNodeRenderer = >(\n (isOffline ? createAudioBufferSourceNodeRenderer() : null)\n );\n\n super(context, false, nativeAudioBufferSourceNode, audioBufferSourceNodeRenderer);\n\n this._audioBufferSourceNodeRenderer = audioBufferSourceNodeRenderer;\n this._isBufferNullified = false;\n this._isBufferSet = mergedOptions.buffer !== null;\n this._nativeAudioBufferSourceNode = nativeAudioBufferSourceNode;\n this._onended = null;\n // Bug #73: Safari does not export the correct values for maxValue and minValue.\n this._playbackRate = createAudioParam(\n this,\n isOffline,\n nativeAudioBufferSourceNode.playbackRate,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n }\n\n get buffer(): null | TAnyAudioBuffer {\n if (this._isBufferNullified) {\n return null;\n }\n\n return this._nativeAudioBufferSourceNode.buffer;\n }\n\n set buffer(value) {\n this._nativeAudioBufferSourceNode.buffer = value;\n\n // Bug #72: Only Chrome & Edge do not allow to reassign the buffer yet.\n if (value !== null) {\n if (this._isBufferSet) {\n throw createInvalidStateError();\n }\n\n this._isBufferSet = true;\n }\n }\n\n get loop(): boolean {\n return this._nativeAudioBufferSourceNode.loop;\n }\n\n set loop(value) {\n this._nativeAudioBufferSourceNode.loop = value;\n }\n\n get loopEnd(): number {\n return this._nativeAudioBufferSourceNode.loopEnd;\n }\n\n set loopEnd(value) {\n this._nativeAudioBufferSourceNode.loopEnd = value;\n }\n\n get loopStart(): number {\n return this._nativeAudioBufferSourceNode.loopStart;\n }\n\n set loopStart(value) {\n this._nativeAudioBufferSourceNode.loopStart = value;\n }\n\n get onended(): null | TEventHandler {\n return this._onended;\n }\n\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n\n this._nativeAudioBufferSourceNode.onended = wrappedListener;\n\n const nativeOnEnded = this._nativeAudioBufferSourceNode.onended;\n\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n\n get playbackRate(): IAudioParam {\n return this._playbackRate;\n }\n\n public start(when = 0, offset = 0, duration?: number): void {\n this._nativeAudioBufferSourceNode.start(when, offset, duration);\n\n if (this._audioBufferSourceNodeRenderer !== null) {\n this._audioBufferSourceNodeRenderer.start = duration === undefined ? [when, offset] : [when, offset, duration];\n }\n\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n\n const resetInternalStateToPassive = () => {\n this._nativeAudioBufferSourceNode.removeEventListener('ended', resetInternalStateToPassive);\n\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n\n this._nativeAudioBufferSourceNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n\n public stop(when = 0): void {\n this._nativeAudioBufferSourceNode.stop(when);\n\n if (this._audioBufferSourceNodeRenderer !== null) {\n this._audioBufferSourceNodeRenderer.stop = when;\n }\n }\n };\n};\n","import { AUDIO_NODE_CONNECTIONS_STORE } from '../globals';\nimport { IAudioNode } from '../interfaces';\nimport { TAudioNodeConnections, TContext, TGetAudioNodeConnectionsFunction } from '../types';\nimport { getValueForKey } from './get-value-for-key';\n\nexport const getAudioNodeConnections: TGetAudioNodeConnectionsFunction = (\n audioNode: IAudioNode\n): TAudioNodeConnections => {\n return >getValueForKey(AUDIO_NODE_CONNECTIONS_STORE, audioNode);\n};\n","import { AUDIO_PARAM_CONNECTIONS_STORE } from '../globals';\nimport { IAudioParam } from '../interfaces';\nimport { TAudioParamConnections, TContext, TGetAudioParamConnectionsFunction } from '../types';\nimport { getValueForKey } from './get-value-for-key';\n\nexport const getAudioParamConnections: TGetAudioParamConnectionsFunction = (\n audioParam: IAudioParam\n): TAudioParamConnections => {\n return >getValueForKey(AUDIO_PARAM_CONNECTIONS_STORE, audioParam);\n};\n","import { isAudioBufferSourceNode } from '../guards/audio-buffer-source-node';\nimport { isAudioWorkletNode } from '../guards/audio-worklet-node';\nimport { isBiquadFilterNode } from '../guards/biquad-filter-node';\nimport { isConstantSourceNode } from '../guards/constant-source-node';\nimport { isGainNode } from '../guards/gain-node';\nimport { isOscillatorNode } from '../guards/oscillator-node';\nimport { isStereoPannerNode } from '../guards/stereo-panner-node';\nimport { IAudioNode } from '../interfaces';\nimport { TContext } from '../types';\nimport { getAudioNodeConnections } from './get-audio-node-connections';\nimport { getAudioParamConnections } from './get-audio-param-connections';\nimport { isActiveAudioNode } from './is-active-audio-node';\nimport { setInternalStateToPassive } from './set-internal-state-to-passive';\n\nexport const deactivateActiveAudioNodeInputConnections = (\n audioNode: IAudioNode,\n trace: readonly IAudioNode[]\n) => {\n const { activeInputs } = getAudioNodeConnections(audioNode);\n\n activeInputs.forEach((connections) =>\n connections.forEach(([source]) => {\n if (!trace.includes(audioNode)) {\n deactivateActiveAudioNodeInputConnections(source, [...trace, audioNode]);\n }\n })\n );\n\n const audioParams = isAudioBufferSourceNode(audioNode)\n ? [\n // Bug #149: Safari does not yet support the detune AudioParam.\n audioNode.playbackRate\n ]\n : isAudioWorkletNode(audioNode)\n ? Array.from(audioNode.parameters.values())\n : isBiquadFilterNode(audioNode)\n ? [audioNode.Q, audioNode.detune, audioNode.frequency, audioNode.gain]\n : isConstantSourceNode(audioNode)\n ? [audioNode.offset]\n : isGainNode(audioNode)\n ? [audioNode.gain]\n : isOscillatorNode(audioNode)\n ? [audioNode.detune, audioNode.frequency]\n : isStereoPannerNode(audioNode)\n ? [audioNode.pan]\n : [];\n\n for (const audioParam of audioParams) {\n const audioParamConnections = getAudioParamConnections(audioParam);\n\n if (audioParamConnections !== undefined) {\n audioParamConnections.activeInputs.forEach(([source]) => deactivateActiveAudioNodeInputConnections(source, trace));\n }\n }\n\n if (isActiveAudioNode(audioNode)) {\n setInternalStateToPassive(audioNode);\n }\n};\n","import { IAudioBufferSourceNode, IAudioNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isAudioBufferSourceNode = (audioNode: IAudioNode): audioNode is IAudioBufferSourceNode => {\n return 'playbackRate' in audioNode;\n};\n","import { IAudioNode, IBiquadFilterNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isBiquadFilterNode = (audioNode: IAudioNode): audioNode is IBiquadFilterNode => {\n return 'frequency' in audioNode && 'gain' in audioNode;\n};\n","import { IAudioNode, IConstantSourceNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isConstantSourceNode = (audioNode: IAudioNode): audioNode is IConstantSourceNode => {\n return 'offset' in audioNode;\n};\n","import { IAudioNode, IGainNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isGainNode = (audioNode: IAudioNode): audioNode is IGainNode => {\n return !('frequency' in audioNode) && 'gain' in audioNode;\n};\n","import { IAudioNode, IOscillatorNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isOscillatorNode = (audioNode: IAudioNode): audioNode is IOscillatorNode => {\n return 'detune' in audioNode && 'frequency' in audioNode;\n};\n","import { IAudioNode, IStereoPannerNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isStereoPannerNode = (audioNode: IAudioNode): audioNode is IStereoPannerNode => {\n return 'pan' in audioNode;\n};\n","import { IAudioDestinationNode } from '../interfaces';\nimport { TContext } from '../types';\nimport { deactivateActiveAudioNodeInputConnections } from './deactivate-active-audio-node-input-connections';\n\nexport const deactivateAudioGraph = (context: T): void => {\n deactivateActiveAudioNodeInputConnections(>context.destination, []);\n};\n","import { IAudioContextOptions } from '../interfaces';\n\nexport const isValidLatencyHint = (latencyHint: IAudioContextOptions['latencyHint']) => {\n return (\n latencyHint === undefined ||\n typeof latencyHint === 'number' ||\n (typeof latencyHint === 'string' && (latencyHint === 'balanced' || latencyHint === 'interactive' || latencyHint === 'playback'))\n );\n};\n","import { IAudioNode, IAudioParam } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isAudioNode = (\n audioNodeOrAudioParam: IAudioNode | IAudioParam\n): audioNodeOrAudioParam is IAudioNode => {\n return 'context' in audioNodeOrAudioParam;\n};\n","import { TAudioNodeOutputConnection, TContext, TOutputConnection } from '../types';\nimport { isAudioNode } from './audio-node';\n\nexport const isAudioNodeOutputConnection = (\n outputConnection: TOutputConnection\n): outputConnection is TAudioNodeOutputConnection => {\n return isAudioNode(outputConnection[0]);\n};\n","import { TInsertElementInSetFunction } from '../types';\n\nexport const insertElementInSet: TInsertElementInSetFunction = (set, element, predicate, ignoreDuplicates) => {\n for (const lmnt of set) {\n if (predicate(lmnt)) {\n if (ignoreDuplicates) {\n return false;\n }\n\n throw Error('The set contains at least one similar element.');\n }\n }\n\n set.add(element);\n\n return true;\n};\n","import { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection, TContext, TPassiveAudioParamInputConnection } from '../types';\nimport { insertElementInSet } from './insert-element-in-set';\n\nexport const addActiveInputConnectionToAudioParam = (\n activeInputs: Set>,\n source: IAudioNode,\n [output, eventListener]: TPassiveAudioParamInputConnection,\n ignoreDuplicates: boolean\n) => {\n insertElementInSet(\n activeInputs,\n [source, output, eventListener],\n (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output,\n ignoreDuplicates\n );\n};\n","import { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection, TContext, TPassiveAudioParamInputConnection } from '../types';\nimport { insertElementInSet } from './insert-element-in-set';\n\nexport const addPassiveInputConnectionToAudioParam = (\n passiveInputs: WeakMap, Set>,\n [source, output, eventListener]: TActiveInputConnection,\n ignoreDuplicates: boolean\n) => {\n const passiveInputConnections = passiveInputs.get(source);\n\n if (passiveInputConnections === undefined) {\n passiveInputs.set(source, new Set([[output, eventListener]]));\n } else {\n insertElementInSet(\n passiveInputConnections,\n [output, eventListener],\n (passiveInputConnection) => passiveInputConnection[0] === output,\n ignoreDuplicates\n );\n }\n};\n","import { INativeAudioNodeFaker } from '../interfaces';\nimport { TNativeAudioNode } from '../types';\n\nexport const isNativeAudioNodeFaker = (\n nativeAudioNodeOrNativeAudioNodeFaker: TNativeAudioNode | INativeAudioNodeFaker\n): nativeAudioNodeOrNativeAudioNodeFaker is INativeAudioNodeFaker => {\n return 'inputs' in nativeAudioNodeOrNativeAudioNodeFaker;\n};\n","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { INativeAudioNodeFaker } from '../interfaces';\nimport { TConnectNativeAudioNodeToNativeAudioNodeFunction, TNativeAudioNode } from '../types';\n\nexport const connectNativeAudioNodeToNativeAudioNode: TConnectNativeAudioNodeToNativeAudioNodeFunction = (\n nativeSourceAudioNode: INativeAudioNodeFaker | TNativeAudioNode,\n nativeDestinationAudioNode: INativeAudioNodeFaker | TNativeAudioNode,\n output: number,\n input: number\n): [TNativeAudioNode, number, number] => {\n if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) {\n const fakeNativeDestinationAudioNode = nativeDestinationAudioNode.inputs[input];\n\n nativeSourceAudioNode.connect(fakeNativeDestinationAudioNode, output, 0);\n\n return [fakeNativeDestinationAudioNode, output, 0];\n }\n\n nativeSourceAudioNode.connect(nativeDestinationAudioNode, output, input);\n\n return [nativeDestinationAudioNode, output, input];\n};\n","import { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection, TContext } from '../types';\n\nexport const deleteActiveInputConnection = (\n activeInputConnections: Set>,\n source: IAudioNode,\n output: number\n): null | TActiveInputConnection => {\n for (const activeInputConnection of activeInputConnections) {\n if (activeInputConnection[0] === source && activeInputConnection[1] === output) {\n activeInputConnections.delete(activeInputConnection);\n\n return activeInputConnection;\n }\n }\n\n return null;\n};\n","import { IAudioNode } from '../interfaces';\nimport { TContext, TInternalStateEventListener } from '../types';\nimport { getEventListenersOfAudioNode } from './get-event-listeners-of-audio-node';\n\nexport const deleteEventListenerOfAudioNode = (\n audioNode: IAudioNode,\n eventListener: TInternalStateEventListener\n) => {\n const eventListeners = getEventListenersOfAudioNode(audioNode);\n\n if (!eventListeners.delete(eventListener)) {\n throw new Error('Missing the expected event listener.');\n }\n};\n","import { IAudioNode } from '../interfaces';\nimport { TContext, TPassiveAudioParamInputConnection } from '../types';\nimport { getValueForKey } from './get-value-for-key';\nimport { pickElementFromSet } from './pick-element-from-set';\n\nexport const deletePassiveInputConnectionToAudioParam = (\n passiveInputs: WeakMap, Set>,\n source: IAudioNode,\n output: number\n) => {\n const passiveInputConnections = getValueForKey(passiveInputs, source);\n const matchingConnection = pickElementFromSet(\n passiveInputConnections,\n (passiveInputConnection) => passiveInputConnection[0] === output\n );\n\n if (passiveInputConnections.size === 0) {\n passiveInputs.delete(source);\n }\n\n return matchingConnection;\n};\n","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { TDisconnectNativeAudioNodeFromNativeAudioNodeFunction } from '../types';\n\nexport const disconnectNativeAudioNodeFromNativeAudioNode: TDisconnectNativeAudioNodeFromNativeAudioNodeFunction = (\n nativeSourceAudioNode,\n nativeDestinationAudioNode,\n output,\n input\n) => {\n if (isNativeAudioNodeFaker(nativeDestinationAudioNode)) {\n nativeSourceAudioNode.disconnect(nativeDestinationAudioNode.inputs[input], output, 0);\n } else {\n nativeSourceAudioNode.disconnect(nativeDestinationAudioNode, output, input);\n }\n};\n","import { AUDIO_NODE_STORE } from '../globals';\nimport { IAudioNode, INativeAudioNodeFaker } from '../interfaces';\nimport { TContext, TGetNativeAudioNodeFunction, TNativeAudioNode } from '../types';\nimport { getValueForKey } from './get-value-for-key';\n\nexport const getNativeAudioNode: TGetNativeAudioNodeFunction = (\n audioNode: IAudioNode\n): U => {\n return getValueForKey(AUDIO_NODE_STORE, audioNode);\n};\n","import { AUDIO_PARAM_STORE } from '../globals';\nimport { IAudioParam } from '../interfaces';\nimport { TNativeAudioParam } from '../types';\nimport { getValueForKey } from './get-value-for-key';\n\nexport const getNativeAudioParam = (audioParam: IAudioParam): TNativeAudioParam => {\n return getValueForKey(AUDIO_PARAM_STORE, audioParam);\n};\n","import { CYCLE_COUNTERS } from '../globals';\nimport { TIsPartOfACycleFunction } from '../types';\n\nexport const isPartOfACycle: TIsPartOfACycleFunction = (audioNode) => {\n return CYCLE_COUNTERS.has(audioNode);\n};\n","import { ACTIVE_AUDIO_NODE_STORE } from '../globals';\nimport { TIsPassiveAudioNodeFunction } from '../types';\n\nexport const isPassiveAudioNode: TIsPassiveAudioNodeFunction = (audioNode) => {\n return !ACTIVE_AUDIO_NODE_STORE.has(audioNode);\n};\n","import { TNativeAudioContext, TNativeAudioWorkletNodeConstructor } from '../types';\n\nexport const testAudioNodeDisconnectMethodSupport = (\n nativeAudioContext: TNativeAudioContext,\n nativeAudioWorkletNodeConstructor: null | TNativeAudioWorkletNodeConstructor\n): Promise => {\n return new Promise((resolve) => {\n /*\n * This bug existed in Safari up until v14.0.2. Since AudioWorklets were not supported in Safari until v14.1 the presence of the\n * constructor for an AudioWorkletNode can be used here to skip the test.\n */\n if (nativeAudioWorkletNodeConstructor !== null) {\n resolve(true);\n } else {\n const analyzer = nativeAudioContext.createScriptProcessor(256, 1, 1); // tslint:disable-line deprecation\n const dummy = nativeAudioContext.createGain();\n // Bug #95: Safari does not play one sample buffers.\n const ones = nativeAudioContext.createBuffer(1, 2, 44100);\n const channelData = ones.getChannelData(0);\n\n channelData[0] = 1;\n channelData[1] = 1;\n\n const source = nativeAudioContext.createBufferSource();\n\n source.buffer = ones;\n source.loop = true;\n\n source.connect(analyzer).connect(nativeAudioContext.destination);\n source.connect(dummy);\n source.disconnect(dummy);\n\n // tslint:disable-next-line:deprecation\n analyzer.onaudioprocess = (event) => {\n const chnnlDt = event.inputBuffer.getChannelData(0); // tslint:disable-line deprecation\n\n if (Array.prototype.some.call(chnnlDt, (sample: number) => sample === 1)) {\n resolve(true);\n } else {\n resolve(false);\n }\n\n source.stop();\n\n analyzer.onaudioprocess = null; // tslint:disable-line:deprecation\n\n source.disconnect(analyzer);\n analyzer.disconnect(nativeAudioContext.destination);\n };\n\n source.start();\n }\n });\n};\n","import { IAudioNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const visitEachAudioNodeOnce = (\n cycles: IAudioNode[][],\n visitor: (audioNode: IAudioNode, count: number) => void\n): void => {\n const counts = new Map, number>();\n\n for (const cycle of cycles) {\n for (const audioNode of cycle) {\n const count = counts.get(audioNode);\n\n counts.set(audioNode, count === undefined ? 1 : count + 1);\n }\n }\n\n counts.forEach((count, audioNode) => visitor(audioNode, count));\n};\n","import { TNativeAudioNode, TNativeAudioParam } from '../types';\n\nexport const isNativeAudioNode = (\n nativeAudioNodeOrAudioParam: TNativeAudioNode | TNativeAudioParam\n): nativeAudioNodeOrAudioParam is TNativeAudioNode => {\n return 'context' in nativeAudioNodeOrAudioParam;\n};\n","import { isNativeAudioNode } from '../guards/native-audio-node';\nimport { TNativeAudioNode, TNativeAudioParam } from '../types';\n\nexport const wrapAudioNodeDisconnectMethod = (nativeAudioNode: TNativeAudioNode): void => {\n const connections = new Map();\n\n nativeAudioNode.connect = ((connect) => {\n // tslint:disable-next-line:invalid-void no-inferrable-types\n return (destination: TNativeAudioNode | TNativeAudioParam, output = 0, input: number = 0): void | TNativeAudioNode => {\n const returnValue = isNativeAudioNode(destination) ? connect(destination, output, input) : connect(destination, output);\n\n // Save the new connection only if the calls to connect above didn't throw an error.\n const connectionsToDestination = connections.get(destination);\n\n if (connectionsToDestination === undefined) {\n connections.set(destination, [{ input, output }]);\n } else {\n if (connectionsToDestination.every((connection) => connection.input !== input || connection.output !== output)) {\n connectionsToDestination.push({ input, output });\n }\n }\n\n return returnValue;\n };\n })(nativeAudioNode.connect.bind(nativeAudioNode));\n\n nativeAudioNode.disconnect = ((disconnect) => {\n return (destinationOrOutput?: number | TNativeAudioNode | TNativeAudioParam, output?: number, input?: number): void => {\n disconnect.apply(nativeAudioNode);\n\n if (destinationOrOutput === undefined) {\n connections.clear();\n } else if (typeof destinationOrOutput === 'number') {\n for (const [destination, connectionsToDestination] of connections) {\n const filteredConnections = connectionsToDestination.filter((connection) => connection.output !== destinationOrOutput);\n\n if (filteredConnections.length === 0) {\n connections.delete(destination);\n } else {\n connections.set(destination, filteredConnections);\n }\n }\n } else if (connections.has(destinationOrOutput)) {\n if (output === undefined) {\n connections.delete(destinationOrOutput);\n } else {\n const connectionsToDestination = connections.get(destinationOrOutput);\n\n if (connectionsToDestination !== undefined) {\n const filteredConnections = connectionsToDestination.filter(\n (connection) => connection.output !== output && (connection.input !== input || input === undefined)\n );\n\n if (filteredConnections.length === 0) {\n connections.delete(destinationOrOutput);\n } else {\n connections.set(destinationOrOutput, filteredConnections);\n }\n }\n }\n }\n\n for (const [destination, connectionsToDestination] of connections) {\n connectionsToDestination.forEach((connection) => {\n if (isNativeAudioNode(destination)) {\n nativeAudioNode.connect(destination, connection.output, connection.input);\n } else {\n nativeAudioNode.connect(destination, connection.output);\n }\n });\n }\n };\n })(nativeAudioNode.disconnect);\n};\n","import { AUDIO_NODE_STORE, EVENT_LISTENERS } from '../globals';\nimport { isAudioNode } from '../guards/audio-node';\nimport { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nimport { addActiveInputConnectionToAudioParam } from '../helpers/add-active-input-connection-to-audio-param';\nimport { addPassiveInputConnectionToAudioParam } from '../helpers/add-passive-input-connection-to-audio-param';\nimport { connectNativeAudioNodeToNativeAudioNode } from '../helpers/connect-native-audio-node-to-native-audio-node';\nimport { deleteActiveInputConnection } from '../helpers/delete-active-input-connection';\nimport { deleteActiveInputConnectionToAudioParam } from '../helpers/delete-active-input-connection-to-audio-param';\nimport { deleteEventListenerOfAudioNode } from '../helpers/delete-event-listeners-of-audio-node';\nimport { deletePassiveInputConnectionToAudioNode } from '../helpers/delete-passive-input-connection-to-audio-node';\nimport { deletePassiveInputConnectionToAudioParam } from '../helpers/delete-passive-input-connection-to-audio-param';\nimport { disconnectNativeAudioNodeFromNativeAudioNode } from '../helpers/disconnect-native-audio-node-from-native-audio-node';\nimport { getAudioNodeConnections } from '../helpers/get-audio-node-connections';\nimport { getAudioParamConnections } from '../helpers/get-audio-param-connections';\nimport { getEventListenersOfAudioNode } from '../helpers/get-event-listeners-of-audio-node';\nimport { getNativeAudioNode } from '../helpers/get-native-audio-node';\nimport { getNativeAudioParam } from '../helpers/get-native-audio-param';\nimport { insertElementInSet } from '../helpers/insert-element-in-set';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { isPartOfACycle } from '../helpers/is-part-of-a-cycle';\nimport { isPassiveAudioNode } from '../helpers/is-passive-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassiveWhenNecessary } from '../helpers/set-internal-state-to-passive-when-necessary';\nimport { testAudioNodeDisconnectMethodSupport } from '../helpers/test-audio-node-disconnect-method-support';\nimport { visitEachAudioNodeOnce } from '../helpers/visit-each-audio-node-once';\nimport { wrapAudioNodeDisconnectMethod } from '../helpers/wrap-audio-node-disconnect-method';\nimport {\n IAudioNode,\n IAudioNodeRenderer,\n IAudioParam,\n IMinimalOfflineAudioContext,\n INativeAudioNodeFaker,\n IOfflineAudioContext\n} from '../interfaces';\nimport {\n TAudioNodeConstructorFactory,\n TChannelCountMode,\n TChannelInterpretation,\n TContext,\n TInternalStateEventListener,\n TNativeAudioNode,\n TNativeAudioParam\n} from '../types';\n\nconst addConnectionToAudioParamOfAudioContext = (\n source: IAudioNode,\n destination: IAudioParam,\n output: number,\n isOffline: boolean\n): boolean => {\n const { activeInputs, passiveInputs } = getAudioParamConnections(destination);\n const { outputs } = getAudioNodeConnections(source);\n const eventListeners = getEventListenersOfAudioNode(source);\n\n const eventListener: TInternalStateEventListener = (isActive) => {\n const nativeAudioNode = getNativeAudioNode(source);\n const nativeAudioParam = getNativeAudioParam(destination);\n\n if (isActive) {\n const partialConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output);\n\n addActiveInputConnectionToAudioParam(activeInputs, source, partialConnection, false);\n\n if (!isOffline && !isPartOfACycle(source)) {\n nativeAudioNode.connect(nativeAudioParam, output);\n }\n } else {\n const partialConnection = deleteActiveInputConnectionToAudioParam(activeInputs, source, output);\n\n addPassiveInputConnectionToAudioParam(passiveInputs, partialConnection, false);\n\n if (!isOffline && !isPartOfACycle(source)) {\n nativeAudioNode.disconnect(nativeAudioParam, output);\n }\n }\n };\n\n if (\n insertElementInSet(\n outputs,\n [destination, output],\n (outputConnection) => outputConnection[0] === destination && outputConnection[1] === output,\n true\n )\n ) {\n eventListeners.add(eventListener);\n\n if (isActiveAudioNode(source)) {\n addActiveInputConnectionToAudioParam(activeInputs, source, [output, eventListener], true);\n } else {\n addPassiveInputConnectionToAudioParam(passiveInputs, [source, output, eventListener], true);\n }\n\n return true;\n }\n\n return false;\n};\n\nconst deleteInputConnectionOfAudioNode = (\n source: IAudioNode,\n destination: IAudioNode,\n output: number,\n input: number\n): [null | TInternalStateEventListener, boolean] => {\n const { activeInputs, passiveInputs } = getAudioNodeConnections(destination);\n\n const activeInputConnection = deleteActiveInputConnection(activeInputs[input], source, output);\n\n if (activeInputConnection === null) {\n const passiveInputConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input);\n\n return [passiveInputConnection[2], false];\n }\n\n return [activeInputConnection[2], true];\n};\n\nconst deleteInputConnectionOfAudioParam = (\n source: IAudioNode,\n destination: IAudioParam,\n output: number\n): [null | TInternalStateEventListener, boolean] => {\n const { activeInputs, passiveInputs } = getAudioParamConnections(destination);\n\n const activeInputConnection = deleteActiveInputConnection(activeInputs, source, output);\n\n if (activeInputConnection === null) {\n const passiveInputConnection = deletePassiveInputConnectionToAudioParam(passiveInputs, source, output);\n\n return [passiveInputConnection[1], false];\n }\n\n return [activeInputConnection[2], true];\n};\n\nconst deleteInputsOfAudioNode = (\n source: IAudioNode,\n isOffline: boolean,\n destination: IAudioNode,\n output: number,\n input: number\n) => {\n const [listener, isActive] = deleteInputConnectionOfAudioNode(source, destination, output, input);\n\n if (listener !== null) {\n deleteEventListenerOfAudioNode(source, listener);\n\n if (isActive && !isOffline && !isPartOfACycle(source)) {\n disconnectNativeAudioNodeFromNativeAudioNode(getNativeAudioNode(source), getNativeAudioNode(destination), output, input);\n }\n }\n\n if (isActiveAudioNode(destination)) {\n const { activeInputs } = getAudioNodeConnections(destination);\n\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n};\n\nconst deleteInputsOfAudioParam = (\n source: IAudioNode,\n isOffline: boolean,\n destination: IAudioParam,\n output: number\n) => {\n const [listener, isActive] = deleteInputConnectionOfAudioParam(source, destination, output);\n\n if (listener !== null) {\n deleteEventListenerOfAudioNode(source, listener);\n\n if (isActive && !isOffline && !isPartOfACycle(source)) {\n getNativeAudioNode(source).disconnect(getNativeAudioParam(destination), output);\n }\n }\n};\n\nconst deleteAnyConnection = (source: IAudioNode, isOffline: boolean): (IAudioNode | IAudioParam)[] => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n const destinations = [];\n\n for (const outputConnection of audioNodeConnectionsOfSource.outputs) {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n } else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n\n destinations.push(outputConnection[0]);\n }\n\n audioNodeConnectionsOfSource.outputs.clear();\n\n return destinations;\n};\n\nconst deleteConnectionAtOutput = (\n source: IAudioNode,\n isOffline: boolean,\n output: number\n): (IAudioNode | IAudioParam)[] => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n const destinations = [];\n\n for (const outputConnection of audioNodeConnectionsOfSource.outputs) {\n if (outputConnection[1] === output) {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n } else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n\n destinations.push(outputConnection[0]);\n audioNodeConnectionsOfSource.outputs.delete(outputConnection);\n }\n }\n\n return destinations;\n};\n\nconst deleteConnectionToDestination = (\n source: IAudioNode,\n isOffline: boolean,\n destination: IAudioNode | IAudioParam,\n output?: number,\n input?: number\n): (IAudioNode | IAudioParam)[] => {\n const audioNodeConnectionsOfSource = getAudioNodeConnections(source);\n\n return Array.from(audioNodeConnectionsOfSource.outputs)\n .filter(\n (outputConnection) =>\n outputConnection[0] === destination &&\n (output === undefined || outputConnection[1] === output) &&\n (input === undefined || outputConnection[2] === input)\n )\n .map((outputConnection) => {\n if (isAudioNodeOutputConnection(outputConnection)) {\n deleteInputsOfAudioNode(source, isOffline, ...outputConnection);\n } else {\n deleteInputsOfAudioParam(source, isOffline, ...outputConnection);\n }\n\n audioNodeConnectionsOfSource.outputs.delete(outputConnection);\n\n return outputConnection[0];\n });\n};\n\nexport const createAudioNodeConstructor: TAudioNodeConstructorFactory = (\n addAudioNodeConnections,\n addConnectionToAudioNode,\n cacheTestResult,\n createIncrementCycleCounter,\n createIndexSizeError,\n createInvalidAccessError,\n createNotSupportedError,\n decrementCycleCounter,\n detectCycles,\n eventTargetConstructor,\n getNativeContext,\n isNativeAudioContext,\n isNativeAudioNode,\n isNativeAudioParam,\n isNativeOfflineAudioContext,\n nativeAudioWorkletNodeConstructor\n) => {\n return class AudioNode = {}>\n extends eventTargetConstructor\n implements IAudioNode\n {\n private _context: T;\n\n private _nativeAudioNode: INativeAudioNodeFaker | TNativeAudioNode;\n\n constructor(\n context: T,\n isActive: boolean,\n nativeAudioNode: INativeAudioNodeFaker | TNativeAudioNode,\n audioNodeRenderer: T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? IAudioNodeRenderer> : null\n ) {\n super(nativeAudioNode);\n\n this._context = context;\n this._nativeAudioNode = nativeAudioNode;\n\n const nativeContext = getNativeContext(context);\n\n // Bug #12: Safari does not support to disconnect a specific destination.\n if (\n isNativeAudioContext(nativeContext) &&\n true !==\n cacheTestResult(testAudioNodeDisconnectMethodSupport, () => {\n return testAudioNodeDisconnectMethodSupport(nativeContext, nativeAudioWorkletNodeConstructor);\n })\n ) {\n wrapAudioNodeDisconnectMethod(nativeAudioNode);\n }\n\n AUDIO_NODE_STORE.set(this, nativeAudioNode);\n EVENT_LISTENERS.set(this, new Set());\n\n if (context.state !== 'closed' && isActive) {\n setInternalStateToActive(this);\n }\n\n addAudioNodeConnections(this, audioNodeRenderer, nativeAudioNode);\n }\n\n get channelCount(): number {\n return this._nativeAudioNode.channelCount;\n }\n\n set channelCount(value) {\n this._nativeAudioNode.channelCount = value;\n }\n\n get channelCountMode(): TChannelCountMode {\n return this._nativeAudioNode.channelCountMode;\n }\n\n set channelCountMode(value) {\n this._nativeAudioNode.channelCountMode = value;\n }\n\n get channelInterpretation(): TChannelInterpretation {\n return this._nativeAudioNode.channelInterpretation;\n }\n\n set channelInterpretation(value) {\n this._nativeAudioNode.channelInterpretation = value;\n }\n\n get context(): T {\n return this._context;\n }\n\n get numberOfInputs(): number {\n return this._nativeAudioNode.numberOfInputs;\n }\n\n get numberOfOutputs(): number {\n return this._nativeAudioNode.numberOfOutputs;\n }\n\n public connect>(destinationNode: V, output?: number, input?: number): V;\n public connect(destinationParam: IAudioParam, output?: number): void;\n // tslint:disable-next-line:invalid-void\n public connect>(destination: V | IAudioParam, output = 0, input = 0): void | V {\n // Bug #174: Safari does expose a wrong numberOfOutputs for MediaStreamAudioDestinationNodes.\n if (output < 0 || output >= this._nativeAudioNode.numberOfOutputs) {\n throw createIndexSizeError();\n }\n\n const nativeContext = getNativeContext(this._context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n\n if (isNativeAudioNode(destination) || isNativeAudioParam(destination)) {\n throw createInvalidAccessError();\n }\n\n if (isAudioNode(destination)) {\n const nativeDestinationAudioNode = getNativeAudioNode(destination);\n\n try {\n const connection = connectNativeAudioNodeToNativeAudioNode(\n this._nativeAudioNode,\n nativeDestinationAudioNode,\n output,\n input\n );\n\n const isPassive = isPassiveAudioNode(this);\n\n if (isOffline || isPassive) {\n this._nativeAudioNode.disconnect(...connection);\n }\n\n if (this.context.state !== 'closed' && !isPassive && isPassiveAudioNode(destination)) {\n setInternalStateToActive(destination);\n }\n } catch (err) {\n // Bug #41: Safari does not throw the correct exception so far.\n if (err.code === 12) {\n throw createInvalidAccessError();\n }\n\n throw err;\n }\n\n const isNewConnectionToAudioNode = addConnectionToAudioNode(\n this,\n >destination,\n output,\n input,\n isOffline\n );\n\n // Bug #164: Only Firefox detects cycles so far.\n if (isNewConnectionToAudioNode) {\n const cycles = detectCycles([this], >(destination));\n\n visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline));\n }\n\n return destination;\n }\n\n const nativeAudioParam = getNativeAudioParam(destination);\n\n /*\n * Bug #73, #147 & #153: Safari does not support to connect an input signal to the playbackRate AudioParam of an\n * AudioBufferSourceNode. This can't be easily detected and that's why the outdated name property is used here to identify\n * Safari. In addition to that the maxValue property is used to only detect the affected versions below v14.0.2.\n */\n if ((nativeAudioParam).name === 'playbackRate' && nativeAudioParam.maxValue === 1024) {\n throw createNotSupportedError();\n }\n\n try {\n this._nativeAudioNode.connect(nativeAudioParam, output);\n\n if (isOffline || isPassiveAudioNode(this)) {\n this._nativeAudioNode.disconnect(nativeAudioParam, output);\n }\n } catch (err) {\n // Bug #58: Safari doesn't throw an InvalidAccessError yet.\n if (err.code === 12) {\n throw createInvalidAccessError();\n }\n\n throw err;\n }\n\n const isNewConnectionToAudioParam = addConnectionToAudioParamOfAudioContext(this, destination, output, isOffline);\n\n // Bug #164: Only Firefox detects cycles so far.\n if (isNewConnectionToAudioParam) {\n const cycles = detectCycles([this], destination);\n\n visitEachAudioNodeOnce(cycles, createIncrementCycleCounter(isOffline));\n }\n }\n\n public disconnect(output?: number): void;\n public disconnect(destinationNode: IAudioNode, output?: number, input?: number): void;\n public disconnect(destinationParam: IAudioParam, output?: number): void;\n public disconnect(\n destinationOrOutput?: number | IAudioNode | IAudioParam,\n output?: number,\n input?: number\n ): void {\n let destinations: (IAudioNode | IAudioParam)[];\n\n const nativeContext = getNativeContext(this._context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n\n if (destinationOrOutput === undefined) {\n destinations = deleteAnyConnection(this, isOffline);\n } else if (typeof destinationOrOutput === 'number') {\n if (destinationOrOutput < 0 || destinationOrOutput >= this.numberOfOutputs) {\n throw createIndexSizeError();\n }\n\n destinations = deleteConnectionAtOutput(this, isOffline, destinationOrOutput);\n } else {\n if (output !== undefined && (output < 0 || output >= this.numberOfOutputs)) {\n throw createIndexSizeError();\n }\n\n if (isAudioNode(destinationOrOutput) && input !== undefined && (input < 0 || input >= destinationOrOutput.numberOfInputs)) {\n throw createIndexSizeError();\n }\n\n destinations = deleteConnectionToDestination(this, isOffline, destinationOrOutput, output, input);\n\n if (destinations.length === 0) {\n throw createInvalidAccessError();\n }\n }\n\n // Bug #164: Only Firefox detects cycles so far.\n for (const destination of destinations) {\n const cycles = detectCycles([this], destination);\n\n visitEachAudioNodeOnce(cycles, decrementCycleCounter);\n }\n }\n };\n};\n","import { IAudioNode } from '../interfaces';\nimport { TActiveInputConnection, TContext } from '../types';\nimport { pickElementFromSet } from './pick-element-from-set';\n\nexport const deleteActiveInputConnectionToAudioParam = (\n activeInputs: Set>,\n source: IAudioNode,\n output: number\n) => {\n return pickElementFromSet(\n activeInputs,\n (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output\n );\n};\n","import { IReadOnlyMap } from './interfaces';\n\nexport class ReadOnlyMap implements IReadOnlyMap {\n private _map: Map;\n\n constructor(parameters: [T, U][]) {\n this._map = new Map(parameters);\n }\n\n get size(): number {\n return this._map.size;\n }\n\n public entries(): IterableIterator<[T, U]> {\n return this._map.entries();\n }\n\n public forEach(callback: (audioParam: U, name: T, map: ReadOnlyMap) => void, thisArg: any = null): void {\n return this._map.forEach((value: U, key: T) => callback.call(thisArg, value, key, this));\n }\n\n public get(name: T): undefined | U {\n return this._map.get(name);\n }\n\n public has(name: T): boolean {\n return this._map.has(name);\n }\n\n public keys(): IterableIterator {\n return this._map.keys();\n }\n\n public values(): IterableIterator {\n return this._map.values();\n }\n}\n","import { NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS } from '../globals';\nimport {\n IAudioParam,\n IAudioWorkletNode,\n IAudioWorkletNodeEventMap,\n IAudioWorkletNodeOptions,\n IMinimalAudioContext,\n IMinimalOfflineAudioContext,\n IOfflineAudioContext,\n IReadOnlyMap\n} from '../interfaces';\nimport { ReadOnlyMap } from '../read-only-map';\nimport {\n TAudioNodeRenderer,\n TAudioParamMap,\n TAudioWorkletNodeConstructorFactory,\n TContext,\n TErrorEventHandler,\n TNativeAudioContext,\n TNativeAudioParam,\n TNativeAudioWorkletNode\n} from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n // Bug #61: The channelCountMode should be 'max' according to the spec but is set to 'explicit' to achieve consistent behavior.\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 1,\n numberOfOutputs: 1,\n parameterData: {},\n processorOptions: {}\n} as const;\n\nexport const createAudioWorkletNodeConstructor: TAudioWorkletNodeConstructorFactory = (\n addUnrenderedAudioWorkletNode,\n audioNodeConstructor,\n createAudioParam,\n createAudioWorkletNodeRenderer,\n createNativeAudioWorkletNode,\n getAudioNodeConnections,\n getBackupOfflineAudioContext,\n getNativeContext,\n isNativeOfflineAudioContext,\n nativeAudioWorkletNodeConstructor,\n sanitizeAudioWorkletNodeOptions,\n setActiveAudioWorkletNodeInputs,\n testAudioWorkletNodeOptionsClonability,\n wrapEventListener\n) => {\n return class AudioWorkletNode\n extends audioNodeConstructor\n implements IAudioWorkletNode\n {\n private _nativeAudioWorkletNode: TNativeAudioWorkletNode;\n\n private _onprocessorerror: null | TErrorEventHandler;\n\n private _parameters: null | TAudioParamMap;\n\n constructor(context: T, name: string, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const mergedOptions = sanitizeAudioWorkletNodeOptions({ ...DEFAULT_OPTIONS, ...options });\n\n // Bug #191: Safari doesn't throw an error if the options aren't clonable.\n testAudioWorkletNodeOptionsClonability(mergedOptions);\n\n const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext);\n const processorConstructor = nodeNameToProcessorConstructorMap?.get(name);\n // Bug #186: Chrome and Edge do not allow to create an AudioWorkletNode on a closed AudioContext.\n const nativeContextOrBackupOfflineAudioContext =\n isOffline || nativeContext.state !== 'closed'\n ? nativeContext\n : getBackupOfflineAudioContext(nativeContext) ?? nativeContext;\n const nativeAudioWorkletNode = createNativeAudioWorkletNode(\n nativeContextOrBackupOfflineAudioContext,\n isOffline ? null : ((context)).baseLatency,\n nativeAudioWorkletNodeConstructor,\n name,\n processorConstructor,\n mergedOptions\n );\n const audioWorkletNodeRenderer = >(\n (isOffline ? createAudioWorkletNodeRenderer(name, mergedOptions, processorConstructor) : null)\n );\n\n /*\n * @todo Add a mechanism to switch an AudioWorkletNode to passive once the process() function of the AudioWorkletProcessor\n * returns false.\n */\n super(context, true, nativeAudioWorkletNode, audioWorkletNodeRenderer);\n\n const parameters: [string, IAudioParam][] = [];\n\n nativeAudioWorkletNode.parameters.forEach((nativeAudioParam, nm) => {\n const audioParam = createAudioParam(this, isOffline, nativeAudioParam);\n\n parameters.push([nm, audioParam]);\n });\n\n this._nativeAudioWorkletNode = nativeAudioWorkletNode;\n this._onprocessorerror = null;\n this._parameters = new ReadOnlyMap(parameters);\n\n /*\n * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to\n * the destination.\n */\n if (isOffline) {\n addUnrenderedAudioWorkletNode(nativeContext, >this);\n }\n\n const { activeInputs } = getAudioNodeConnections(this);\n\n setActiveAudioWorkletNodeInputs(nativeAudioWorkletNode, activeInputs);\n }\n\n get onprocessorerror(): null | TErrorEventHandler {\n return this._onprocessorerror;\n }\n\n set onprocessorerror(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n\n this._nativeAudioWorkletNode.onprocessorerror = wrappedListener;\n\n const nativeOnProcessorError = this._nativeAudioWorkletNode.onprocessorerror;\n\n this._onprocessorerror =\n nativeOnProcessorError !== null && nativeOnProcessorError === wrappedListener\n ? value\n : >nativeOnProcessorError;\n }\n\n get parameters(): TAudioParamMap {\n if (this._parameters === null) {\n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n return >this._nativeAudioWorkletNode.parameters;\n }\n\n return this._parameters;\n }\n\n get port(): MessagePort {\n return this._nativeAudioWorkletNode.port;\n }\n };\n};\n","import { TNativeAudioBuffer } from '../types';\n\nexport function copyFromChannel(\n audioBuffer: TNativeAudioBuffer,\n parent: { [key: number]: Float32Array },\n key: number,\n channelNumber: number,\n bufferOffset: number\n): void;\nexport function copyFromChannel(\n audioBuffer: TNativeAudioBuffer,\n parent: { [key: string]: Float32Array },\n key: string,\n channelNumber: number,\n bufferOffset: number\n): void;\nexport function copyFromChannel(\n audioBuffer: TNativeAudioBuffer,\n // @todo There is currently no way to define something like { [ key: number | string ]: Float32Array }\n parent: any,\n key: number | string,\n channelNumber: number,\n bufferOffset: number\n): void {\n if (typeof audioBuffer.copyFromChannel === 'function') {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength === 0) {\n parent[key] = new Float32Array(128);\n }\n\n audioBuffer.copyFromChannel(parent[key], channelNumber, bufferOffset);\n\n // Bug #5: Safari does not support copyFromChannel().\n } else {\n const channelData = audioBuffer.getChannelData(channelNumber);\n\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength === 0) {\n parent[key] = channelData.slice(bufferOffset, bufferOffset + 128);\n } else {\n const slicedInput = new Float32Array(channelData.buffer, bufferOffset * Float32Array.BYTES_PER_ELEMENT, 128);\n\n parent[key].set(slicedInput);\n }\n }\n}\n","import { TNativeAudioBuffer } from '../types';\n\nexport const copyToChannel = (\n audioBuffer: TNativeAudioBuffer,\n parent: { [key: number]: Float32Array },\n key: number,\n channelNumber: number,\n bufferOffset: number\n): void => {\n if (typeof audioBuffer.copyToChannel === 'function') {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength !== 0) {\n audioBuffer.copyToChannel(parent[key], channelNumber, bufferOffset);\n }\n\n // Bug #5: Safari does not support copyToChannel().\n } else {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (parent[key].byteLength !== 0) {\n audioBuffer.getChannelData(channelNumber).set(parent[key], bufferOffset);\n }\n }\n};\n","export const createNestedArrays = (x: number, y: number | number[]): Float32Array[][] => {\n const arrays: Float32Array[][] = [];\n\n for (let i = 0; i < x; i += 1) {\n const array = [];\n\n const length = typeof y === 'number' ? y : y[i];\n\n for (let j = 0; j < length; j += 1) {\n array.push(new Float32Array(128));\n }\n\n arrays.push(array);\n }\n\n return arrays;\n};\n","import { copyFromChannel } from '../helpers/copy-from-channel';\nimport { copyToChannel } from '../helpers/copy-to-channel';\nimport { createNestedArrays } from '../helpers/create-nested-arrays';\nimport { getAudioNodeConnections } from '../helpers/get-audio-node-connections';\nimport { getAudioWorkletProcessor } from '../helpers/get-audio-worklet-processor';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport {\n IAudioWorkletNode,\n IAudioWorkletNodeOptions,\n IAudioWorkletProcessorConstructor,\n IMinimalOfflineAudioContext,\n IOfflineAudioContext,\n IReadOnlyMap\n} from '../interfaces';\nimport {\n TAudioWorkletNodeRendererFactoryFactory,\n TExposeCurrentFrameAndCurrentTimeFunction,\n TNativeAudioBuffer,\n TNativeAudioNode,\n TNativeAudioParam,\n TNativeAudioWorkletNode,\n TNativeChannelMergerNode,\n TNativeChannelSplitterNode,\n TNativeGainNode,\n TNativeOfflineAudioContext\n} from '../types';\n\nconst processBuffer = async (\n proxy: IAudioWorkletNode,\n renderedBuffer: null | TNativeAudioBuffer,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n options: IAudioWorkletNodeOptions,\n outputChannelCount: number[],\n processorConstructor: undefined | IAudioWorkletProcessorConstructor,\n exposeCurrentFrameAndCurrentTime: TExposeCurrentFrameAndCurrentTimeFunction\n): Promise => {\n // Ceil the length to the next full render quantum.\n // Bug #17: Safari does not yet expose the length.\n const length = renderedBuffer === null ? Math.ceil(proxy.context.length / 128) * 128 : renderedBuffer.length;\n const numberOfInputChannels = options.channelCount * options.numberOfInputs;\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const processedBuffer =\n numberOfOutputChannels === 0\n ? null\n : nativeOfflineAudioContext.createBuffer(numberOfOutputChannels, length, nativeOfflineAudioContext.sampleRate);\n\n if (processorConstructor === undefined) {\n throw new Error('Missing the processor constructor.');\n }\n\n const audioNodeConnections = getAudioNodeConnections(proxy);\n const audioWorkletProcessor = await getAudioWorkletProcessor(nativeOfflineAudioContext, proxy);\n const inputs = createNestedArrays(options.numberOfInputs, options.channelCount);\n const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount);\n const parameters: { [name: string]: Float32Array } = Array.from(proxy.parameters.keys()).reduce(\n (prmtrs, name) => ({ ...prmtrs, [name]: new Float32Array(128) }),\n {}\n );\n\n for (let i = 0; i < length; i += 128) {\n if (options.numberOfInputs > 0 && renderedBuffer !== null) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < options.channelCount; k += 1) {\n copyFromChannel(renderedBuffer, inputs[j], k, k, i);\n }\n }\n }\n\n if (processorConstructor.parameterDescriptors !== undefined && renderedBuffer !== null) {\n processorConstructor.parameterDescriptors.forEach(({ name }, index) => {\n copyFromChannel(renderedBuffer, parameters, name, numberOfInputChannels + index, i);\n });\n }\n\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (outputs[j][k].byteLength === 0) {\n outputs[j][k] = new Float32Array(128);\n }\n }\n }\n\n try {\n const potentiallyEmptyInputs = inputs.map((input, index) => {\n if (audioNodeConnections.activeInputs[index].size === 0) {\n return [];\n }\n\n return input;\n });\n const activeSourceFlag = exposeCurrentFrameAndCurrentTime(\n i / nativeOfflineAudioContext.sampleRate,\n nativeOfflineAudioContext.sampleRate,\n () => audioWorkletProcessor.process(potentiallyEmptyInputs, outputs, parameters)\n );\n\n if (processedBuffer !== null) {\n for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n copyToChannel(processedBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i);\n }\n\n outputChannelSplitterNodeOutput += outputChannelCount[j];\n }\n }\n\n if (!activeSourceFlag) {\n break;\n }\n } catch (error) {\n proxy.dispatchEvent(\n new ErrorEvent('processorerror', {\n colno: error.colno,\n filename: error.filename,\n lineno: error.lineno,\n message: error.message\n })\n );\n\n break;\n }\n }\n\n return processedBuffer;\n};\n\nexport const createAudioWorkletNodeRendererFactory: TAudioWorkletNodeRendererFactoryFactory = (\n connectAudioParam,\n connectMultipleOutputs,\n createNativeAudioBufferSourceNode,\n createNativeChannelMergerNode,\n createNativeChannelSplitterNode,\n createNativeConstantSourceNode,\n createNativeGainNode,\n deleteUnrenderedAudioWorkletNode,\n disconnectMultipleOutputs,\n exposeCurrentFrameAndCurrentTime,\n getNativeAudioNode,\n nativeAudioWorkletNodeConstructor,\n nativeOfflineAudioContextConstructor,\n renderAutomation,\n renderInputsOfAudioNode,\n renderNativeOfflineAudioContext\n) => {\n return (\n name: string,\n options: IAudioWorkletNodeOptions,\n processorConstructor: undefined | IAudioWorkletProcessorConstructor\n ) => {\n const renderedNativeAudioNodes = new WeakMap();\n\n let processedBufferPromise: null | Promise = null;\n\n const createAudioNode = async (proxy: IAudioWorkletNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeAudioWorkletNode = getNativeAudioNode(proxy);\n let nativeOutputNodes: null | [TNativeChannelSplitterNode, TNativeChannelMergerNode[], TNativeGainNode] = null;\n\n const nativeAudioWorkletNodeIsOwnedByContext = isOwnedByContext(nativeAudioWorkletNode, nativeOfflineAudioContext);\n const outputChannelCount = Array.isArray(options.outputChannelCount)\n ? options.outputChannelCount\n : Array.from(options.outputChannelCount);\n\n // Bug #61: Only Chrome, Edge & Firefox have an implementation of the AudioWorkletNode yet.\n if (nativeAudioWorkletNodeConstructor === null) {\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, {\n channelCount: Math.max(1, numberOfOutputChannels),\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: Math.max(1, numberOfOutputChannels)\n });\n const outputChannelMergerNodes: TNativeChannelMergerNode[] = [];\n\n for (let i = 0; i < proxy.numberOfOutputs; i += 1) {\n outputChannelMergerNodes.push(\n createNativeChannelMergerNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: outputChannelCount[i]\n })\n );\n }\n\n const outputGainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n });\n\n outputGainNode.connect = connectMultipleOutputs.bind(null, outputChannelMergerNodes);\n outputGainNode.disconnect = disconnectMultipleOutputs.bind(null, outputChannelMergerNodes);\n\n nativeOutputNodes = [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode];\n } else if (!nativeAudioWorkletNodeIsOwnedByContext) {\n nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(nativeOfflineAudioContext, name);\n }\n\n renderedNativeAudioNodes.set(\n nativeOfflineAudioContext,\n nativeOutputNodes === null ? nativeAudioWorkletNode : nativeOutputNodes[2]\n );\n\n if (nativeOutputNodes !== null) {\n if (processedBufferPromise === null) {\n if (processorConstructor === undefined) {\n throw new Error('Missing the processor constructor.');\n }\n\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n\n // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly.\n const numberOfInputChannels = proxy.channelCount * proxy.numberOfInputs;\n const numberOfParameters =\n processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length;\n const numberOfChannels = numberOfInputChannels + numberOfParameters;\n\n const renderBuffer = async () => {\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(\n numberOfChannels,\n // Ceil the length to the next full render quantum.\n // Bug #17: Safari does not yet expose the length.\n Math.ceil(proxy.context.length / 128) * 128,\n nativeOfflineAudioContext.sampleRate\n );\n const gainNodes: TNativeGainNode[] = [];\n const inputChannelSplitterNodes = [];\n\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes.push(\n createNativeGainNode(partialOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n })\n );\n inputChannelSplitterNodes.push(\n createNativeChannelSplitterNode(partialOfflineAudioContext, {\n channelCount: options.channelCount,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: options.channelCount\n })\n );\n }\n\n const constantSourceNodes = await Promise.all(\n Array.from(proxy.parameters.values()).map(async (audioParam) => {\n const constantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: audioParam.value\n });\n\n await renderAutomation(partialOfflineAudioContext, audioParam, constantSourceNode.offset);\n\n return constantSourceNode;\n })\n );\n\n const inputChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters)\n });\n\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes[i].connect(inputChannelSplitterNodes[i]);\n\n for (let j = 0; j < options.channelCount; j += 1) {\n inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j);\n }\n }\n\n for (const [index, constantSourceNode] of constantSourceNodes.entries()) {\n constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index);\n constantSourceNode.start(0);\n }\n\n inputChannelMergerNode.connect(partialOfflineAudioContext.destination);\n\n await Promise.all(\n gainNodes.map((gainNode) => renderInputsOfAudioNode(proxy, partialOfflineAudioContext, gainNode))\n );\n\n return renderNativeOfflineAudioContext(partialOfflineAudioContext);\n };\n\n processedBufferPromise = processBuffer(\n proxy,\n numberOfChannels === 0 ? null : await renderBuffer(),\n nativeOfflineAudioContext,\n options,\n outputChannelCount,\n processorConstructor,\n exposeCurrentFrameAndCurrentTime\n );\n }\n\n const processedBuffer = await processedBufferPromise;\n const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const [outputChannelSplitterNode, outputChannelMergerNodes, outputGainNode] = nativeOutputNodes;\n\n if (processedBuffer !== null) {\n audioBufferSourceNode.buffer = processedBuffer;\n audioBufferSourceNode.start(0);\n }\n\n audioBufferSourceNode.connect(outputChannelSplitterNode);\n\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < proxy.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n\n return outputGainNode;\n }\n\n if (!nativeAudioWorkletNodeIsOwnedByContext) {\n for (const [nm, audioParam] of proxy.parameters.entries()) {\n await renderAutomation(\n nativeOfflineAudioContext,\n audioParam,\n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n (>nativeAudioWorkletNode.parameters).get(nm)\n );\n }\n } else {\n for (const [nm, audioParam] of proxy.parameters.entries()) {\n await connectAudioParam(\n nativeOfflineAudioContext,\n audioParam,\n // @todo The definition that TypeScript uses of the AudioParamMap is lacking many methods.\n (>nativeAudioWorkletNode.parameters).get(nm)\n );\n }\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioWorkletNode);\n\n return nativeAudioWorkletNode;\n };\n\n return {\n render(\n proxy: IAudioWorkletNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n deleteUnrenderedAudioWorkletNode(nativeOfflineAudioContext, proxy);\n\n const renderedNativeAudioWorkletNodeOrGainNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAudioWorkletNodeOrGainNode !== undefined) {\n return Promise.resolve(renderedNativeAudioWorkletNodeOrGainNode);\n }\n\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { NODE_TO_PROCESSOR_MAPS } from '../globals';\nimport { IAudioNode, IAudioWorkletProcessor } from '../interfaces';\nimport { TContext, TNativeAudioWorkletNode, TNativeOfflineAudioContext } from '../types';\nimport { getNativeAudioNode } from './get-native-audio-node';\nimport { getValueForKey } from './get-value-for-key';\n\nexport const getAudioWorkletProcessor = (\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n proxy: IAudioNode\n): Promise => {\n const nodeToProcessorMap = getValueForKey(NODE_TO_PROCESSOR_MAPS, nativeOfflineAudioContext);\n const nativeAudioWorkletNode = getNativeAudioNode(proxy);\n\n return getValueForKey(nodeToProcessorMap, nativeAudioWorkletNode);\n};\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { IAudioParam, IBiquadFilterNode, IBiquadFilterOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TBiquadFilterNodeConstructorFactory, TBiquadFilterType, TContext, TNativeBiquadFilterNode } from '../types';\n\nconst DEFAULT_OPTIONS = {\n Q: 1,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n detune: 0,\n frequency: 350,\n gain: 0,\n type: 'lowpass'\n} as const;\n\nexport const createBiquadFilterNodeConstructor: TBiquadFilterNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createBiquadFilterNodeRenderer,\n createInvalidAccessError,\n createNativeBiquadFilterNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class BiquadFilterNode extends audioNodeConstructor implements IBiquadFilterNode {\n private _detune: IAudioParam;\n\n private _frequency: IAudioParam;\n\n private _gain: IAudioParam;\n\n private _nativeBiquadFilterNode: TNativeBiquadFilterNode;\n\n private _Q: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeBiquadFilterNode = createNativeBiquadFilterNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const biquadFilterNodeRenderer = >(isOffline ? createBiquadFilterNodeRenderer() : null);\n\n super(context, false, nativeBiquadFilterNode, biquadFilterNodeRenderer);\n\n // Bug #80: Safari does not export the correct values for maxValue and minValue.\n this._Q = createAudioParam(this, isOffline, nativeBiquadFilterNode.Q, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n // Bug #78: Firefox & Safari do not export the correct values for maxValue and minValue.\n this._detune = createAudioParam(\n this,\n isOffline,\n nativeBiquadFilterNode.detune,\n 1200 * Math.log2(MOST_POSITIVE_SINGLE_FLOAT),\n -1200 * Math.log2(MOST_POSITIVE_SINGLE_FLOAT)\n );\n // Bug #77: Firefox & Safari do not export the correct value for minValue.\n this._frequency = createAudioParam(this, isOffline, nativeBiquadFilterNode.frequency, context.sampleRate / 2, 0);\n // Bug #79: Firefox & Safari do not export the correct values for maxValue and minValue.\n this._gain = createAudioParam(\n this,\n isOffline,\n nativeBiquadFilterNode.gain,\n 40 * Math.log10(MOST_POSITIVE_SINGLE_FLOAT),\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._nativeBiquadFilterNode = nativeBiquadFilterNode;\n\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n\n get detune(): IAudioParam {\n return this._detune;\n }\n\n get frequency(): IAudioParam {\n return this._frequency;\n }\n\n get gain(): IAudioParam {\n return this._gain;\n }\n\n get Q(): IAudioParam {\n return this._Q;\n }\n\n get type(): TBiquadFilterType {\n return this._nativeBiquadFilterNode.type;\n }\n\n set type(value) {\n this._nativeBiquadFilterNode.type = value;\n }\n\n public getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void {\n // Bug #189: Safari does throw an InvalidStateError.\n try {\n this._nativeBiquadFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse);\n } catch (err) {\n if (err.code === 11) {\n throw createInvalidAccessError();\n }\n\n throw err;\n }\n\n // Bug #68: Safari does not throw an error if the parameters differ in their length.\n if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) {\n throw createInvalidAccessError();\n }\n }\n };\n};\n","import { IChannelMergerOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TChannelMergerNodeConstructorFactory, TContext } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 6\n} as const;\n\nexport const createChannelMergerNodeConstructor: TChannelMergerNodeConstructorFactory = (\n audioNodeConstructor,\n createChannelMergerNodeRenderer,\n createNativeChannelMergerNode,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class ChannelMergerNode extends audioNodeConstructor {\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeChannelMergerNode = createNativeChannelMergerNode(nativeContext, mergedOptions);\n const channelMergerNodeRenderer = >(\n (isNativeOfflineAudioContext(nativeContext) ? createChannelMergerNodeRenderer() : null)\n );\n\n super(context, false, nativeChannelMergerNode, channelMergerNodeRenderer);\n }\n };\n};\n","import { IChannelSplitterOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TChannelSplitterNodeConstructorFactory, TContext } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 6,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: 6\n} as const;\n\nexport const createChannelSplitterNodeConstructor: TChannelSplitterNodeConstructorFactory = (\n audioNodeConstructor,\n createChannelSplitterNodeRenderer,\n createNativeChannelSplitterNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n sanitizeChannelSplitterOptions\n) => {\n return class ChannelSplitterNode extends audioNodeConstructor {\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = sanitizeChannelSplitterOptions({ ...DEFAULT_OPTIONS, ...options });\n const nativeChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, mergedOptions);\n const channelSplitterNodeRenderer = >(\n (isNativeOfflineAudioContext(nativeContext) ? createChannelSplitterNodeRenderer() : null)\n );\n\n super(context, false, nativeChannelSplitterNode, channelSplitterNodeRenderer);\n }\n };\n};\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nimport { IAudioParam, IAudioScheduledSourceNodeEventMap, IConstantSourceNode, IConstantSourceOptions } from '../interfaces';\nimport {\n TConstantSourceNodeConstructorFactory,\n TConstantSourceNodeRenderer,\n TContext,\n TEventHandler,\n TNativeConstantSourceNode\n} from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n offset: 1\n} as const;\n\nexport const createConstantSourceNodeConstructor: TConstantSourceNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createConstantSourceNodeRendererFactory,\n createNativeConstantSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n wrapEventListener\n) => {\n return class ConstantSourceNode\n extends audioNodeConstructor\n implements IConstantSourceNode\n {\n private _constantSourceNodeRenderer: TConstantSourceNodeRenderer;\n\n private _nativeConstantSourceNode: TNativeConstantSourceNode;\n\n private _offset: IAudioParam;\n\n private _onended: null | TEventHandler;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeConstantSourceNode = createNativeConstantSourceNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const constantSourceNodeRenderer = >(\n (isOffline ? createConstantSourceNodeRendererFactory() : null)\n );\n\n super(context, false, nativeConstantSourceNode, constantSourceNodeRenderer);\n\n this._constantSourceNodeRenderer = constantSourceNodeRenderer;\n this._nativeConstantSourceNode = nativeConstantSourceNode;\n /*\n * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and minValue\n * for GainNodes.\n */\n this._offset = createAudioParam(\n this,\n isOffline,\n nativeConstantSourceNode.offset,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._onended = null;\n }\n\n get offset(): IAudioParam {\n return this._offset;\n }\n\n get onended(): null | TEventHandler {\n return this._onended;\n }\n\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n\n this._nativeConstantSourceNode.onended = wrappedListener;\n\n const nativeOnEnded = this._nativeConstantSourceNode.onended;\n\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n\n public start(when = 0): void {\n this._nativeConstantSourceNode.start(when);\n\n if (this._constantSourceNodeRenderer !== null) {\n this._constantSourceNodeRenderer.start = when;\n }\n\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n\n const resetInternalStateToPassive = () => {\n this._nativeConstantSourceNode.removeEventListener('ended', resetInternalStateToPassive);\n\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n\n this._nativeConstantSourceNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n\n public stop(when = 0): void {\n this._nativeConstantSourceNode.stop(when);\n\n if (this._constantSourceNodeRenderer !== null) {\n this._constantSourceNodeRenderer.stop = when;\n }\n }\n };\n};\n","import { IConvolverNode, IConvolverOptions } from '../interfaces';\nimport { TAnyAudioBuffer, TAudioNodeRenderer, TContext, TConvolverNodeConstructorFactory, TNativeConvolverNode } from '../types';\n\nconst DEFAULT_OPTIONS = {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'clamped-max',\n channelInterpretation: 'speakers',\n disableNormalization: false\n} as const;\n\nexport const createConvolverNodeConstructor: TConvolverNodeConstructorFactory = (\n audioNodeConstructor,\n createConvolverNodeRenderer,\n createNativeConvolverNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class ConvolverNode extends audioNodeConstructor implements IConvolverNode {\n private _isBufferNullified: boolean;\n\n private _nativeConvolverNode: TNativeConvolverNode;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeConvolverNode = createNativeConvolverNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const convolverNodeRenderer = >(isOffline ? createConvolverNodeRenderer() : null);\n\n super(context, false, nativeConvolverNode, convolverNodeRenderer);\n\n this._isBufferNullified = false;\n this._nativeConvolverNode = nativeConvolverNode;\n\n if (mergedOptions.buffer !== null) {\n setAudioNodeTailTime(this, mergedOptions.buffer.duration);\n }\n }\n\n get buffer(): null | TAnyAudioBuffer {\n if (this._isBufferNullified) {\n return null;\n }\n\n return this._nativeConvolverNode.buffer;\n }\n\n set buffer(value) {\n this._nativeConvolverNode.buffer = value;\n\n // Bug #115: Safari does not allow to set the buffer to null.\n if (value === null && this._nativeConvolverNode.buffer !== null) {\n const nativeContext = this._nativeConvolverNode.context;\n\n this._nativeConvolverNode.buffer = nativeContext.createBuffer(1, 1, nativeContext.sampleRate);\n this._isBufferNullified = true;\n\n setAudioNodeTailTime(this, 0);\n } else {\n this._isBufferNullified = false;\n\n setAudioNodeTailTime(this, this._nativeConvolverNode.buffer === null ? 0 : this._nativeConvolverNode.buffer.duration);\n }\n }\n\n get normalize(): boolean {\n return this._nativeConvolverNode.normalize;\n }\n\n set normalize(value) {\n this._nativeConvolverNode.normalize = value;\n }\n };\n};\n","export const detachArrayBuffer = (arrayBuffer: ArrayBuffer): Promise => {\n const { port1, port2 } = new MessageChannel();\n\n return new Promise((resolve) => {\n const closeAndResolve = () => {\n port2.onmessage = null;\n\n port1.close();\n port2.close();\n\n resolve();\n };\n\n port2.onmessage = () => closeAndResolve();\n\n try {\n port1.postMessage(arrayBuffer, [arrayBuffer]);\n } catch {\n // Ignore errors.\n } finally {\n closeAndResolve();\n }\n });\n};\n","import { IAudioParam, IDelayNode, IDelayOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TContext, TDelayNodeConstructorFactory } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n delayTime: 0,\n maxDelayTime: 1\n} as const;\n\nexport const createDelayNodeConstructor: TDelayNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createDelayNodeRenderer,\n createNativeDelayNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class DelayNode extends audioNodeConstructor implements IDelayNode {\n private _delayTime: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeDelayNode = createNativeDelayNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const delayNodeRenderer = >(isOffline ? createDelayNodeRenderer(mergedOptions.maxDelayTime) : null);\n\n super(context, false, nativeDelayNode, delayNodeRenderer);\n\n this._delayTime = createAudioParam(this, isOffline, nativeDelayNode.delayTime);\n\n setAudioNodeTailTime(this, mergedOptions.maxDelayTime);\n }\n\n get delayTime(): IAudioParam {\n return this._delayTime;\n }\n };\n};\n","import { isNativeAudioNode } from '../guards/native-audio-node';\nimport { TDisconnectMultipleOutputsFactory, TIndexSizeErrorFactory, TNativeAudioNode } from '../types';\n\nconst getOutputAudioNodeAtIndex = (\n createIndexSizeError: TIndexSizeErrorFactory,\n outputAudioNodes: TNativeAudioNode[],\n output: number\n): TNativeAudioNode => {\n const outputAudioNode = outputAudioNodes[output];\n\n if (outputAudioNode === undefined) {\n throw createIndexSizeError();\n }\n\n return outputAudioNode;\n};\n\nexport const createDisconnectMultipleOutputs: TDisconnectMultipleOutputsFactory = (createIndexSizeError) => {\n return (outputAudioNodes, destinationOrOutput = undefined, output = undefined, input = 0) => {\n if (destinationOrOutput === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect());\n }\n\n if (typeof destinationOrOutput === 'number') {\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, destinationOrOutput).disconnect();\n }\n\n if (isNativeAudioNode(destinationOrOutput)) {\n if (output === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput));\n }\n\n if (input === undefined) {\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0);\n }\n\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0, input);\n }\n\n if (output === undefined) {\n return outputAudioNodes.forEach((outputAudioNode) => outputAudioNode.disconnect(destinationOrOutput));\n }\n\n return getOutputAudioNodeAtIndex(createIndexSizeError, outputAudioNodes, output).disconnect(destinationOrOutput, 0);\n };\n};\n","import { IAudioParam, IDynamicsCompressorNode, IDynamicsCompressorOptions } from '../interfaces';\nimport {\n TAudioNodeRenderer,\n TChannelCountMode,\n TContext,\n TDynamicsCompressorNodeConstructorFactory,\n TNativeAudioParam,\n TNativeDynamicsCompressorNode\n} from '../types';\n\nconst DEFAULT_OPTIONS = {\n attack: 0.003,\n channelCount: 2,\n channelCountMode: 'clamped-max',\n channelInterpretation: 'speakers',\n knee: 30,\n ratio: 12,\n release: 0.25,\n threshold: -24\n} as const;\n\nexport const createDynamicsCompressorNodeConstructor: TDynamicsCompressorNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createDynamicsCompressorNodeRenderer,\n createNativeDynamicsCompressorNode,\n createNotSupportedError,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class DynamicsCompressorNode extends audioNodeConstructor implements IDynamicsCompressorNode {\n private _attack: IAudioParam;\n\n private _knee: IAudioParam;\n\n private _nativeDynamicsCompressorNode: TNativeDynamicsCompressorNode;\n\n private _ratio: IAudioParam;\n\n private _release: IAudioParam;\n\n private _threshold: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeDynamicsCompressorNode = createNativeDynamicsCompressorNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const dynamicsCompressorNodeRenderer = >(isOffline ? createDynamicsCompressorNodeRenderer() : null);\n\n super(context, false, nativeDynamicsCompressorNode, dynamicsCompressorNodeRenderer);\n\n this._attack = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.attack);\n this._knee = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.knee);\n this._nativeDynamicsCompressorNode = nativeDynamicsCompressorNode;\n this._ratio = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.ratio);\n this._release = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.release);\n this._threshold = createAudioParam(this, isOffline, nativeDynamicsCompressorNode.threshold);\n\n setAudioNodeTailTime(this, 0.006);\n }\n\n get attack(): IAudioParam {\n return this._attack;\n }\n\n // Bug #108: Safari allows a channelCount of three and above which is why the getter and setter needs to be overwritten here.\n get channelCount(): number {\n return this._nativeDynamicsCompressorNode.channelCount;\n }\n\n set channelCount(value) {\n const previousChannelCount = this._nativeDynamicsCompressorNode.channelCount;\n\n this._nativeDynamicsCompressorNode.channelCount = value;\n\n if (value > 2) {\n this._nativeDynamicsCompressorNode.channelCount = previousChannelCount;\n\n throw createNotSupportedError();\n }\n }\n\n /*\n * Bug #109: Only Chrome and Firefox disallow a channelCountMode of 'max' yet which is why the getter and setter needs to be\n * overwritten here.\n */\n get channelCountMode(): TChannelCountMode {\n return this._nativeDynamicsCompressorNode.channelCountMode;\n }\n\n set channelCountMode(value) {\n const previousChannelCount = this._nativeDynamicsCompressorNode.channelCountMode;\n\n this._nativeDynamicsCompressorNode.channelCountMode = value;\n\n if (value === 'max') {\n this._nativeDynamicsCompressorNode.channelCountMode = previousChannelCount;\n\n throw createNotSupportedError();\n }\n }\n\n get knee(): IAudioParam {\n return this._knee;\n }\n\n get ratio(): IAudioParam {\n return this._ratio;\n }\n\n get reduction(): number {\n // Bug #111: Safari returns an AudioParam instead of a number.\n if (typeof ((this._nativeDynamicsCompressorNode.reduction)).value === 'number') {\n return ((this._nativeDynamicsCompressorNode.reduction)).value;\n }\n\n return this._nativeDynamicsCompressorNode.reduction;\n }\n\n get release(): IAudioParam {\n return this._release;\n }\n\n get threshold(): IAudioParam {\n return this._threshold;\n }\n };\n};\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { IAudioParam, IGainNode, IGainOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TContext, TGainNodeConstructorFactory } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n gain: 1\n} as const;\n\nexport const createGainNodeConstructor: TGainNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createGainNodeRenderer,\n createNativeGainNode,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class GainNode extends audioNodeConstructor implements IGainNode {\n private _gain: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeGainNode = createNativeGainNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const gainNodeRenderer = >(isOffline ? createGainNodeRenderer() : null);\n\n super(context, false, nativeGainNode, gainNodeRenderer);\n\n // Bug #74: Safari does not export the correct values for maxValue and minValue.\n this._gain = createAudioParam(this, isOffline, nativeGainNode.gain, MOST_POSITIVE_SINGLE_FLOAT, MOST_NEGATIVE_SINGLE_FLOAT);\n }\n\n get gain(): IAudioParam {\n return this._gain;\n }\n };\n};\n","import { TInvalidStateErrorFactory } from '../types';\n\nexport const createInvalidStateError: TInvalidStateErrorFactory = () => new DOMException('', 'InvalidStateError');\n","import { TInvalidAccessErrorFactory } from '../types';\n\nexport const createInvalidAccessError: TInvalidAccessErrorFactory = () => new DOMException('', 'InvalidAccessError');\n","import { wrapIIRFilterNodeGetFrequencyResponseMethod } from '../helpers/wrap-iir-filter-node-get-frequency-response-method';\nimport { IIIRFilterNode, IIIRFilterOptions, IMinimalAudioContext } from '../interfaces';\nimport { TAudioNodeRenderer, TContext, TIIRFilterNodeConstructorFactory, TNativeIIRFilterNode } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers'\n} as const;\n\nexport const createIIRFilterNodeConstructor: TIIRFilterNodeConstructorFactory = (\n audioNodeConstructor,\n createNativeIIRFilterNode,\n createIIRFilterNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class IIRFilterNode extends audioNodeConstructor implements IIIRFilterNode {\n private _nativeIIRFilterNode: TNativeIIRFilterNode;\n\n constructor(\n context: T,\n options: { feedback: IIIRFilterOptions['feedback']; feedforward: IIIRFilterOptions['feedforward'] } & Partial\n ) {\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeIIRFilterNode = createNativeIIRFilterNode(\n nativeContext,\n isOffline ? null : ((context)).baseLatency,\n mergedOptions\n );\n const iirFilterNodeRenderer = >(\n (isOffline ? createIIRFilterNodeRenderer(mergedOptions.feedback, mergedOptions.feedforward) : null)\n );\n\n super(context, false, nativeIIRFilterNode, iirFilterNodeRenderer);\n\n // Bug #23 & #24: FirefoxDeveloper does not throw an InvalidAccessError.\n // @todo Write a test which allows other browsers to remain unpatched.\n wrapIIRFilterNodeGetFrequencyResponseMethod(nativeIIRFilterNode);\n\n this._nativeIIRFilterNode = nativeIIRFilterNode;\n\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n\n public getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void {\n return this._nativeIIRFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse);\n }\n };\n};\n","// This implementation as shamelessly inspired by source code of\n// tslint:disable-next-line:max-line-length\n// {@link https://chromium.googlesource.com/chromium/src.git/+/master/third_party/WebKit/Source/platform/audio/IIRFilter.cpp|Chromium's IIRFilter}.\nexport const filterBuffer = (\n feedback: Float64Array,\n feedbackLength: number,\n feedforward: Float64Array,\n feedforwardLength: number,\n minLength: number,\n xBuffer: Float32Array,\n yBuffer: Float32Array,\n bufferIndex: number,\n bufferLength: number,\n input: Float32Array,\n output: Float32Array\n) => {\n const inputLength = input.length;\n\n let i = bufferIndex;\n\n for (let j = 0; j < inputLength; j += 1) {\n let y = feedforward[0] * input[j];\n\n for (let k = 1; k < minLength; k += 1) {\n const x = (i - k) & (bufferLength - 1); // tslint:disable-line:no-bitwise\n\n y += feedforward[k] * xBuffer[x];\n y -= feedback[k] * yBuffer[x];\n }\n\n for (let k = minLength; k < feedforwardLength; k += 1) {\n y += feedforward[k] * xBuffer[(i - k) & (bufferLength - 1)]; // tslint:disable-line:no-bitwise\n }\n\n for (let k = minLength; k < feedbackLength; k += 1) {\n y -= feedback[k] * yBuffer[(i - k) & (bufferLength - 1)]; // tslint:disable-line:no-bitwise\n }\n\n xBuffer[i] = input[j];\n yBuffer[i] = y;\n\n i = (i + 1) & (bufferLength - 1); // tslint:disable-line:no-bitwise\n\n output[j] = y;\n }\n\n return i;\n};\n","import { IAudioContext, IAudioNodeOptions, IMediaStreamAudioDestinationNode, IMinimalAudioContext } from '../interfaces';\nimport { TAudioNodeRenderer, TMediaStreamAudioDestinationNodeConstructorFactory, TNativeMediaStreamAudioDestinationNode } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers'\n} as const;\n\nexport const createMediaStreamAudioDestinationNodeConstructor: TMediaStreamAudioDestinationNodeConstructorFactory = (\n audioNodeConstructor,\n createNativeMediaStreamAudioDestinationNode,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class MediaStreamAudioDestinationNode extends audioNodeConstructor\n implements IMediaStreamAudioDestinationNode {\n private _nativeMediaStreamAudioDestinationNode: TNativeMediaStreamAudioDestinationNode;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n\n // Bug #173: Safari allows to create a MediaStreamAudioDestinationNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw new TypeError();\n }\n\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeMediaStreamAudioDestinationNode = createNativeMediaStreamAudioDestinationNode(nativeContext, mergedOptions);\n\n super(context, false, nativeMediaStreamAudioDestinationNode, >null);\n\n this._nativeMediaStreamAudioDestinationNode = nativeMediaStreamAudioDestinationNode;\n }\n\n get stream(): MediaStream {\n return this._nativeMediaStreamAudioDestinationNode.stream;\n }\n };\n};\n","import { TNativeContext } from '../types';\n\nexport const testPromiseSupport = (nativeContext: TNativeContext): boolean => {\n // This 12 numbers represent the 48 bytes of an empty WAVE file with a single sample.\n const uint32Array = new Uint32Array([1179011410, 40, 1163280727, 544501094, 16, 131073, 44100, 176400, 1048580, 1635017060, 4, 0]);\n\n try {\n // Bug #1: Safari requires a successCallback.\n const promise = nativeContext.decodeAudioData(uint32Array.buffer, () => {\n // Ignore the success callback.\n });\n\n if (promise === undefined) {\n return false;\n }\n\n promise.catch(() => {\n // Ignore rejected errors.\n });\n\n return true;\n } catch {\n // Ignore errors.\n }\n\n return false;\n};\n","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { testPromiseSupport } from '../helpers/test-promise-support';\nimport { IAudioBuffer, IMinimalOfflineAudioContext, IOfflineAudioContextOptions } from '../interfaces';\nimport { TAudioContextState, TMinimalOfflineAudioContextConstructorFactory, TNativeOfflineAudioContext } from '../types';\n\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n} as const;\n\nexport const createMinimalOfflineAudioContextConstructor: TMinimalOfflineAudioContextConstructorFactory = (\n cacheTestResult,\n createInvalidStateError,\n createNativeOfflineAudioContext,\n minimalBaseAudioContextConstructor,\n startRendering\n) => {\n return class MinimalOfflineAudioContext extends minimalBaseAudioContextConstructor\n implements IMinimalOfflineAudioContext {\n private _length: number;\n\n private _nativeOfflineAudioContext: TNativeOfflineAudioContext;\n\n private _state: null | TAudioContextState;\n\n constructor(options: IOfflineAudioContextOptions) {\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n\n const nativeOfflineAudioContext = createNativeOfflineAudioContext(numberOfChannels, length, sampleRate);\n\n // #21 Safari does not support promises and therefore would fire the statechange event before the promise can be resolved.\n if (!cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n nativeOfflineAudioContext.addEventListener(\n 'statechange',\n (() => {\n let i = 0;\n\n const delayStateChangeEvent = (event: Event) => {\n if (this._state === 'running') {\n if (i > 0) {\n nativeOfflineAudioContext.removeEventListener('statechange', delayStateChangeEvent);\n event.stopImmediatePropagation();\n\n this._waitForThePromiseToSettle(event);\n } else {\n i += 1;\n }\n }\n };\n\n return delayStateChangeEvent;\n })()\n );\n }\n\n super(nativeOfflineAudioContext, numberOfChannels);\n\n this._length = length;\n this._nativeOfflineAudioContext = nativeOfflineAudioContext;\n this._state = null;\n }\n\n get length(): number {\n // Bug #17: Safari does not yet expose the length.\n if (this._nativeOfflineAudioContext.length === undefined) {\n return this._length;\n }\n\n return this._nativeOfflineAudioContext.length;\n }\n\n get state(): TAudioContextState {\n return this._state === null ? this._nativeOfflineAudioContext.state : this._state;\n }\n\n public startRendering(): Promise {\n /*\n * Bug #9 & #59: It is theoretically possible that startRendering() will first render a partialOfflineAudioContext. Therefore\n * the state of the nativeOfflineAudioContext might no transition to running immediately.\n */\n if (this._state === 'running') {\n return Promise.reject(createInvalidStateError());\n }\n\n this._state = 'running';\n\n return startRendering(this.destination, this._nativeOfflineAudioContext).finally(() => {\n this._state = null;\n\n deactivateAudioGraph(this);\n });\n }\n\n private _waitForThePromiseToSettle(event: Event): void {\n if (this._state === null) {\n this._nativeOfflineAudioContext.dispatchEvent(event);\n } else {\n setTimeout(() => this._waitForThePromiseToSettle(event));\n }\n }\n };\n};\n","export const assignNativeAudioNodeOption = (\n nativeAudioNode: Record,\n options: Record,\n option: T\n) => {\n const value = options[option];\n\n if (value !== undefined && value !== nativeAudioNode[option]) {\n nativeAudioNode[option] = value;\n }\n};\n","import { IAudioNodeOptions } from '../interfaces';\nimport { TNativeAudioNode } from '../types';\nimport { assignNativeAudioNodeOption } from './assign-native-audio-node-option';\n\nexport const assignNativeAudioNodeOptions = (nativeAudioNode: TNativeAudioNode, options: IAudioNodeOptions): void => {\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCount');\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelCountMode');\n assignNativeAudioNodeOption(nativeAudioNode, options, 'channelInterpretation');\n};\n","import { TNativeAnalyserNode } from '../types';\n\nexport const testAnalyserNodeGetFloatTimeDomainDataMethodSupport = (nativeAnalyserNode: TNativeAnalyserNode): boolean => {\n return typeof nativeAnalyserNode.getFloatTimeDomainData === 'function';\n};\n","export const assignNativeAudioNodeAudioParamValue = (\n nativeAudioNode: T,\n options: U,\n audioParam: keyof T & keyof U\n) => {\n const value = options[audioParam];\n\n if (value !== undefined && value !== nativeAudioNode[audioParam].value) {\n nativeAudioNode[audioParam].value = value;\n }\n};\n","import { TNativeAudioBufferSourceNode, TNativeConstantSourceNode, TNativeOscillatorNode } from '../types';\n\nexport const wrapAudioScheduledSourceNodeStartMethodNegativeParameters = (\n nativeAudioScheduledSourceNode: TNativeAudioBufferSourceNode | TNativeConstantSourceNode | TNativeOscillatorNode\n): void => {\n nativeAudioScheduledSourceNode.start = ((start) => {\n return (when = 0, offset = 0, duration?: number) => {\n if ((typeof duration === 'number' && duration < 0) || offset < 0 || when < 0) {\n throw new RangeError(\"The parameters can't be negative.\");\n }\n\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n (<(when: number, offset: number, duration?: number) => void>start).call(nativeAudioScheduledSourceNode, when, offset, duration);\n };\n })(nativeAudioScheduledSourceNode.start);\n};\n","import { TNativeAudioBufferSourceNode, TNativeConstantSourceNode, TNativeOscillatorNode } from '../types';\n\nexport const wrapAudioScheduledSourceNodeStopMethodNegativeParameters = (\n nativeAudioScheduledSourceNode: TNativeAudioBufferSourceNode | TNativeConstantSourceNode | TNativeOscillatorNode\n): void => {\n nativeAudioScheduledSourceNode.stop = ((stop) => {\n return (when = 0) => {\n if (when < 0) {\n throw new RangeError(\"The parameter can't be negative.\");\n }\n\n stop.call(nativeAudioScheduledSourceNode, when);\n };\n })(nativeAudioScheduledSourceNode.stop);\n};\n","export const computeBufferSize = (baseLatency: null | number, sampleRate: number) => {\n if (baseLatency === null) {\n return 512;\n }\n\n return Math.max(512, Math.min(16384, Math.pow(2, Math.round(Math.log2(baseLatency * sampleRate)))));\n};\n","import { IAudioWorkletNodeOptions, IAudioWorkletProcessor, IAudioWorkletProcessorConstructor } from '../interfaces';\nimport { cloneAudioWorkletNodeOptions } from './clone-audio-worklet-node-options';\n\nexport const createAudioWorkletProcessorPromise = async (\n processorConstructor: IAudioWorkletProcessorConstructor,\n audioWorkletNodeOptions: IAudioWorkletNodeOptions\n): Promise => {\n const clonedAudioWorkletNodeOptions = await cloneAudioWorkletNodeOptions(audioWorkletNodeOptions);\n\n return new processorConstructor(clonedAudioWorkletNodeOptions);\n};\n","import { IAudioWorkletNodeOptions } from '../interfaces';\n\nexport const cloneAudioWorkletNodeOptions = (audioWorkletNodeOptions: IAudioWorkletNodeOptions): Promise => {\n return new Promise((resolve, reject) => {\n const { port1, port2 } = new MessageChannel();\n\n port1.onmessage = ({ data }) => {\n port1.close();\n port2.close();\n\n resolve(data);\n };\n port1.onmessageerror = ({ data }) => {\n port1.close();\n port2.close();\n\n reject(data);\n };\n\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port2.postMessage(audioWorkletNodeOptions);\n });\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeBiquadFilterNodeFactory } from '../types';\n\nexport const createNativeBiquadFilterNode: TNativeBiquadFilterNodeFactory = (nativeContext, options) => {\n const nativeBiquadFilterNode = nativeContext.createBiquadFilter();\n\n assignNativeAudioNodeOptions(nativeBiquadFilterNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'Q');\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'detune');\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'frequency');\n assignNativeAudioNodeAudioParamValue(nativeBiquadFilterNode, options, 'gain');\n\n assignNativeAudioNodeOption(nativeBiquadFilterNode, options, 'type');\n\n return nativeBiquadFilterNode;\n};\n","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapChannelSplitterNode } from '../helpers/wrap-channel-splitter-node';\nimport { TNativeChannelSplitterNodeFactory } from '../types';\n\nexport const createNativeChannelSplitterNode: TNativeChannelSplitterNodeFactory = (nativeContext, options) => {\n const nativeChannelSplitterNode = nativeContext.createChannelSplitter(options.numberOfOutputs);\n\n // Bug #96: Safari does not have the correct channelCount.\n // Bug #29: Safari does not have the correct channelCountMode.\n // Bug #31: Safari does not have the correct channelInterpretation.\n assignNativeAudioNodeOptions(nativeChannelSplitterNode, options);\n\n // Bug #29, #30, #31, #32, #96 & #97: Only Chrome, Edge & Firefox partially support the spec yet.\n wrapChannelSplitterNode(nativeChannelSplitterNode);\n\n return nativeChannelSplitterNode;\n};\n","import { createInvalidStateError } from '../factories/invalid-state-error';\nimport { TNativeChannelSplitterNode } from '../types';\n\nexport const wrapChannelSplitterNode = (channelSplitterNode: TNativeChannelSplitterNode): void => {\n const channelCount = channelSplitterNode.numberOfOutputs;\n\n // Bug #97: Safari does not throw an error when attempting to change the channelCount to something other than its initial value.\n Object.defineProperty(channelSplitterNode, 'channelCount', {\n get: () => channelCount,\n set: (value) => {\n if (value !== channelCount) {\n throw createInvalidStateError();\n }\n }\n });\n\n // Bug #30: Safari does not throw an error when attempting to change the channelCountMode to something other than explicit.\n Object.defineProperty(channelSplitterNode, 'channelCountMode', {\n get: () => 'explicit',\n set: (value) => {\n if (value !== 'explicit') {\n throw createInvalidStateError();\n }\n }\n });\n\n // Bug #32: Safari does not throw an error when attempting to change the channelInterpretation to something other than discrete.\n Object.defineProperty(channelSplitterNode, 'channelInterpretation', {\n get: () => 'discrete',\n set: (value) => {\n if (value !== 'discrete') {\n throw createInvalidStateError();\n }\n }\n });\n};\n","import { TNativeAudioNode } from '../types';\n\nexport const interceptConnections = (\n original: T,\n interceptor: TNativeAudioNode\n): T & { connect: TNativeAudioNode['connect']; disconnect: TNativeAudioNode['disconnect'] } => {\n (original).connect = interceptor.connect.bind(interceptor);\n\n (original).disconnect = interceptor.disconnect.bind(interceptor);\n\n return original;\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeDelayNodeFactory } from '../types';\n\nexport const createNativeDelayNode: TNativeDelayNodeFactory = (nativeContext, options) => {\n const nativeDelayNode = nativeContext.createDelay(options.maxDelayTime);\n\n assignNativeAudioNodeOptions(nativeDelayNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeDelayNode, options, 'delayTime');\n\n return nativeDelayNode;\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeGainNodeFactory } from '../types';\n\nexport const createNativeGainNode: TNativeGainNodeFactory = (nativeContext, options) => {\n const nativeGainNode = nativeContext.createGain();\n\n assignNativeAudioNodeOptions(nativeGainNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeGainNode, options, 'gain');\n\n return nativeGainNode;\n};\n","import { computeBufferSize } from '../helpers/compute-buffer-size';\nimport { filterBuffer } from '../helpers/filter-buffer';\nimport { interceptConnections } from '../helpers/intercept-connections';\nimport { TNativeAudioNode, TNativeIIRFilterNode, TNativeIIRFilterNodeFakerFactoryFactory } from '../types';\n\nfunction divide(a: [number, number], b: [number, number]): [number, number] {\n const denominator = b[0] * b[0] + b[1] * b[1];\n\n return [(a[0] * b[0] + a[1] * b[1]) / denominator, (a[1] * b[0] - a[0] * b[1]) / denominator];\n}\n\nfunction multiply(a: [number, number], b: [number, number]): [number, number] {\n return [a[0] * b[0] - a[1] * b[1], a[0] * b[1] + a[1] * b[0]];\n}\n\nfunction evaluatePolynomial(coefficient: Float64Array, z: [number, number]): [number, number] {\n let result: [number, number] = [0, 0];\n\n for (let i = coefficient.length - 1; i >= 0; i -= 1) {\n result = multiply(result, z);\n\n result[0] += coefficient[i];\n }\n\n return result;\n}\n\nexport const createNativeIIRFilterNodeFakerFactory: TNativeIIRFilterNodeFakerFactoryFactory = (\n createInvalidAccessError,\n createInvalidStateError,\n createNativeScriptProcessorNode,\n createNotSupportedError\n) => {\n return (nativeContext, baseLatency, { channelCount, channelCountMode, channelInterpretation, feedback, feedforward }) => {\n const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate);\n const convertedFeedback = feedback instanceof Float64Array ? feedback : new Float64Array(feedback);\n const convertedFeedforward = feedforward instanceof Float64Array ? feedforward : new Float64Array(feedforward);\n const feedbackLength = convertedFeedback.length;\n const feedforwardLength = convertedFeedforward.length;\n const minLength = Math.min(feedbackLength, feedforwardLength);\n\n if (feedbackLength === 0 || feedbackLength > 20) {\n throw createNotSupportedError();\n }\n\n if (convertedFeedback[0] === 0) {\n throw createInvalidStateError();\n }\n\n if (feedforwardLength === 0 || feedforwardLength > 20) {\n throw createNotSupportedError();\n }\n\n if (convertedFeedforward[0] === 0) {\n throw createInvalidStateError();\n }\n\n if (convertedFeedback[0] !== 1) {\n for (let i = 0; i < feedforwardLength; i += 1) {\n convertedFeedforward[i] /= convertedFeedback[0];\n }\n\n for (let i = 1; i < feedbackLength; i += 1) {\n convertedFeedback[i] /= convertedFeedback[0];\n }\n }\n\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, bufferSize, channelCount, channelCount);\n\n scriptProcessorNode.channelCount = channelCount;\n scriptProcessorNode.channelCountMode = channelCountMode;\n scriptProcessorNode.channelInterpretation = channelInterpretation;\n\n const bufferLength = 32;\n const bufferIndexes: number[] = [];\n const xBuffers: Float32Array[] = [];\n const yBuffers: Float32Array[] = [];\n\n for (let i = 0; i < channelCount; i += 1) {\n bufferIndexes.push(0);\n\n const xBuffer = new Float32Array(bufferLength);\n const yBuffer = new Float32Array(bufferLength);\n\n xBuffer.fill(0);\n yBuffer.fill(0);\n\n xBuffers.push(xBuffer);\n yBuffers.push(yBuffer);\n }\n\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = (event: AudioProcessingEvent) => {\n const inputBuffer = event.inputBuffer;\n const outputBuffer = event.outputBuffer;\n\n const numberOfChannels = inputBuffer.numberOfChannels;\n\n for (let i = 0; i < numberOfChannels; i += 1) {\n const input = inputBuffer.getChannelData(i);\n const output = outputBuffer.getChannelData(i);\n\n bufferIndexes[i] = filterBuffer(\n convertedFeedback,\n feedbackLength,\n convertedFeedforward,\n feedforwardLength,\n minLength,\n xBuffers[i],\n yBuffers[i],\n bufferIndexes[i],\n bufferLength,\n input,\n output\n );\n }\n };\n\n const nyquist = nativeContext.sampleRate / 2;\n\n const nativeIIRFilterNodeFaker = {\n get bufferSize(): number {\n return bufferSize;\n },\n get channelCount(): number {\n return scriptProcessorNode.channelCount;\n },\n set channelCount(value) {\n scriptProcessorNode.channelCount = value;\n },\n get channelCountMode(): TNativeIIRFilterNode['channelCountMode'] {\n return scriptProcessorNode.channelCountMode;\n },\n set channelCountMode(value) {\n scriptProcessorNode.channelCountMode = value;\n },\n get channelInterpretation(): TNativeIIRFilterNode['channelInterpretation'] {\n return scriptProcessorNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n scriptProcessorNode.channelInterpretation = value;\n },\n get context(): TNativeIIRFilterNode['context'] {\n return scriptProcessorNode.context;\n },\n get inputs(): TNativeAudioNode[] {\n return [scriptProcessorNode];\n },\n get numberOfInputs(): number {\n return scriptProcessorNode.numberOfInputs;\n },\n get numberOfOutputs(): number {\n return scriptProcessorNode.numberOfOutputs;\n },\n addEventListener(...args: any[]): void {\n // @todo Dissallow adding an audioprocess listener.\n return scriptProcessorNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args: any[]): boolean {\n return scriptProcessorNode.dispatchEvent(args[0]);\n },\n getFrequencyResponse(frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array): void {\n if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) {\n throw createInvalidAccessError();\n }\n\n const length = frequencyHz.length;\n\n for (let i = 0; i < length; i += 1) {\n const omega = -Math.PI * (frequencyHz[i] / nyquist);\n const z: [number, number] = [Math.cos(omega), Math.sin(omega)];\n const numerator = evaluatePolynomial(convertedFeedforward, z);\n const denominator = evaluatePolynomial(convertedFeedback, z);\n const response = divide(numerator, denominator);\n\n magResponse[i] = Math.sqrt(response[0] * response[0] + response[1] * response[1]);\n phaseResponse[i] = Math.atan2(response[1], response[0]);\n }\n },\n removeEventListener(...args: any[]): void {\n return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n\n return interceptConnections(nativeIIRFilterNodeFaker, scriptProcessorNode);\n };\n};\n","import { TNativeScriptProcessorNodeFactory } from '../types';\n\nexport const createNativeScriptProcessorNode: TNativeScriptProcessorNodeFactory = (\n nativeContext,\n bufferSize,\n numberOfInputChannels,\n numberOfOutputChannels\n) => {\n return nativeContext.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels); // tslint:disable-line deprecation\n};\n","import { TNotSupportedErrorFactory } from '../types';\n\nexport const createNotSupportedError: TNotSupportedErrorFactory = () => new DOMException('', 'NotSupportedError');\n","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { testPromiseSupport } from '../helpers/test-promise-support';\nimport { IAudioBuffer, IOfflineAudioContext, IOfflineAudioContextOptions } from '../interfaces';\nimport { TAudioContextState, TNativeOfflineAudioContext, TOfflineAudioContextConstructorFactory } from '../types';\n\nconst DEFAULT_OPTIONS = {\n numberOfChannels: 1\n} as const;\n\nexport const createOfflineAudioContextConstructor: TOfflineAudioContextConstructorFactory = (\n baseAudioContextConstructor,\n cacheTestResult,\n createInvalidStateError,\n createNativeOfflineAudioContext,\n startRendering\n) => {\n return class OfflineAudioContext extends baseAudioContextConstructor implements IOfflineAudioContext {\n private _length: number;\n\n private _nativeOfflineAudioContext: TNativeOfflineAudioContext;\n\n private _state: null | TAudioContextState;\n\n constructor(options: IOfflineAudioContextOptions);\n constructor(numberOfChannels: number, length: number, sampleRate: number);\n constructor(a: number | IOfflineAudioContextOptions, b?: number, c?: number) {\n let options: IOfflineAudioContextOptions;\n\n if (typeof a === 'number' && b !== undefined && c !== undefined) {\n options = { length: b, numberOfChannels: a, sampleRate: c };\n } else if (typeof a === 'object') {\n options = a;\n } else {\n throw new Error('The given parameters are not valid.');\n }\n\n const { length, numberOfChannels, sampleRate } = { ...DEFAULT_OPTIONS, ...options };\n\n const nativeOfflineAudioContext = createNativeOfflineAudioContext(numberOfChannels, length, sampleRate);\n\n // #21 Safari does not support promises and therefore would fire the statechange event before the promise can be resolved.\n if (!cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n nativeOfflineAudioContext.addEventListener(\n 'statechange',\n (() => {\n let i = 0;\n\n const delayStateChangeEvent = (event: Event) => {\n if (this._state === 'running') {\n if (i > 0) {\n nativeOfflineAudioContext.removeEventListener('statechange', delayStateChangeEvent);\n event.stopImmediatePropagation();\n\n this._waitForThePromiseToSettle(event);\n } else {\n i += 1;\n }\n }\n };\n\n return delayStateChangeEvent;\n })()\n );\n }\n\n super(nativeOfflineAudioContext, numberOfChannels);\n\n this._length = length;\n this._nativeOfflineAudioContext = nativeOfflineAudioContext;\n this._state = null;\n }\n\n get length(): number {\n // Bug #17: Safari does not yet expose the length.\n if (this._nativeOfflineAudioContext.length === undefined) {\n return this._length;\n }\n\n return this._nativeOfflineAudioContext.length;\n }\n\n get state(): TAudioContextState {\n return this._state === null ? this._nativeOfflineAudioContext.state : this._state;\n }\n\n public startRendering(): Promise {\n /*\n * Bug #9 & #59: It is theoretically possible that startRendering() will first render a partialOfflineAudioContext. Therefore\n * the state of the nativeOfflineAudioContext might no transition to running immediately.\n */\n if (this._state === 'running') {\n return Promise.reject(createInvalidStateError());\n }\n\n this._state = 'running';\n\n return startRendering(this.destination, this._nativeOfflineAudioContext).finally(() => {\n this._state = null;\n\n deactivateAudioGraph(this);\n });\n }\n\n private _waitForThePromiseToSettle(event: Event): void {\n if (this._state === null) {\n this._nativeOfflineAudioContext.dispatchEvent(event);\n } else {\n setTimeout(() => this._waitForThePromiseToSettle(event));\n }\n }\n };\n};\n","import { isActiveAudioNode } from '../helpers/is-active-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassive } from '../helpers/set-internal-state-to-passive';\nimport {\n IAudioParam,\n IAudioScheduledSourceNodeEventMap,\n IMinimalOfflineAudioContext,\n IOscillatorNode,\n IOscillatorNodeRenderer,\n IOscillatorOptions\n} from '../interfaces';\nimport {\n TContext,\n TEventHandler,\n TNativeOscillatorNode,\n TOscillatorNodeConstructorFactory,\n TOscillatorNodeRenderer,\n TOscillatorType\n} from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max', // This attribute has no effect for nodes with no inputs.\n channelInterpretation: 'speakers', // This attribute has no effect for nodes with no inputs.\n detune: 0,\n frequency: 440,\n periodicWave: undefined,\n type: 'sine'\n} as const;\n\nexport const createOscillatorNodeConstructor: TOscillatorNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createNativeOscillatorNode,\n createOscillatorNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n wrapEventListener\n) => {\n return class OscillatorNode\n extends audioNodeConstructor\n implements IOscillatorNode\n {\n private _detune: IAudioParam;\n\n private _frequency: IAudioParam;\n\n private _nativeOscillatorNode: TNativeOscillatorNode;\n\n private _onended: null | TEventHandler;\n\n private _oscillatorNodeRenderer: TOscillatorNodeRenderer;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeOscillatorNode = createNativeOscillatorNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const oscillatorNodeRenderer = >(isOffline ? createOscillatorNodeRenderer() : null);\n const nyquist = context.sampleRate / 2;\n\n super(context, false, nativeOscillatorNode, oscillatorNodeRenderer);\n\n // Bug #81: Firefox & Safari do not export the correct values for maxValue and minValue.\n this._detune = createAudioParam(this, isOffline, nativeOscillatorNode.detune, 153600, -153600);\n // Bug #76: Safari does not export the correct values for maxValue and minValue.\n this._frequency = createAudioParam(this, isOffline, nativeOscillatorNode.frequency, nyquist, -nyquist);\n this._nativeOscillatorNode = nativeOscillatorNode;\n this._onended = null;\n this._oscillatorNodeRenderer = oscillatorNodeRenderer;\n\n if (this._oscillatorNodeRenderer !== null && mergedOptions.periodicWave !== undefined) {\n (>this._oscillatorNodeRenderer).periodicWave =\n mergedOptions.periodicWave;\n }\n }\n\n get detune(): IAudioParam {\n return this._detune;\n }\n\n get frequency(): IAudioParam {\n return this._frequency;\n }\n\n get onended(): null | TEventHandler {\n return this._onended;\n }\n\n set onended(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n\n this._nativeOscillatorNode.onended = wrappedListener;\n\n const nativeOnEnded = this._nativeOscillatorNode.onended;\n\n this._onended = nativeOnEnded !== null && nativeOnEnded === wrappedListener ? value : nativeOnEnded;\n }\n\n get type(): TOscillatorType {\n return this._nativeOscillatorNode.type;\n }\n\n set type(value) {\n this._nativeOscillatorNode.type = value;\n\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.periodicWave = null;\n }\n }\n\n public setPeriodicWave(periodicWave: PeriodicWave): void {\n this._nativeOscillatorNode.setPeriodicWave(periodicWave);\n\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.periodicWave = periodicWave;\n }\n }\n\n public start(when = 0): void {\n this._nativeOscillatorNode.start(when);\n\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.start = when;\n }\n\n if (this.context.state !== 'closed') {\n setInternalStateToActive(this);\n\n const resetInternalStateToPassive = () => {\n this._nativeOscillatorNode.removeEventListener('ended', resetInternalStateToPassive);\n\n if (isActiveAudioNode(this)) {\n setInternalStateToPassive(this);\n }\n };\n\n this._nativeOscillatorNode.addEventListener('ended', resetInternalStateToPassive);\n }\n }\n\n public stop(when = 0): void {\n this._nativeOscillatorNode.stop(when);\n\n if (this._oscillatorNodeRenderer !== null) {\n this._oscillatorNodeRenderer.stop = when;\n }\n }\n };\n};\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { IAudioParam, IPannerNode, IPannerOptions } from '../interfaces';\nimport {\n TAudioNodeRenderer,\n TContext,\n TDistanceModelType,\n TNativePannerNode,\n TPannerNodeConstructorFactory,\n TPanningModelType\n} from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'clamped-max',\n channelInterpretation: 'speakers',\n coneInnerAngle: 360,\n coneOuterAngle: 360,\n coneOuterGain: 0,\n distanceModel: 'inverse',\n maxDistance: 10000,\n orientationX: 1,\n orientationY: 0,\n orientationZ: 0,\n panningModel: 'equalpower',\n positionX: 0,\n positionY: 0,\n positionZ: 0,\n refDistance: 1,\n rolloffFactor: 1\n} as const;\n\nexport const createPannerNodeConstructor: TPannerNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createNativePannerNode,\n createPannerNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class PannerNode extends audioNodeConstructor implements IPannerNode {\n private _nativePannerNode: TNativePannerNode;\n\n private _orientationX: IAudioParam;\n\n private _orientationY: IAudioParam;\n\n private _orientationZ: IAudioParam;\n\n private _positionX: IAudioParam;\n\n private _positionY: IAudioParam;\n\n private _positionZ: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativePannerNode = createNativePannerNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const pannerNodeRenderer = >(isOffline ? createPannerNodeRenderer() : null);\n\n super(context, false, nativePannerNode, pannerNodeRenderer);\n\n this._nativePannerNode = nativePannerNode;\n // Bug #74: Safari does not export the correct values for maxValue and minValue.\n this._orientationX = createAudioParam(\n this,\n isOffline,\n nativePannerNode.orientationX,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._orientationY = createAudioParam(\n this,\n isOffline,\n nativePannerNode.orientationY,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._orientationZ = createAudioParam(\n this,\n isOffline,\n nativePannerNode.orientationZ,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._positionX = createAudioParam(\n this,\n isOffline,\n nativePannerNode.positionX,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._positionY = createAudioParam(\n this,\n isOffline,\n nativePannerNode.positionY,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n this._positionZ = createAudioParam(\n this,\n isOffline,\n nativePannerNode.positionZ,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n\n get coneInnerAngle(): number {\n return this._nativePannerNode.coneInnerAngle;\n }\n\n set coneInnerAngle(value) {\n this._nativePannerNode.coneInnerAngle = value;\n }\n\n get coneOuterAngle(): number {\n return this._nativePannerNode.coneOuterAngle;\n }\n\n set coneOuterAngle(value) {\n this._nativePannerNode.coneOuterAngle = value;\n }\n\n get coneOuterGain(): number {\n return this._nativePannerNode.coneOuterGain;\n }\n\n set coneOuterGain(value) {\n this._nativePannerNode.coneOuterGain = value;\n }\n\n get distanceModel(): TDistanceModelType {\n return this._nativePannerNode.distanceModel;\n }\n\n set distanceModel(value) {\n this._nativePannerNode.distanceModel = value;\n }\n\n get maxDistance(): number {\n return this._nativePannerNode.maxDistance;\n }\n\n set maxDistance(value) {\n this._nativePannerNode.maxDistance = value;\n }\n\n get orientationX(): IAudioParam {\n return this._orientationX;\n }\n\n get orientationY(): IAudioParam {\n return this._orientationY;\n }\n\n get orientationZ(): IAudioParam {\n return this._orientationZ;\n }\n\n get panningModel(): TPanningModelType {\n return this._nativePannerNode.panningModel;\n }\n\n set panningModel(value) {\n this._nativePannerNode.panningModel = value;\n }\n\n get positionX(): IAudioParam {\n return this._positionX;\n }\n\n get positionY(): IAudioParam {\n return this._positionY;\n }\n\n get positionZ(): IAudioParam {\n return this._positionZ;\n }\n\n get refDistance(): number {\n return this._nativePannerNode.refDistance;\n }\n\n set refDistance(value) {\n this._nativePannerNode.refDistance = value;\n }\n\n get rolloffFactor(): number {\n return this._nativePannerNode.rolloffFactor;\n }\n\n set rolloffFactor(value) {\n this._nativePannerNode.rolloffFactor = value;\n }\n };\n};\n","import { IPeriodicWave, IPeriodicWaveOptions } from '../interfaces';\nimport { TContext, TPeriodicWaveConstructorFactory } from '../types';\n\nconst DEFAULT_OPTIONS = {\n disableNormalization: false\n} as const;\n\nexport const createPeriodicWaveConstructor: TPeriodicWaveConstructorFactory = (\n createNativePeriodicWave,\n getNativeContext,\n periodicWaveStore,\n sanitizePeriodicWaveOptions\n) => {\n return class PeriodicWave implements IPeriodicWave {\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = sanitizePeriodicWaveOptions({ ...DEFAULT_OPTIONS, ...options });\n const periodicWave = createNativePeriodicWave(nativeContext, mergedOptions);\n\n periodicWaveStore.add(periodicWave);\n\n // This does violate all good pratices but it is used here to simplify the handling of periodic waves.\n return periodicWave;\n }\n\n public static [Symbol.hasInstance](instance: unknown): boolean {\n return (\n (instance !== null && typeof instance === 'object' && Object.getPrototypeOf(instance) === PeriodicWave.prototype) ||\n periodicWaveStore.has(instance)\n );\n }\n };\n};\n","import { IAudioParam, IStereoPannerNode, IStereoPannerOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TContext, TStereoPannerNodeConstructorFactory } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n /*\n * Bug #105: The channelCountMode should be 'clamped-max' according to the spec but is set to 'explicit' to achieve consistent\n * behavior.\n */\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n pan: 0\n} as const;\n\nexport const createStereoPannerNodeConstructor: TStereoPannerNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioParam,\n createNativeStereoPannerNode,\n createStereoPannerNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class StereoPannerNode extends audioNodeConstructor implements IStereoPannerNode {\n private _pan: IAudioParam;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeStereoPannerNode = createNativeStereoPannerNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const stereoPannerNodeRenderer = >(isOffline ? createStereoPannerNodeRenderer() : null);\n\n super(context, false, nativeStereoPannerNode, stereoPannerNodeRenderer);\n\n this._pan = createAudioParam(this, isOffline, nativeStereoPannerNode.pan);\n }\n\n get pan(): IAudioParam {\n return this._pan;\n }\n };\n};\n","import { TUnknownErrorFactory } from '../types';\n\nexport const createUnknownError: TUnknownErrorFactory = () => new DOMException('', 'UnknownError');\n","import { IWaveShaperNode, IWaveShaperOptions } from '../interfaces';\nimport { TAudioNodeRenderer, TContext, TNativeWaveShaperNode, TOverSampleType, TWaveShaperNodeConstructorFactory } from '../types';\n\nconst DEFAULT_OPTIONS = {\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n curve: null,\n oversample: 'none'\n} as const;\n\nexport const createWaveShaperNodeConstructor: TWaveShaperNodeConstructorFactory = (\n audioNodeConstructor,\n createInvalidStateError,\n createNativeWaveShaperNode,\n createWaveShaperNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n) => {\n return class WaveShaperNode extends audioNodeConstructor implements IWaveShaperNode {\n private _isCurveNullified: boolean;\n\n private _nativeWaveShaperNode: TNativeWaveShaperNode;\n\n constructor(context: T, options?: Partial) {\n const nativeContext = getNativeContext(context);\n const mergedOptions = { ...DEFAULT_OPTIONS, ...options };\n const nativeWaveShaperNode = createNativeWaveShaperNode(nativeContext, mergedOptions);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const waveShaperNodeRenderer = >(isOffline ? createWaveShaperNodeRenderer() : null);\n\n // @todo Add a mechanism to only switch a WaveShaperNode to active while it is connected.\n super(context, true, nativeWaveShaperNode, waveShaperNodeRenderer);\n\n this._isCurveNullified = false;\n this._nativeWaveShaperNode = nativeWaveShaperNode;\n\n // @todo Determine a meaningful tail-time instead of just using one second.\n setAudioNodeTailTime(this, 1);\n }\n\n get curve(): null | Float32Array {\n if (this._isCurveNullified) {\n return null;\n }\n\n return this._nativeWaveShaperNode.curve;\n }\n\n set curve(value) {\n // Bug #103: Safari does not allow to set the curve to null.\n if (value === null) {\n this._isCurveNullified = true;\n this._nativeWaveShaperNode.curve = new Float32Array([0, 0]);\n } else {\n // Bug #102: Safari does not throw an InvalidStateError when the curve has less than two samples.\n // Bug #104: Chrome and Edge will throw an InvalidAccessError when the curve has less than two samples.\n if (value.length < 2) {\n throw createInvalidStateError();\n }\n\n this._isCurveNullified = false;\n this._nativeWaveShaperNode.curve = value;\n }\n }\n\n get oversample(): TOverSampleType {\n return this._nativeWaveShaperNode.oversample;\n }\n\n set oversample(value) {\n this._nativeWaveShaperNode.oversample = value;\n }\n };\n};\n","import { TGetFirstSampleFunction } from '../types';\n\nexport const getFirstSample: TGetFirstSampleFunction = (audioBuffer, buffer, channelNumber) => {\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n if (audioBuffer.copyFromChannel === undefined) {\n return audioBuffer.getChannelData(channelNumber)[0];\n }\n\n audioBuffer.copyFromChannel(buffer, channelNumber);\n\n return buffer[0];\n};\n","import { TIsDCCurveFunction } from '../types';\n\nexport const isDCCurve: TIsDCCurveFunction = (curve) => {\n if (curve === null) {\n return false;\n }\n\n const length = curve.length;\n\n if (length % 2 !== 0) {\n return curve[Math.floor(length / 2)] !== 0;\n }\n\n return curve[length / 2 - 1] + curve[length / 2] !== 0;\n};\n","import { TOverwriteAccessorsFunction } from '../types';\n\nexport const overwriteAccessors: TOverwriteAccessorsFunction = (object, property, createGetter, createSetter) => {\n let prototype = object;\n\n while (!prototype.hasOwnProperty(property)) {\n prototype = Object.getPrototypeOf(prototype);\n }\n\n const { get, set } = >Object.getOwnPropertyDescriptor(prototype, property);\n\n Object.defineProperty(object, property, { get: createGetter(get), set: createSetter(set) });\n};\n","import { TSetValueAtTimeUntilPossibleFunction } from '../types';\n\nexport const setValueAtTimeUntilPossible: TSetValueAtTimeUntilPossibleFunction = (audioParam, value, startTime) => {\n try {\n audioParam.setValueAtTime(value, startTime);\n } catch (err) {\n if (err.code !== 9) {\n throw err;\n }\n\n setValueAtTimeUntilPossible(audioParam, value, startTime + 1e-7);\n }\n};\n","import { TNativeContext } from '../types';\n\nexport const testAudioScheduledSourceNodeStartMethodNegativeParametersSupport = (nativeContext: TNativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createOscillator();\n\n try {\n nativeAudioBufferSourceNode.start(-1);\n } catch (err) {\n return err instanceof RangeError;\n }\n\n return false;\n};\n","import { TNativeContext } from '../types';\n\nexport const testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport = (nativeContext: TNativeContext) => {\n const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100);\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n nativeAudioBufferSourceNode.start();\n nativeAudioBufferSourceNode.stop();\n\n try {\n nativeAudioBufferSourceNode.stop();\n\n return true;\n } catch {\n return false;\n }\n};\n","import { TNativeContext } from '../types';\n\nexport const testAudioScheduledSourceNodeStopMethodNegativeParametersSupport = (nativeContext: TNativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createOscillator();\n\n try {\n nativeAudioBufferSourceNode.stop(-1);\n } catch (err) {\n return err instanceof RangeError;\n }\n\n return false;\n};\n","import { TNativeAudioNode, TWrapAudioScheduledSourceNodeStopMethodConsecutiveCallsFunction } from '../types';\nimport { interceptConnections } from './intercept-connections';\n\nexport const wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls: TWrapAudioScheduledSourceNodeStopMethodConsecutiveCallsFunction = (\n nativeAudioScheduledSourceNode,\n nativeContext\n) => {\n const nativeGainNode = nativeContext.createGain();\n\n nativeAudioScheduledSourceNode.connect(nativeGainNode);\n\n const disconnectGainNode = ((disconnect) => {\n return () => {\n // @todo TypeScript cannot infer the overloaded signature with 1 argument yet.\n (<(destinaton: TNativeAudioNode) => void>disconnect).call(nativeAudioScheduledSourceNode, nativeGainNode);\n nativeAudioScheduledSourceNode.removeEventListener('ended', disconnectGainNode);\n };\n })(nativeAudioScheduledSourceNode.disconnect);\n\n nativeAudioScheduledSourceNode.addEventListener('ended', disconnectGainNode);\n\n interceptConnections(nativeAudioScheduledSourceNode, nativeGainNode);\n\n nativeAudioScheduledSourceNode.stop = ((stop) => {\n let isStopped = false;\n\n return (when = 0) => {\n if (isStopped) {\n try {\n stop.call(nativeAudioScheduledSourceNode, when);\n } catch {\n nativeGainNode.gain.setValueAtTime(0, when);\n }\n } else {\n stop.call(nativeAudioScheduledSourceNode, when);\n\n isStopped = true;\n }\n };\n })(nativeAudioScheduledSourceNode.stop);\n};\n","import { TWrapEventListenerFunction } from '../types';\n\nexport const wrapEventListener: TWrapEventListenerFunction = (target, eventListener) => {\n return (event) => {\n const descriptor = { value: target };\n\n Object.defineProperties(event, {\n currentTarget: descriptor,\n target: descriptor\n });\n\n if (typeof eventListener === 'function') {\n return eventListener.call(target, event);\n }\n\n return eventListener.handleEvent.call(target, event);\n };\n};\n","import {\n createCancelAndHoldAutomationEvent,\n createCancelScheduledValuesAutomationEvent,\n createExponentialRampToValueAutomationEvent,\n createLinearRampToValueAutomationEvent,\n createSetTargetAutomationEvent,\n createSetValueAutomationEvent,\n createSetValueCurveAutomationEvent\n} from 'automation-events';\nimport { createAbortError } from './factories/abort-error';\nimport { createAddActiveInputConnectionToAudioNode } from './factories/add-active-input-connection-to-audio-node';\nimport { createAddAudioNodeConnections } from './factories/add-audio-node-connections';\nimport { createAddAudioParamConnections } from './factories/add-audio-param-connections';\nimport { createAddAudioWorkletModule } from './factories/add-audio-worklet-module';\nimport { createAddConnectionToAudioNode } from './factories/add-connection-to-audio-node';\nimport { createAddPassiveInputConnectionToAudioNode } from './factories/add-passive-input-connection-to-audio-node';\nimport { createAddSilentConnection } from './factories/add-silent-connection';\nimport { createAddUnrenderedAudioWorkletNode } from './factories/add-unrendered-audio-worklet-node';\nimport { createAnalyserNodeConstructor } from './factories/analyser-node-constructor';\nimport { createAnalyserNodeRendererFactory } from './factories/analyser-node-renderer-factory';\nimport { createAudioBufferConstructor } from './factories/audio-buffer-constructor';\nimport { createAudioBufferSourceNodeConstructor } from './factories/audio-buffer-source-node-constructor';\nimport { createAudioBufferSourceNodeRendererFactory } from './factories/audio-buffer-source-node-renderer-factory';\nimport { createAudioContextConstructor } from './factories/audio-context-constructor';\nimport { createAudioDestinationNodeConstructor } from './factories/audio-destination-node-constructor';\nimport { createAudioDestinationNodeRenderer } from './factories/audio-destination-node-renderer-factory';\nimport { createAudioListenerFactory } from './factories/audio-listener-factory';\nimport { createAudioNodeConstructor } from './factories/audio-node-constructor';\nimport { createAudioParamFactory } from './factories/audio-param-factory';\nimport { createAudioParamRenderer } from './factories/audio-param-renderer';\nimport { createAudioWorkletNodeConstructor } from './factories/audio-worklet-node-constructor';\nimport { createAudioWorkletNodeRendererFactory } from './factories/audio-worklet-node-renderer-factory';\nimport { createBaseAudioContextConstructor } from './factories/base-audio-context-constructor';\nimport { createBiquadFilterNodeConstructor } from './factories/biquad-filter-node-constructor';\nimport { createBiquadFilterNodeRendererFactory } from './factories/biquad-filter-node-renderer-factory';\nimport { createCacheTestResult } from './factories/cache-test-result';\nimport { createChannelMergerNodeConstructor } from './factories/channel-merger-node-constructor';\nimport { createChannelMergerNodeRendererFactory } from './factories/channel-merger-node-renderer-factory';\nimport { createChannelSplitterNodeConstructor } from './factories/channel-splitter-node-constructor';\nimport { createChannelSplitterNodeRendererFactory } from './factories/channel-splitter-node-renderer-factory';\nimport { createConnectAudioParam } from './factories/connect-audio-param';\nimport { createConnectMultipleOutputs } from './factories/connect-multiple-outputs';\nimport { createConnectedNativeAudioBufferSourceNodeFactory } from './factories/connected-native-audio-buffer-source-node-factory';\nimport { createConstantSourceNodeConstructor } from './factories/constant-source-node-constructor';\nimport { createConstantSourceNodeRendererFactory } from './factories/constant-source-node-renderer-factory';\nimport { createConvertNumberToUnsignedLong } from './factories/convert-number-to-unsigned-long';\nimport { createConvolverNodeConstructor } from './factories/convolver-node-constructor';\nimport { createConvolverNodeRendererFactory } from './factories/convolver-node-renderer-factory';\nimport { createCreateNativeOfflineAudioContext } from './factories/create-native-offline-audio-context';\nimport { createDataCloneError } from './factories/data-clone-error';\nimport { createDecodeAudioData } from './factories/decode-audio-data';\nimport { createDecrementCycleCounter } from './factories/decrement-cycle-counter';\nimport { createDelayNodeConstructor } from './factories/delay-node-constructor';\nimport { createDelayNodeRendererFactory } from './factories/delay-node-renderer-factory';\nimport { createDeleteActiveInputConnectionToAudioNode } from './factories/delete-active-input-connection-to-audio-node';\nimport { createDeleteUnrenderedAudioWorkletNode } from './factories/delete-unrendered-audio-worklet-node';\nimport { createDetectCycles } from './factories/detect-cycles';\nimport { createDisconnectMultipleOutputs } from './factories/disconnect-multiple-outputs';\nimport { createDynamicsCompressorNodeConstructor } from './factories/dynamics-compressor-node-constructor';\nimport { createDynamicsCompressorNodeRendererFactory } from './factories/dynamics-compressor-node-renderer-factory';\nimport { createEncodingError } from './factories/encoding-error';\nimport { createEvaluateSource } from './factories/evaluate-source';\nimport { createEventTargetConstructor } from './factories/event-target-constructor';\nimport { createExposeCurrentFrameAndCurrentTime } from './factories/expose-current-frame-and-current-time';\nimport { createFetchSource } from './factories/fetch-source';\nimport { createGainNodeConstructor } from './factories/gain-node-constructor';\nimport { createGainNodeRendererFactory } from './factories/gain-node-renderer-factory';\nimport { createGetActiveAudioWorkletNodeInputs } from './factories/get-active-audio-worklet-node-inputs';\nimport { createGetAudioNodeRenderer } from './factories/get-audio-node-renderer';\nimport { createGetAudioNodeTailTime } from './factories/get-audio-node-tail-time';\nimport { createGetAudioParamRenderer } from './factories/get-audio-param-renderer';\nimport { createGetBackupOfflineAudioContext } from './factories/get-backup-offline-audio-context';\nimport { createGetNativeContext } from './factories/get-native-context';\nimport { createGetOrCreateBackupOfflineAudioContext } from './factories/get-or-create-backup-offline-audio-context';\nimport { createGetUnrenderedAudioWorkletNodes } from './factories/get-unrendered-audio-worklet-nodes';\nimport { createIIRFilterNodeConstructor } from './factories/iir-filter-node-constructor';\nimport { createIIRFilterNodeRendererFactory } from './factories/iir-filter-node-renderer-factory';\nimport { createIncrementCycleCounterFactory } from './factories/increment-cycle-counter-factory';\nimport { createIndexSizeError } from './factories/index-size-error';\nimport { createInvalidAccessError } from './factories/invalid-access-error';\nimport { createInvalidStateError } from './factories/invalid-state-error';\nimport { createIsAnyAudioContext } from './factories/is-any-audio-context';\nimport { createIsAnyAudioNode } from './factories/is-any-audio-node';\nimport { createIsAnyAudioParam } from './factories/is-any-audio-param';\nimport { createIsAnyOfflineAudioContext } from './factories/is-any-offline-audio-context';\nimport { createIsNativeAudioContext } from './factories/is-native-audio-context';\nimport { createIsNativeAudioNode } from './factories/is-native-audio-node';\nimport { createIsNativeAudioParam } from './factories/is-native-audio-param';\nimport { createIsNativeContext } from './factories/is-native-context';\nimport { createIsNativeOfflineAudioContext } from './factories/is-native-offline-audio-context';\nimport { createIsSecureContext } from './factories/is-secure-context';\nimport { createIsSupportedPromise } from './factories/is-supported-promise';\nimport { createMediaElementAudioSourceNodeConstructor } from './factories/media-element-audio-source-node-constructor';\nimport { createMediaStreamAudioDestinationNodeConstructor } from './factories/media-stream-audio-destination-node-constructor';\nimport { createMediaStreamAudioSourceNodeConstructor } from './factories/media-stream-audio-source-node-constructor';\nimport { createMediaStreamTrackAudioSourceNodeConstructor } from './factories/media-stream-track-audio-source-node-constructor';\nimport { createMinimalAudioContextConstructor } from './factories/minimal-audio-context-constructor';\nimport { createMinimalBaseAudioContextConstructor } from './factories/minimal-base-audio-context-constructor';\nimport { createMinimalOfflineAudioContextConstructor } from './factories/minimal-offline-audio-context-constructor';\nimport { createMonitorConnections } from './factories/monitor-connections';\nimport { createNativeAnalyserNodeFactory } from './factories/native-analyser-node-factory';\nimport { createNativeAudioBufferConstructor } from './factories/native-audio-buffer-constructor';\nimport { createNativeAudioBufferSourceNodeFactory } from './factories/native-audio-buffer-source-node-factory';\nimport { createNativeAudioContextConstructor } from './factories/native-audio-context-constructor';\nimport { createNativeAudioDestinationNodeFactory } from './factories/native-audio-destination-node';\nimport { createNativeAudioWorkletNodeConstructor } from './factories/native-audio-worklet-node-constructor';\nimport { createNativeAudioWorkletNodeFactory } from './factories/native-audio-worklet-node-factory';\nimport { createNativeAudioWorkletNodeFakerFactory } from './factories/native-audio-worklet-node-faker-factory';\nimport { createNativeBiquadFilterNode } from './factories/native-biquad-filter-node';\nimport { createNativeChannelMergerNodeFactory } from './factories/native-channel-merger-node-factory';\nimport { createNativeChannelSplitterNode } from './factories/native-channel-splitter-node';\nimport { createNativeConstantSourceNodeFactory } from './factories/native-constant-source-node-factory';\nimport { createNativeConstantSourceNodeFakerFactory } from './factories/native-constant-source-node-faker-factory';\nimport { createNativeConvolverNodeFactory } from './factories/native-convolver-node-factory';\nimport { createNativeDelayNode } from './factories/native-delay-node';\nimport { createNativeDynamicsCompressorNodeFactory } from './factories/native-dynamics-compressor-node-factory';\nimport { createNativeGainNode } from './factories/native-gain-node';\nimport { createNativeIIRFilterNodeFactory } from './factories/native-iir-filter-node-factory';\nimport { createNativeIIRFilterNodeFakerFactory } from './factories/native-iir-filter-node-faker-factory';\nimport { createNativeMediaElementAudioSourceNode } from './factories/native-media-element-audio-source-node';\nimport { createNativeMediaStreamAudioDestinationNode } from './factories/native-media-stream-audio-destination-node';\nimport { createNativeMediaStreamAudioSourceNode } from './factories/native-media-stream-audio-source-node';\nimport { createNativeMediaStreamTrackAudioSourceNodeFactory } from './factories/native-media-stream-track-audio-source-node-factory';\nimport { createNativeOfflineAudioContextConstructor } from './factories/native-offline-audio-context-constructor';\nimport { createNativeOscillatorNodeFactory } from './factories/native-oscillator-node-factory';\nimport { createNativePannerNodeFactory } from './factories/native-panner-node-factory';\nimport { createNativePannerNodeFakerFactory } from './factories/native-panner-node-faker-factory';\nimport { createNativePeriodicWaveFactory } from './factories/native-periodic-wave-factory';\nimport { createNativeScriptProcessorNode } from './factories/native-script-processor-node';\nimport { createNativeStereoPannerNodeFactory } from './factories/native-stereo-panner-node-factory';\nimport { createNativeStereoPannerNodeFakerFactory } from './factories/native-stereo-panner-node-faker-factory';\nimport { createNativeWaveShaperNodeFactory } from './factories/native-wave-shaper-node-factory';\nimport { createNativeWaveShaperNodeFakerFactory } from './factories/native-wave-shaper-node-faker-factory';\nimport { createNotSupportedError } from './factories/not-supported-error';\nimport { createOfflineAudioContextConstructor } from './factories/offline-audio-context-constructor';\nimport { createOscillatorNodeConstructor } from './factories/oscillator-node-constructor';\nimport { createOscillatorNodeRendererFactory } from './factories/oscillator-node-renderer-factory';\nimport { createPannerNodeConstructor } from './factories/panner-node-constructor';\nimport { createPannerNodeRendererFactory } from './factories/panner-node-renderer-factory';\nimport { createPeriodicWaveConstructor } from './factories/periodic-wave-constructor';\nimport { createRenderAutomation } from './factories/render-automation';\nimport { createRenderInputsOfAudioNode } from './factories/render-inputs-of-audio-node';\nimport { createRenderInputsOfAudioParam } from './factories/render-inputs-of-audio-param';\nimport { createRenderNativeOfflineAudioContext } from './factories/render-native-offline-audio-context';\nimport { createSetActiveAudioWorkletNodeInputs } from './factories/set-active-audio-worklet-node-inputs';\nimport { createSetAudioNodeTailTime } from './factories/set-audio-node-tail-time';\nimport { createStartRendering } from './factories/start-rendering';\nimport { createStereoPannerNodeConstructor } from './factories/stereo-panner-node-constructor';\nimport { createStereoPannerNodeRendererFactory } from './factories/stereo-panner-node-renderer-factory';\nimport { createTestAudioBufferConstructorSupport } from './factories/test-audio-buffer-constructor-support';\nimport { createTestAudioBufferCopyChannelMethodsSubarraySupport } from './factories/test-audio-buffer-copy-channel-methods-subarray-support';\nimport { createTestAudioContextCloseMethodSupport } from './factories/test-audio-context-close-method-support';\nimport { createTestAudioContextDecodeAudioDataMethodTypeErrorSupport } from './factories/test-audio-context-decode-audio-data-method-type-error-support';\nimport { createTestAudioContextOptionsSupport } from './factories/test-audio-context-options-support';\nimport { createTestAudioNodeConnectMethodSupport } from './factories/test-audio-node-connect-method-support';\nimport { createTestAudioWorkletProcessorNoOutputsSupport } from './factories/test-audio-worklet-processor-no-outputs-support';\nimport { createTestAudioWorkletProcessorPostMessageSupport } from './factories/test-audio-worklet-processor-post-message-support';\nimport { createTestChannelMergerNodeChannelCountSupport } from './factories/test-channel-merger-node-channel-count-support';\nimport { createTestConstantSourceNodeAccurateSchedulingSupport } from './factories/test-constant-source-node-accurate-scheduling-support';\nimport { createTestConvolverNodeBufferReassignabilitySupport } from './factories/test-convolver-node-buffer-reassignability-support';\nimport { createTestConvolverNodeChannelCountSupport } from './factories/test-convolver-node-channel-count-support';\nimport { createTestIsSecureContextSupport } from './factories/test-is-secure-context-support';\nimport { createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport } from './factories/test-media-stream-audio-source-node-media-stream-without-audio-track-support';\nimport { createTestOfflineAudioContextCurrentTimeSupport } from './factories/test-offline-audio-context-current-time-support';\nimport { createTestStereoPannerNodeDefaultValueSupport } from './factories/test-stereo-panner-node-default-value-support';\nimport { createUnknownError } from './factories/unknown-error';\nimport { createWaveShaperNodeConstructor } from './factories/wave-shaper-node-constructor';\nimport { createWaveShaperNodeRendererFactory } from './factories/wave-shaper-node-renderer-factory';\nimport { createWindow } from './factories/window';\nimport { createWrapAudioBufferCopyChannelMethods } from './factories/wrap-audio-buffer-copy-channel-methods';\nimport { createWrapAudioBufferCopyChannelMethodsOutOfBounds } from './factories/wrap-audio-buffer-copy-channel-methods-out-of-bounds';\nimport { createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer } from './factories/wrap-audio-buffer-source-node-stop-method-nullified-buffer';\nimport { createWrapChannelMergerNode } from './factories/wrap-channel-merger-node';\nimport {\n AUDIO_NODE_CONNECTIONS_STORE,\n AUDIO_NODE_STORE,\n AUDIO_PARAM_CONNECTIONS_STORE,\n AUDIO_PARAM_STORE,\n CONTEXT_STORE,\n CYCLE_COUNTERS\n} from './globals';\nimport { connectNativeAudioNodeToNativeAudioNode } from './helpers/connect-native-audio-node-to-native-audio-node';\nimport { disconnectNativeAudioNodeFromNativeAudioNode } from './helpers/disconnect-native-audio-node-from-native-audio-node';\nimport { getAudioNodeConnections } from './helpers/get-audio-node-connections';\nimport { getAudioParamConnections } from './helpers/get-audio-param-connections';\nimport { getEventListenersOfAudioNode } from './helpers/get-event-listeners-of-audio-node';\nimport { getFirstSample } from './helpers/get-first-sample';\nimport { getNativeAudioNode } from './helpers/get-native-audio-node';\nimport { getNativeAudioParam } from './helpers/get-native-audio-param';\nimport { getValueForKey } from './helpers/get-value-for-key';\nimport { insertElementInSet } from './helpers/insert-element-in-set';\nimport { isActiveAudioNode } from './helpers/is-active-audio-node';\nimport { isDCCurve } from './helpers/is-dc-curve';\nimport { isPartOfACycle } from './helpers/is-part-of-a-cycle';\nimport { isPassiveAudioNode } from './helpers/is-passive-audio-node';\nimport { overwriteAccessors } from './helpers/overwrite-accessors';\nimport { pickElementFromSet } from './helpers/pick-element-from-set';\nimport { sanitizeAudioWorkletNodeOptions } from './helpers/sanitize-audio-worklet-node-options';\nimport { sanitizeChannelSplitterOptions } from './helpers/sanitize-channel-splitter-options';\nimport { sanitizePeriodicWaveOptions } from './helpers/sanitize-periodic-wave-options';\nimport { setValueAtTimeUntilPossible } from './helpers/set-value-at-time-until-possible';\nimport { testAudioBufferCopyChannelMethodsOutOfBoundsSupport } from './helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support';\nimport { testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport } from './helpers/test-audio-buffer-source-node-start-method-consecutive-calls-support';\nimport { testAudioBufferSourceNodeStartMethodOffsetClampingSupport } from './helpers/test-audio-buffer-source-node-start-method-offset-clamping-support';\nimport { testAudioBufferSourceNodeStopMethodNullifiedBufferSupport } from './helpers/test-audio-buffer-source-node-stop-method-nullified-buffer-support';\nimport { testAudioScheduledSourceNodeStartMethodNegativeParametersSupport } from './helpers/test-audio-scheduled-source-node-start-method-negative-parameters-support';\nimport { testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport } from './helpers/test-audio-scheduled-source-node-stop-method-consecutive-calls-support';\nimport { testAudioScheduledSourceNodeStopMethodNegativeParametersSupport } from './helpers/test-audio-scheduled-source-node-stop-method-negative-parameters-support';\nimport { testAudioWorkletNodeOptionsClonability } from './helpers/test-audio-worklet-node-options-clonability';\nimport { testDomExceptionConstructorSupport } from './helpers/test-dom-exception-constructor-support';\nimport { testPromiseSupport } from './helpers/test-promise-support';\nimport { testTransferablesSupport } from './helpers/test-transferables-support';\nimport { wrapAudioBufferSourceNodeStartMethodOffsetClamping } from './helpers/wrap-audio-buffer-source-node-start-method-offset-clamping';\nimport { wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls } from './helpers/wrap-audio-scheduled-source-node-stop-method-consecutive-calls';\nimport { wrapEventListener } from './helpers/wrap-event-listener';\nimport {\n IAnalyserNode,\n IAudioBuffer,\n IAudioBufferSourceNode,\n IAudioContext,\n IAudioNode,\n IAudioWorkletNode,\n IBiquadFilterNode,\n IConstantSourceNode,\n IConvolverNode,\n IDelayNode,\n IDynamicsCompressorNode,\n IGainNode,\n IIIRFilterNode,\n IMediaElementAudioSourceNode,\n IMediaStreamAudioDestinationNode,\n IMediaStreamAudioSourceNode,\n IMediaStreamTrackAudioSourceNode,\n IMinimalAudioContext,\n IMinimalOfflineAudioContext,\n IOfflineAudioContext,\n IOfflineAudioContextConstructor,\n IOscillatorNode,\n IPannerNode,\n IPeriodicWave,\n IStereoPannerNode,\n IWaveShaperNode\n} from './interfaces';\nimport {\n TActiveAudioWorkletNodeInputsStore,\n TAddAudioWorkletModuleFunction,\n TAnalyserNodeConstructor,\n TAudioBufferConstructor,\n TAudioBufferSourceNodeConstructor,\n TAudioBufferStore,\n TAudioContextConstructor,\n TAudioParamAudioNodeStore,\n TAudioWorkletNodeConstructor,\n TBackupOfflineAudioContextStore,\n TBiquadFilterNodeConstructor,\n TChannelMergerNodeConstructor,\n TChannelSplitterNodeConstructor,\n TConstantSourceNodeConstructor,\n TContext,\n TConvolverNodeConstructor,\n TDecodeAudioDataFunction,\n TDelayNodeConstructor,\n TDynamicsCompressorNodeConstructor,\n TGainNodeConstructor,\n TIIRFilterNodeConstructor,\n TMediaElementAudioSourceNodeConstructor,\n TMediaStreamAudioDestinationNodeConstructor,\n TMediaStreamAudioSourceNodeConstructor,\n TMediaStreamTrackAudioSourceNodeConstructor,\n TMinimalAudioContextConstructor,\n TMinimalOfflineAudioContextConstructor,\n TOscillatorNodeConstructor,\n TPannerNodeConstructor,\n TPeriodicWaveConstructor,\n TStereoPannerNodeConstructor,\n TUnrenderedAudioWorkletNodeStore,\n TWaveShaperNodeConstructor\n} from './types';\n\n/*\n * @todo Explicitly referencing the barrel file seems to be necessary when enabling the\n * isolatedModules compiler option.\n */\nexport * from './interfaces/index';\nexport * from './types/index';\n\nconst addActiveInputConnectionToAudioNode = createAddActiveInputConnectionToAudioNode(insertElementInSet);\nconst addPassiveInputConnectionToAudioNode = createAddPassiveInputConnectionToAudioNode(insertElementInSet);\nconst deleteActiveInputConnectionToAudioNode = createDeleteActiveInputConnectionToAudioNode(pickElementFromSet);\nconst audioNodeTailTimeStore = new WeakMap();\nconst getAudioNodeTailTime = createGetAudioNodeTailTime(audioNodeTailTimeStore);\nconst cacheTestResult = createCacheTestResult(new Map(), new WeakMap());\nconst window = createWindow();\nconst createNativeAnalyserNode = createNativeAnalyserNodeFactory(cacheTestResult, createIndexSizeError);\nconst getAudioNodeRenderer = createGetAudioNodeRenderer(getAudioNodeConnections);\nconst renderInputsOfAudioNode = createRenderInputsOfAudioNode(getAudioNodeConnections, getAudioNodeRenderer, isPartOfACycle);\nconst createAnalyserNodeRenderer = createAnalyserNodeRendererFactory(createNativeAnalyserNode, getNativeAudioNode, renderInputsOfAudioNode);\nconst getNativeContext = createGetNativeContext(CONTEXT_STORE);\nconst nativeOfflineAudioContextConstructor = createNativeOfflineAudioContextConstructor(window);\nconst isNativeOfflineAudioContext = createIsNativeOfflineAudioContext(nativeOfflineAudioContextConstructor);\nconst audioParamAudioNodeStore: TAudioParamAudioNodeStore = new WeakMap();\nconst eventTargetConstructor = createEventTargetConstructor(wrapEventListener);\nconst nativeAudioContextConstructor = createNativeAudioContextConstructor(window);\nconst isNativeAudioContext = createIsNativeAudioContext(nativeAudioContextConstructor);\nconst isNativeAudioNode = createIsNativeAudioNode(window);\nconst isNativeAudioParam = createIsNativeAudioParam(window);\nconst nativeAudioWorkletNodeConstructor = createNativeAudioWorkletNodeConstructor(window);\nconst audioNodeConstructor = createAudioNodeConstructor(\n createAddAudioNodeConnections(AUDIO_NODE_CONNECTIONS_STORE),\n createAddConnectionToAudioNode(\n addActiveInputConnectionToAudioNode,\n addPassiveInputConnectionToAudioNode,\n connectNativeAudioNodeToNativeAudioNode,\n deleteActiveInputConnectionToAudioNode,\n disconnectNativeAudioNodeFromNativeAudioNode,\n getAudioNodeConnections,\n getAudioNodeTailTime,\n getEventListenersOfAudioNode,\n getNativeAudioNode,\n insertElementInSet,\n isActiveAudioNode,\n isPartOfACycle,\n isPassiveAudioNode\n ),\n cacheTestResult,\n createIncrementCycleCounterFactory(\n CYCLE_COUNTERS,\n disconnectNativeAudioNodeFromNativeAudioNode,\n getAudioNodeConnections,\n getNativeAudioNode,\n getNativeAudioParam,\n isActiveAudioNode\n ),\n createIndexSizeError,\n createInvalidAccessError,\n createNotSupportedError,\n createDecrementCycleCounter(\n connectNativeAudioNodeToNativeAudioNode,\n CYCLE_COUNTERS,\n getAudioNodeConnections,\n getNativeAudioNode,\n getNativeAudioParam,\n getNativeContext,\n isActiveAudioNode,\n isNativeOfflineAudioContext\n ),\n createDetectCycles(audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey),\n eventTargetConstructor,\n getNativeContext,\n isNativeAudioContext,\n isNativeAudioNode,\n isNativeAudioParam,\n isNativeOfflineAudioContext,\n nativeAudioWorkletNodeConstructor\n);\nconst analyserNodeConstructor: TAnalyserNodeConstructor = createAnalyserNodeConstructor(\n audioNodeConstructor,\n createAnalyserNodeRenderer,\n createIndexSizeError,\n createNativeAnalyserNode,\n getNativeContext,\n isNativeOfflineAudioContext\n);\n\ntype analyserNodeConstructor = IAnalyserNode;\n\nexport { analyserNodeConstructor as AnalyserNode };\n\nconst audioBufferStore: TAudioBufferStore = new WeakSet();\nconst nativeAudioBufferConstructor = createNativeAudioBufferConstructor(window);\nconst convertNumberToUnsignedLong = createConvertNumberToUnsignedLong(new Uint32Array(1));\nconst wrapAudioBufferCopyChannelMethods = createWrapAudioBufferCopyChannelMethods(convertNumberToUnsignedLong, createIndexSizeError);\nconst wrapAudioBufferCopyChannelMethodsOutOfBounds = createWrapAudioBufferCopyChannelMethodsOutOfBounds(convertNumberToUnsignedLong);\nconst audioBufferConstructor: TAudioBufferConstructor = createAudioBufferConstructor(\n audioBufferStore,\n cacheTestResult,\n createNotSupportedError,\n nativeAudioBufferConstructor,\n nativeOfflineAudioContextConstructor,\n createTestAudioBufferConstructorSupport(nativeAudioBufferConstructor),\n wrapAudioBufferCopyChannelMethods,\n wrapAudioBufferCopyChannelMethodsOutOfBounds\n);\n\ntype audioBufferConstructor = IAudioBuffer;\n\nexport { audioBufferConstructor as AudioBuffer };\n\nconst addSilentConnection = createAddSilentConnection(createNativeGainNode);\nconst renderInputsOfAudioParam = createRenderInputsOfAudioParam(getAudioNodeRenderer, getAudioParamConnections, isPartOfACycle);\nconst connectAudioParam = createConnectAudioParam(renderInputsOfAudioParam);\nconst createNativeAudioBufferSourceNode = createNativeAudioBufferSourceNodeFactory(\n addSilentConnection,\n cacheTestResult,\n testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport,\n testAudioBufferSourceNodeStartMethodOffsetClampingSupport,\n testAudioBufferSourceNodeStopMethodNullifiedBufferSupport,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,\n wrapAudioBufferSourceNodeStartMethodOffsetClamping,\n createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer(overwriteAccessors),\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls\n);\nconst renderAutomation = createRenderAutomation(createGetAudioParamRenderer(getAudioParamConnections), renderInputsOfAudioParam);\nconst createAudioBufferSourceNodeRenderer = createAudioBufferSourceNodeRendererFactory(\n connectAudioParam,\n createNativeAudioBufferSourceNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst createAudioParam = createAudioParamFactory(\n createAddAudioParamConnections(AUDIO_PARAM_CONNECTIONS_STORE),\n audioParamAudioNodeStore,\n AUDIO_PARAM_STORE,\n createAudioParamRenderer,\n createCancelAndHoldAutomationEvent,\n createCancelScheduledValuesAutomationEvent,\n createExponentialRampToValueAutomationEvent,\n createLinearRampToValueAutomationEvent,\n createSetTargetAutomationEvent,\n createSetValueAutomationEvent,\n createSetValueCurveAutomationEvent,\n nativeAudioContextConstructor,\n setValueAtTimeUntilPossible\n);\nconst audioBufferSourceNodeConstructor: TAudioBufferSourceNodeConstructor = createAudioBufferSourceNodeConstructor(\n audioNodeConstructor,\n createAudioBufferSourceNodeRenderer,\n createAudioParam,\n createInvalidStateError,\n createNativeAudioBufferSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n wrapEventListener\n);\n\ntype audioBufferSourceNodeConstructor = IAudioBufferSourceNode;\n\nexport { audioBufferSourceNodeConstructor as AudioBufferSourceNode };\n\nconst audioDestinationNodeConstructor = createAudioDestinationNodeConstructor(\n audioNodeConstructor,\n createAudioDestinationNodeRenderer,\n createIndexSizeError,\n createInvalidStateError,\n createNativeAudioDestinationNodeFactory(createNativeGainNode, overwriteAccessors),\n getNativeContext,\n isNativeOfflineAudioContext,\n renderInputsOfAudioNode\n);\nconst createBiquadFilterNodeRenderer = createBiquadFilterNodeRendererFactory(\n connectAudioParam,\n createNativeBiquadFilterNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst setAudioNodeTailTime = createSetAudioNodeTailTime(audioNodeTailTimeStore);\nconst biquadFilterNodeConstructor: TBiquadFilterNodeConstructor = createBiquadFilterNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createBiquadFilterNodeRenderer,\n createInvalidAccessError,\n createNativeBiquadFilterNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst monitorConnections = createMonitorConnections(insertElementInSet, isNativeAudioNode);\nconst wrapChannelMergerNode = createWrapChannelMergerNode(createInvalidStateError, monitorConnections);\nconst createNativeChannelMergerNode = createNativeChannelMergerNodeFactory(nativeAudioContextConstructor, wrapChannelMergerNode);\nconst createChannelMergerNodeRenderer = createChannelMergerNodeRendererFactory(\n createNativeChannelMergerNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n);\nconst channelMergerNodeConstructor: TChannelMergerNodeConstructor = createChannelMergerNodeConstructor(\n audioNodeConstructor,\n createChannelMergerNodeRenderer,\n createNativeChannelMergerNode,\n getNativeContext,\n isNativeOfflineAudioContext\n);\nconst createChannelSplitterNodeRenderer = createChannelSplitterNodeRendererFactory(\n createNativeChannelSplitterNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n);\nconst channelSplitterNodeConstructor: TChannelSplitterNodeConstructor = createChannelSplitterNodeConstructor(\n audioNodeConstructor,\n createChannelSplitterNodeRenderer,\n createNativeChannelSplitterNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n sanitizeChannelSplitterOptions\n);\nconst createNativeConstantSourceNodeFaker = createNativeConstantSourceNodeFakerFactory(\n addSilentConnection,\n createNativeAudioBufferSourceNode,\n createNativeGainNode,\n monitorConnections\n);\nconst createNativeConstantSourceNode = createNativeConstantSourceNodeFactory(\n addSilentConnection,\n cacheTestResult,\n createNativeConstantSourceNodeFaker,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport\n);\nconst createConstantSourceNodeRenderer = createConstantSourceNodeRendererFactory(\n connectAudioParam,\n createNativeConstantSourceNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst constantSourceNodeConstructor: TConstantSourceNodeConstructor = createConstantSourceNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createConstantSourceNodeRenderer,\n createNativeConstantSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n wrapEventListener\n);\nconst createNativeConvolverNode = createNativeConvolverNodeFactory(createNotSupportedError, overwriteAccessors);\nconst createConvolverNodeRenderer = createConvolverNodeRendererFactory(\n createNativeConvolverNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n);\nconst convolverNodeConstructor: TConvolverNodeConstructor = createConvolverNodeConstructor(\n audioNodeConstructor,\n createConvolverNodeRenderer,\n createNativeConvolverNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst createDelayNodeRenderer = createDelayNodeRendererFactory(\n connectAudioParam,\n createNativeDelayNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst delayNodeConstructor: TDelayNodeConstructor = createDelayNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createDelayNodeRenderer,\n createNativeDelayNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst createNativeDynamicsCompressorNode = createNativeDynamicsCompressorNodeFactory(createNotSupportedError);\nconst createDynamicsCompressorNodeRenderer = createDynamicsCompressorNodeRendererFactory(\n connectAudioParam,\n createNativeDynamicsCompressorNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst dynamicsCompressorNodeConstructor: TDynamicsCompressorNodeConstructor = createDynamicsCompressorNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createDynamicsCompressorNodeRenderer,\n createNativeDynamicsCompressorNode,\n createNotSupportedError,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst createGainNodeRenderer = createGainNodeRendererFactory(\n connectAudioParam,\n createNativeGainNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst gainNodeConstructor: TGainNodeConstructor = createGainNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createGainNodeRenderer,\n createNativeGainNode,\n getNativeContext,\n isNativeOfflineAudioContext\n);\nconst createNativeIIRFilterNodeFaker = createNativeIIRFilterNodeFakerFactory(\n createInvalidAccessError,\n createInvalidStateError,\n createNativeScriptProcessorNode,\n createNotSupportedError\n);\nconst renderNativeOfflineAudioContext = createRenderNativeOfflineAudioContext(\n cacheTestResult,\n createNativeGainNode,\n createNativeScriptProcessorNode,\n createTestOfflineAudioContextCurrentTimeSupport(createNativeGainNode, nativeOfflineAudioContextConstructor)\n);\nconst createIIRFilterNodeRenderer = createIIRFilterNodeRendererFactory(\n createNativeAudioBufferSourceNode,\n getNativeAudioNode,\n nativeOfflineAudioContextConstructor,\n renderInputsOfAudioNode,\n renderNativeOfflineAudioContext\n);\nconst createNativeIIRFilterNode = createNativeIIRFilterNodeFactory(createNativeIIRFilterNodeFaker);\nconst iIRFilterNodeConstructor: TIIRFilterNodeConstructor = createIIRFilterNodeConstructor(\n audioNodeConstructor,\n createNativeIIRFilterNode,\n createIIRFilterNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst createAudioListener = createAudioListenerFactory(\n createAudioParam,\n createNativeChannelMergerNode,\n createNativeConstantSourceNode,\n createNativeScriptProcessorNode,\n createNotSupportedError,\n getFirstSample,\n isNativeOfflineAudioContext,\n overwriteAccessors\n);\nconst unrenderedAudioWorkletNodeStore: TUnrenderedAudioWorkletNodeStore = new WeakMap();\nconst minimalBaseAudioContextConstructor = createMinimalBaseAudioContextConstructor(\n audioDestinationNodeConstructor,\n createAudioListener,\n eventTargetConstructor,\n isNativeOfflineAudioContext,\n unrenderedAudioWorkletNodeStore,\n wrapEventListener\n);\nconst createNativeOscillatorNode = createNativeOscillatorNodeFactory(\n addSilentConnection,\n cacheTestResult,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls\n);\nconst createOscillatorNodeRenderer = createOscillatorNodeRendererFactory(\n connectAudioParam,\n createNativeOscillatorNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst oscillatorNodeConstructor: TOscillatorNodeConstructor = createOscillatorNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createNativeOscillatorNode,\n createOscillatorNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n wrapEventListener\n);\nconst createConnectedNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNodeFactory(createNativeAudioBufferSourceNode);\nconst createNativeWaveShaperNodeFaker = createNativeWaveShaperNodeFakerFactory(\n createConnectedNativeAudioBufferSourceNode,\n createInvalidStateError,\n createNativeGainNode,\n isDCCurve,\n monitorConnections\n);\nconst createNativeWaveShaperNode = createNativeWaveShaperNodeFactory(\n createConnectedNativeAudioBufferSourceNode,\n createInvalidStateError,\n createNativeWaveShaperNodeFaker,\n isDCCurve,\n monitorConnections,\n nativeAudioContextConstructor,\n overwriteAccessors\n);\nconst createNativePannerNodeFaker = createNativePannerNodeFakerFactory(\n connectNativeAudioNodeToNativeAudioNode,\n createInvalidStateError,\n createNativeChannelMergerNode,\n createNativeGainNode,\n createNativeScriptProcessorNode,\n createNativeWaveShaperNode,\n createNotSupportedError,\n disconnectNativeAudioNodeFromNativeAudioNode,\n getFirstSample,\n monitorConnections\n);\nconst createNativePannerNode = createNativePannerNodeFactory(createNativePannerNodeFaker);\nconst createPannerNodeRenderer = createPannerNodeRendererFactory(\n connectAudioParam,\n createNativeChannelMergerNode,\n createNativeConstantSourceNode,\n createNativeGainNode,\n createNativePannerNode,\n getNativeAudioNode,\n nativeOfflineAudioContextConstructor,\n renderAutomation,\n renderInputsOfAudioNode,\n renderNativeOfflineAudioContext\n);\nconst pannerNodeConstructor: TPannerNodeConstructor = createPannerNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createNativePannerNode,\n createPannerNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst createNativePeriodicWave = createNativePeriodicWaveFactory(createIndexSizeError);\nconst periodicWaveConstructor: TPeriodicWaveConstructor = createPeriodicWaveConstructor(\n createNativePeriodicWave,\n getNativeContext,\n new WeakSet(),\n sanitizePeriodicWaveOptions\n);\nconst nativeStereoPannerNodeFakerFactory = createNativeStereoPannerNodeFakerFactory(\n createNativeChannelMergerNode,\n createNativeChannelSplitterNode,\n createNativeGainNode,\n createNativeWaveShaperNode,\n createNotSupportedError,\n monitorConnections\n);\nconst createNativeStereoPannerNode = createNativeStereoPannerNodeFactory(nativeStereoPannerNodeFakerFactory, createNotSupportedError);\nconst createStereoPannerNodeRenderer = createStereoPannerNodeRendererFactory(\n connectAudioParam,\n createNativeStereoPannerNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n);\nconst stereoPannerNodeConstructor: TStereoPannerNodeConstructor = createStereoPannerNodeConstructor(\n audioNodeConstructor,\n createAudioParam,\n createNativeStereoPannerNode,\n createStereoPannerNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext\n);\nconst createWaveShaperNodeRenderer = createWaveShaperNodeRendererFactory(\n createNativeWaveShaperNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n);\nconst waveShaperNodeConstructor: TWaveShaperNodeConstructor = createWaveShaperNodeConstructor(\n audioNodeConstructor,\n createInvalidStateError,\n createNativeWaveShaperNode,\n createWaveShaperNodeRenderer,\n getNativeContext,\n isNativeOfflineAudioContext,\n setAudioNodeTailTime\n);\nconst isSecureContext = createIsSecureContext(window);\nconst exposeCurrentFrameAndCurrentTime = createExposeCurrentFrameAndCurrentTime(window);\nconst backupOfflineAudioContextStore: TBackupOfflineAudioContextStore = new WeakMap();\nconst getOrCreateBackupOfflineAudioContext = createGetOrCreateBackupOfflineAudioContext(\n backupOfflineAudioContextStore,\n nativeOfflineAudioContextConstructor\n);\n\n// The addAudioWorkletModule() function is only available in a SecureContext.\nexport const addAudioWorkletModule: undefined | TAddAudioWorkletModuleFunction = isSecureContext\n ? createAddAudioWorkletModule(\n cacheTestResult,\n createNotSupportedError,\n createEvaluateSource(window),\n exposeCurrentFrameAndCurrentTime,\n createFetchSource(createAbortError),\n getNativeContext,\n getOrCreateBackupOfflineAudioContext,\n isNativeOfflineAudioContext,\n nativeAudioWorkletNodeConstructor,\n new WeakMap(),\n new WeakMap(),\n createTestAudioWorkletProcessorPostMessageSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor),\n // @todo window is guaranteed to be defined because isSecureContext checks that as well.\n >window\n )\n : undefined;\n\nconst isNativeContext = createIsNativeContext(isNativeAudioContext, isNativeOfflineAudioContext);\n\nexport const decodeAudioData: TDecodeAudioDataFunction = createDecodeAudioData(\n audioBufferStore,\n cacheTestResult,\n createDataCloneError,\n createEncodingError,\n new WeakSet(),\n getNativeContext,\n isNativeContext,\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport,\n testPromiseSupport,\n wrapAudioBufferCopyChannelMethods,\n wrapAudioBufferCopyChannelMethodsOutOfBounds\n);\n\nconst baseAudioContextConstructor = createBaseAudioContextConstructor(\n addAudioWorkletModule,\n analyserNodeConstructor,\n audioBufferConstructor,\n audioBufferSourceNodeConstructor,\n biquadFilterNodeConstructor,\n channelMergerNodeConstructor,\n channelSplitterNodeConstructor,\n constantSourceNodeConstructor,\n convolverNodeConstructor,\n decodeAudioData,\n delayNodeConstructor,\n dynamicsCompressorNodeConstructor,\n gainNodeConstructor,\n iIRFilterNodeConstructor,\n minimalBaseAudioContextConstructor,\n oscillatorNodeConstructor,\n pannerNodeConstructor,\n periodicWaveConstructor,\n stereoPannerNodeConstructor,\n waveShaperNodeConstructor\n);\nconst mediaElementAudioSourceNodeConstructor: TMediaElementAudioSourceNodeConstructor = createMediaElementAudioSourceNodeConstructor(\n audioNodeConstructor,\n createNativeMediaElementAudioSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext\n);\nconst mediaStreamAudioDestinationNodeConstructor: TMediaStreamAudioDestinationNodeConstructor =\n createMediaStreamAudioDestinationNodeConstructor(\n audioNodeConstructor,\n createNativeMediaStreamAudioDestinationNode,\n getNativeContext,\n isNativeOfflineAudioContext\n );\nconst mediaStreamAudioSourceNodeConstructor: TMediaStreamAudioSourceNodeConstructor = createMediaStreamAudioSourceNodeConstructor(\n audioNodeConstructor,\n createNativeMediaStreamAudioSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext\n);\nconst createNativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNodeFactory(\n createInvalidStateError,\n isNativeOfflineAudioContext\n);\nconst mediaStreamTrackAudioSourceNodeConstructor: TMediaStreamTrackAudioSourceNodeConstructor =\n createMediaStreamTrackAudioSourceNodeConstructor(audioNodeConstructor, createNativeMediaStreamTrackAudioSourceNode, getNativeContext);\nconst audioContextConstructor: TAudioContextConstructor = createAudioContextConstructor(\n baseAudioContextConstructor,\n createInvalidStateError,\n createNotSupportedError,\n createUnknownError,\n mediaElementAudioSourceNodeConstructor,\n mediaStreamAudioDestinationNodeConstructor,\n mediaStreamAudioSourceNodeConstructor,\n mediaStreamTrackAudioSourceNodeConstructor,\n nativeAudioContextConstructor\n);\n\ntype audioContextConstructor = IAudioContext;\n\nexport { audioContextConstructor as AudioContext };\n\nconst getUnrenderedAudioWorkletNodes = createGetUnrenderedAudioWorkletNodes(unrenderedAudioWorkletNodeStore);\nconst addUnrenderedAudioWorkletNode = createAddUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes);\nconst connectMultipleOutputs = createConnectMultipleOutputs(createIndexSizeError);\nconst deleteUnrenderedAudioWorkletNode = createDeleteUnrenderedAudioWorkletNode(getUnrenderedAudioWorkletNodes);\nconst disconnectMultipleOutputs = createDisconnectMultipleOutputs(createIndexSizeError);\nconst activeAudioWorkletNodeInputsStore: TActiveAudioWorkletNodeInputsStore = new WeakMap();\nconst getActiveAudioWorkletNodeInputs = createGetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore, getValueForKey);\nconst createNativeAudioWorkletNodeFaker = createNativeAudioWorkletNodeFakerFactory(\n connectMultipleOutputs,\n createIndexSizeError,\n createInvalidStateError,\n createNativeChannelMergerNode,\n createNativeChannelSplitterNode,\n createNativeConstantSourceNode,\n createNativeGainNode,\n createNativeScriptProcessorNode,\n createNotSupportedError,\n disconnectMultipleOutputs,\n exposeCurrentFrameAndCurrentTime,\n getActiveAudioWorkletNodeInputs,\n monitorConnections\n);\nconst createNativeAudioWorkletNode = createNativeAudioWorkletNodeFactory(\n createInvalidStateError,\n createNativeAudioWorkletNodeFaker,\n createNativeGainNode,\n createNotSupportedError,\n monitorConnections\n);\nconst createAudioWorkletNodeRenderer = createAudioWorkletNodeRendererFactory(\n connectAudioParam,\n connectMultipleOutputs,\n createNativeAudioBufferSourceNode,\n createNativeChannelMergerNode,\n createNativeChannelSplitterNode,\n createNativeConstantSourceNode,\n createNativeGainNode,\n deleteUnrenderedAudioWorkletNode,\n disconnectMultipleOutputs,\n exposeCurrentFrameAndCurrentTime,\n getNativeAudioNode,\n nativeAudioWorkletNodeConstructor,\n nativeOfflineAudioContextConstructor,\n renderAutomation,\n renderInputsOfAudioNode,\n renderNativeOfflineAudioContext\n);\nconst getBackupOfflineAudioContext = createGetBackupOfflineAudioContext(backupOfflineAudioContextStore);\nconst setActiveAudioWorkletNodeInputs = createSetActiveAudioWorkletNodeInputs(activeAudioWorkletNodeInputsStore);\n\n// The AudioWorkletNode constructor is only available in a SecureContext.\nconst audioWorkletNodeConstructor: undefined | TAudioWorkletNodeConstructor = isSecureContext\n ? createAudioWorkletNodeConstructor(\n addUnrenderedAudioWorkletNode,\n audioNodeConstructor,\n createAudioParam,\n createAudioWorkletNodeRenderer,\n createNativeAudioWorkletNode,\n getAudioNodeConnections,\n getBackupOfflineAudioContext,\n getNativeContext,\n isNativeOfflineAudioContext,\n nativeAudioWorkletNodeConstructor,\n sanitizeAudioWorkletNodeOptions,\n setActiveAudioWorkletNodeInputs,\n testAudioWorkletNodeOptionsClonability,\n wrapEventListener\n )\n : undefined;\n\ntype audioWorkletNodeConstructor = undefined | IAudioWorkletNode;\n\nexport { audioWorkletNodeConstructor as AudioWorkletNode };\n\ntype biquadFilterNodeConstructor = IBiquadFilterNode;\n\nexport { biquadFilterNodeConstructor as BiquadFilterNode };\n\ntype channelMergerNodeConstructor = IAudioNode;\n\nexport { channelMergerNodeConstructor as ChannelMergerNode };\n\ntype channelSplitterNodeConstructor = IAudioNode;\n\nexport { channelSplitterNodeConstructor as ChannelSplitterNode };\n\ntype constantSourceNodeConstructor = IConstantSourceNode;\n\nexport { convolverNodeConstructor as ConvolverNode };\n\ntype convolverNodeConstructor = IConvolverNode;\n\nexport { constantSourceNodeConstructor as ConstantSourceNode };\n\ntype delayNodeConstructor = IDelayNode;\n\nexport { delayNodeConstructor as DelayNode };\n\ntype dynamicsCompressorNodeConstructor = IDynamicsCompressorNode;\n\nexport { dynamicsCompressorNodeConstructor as DynamicsCompressorNode };\n\ntype gainNodeConstructor = IGainNode;\n\nexport { gainNodeConstructor as GainNode };\n\ntype iIRFilterNodeConstructor = IIIRFilterNode;\n\nexport { iIRFilterNodeConstructor as IIRFilterNode };\n\ntype mediaElementAudioSourceNodeConstructor = IMediaElementAudioSourceNode;\n\nexport { mediaElementAudioSourceNodeConstructor as MediaElementAudioSourceNode };\n\ntype mediaStreamAudioDestinationNodeConstructor = IMediaStreamAudioDestinationNode;\n\nexport { mediaStreamAudioDestinationNodeConstructor as MediaStreamAudioDestinationNode };\n\ntype mediaStreamAudioSourceNodeConstructor = IMediaStreamAudioSourceNode;\n\nexport { mediaStreamAudioSourceNodeConstructor as MediaStreamAudioSourceNode };\n\ntype mediaStreamTrackAudioSourceNodeConstructor = IMediaStreamTrackAudioSourceNode;\n\nexport { mediaStreamTrackAudioSourceNodeConstructor as MediaStreamTrackAudioSourceNode };\n\nconst minimalAudioContextConstructor: TMinimalAudioContextConstructor = createMinimalAudioContextConstructor(\n createInvalidStateError,\n createNotSupportedError,\n createUnknownError,\n minimalBaseAudioContextConstructor,\n nativeAudioContextConstructor\n);\n\ntype minimalAudioContextConstructor = IMinimalAudioContext;\n\nexport { minimalAudioContextConstructor as MinimalAudioContext };\n\nconst createNativeOfflineAudioContext = createCreateNativeOfflineAudioContext(\n createNotSupportedError,\n nativeOfflineAudioContextConstructor\n);\nconst startRendering = createStartRendering(\n audioBufferStore,\n cacheTestResult,\n getAudioNodeRenderer,\n getUnrenderedAudioWorkletNodes,\n renderNativeOfflineAudioContext,\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport,\n wrapAudioBufferCopyChannelMethods,\n wrapAudioBufferCopyChannelMethodsOutOfBounds\n);\nconst minimalOfflineAudioContextConstructor: TMinimalOfflineAudioContextConstructor = createMinimalOfflineAudioContextConstructor(\n cacheTestResult,\n createInvalidStateError,\n createNativeOfflineAudioContext,\n minimalBaseAudioContextConstructor,\n startRendering\n);\n\ntype minimalOfflineAudioContextConstructor = IMinimalOfflineAudioContext;\n\nexport { minimalOfflineAudioContextConstructor as MinimalOfflineAudioContext };\n\nconst offlineAudioContextConstructor: IOfflineAudioContextConstructor = createOfflineAudioContextConstructor(\n baseAudioContextConstructor,\n cacheTestResult,\n createInvalidStateError,\n createNativeOfflineAudioContext,\n startRendering\n);\n\ntype offlineAudioContextConstructor = IOfflineAudioContext;\n\nexport { offlineAudioContextConstructor as OfflineAudioContext };\n\ntype oscillatorNodeConstructor = IOscillatorNode;\n\nexport { oscillatorNodeConstructor as OscillatorNode };\n\ntype pannerNodeConstructor = IPannerNode;\n\nexport { pannerNodeConstructor as PannerNode };\n\ntype periodicWaveConstructor = IPeriodicWave;\n\nexport { periodicWaveConstructor as PeriodicWave };\n\ntype stereoPannerNodeConstructor = IStereoPannerNode;\n\nexport { stereoPannerNodeConstructor as StereoPannerNode };\n\ntype waveShaperNodeConstructor = IWaveShaperNode;\n\nexport { waveShaperNodeConstructor as WaveShaperNode };\n\nexport const isAnyAudioContext = createIsAnyAudioContext(CONTEXT_STORE, isNativeAudioContext);\n\nexport const isAnyAudioNode = createIsAnyAudioNode(AUDIO_NODE_STORE, isNativeAudioNode);\n\nexport const isAnyAudioParam = createIsAnyAudioParam(AUDIO_PARAM_STORE, isNativeAudioParam);\n\nexport const isAnyOfflineAudioContext = createIsAnyOfflineAudioContext(CONTEXT_STORE, isNativeOfflineAudioContext);\n\nexport const isSupported = () =>\n createIsSupportedPromise(\n cacheTestResult,\n createTestAudioBufferCopyChannelMethodsSubarraySupport(nativeOfflineAudioContextConstructor),\n createTestAudioContextCloseMethodSupport(nativeAudioContextConstructor),\n createTestAudioContextDecodeAudioDataMethodTypeErrorSupport(nativeOfflineAudioContextConstructor),\n createTestAudioContextOptionsSupport(nativeAudioContextConstructor),\n createTestAudioNodeConnectMethodSupport(nativeOfflineAudioContextConstructor),\n createTestAudioWorkletProcessorNoOutputsSupport(nativeAudioWorkletNodeConstructor, nativeOfflineAudioContextConstructor),\n createTestChannelMergerNodeChannelCountSupport(nativeOfflineAudioContextConstructor),\n createTestConstantSourceNodeAccurateSchedulingSupport(nativeOfflineAudioContextConstructor),\n createTestConvolverNodeBufferReassignabilitySupport(nativeOfflineAudioContextConstructor),\n createTestConvolverNodeChannelCountSupport(nativeOfflineAudioContextConstructor),\n testDomExceptionConstructorSupport,\n createTestIsSecureContextSupport(window),\n createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport(nativeAudioContextConstructor),\n createTestStereoPannerNodeDefaultValueSupport(nativeOfflineAudioContextConstructor),\n testTransferablesSupport\n );\n","import { TAddActiveInputConnectionToAudioNodeFactory } from '../types/add-active-input-connection-to-audio-node-factory';\n\nexport const createAddActiveInputConnectionToAudioNode: TAddActiveInputConnectionToAudioNodeFactory = (insertElementInSet) => {\n return (activeInputs, source, [output, input, eventListener], ignoreDuplicates) => {\n insertElementInSet(\n activeInputs[input],\n [source, output, eventListener],\n (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output,\n ignoreDuplicates\n );\n };\n};\n","import { TAddPassiveInputConnectionToAudioNodeFactory } from '../types';\n\nexport const createAddPassiveInputConnectionToAudioNode: TAddPassiveInputConnectionToAudioNodeFactory = (insertElementInSet) => {\n return (passiveInputs, input, [source, output, eventListener], ignoreDuplicates) => {\n const passiveInputConnections = passiveInputs.get(source);\n\n if (passiveInputConnections === undefined) {\n passiveInputs.set(source, new Set([[output, input, eventListener]]));\n } else {\n insertElementInSet(\n passiveInputConnections,\n [output, input, eventListener],\n (passiveInputConnection) => passiveInputConnection[0] === output && passiveInputConnection[1] === input,\n ignoreDuplicates\n );\n }\n };\n};\n","import { TDeleteActiveInputConnectionToAudioNodeFactory } from '../types';\n\nexport const createDeleteActiveInputConnectionToAudioNode: TDeleteActiveInputConnectionToAudioNodeFactory = (pickElementFromSet) => {\n return (activeInputs, source, output, input) => {\n return pickElementFromSet(\n activeInputs[input],\n (activeInputConnection) => activeInputConnection[0] === source && activeInputConnection[1] === output\n );\n };\n};\n","import { TGetAudioNodeTailTimeFactory } from '../types';\n\nexport const createGetAudioNodeTailTime: TGetAudioNodeTailTimeFactory = (audioNodeTailTimeStore) => {\n return (audioNode) => audioNodeTailTimeStore.get(audioNode) ?? 0;\n};\n","import { TCacheTestResultFactory } from '../types';\n\nexport const createCacheTestResult: TCacheTestResultFactory = (ongoingTests, testResults) => {\n return (tester, test) => {\n const cachedTestResult = testResults.get(tester);\n\n if (cachedTestResult !== undefined) {\n return cachedTestResult;\n }\n\n const ongoingTest = ongoingTests.get(tester);\n\n if (ongoingTest !== undefined) {\n return ongoingTest;\n }\n\n try {\n const synchronousTestResult = test();\n\n if (synchronousTestResult instanceof Promise) {\n ongoingTests.set(tester, synchronousTestResult);\n\n return synchronousTestResult\n .catch(() => false)\n .then((finalTestResult) => {\n ongoingTests.delete(tester);\n testResults.set(tester, finalTestResult);\n\n return finalTestResult;\n });\n }\n\n testResults.set(tester, synchronousTestResult);\n\n return synchronousTestResult;\n } catch {\n testResults.set(tester, false);\n\n return false;\n }\n };\n};\n","import { TWindow, TWindowFactory } from '../types';\n\nexport const createWindow: TWindowFactory = () => (typeof window === 'undefined' ? null : window);\n","import { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { testAnalyserNodeGetFloatTimeDomainDataMethodSupport } from '../helpers/test-analyser-node-get-float-time-domain-data-method-support';\nimport { wrapAnalyserNodeGetFloatTimeDomainDataMethod } from '../helpers/wrap-analyser-node-get-float-time-domain-data-method';\nimport { TNativeAnalyserNodeFactoryFactory } from '../types';\n\nexport const createNativeAnalyserNodeFactory: TNativeAnalyserNodeFactoryFactory = (cacheTestResult, createIndexSizeError) => {\n return (nativeContext, options) => {\n const nativeAnalyserNode = nativeContext.createAnalyser();\n\n // Bug #37: Firefox does not create an AnalyserNode with the default properties.\n assignNativeAudioNodeOptions(nativeAnalyserNode, options);\n\n // Bug #118: Safari does not throw an error if maxDecibels is not more than minDecibels.\n if (!(options.maxDecibels > options.minDecibels)) {\n throw createIndexSizeError();\n }\n\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'fftSize');\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'maxDecibels');\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'minDecibels');\n assignNativeAudioNodeOption(nativeAnalyserNode, options, 'smoothingTimeConstant');\n\n // Bug #36: Safari does not support getFloatTimeDomainData() yet.\n if (\n !cacheTestResult(testAnalyserNodeGetFloatTimeDomainDataMethodSupport, () =>\n testAnalyserNodeGetFloatTimeDomainDataMethodSupport(nativeAnalyserNode)\n )\n ) {\n wrapAnalyserNodeGetFloatTimeDomainDataMethod(nativeAnalyserNode);\n }\n\n return nativeAnalyserNode;\n };\n};\n","import { TNativeAnalyserNode } from '../types';\n\nexport const wrapAnalyserNodeGetFloatTimeDomainDataMethod = (nativeAnalyserNode: TNativeAnalyserNode): void => {\n nativeAnalyserNode.getFloatTimeDomainData = (array: Float32Array) => {\n const byteTimeDomainData = new Uint8Array(array.length);\n\n nativeAnalyserNode.getByteTimeDomainData(byteTimeDomainData);\n\n const length = Math.max(byteTimeDomainData.length, nativeAnalyserNode.fftSize);\n\n for (let i = 0; i < length; i += 1) {\n array[i] = (byteTimeDomainData[i] - 128) * 0.0078125;\n }\n\n return array;\n };\n};\n","import { IAudioNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TGetAudioNodeRendererFactory } from '../types';\n\nexport const createGetAudioNodeRenderer: TGetAudioNodeRendererFactory = (getAudioNodeConnections) => {\n return (\n audioNode: IAudioNode\n ): IAudioNodeRenderer> => {\n const audioNodeConnections = getAudioNodeConnections(audioNode);\n\n if (audioNodeConnections.renderer === null) {\n throw new Error('Missing the renderer of the given AudioNode in the audio graph.');\n }\n\n return >>audioNodeConnections.renderer;\n };\n};\n","import { IAudioDestinationNode } from '../interfaces';\nimport { TRenderInputsOfAudioNodeFactory } from '../types';\n\nexport const createRenderInputsOfAudioNode: TRenderInputsOfAudioNodeFactory = (\n getAudioNodeConnections,\n getAudioNodeRenderer,\n isPartOfACycle\n) => {\n return async (audioNode, nativeOfflineAudioContext, nativeAudioNode) => {\n const audioNodeConnections = getAudioNodeConnections(audioNode);\n\n await Promise.all(\n audioNodeConnections.activeInputs\n .map((connections, input) =>\n Array.from(connections).map(async ([source, output]) => {\n const audioNodeRenderer = getAudioNodeRenderer(source);\n const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext);\n const destination = >audioNode.context.destination;\n\n if (!isPartOfACycle(source) && (audioNode !== destination || !isPartOfACycle(audioNode))) {\n renderedNativeAudioNode.connect(nativeAudioNode, output, input);\n }\n })\n )\n .reduce((allRenderingPromises, renderingPromises) => [...allRenderingPromises, ...renderingPromises], [])\n );\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAnalyserNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TAnalyserNodeRendererFactoryFactory, TNativeAnalyserNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createAnalyserNodeRendererFactory: TAnalyserNodeRendererFactoryFactory = (\n createNativeAnalyserNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeAnalyserNodes = new WeakMap();\n\n const createAnalyserNode = async (proxy: IAnalyserNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeAnalyserNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeAnalyserNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeAnalyserNodeIsOwnedByContext = isOwnedByContext(nativeAnalyserNode, nativeOfflineAudioContext);\n\n if (!nativeAnalyserNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeAnalyserNode.channelCount,\n channelCountMode: nativeAnalyserNode.channelCountMode,\n channelInterpretation: nativeAnalyserNode.channelInterpretation,\n fftSize: nativeAnalyserNode.fftSize,\n maxDecibels: nativeAnalyserNode.maxDecibels,\n minDecibels: nativeAnalyserNode.minDecibels,\n smoothingTimeConstant: nativeAnalyserNode.smoothingTimeConstant\n };\n\n nativeAnalyserNode = createNativeAnalyserNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeAnalyserNodes.set(nativeOfflineAudioContext, nativeAnalyserNode);\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAnalyserNode);\n\n return nativeAnalyserNode;\n };\n\n return {\n render(proxy: IAnalyserNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeAnalyserNode = renderedNativeAnalyserNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAnalyserNode !== undefined) {\n return Promise.resolve(renderedNativeAnalyserNode);\n }\n\n return createAnalyserNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TContext, TGetNativeContextFactory, TNativeAudioContext, TNativeOfflineAudioContext } from '../types';\nimport { createInvalidStateError } from './invalid-state-error';\n\nexport const createGetNativeContext: TGetNativeContextFactory = (contextStore) => {\n return (\n context: T\n ): T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? TNativeOfflineAudioContext : TNativeAudioContext => {\n const nativeContext = contextStore.get(context);\n\n if (nativeContext === undefined) {\n throw createInvalidStateError();\n }\n\n return (\n nativeContext\n );\n };\n};\n","import { TNativeOfflineAudioContextConstructorFactory } from '../types';\n\nexport const createNativeOfflineAudioContextConstructor: TNativeOfflineAudioContextConstructorFactory = (window) => {\n if (window === null) {\n return null;\n }\n\n if (window.hasOwnProperty('OfflineAudioContext')) {\n return window.OfflineAudioContext;\n }\n\n return window.hasOwnProperty('webkitOfflineAudioContext') ? (window).webkitOfflineAudioContext : null;\n};\n","import { TIsNativeOfflineAudioContextFactory, TNativeOfflineAudioContext } from '../types';\n\nexport const createIsNativeOfflineAudioContext: TIsNativeOfflineAudioContextFactory = (nativeOfflineAudioContextConstructor) => {\n return (anything): anything is TNativeOfflineAudioContext => {\n return nativeOfflineAudioContextConstructor !== null && anything instanceof nativeOfflineAudioContextConstructor;\n };\n};\n","import { IEventTarget } from '../interfaces';\nimport { TEventHandler, TEventTargetConstructorFactory, TNativeEventTarget } from '../types';\n\nexport const createEventTargetConstructor: TEventTargetConstructorFactory = (wrapEventListener) => {\n return class EventTarget> implements IEventTarget {\n private _listeners: WeakMap;\n\n constructor(private _nativeEventTarget: TNativeEventTarget) {\n this._listeners = new WeakMap();\n }\n\n public addEventListener(\n type: string,\n listener: null | TEventHandler | EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ): void {\n if (listener !== null) {\n let wrappedEventListener = this._listeners.get(listener);\n\n if (wrappedEventListener === undefined) {\n wrappedEventListener = wrapEventListener(this, listener);\n\n if (typeof listener === 'function') {\n this._listeners.set(listener, wrappedEventListener);\n }\n }\n\n this._nativeEventTarget.addEventListener(type, wrappedEventListener, options);\n }\n }\n\n public dispatchEvent(event: Event): boolean {\n return this._nativeEventTarget.dispatchEvent(event);\n }\n\n public removeEventListener(\n type: string,\n listener: null | TEventHandler | EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ): void {\n const wrappedEventListener = listener === null ? undefined : this._listeners.get(listener);\n\n this._nativeEventTarget.removeEventListener(type, wrappedEventListener === undefined ? null : wrappedEventListener, options);\n }\n };\n};\n","import { TNativeAudioContextConstructorFactory } from '../types';\n\nexport const createNativeAudioContextConstructor: TNativeAudioContextConstructorFactory = (window) => {\n if (window === null) {\n return null;\n }\n\n if (window.hasOwnProperty('AudioContext')) {\n return window.AudioContext;\n }\n\n return window.hasOwnProperty('webkitAudioContext') ? (window).webkitAudioContext : null;\n};\n","import { TIsNativeAudioContextFactory, TNativeAudioContext } from '../types';\n\nexport const createIsNativeAudioContext: TIsNativeAudioContextFactory = (nativeAudioContextConstructor) => {\n return (anything): anything is TNativeAudioContext => {\n return nativeAudioContextConstructor !== null && anything instanceof nativeAudioContextConstructor;\n };\n};\n","import { TIsNativeAudioNodeFactory, TNativeAudioNode } from '../types';\n\nexport const createIsNativeAudioNode: TIsNativeAudioNodeFactory = (window) => {\n return (anything): anything is TNativeAudioNode => {\n return window !== null && typeof window.AudioNode === 'function' && anything instanceof window.AudioNode;\n };\n};\n","import { TIsNativeAudioParamFactory, TNativeAudioParam } from '../types';\n\nexport const createIsNativeAudioParam: TIsNativeAudioParamFactory = (window) => {\n return (anything): anything is TNativeAudioParam => {\n return window !== null && typeof window.AudioParam === 'function' && anything instanceof window.AudioParam;\n };\n};\n","import { TNativeAudioWorkletNodeConstructorFactory } from '../types';\n\nexport const createNativeAudioWorkletNodeConstructor: TNativeAudioWorkletNodeConstructorFactory = (window) => {\n if (window === null) {\n return null;\n }\n\n return window.hasOwnProperty('AudioWorkletNode') ? window.AudioWorkletNode : null;\n};\n","import { IAudioNode, IAudioNodeRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TActiveInputConnection, TAddAudioNodeConnectionsFactory, TContext, TNativeAudioNode } from '../types';\n\nexport const createAddAudioNodeConnections: TAddAudioNodeConnectionsFactory = (audioNodeConnectionsStore) => {\n return (\n audioNode: IAudioNode,\n audioNodeRenderer: T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? IAudioNodeRenderer> : null,\n nativeAudioNode: TNativeAudioNode\n ) => {\n const activeInputs = [];\n\n for (let i = 0; i < nativeAudioNode.numberOfInputs; i += 1) {\n activeInputs.push(new Set>());\n }\n\n audioNodeConnectionsStore.set(audioNode, {\n activeInputs,\n outputs: new Set(),\n passiveInputs: new WeakMap(),\n renderer: audioNodeRenderer\n });\n };\n};\n","import { deletePassiveInputConnectionToAudioNode } from '../helpers/delete-passive-input-connection-to-audio-node';\nimport { setInternalStateToActive } from '../helpers/set-internal-state-to-active';\nimport { setInternalStateToPassiveWhenNecessary } from '../helpers/set-internal-state-to-passive-when-necessary';\nimport { IAudioNode } from '../interfaces';\nimport { TAddConnectionToAudioNodeFactory, TContext, TInternalStateEventListener } from '../types';\n\nexport const createAddConnectionToAudioNode: TAddConnectionToAudioNodeFactory = (\n addActiveInputConnectionToAudioNode,\n addPassiveInputConnectionToAudioNode,\n connectNativeAudioNodeToNativeAudioNode,\n deleteActiveInputConnectionToAudioNode,\n disconnectNativeAudioNodeFromNativeAudioNode,\n getAudioNodeConnections,\n getAudioNodeTailTime,\n getEventListenersOfAudioNode,\n getNativeAudioNode,\n insertElementInSet,\n isActiveAudioNode,\n isPartOfACycle,\n isPassiveAudioNode\n) => {\n const tailTimeTimeoutIds = new WeakMap, number>();\n\n return (source, destination, output, input, isOffline) => {\n const { activeInputs, passiveInputs } = getAudioNodeConnections(destination);\n const { outputs } = getAudioNodeConnections(source);\n const eventListeners = getEventListenersOfAudioNode(source);\n\n const eventListener: TInternalStateEventListener = (isActive) => {\n const nativeDestinationAudioNode = getNativeAudioNode(destination);\n const nativeSourceAudioNode = getNativeAudioNode(source);\n\n if (isActive) {\n const partialConnection = deletePassiveInputConnectionToAudioNode(passiveInputs, source, output, input);\n\n addActiveInputConnectionToAudioNode(activeInputs, source, partialConnection, false);\n\n if (!isOffline && !isPartOfACycle(source)) {\n connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input);\n }\n\n if (isPassiveAudioNode(destination)) {\n setInternalStateToActive(destination);\n }\n } else {\n const partialConnection = deleteActiveInputConnectionToAudioNode(activeInputs, source, output, input);\n\n addPassiveInputConnectionToAudioNode(passiveInputs, input, partialConnection, false);\n\n if (!isOffline && !isPartOfACycle(source)) {\n disconnectNativeAudioNodeFromNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output, input);\n }\n\n const tailTime = getAudioNodeTailTime(destination);\n\n if (tailTime === 0) {\n if (isActiveAudioNode(destination)) {\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n } else {\n const tailTimeTimeoutId = tailTimeTimeoutIds.get(destination);\n\n if (tailTimeTimeoutId !== undefined) {\n clearTimeout(tailTimeTimeoutId);\n }\n\n tailTimeTimeoutIds.set(\n destination,\n setTimeout(() => {\n if (isActiveAudioNode(destination)) {\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n }, tailTime * 1000)\n );\n }\n }\n };\n\n if (\n insertElementInSet(\n outputs,\n [destination, output, input],\n (outputConnection) =>\n outputConnection[0] === destination && outputConnection[1] === output && outputConnection[2] === input,\n true\n )\n ) {\n eventListeners.add(eventListener);\n\n if (isActiveAudioNode(source)) {\n addActiveInputConnectionToAudioNode(activeInputs, source, [output, input, eventListener], true);\n } else {\n addPassiveInputConnectionToAudioNode(passiveInputs, input, [source, output, eventListener], true);\n }\n\n return true;\n }\n\n return false;\n };\n};\n","import { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nimport { TIncrementCycleCounterFactoryFactory } from '../types';\n\nexport const createIncrementCycleCounterFactory: TIncrementCycleCounterFactoryFactory = (\n cycleCounters,\n disconnectNativeAudioNodeFromNativeAudioNode,\n getAudioNodeConnections,\n getNativeAudioNode,\n getNativeAudioParam,\n isActiveAudioNode\n) => {\n return (isOffline) => {\n return (audioNode, count) => {\n const cycleCounter = cycleCounters.get(audioNode);\n\n if (cycleCounter === undefined) {\n if (!isOffline && isActiveAudioNode(audioNode)) {\n const nativeSourceAudioNode = getNativeAudioNode(audioNode);\n const { outputs } = getAudioNodeConnections(audioNode);\n\n for (const output of outputs) {\n if (isAudioNodeOutputConnection(output)) {\n const nativeDestinationAudioNode = getNativeAudioNode(output[0]);\n\n disconnectNativeAudioNodeFromNativeAudioNode(\n nativeSourceAudioNode,\n nativeDestinationAudioNode,\n output[1],\n output[2]\n );\n } else {\n const nativeDestinationAudioParam = getNativeAudioParam(output[0]);\n\n nativeSourceAudioNode.disconnect(nativeDestinationAudioParam, output[1]);\n }\n }\n }\n\n cycleCounters.set(audioNode, count);\n } else {\n cycleCounters.set(audioNode, cycleCounter + count);\n }\n };\n };\n};\n","import { isAudioNodeOutputConnection } from '../guards/audio-node-output-connection';\nimport { TDecrementCycleCounterFactory } from '../types';\n\nexport const createDecrementCycleCounter: TDecrementCycleCounterFactory = (\n connectNativeAudioNodeToNativeAudioNode,\n cycleCounters,\n getAudioNodeConnections,\n getNativeAudioNode,\n getNativeAudioParam,\n getNativeContext,\n isActiveAudioNode,\n isNativeOfflineAudioContext\n) => {\n return (audioNode, count) => {\n const cycleCounter = cycleCounters.get(audioNode);\n\n if (cycleCounter === undefined) {\n throw new Error('Missing the expected cycle count.');\n }\n\n const nativeContext = getNativeContext(audioNode.context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n\n if (cycleCounter === count) {\n cycleCounters.delete(audioNode);\n\n if (!isOffline && isActiveAudioNode(audioNode)) {\n const nativeSourceAudioNode = getNativeAudioNode(audioNode);\n const { outputs } = getAudioNodeConnections(audioNode);\n\n for (const output of outputs) {\n if (isAudioNodeOutputConnection(output)) {\n const nativeDestinationAudioNode = getNativeAudioNode(output[0]);\n\n connectNativeAudioNodeToNativeAudioNode(nativeSourceAudioNode, nativeDestinationAudioNode, output[1], output[2]);\n } else {\n const nativeDestinationAudioParam = getNativeAudioParam(output[0]);\n\n nativeSourceAudioNode.connect(nativeDestinationAudioParam, output[1]);\n }\n }\n }\n } else {\n cycleCounters.set(audioNode, cycleCounter - count);\n }\n };\n};\n","import { isAudioNode } from '../guards/audio-node';\nimport { isDelayNode } from '../guards/delay-node';\nimport { IAudioNode, IAudioParam } from '../interfaces';\nimport { TContext, TDetectCyclesFactory } from '../types';\n\nexport const createDetectCycles: TDetectCyclesFactory = (audioParamAudioNodeStore, getAudioNodeConnections, getValueForKey) => {\n return function detectCycles(chain: IAudioNode[], nextLink: IAudioNode | IAudioParam): IAudioNode[][] {\n const audioNode = isAudioNode(nextLink) ? nextLink : >getValueForKey(audioParamAudioNodeStore, nextLink);\n\n if (isDelayNode(audioNode)) {\n return [];\n }\n\n if (chain[0] === audioNode) {\n return [chain];\n }\n\n if (chain.includes(audioNode)) {\n return [];\n }\n\n const { outputs } = getAudioNodeConnections(audioNode);\n\n return Array.from(outputs)\n .map((outputConnection) => detectCycles([...chain, audioNode], outputConnection[0]))\n .reduce((mergedCycles, nestedCycles) => mergedCycles.concat(nestedCycles), []);\n };\n};\n","import { IAudioNode, IDelayNode } from '../interfaces';\nimport { TContext } from '../types';\n\nexport const isDelayNode = (audioNode: IAudioNode): audioNode is IDelayNode => {\n return 'delayTime' in audioNode;\n};\n","import { TNativeAudioBufferConstructorFactory } from '../types';\n\nexport const createNativeAudioBufferConstructor: TNativeAudioBufferConstructorFactory = (window) => {\n if (window === null) {\n return null;\n }\n\n if (window.hasOwnProperty('AudioBuffer')) {\n return window.AudioBuffer;\n }\n\n return null;\n};\n","import { TConvertNumberToUnsignedLongFactory } from '../types';\n\nexport const createConvertNumberToUnsignedLong: TConvertNumberToUnsignedLongFactory = (unit32Array) => {\n return (value) => {\n unit32Array[0] = value;\n\n return unit32Array[0];\n };\n};\n","import { TNativeAudioBuffer, TWrapAudioBufferCopyChannelMethodsFactory } from '../types';\n\nexport const createWrapAudioBufferCopyChannelMethods: TWrapAudioBufferCopyChannelMethodsFactory = (\n convertNumberToUnsignedLong,\n createIndexSizeError\n) => {\n return (audioBuffer: TNativeAudioBuffer): void => {\n audioBuffer.copyFromChannel = (destination, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n\n if (channelNumber >= audioBuffer.numberOfChannels) {\n throw createIndexSizeError();\n }\n\n const audioBufferLength = audioBuffer.length;\n const channelData = audioBuffer.getChannelData(channelNumber);\n const destinationLength = destination.length;\n\n for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < destinationLength; i += 1) {\n destination[i] = channelData[i + bufferOffset];\n }\n };\n\n audioBuffer.copyToChannel = (source, channelNumberAsNumber, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n\n if (channelNumber >= audioBuffer.numberOfChannels) {\n throw createIndexSizeError();\n }\n\n const audioBufferLength = audioBuffer.length;\n const channelData = audioBuffer.getChannelData(channelNumber);\n const sourceLength = source.length;\n\n for (let i = bufferOffset < 0 ? -bufferOffset : 0; i + bufferOffset < audioBufferLength && i < sourceLength; i += 1) {\n channelData[i + bufferOffset] = source[i];\n }\n };\n };\n};\n","import { TNativeAudioBuffer, TWrapAudioBufferCopyChannelMethodsOutOfBoundsFactory } from '../types';\n\nexport const createWrapAudioBufferCopyChannelMethodsOutOfBounds: TWrapAudioBufferCopyChannelMethodsOutOfBoundsFactory = (\n convertNumberToUnsignedLong\n) => {\n return (audioBuffer: TNativeAudioBuffer): void => {\n audioBuffer.copyFromChannel = ((copyFromChannel) => {\n return (destination: Float32Array, channelNumberAsNumber: number, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n\n if (bufferOffset < audioBuffer.length) {\n return copyFromChannel.call(audioBuffer, destination, channelNumber, bufferOffset);\n }\n };\n })(audioBuffer.copyFromChannel);\n\n audioBuffer.copyToChannel = ((copyToChannel) => {\n return (source: Float32Array, channelNumberAsNumber: number, bufferOffsetAsNumber = 0) => {\n const bufferOffset = convertNumberToUnsignedLong(bufferOffsetAsNumber);\n const channelNumber = convertNumberToUnsignedLong(channelNumberAsNumber);\n\n if (bufferOffset < audioBuffer.length) {\n return copyToChannel.call(audioBuffer, source, channelNumber, bufferOffset);\n }\n };\n })(audioBuffer.copyToChannel);\n };\n};\n","import { TTestAudioBufferConstructorSupportFactory } from '../types';\n\n// Bug #33: Safari exposes an AudioBuffer but it can't be used as a constructor.\nexport const createTestAudioBufferConstructorSupport: TTestAudioBufferConstructorSupportFactory = (nativeAudioBufferConstructor) => {\n return () => {\n if (nativeAudioBufferConstructor === null) {\n return false;\n }\n\n try {\n new nativeAudioBufferConstructor({ length: 1, sampleRate: 44100 }); // tslint:disable-line:no-unused-expression\n } catch {\n return false;\n }\n\n return true;\n };\n};\n","import { TAddSilentConnectionFactory } from '../types';\n\nexport const createAddSilentConnection: TAddSilentConnectionFactory = (createNativeGainNode) => {\n return (nativeContext, nativeAudioScheduledSourceNode) => {\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n\n nativeAudioScheduledSourceNode.connect(nativeGainNode).connect(nativeContext.destination);\n\n const disconnect = () => {\n nativeAudioScheduledSourceNode.removeEventListener('ended', disconnect);\n nativeAudioScheduledSourceNode.disconnect(nativeGainNode);\n nativeGainNode.disconnect();\n };\n\n nativeAudioScheduledSourceNode.addEventListener('ended', disconnect);\n };\n};\n","import { IAudioParam, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TNativeAudioParam, TNativeOfflineAudioContext, TRenderInputsOfAudioParamFactory } from '../types';\n\nexport const createRenderInputsOfAudioParam: TRenderInputsOfAudioParamFactory = (\n getAudioNodeRenderer,\n getAudioParamConnections,\n isPartOfACycle\n) => {\n return async (\n audioParam: IAudioParam,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n nativeAudioParam: TNativeAudioParam\n ): Promise => {\n const audioParamConnections = getAudioParamConnections(audioParam);\n\n await Promise.all(\n Array.from(audioParamConnections.activeInputs).map(async ([source, output]) => {\n const audioNodeRenderer = getAudioNodeRenderer(source);\n const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext);\n\n if (!isPartOfACycle(source)) {\n renderedNativeAudioNode.connect(nativeAudioParam, output);\n }\n })\n );\n };\n};\n","import { TConnectAudioParamFactory } from '../types';\n\nexport const createConnectAudioParam: TConnectAudioParamFactory = (renderInputsOfAudioParam) => {\n return (nativeOfflineAudioContext, audioParam, nativeAudioParam) => {\n return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam);\n };\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioBufferSourceNodeStartMethodConsecutiveCalls } from '../helpers/wrap-audio-buffer-source-node-start-method-consecutive-calls';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nimport { TNativeAudioBufferSourceNodeFactoryFactory } from '../types';\n\nexport const createNativeAudioBufferSourceNodeFactory: TNativeAudioBufferSourceNodeFactoryFactory = (\n addSilentConnection,\n cacheTestResult,\n testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport,\n testAudioBufferSourceNodeStartMethodOffsetClampingSupport,\n testAudioBufferSourceNodeStopMethodNullifiedBufferSupport,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,\n wrapAudioBufferSourceNodeStartMethodOffsetClampling,\n wrapAudioBufferSourceNodeStopMethodNullifiedBuffer,\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls\n) => {\n return (nativeContext, options) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n\n assignNativeAudioNodeOptions(nativeAudioBufferSourceNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeAudioBufferSourceNode, options, 'playbackRate');\n\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'buffer');\n\n // Bug #149: Safari does not yet support the detune AudioParam.\n\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loop');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopEnd');\n assignNativeAudioNodeOption(nativeAudioBufferSourceNode, options, 'loopStart');\n\n // Bug #69: Safari does allow calls to start() of an already scheduled AudioBufferSourceNode.\n if (\n !cacheTestResult(testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport, () =>\n testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport(nativeContext)\n )\n ) {\n wrapAudioBufferSourceNodeStartMethodConsecutiveCalls(nativeAudioBufferSourceNode);\n }\n\n // Bug #154 & #155: Safari does not handle offsets which are equal to or greater than the duration of the buffer.\n if (\n !cacheTestResult(testAudioBufferSourceNodeStartMethodOffsetClampingSupport, () =>\n testAudioBufferSourceNodeStartMethodOffsetClampingSupport(nativeContext)\n )\n ) {\n wrapAudioBufferSourceNodeStartMethodOffsetClampling(nativeAudioBufferSourceNode);\n }\n\n // Bug #162: Safari does throw an error when stop() is called on an AudioBufferSourceNode which has no buffer assigned to it.\n if (\n !cacheTestResult(testAudioBufferSourceNodeStopMethodNullifiedBufferSupport, () =>\n testAudioBufferSourceNodeStopMethodNullifiedBufferSupport(nativeContext)\n )\n ) {\n wrapAudioBufferSourceNodeStopMethodNullifiedBuffer(nativeAudioBufferSourceNode, nativeContext);\n }\n\n // Bug #44: Safari does not throw a RangeError yet.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () =>\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeAudioBufferSourceNode);\n }\n\n // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () =>\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeAudioBufferSourceNode, nativeContext);\n }\n\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () =>\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeAudioBufferSourceNode);\n }\n\n // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected.\n addSilentConnection(nativeContext, nativeAudioBufferSourceNode);\n\n return nativeAudioBufferSourceNode;\n };\n};\n","import { createInvalidStateError } from '../factories/invalid-state-error';\nimport { TNativeAudioBufferSourceNode } from '../types';\n\nexport const wrapAudioBufferSourceNodeStartMethodConsecutiveCalls = (nativeAudioBufferSourceNode: TNativeAudioBufferSourceNode): void => {\n nativeAudioBufferSourceNode.start = ((start) => {\n let isScheduled = false;\n\n return (when = 0, offset = 0, duration?: number) => {\n if (isScheduled) {\n throw createInvalidStateError();\n }\n\n start.call(nativeAudioBufferSourceNode, when, offset, duration);\n\n isScheduled = true;\n };\n })(nativeAudioBufferSourceNode.start);\n};\n","import { TNativeContext } from '../types';\n\nexport const testAudioBufferSourceNodeStartMethodConsecutiveCallsSupport = (nativeContext: TNativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n\n nativeAudioBufferSourceNode.start();\n\n try {\n nativeAudioBufferSourceNode.start();\n } catch {\n return true;\n }\n\n return false;\n};\n","import { TNativeContext } from '../types';\n\nexport const testAudioBufferSourceNodeStartMethodOffsetClampingSupport = (nativeContext: TNativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n const nativeAudioBuffer = nativeContext.createBuffer(1, 1, 44100);\n\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n\n try {\n nativeAudioBufferSourceNode.start(0, 1);\n } catch {\n return false;\n }\n\n return true;\n};\n","import { TNativeContext } from '../types';\n\nexport const testAudioBufferSourceNodeStopMethodNullifiedBufferSupport = (nativeContext: TNativeContext) => {\n const nativeAudioBufferSourceNode = nativeContext.createBufferSource();\n\n nativeAudioBufferSourceNode.start();\n\n try {\n nativeAudioBufferSourceNode.stop();\n } catch {\n return false;\n }\n\n return true;\n};\n","import { TNativeAudioBufferSourceNode } from '../types';\n\nexport const wrapAudioBufferSourceNodeStartMethodOffsetClamping = (nativeAudioBufferSourceNode: TNativeAudioBufferSourceNode): void => {\n nativeAudioBufferSourceNode.start = ((start) => {\n return (when = 0, offset = 0, duration?: number) => {\n const buffer = nativeAudioBufferSourceNode.buffer;\n // Bug #154: Safari does not clamp the offset if it is equal to or greater than the duration of the buffer.\n const clampedOffset = buffer === null ? offset : Math.min(buffer.duration, offset);\n\n // Bug #155: Safari does not handle the offset correctly if it would cause the buffer to be not be played at all.\n if (buffer !== null && clampedOffset > buffer.duration - 0.5 / nativeAudioBufferSourceNode.context.sampleRate) {\n start.call(nativeAudioBufferSourceNode, when, 0, 0);\n } else {\n start.call(nativeAudioBufferSourceNode, when, clampedOffset, duration);\n }\n };\n })(nativeAudioBufferSourceNode.start);\n};\n","import { TWrapAudioBufferSourceNodeStopMethodNullifiedBufferFactory } from '../types';\n\nexport const createWrapAudioBufferSourceNodeStopMethodNullifiedBuffer: TWrapAudioBufferSourceNodeStopMethodNullifiedBufferFactory = (\n overwriteAccessors\n) => {\n return (nativeAudioBufferSourceNode, nativeContext) => {\n const nullifiedBuffer = nativeContext.createBuffer(1, 1, 44100);\n\n if (nativeAudioBufferSourceNode.buffer === null) {\n nativeAudioBufferSourceNode.buffer = nullifiedBuffer;\n }\n\n overwriteAccessors(\n nativeAudioBufferSourceNode,\n 'buffer',\n (get) => () => {\n const value = get.call(nativeAudioBufferSourceNode);\n\n return value === nullifiedBuffer ? null : value;\n },\n (set) => (value) => {\n return set.call(nativeAudioBufferSourceNode, value === null ? nullifiedBuffer : value);\n }\n );\n };\n};\n","import { TRenderAutomationFactory } from '../types';\n\nexport const createRenderAutomation: TRenderAutomationFactory = (getAudioParamRenderer, renderInputsOfAudioParam) => {\n return (nativeOfflineAudioContext, audioParam, nativeAudioParam) => {\n const audioParamRenderer = getAudioParamRenderer(audioParam);\n\n audioParamRenderer.replay(nativeAudioParam);\n\n return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam);\n };\n};\n","import { IMinimalOfflineAudioContext } from '../interfaces';\nimport { TGetAudioParamRendererFactory } from '../types';\n\nexport const createGetAudioParamRenderer: TGetAudioParamRendererFactory = (getAudioParamConnections) => {\n return (audioParam) => {\n const audioParamConnections = getAudioParamConnections(audioParam);\n\n if (audioParamConnections.renderer === null) {\n throw new Error('Missing the renderer of the given AudioParam in the audio graph.');\n }\n\n return audioParamConnections.renderer;\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioBufferSourceNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TAudioBufferSourceNodeRendererFactoryFactory, TNativeAudioBufferSourceNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createAudioBufferSourceNodeRendererFactory: TAudioBufferSourceNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeAudioBufferSourceNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeAudioBufferSourceNodes = new WeakMap();\n\n let start: null | [number, number] | [number, number, number] = null;\n let stop: null | number = null;\n\n const createAudioBufferSourceNode = async (\n proxy: IAudioBufferSourceNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ) => {\n let nativeAudioBufferSourceNode = getNativeAudioNode(proxy);\n\n /*\n * If the initially used nativeAudioBufferSourceNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeAudioBufferSourceNodeIsOwnedByContext = isOwnedByContext(nativeAudioBufferSourceNode, nativeOfflineAudioContext);\n\n if (!nativeAudioBufferSourceNodeIsOwnedByContext) {\n const options = {\n buffer: nativeAudioBufferSourceNode.buffer,\n channelCount: nativeAudioBufferSourceNode.channelCount,\n channelCountMode: nativeAudioBufferSourceNode.channelCountMode,\n channelInterpretation: nativeAudioBufferSourceNode.channelInterpretation,\n // Bug #149: Safari does not yet support the detune AudioParam.\n loop: nativeAudioBufferSourceNode.loop,\n loopEnd: nativeAudioBufferSourceNode.loopEnd,\n loopStart: nativeAudioBufferSourceNode.loopStart,\n playbackRate: nativeAudioBufferSourceNode.playbackRate.value\n };\n\n nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, options);\n\n if (start !== null) {\n nativeAudioBufferSourceNode.start(...start);\n }\n\n if (stop !== null) {\n nativeAudioBufferSourceNode.stop(stop);\n }\n }\n\n renderedNativeAudioBufferSourceNodes.set(nativeOfflineAudioContext, nativeAudioBufferSourceNode);\n\n if (!nativeAudioBufferSourceNodeIsOwnedByContext) {\n // Bug #149: Safari does not yet support the detune AudioParam.\n await renderAutomation(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate);\n } else {\n // Bug #149: Safari does not yet support the detune AudioParam.\n await connectAudioParam(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioBufferSourceNode);\n\n return nativeAudioBufferSourceNode;\n };\n\n return {\n set start(value: [number, number] | [number, number, number]) {\n start = value;\n },\n set stop(value: number) {\n stop = value;\n },\n render(\n proxy: IAudioBufferSourceNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n const renderedNativeAudioBufferSourceNode = renderedNativeAudioBufferSourceNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAudioBufferSourceNode !== undefined) {\n return Promise.resolve(renderedNativeAudioBufferSourceNode);\n }\n\n return createAudioBufferSourceNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { AutomationEventList } from 'automation-events';\nimport { IAudioNode, IAudioParam, IAudioParamRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TAudioParamFactoryFactory, TContext, TNativeAudioParam } from '../types';\n\nexport const createAudioParamFactory: TAudioParamFactoryFactory = (\n addAudioParamConnections,\n audioParamAudioNodeStore,\n audioParamStore,\n createAudioParamRenderer,\n createCancelAndHoldAutomationEvent,\n createCancelScheduledValuesAutomationEvent,\n createExponentialRampToValueAutomationEvent,\n createLinearRampToValueAutomationEvent,\n createSetTargetAutomationEvent,\n createSetValueAutomationEvent,\n createSetValueCurveAutomationEvent,\n nativeAudioContextConstructor,\n setValueAtTimeUntilPossible\n) => {\n return (\n audioNode: IAudioNode,\n isAudioParamOfOfflineAudioContext: boolean,\n nativeAudioParam: TNativeAudioParam,\n maxValue: null | number = null,\n minValue: null | number = null\n ): IAudioParam => {\n // Bug #196 Only Safari sets the defaultValue to the initial value.\n const defaultValue = nativeAudioParam.value;\n const automationEventList = new AutomationEventList(defaultValue);\n const audioParamRenderer = isAudioParamOfOfflineAudioContext ? createAudioParamRenderer(automationEventList) : null;\n const audioParam = {\n get defaultValue(): number {\n return defaultValue;\n },\n get maxValue(): number {\n return maxValue === null ? nativeAudioParam.maxValue : maxValue;\n },\n get minValue(): number {\n return minValue === null ? nativeAudioParam.minValue : minValue;\n },\n get value(): number {\n return nativeAudioParam.value;\n },\n set value(value) {\n nativeAudioParam.value = value;\n\n // Bug #98: Firefox & Safari do not yet treat the value setter like a call to setValueAtTime().\n audioParam.setValueAtTime(value, audioNode.context.currentTime);\n },\n cancelAndHoldAtTime(cancelTime: number): IAudioParam {\n // Bug #28: Firefox & Safari do not yet implement cancelAndHoldAtTime().\n if (typeof nativeAudioParam.cancelAndHoldAtTime === 'function') {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime));\n nativeAudioParam.cancelAndHoldAtTime(cancelTime);\n } else {\n const previousLastEvent = Array.from(automationEventList).pop();\n\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createCancelAndHoldAutomationEvent(cancelTime));\n\n const currentLastEvent = Array.from(automationEventList).pop();\n\n nativeAudioParam.cancelScheduledValues(cancelTime);\n\n if (previousLastEvent !== currentLastEvent && currentLastEvent !== undefined) {\n if (currentLastEvent.type === 'exponentialRampToValue') {\n nativeAudioParam.exponentialRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime);\n } else if (currentLastEvent.type === 'linearRampToValue') {\n nativeAudioParam.linearRampToValueAtTime(currentLastEvent.value, currentLastEvent.endTime);\n } else if (currentLastEvent.type === 'setValue') {\n nativeAudioParam.setValueAtTime(currentLastEvent.value, currentLastEvent.startTime);\n } else if (currentLastEvent.type === 'setValueCurve') {\n nativeAudioParam.setValueCurveAtTime(\n currentLastEvent.values,\n currentLastEvent.startTime,\n currentLastEvent.duration\n );\n }\n }\n }\n\n return audioParam;\n },\n cancelScheduledValues(cancelTime: number): IAudioParam {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createCancelScheduledValuesAutomationEvent(cancelTime));\n nativeAudioParam.cancelScheduledValues(cancelTime);\n\n return audioParam;\n },\n exponentialRampToValueAtTime(value: number, endTime: number): IAudioParam {\n // Bug #45: Safari does not throw an error yet.\n if (value === 0) {\n throw new RangeError();\n }\n\n // Bug #187: Safari does not throw an error yet.\n if (!Number.isFinite(endTime) || endTime < 0) {\n throw new RangeError();\n }\n\n const currentTime = audioNode.context.currentTime;\n\n if (audioParamRenderer === null) {\n automationEventList.flush(currentTime);\n }\n\n // Bug #194: Firefox does not implicitly call setValueAtTime() if there is no previous event.\n if (Array.from(automationEventList).length === 0) {\n automationEventList.add(createSetValueAutomationEvent(defaultValue, currentTime));\n nativeAudioParam.setValueAtTime(defaultValue, currentTime);\n }\n\n automationEventList.add(createExponentialRampToValueAutomationEvent(value, endTime));\n nativeAudioParam.exponentialRampToValueAtTime(value, endTime);\n\n return audioParam;\n },\n linearRampToValueAtTime(value: number, endTime: number): IAudioParam {\n const currentTime = audioNode.context.currentTime;\n\n if (audioParamRenderer === null) {\n automationEventList.flush(currentTime);\n }\n\n // Bug #195: Firefox does not implicitly call setValueAtTime() if there is no previous event.\n if (Array.from(automationEventList).length === 0) {\n automationEventList.add(createSetValueAutomationEvent(defaultValue, currentTime));\n nativeAudioParam.setValueAtTime(defaultValue, currentTime);\n }\n\n automationEventList.add(createLinearRampToValueAutomationEvent(value, endTime));\n nativeAudioParam.linearRampToValueAtTime(value, endTime);\n\n return audioParam;\n },\n setTargetAtTime(target: number, startTime: number, timeConstant: number): IAudioParam {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createSetTargetAutomationEvent(target, startTime, timeConstant));\n nativeAudioParam.setTargetAtTime(target, startTime, timeConstant);\n\n return audioParam;\n },\n setValueAtTime(value: number, startTime: number): IAudioParam {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createSetValueAutomationEvent(value, startTime));\n nativeAudioParam.setValueAtTime(value, startTime);\n\n return audioParam;\n },\n setValueCurveAtTime(values: Iterable, startTime: number, duration: number): IAudioParam {\n // Bug 183: Safari only accepts a Float32Array.\n const convertedValues = values instanceof Float32Array ? values : new Float32Array(values);\n /*\n * Bug #152: Safari does not correctly interpolate the values of the curve.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the\n * existence of the webkitAudioContext is used as a workaround here.\n */\n if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') {\n const endTime = startTime + duration;\n const sampleRate = audioNode.context.sampleRate;\n const firstSample = Math.ceil(startTime * sampleRate);\n const lastSample = Math.floor(endTime * sampleRate);\n const numberOfInterpolatedValues = lastSample - firstSample;\n const interpolatedValues = new Float32Array(numberOfInterpolatedValues);\n\n for (let i = 0; i < numberOfInterpolatedValues; i += 1) {\n const theoreticIndex = ((convertedValues.length - 1) / duration) * ((firstSample + i) / sampleRate - startTime);\n const lowerIndex = Math.floor(theoreticIndex);\n const upperIndex = Math.ceil(theoreticIndex);\n\n interpolatedValues[i] =\n lowerIndex === upperIndex\n ? convertedValues[lowerIndex]\n : (1 - (theoreticIndex - lowerIndex)) * convertedValues[lowerIndex] +\n (1 - (upperIndex - theoreticIndex)) * convertedValues[upperIndex];\n }\n\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createSetValueCurveAutomationEvent(interpolatedValues, startTime, duration));\n nativeAudioParam.setValueCurveAtTime(interpolatedValues, startTime, duration);\n\n const timeOfLastSample = lastSample / sampleRate;\n\n if (timeOfLastSample < endTime) {\n setValueAtTimeUntilPossible(audioParam, interpolatedValues[interpolatedValues.length - 1], timeOfLastSample);\n }\n\n setValueAtTimeUntilPossible(audioParam, convertedValues[convertedValues.length - 1], endTime);\n } else {\n if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.currentTime);\n }\n\n automationEventList.add(createSetValueCurveAutomationEvent(convertedValues, startTime, duration));\n nativeAudioParam.setValueCurveAtTime(convertedValues, startTime, duration);\n }\n\n return audioParam;\n }\n };\n\n audioParamStore.set(audioParam, nativeAudioParam);\n audioParamAudioNodeStore.set(audioParam, audioNode);\n\n addAudioParamConnections(\n audioParam,\n audioParamRenderer\n );\n\n return audioParam;\n };\n};\n","import { IAudioParam, IAudioParamRenderer, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TAddAudioParamConnectionsFactory, TContext } from '../types';\n\nexport const createAddAudioParamConnections: TAddAudioParamConnectionsFactory = (audioParamConnectionsStore) => {\n return (\n audioParam: IAudioParam,\n audioParamRenderer: T extends IMinimalOfflineAudioContext | IOfflineAudioContext ? IAudioParamRenderer : null\n ) => {\n audioParamConnectionsStore.set(audioParam, { activeInputs: new Set(), passiveInputs: new WeakMap(), renderer: audioParamRenderer });\n };\n};\n","import { TAudioParamRendererFactory, TNativeAudioParam } from '../types';\n\nexport const createAudioParamRenderer: TAudioParamRendererFactory = (automationEventList) => {\n return {\n replay(audioParam: TNativeAudioParam): void {\n for (const automationEvent of automationEventList) {\n if (automationEvent.type === 'exponentialRampToValue') {\n const { endTime, value } = automationEvent;\n\n audioParam.exponentialRampToValueAtTime(value, endTime);\n } else if (automationEvent.type === 'linearRampToValue') {\n const { endTime, value } = automationEvent;\n\n audioParam.linearRampToValueAtTime(value, endTime);\n } else if (automationEvent.type === 'setTarget') {\n const { startTime, target, timeConstant } = automationEvent;\n\n audioParam.setTargetAtTime(target, startTime, timeConstant);\n } else if (automationEvent.type === 'setValue') {\n const { startTime, value } = automationEvent;\n\n audioParam.setValueAtTime(value, startTime);\n } else if (automationEvent.type === 'setValueCurve') {\n const { duration, startTime, values } = automationEvent;\n\n audioParam.setValueCurveAtTime(values, startTime, duration);\n } else {\n throw new Error(\"Can't apply an unknown automation.\");\n }\n }\n }\n };\n};\n","import { IAudioDestinationNode } from '../interfaces';\nimport {\n TAudioDestinationNodeConstructorFactory,\n TAudioNodeRenderer,\n TChannelCountMode,\n TContext,\n TNativeAudioDestinationNode\n} from '../types';\n\nexport const createAudioDestinationNodeConstructor: TAudioDestinationNodeConstructorFactory = (\n audioNodeConstructor,\n createAudioDestinationNodeRenderer,\n createIndexSizeError,\n createInvalidStateError,\n createNativeAudioDestinationNode,\n getNativeContext,\n isNativeOfflineAudioContext,\n renderInputsOfAudioNode\n) => {\n return class AudioDestinationNode extends audioNodeConstructor implements IAudioDestinationNode {\n private _isNodeOfNativeOfflineAudioContext: boolean;\n\n private _nativeAudioDestinationNode: TNativeAudioDestinationNode;\n\n constructor(context: T, channelCount: number) {\n const nativeContext = getNativeContext(context);\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const nativeAudioDestinationNode = createNativeAudioDestinationNode(nativeContext, channelCount, isOffline);\n const audioDestinationNodeRenderer = >(\n (isOffline ? createAudioDestinationNodeRenderer(renderInputsOfAudioNode) : null)\n );\n\n super(context, false, nativeAudioDestinationNode, audioDestinationNodeRenderer);\n\n this._isNodeOfNativeOfflineAudioContext = isOffline;\n this._nativeAudioDestinationNode = nativeAudioDestinationNode;\n }\n\n get channelCount(): number {\n return this._nativeAudioDestinationNode.channelCount;\n }\n\n set channelCount(value) {\n // Bug #52: Chrome, Edge & Safari do not throw an exception at all.\n // Bug #54: Firefox does throw an IndexSizeError.\n if (this._isNodeOfNativeOfflineAudioContext) {\n throw createInvalidStateError();\n }\n\n // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly.\n if (value > this._nativeAudioDestinationNode.maxChannelCount) {\n throw createIndexSizeError();\n }\n\n this._nativeAudioDestinationNode.channelCount = value;\n }\n\n get channelCountMode(): TChannelCountMode {\n return this._nativeAudioDestinationNode.channelCountMode;\n }\n\n set channelCountMode(value) {\n // Bug #53: No browser does throw an exception yet.\n if (this._isNodeOfNativeOfflineAudioContext) {\n throw createInvalidStateError();\n }\n\n this._nativeAudioDestinationNode.channelCountMode = value;\n }\n\n get maxChannelCount(): number {\n return this._nativeAudioDestinationNode.maxChannelCount;\n }\n };\n};\n","import { IAudioDestinationNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport {\n TAudioDestinationNodeRendererFactory,\n TNativeAudioDestinationNode,\n TNativeOfflineAudioContext,\n TRenderInputsOfAudioNodeFunction\n} from '../types';\n\nexport const createAudioDestinationNodeRenderer: TAudioDestinationNodeRendererFactory = <\n T extends IMinimalOfflineAudioContext | IOfflineAudioContext\n>(\n renderInputsOfAudioNode: TRenderInputsOfAudioNodeFunction\n) => {\n const renderedNativeAudioDestinationNodes = new WeakMap();\n\n const createAudioDestinationNode = async (proxy: IAudioDestinationNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n const nativeAudioDestinationNode = nativeOfflineAudioContext.destination;\n\n renderedNativeAudioDestinationNodes.set(nativeOfflineAudioContext, nativeAudioDestinationNode);\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioDestinationNode);\n\n return nativeAudioDestinationNode;\n };\n\n return {\n render(\n proxy: IAudioDestinationNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n const renderedNativeAudioDestinationNode = renderedNativeAudioDestinationNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAudioDestinationNode !== undefined) {\n return Promise.resolve(renderedNativeAudioDestinationNode);\n }\n\n return createAudioDestinationNode(proxy, nativeOfflineAudioContext);\n }\n };\n};\n","import { TNativeAudioDestinationNode, TNativeAudioDestinationNodeFactoryFactory, TNativeGainNode } from '../types';\n\nexport const createNativeAudioDestinationNodeFactory: TNativeAudioDestinationNodeFactoryFactory = (\n createNativeGainNode,\n overwriteAccessors\n) => {\n return (nativeContext, channelCount, isNodeOfNativeOfflineAudioContext) => {\n const nativeAudioDestinationNode = nativeContext.destination;\n\n // Bug #132: Safari does not have the correct channelCount.\n if (nativeAudioDestinationNode.channelCount !== channelCount) {\n try {\n nativeAudioDestinationNode.channelCount = channelCount;\n } catch {\n // Bug #169: Safari throws an error on each attempt to change the channelCount.\n }\n }\n\n // Bug #83: Safari does not have the correct channelCountMode.\n if (isNodeOfNativeOfflineAudioContext && nativeAudioDestinationNode.channelCountMode !== 'explicit') {\n nativeAudioDestinationNode.channelCountMode = 'explicit';\n }\n\n // Bug #47: The AudioDestinationNode in Safari does not initialize the maxChannelCount property correctly.\n if (nativeAudioDestinationNode.maxChannelCount === 0) {\n Object.defineProperty(nativeAudioDestinationNode, 'maxChannelCount', {\n value: channelCount\n });\n }\n\n // Bug #168: No browser does yet have an AudioDestinationNode with an output.\n const gainNode = createNativeGainNode(nativeContext, {\n channelCount,\n channelCountMode: nativeAudioDestinationNode.channelCountMode,\n channelInterpretation: nativeAudioDestinationNode.channelInterpretation,\n gain: 1\n });\n\n overwriteAccessors(\n gainNode,\n 'channelCount',\n (get) => () => get.call(gainNode),\n (set) => (value) => {\n set.call(gainNode, value);\n\n try {\n nativeAudioDestinationNode.channelCount = value;\n } catch (err) {\n // Bug #169: Safari throws an error on each attempt to change the channelCount.\n if (value > nativeAudioDestinationNode.maxChannelCount) {\n throw err;\n }\n }\n }\n );\n\n overwriteAccessors(\n gainNode,\n 'channelCountMode',\n (get) => () => get.call(gainNode),\n (set) => (value) => {\n set.call(gainNode, value);\n nativeAudioDestinationNode.channelCountMode = value;\n }\n );\n\n overwriteAccessors(\n gainNode,\n 'channelInterpretation',\n (get) => () => get.call(gainNode),\n (set) => (value) => {\n set.call(gainNode, value);\n nativeAudioDestinationNode.channelInterpretation = value;\n }\n );\n\n Object.defineProperty(gainNode, 'maxChannelCount', {\n get: () => nativeAudioDestinationNode.maxChannelCount\n });\n\n // @todo This should be disconnected when the context is closed.\n gainNode.connect(nativeAudioDestinationNode);\n\n return <{ maxChannelCount: TNativeAudioDestinationNode['maxChannelCount'] } & TNativeGainNode>gainNode;\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IBiquadFilterNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TBiquadFilterNodeRendererFactoryFactory, TNativeBiquadFilterNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createBiquadFilterNodeRendererFactory: TBiquadFilterNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeBiquadFilterNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeBiquadFilterNodes = new WeakMap();\n\n const createBiquadFilterNode = async (proxy: IBiquadFilterNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeBiquadFilterNode = getNativeAudioNode(proxy);\n\n /*\n * If the initially used nativeBiquadFilterNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeBiquadFilterNodeIsOwnedByContext = isOwnedByContext(nativeBiquadFilterNode, nativeOfflineAudioContext);\n\n if (!nativeBiquadFilterNodeIsOwnedByContext) {\n const options = {\n Q: nativeBiquadFilterNode.Q.value,\n channelCount: nativeBiquadFilterNode.channelCount,\n channelCountMode: nativeBiquadFilterNode.channelCountMode,\n channelInterpretation: nativeBiquadFilterNode.channelInterpretation,\n detune: nativeBiquadFilterNode.detune.value,\n frequency: nativeBiquadFilterNode.frequency.value,\n gain: nativeBiquadFilterNode.gain.value,\n type: nativeBiquadFilterNode.type\n };\n\n nativeBiquadFilterNode = createNativeBiquadFilterNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeBiquadFilterNodes.set(nativeOfflineAudioContext, nativeBiquadFilterNode);\n\n if (!nativeBiquadFilterNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q);\n await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune);\n await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency);\n await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q);\n await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune);\n await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency);\n await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeBiquadFilterNode);\n\n return nativeBiquadFilterNode;\n };\n\n return {\n render(proxy: IBiquadFilterNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeBiquadFilterNode = renderedNativeBiquadFilterNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeBiquadFilterNode !== undefined) {\n return Promise.resolve(renderedNativeBiquadFilterNode);\n }\n\n return createBiquadFilterNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { TSetAudioNodeTailTimeFactory } from '../types';\n\nexport const createSetAudioNodeTailTime: TSetAudioNodeTailTimeFactory = (audioNodeTailTimeStore) => {\n return (audioNode, tailTime) => audioNodeTailTimeStore.set(audioNode, tailTime);\n};\n","import { TMonitorConnectionsFactory, TNativeAudioNode, TNativeAudioParam } from '../types';\n\nexport const createMonitorConnections: TMonitorConnectionsFactory = (insertElementInSet, isNativeAudioNode) => {\n return (nativeAudioNode, whenConnected, whenDisconnected) => {\n const connections = new Set<[TNativeAudioNode, number, number] | [TNativeAudioParam, number]>();\n\n nativeAudioNode.connect = ((connect) => {\n // tslint:disable-next-line:invalid-void no-inferrable-types\n return (destination: TNativeAudioNode | TNativeAudioParam, output = 0, input: number = 0): void | TNativeAudioNode => {\n const wasDisconnected = connections.size === 0;\n\n if (isNativeAudioNode(destination)) {\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n (<(destination: TNativeAudioNode, output?: number, input?: number) => TNativeAudioNode>connect).call(\n nativeAudioNode,\n destination,\n output,\n input\n );\n\n insertElementInSet(\n connections,\n [destination, output, input],\n (connection) => connection[0] === destination && connection[1] === output && connection[2] === input,\n true\n );\n\n if (wasDisconnected) {\n whenConnected();\n }\n\n return destination;\n }\n\n connect.call(nativeAudioNode, destination, output);\n\n insertElementInSet(\n connections,\n [destination, output],\n (connection) => connection[0] === destination && connection[1] === output,\n true\n );\n\n if (wasDisconnected) {\n whenConnected();\n }\n\n return;\n };\n })(nativeAudioNode.connect);\n\n nativeAudioNode.disconnect = ((disconnect) => {\n return (destinationOrOutput?: number | TNativeAudioNode | TNativeAudioParam, output?: number, input?: number): void => {\n const wasConnected = connections.size > 0;\n\n if (destinationOrOutput === undefined) {\n disconnect.apply(nativeAudioNode);\n\n connections.clear();\n } else if (typeof destinationOrOutput === 'number') {\n // @todo TypeScript cannot infer the overloaded signature with 1 argument yet.\n (<(output: number) => void>disconnect).call(nativeAudioNode, destinationOrOutput);\n\n for (const connection of connections) {\n if (connection[1] === destinationOrOutput) {\n connections.delete(connection);\n }\n }\n } else {\n if (isNativeAudioNode(destinationOrOutput)) {\n // @todo TypeScript cannot infer the overloaded signature with 3 arguments yet.\n (<(destination: TNativeAudioNode, output?: number, input?: number) => void>disconnect).call(\n nativeAudioNode,\n destinationOrOutput,\n output,\n input\n );\n } else {\n // @todo TypeScript cannot infer the overloaded signature with 2 arguments yet.\n (<(destination: TNativeAudioParam, output?: number) => void>disconnect).call(\n nativeAudioNode,\n destinationOrOutput,\n output\n );\n }\n\n for (const connection of connections) {\n if (\n connection[0] === destinationOrOutput &&\n (output === undefined || connection[1] === output) &&\n (input === undefined || connection[2] === input)\n ) {\n connections.delete(connection);\n }\n }\n }\n\n const isDisconnected = connections.size === 0;\n\n if (wasConnected && isDisconnected) {\n whenDisconnected();\n }\n };\n })(nativeAudioNode.disconnect);\n\n return nativeAudioNode;\n };\n};\n","import { TWrapChannelMergerNodeFactory } from '../types';\n\nexport const createWrapChannelMergerNode: TWrapChannelMergerNodeFactory = (createInvalidStateError, monitorConnections) => {\n return (nativeContext, channelMergerNode) => {\n // Bug #15: Safari does not return the default properties.\n channelMergerNode.channelCount = 1;\n channelMergerNode.channelCountMode = 'explicit';\n\n // Bug #16: Safari does not throw an error when setting a different channelCount or channelCountMode.\n Object.defineProperty(channelMergerNode, 'channelCount', {\n get: () => 1,\n set: () => {\n throw createInvalidStateError();\n }\n });\n\n Object.defineProperty(channelMergerNode, 'channelCountMode', {\n get: () => 'explicit',\n set: () => {\n throw createInvalidStateError();\n }\n });\n\n // Bug #20: Safari requires a connection of any kind to treat the input signal correctly.\n const audioBufferSourceNode = nativeContext.createBufferSource();\n\n const whenConnected = () => {\n const length = channelMergerNode.numberOfInputs;\n\n for (let i = 0; i < length; i += 1) {\n audioBufferSourceNode.connect(channelMergerNode, 0, i);\n }\n };\n const whenDisconnected = () => audioBufferSourceNode.disconnect(channelMergerNode);\n\n monitorConnections(channelMergerNode, whenConnected, whenDisconnected);\n };\n};\n","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeChannelMergerNodeFactoryFactory } from '../types';\n\nexport const createNativeChannelMergerNodeFactory: TNativeChannelMergerNodeFactoryFactory = (\n nativeAudioContextConstructor,\n wrapChannelMergerNode\n) => {\n return (nativeContext, options) => {\n const nativeChannelMergerNode = nativeContext.createChannelMerger(options.numberOfInputs);\n\n /*\n * Bug #20: Safari requires a connection of any kind to treat the input signal correctly.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of\n * the webkitAudioContext is used as a workaround here.\n */\n if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') {\n wrapChannelMergerNode(nativeContext, nativeChannelMergerNode);\n }\n\n assignNativeAudioNodeOptions(nativeChannelMergerNode, options);\n\n return nativeChannelMergerNode;\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TChannelMergerNodeRendererFactoryFactory, TNativeAudioNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createChannelMergerNodeRendererFactory: TChannelMergerNodeRendererFactoryFactory = (\n createNativeChannelMergerNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeAudioNodes = new WeakMap();\n\n const createAudioNode = async (proxy: IAudioNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeAudioNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeAudioNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeAudioNodeIsOwnedByContext = isOwnedByContext(nativeAudioNode, nativeOfflineAudioContext);\n\n if (!nativeAudioNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeAudioNode.channelCount,\n channelCountMode: nativeAudioNode.channelCountMode,\n channelInterpretation: nativeAudioNode.channelInterpretation,\n numberOfInputs: nativeAudioNode.numberOfInputs\n };\n\n nativeAudioNode = createNativeChannelMergerNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioNode);\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioNode);\n\n return nativeAudioNode;\n };\n\n return {\n render(proxy: IAudioNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAudioNode !== undefined) {\n return Promise.resolve(renderedNativeAudioNode);\n }\n\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TChannelSplitterNodeRendererFactoryFactory, TNativeAudioNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createChannelSplitterNodeRendererFactory: TChannelSplitterNodeRendererFactoryFactory = (\n createNativeChannelSplitterNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeAudioNodes = new WeakMap();\n\n const createAudioNode = async (proxy: IAudioNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeAudioNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeAudioNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeAudioNodeIsOwnedByContext = isOwnedByContext(nativeAudioNode, nativeOfflineAudioContext);\n\n if (!nativeAudioNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeAudioNode.channelCount,\n channelCountMode: nativeAudioNode.channelCountMode,\n channelInterpretation: nativeAudioNode.channelInterpretation,\n numberOfOutputs: nativeAudioNode.numberOfOutputs\n };\n\n nativeAudioNode = createNativeChannelSplitterNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeAudioNode);\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioNode);\n\n return nativeAudioNode;\n };\n\n return {\n render(proxy: IAudioNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAudioNode !== undefined) {\n return Promise.resolve(renderedNativeAudioNode);\n }\n\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { TSanitizeChannelSplitterOptionsFunction } from '../types';\n\nexport const sanitizeChannelSplitterOptions: TSanitizeChannelSplitterOptionsFunction = (options) => {\n return { ...options, channelCount: options.numberOfOutputs };\n};\n","import { interceptConnections } from '../helpers/intercept-connections';\nimport {\n TNativeAudioBufferSourceNode,\n TNativeAudioNode,\n TNativeConstantSourceNode,\n TNativeConstantSourceNodeFakerFactoryFactory\n} from '../types';\n\nexport const createNativeConstantSourceNodeFakerFactory: TNativeConstantSourceNodeFakerFactoryFactory = (\n addSilentConnection,\n createNativeAudioBufferSourceNode,\n createNativeGainNode,\n monitorConnections\n) => {\n return (nativeContext, { offset, ...audioNodeOptions }) => {\n const audioBuffer = nativeContext.createBuffer(1, 2, 44100);\n const audioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const gainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: offset });\n\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n const channelData = audioBuffer.getChannelData(0);\n\n // Bug #95: Safari does not play or loop one sample buffers.\n channelData[0] = 1;\n channelData[1] = 1;\n\n audioBufferSourceNode.buffer = audioBuffer;\n audioBufferSourceNode.loop = true;\n\n const nativeConstantSourceNodeFaker = {\n get bufferSize(): undefined {\n return undefined;\n },\n get channelCount(): number {\n return gainNode.channelCount;\n },\n set channelCount(value) {\n gainNode.channelCount = value;\n },\n get channelCountMode(): TNativeConstantSourceNode['channelCountMode'] {\n return gainNode.channelCountMode;\n },\n set channelCountMode(value) {\n gainNode.channelCountMode = value;\n },\n get channelInterpretation(): TNativeConstantSourceNode['channelInterpretation'] {\n return gainNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n gainNode.channelInterpretation = value;\n },\n get context(): TNativeConstantSourceNode['context'] {\n return gainNode.context;\n },\n get inputs(): TNativeAudioNode[] {\n return [];\n },\n get numberOfInputs(): number {\n return audioBufferSourceNode.numberOfInputs;\n },\n get numberOfOutputs(): number {\n return gainNode.numberOfOutputs;\n },\n get offset(): TNativeConstantSourceNode['offset'] {\n return gainNode.gain;\n },\n get onended(): TNativeConstantSourceNode['onended'] {\n return audioBufferSourceNode.onended;\n },\n set onended(value) {\n audioBufferSourceNode.onended = value;\n },\n addEventListener(...args: any[]): void {\n return audioBufferSourceNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args: any[]): boolean {\n return audioBufferSourceNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args: any[]): void {\n return audioBufferSourceNode.removeEventListener(args[0], args[1], args[2]);\n },\n start(when = 0): void {\n audioBufferSourceNode.start.call(audioBufferSourceNode, when);\n },\n stop(when = 0): void {\n audioBufferSourceNode.stop.call(audioBufferSourceNode, when);\n }\n };\n\n const whenConnected = () => audioBufferSourceNode.connect(gainNode);\n const whenDisconnected = () => audioBufferSourceNode.disconnect(gainNode);\n\n // Bug #175: Safari will not fire an ended event if the AudioBufferSourceNode is unconnected.\n addSilentConnection(nativeContext, audioBufferSourceNode);\n\n return monitorConnections(interceptConnections(nativeConstantSourceNodeFaker, gainNode), whenConnected, whenDisconnected);\n };\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nimport { TNativeConstantSourceNodeFactoryFactory } from '../types';\n\nexport const createNativeConstantSourceNodeFactory: TNativeConstantSourceNodeFactoryFactory = (\n addSilentConnection,\n cacheTestResult,\n createNativeConstantSourceNodeFaker,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport\n) => {\n return (nativeContext, options) => {\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeContext.createConstantSource === undefined) {\n return createNativeConstantSourceNodeFaker(nativeContext, options);\n }\n\n const nativeConstantSourceNode = nativeContext.createConstantSource();\n\n assignNativeAudioNodeOptions(nativeConstantSourceNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeConstantSourceNode, options, 'offset');\n\n // Bug #44: Safari does not throw a RangeError yet.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () =>\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeConstantSourceNode);\n }\n\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () =>\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeConstantSourceNode);\n }\n\n // Bug #175: Safari will not fire an ended event if the ConstantSourceNode is unconnected.\n addSilentConnection(nativeContext, nativeConstantSourceNode);\n\n return nativeConstantSourceNode;\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IConstantSourceNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TConstantSourceNodeRendererFactoryFactory, TNativeConstantSourceNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createConstantSourceNodeRendererFactory: TConstantSourceNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeConstantSourceNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeConstantSourceNodes = new WeakMap();\n\n let start: null | number = null;\n let stop: null | number = null;\n\n const createConstantSourceNode = async (proxy: IConstantSourceNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeConstantSourceNode = getNativeAudioNode(proxy);\n\n /*\n * If the initially used nativeConstantSourceNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeConstantSourceNodeIsOwnedByContext = isOwnedByContext(nativeConstantSourceNode, nativeOfflineAudioContext);\n\n if (!nativeConstantSourceNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeConstantSourceNode.channelCount,\n channelCountMode: nativeConstantSourceNode.channelCountMode,\n channelInterpretation: nativeConstantSourceNode.channelInterpretation,\n offset: nativeConstantSourceNode.offset.value\n };\n\n nativeConstantSourceNode = createNativeConstantSourceNode(nativeOfflineAudioContext, options);\n\n if (start !== null) {\n nativeConstantSourceNode.start(start);\n }\n\n if (stop !== null) {\n nativeConstantSourceNode.stop(stop);\n }\n }\n\n renderedNativeConstantSourceNodes.set(nativeOfflineAudioContext, nativeConstantSourceNode);\n\n if (!nativeConstantSourceNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConstantSourceNode);\n\n return nativeConstantSourceNode;\n };\n\n return {\n set start(value: number) {\n start = value;\n },\n set stop(value: number) {\n stop = value;\n },\n render(\n proxy: IConstantSourceNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n const renderedNativeConstantSourceNode = renderedNativeConstantSourceNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeConstantSourceNode !== undefined) {\n return Promise.resolve(renderedNativeConstantSourceNode);\n }\n\n return createConstantSourceNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeConvolverNodeFactoryFactory } from '../types';\n\nexport const createNativeConvolverNodeFactory: TNativeConvolverNodeFactoryFactory = (createNotSupportedError, overwriteAccessors) => {\n return (nativeContext, options) => {\n const nativeConvolverNode = nativeContext.createConvolver();\n\n assignNativeAudioNodeOptions(nativeConvolverNode, options);\n\n // The normalize property needs to be set before setting the buffer.\n if (options.disableNormalization === nativeConvolverNode.normalize) {\n nativeConvolverNode.normalize = !options.disableNormalization;\n }\n\n assignNativeAudioNodeOption(nativeConvolverNode, options, 'buffer');\n\n // Bug #113: Safari does allow to set the channelCount to a value larger than 2.\n if (options.channelCount > 2) {\n throw createNotSupportedError();\n }\n\n overwriteAccessors(\n nativeConvolverNode,\n 'channelCount',\n (get) => () => get.call(nativeConvolverNode),\n (set) => (value) => {\n if (value > 2) {\n throw createNotSupportedError();\n }\n\n return set.call(nativeConvolverNode, value);\n }\n );\n\n // Bug #114: Safari allows to set the channelCountMode to 'max'.\n if (options.channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n\n overwriteAccessors(\n nativeConvolverNode,\n 'channelCountMode',\n (get) => () => get.call(nativeConvolverNode),\n (set) => (value) => {\n if (value === 'max') {\n throw createNotSupportedError();\n }\n\n return set.call(nativeConvolverNode, value);\n }\n );\n\n return nativeConvolverNode;\n };\n};\n","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IConvolverNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TConvolverNodeRendererFactoryFactory, TNativeConvolverNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createConvolverNodeRendererFactory: TConvolverNodeRendererFactoryFactory = (\n createNativeConvolverNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeConvolverNodes = new WeakMap();\n\n const createConvolverNode = async (proxy: IConvolverNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeConvolverNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeConvolverNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeConvolverNodeIsOwnedByContext = isOwnedByContext(nativeConvolverNode, nativeOfflineAudioContext);\n\n if (!nativeConvolverNodeIsOwnedByContext) {\n const options = {\n buffer: nativeConvolverNode.buffer,\n channelCount: nativeConvolverNode.channelCount,\n channelCountMode: nativeConvolverNode.channelCountMode,\n channelInterpretation: nativeConvolverNode.channelInterpretation,\n disableNormalization: !nativeConvolverNode.normalize\n };\n\n nativeConvolverNode = createNativeConvolverNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeConvolverNodes.set(nativeOfflineAudioContext, nativeConvolverNode);\n\n if (isNativeAudioNodeFaker(nativeConvolverNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode.inputs[0]);\n } else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode);\n }\n\n return nativeConvolverNode;\n };\n\n return {\n render(proxy: IConvolverNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeConvolverNode = renderedNativeConvolverNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeConvolverNode !== undefined) {\n return Promise.resolve(renderedNativeConvolverNode);\n }\n\n return createConvolverNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IDelayNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TDelayNodeRendererFactoryFactory, TNativeDelayNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createDelayNodeRendererFactory: TDelayNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeDelayNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return (maxDelayTime: number) => {\n const renderedNativeDelayNodes = new WeakMap();\n\n const createDelayNode = async (proxy: IDelayNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeDelayNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeDelayNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeDelayNodeIsOwnedByContext = isOwnedByContext(nativeDelayNode, nativeOfflineAudioContext);\n\n if (!nativeDelayNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeDelayNode.channelCount,\n channelCountMode: nativeDelayNode.channelCountMode,\n channelInterpretation: nativeDelayNode.channelInterpretation,\n delayTime: nativeDelayNode.delayTime.value,\n maxDelayTime\n };\n\n nativeDelayNode = createNativeDelayNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeDelayNodes.set(nativeOfflineAudioContext, nativeDelayNode);\n\n if (!nativeDelayNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDelayNode);\n\n return nativeDelayNode;\n };\n\n return {\n render(proxy: IDelayNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeDelayNode = renderedNativeDelayNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeDelayNode !== undefined) {\n return Promise.resolve(renderedNativeDelayNode);\n }\n\n return createDelayNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeDynamicsCompressorNodeFactoryFactory } from '../types';\n\nexport const createNativeDynamicsCompressorNodeFactory: TNativeDynamicsCompressorNodeFactoryFactory = (createNotSupportedError) => {\n return (nativeContext, options) => {\n const nativeDynamicsCompressorNode = nativeContext.createDynamicsCompressor();\n\n assignNativeAudioNodeOptions(nativeDynamicsCompressorNode, options);\n\n // Bug #108: Safari allows a channelCount of three and above.\n if (options.channelCount > 2) {\n throw createNotSupportedError();\n }\n\n // Bug #109: Only Chrome and Firefox disallow a channelCountMode of 'max'.\n if (options.channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'attack');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'knee');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'ratio');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'release');\n assignNativeAudioNodeAudioParamValue(nativeDynamicsCompressorNode, options, 'threshold');\n\n return nativeDynamicsCompressorNode;\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IDynamicsCompressorNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TDynamicsCompressorNodeRendererFactoryFactory, TNativeDynamicsCompressorNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createDynamicsCompressorNodeRendererFactory: TDynamicsCompressorNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeDynamicsCompressorNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeDynamicsCompressorNodes = new WeakMap();\n\n const createDynamicsCompressorNode = async (\n proxy: IDynamicsCompressorNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ) => {\n let nativeDynamicsCompressorNode = getNativeAudioNode(proxy);\n\n /*\n * If the initially used nativeDynamicsCompressorNode was not constructed on the same OfflineAudioContext it needs to be\n * created again.\n */\n const nativeDynamicsCompressorNodeIsOwnedByContext = isOwnedByContext(nativeDynamicsCompressorNode, nativeOfflineAudioContext);\n\n if (!nativeDynamicsCompressorNodeIsOwnedByContext) {\n const options = {\n attack: nativeDynamicsCompressorNode.attack.value,\n channelCount: nativeDynamicsCompressorNode.channelCount,\n channelCountMode: nativeDynamicsCompressorNode.channelCountMode,\n channelInterpretation: nativeDynamicsCompressorNode.channelInterpretation,\n knee: nativeDynamicsCompressorNode.knee.value,\n ratio: nativeDynamicsCompressorNode.ratio.value,\n release: nativeDynamicsCompressorNode.release.value,\n threshold: nativeDynamicsCompressorNode.threshold.value\n };\n\n nativeDynamicsCompressorNode = createNativeDynamicsCompressorNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeDynamicsCompressorNodes.set(nativeOfflineAudioContext, nativeDynamicsCompressorNode);\n\n if (!nativeDynamicsCompressorNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack);\n await renderAutomation(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee);\n await renderAutomation(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio);\n await renderAutomation(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release);\n await renderAutomation(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack);\n await connectAudioParam(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee);\n await connectAudioParam(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio);\n await connectAudioParam(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release);\n await connectAudioParam(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDynamicsCompressorNode);\n\n return nativeDynamicsCompressorNode;\n };\n\n return {\n render(\n proxy: IDynamicsCompressorNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n const renderedNativeDynamicsCompressorNode = renderedNativeDynamicsCompressorNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeDynamicsCompressorNode !== undefined) {\n return Promise.resolve(renderedNativeDynamicsCompressorNode);\n }\n\n return createDynamicsCompressorNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IGainNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TGainNodeRendererFactoryFactory, TNativeGainNode, TNativeOfflineAudioContext } from '../types';\n\nexport const createGainNodeRendererFactory: TGainNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeGainNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeGainNodes = new WeakMap();\n\n const createGainNode = async (proxy: IGainNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeGainNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeGainNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeGainNodeIsOwnedByContext = isOwnedByContext(nativeGainNode, nativeOfflineAudioContext);\n\n if (!nativeGainNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeGainNode.channelCount,\n channelCountMode: nativeGainNode.channelCountMode,\n channelInterpretation: nativeGainNode.channelInterpretation,\n gain: nativeGainNode.gain.value\n };\n\n nativeGainNode = createNativeGainNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeGainNodes.set(nativeOfflineAudioContext, nativeGainNode);\n\n if (!nativeGainNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeGainNode);\n\n return nativeGainNode;\n };\n\n return {\n render(proxy: IGainNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeGainNode = renderedNativeGainNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeGainNode !== undefined) {\n return Promise.resolve(renderedNativeGainNode);\n }\n\n return createGainNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { testPromiseSupport } from '../helpers/test-promise-support';\nimport { IOfflineAudioCompletionEvent } from '../interfaces';\nimport { TNativeAudioBuffer, TRenderNativeOfflineAudioContextFactory } from '../types';\n\nexport const createRenderNativeOfflineAudioContext: TRenderNativeOfflineAudioContextFactory = (\n cacheTestResult,\n createNativeGainNode,\n createNativeScriptProcessorNode,\n testOfflineAudioContextCurrentTimeSupport\n) => {\n return (nativeOfflineAudioContext) => {\n // Bug #21: Safari does not support promises yet.\n if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeOfflineAudioContext))) {\n // Bug #158: Chrome and Edge do not advance currentTime if it is not accessed while rendering the audio.\n return Promise.resolve(\n cacheTestResult(testOfflineAudioContextCurrentTimeSupport, testOfflineAudioContextCurrentTimeSupport)\n ).then((isOfflineAudioContextCurrentTimeSupported) => {\n if (!isOfflineAudioContextCurrentTimeSupported) {\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeOfflineAudioContext, 512, 0, 1);\n\n nativeOfflineAudioContext.oncomplete = () => {\n scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation\n scriptProcessorNode.disconnect();\n };\n scriptProcessorNode.onaudioprocess = () => nativeOfflineAudioContext.currentTime; // tslint:disable-line:deprecation\n\n scriptProcessorNode.connect(nativeOfflineAudioContext.destination);\n }\n\n return nativeOfflineAudioContext.startRendering();\n });\n }\n\n return new Promise((resolve) => {\n // Bug #48: Safari does not render an OfflineAudioContext without any connected node.\n const gainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n\n nativeOfflineAudioContext.oncomplete = (event: IOfflineAudioCompletionEvent) => {\n gainNode.disconnect();\n\n resolve(event.renderedBuffer);\n };\n\n gainNode.connect(nativeOfflineAudioContext.destination);\n\n nativeOfflineAudioContext.startRendering();\n });\n };\n};\n","import { TTestOfflineAudioContextCurrentTimeSupportFactory } from '../types';\n\nexport const createTestOfflineAudioContextCurrentTimeSupport: TTestOfflineAudioContextCurrentTimeSupportFactory = (\n createNativeGainNode,\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return Promise.resolve(false);\n }\n\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n\n // Bug #48: Safari does not render an OfflineAudioContext without any connected node.\n const gainNode = createNativeGainNode(nativeOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n\n // Bug #21: Safari does not support promises yet.\n return new Promise((resolve) => {\n nativeOfflineAudioContext.oncomplete = () => {\n gainNode.disconnect();\n\n resolve(nativeOfflineAudioContext.currentTime !== 0);\n };\n nativeOfflineAudioContext.startRendering();\n });\n };\n};\n","import { filterBuffer } from '../helpers/filter-buffer';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IIIRFilterNode, IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport {\n TIIRFilterNodeRendererFactoryFactory,\n TNativeAudioBuffer,\n TNativeAudioBufferSourceNode,\n TNativeIIRFilterNode,\n TNativeOfflineAudioContext\n} from '../types';\n\nconst filterFullBuffer = (\n renderedBuffer: TNativeAudioBuffer,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n feedback: Iterable,\n feedforward: Iterable\n) => {\n const convertedFeedback = feedback instanceof Float64Array ? feedback : new Float64Array(feedback);\n const convertedFeedforward = feedforward instanceof Float64Array ? feedforward : new Float64Array(feedforward);\n const feedbackLength = convertedFeedback.length;\n const feedforwardLength = convertedFeedforward.length;\n const minLength = Math.min(feedbackLength, feedforwardLength);\n\n if (convertedFeedback[0] !== 1) {\n for (let i = 0; i < feedbackLength; i += 1) {\n convertedFeedforward[i] /= convertedFeedback[0];\n }\n\n for (let i = 1; i < feedforwardLength; i += 1) {\n convertedFeedback[i] /= convertedFeedback[0];\n }\n }\n\n const bufferLength = 32;\n const xBuffer = new Float32Array(bufferLength);\n const yBuffer = new Float32Array(bufferLength);\n\n const filteredBuffer = nativeOfflineAudioContext.createBuffer(\n renderedBuffer.numberOfChannels,\n renderedBuffer.length,\n renderedBuffer.sampleRate\n );\n\n const numberOfChannels = renderedBuffer.numberOfChannels;\n\n for (let i = 0; i < numberOfChannels; i += 1) {\n const input = renderedBuffer.getChannelData(i);\n const output = filteredBuffer.getChannelData(i);\n\n xBuffer.fill(0);\n yBuffer.fill(0);\n\n filterBuffer(\n convertedFeedback,\n feedbackLength,\n convertedFeedforward,\n feedforwardLength,\n minLength,\n xBuffer,\n yBuffer,\n 0,\n bufferLength,\n input,\n output\n );\n }\n\n return filteredBuffer;\n};\n\nexport const createIIRFilterNodeRendererFactory: TIIRFilterNodeRendererFactoryFactory = (\n createNativeAudioBufferSourceNode,\n getNativeAudioNode,\n nativeOfflineAudioContextConstructor,\n renderInputsOfAudioNode,\n renderNativeOfflineAudioContext\n) => {\n return (feedback: Iterable, feedforward: Iterable) => {\n const renderedNativeAudioNodes = new WeakMap();\n\n let filteredBufferPromise: null | Promise = null;\n\n const createAudioNode = async (proxy: IIIRFilterNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeAudioBufferSourceNode: null | TNativeAudioBufferSourceNode = null;\n let nativeIIRFilterNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeIIRFilterNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeIIRFilterNodeIsOwnedByContext = isOwnedByContext(nativeIIRFilterNode, nativeOfflineAudioContext);\n\n // Bug #9: Safari does not support IIRFilterNodes.\n if (nativeOfflineAudioContext.createIIRFilter === undefined) {\n nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeOfflineAudioContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n } else if (!nativeIIRFilterNodeIsOwnedByContext) {\n // @todo TypeScript defines the parameters of createIIRFilter() as arrays of numbers.\n nativeIIRFilterNode = nativeOfflineAudioContext.createIIRFilter(feedforward, feedback);\n }\n\n renderedNativeAudioNodes.set(\n nativeOfflineAudioContext,\n nativeAudioBufferSourceNode === null ? nativeIIRFilterNode : nativeAudioBufferSourceNode\n );\n\n if (nativeAudioBufferSourceNode !== null) {\n if (filteredBufferPromise === null) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(\n // Bug #47: The AudioDestinationNode in Safari gets not initialized correctly.\n proxy.context.destination.channelCount,\n // Bug #17: Safari does not yet expose the length.\n proxy.context.length,\n nativeOfflineAudioContext.sampleRate\n );\n\n filteredBufferPromise = (async () => {\n await renderInputsOfAudioNode(proxy, partialOfflineAudioContext, partialOfflineAudioContext.destination);\n\n const renderedBuffer = await renderNativeOfflineAudioContext(partialOfflineAudioContext);\n\n return filterFullBuffer(renderedBuffer, nativeOfflineAudioContext, feedback, feedforward);\n })();\n }\n\n const filteredBuffer = await filteredBufferPromise;\n\n nativeAudioBufferSourceNode.buffer = filteredBuffer;\n nativeAudioBufferSourceNode.start(0);\n\n return nativeAudioBufferSourceNode;\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeIIRFilterNode);\n\n return nativeIIRFilterNode;\n };\n\n return {\n render(\n proxy: IIIRFilterNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n const renderedNativeAudioNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAudioNode !== undefined) {\n return Promise.resolve(renderedNativeAudioNode);\n }\n\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeIIRFilterNodeFactoryFactory } from '../types';\n\nexport const createNativeIIRFilterNodeFactory: TNativeIIRFilterNodeFactoryFactory = (createNativeIIRFilterNodeFaker) => {\n return (nativeContext, baseLatency, options) => {\n // Bug #9: Safari does not support IIRFilterNodes.\n if (nativeContext.createIIRFilter === undefined) {\n return createNativeIIRFilterNodeFaker(nativeContext, baseLatency, options);\n }\n\n // @todo TypeScript defines the parameters of createIIRFilter() as arrays of numbers.\n const nativeIIRFilterNode = nativeContext.createIIRFilter(options.feedforward, options.feedback);\n\n assignNativeAudioNodeOptions(nativeIIRFilterNode, options);\n\n return nativeIIRFilterNode;\n };\n};\n","import { createInvalidAccessError } from '../factories/invalid-access-error';\nimport { TNativeIIRFilterNode } from '../types';\n\nexport const wrapIIRFilterNodeGetFrequencyResponseMethod = (nativeIIRFilterNode: TNativeIIRFilterNode): void => {\n nativeIIRFilterNode.getFrequencyResponse = ((getFrequencyResponse) => {\n return (frequencyHz: Float32Array, magResponse: Float32Array, phaseResponse: Float32Array) => {\n if (frequencyHz.length !== magResponse.length || magResponse.length !== phaseResponse.length) {\n throw createInvalidAccessError();\n }\n\n return getFrequencyResponse.call(nativeIIRFilterNode, frequencyHz, magResponse, phaseResponse);\n };\n })(nativeIIRFilterNode.getFrequencyResponse);\n};\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { IAudioParam } from '../interfaces';\nimport { TAudioListenerFactoryFactory } from '../types';\n\nexport const createAudioListenerFactory: TAudioListenerFactoryFactory = (\n createAudioParam,\n createNativeChannelMergerNode,\n createNativeConstantSourceNode,\n createNativeScriptProcessorNode,\n createNotSupportedError,\n getFirstSample,\n isNativeOfflineAudioContext,\n overwriteAccessors\n) => {\n return (context, nativeContext) => {\n const nativeListener = nativeContext.listener;\n\n // Bug #117: Only Chrome & Edge support the new interface already.\n const createFakeAudioParams = () => {\n const buffer = new Float32Array(1);\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 9\n });\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n\n let isScriptProcessorNodeCreated = false;\n let lastOrientation: [number, number, number, number, number, number] = [0, 0, -1, 0, 1, 0];\n let lastPosition: [number, number, number] = [0, 0, 0];\n\n const createScriptProcessorNode = () => {\n if (isScriptProcessorNodeCreated) {\n return;\n }\n\n isScriptProcessorNodeCreated = true;\n\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 9, 0);\n\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => {\n const orientation: [number, number, number, number, number, number] = [\n getFirstSample(inputBuffer, buffer, 0),\n getFirstSample(inputBuffer, buffer, 1),\n getFirstSample(inputBuffer, buffer, 2),\n getFirstSample(inputBuffer, buffer, 3),\n getFirstSample(inputBuffer, buffer, 4),\n getFirstSample(inputBuffer, buffer, 5)\n ];\n\n if (orientation.some((value, index) => value !== lastOrientation[index])) {\n nativeListener.setOrientation(...orientation); // tslint:disable-line:deprecation\n\n lastOrientation = orientation;\n }\n\n const positon: [number, number, number] = [\n getFirstSample(inputBuffer, buffer, 6),\n getFirstSample(inputBuffer, buffer, 7),\n getFirstSample(inputBuffer, buffer, 8)\n ];\n\n if (positon.some((value, index) => value !== lastPosition[index])) {\n nativeListener.setPosition(...positon); // tslint:disable-line:deprecation\n\n lastPosition = positon;\n }\n };\n\n channelMergerNode.connect(scriptProcessorNode);\n };\n const createSetOrientation = (index: number) => (value: number) => {\n if (value !== lastOrientation[index]) {\n lastOrientation[index] = value;\n\n nativeListener.setOrientation(...lastOrientation); // tslint:disable-line:deprecation\n }\n };\n const createSetPosition = (index: number) => (value: number) => {\n if (value !== lastPosition[index]) {\n lastPosition[index] = value;\n\n nativeListener.setPosition(...lastPosition); // tslint:disable-line:deprecation\n }\n };\n const createFakeAudioParam = (input: number, initialValue: number, setValue: (value: number) => void) => {\n const constantSourceNode = createNativeConstantSourceNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: initialValue\n });\n\n constantSourceNode.connect(channelMergerNode, 0, input);\n\n // @todo This should be stopped when the context is closed.\n constantSourceNode.start();\n\n Object.defineProperty(constantSourceNode.offset, 'defaultValue', {\n get(): number {\n return initialValue;\n }\n });\n\n /*\n * Bug #62 & #74: Safari does not support ConstantSourceNodes and does not export the correct values for maxValue and\n * minValue for GainNodes.\n */\n const audioParam = createAudioParam(\n { context },\n isOffline,\n constantSourceNode.offset,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n\n overwriteAccessors(\n audioParam,\n 'value',\n (get) => () => get.call(audioParam),\n (set) => (value) => {\n try {\n set.call(audioParam, value);\n } catch (err) {\n if (err.code !== 9) {\n throw err;\n }\n }\n\n createScriptProcessorNode();\n\n if (isOffline) {\n // Bug #117: Using setOrientation() and setPosition() doesn't work with an OfflineAudioContext.\n setValue(value);\n }\n }\n );\n\n audioParam.cancelAndHoldAtTime = ((cancelAndHoldAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = cancelAndHoldAtTime.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.cancelAndHoldAtTime);\n audioParam.cancelScheduledValues = ((cancelScheduledValues) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = cancelScheduledValues.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.cancelScheduledValues);\n audioParam.exponentialRampToValueAtTime = ((exponentialRampToValueAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = exponentialRampToValueAtTime.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.exponentialRampToValueAtTime);\n audioParam.linearRampToValueAtTime = ((linearRampToValueAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = linearRampToValueAtTime.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.linearRampToValueAtTime);\n audioParam.setTargetAtTime = ((setTargetAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = setTargetAtTime.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.setTargetAtTime);\n audioParam.setValueAtTime = ((setValueAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = setValueAtTime.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.setValueAtTime);\n audioParam.setValueCurveAtTime = ((setValueCurveAtTime) => {\n if (isOffline) {\n return () => {\n throw createNotSupportedError();\n };\n }\n\n return (...args: Parameters) => {\n const value = setValueCurveAtTime.apply(audioParam, args);\n\n createScriptProcessorNode();\n\n return value;\n };\n })(audioParam.setValueCurveAtTime);\n\n return audioParam;\n };\n\n return {\n forwardX: createFakeAudioParam(0, 0, createSetOrientation(0)),\n forwardY: createFakeAudioParam(1, 0, createSetOrientation(1)),\n forwardZ: createFakeAudioParam(2, -1, createSetOrientation(2)),\n positionX: createFakeAudioParam(6, 0, createSetPosition(0)),\n positionY: createFakeAudioParam(7, 0, createSetPosition(1)),\n positionZ: createFakeAudioParam(8, 0, createSetPosition(2)),\n upX: createFakeAudioParam(3, 0, createSetOrientation(3)),\n upY: createFakeAudioParam(4, 1, createSetOrientation(4)),\n upZ: createFakeAudioParam(5, 0, createSetOrientation(5))\n };\n };\n\n const { forwardX, forwardY, forwardZ, positionX, positionY, positionZ, upX, upY, upZ } =\n nativeListener.forwardX === undefined ? createFakeAudioParams() : nativeListener;\n\n return {\n get forwardX(): IAudioParam {\n return forwardX;\n },\n get forwardY(): IAudioParam {\n return forwardY;\n },\n get forwardZ(): IAudioParam {\n return forwardZ;\n },\n get positionX(): IAudioParam {\n return positionX;\n },\n get positionY(): IAudioParam {\n return positionY;\n },\n get positionZ(): IAudioParam {\n return positionZ;\n },\n get upX(): IAudioParam {\n return upX;\n },\n get upY(): IAudioParam {\n return upY;\n },\n get upZ(): IAudioParam {\n return upZ;\n }\n };\n };\n};\n","import { CONTEXT_STORE } from '../globals';\nimport { IAudioDestinationNode, IAudioListener, IMinimalBaseAudioContext, IMinimalBaseAudioContextEventMap } from '../interfaces';\nimport { TAudioContextState, TContext, TEventHandler, TMinimalBaseAudioContextConstructorFactory, TNativeContext } from '../types';\n\nexport const createMinimalBaseAudioContextConstructor: TMinimalBaseAudioContextConstructorFactory = (\n audioDestinationNodeConstructor,\n createAudioListener,\n eventTargetConstructor,\n isNativeOfflineAudioContext,\n unrenderedAudioWorkletNodeStore,\n wrapEventListener\n) => {\n return class MinimalBaseAudioContext\n extends eventTargetConstructor\n implements IMinimalBaseAudioContext\n {\n private _destination: IAudioDestinationNode;\n\n private _listener: IAudioListener;\n\n private _onstatechange: null | TEventHandler;\n\n constructor(private _nativeContext: TNativeContext, numberOfChannels: number) {\n super(_nativeContext);\n\n CONTEXT_STORE.set((this), _nativeContext);\n\n if (isNativeOfflineAudioContext(_nativeContext)) {\n unrenderedAudioWorkletNodeStore.set(_nativeContext, new Set());\n }\n\n this._destination = new audioDestinationNodeConstructor((this), numberOfChannels);\n this._listener = createAudioListener((this), _nativeContext);\n this._onstatechange = null;\n }\n\n get currentTime(): number {\n return this._nativeContext.currentTime;\n }\n\n get destination(): IAudioDestinationNode {\n return this._destination;\n }\n\n get listener(): IAudioListener {\n return this._listener;\n }\n\n get onstatechange(): null | TEventHandler {\n return this._onstatechange;\n }\n\n set onstatechange(value) {\n const wrappedListener = typeof value === 'function' ? wrapEventListener(this, value) : null;\n\n this._nativeContext.onstatechange = wrappedListener;\n\n const nativeOnStateChange = this._nativeContext.onstatechange;\n\n this._onstatechange = nativeOnStateChange !== null && nativeOnStateChange === wrappedListener ? value : nativeOnStateChange;\n }\n\n get sampleRate(): number {\n return this._nativeContext.sampleRate;\n }\n\n get state(): TAudioContextState {\n return this._nativeContext.state;\n }\n };\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { wrapAudioScheduledSourceNodeStartMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters';\nimport { wrapAudioScheduledSourceNodeStopMethodNegativeParameters } from '../helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters';\nimport { TNativeOscillatorNodeFactoryFactory } from '../types';\n\nexport const createNativeOscillatorNodeFactory: TNativeOscillatorNodeFactoryFactory = (\n addSilentConnection,\n cacheTestResult,\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport,\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport,\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport,\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls\n) => {\n return (nativeContext, options) => {\n const nativeOscillatorNode = nativeContext.createOscillator();\n\n assignNativeAudioNodeOptions(nativeOscillatorNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeOscillatorNode, options, 'detune');\n assignNativeAudioNodeAudioParamValue(nativeOscillatorNode, options, 'frequency');\n\n if (options.periodicWave !== undefined) {\n nativeOscillatorNode.setPeriodicWave(options.periodicWave);\n } else {\n assignNativeAudioNodeOption(nativeOscillatorNode, options, 'type');\n }\n\n // Bug #44: Only Chrome & Edge throw a RangeError yet.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStartMethodNegativeParametersSupport, () =>\n testAudioScheduledSourceNodeStartMethodNegativeParametersSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStartMethodNegativeParameters(nativeOscillatorNode);\n }\n\n // Bug #19: Safari does not ignore calls to stop() of an already stopped AudioBufferSourceNode.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport, () =>\n testAudioScheduledSourceNodeStopMethodConsecutiveCallsSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStopMethodConsecutiveCalls(nativeOscillatorNode, nativeContext);\n }\n\n // Bug #44: Only Firefox does not throw a RangeError yet.\n if (\n !cacheTestResult(testAudioScheduledSourceNodeStopMethodNegativeParametersSupport, () =>\n testAudioScheduledSourceNodeStopMethodNegativeParametersSupport(nativeContext)\n )\n ) {\n wrapAudioScheduledSourceNodeStopMethodNegativeParameters(nativeOscillatorNode);\n }\n\n // Bug #175: Safari will not fire an ended event if the OscillatorNode is unconnected.\n addSilentConnection(nativeContext, nativeOscillatorNode);\n\n return nativeOscillatorNode;\n };\n};\n","import { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IMinimalOfflineAudioContext, IOfflineAudioContext, IOscillatorNode, IPeriodicWave } from '../interfaces';\nimport { TNativeOfflineAudioContext, TNativeOscillatorNode, TOscillatorNodeRendererFactoryFactory } from '../types';\n\nexport const createOscillatorNodeRendererFactory: TOscillatorNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeOscillatorNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeOscillatorNodes = new WeakMap();\n\n let periodicWave: null | IPeriodicWave = null;\n let start: null | number = null;\n let stop: null | number = null;\n\n const createOscillatorNode = async (proxy: IOscillatorNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeOscillatorNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeOscillatorNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeOscillatorNodeIsOwnedByContext = isOwnedByContext(nativeOscillatorNode, nativeOfflineAudioContext);\n\n if (!nativeOscillatorNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeOscillatorNode.channelCount,\n channelCountMode: nativeOscillatorNode.channelCountMode,\n channelInterpretation: nativeOscillatorNode.channelInterpretation,\n detune: nativeOscillatorNode.detune.value,\n frequency: nativeOscillatorNode.frequency.value,\n periodicWave: periodicWave === null ? undefined : periodicWave,\n type: nativeOscillatorNode.type\n };\n\n nativeOscillatorNode = createNativeOscillatorNode(nativeOfflineAudioContext, options);\n\n if (start !== null) {\n nativeOscillatorNode.start(start);\n }\n\n if (stop !== null) {\n nativeOscillatorNode.stop(stop);\n }\n }\n\n renderedNativeOscillatorNodes.set(nativeOfflineAudioContext, nativeOscillatorNode);\n\n if (!nativeOscillatorNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune);\n await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune);\n await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeOscillatorNode);\n\n return nativeOscillatorNode;\n };\n\n return {\n set periodicWave(value: null | IPeriodicWave) {\n periodicWave = value;\n },\n set start(value: number) {\n start = value;\n },\n set stop(value: number) {\n stop = value;\n },\n render(proxy: IOscillatorNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeOscillatorNode = renderedNativeOscillatorNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeOscillatorNode !== undefined) {\n return Promise.resolve(renderedNativeOscillatorNode);\n }\n\n return createOscillatorNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { TConnectedNativeAudioBufferSourceNodeFactoryFactory } from '../types';\n\nexport const createConnectedNativeAudioBufferSourceNodeFactory: TConnectedNativeAudioBufferSourceNodeFactoryFactory = (\n createNativeAudioBufferSourceNode\n) => {\n return (nativeContext, nativeAudioNode) => {\n const nativeAudioBufferSourceNode = createNativeAudioBufferSourceNode(nativeContext, {\n buffer: null,\n channelCount: 2,\n channelCountMode: 'max',\n channelInterpretation: 'speakers',\n loop: false,\n loopEnd: 0,\n loopStart: 0,\n playbackRate: 1\n });\n const nativeAudioBuffer = nativeContext.createBuffer(1, 2, 44100);\n\n nativeAudioBufferSourceNode.buffer = nativeAudioBuffer;\n nativeAudioBufferSourceNode.loop = true;\n\n nativeAudioBufferSourceNode.connect(nativeAudioNode);\n nativeAudioBufferSourceNode.start();\n\n return () => {\n nativeAudioBufferSourceNode.stop();\n nativeAudioBufferSourceNode.disconnect(nativeAudioNode);\n };\n };\n};\n","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { interceptConnections } from '../helpers/intercept-connections';\nimport { TNativeAudioNode, TNativeWaveShaperNode, TNativeWaveShaperNodeFakerFactoryFactory } from '../types';\n\nexport const createNativeWaveShaperNodeFakerFactory: TNativeWaveShaperNodeFakerFactoryFactory = (\n createConnectedNativeAudioBufferSourceNode,\n createInvalidStateError,\n createNativeGainNode,\n isDCCurve,\n monitorConnections\n) => {\n return (nativeContext, { curve, oversample, ...audioNodeOptions }) => {\n const negativeWaveShaperNode = nativeContext.createWaveShaper();\n const positiveWaveShaperNode = nativeContext.createWaveShaper();\n\n assignNativeAudioNodeOptions(negativeWaveShaperNode, audioNodeOptions);\n assignNativeAudioNodeOptions(positiveWaveShaperNode, audioNodeOptions);\n\n const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 });\n const invertGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: -1 });\n const outputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 });\n const revertGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: -1 });\n\n let disconnectNativeAudioBufferSourceNode: null | (() => void) = null;\n let isConnected = false;\n let unmodifiedCurve: null | TNativeWaveShaperNode['curve'] = null;\n\n const nativeWaveShaperNodeFaker = {\n get bufferSize(): undefined {\n return undefined;\n },\n get channelCount(): number {\n return negativeWaveShaperNode.channelCount;\n },\n set channelCount(value) {\n inputGainNode.channelCount = value;\n invertGainNode.channelCount = value;\n negativeWaveShaperNode.channelCount = value;\n outputGainNode.channelCount = value;\n positiveWaveShaperNode.channelCount = value;\n revertGainNode.channelCount = value;\n },\n get channelCountMode(): TNativeWaveShaperNode['channelCountMode'] {\n return negativeWaveShaperNode.channelCountMode;\n },\n set channelCountMode(value) {\n inputGainNode.channelCountMode = value;\n invertGainNode.channelCountMode = value;\n negativeWaveShaperNode.channelCountMode = value;\n outputGainNode.channelCountMode = value;\n positiveWaveShaperNode.channelCountMode = value;\n revertGainNode.channelCountMode = value;\n },\n get channelInterpretation(): TNativeWaveShaperNode['channelInterpretation'] {\n return negativeWaveShaperNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n inputGainNode.channelInterpretation = value;\n invertGainNode.channelInterpretation = value;\n negativeWaveShaperNode.channelInterpretation = value;\n outputGainNode.channelInterpretation = value;\n positiveWaveShaperNode.channelInterpretation = value;\n revertGainNode.channelInterpretation = value;\n },\n get context(): TNativeWaveShaperNode['context'] {\n return negativeWaveShaperNode.context;\n },\n get curve(): TNativeWaveShaperNode['curve'] {\n return unmodifiedCurve;\n },\n set curve(value) {\n // Bug #102: Safari does not throw an InvalidStateError when the curve has less than two samples.\n if (value !== null && value.length < 2) {\n throw createInvalidStateError();\n }\n\n if (value === null) {\n negativeWaveShaperNode.curve = value;\n positiveWaveShaperNode.curve = value;\n } else {\n const curveLength = value.length;\n\n const negativeCurve = new Float32Array(curveLength + 2 - (curveLength % 2));\n const positiveCurve = new Float32Array(curveLength + 2 - (curveLength % 2));\n\n negativeCurve[0] = value[0];\n positiveCurve[0] = -value[curveLength - 1];\n\n const length = Math.ceil((curveLength + 1) / 2);\n const centerIndex = (curveLength + 1) / 2 - 1;\n\n for (let i = 1; i < length; i += 1) {\n const theoreticIndex = (i / length) * centerIndex;\n\n const lowerIndex = Math.floor(theoreticIndex);\n const upperIndex = Math.ceil(theoreticIndex);\n\n negativeCurve[i] =\n lowerIndex === upperIndex\n ? value[lowerIndex]\n : (1 - (theoreticIndex - lowerIndex)) * value[lowerIndex] +\n (1 - (upperIndex - theoreticIndex)) * value[upperIndex];\n positiveCurve[i] =\n lowerIndex === upperIndex\n ? -value[curveLength - 1 - lowerIndex]\n : -((1 - (theoreticIndex - lowerIndex)) * value[curveLength - 1 - lowerIndex]) -\n (1 - (upperIndex - theoreticIndex)) * value[curveLength - 1 - upperIndex];\n }\n\n negativeCurve[length] = curveLength % 2 === 1 ? value[length - 1] : (value[length - 2] + value[length - 1]) / 2;\n\n negativeWaveShaperNode.curve = negativeCurve;\n positiveWaveShaperNode.curve = positiveCurve;\n }\n\n unmodifiedCurve = value;\n\n if (isConnected) {\n if (isDCCurve(unmodifiedCurve) && disconnectNativeAudioBufferSourceNode === null) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, inputGainNode);\n } else if (disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n }\n },\n get inputs(): TNativeAudioNode[] {\n return [inputGainNode];\n },\n get numberOfInputs(): number {\n return negativeWaveShaperNode.numberOfInputs;\n },\n get numberOfOutputs(): number {\n return negativeWaveShaperNode.numberOfOutputs;\n },\n get oversample(): TNativeWaveShaperNode['oversample'] {\n return negativeWaveShaperNode.oversample;\n },\n set oversample(value) {\n negativeWaveShaperNode.oversample = value;\n positiveWaveShaperNode.oversample = value;\n },\n addEventListener(...args: any[]): void {\n return inputGainNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args: any[]): boolean {\n return inputGainNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args: any[]): void {\n return inputGainNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n\n if (curve !== null) {\n // Only values of type Float32Array can be assigned to the curve property.\n nativeWaveShaperNodeFaker.curve = curve instanceof Float32Array ? curve : new Float32Array(curve);\n }\n\n if (oversample !== nativeWaveShaperNodeFaker.oversample) {\n nativeWaveShaperNodeFaker.oversample = oversample;\n }\n\n const whenConnected = () => {\n inputGainNode.connect(negativeWaveShaperNode).connect(outputGainNode);\n\n inputGainNode.connect(invertGainNode).connect(positiveWaveShaperNode).connect(revertGainNode).connect(outputGainNode);\n\n isConnected = true;\n\n if (isDCCurve(unmodifiedCurve)) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, inputGainNode);\n }\n };\n const whenDisconnected = () => {\n inputGainNode.disconnect(negativeWaveShaperNode);\n negativeWaveShaperNode.disconnect(outputGainNode);\n\n inputGainNode.disconnect(invertGainNode);\n invertGainNode.disconnect(positiveWaveShaperNode);\n positiveWaveShaperNode.disconnect(revertGainNode);\n revertGainNode.disconnect(outputGainNode);\n\n isConnected = false;\n\n if (disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n };\n\n return monitorConnections(interceptConnections(nativeWaveShaperNodeFaker, outputGainNode), whenConnected, whenDisconnected);\n };\n};\n","import { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeWaveShaperNodeFactoryFactory } from '../types';\n\nexport const createNativeWaveShaperNodeFactory: TNativeWaveShaperNodeFactoryFactory = (\n createConnectedNativeAudioBufferSourceNode,\n createInvalidStateError,\n createNativeWaveShaperNodeFaker,\n isDCCurve,\n monitorConnections,\n nativeAudioContextConstructor,\n overwriteAccessors\n) => {\n return (nativeContext, options) => {\n const nativeWaveShaperNode = nativeContext.createWaveShaper();\n\n /*\n * Bug #119: Safari does not correctly map the values.\n * @todo Unfortunately there is no way to test for this behavior in a synchronous fashion which is why testing for the existence of\n * the webkitAudioContext is used as a workaround here. Testing for the automationRate property is necessary because this workaround\n * isn't necessary anymore since v14.0.2 of Safari.\n */\n if (\n nativeAudioContextConstructor !== null &&\n nativeAudioContextConstructor.name === 'webkitAudioContext' &&\n nativeContext.createGain().gain.automationRate === undefined\n ) {\n return createNativeWaveShaperNodeFaker(nativeContext, options);\n }\n\n assignNativeAudioNodeOptions(nativeWaveShaperNode, options);\n\n const curve = options.curve === null || options.curve instanceof Float32Array ? options.curve : new Float32Array(options.curve);\n\n // Bug #104: Chrome and Edge will throw an InvalidAccessError when the curve has less than two samples.\n if (curve !== null && curve.length < 2) {\n throw createInvalidStateError();\n }\n\n // Only values of type Float32Array can be assigned to the curve property.\n assignNativeAudioNodeOption(nativeWaveShaperNode, { curve }, 'curve');\n assignNativeAudioNodeOption(nativeWaveShaperNode, options, 'oversample');\n\n let disconnectNativeAudioBufferSourceNode: null | (() => void) = null;\n let isConnected = false;\n\n overwriteAccessors(\n nativeWaveShaperNode,\n 'curve',\n (get) => () => get.call(nativeWaveShaperNode),\n (set) => (value) => {\n set.call(nativeWaveShaperNode, value);\n\n if (isConnected) {\n if (isDCCurve(value) && disconnectNativeAudioBufferSourceNode === null) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(\n nativeContext,\n nativeWaveShaperNode\n );\n } else if (!isDCCurve(value) && disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n }\n\n return value;\n }\n );\n\n const whenConnected = () => {\n isConnected = true;\n\n if (isDCCurve(nativeWaveShaperNode.curve)) {\n disconnectNativeAudioBufferSourceNode = createConnectedNativeAudioBufferSourceNode(nativeContext, nativeWaveShaperNode);\n }\n };\n const whenDisconnected = () => {\n isConnected = false;\n\n if (disconnectNativeAudioBufferSourceNode !== null) {\n disconnectNativeAudioBufferSourceNode();\n disconnectNativeAudioBufferSourceNode = null;\n }\n };\n\n return monitorConnections(nativeWaveShaperNode, whenConnected, whenDisconnected);\n };\n};\n","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { interceptConnections } from '../helpers/intercept-connections';\nimport { TNativeAudioNode, TNativePannerNode, TNativePannerNodeFakerFactoryFactory } from '../types';\n\nexport const createNativePannerNodeFakerFactory: TNativePannerNodeFakerFactoryFactory = (\n connectNativeAudioNodeToNativeAudioNode,\n createInvalidStateError,\n createNativeChannelMergerNode,\n createNativeGainNode,\n createNativeScriptProcessorNode,\n createNativeWaveShaperNode,\n createNotSupportedError,\n disconnectNativeAudioNodeFromNativeAudioNode,\n getFirstSample,\n monitorConnections\n) => {\n return (\n nativeContext,\n {\n coneInnerAngle,\n coneOuterAngle,\n coneOuterGain,\n distanceModel,\n maxDistance,\n orientationX,\n orientationY,\n orientationZ,\n panningModel,\n positionX,\n positionY,\n positionZ,\n refDistance,\n rolloffFactor,\n ...audioNodeOptions\n }\n ) => {\n const pannerNode = nativeContext.createPanner();\n\n // Bug #125: Safari does not throw an error yet.\n if (audioNodeOptions.channelCount > 2) {\n throw createNotSupportedError();\n }\n\n // Bug #126: Safari does not throw an error yet.\n if (audioNodeOptions.channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n\n assignNativeAudioNodeOptions(pannerNode, audioNodeOptions);\n\n const SINGLE_CHANNEL_OPTIONS = {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete'\n } as const;\n\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n ...SINGLE_CHANNEL_OPTIONS,\n channelInterpretation: 'speakers',\n numberOfInputs: 6\n });\n const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, gain: 1 });\n const orientationXGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 1 });\n const orientationYGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const orientationZGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const positionXGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const positionYGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const positionZGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 6, 1);\n const waveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_OPTIONS,\n curve: new Float32Array([1, 1]),\n oversample: 'none'\n });\n\n let lastOrientation: [number, number, number] = [orientationX, orientationY, orientationZ];\n let lastPosition: [number, number, number] = [positionX, positionY, positionZ];\n\n const buffer = new Float32Array(1);\n\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => {\n const orientation: [number, number, number] = [\n getFirstSample(inputBuffer, buffer, 0),\n getFirstSample(inputBuffer, buffer, 1),\n getFirstSample(inputBuffer, buffer, 2)\n ];\n\n if (orientation.some((value, index) => value !== lastOrientation[index])) {\n pannerNode.setOrientation(...orientation); // tslint:disable-line:deprecation\n\n lastOrientation = orientation;\n }\n\n const positon: [number, number, number] = [\n getFirstSample(inputBuffer, buffer, 3),\n getFirstSample(inputBuffer, buffer, 4),\n getFirstSample(inputBuffer, buffer, 5)\n ];\n\n if (positon.some((value, index) => value !== lastPosition[index])) {\n pannerNode.setPosition(...positon); // tslint:disable-line:deprecation\n\n lastPosition = positon;\n }\n };\n\n Object.defineProperty(orientationYGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(orientationZGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(positionXGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(positionYGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(positionZGainNode.gain, 'defaultValue', { get: () => 0 });\n\n const nativePannerNodeFaker = {\n get bufferSize(): undefined {\n return undefined;\n },\n get channelCount(): number {\n return pannerNode.channelCount;\n },\n set channelCount(value) {\n // Bug #125: Safari does not throw an error yet.\n if (value > 2) {\n throw createNotSupportedError();\n }\n\n inputGainNode.channelCount = value;\n pannerNode.channelCount = value;\n },\n get channelCountMode(): TNativePannerNode['channelCountMode'] {\n return pannerNode.channelCountMode;\n },\n set channelCountMode(value) {\n // Bug #126: Safari does not throw an error yet.\n if (value === 'max') {\n throw createNotSupportedError();\n }\n\n inputGainNode.channelCountMode = value;\n pannerNode.channelCountMode = value;\n },\n get channelInterpretation(): TNativePannerNode['channelInterpretation'] {\n return pannerNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n inputGainNode.channelInterpretation = value;\n pannerNode.channelInterpretation = value;\n },\n get coneInnerAngle(): TNativePannerNode['coneInnerAngle'] {\n return pannerNode.coneInnerAngle;\n },\n set coneInnerAngle(value) {\n pannerNode.coneInnerAngle = value;\n },\n get coneOuterAngle(): TNativePannerNode['coneOuterAngle'] {\n return pannerNode.coneOuterAngle;\n },\n set coneOuterAngle(value) {\n pannerNode.coneOuterAngle = value;\n },\n get coneOuterGain(): TNativePannerNode['coneOuterGain'] {\n return pannerNode.coneOuterGain;\n },\n set coneOuterGain(value) {\n // Bug #127: Safari does not throw an InvalidStateError yet.\n if (value < 0 || value > 1) {\n throw createInvalidStateError();\n }\n\n pannerNode.coneOuterGain = value;\n },\n get context(): TNativePannerNode['context'] {\n return pannerNode.context;\n },\n get distanceModel(): TNativePannerNode['distanceModel'] {\n return pannerNode.distanceModel;\n },\n set distanceModel(value) {\n pannerNode.distanceModel = value;\n },\n get inputs(): TNativeAudioNode[] {\n return [inputGainNode];\n },\n get maxDistance(): TNativePannerNode['maxDistance'] {\n return pannerNode.maxDistance;\n },\n set maxDistance(value) {\n // Bug #128: Safari does not throw an error yet.\n if (value < 0) {\n throw new RangeError();\n }\n\n pannerNode.maxDistance = value;\n },\n get numberOfInputs(): number {\n return pannerNode.numberOfInputs;\n },\n get numberOfOutputs(): number {\n return pannerNode.numberOfOutputs;\n },\n get orientationX(): TNativePannerNode['orientationX'] {\n return orientationXGainNode.gain;\n },\n get orientationY(): TNativePannerNode['orientationY'] {\n return orientationYGainNode.gain;\n },\n get orientationZ(): TNativePannerNode['orientationZ'] {\n return orientationZGainNode.gain;\n },\n get panningModel(): TNativePannerNode['panningModel'] {\n return pannerNode.panningModel;\n },\n set panningModel(value) {\n pannerNode.panningModel = value;\n },\n get positionX(): TNativePannerNode['positionX'] {\n return positionXGainNode.gain;\n },\n get positionY(): TNativePannerNode['positionY'] {\n return positionYGainNode.gain;\n },\n get positionZ(): TNativePannerNode['positionZ'] {\n return positionZGainNode.gain;\n },\n get refDistance(): TNativePannerNode['refDistance'] {\n return pannerNode.refDistance;\n },\n set refDistance(value) {\n // Bug #129: Safari does not throw an error yet.\n if (value < 0) {\n throw new RangeError();\n }\n\n pannerNode.refDistance = value;\n },\n get rolloffFactor(): TNativePannerNode['rolloffFactor'] {\n return pannerNode.rolloffFactor;\n },\n set rolloffFactor(value) {\n // Bug #130: Safari does not throw an error yet.\n if (value < 0) {\n throw new RangeError();\n }\n\n pannerNode.rolloffFactor = value;\n },\n addEventListener(...args: any[]): void {\n return inputGainNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args: any[]): boolean {\n return inputGainNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args: any[]): void {\n return inputGainNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n\n if (coneInnerAngle !== nativePannerNodeFaker.coneInnerAngle) {\n nativePannerNodeFaker.coneInnerAngle = coneInnerAngle;\n }\n\n if (coneOuterAngle !== nativePannerNodeFaker.coneOuterAngle) {\n nativePannerNodeFaker.coneOuterAngle = coneOuterAngle;\n }\n\n if (coneOuterGain !== nativePannerNodeFaker.coneOuterGain) {\n nativePannerNodeFaker.coneOuterGain = coneOuterGain;\n }\n\n if (distanceModel !== nativePannerNodeFaker.distanceModel) {\n nativePannerNodeFaker.distanceModel = distanceModel;\n }\n\n if (maxDistance !== nativePannerNodeFaker.maxDistance) {\n nativePannerNodeFaker.maxDistance = maxDistance;\n }\n\n if (orientationX !== nativePannerNodeFaker.orientationX.value) {\n nativePannerNodeFaker.orientationX.value = orientationX;\n }\n\n if (orientationY !== nativePannerNodeFaker.orientationY.value) {\n nativePannerNodeFaker.orientationY.value = orientationY;\n }\n\n if (orientationZ !== nativePannerNodeFaker.orientationZ.value) {\n nativePannerNodeFaker.orientationZ.value = orientationZ;\n }\n\n if (panningModel !== nativePannerNodeFaker.panningModel) {\n nativePannerNodeFaker.panningModel = panningModel;\n }\n\n if (positionX !== nativePannerNodeFaker.positionX.value) {\n nativePannerNodeFaker.positionX.value = positionX;\n }\n\n if (positionY !== nativePannerNodeFaker.positionY.value) {\n nativePannerNodeFaker.positionY.value = positionY;\n }\n\n if (positionZ !== nativePannerNodeFaker.positionZ.value) {\n nativePannerNodeFaker.positionZ.value = positionZ;\n }\n\n if (refDistance !== nativePannerNodeFaker.refDistance) {\n nativePannerNodeFaker.refDistance = refDistance;\n }\n\n if (rolloffFactor !== nativePannerNodeFaker.rolloffFactor) {\n nativePannerNodeFaker.rolloffFactor = rolloffFactor;\n }\n\n if (lastOrientation[0] !== 1 || lastOrientation[1] !== 0 || lastOrientation[2] !== 0) {\n pannerNode.setOrientation(...lastOrientation); // tslint:disable-line:deprecation\n }\n\n if (lastPosition[0] !== 0 || lastPosition[1] !== 0 || lastPosition[2] !== 0) {\n pannerNode.setPosition(...lastPosition); // tslint:disable-line:deprecation\n }\n\n const whenConnected = () => {\n inputGainNode.connect(pannerNode);\n\n // Bug #119: Safari does not fully support the WaveShaperNode.\n connectNativeAudioNodeToNativeAudioNode(inputGainNode, waveShaperNode, 0, 0);\n\n waveShaperNode.connect(orientationXGainNode).connect(channelMergerNode, 0, 0);\n waveShaperNode.connect(orientationYGainNode).connect(channelMergerNode, 0, 1);\n waveShaperNode.connect(orientationZGainNode).connect(channelMergerNode, 0, 2);\n waveShaperNode.connect(positionXGainNode).connect(channelMergerNode, 0, 3);\n waveShaperNode.connect(positionYGainNode).connect(channelMergerNode, 0, 4);\n waveShaperNode.connect(positionZGainNode).connect(channelMergerNode, 0, 5);\n\n channelMergerNode.connect(scriptProcessorNode).connect(nativeContext.destination);\n };\n const whenDisconnected = () => {\n inputGainNode.disconnect(pannerNode);\n\n // Bug #119: Safari does not fully support the WaveShaperNode.\n disconnectNativeAudioNodeFromNativeAudioNode(inputGainNode, waveShaperNode, 0, 0);\n\n waveShaperNode.disconnect(orientationXGainNode);\n orientationXGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(orientationYGainNode);\n orientationYGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(orientationZGainNode);\n orientationZGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(positionXGainNode);\n positionXGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(positionYGainNode);\n positionYGainNode.disconnect(channelMergerNode);\n waveShaperNode.disconnect(positionZGainNode);\n positionZGainNode.disconnect(channelMergerNode);\n\n channelMergerNode.disconnect(scriptProcessorNode);\n scriptProcessorNode.disconnect(nativeContext.destination);\n };\n\n return monitorConnections(interceptConnections(nativePannerNodeFaker, pannerNode), whenConnected, whenDisconnected);\n };\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOption } from '../helpers/assign-native-audio-node-option';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativePannerNodeFactoryFactory } from '../types';\n\nexport const createNativePannerNodeFactory: TNativePannerNodeFactoryFactory = (createNativePannerNodeFaker) => {\n return (nativeContext, options) => {\n const nativePannerNode = nativeContext.createPanner();\n\n // Bug #124: Safari does not support modifying the orientation and the position with AudioParams.\n if (nativePannerNode.orientationX === undefined) {\n return createNativePannerNodeFaker(nativeContext, options);\n }\n\n assignNativeAudioNodeOptions(nativePannerNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationX');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationY');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'orientationZ');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionX');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionY');\n assignNativeAudioNodeAudioParamValue(nativePannerNode, options, 'positionZ');\n\n assignNativeAudioNodeOption(nativePannerNode, options, 'coneInnerAngle');\n assignNativeAudioNodeOption(nativePannerNode, options, 'coneOuterAngle');\n assignNativeAudioNodeOption(nativePannerNode, options, 'coneOuterGain');\n assignNativeAudioNodeOption(nativePannerNode, options, 'distanceModel');\n assignNativeAudioNodeOption(nativePannerNode, options, 'maxDistance');\n assignNativeAudioNodeOption(nativePannerNode, options, 'panningModel');\n assignNativeAudioNodeOption(nativePannerNode, options, 'refDistance');\n assignNativeAudioNodeOption(nativePannerNode, options, 'rolloffFactor');\n\n return nativePannerNode;\n };\n};\n","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IMinimalOfflineAudioContext, INativePannerNodeFaker, IOfflineAudioContext, IPannerNode } from '../interfaces';\nimport {\n TNativeAudioBuffer,\n TNativeGainNode,\n TNativeOfflineAudioContext,\n TNativePannerNode,\n TPannerNodeRendererFactoryFactory\n} from '../types';\n\nexport const createPannerNodeRendererFactory: TPannerNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeChannelMergerNode,\n createNativeConstantSourceNode,\n createNativeGainNode,\n createNativePannerNode,\n getNativeAudioNode,\n nativeOfflineAudioContextConstructor,\n renderAutomation,\n renderInputsOfAudioNode,\n renderNativeOfflineAudioContext\n) => {\n return () => {\n const renderedNativeAudioNodes = new WeakMap();\n\n let renderedBufferPromise: null | Promise = null;\n\n const createAudioNode = async (proxy: IPannerNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeGainNode: null | TNativeGainNode = null;\n let nativePannerNode = getNativeAudioNode(proxy);\n\n const commonAudioNodeOptions = {\n channelCount: nativePannerNode.channelCount,\n channelCountMode: nativePannerNode.channelCountMode,\n channelInterpretation: nativePannerNode.channelInterpretation\n };\n const commonNativePannerNodeOptions = {\n ...commonAudioNodeOptions,\n coneInnerAngle: nativePannerNode.coneInnerAngle,\n coneOuterAngle: nativePannerNode.coneOuterAngle,\n coneOuterGain: nativePannerNode.coneOuterGain,\n distanceModel: nativePannerNode.distanceModel,\n maxDistance: nativePannerNode.maxDistance,\n panningModel: nativePannerNode.panningModel,\n refDistance: nativePannerNode.refDistance,\n rolloffFactor: nativePannerNode.rolloffFactor\n };\n\n // If the initially used nativePannerNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativePannerNodeIsOwnedByContext = isOwnedByContext(nativePannerNode, nativeOfflineAudioContext);\n\n // Bug #124: Safari does not support modifying the orientation and the position with AudioParams.\n if ('bufferSize' in nativePannerNode) {\n nativeGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 });\n } else if (!nativePannerNodeIsOwnedByContext) {\n const options = {\n ...commonNativePannerNodeOptions,\n orientationX: nativePannerNode.orientationX.value,\n orientationY: nativePannerNode.orientationY.value,\n orientationZ: nativePannerNode.orientationZ.value,\n positionX: nativePannerNode.positionX.value,\n positionY: nativePannerNode.positionY.value,\n positionZ: nativePannerNode.positionZ.value\n };\n\n nativePannerNode = createNativePannerNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeAudioNodes.set(nativeOfflineAudioContext, nativeGainNode === null ? nativePannerNode : nativeGainNode);\n\n if (nativeGainNode !== null) {\n if (renderedBufferPromise === null) {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n\n const partialOfflineAudioContext = new nativeOfflineAudioContextConstructor(\n 6,\n // Bug #17: Safari does not yet expose the length.\n proxy.context.length,\n nativeOfflineAudioContext.sampleRate\n );\n const nativeChannelMergerNode = createNativeChannelMergerNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 6\n });\n nativeChannelMergerNode.connect(partialOfflineAudioContext.destination);\n\n renderedBufferPromise = (async () => {\n const nativeConstantSourceNodes = await Promise.all(\n [\n proxy.orientationX,\n proxy.orientationY,\n proxy.orientationZ,\n proxy.positionX,\n proxy.positionY,\n proxy.positionZ\n ].map(async (audioParam, index) => {\n const nativeConstantSourceNode = createNativeConstantSourceNode(partialOfflineAudioContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: index === 0 ? 1 : 0\n });\n\n await renderAutomation(partialOfflineAudioContext, audioParam, nativeConstantSourceNode.offset);\n\n return nativeConstantSourceNode;\n })\n );\n\n for (let i = 0; i < 6; i += 1) {\n nativeConstantSourceNodes[i].connect(nativeChannelMergerNode, 0, i);\n nativeConstantSourceNodes[i].start(0);\n }\n\n return renderNativeOfflineAudioContext(partialOfflineAudioContext);\n })();\n }\n\n const renderedBuffer = await renderedBufferPromise;\n const inputGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 });\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, inputGainNode);\n\n const channelDatas: Float32Array[] = [];\n\n for (let i = 0; i < renderedBuffer.numberOfChannels; i += 1) {\n channelDatas.push(renderedBuffer.getChannelData(i));\n }\n\n let lastOrientation = [channelDatas[0][0], channelDatas[1][0], channelDatas[2][0]];\n let lastPosition = [channelDatas[3][0], channelDatas[4][0], channelDatas[5][0]];\n let gateGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 1 });\n let partialPannerNode = createNativePannerNode(nativeOfflineAudioContext, {\n ...commonNativePannerNodeOptions,\n orientationX: lastOrientation[0],\n orientationY: lastOrientation[1],\n orientationZ: lastOrientation[2],\n positionX: lastPosition[0],\n positionY: lastPosition[1],\n positionZ: lastPosition[2]\n });\n\n inputGainNode.connect(gateGainNode).connect((partialPannerNode).inputs[0]);\n partialPannerNode.connect(nativeGainNode);\n\n for (let i = 128; i < renderedBuffer.length; i += 128) {\n const orientation: [number, number, number] = [channelDatas[0][i], channelDatas[1][i], channelDatas[2][i]];\n const positon: [number, number, number] = [channelDatas[3][i], channelDatas[4][i], channelDatas[5][i]];\n\n if (\n orientation.some((value, index) => value !== lastOrientation[index]) ||\n positon.some((value, index) => value !== lastPosition[index])\n ) {\n lastOrientation = orientation;\n lastPosition = positon;\n\n const currentTime = i / nativeOfflineAudioContext.sampleRate;\n\n gateGainNode.gain.setValueAtTime(0, currentTime);\n\n gateGainNode = createNativeGainNode(nativeOfflineAudioContext, { ...commonAudioNodeOptions, gain: 0 });\n partialPannerNode = createNativePannerNode(nativeOfflineAudioContext, {\n ...commonNativePannerNodeOptions,\n orientationX: lastOrientation[0],\n orientationY: lastOrientation[1],\n orientationZ: lastOrientation[2],\n positionX: lastPosition[0],\n positionY: lastPosition[1],\n positionZ: lastPosition[2]\n });\n\n gateGainNode.gain.setValueAtTime(1, currentTime);\n\n inputGainNode.connect(gateGainNode).connect((partialPannerNode).inputs[0]);\n partialPannerNode.connect(nativeGainNode);\n }\n }\n\n return nativeGainNode;\n }\n\n if (!nativePannerNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX);\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY);\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX);\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY);\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ);\n }\n\n if (isNativeAudioNodeFaker(nativePannerNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode.inputs[0]);\n } else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode);\n }\n\n return nativePannerNode;\n };\n\n return {\n render(\n proxy: IPannerNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext\n ): Promise {\n const renderedNativeGainNodeOrNativePannerNode = renderedNativeAudioNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeGainNodeOrNativePannerNode !== undefined) {\n return Promise.resolve(renderedNativeGainNodeOrNativePannerNode);\n }\n\n return createAudioNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { TNativePeriodicWaveFactoryFactory } from '../types';\n\nexport const createNativePeriodicWaveFactory: TNativePeriodicWaveFactoryFactory = (createIndexSizeError) => {\n return (nativeContext, { disableNormalization, imag, real }) => {\n // Bug #180: Safari does not allow to use ordinary arrays.\n const convertedImag = imag instanceof Float32Array ? imag : new Float32Array(imag);\n const convertedReal = real instanceof Float32Array ? real : new Float32Array(real);\n\n const nativePeriodicWave = nativeContext.createPeriodicWave(convertedReal, convertedImag, { disableNormalization });\n\n // Bug #181: Safari does not throw an IndexSizeError so far if the given arrays have less than two values.\n if (Array.from(imag).length < 2) {\n throw createIndexSizeError();\n }\n\n return nativePeriodicWave;\n };\n};\n","import { TSanitizePeriodicWaveOptionsFunction } from '../types';\n\nexport const sanitizePeriodicWaveOptions: TSanitizePeriodicWaveOptionsFunction = (options) => {\n const { imag, real } = options;\n\n if (imag === undefined) {\n if (real === undefined) {\n return { ...options, imag: [0, 0], real: [0, 0] };\n }\n\n return { ...options, imag: Array.from(real, () => 0), real };\n }\n\n if (real === undefined) {\n return { ...options, imag, real: Array.from(imag, () => 0) };\n }\n\n return { ...options, imag, real };\n};\n","import { interceptConnections } from '../helpers/intercept-connections';\nimport { INativeWaveShaperNodeFaker } from '../interfaces';\nimport {\n TNativeAudioNode,\n TNativeChannelMergerNode,\n TNativeContext,\n TNativeGainNode,\n TNativeStereoPannerNode,\n TNativeStereoPannerNodeFakerFactoryFactory\n} from '../types';\n\nexport const createNativeStereoPannerNodeFakerFactory: TNativeStereoPannerNodeFakerFactoryFactory = (\n createNativeChannelMergerNode,\n createNativeChannelSplitterNode,\n createNativeGainNode,\n createNativeWaveShaperNode,\n createNotSupportedError,\n monitorConnections\n) => {\n // The curve has a size of 14bit plus 1 value to have an exact representation for zero. This value has been determined experimentally.\n const CURVE_SIZE = 16385;\n const DC_CURVE = new Float32Array([1, 1]);\n const HALF_PI = Math.PI / 2;\n const SINGLE_CHANNEL_OPTIONS = { channelCount: 1, channelCountMode: 'explicit', channelInterpretation: 'discrete' } as const;\n const SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS = { ...SINGLE_CHANNEL_OPTIONS, oversample: 'none' } as const;\n\n const buildInternalGraphForMono = (\n nativeContext: TNativeContext,\n inputGainNode: TNativeGainNode,\n panGainNode: TNativeGainNode,\n channelMergerNode: TNativeChannelMergerNode\n ) => {\n const leftWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const rightWaveShaperCurve = new Float32Array(CURVE_SIZE);\n\n for (let i = 0; i < CURVE_SIZE; i += 1) {\n const x = (i / (CURVE_SIZE - 1)) * HALF_PI;\n\n leftWaveShaperCurve[i] = Math.cos(x);\n rightWaveShaperCurve[i] = Math.sin(x);\n }\n\n const leftGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const leftWaveShaperNode = (\n createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: leftWaveShaperCurve })\n );\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const panWaveShaperNode = (\n createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: DC_CURVE })\n );\n const rightGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const rightWaveShaperNode = (\n createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: rightWaveShaperCurve })\n );\n\n return {\n connectGraph(): void {\n inputGainNode.connect(leftGainNode);\n inputGainNode.connect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n inputGainNode.connect(rightGainNode);\n\n panWaveShaperNode.connect(panGainNode);\n\n panGainNode.connect(leftWaveShaperNode.inputs === undefined ? leftWaveShaperNode : leftWaveShaperNode.inputs[0]);\n panGainNode.connect(rightWaveShaperNode.inputs === undefined ? rightWaveShaperNode : rightWaveShaperNode.inputs[0]);\n\n leftWaveShaperNode.connect(leftGainNode.gain);\n rightWaveShaperNode.connect(rightGainNode.gain);\n\n leftGainNode.connect(channelMergerNode, 0, 0);\n rightGainNode.connect(channelMergerNode, 0, 1);\n },\n disconnectGraph(): void {\n inputGainNode.disconnect(leftGainNode);\n inputGainNode.disconnect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n inputGainNode.disconnect(rightGainNode);\n\n panWaveShaperNode.disconnect(panGainNode);\n\n panGainNode.disconnect(leftWaveShaperNode.inputs === undefined ? leftWaveShaperNode : leftWaveShaperNode.inputs[0]);\n panGainNode.disconnect(rightWaveShaperNode.inputs === undefined ? rightWaveShaperNode : rightWaveShaperNode.inputs[0]);\n\n leftWaveShaperNode.disconnect(leftGainNode.gain);\n rightWaveShaperNode.disconnect(rightGainNode.gain);\n\n leftGainNode.disconnect(channelMergerNode, 0, 0);\n rightGainNode.disconnect(channelMergerNode, 0, 1);\n }\n };\n };\n\n const buildInternalGraphForStereo = (\n nativeContext: TNativeContext,\n inputGainNode: TNativeGainNode,\n panGainNode: TNativeGainNode,\n channelMergerNode: TNativeChannelMergerNode\n ) => {\n const leftInputForLeftOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const leftInputForRightOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const rightInputForLeftOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n const rightInputForRightOutputWaveShaperCurve = new Float32Array(CURVE_SIZE);\n\n const centerIndex = Math.floor(CURVE_SIZE / 2);\n\n for (let i = 0; i < CURVE_SIZE; i += 1) {\n if (i > centerIndex) {\n const x = ((i - centerIndex) / (CURVE_SIZE - 1 - centerIndex)) * HALF_PI;\n\n leftInputForLeftOutputWaveShaperCurve[i] = Math.cos(x);\n leftInputForRightOutputWaveShaperCurve[i] = Math.sin(x);\n rightInputForLeftOutputWaveShaperCurve[i] = 0;\n rightInputForRightOutputWaveShaperCurve[i] = 1;\n } else {\n const x = (i / (CURVE_SIZE - 1 - centerIndex)) * HALF_PI;\n\n leftInputForLeftOutputWaveShaperCurve[i] = 1;\n leftInputForRightOutputWaveShaperCurve[i] = 0;\n rightInputForLeftOutputWaveShaperCurve[i] = Math.cos(x);\n rightInputForRightOutputWaveShaperCurve[i] = Math.sin(x);\n }\n }\n\n const channelSplitterNode = createNativeChannelSplitterNode(nativeContext, {\n channelCount: 2,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: 2\n });\n const leftInputForLeftOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const leftInputForLeftOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: leftInputForLeftOutputWaveShaperCurve\n });\n const leftInputForRightOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const leftInputForRightOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: leftInputForRightOutputWaveShaperCurve\n });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const panWaveShaperNode = (\n createNativeWaveShaperNode(nativeContext, { ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS, curve: DC_CURVE })\n );\n const rightInputForLeftOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const rightInputForLeftOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: rightInputForLeftOutputWaveShaperCurve\n });\n const rightInputForRightOutputGainNode = createNativeGainNode(nativeContext, { ...SINGLE_CHANNEL_OPTIONS, gain: 0 });\n // Bug #119: Safari does not fully support the WaveShaperNode.\n const rightInputForRightOutputWaveShaperNode = createNativeWaveShaperNode(nativeContext, {\n ...SINGLE_CHANNEL_WAVE_SHAPER_OPTIONS,\n curve: rightInputForRightOutputWaveShaperCurve\n });\n\n return {\n connectGraph(): void {\n inputGainNode.connect(channelSplitterNode);\n inputGainNode.connect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n\n channelSplitterNode.connect(leftInputForLeftOutputGainNode, 0);\n channelSplitterNode.connect(leftInputForRightOutputGainNode, 0);\n channelSplitterNode.connect(rightInputForLeftOutputGainNode, 1);\n channelSplitterNode.connect(rightInputForRightOutputGainNode, 1);\n\n panWaveShaperNode.connect(panGainNode);\n\n panGainNode.connect(\n leftInputForLeftOutputWaveShaperNode.inputs === undefined\n ? leftInputForLeftOutputWaveShaperNode\n : leftInputForLeftOutputWaveShaperNode.inputs[0]\n );\n panGainNode.connect(\n leftInputForRightOutputWaveShaperNode.inputs === undefined\n ? leftInputForRightOutputWaveShaperNode\n : leftInputForRightOutputWaveShaperNode.inputs[0]\n );\n panGainNode.connect(\n rightInputForLeftOutputWaveShaperNode.inputs === undefined\n ? rightInputForLeftOutputWaveShaperNode\n : rightInputForLeftOutputWaveShaperNode.inputs[0]\n );\n panGainNode.connect(\n rightInputForRightOutputWaveShaperNode.inputs === undefined\n ? rightInputForRightOutputWaveShaperNode\n : rightInputForRightOutputWaveShaperNode.inputs[0]\n );\n\n leftInputForLeftOutputWaveShaperNode.connect(leftInputForLeftOutputGainNode.gain);\n leftInputForRightOutputWaveShaperNode.connect(leftInputForRightOutputGainNode.gain);\n rightInputForLeftOutputWaveShaperNode.connect(rightInputForLeftOutputGainNode.gain);\n rightInputForRightOutputWaveShaperNode.connect(rightInputForRightOutputGainNode.gain);\n\n leftInputForLeftOutputGainNode.connect(channelMergerNode, 0, 0);\n rightInputForLeftOutputGainNode.connect(channelMergerNode, 0, 0);\n\n leftInputForRightOutputGainNode.connect(channelMergerNode, 0, 1);\n rightInputForRightOutputGainNode.connect(channelMergerNode, 0, 1);\n },\n disconnectGraph(): void {\n inputGainNode.disconnect(channelSplitterNode);\n inputGainNode.disconnect(panWaveShaperNode.inputs === undefined ? panWaveShaperNode : panWaveShaperNode.inputs[0]);\n\n channelSplitterNode.disconnect(leftInputForLeftOutputGainNode, 0);\n channelSplitterNode.disconnect(leftInputForRightOutputGainNode, 0);\n channelSplitterNode.disconnect(rightInputForLeftOutputGainNode, 1);\n channelSplitterNode.disconnect(rightInputForRightOutputGainNode, 1);\n\n panWaveShaperNode.disconnect(panGainNode);\n\n panGainNode.disconnect(\n leftInputForLeftOutputWaveShaperNode.inputs === undefined\n ? leftInputForLeftOutputWaveShaperNode\n : leftInputForLeftOutputWaveShaperNode.inputs[0]\n );\n panGainNode.disconnect(\n leftInputForRightOutputWaveShaperNode.inputs === undefined\n ? leftInputForRightOutputWaveShaperNode\n : leftInputForRightOutputWaveShaperNode.inputs[0]\n );\n panGainNode.disconnect(\n rightInputForLeftOutputWaveShaperNode.inputs === undefined\n ? rightInputForLeftOutputWaveShaperNode\n : rightInputForLeftOutputWaveShaperNode.inputs[0]\n );\n panGainNode.disconnect(\n rightInputForRightOutputWaveShaperNode.inputs === undefined\n ? rightInputForRightOutputWaveShaperNode\n : rightInputForRightOutputWaveShaperNode.inputs[0]\n );\n\n leftInputForLeftOutputWaveShaperNode.disconnect(leftInputForLeftOutputGainNode.gain);\n leftInputForRightOutputWaveShaperNode.disconnect(leftInputForRightOutputGainNode.gain);\n rightInputForLeftOutputWaveShaperNode.disconnect(rightInputForLeftOutputGainNode.gain);\n rightInputForRightOutputWaveShaperNode.disconnect(rightInputForRightOutputGainNode.gain);\n\n leftInputForLeftOutputGainNode.disconnect(channelMergerNode, 0, 0);\n rightInputForLeftOutputGainNode.disconnect(channelMergerNode, 0, 0);\n\n leftInputForRightOutputGainNode.disconnect(channelMergerNode, 0, 1);\n rightInputForRightOutputGainNode.disconnect(channelMergerNode, 0, 1);\n }\n };\n };\n\n const buildInternalGraph = (\n nativeContext: TNativeContext,\n channelCount: number,\n inputGainNode: TNativeGainNode,\n panGainNode: TNativeGainNode,\n channelMergerNode: TNativeChannelMergerNode\n ) => {\n if (channelCount === 1) {\n return buildInternalGraphForMono(nativeContext, inputGainNode, panGainNode, channelMergerNode);\n }\n\n if (channelCount === 2) {\n return buildInternalGraphForStereo(nativeContext, inputGainNode, panGainNode, channelMergerNode);\n }\n\n throw createNotSupportedError();\n };\n\n return (nativeContext, { channelCount, channelCountMode, pan, ...audioNodeOptions }) => {\n if (channelCountMode === 'max') {\n throw createNotSupportedError();\n }\n\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n ...audioNodeOptions,\n channelCount: 1,\n channelCountMode,\n numberOfInputs: 2\n });\n const inputGainNode = createNativeGainNode(nativeContext, { ...audioNodeOptions, channelCount, channelCountMode, gain: 1 });\n const panGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: pan\n });\n\n let { connectGraph, disconnectGraph } = buildInternalGraph(\n nativeContext,\n channelCount,\n inputGainNode,\n panGainNode,\n channelMergerNode\n );\n\n Object.defineProperty(panGainNode.gain, 'defaultValue', { get: () => 0 });\n Object.defineProperty(panGainNode.gain, 'maxValue', { get: () => 1 });\n Object.defineProperty(panGainNode.gain, 'minValue', { get: () => -1 });\n\n const nativeStereoPannerNodeFakerFactory = {\n get bufferSize(): undefined {\n return undefined;\n },\n get channelCount(): number {\n return inputGainNode.channelCount;\n },\n set channelCount(value) {\n if (inputGainNode.channelCount !== value) {\n if (isConnected) {\n disconnectGraph();\n }\n\n ({ connectGraph, disconnectGraph } = buildInternalGraph(\n nativeContext,\n value,\n inputGainNode,\n panGainNode,\n channelMergerNode\n ));\n\n if (isConnected) {\n connectGraph();\n }\n }\n\n inputGainNode.channelCount = value;\n },\n get channelCountMode(): TNativeStereoPannerNode['channelCountMode'] {\n return inputGainNode.channelCountMode;\n },\n set channelCountMode(value) {\n if (value === 'clamped-max' || value === 'max') {\n throw createNotSupportedError();\n }\n\n inputGainNode.channelCountMode = value;\n },\n get channelInterpretation(): TNativeStereoPannerNode['channelInterpretation'] {\n return inputGainNode.channelInterpretation;\n },\n set channelInterpretation(value) {\n inputGainNode.channelInterpretation = value;\n },\n get context(): TNativeStereoPannerNode['context'] {\n return inputGainNode.context;\n },\n get inputs(): TNativeAudioNode[] {\n return [inputGainNode];\n },\n get numberOfInputs(): number {\n return inputGainNode.numberOfInputs;\n },\n get numberOfOutputs(): number {\n return inputGainNode.numberOfOutputs;\n },\n get pan(): TNativeStereoPannerNode['pan'] {\n return panGainNode.gain;\n },\n addEventListener(...args: any[]): void {\n return inputGainNode.addEventListener(args[0], args[1], args[2]);\n },\n dispatchEvent(...args: any[]): boolean {\n return inputGainNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args: any[]): void {\n return inputGainNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n\n let isConnected = false;\n\n const whenConnected = () => {\n connectGraph();\n\n isConnected = true;\n };\n const whenDisconnected = () => {\n disconnectGraph();\n\n isConnected = false;\n };\n\n return monitorConnections(\n interceptConnections(nativeStereoPannerNodeFakerFactory, channelMergerNode),\n whenConnected,\n whenDisconnected\n );\n };\n};\n","import { assignNativeAudioNodeAudioParamValue } from '../helpers/assign-native-audio-node-audio-param-value';\nimport { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeStereoPannerNodeFactoryFactory } from '../types';\n\nexport const createNativeStereoPannerNodeFactory: TNativeStereoPannerNodeFactoryFactory = (\n createNativeStereoPannerNodeFaker,\n createNotSupportedError\n) => {\n return (nativeContext, options) => {\n const channelCountMode = options.channelCountMode;\n\n /*\n * Bug #105: The channelCountMode of 'clamped-max' should be supported. However it is not possible to write a polyfill for Safari\n * which supports it and therefore it can't be supported at all.\n */\n if (channelCountMode === 'clamped-max') {\n throw createNotSupportedError();\n }\n\n // Bug #105: Safari does not support the StereoPannerNode.\n if (nativeContext.createStereoPanner === undefined) {\n return createNativeStereoPannerNodeFaker(nativeContext, options);\n }\n\n const nativeStereoPannerNode = nativeContext.createStereoPanner();\n\n assignNativeAudioNodeOptions(nativeStereoPannerNode, options);\n\n assignNativeAudioNodeAudioParamValue(nativeStereoPannerNode, options, 'pan');\n\n /*\n * Bug #105: The channelCountMode of 'clamped-max' should be supported. However it is not possible to write a polyfill for Safari\n * which supports it and therefore it can't be supported at all.\n */\n Object.defineProperty(nativeStereoPannerNode, 'channelCountMode', {\n get: () => channelCountMode,\n set: (value) => {\n if (value !== channelCountMode) {\n throw createNotSupportedError();\n }\n }\n });\n\n return nativeStereoPannerNode;\n };\n};\n","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IMinimalOfflineAudioContext, IOfflineAudioContext, IStereoPannerNode } from '../interfaces';\nimport { TNativeOfflineAudioContext, TNativeStereoPannerNode, TStereoPannerNodeRendererFactoryFactory } from '../types';\n\nexport const createStereoPannerNodeRendererFactory: TStereoPannerNodeRendererFactoryFactory = (\n connectAudioParam,\n createNativeStereoPannerNode,\n getNativeAudioNode,\n renderAutomation,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeStereoPannerNodes = new WeakMap();\n\n const createStereoPannerNode = async (proxy: IStereoPannerNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeStereoPannerNode = getNativeAudioNode(proxy);\n\n /*\n * If the initially used nativeStereoPannerNode was not constructed on the same OfflineAudioContext it needs to be created\n * again.\n */\n const nativeStereoPannerNodeIsOwnedByContext = isOwnedByContext(nativeStereoPannerNode, nativeOfflineAudioContext);\n\n if (!nativeStereoPannerNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeStereoPannerNode.channelCount,\n channelCountMode: nativeStereoPannerNode.channelCountMode,\n channelInterpretation: nativeStereoPannerNode.channelInterpretation,\n pan: nativeStereoPannerNode.pan.value\n };\n\n nativeStereoPannerNode = createNativeStereoPannerNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeStereoPannerNodes.set(nativeOfflineAudioContext, nativeStereoPannerNode);\n\n if (!nativeStereoPannerNodeIsOwnedByContext) {\n await renderAutomation(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan);\n }\n\n if (isNativeAudioNodeFaker(nativeStereoPannerNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode.inputs[0]);\n } else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode);\n }\n\n return nativeStereoPannerNode;\n };\n\n return {\n render(proxy: IStereoPannerNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeStereoPannerNode = renderedNativeStereoPannerNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeStereoPannerNode !== undefined) {\n return Promise.resolve(renderedNativeStereoPannerNode);\n }\n\n return createStereoPannerNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IMinimalOfflineAudioContext, IOfflineAudioContext, IWaveShaperNode } from '../interfaces';\nimport { TNativeOfflineAudioContext, TNativeWaveShaperNode, TWaveShaperNodeRendererFactoryFactory } from '../types';\n\nexport const createWaveShaperNodeRendererFactory: TWaveShaperNodeRendererFactoryFactory = (\n createNativeWaveShaperNode,\n getNativeAudioNode,\n renderInputsOfAudioNode\n) => {\n return () => {\n const renderedNativeWaveShaperNodes = new WeakMap();\n\n const createWaveShaperNode = async (proxy: IWaveShaperNode, nativeOfflineAudioContext: TNativeOfflineAudioContext) => {\n let nativeWaveShaperNode = getNativeAudioNode(proxy);\n\n // If the initially used nativeWaveShaperNode was not constructed on the same OfflineAudioContext it needs to be created again.\n const nativeWaveShaperNodeIsOwnedByContext = isOwnedByContext(nativeWaveShaperNode, nativeOfflineAudioContext);\n\n if (!nativeWaveShaperNodeIsOwnedByContext) {\n const options = {\n channelCount: nativeWaveShaperNode.channelCount,\n channelCountMode: nativeWaveShaperNode.channelCountMode,\n channelInterpretation: nativeWaveShaperNode.channelInterpretation,\n curve: nativeWaveShaperNode.curve,\n oversample: nativeWaveShaperNode.oversample\n };\n\n nativeWaveShaperNode = createNativeWaveShaperNode(nativeOfflineAudioContext, options);\n }\n\n renderedNativeWaveShaperNodes.set(nativeOfflineAudioContext, nativeWaveShaperNode);\n\n if (isNativeAudioNodeFaker(nativeWaveShaperNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode.inputs[0]);\n } else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode);\n }\n\n return nativeWaveShaperNode;\n };\n\n return {\n render(proxy: IWaveShaperNode, nativeOfflineAudioContext: TNativeOfflineAudioContext): Promise {\n const renderedNativeWaveShaperNode = renderedNativeWaveShaperNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeWaveShaperNode !== undefined) {\n return Promise.resolve(renderedNativeWaveShaperNode);\n }\n\n return createWaveShaperNode(proxy, nativeOfflineAudioContext);\n }\n };\n };\n};\n","import { TIsSecureContextFactory } from '../types';\n\nexport const createIsSecureContext: TIsSecureContextFactory = (window) => window !== null && window.isSecureContext;\n","import { TExposeCurrentFrameAndCurrentTimeFactory } from '../types';\n\nexport const createExposeCurrentFrameAndCurrentTime: TExposeCurrentFrameAndCurrentTimeFactory = (window) => {\n return (currentTime, sampleRate, fn) => {\n Object.defineProperties(window, {\n currentFrame: {\n configurable: true,\n get(): number {\n return Math.round(currentTime * sampleRate);\n }\n },\n currentTime: {\n configurable: true,\n get(): number {\n return currentTime;\n }\n }\n });\n\n try {\n return fn();\n } finally {\n if (window !== null) {\n delete (window).currentFrame;\n delete (window).currentTime;\n }\n }\n };\n};\n","import { TGetOrCreateBackupOfflineAudioContextFactory } from '../types';\n\nexport const createGetOrCreateBackupOfflineAudioContext: TGetOrCreateBackupOfflineAudioContextFactory = (\n backupOfflineAudioContextStore,\n nativeOfflineAudioContextConstructor\n) => {\n return (nativeContext) => {\n let backupOfflineAudioContext = backupOfflineAudioContextStore.get(nativeContext);\n\n if (backupOfflineAudioContext !== undefined) {\n return backupOfflineAudioContext;\n }\n\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n\n // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz.\n backupOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n\n backupOfflineAudioContextStore.set(nativeContext, backupOfflineAudioContext);\n\n return backupOfflineAudioContext;\n };\n};\n","import { TEvaluateSourceFactory } from '../types';\n\nexport const createEvaluateSource: TEvaluateSourceFactory = (window) => {\n return (source) =>\n new Promise((resolve, reject) => {\n if (window === null) {\n // Bug #182 Chrome and Edge do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n\n return;\n }\n\n const head = window.document.head;\n\n if (head === null) {\n // Bug #182 Chrome and Edge do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n } else {\n const script = window.document.createElement('script');\n // @todo Safari doesn't like URLs with a type of 'application/javascript; charset=utf-8'.\n const blob = new Blob([source], { type: 'application/javascript' });\n const url = URL.createObjectURL(blob);\n\n const originalOnErrorHandler = window.onerror;\n\n const removeErrorEventListenerAndRevokeUrl = () => {\n window.onerror = originalOnErrorHandler;\n\n URL.revokeObjectURL(url);\n };\n\n window.onerror = (message, src, lineno, colno, error) => {\n // @todo Edge thinks the source is the one of the html document.\n if (src === url || (src === window.location.href && lineno === 1 && colno === 1)) {\n removeErrorEventListenerAndRevokeUrl();\n reject(error);\n\n return false;\n }\n\n if (originalOnErrorHandler !== null) {\n return originalOnErrorHandler(message, src, lineno, colno, error);\n }\n };\n\n script.onerror = () => {\n removeErrorEventListenerAndRevokeUrl();\n // Bug #182 Chrome and Edge do throw an instance of a SyntaxError instead of a DOMException.\n reject(new SyntaxError());\n };\n script.onload = () => {\n removeErrorEventListenerAndRevokeUrl();\n resolve();\n };\n script.src = url;\n script.type = 'module';\n\n head.appendChild(script);\n }\n });\n};\n","import { TFetchSourceFactory } from '../types';\n\nexport const createFetchSource: TFetchSourceFactory = (createAbortError) => {\n return async (url) => {\n try {\n const response = await fetch(url);\n\n if (response.ok) {\n return [await response.text(), response.url];\n }\n } catch {\n // Ignore errors.\n } // tslint:disable-line:no-empty\n\n throw createAbortError();\n };\n};\n","import { TTestAudioWorkletProcessorPostMessageSupportFactory } from '../types';\n\n// Bug #179: Firefox does not allow to transfer any buffer which has been passed to the process() method as an argument.\nexport const createTestAudioWorkletProcessorPostMessageSupport: TTestAudioWorkletProcessorPostMessageSupportFactory = (\n nativeAudioWorkletNodeConstructor,\n nativeOfflineAudioContextConstructor\n) => {\n return async () => {\n // Bug #61: If there is no native AudioWorkletNode it gets faked and therefore it is no problem if the it doesn't exist.\n if (nativeAudioWorkletNodeConstructor === null) {\n return true;\n }\n\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const blob = new Blob(\n ['class A extends AudioWorkletProcessor{process(i){this.port.postMessage(i,[i[0][0].buffer])}}registerProcessor(\"a\",A)'],\n {\n type: 'application/javascript; charset=utf-8'\n }\n );\n // Bug #141: Safari does not support creating an OfflineAudioContext with less than 44100 Hz.\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 44100);\n const url = URL.createObjectURL(blob);\n\n let isEmittingMessageEvents = false;\n let isEmittingProcessorErrorEvents = false;\n\n try {\n await offlineAudioContext.audioWorklet.addModule(url);\n\n const audioWorkletNode = new nativeAudioWorkletNodeConstructor(offlineAudioContext, 'a', { numberOfOutputs: 0 });\n const oscillator = offlineAudioContext.createOscillator();\n\n audioWorkletNode.port.onmessage = () => (isEmittingMessageEvents = true);\n audioWorkletNode.onprocessorerror = () => (isEmittingProcessorErrorEvents = true);\n\n oscillator.connect(audioWorkletNode);\n oscillator.start(0);\n\n await offlineAudioContext.startRendering();\n\n // Bug #197: Safari does not deliver the messages before the promise returned by startRendering() resolves.\n await new Promise((resolve) => setTimeout(resolve));\n } catch {\n // Ignore errors.\n } finally {\n URL.revokeObjectURL(url);\n }\n\n return isEmittingMessageEvents && !isEmittingProcessorErrorEvents;\n };\n};\n","import { TIsNativeContextFactory, TNativeAudioContext } from '../types';\n\nexport const createIsNativeContext: TIsNativeContextFactory = (isNativeAudioContext, isNativeOfflineAudioContext) => {\n return (anything): anything is TNativeAudioContext => {\n return isNativeAudioContext(anything) || isNativeOfflineAudioContext(anything);\n };\n};\n","import { detachArrayBuffer } from '../helpers/detach-array-buffer';\nimport { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nimport { TDecodeAudioDataFactory } from '../types';\n\nexport const createDecodeAudioData: TDecodeAudioDataFactory = (\n audioBufferStore,\n cacheTestResult,\n createDataCloneError,\n createEncodingError,\n detachedArrayBuffers,\n getNativeContext,\n isNativeContext,\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport,\n testPromiseSupport,\n wrapAudioBufferCopyChannelMethods,\n wrapAudioBufferCopyChannelMethodsOutOfBounds\n) => {\n return (anyContext, audioData) => {\n const nativeContext = isNativeContext(anyContext) ? anyContext : getNativeContext(anyContext);\n\n // Bug #43: Only Chrome and Edge do throw a DataCloneError.\n if (detachedArrayBuffers.has(audioData)) {\n const err = createDataCloneError();\n\n return Promise.reject(err);\n }\n\n // The audioData parameter maybe of a type which can't be added to a WeakSet.\n try {\n detachedArrayBuffers.add(audioData);\n } catch {\n // Ignore errors.\n }\n\n // Bug #21: Safari does not support promises yet.\n if (cacheTestResult(testPromiseSupport, () => testPromiseSupport(nativeContext))) {\n return nativeContext.decodeAudioData(audioData).then((audioBuffer) => {\n // Bug #133: Safari does neuter the ArrayBuffer.\n detachArrayBuffer(audioData).catch(() => {\n // Ignore errors.\n });\n\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n if (\n !cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () =>\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer)\n )\n ) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n\n audioBufferStore.add(audioBuffer);\n\n return audioBuffer;\n });\n }\n\n // Bug #21: Safari does not return a Promise yet.\n return new Promise((resolve, reject) => {\n const complete = async () => {\n // Bug #133: Safari does neuter the ArrayBuffer.\n try {\n await detachArrayBuffer(audioData);\n } catch {\n // Ignore errors.\n }\n };\n\n const fail = (err: DOMException | Error) => {\n reject(err);\n complete();\n };\n\n // Bug #26: Safari throws a synchronous error.\n try {\n // Bug #1: Safari requires a successCallback.\n nativeContext.decodeAudioData(\n audioData,\n (audioBuffer) => {\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n }\n\n audioBufferStore.add(audioBuffer);\n\n complete().then(() => resolve(audioBuffer));\n },\n (err: DOMException | Error) => {\n // Bug #4: Safari returns null instead of an error.\n if (err === null) {\n fail(createEncodingError());\n } else {\n fail(err);\n }\n }\n );\n } catch (err) {\n fail(err);\n }\n });\n };\n};\n","import { TDataCloneErrorFactory } from '../types';\n\nexport const createDataCloneError: TDataCloneErrorFactory = () => new DOMException('', 'DataCloneError');\n","import { TEncodingErrorFactory } from '../types';\n\nexport const createEncodingError: TEncodingErrorFactory = () => new DOMException('', 'EncodingError');\n","import {\n IAnalyserNode,\n IAudioBuffer,\n IAudioBufferSourceNode,\n IAudioNode,\n IAudioWorklet,\n IBaseAudioContext,\n IBiquadFilterNode,\n IConstantSourceNode,\n IConvolverNode,\n IDelayNode,\n IDynamicsCompressorNode,\n IGainNode,\n IIIRFilterNode,\n IOscillatorNode,\n IPannerNode,\n IPeriodicWave,\n IPeriodicWaveConstraints,\n IStereoPannerNode,\n IWaveShaperNode,\n IWorkletOptions\n} from '../interfaces';\nimport { TBaseAudioContextConstructorFactory, TContext, TDecodeErrorCallback, TDecodeSuccessCallback, TNativeContext } from '../types';\n\nexport const createBaseAudioContextConstructor: TBaseAudioContextConstructorFactory = (\n addAudioWorkletModule,\n analyserNodeConstructor,\n audioBufferConstructor,\n audioBufferSourceNodeConstructor,\n biquadFilterNodeConstructor,\n channelMergerNodeConstructor,\n channelSplitterNodeConstructor,\n constantSourceNodeConstructor,\n convolverNodeConstructor,\n decodeAudioData,\n delayNodeConstructor,\n dynamicsCompressorNodeConstructor,\n gainNodeConstructor,\n iIRFilterNodeConstructor,\n minimalBaseAudioContextConstructor,\n oscillatorNodeConstructor,\n pannerNodeConstructor,\n periodicWaveConstructor,\n stereoPannerNodeConstructor,\n waveShaperNodeConstructor\n) => {\n return class BaseAudioContext extends minimalBaseAudioContextConstructor implements IBaseAudioContext {\n private _audioWorklet: undefined | IAudioWorklet;\n\n constructor(private _nativeContext: TNativeContext, numberOfChannels: number) {\n super(_nativeContext, numberOfChannels);\n\n this._audioWorklet =\n addAudioWorkletModule === undefined\n ? undefined\n : {\n addModule: (moduleURL: string, options?: IWorkletOptions) => {\n return addAudioWorkletModule((this), moduleURL, options);\n }\n };\n }\n\n get audioWorklet(): undefined | IAudioWorklet {\n return this._audioWorklet;\n }\n\n public createAnalyser(): IAnalyserNode {\n return new analyserNodeConstructor((this));\n }\n\n public createBiquadFilter(): IBiquadFilterNode {\n return new biquadFilterNodeConstructor((this));\n }\n\n public createBuffer(numberOfChannels: number, length: number, sampleRate: number): IAudioBuffer {\n return new audioBufferConstructor({ length, numberOfChannels, sampleRate });\n }\n\n public createBufferSource(): IAudioBufferSourceNode {\n return new audioBufferSourceNodeConstructor((this));\n }\n\n public createChannelMerger(numberOfInputs = 6): IAudioNode {\n return new channelMergerNodeConstructor((this), { numberOfInputs });\n }\n\n public createChannelSplitter(numberOfOutputs = 6): IAudioNode {\n return new channelSplitterNodeConstructor((this), { numberOfOutputs });\n }\n\n public createConstantSource(): IConstantSourceNode {\n return new constantSourceNodeConstructor((this));\n }\n\n public createConvolver(): IConvolverNode {\n return new convolverNodeConstructor((this));\n }\n\n public createDelay(maxDelayTime = 1): IDelayNode {\n return new delayNodeConstructor((this), { maxDelayTime });\n }\n\n public createDynamicsCompressor(): IDynamicsCompressorNode {\n return new dynamicsCompressorNodeConstructor((this));\n }\n\n public createGain(): IGainNode {\n return new gainNodeConstructor((this));\n }\n\n public createIIRFilter(feedforward: Iterable, feedback: Iterable): IIIRFilterNode {\n return new iIRFilterNodeConstructor((this), { feedback, feedforward });\n }\n\n public createOscillator(): IOscillatorNode {\n return new oscillatorNodeConstructor((this));\n }\n\n public createPanner(): IPannerNode {\n return new pannerNodeConstructor((this));\n }\n\n public createPeriodicWave(\n real: Iterable,\n imag: Iterable,\n constraints: Partial = { disableNormalization: false }\n ): IPeriodicWave {\n return new periodicWaveConstructor((this), { ...constraints, imag, real });\n }\n\n public createStereoPanner(): IStereoPannerNode {\n return new stereoPannerNodeConstructor((this));\n }\n\n public createWaveShaper(): IWaveShaperNode {\n return new waveShaperNodeConstructor((this));\n }\n\n public decodeAudioData(\n audioData: ArrayBuffer,\n successCallback?: TDecodeSuccessCallback,\n errorCallback?: TDecodeErrorCallback\n ): Promise {\n return decodeAudioData(this._nativeContext, audioData).then(\n (audioBuffer) => {\n if (typeof successCallback === 'function') {\n successCallback(audioBuffer);\n }\n\n return audioBuffer;\n },\n (err) => {\n if (typeof errorCallback === 'function') {\n errorCallback(err);\n }\n\n throw err;\n }\n );\n }\n };\n};\n","import { IAudioContext, IMediaElementAudioSourceNode, IMediaElementAudioSourceOptions, IMinimalAudioContext } from '../interfaces';\nimport { TAudioNodeRenderer, TMediaElementAudioSourceNodeConstructorFactory, TNativeMediaElementAudioSourceNode } from '../types';\n\nexport const createMediaElementAudioSourceNodeConstructor: TMediaElementAudioSourceNodeConstructorFactory = (\n audioNodeConstructor,\n createNativeMediaElementAudioSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class MediaElementAudioSourceNode extends audioNodeConstructor\n implements IMediaElementAudioSourceNode {\n private _nativeMediaElementAudioSourceNode: TNativeMediaElementAudioSourceNode;\n\n constructor(context: T, options: IMediaElementAudioSourceOptions) {\n const nativeContext = getNativeContext(context);\n const nativeMediaElementAudioSourceNode = createNativeMediaElementAudioSourceNode(nativeContext, options);\n\n // Bug #171: Safari allows to create a MediaElementAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw TypeError();\n }\n\n super(context, true, nativeMediaElementAudioSourceNode, >null);\n\n this._nativeMediaElementAudioSourceNode = nativeMediaElementAudioSourceNode;\n }\n\n get mediaElement(): HTMLMediaElement {\n return this._nativeMediaElementAudioSourceNode.mediaElement;\n }\n };\n};\n","import { TNativeMediaElementAudioSourceNodeFactory } from '../types';\n\nexport const createNativeMediaElementAudioSourceNode: TNativeMediaElementAudioSourceNodeFactory = (nativeAudioContext, options) => {\n return nativeAudioContext.createMediaElementSource(options.mediaElement);\n};\n","import { assignNativeAudioNodeOptions } from '../helpers/assign-native-audio-node-options';\nimport { TNativeMediaStreamAudioDestinationNodeFactory } from '../types';\n\nexport const createNativeMediaStreamAudioDestinationNode: TNativeMediaStreamAudioDestinationNodeFactory = (nativeAudioContext, options) => {\n const nativeMediaStreamAudioDestinationNode = nativeAudioContext.createMediaStreamDestination();\n\n assignNativeAudioNodeOptions(nativeMediaStreamAudioDestinationNode, options);\n\n // Bug #174: Safari does expose a wrong numberOfOutputs.\n if (nativeMediaStreamAudioDestinationNode.numberOfOutputs === 1) {\n Object.defineProperty(nativeMediaStreamAudioDestinationNode, 'numberOfOutputs', { get: () => 0 });\n }\n\n return nativeMediaStreamAudioDestinationNode;\n};\n","import { IAudioContext, IMediaStreamAudioSourceNode, IMediaStreamAudioSourceOptions, IMinimalAudioContext } from '../interfaces';\nimport { TAudioNodeRenderer, TMediaStreamAudioSourceNodeConstructorFactory, TNativeMediaStreamAudioSourceNode } from '../types';\n\nexport const createMediaStreamAudioSourceNodeConstructor: TMediaStreamAudioSourceNodeConstructorFactory = (\n audioNodeConstructor,\n createNativeMediaStreamAudioSourceNode,\n getNativeContext,\n isNativeOfflineAudioContext\n) => {\n return class MediaStreamAudioSourceNode extends audioNodeConstructor\n implements IMediaStreamAudioSourceNode {\n private _nativeMediaStreamAudioSourceNode: TNativeMediaStreamAudioSourceNode;\n\n constructor(context: T, options: IMediaStreamAudioSourceOptions) {\n const nativeContext = getNativeContext(context);\n const nativeMediaStreamAudioSourceNode = createNativeMediaStreamAudioSourceNode(nativeContext, options);\n\n // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeContext)) {\n throw new TypeError();\n }\n\n super(context, true, nativeMediaStreamAudioSourceNode, >null);\n\n this._nativeMediaStreamAudioSourceNode = nativeMediaStreamAudioSourceNode;\n }\n\n get mediaStream(): MediaStream {\n return this._nativeMediaStreamAudioSourceNode.mediaStream;\n }\n };\n};\n","import { TNativeMediaStreamAudioSourceNodeFactory } from '../types';\n\nexport const createNativeMediaStreamAudioSourceNode: TNativeMediaStreamAudioSourceNodeFactory = (nativeAudioContext, { mediaStream }) => {\n const audioStreamTracks = mediaStream.getAudioTracks();\n /*\n * Bug #151: Safari does not use the audio track as input anymore if it gets removed from the mediaStream after construction.\n * Bug #159: Safari picks the first audio track if the MediaStream has more than one audio track.\n */\n audioStreamTracks.sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));\n\n const filteredAudioStreamTracks = audioStreamTracks.slice(0, 1);\n\n const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(new MediaStream(filteredAudioStreamTracks));\n\n /*\n * Bug #151 & #159: The given mediaStream gets reconstructed before it gets passed to the native node which is why the accessor needs\n * to be overwritten as it would otherwise expose the reconstructed version.\n */\n Object.defineProperty(nativeMediaStreamAudioSourceNode, 'mediaStream', { value: mediaStream });\n\n return nativeMediaStreamAudioSourceNode;\n};\n","import { TNativeMediaStreamTrackAudioSourceNodeFactoryFactory } from '../types';\n\nexport const createNativeMediaStreamTrackAudioSourceNodeFactory: TNativeMediaStreamTrackAudioSourceNodeFactoryFactory = (\n createInvalidStateError,\n isNativeOfflineAudioContext\n) => {\n return (nativeAudioContext, { mediaStreamTrack }) => {\n // Bug #121: Only Firefox does yet support the MediaStreamTrackAudioSourceNode.\n if (typeof nativeAudioContext.createMediaStreamTrackSource === 'function') {\n return nativeAudioContext.createMediaStreamTrackSource(mediaStreamTrack);\n }\n\n const mediaStream = new MediaStream([mediaStreamTrack]);\n const nativeMediaStreamAudioSourceNode = nativeAudioContext.createMediaStreamSource(mediaStream);\n\n // Bug #120: Firefox does not throw an error if the mediaStream has no audio track.\n if (mediaStreamTrack.kind !== 'audio') {\n throw createInvalidStateError();\n }\n\n // Bug #172: Safari allows to create a MediaStreamAudioSourceNode with an OfflineAudioContext.\n if (isNativeOfflineAudioContext(nativeAudioContext)) {\n throw new TypeError();\n }\n\n return nativeMediaStreamAudioSourceNode;\n };\n};\n","import { IAudioContext, IMediaStreamTrackAudioSourceNode, IMediaStreamTrackAudioSourceOptions, IMinimalAudioContext } from '../interfaces';\nimport { TAudioNodeRenderer, TMediaStreamTrackAudioSourceNodeConstructorFactory } from '../types';\n\nexport const createMediaStreamTrackAudioSourceNodeConstructor: TMediaStreamTrackAudioSourceNodeConstructorFactory = (\n audioNodeConstructor,\n createNativeMediaStreamTrackAudioSourceNode,\n getNativeContext\n) => {\n return class MediaStreamTrackAudioSourceNode extends audioNodeConstructor\n implements IMediaStreamTrackAudioSourceNode {\n constructor(context: T, options: IMediaStreamTrackAudioSourceOptions) {\n const nativeContext = getNativeContext(context);\n const nativeMediaStreamTrackAudioSourceNode = createNativeMediaStreamTrackAudioSourceNode(nativeContext, options);\n\n super(context, true, nativeMediaStreamTrackAudioSourceNode, >null);\n }\n };\n};\n","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { isValidLatencyHint } from '../helpers/is-valid-latency-hint';\nimport {\n IAudioContext,\n IAudioContextOptions,\n IMediaElementAudioSourceNode,\n IMediaStreamAudioDestinationNode,\n IMediaStreamAudioSourceNode,\n IMediaStreamTrackAudioSourceNode\n} from '../interfaces';\nimport { TAudioContextConstructorFactory, TAudioContextState, TNativeAudioContext, TNativeGainNode, TNativeOscillatorNode } from '../types';\n\nexport const createAudioContextConstructor: TAudioContextConstructorFactory = (\n baseAudioContextConstructor,\n createInvalidStateError,\n createNotSupportedError,\n createUnknownError,\n mediaElementAudioSourceNodeConstructor,\n mediaStreamAudioDestinationNodeConstructor,\n mediaStreamAudioSourceNodeConstructor,\n mediaStreamTrackAudioSourceNodeConstructor,\n nativeAudioContextConstructor\n) => {\n return class AudioContext extends baseAudioContextConstructor implements IAudioContext {\n private _baseLatency: number;\n\n private _nativeAudioContext: TNativeAudioContext;\n\n private _nativeGainNode: null | TNativeGainNode;\n\n private _nativeOscillatorNode: null | TNativeOscillatorNode;\n\n private _state: null | 'suspended';\n\n constructor(options: IAudioContextOptions = {}) {\n if (nativeAudioContextConstructor === null) {\n throw new Error('Missing the native AudioContext constructor.');\n }\n\n let nativeAudioContext: TNativeAudioContext;\n\n try {\n nativeAudioContext = new nativeAudioContextConstructor(options);\n } catch (err) {\n // Bug #192 Safari does throw a SyntaxError if the sampleRate is not supported.\n if (err.code === 12 && err.message === 'sampleRate is not in range') {\n throw createNotSupportedError();\n }\n\n throw err;\n }\n\n // Bug #131 Safari returns null when there are four other AudioContexts running already.\n if (nativeAudioContext === null) {\n throw createUnknownError();\n }\n\n // Bug #51 Only Chrome and Edge throw an error if the given latencyHint is invalid.\n if (!isValidLatencyHint(options.latencyHint)) {\n throw new TypeError(\n `The provided value '${options.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`\n );\n }\n\n // Bug #150 Safari does not support setting the sampleRate.\n if (options.sampleRate !== undefined && nativeAudioContext.sampleRate !== options.sampleRate) {\n throw createNotSupportedError();\n }\n\n super(nativeAudioContext, 2);\n\n const { latencyHint } = options;\n const { sampleRate } = nativeAudioContext;\n\n // @todo The values for 'balanced', 'interactive' and 'playback' are just copied from Chrome's implementation.\n this._baseLatency =\n typeof nativeAudioContext.baseLatency === 'number'\n ? nativeAudioContext.baseLatency\n : latencyHint === 'balanced'\n ? 512 / sampleRate\n : latencyHint === 'interactive' || latencyHint === undefined\n ? 256 / sampleRate\n : latencyHint === 'playback'\n ? 1024 / sampleRate\n : /*\n * @todo The min (256) and max (16384) values are taken from the allowed bufferSize values of a\n * ScriptProcessorNode.\n */\n (Math.max(2, Math.min(128, Math.round((latencyHint * sampleRate) / 128))) * 128) / sampleRate;\n this._nativeAudioContext = nativeAudioContext;\n\n // Bug #188: Safari will set the context's state to 'interrupted' in case the user switches tabs.\n if (nativeAudioContextConstructor.name === 'webkitAudioContext') {\n this._nativeGainNode = nativeAudioContext.createGain();\n this._nativeOscillatorNode = nativeAudioContext.createOscillator();\n\n this._nativeGainNode.gain.value = 1e-37;\n\n this._nativeOscillatorNode.connect(this._nativeGainNode).connect(nativeAudioContext.destination);\n this._nativeOscillatorNode.start();\n } else {\n this._nativeGainNode = null;\n this._nativeOscillatorNode = null;\n }\n\n this._state = null;\n\n /*\n * Bug #34: Chrome and Edge pretend to be running right away, but fire an onstatechange event when the state actually changes\n * to 'running'.\n */\n if (nativeAudioContext.state === 'running') {\n this._state = 'suspended';\n\n const revokeState = () => {\n if (this._state === 'suspended') {\n this._state = null;\n }\n\n nativeAudioContext.removeEventListener('statechange', revokeState);\n };\n\n nativeAudioContext.addEventListener('statechange', revokeState);\n }\n }\n\n get baseLatency(): number {\n return this._baseLatency;\n }\n\n get state(): TAudioContextState {\n return this._state !== null ? this._state : this._nativeAudioContext.state;\n }\n\n public close(): Promise {\n // Bug #35: Firefox does not throw an error if the AudioContext was closed before.\n if (this.state === 'closed') {\n return this._nativeAudioContext.close().then(() => {\n throw createInvalidStateError();\n });\n }\n\n // Bug #34: If the state was set to suspended before it should be revoked now.\n if (this._state === 'suspended') {\n this._state = null;\n }\n\n return this._nativeAudioContext.close().then(() => {\n if (this._nativeGainNode !== null && this._nativeOscillatorNode !== null) {\n this._nativeOscillatorNode.stop();\n\n this._nativeGainNode.disconnect();\n this._nativeOscillatorNode.disconnect();\n }\n\n deactivateAudioGraph(this);\n });\n }\n\n public createMediaElementSource(mediaElement: HTMLMediaElement): IMediaElementAudioSourceNode {\n return new mediaElementAudioSourceNodeConstructor(this, { mediaElement });\n }\n\n public createMediaStreamDestination(): IMediaStreamAudioDestinationNode {\n return new mediaStreamAudioDestinationNodeConstructor(this);\n }\n\n public createMediaStreamSource(mediaStream: MediaStream): IMediaStreamAudioSourceNode {\n return new mediaStreamAudioSourceNodeConstructor(this, { mediaStream });\n }\n\n public createMediaStreamTrackSource(mediaStreamTrack: MediaStreamTrack): IMediaStreamTrackAudioSourceNode {\n return new mediaStreamTrackAudioSourceNodeConstructor(this, { mediaStreamTrack });\n }\n\n public resume(): Promise {\n if (this._state === 'suspended') {\n return new Promise((resolve, reject) => {\n const resolvePromise = () => {\n this._nativeAudioContext.removeEventListener('statechange', resolvePromise);\n\n if (this._nativeAudioContext.state === 'running') {\n resolve();\n } else {\n this.resume().then(resolve, reject);\n }\n };\n\n this._nativeAudioContext.addEventListener('statechange', resolvePromise);\n });\n }\n\n return this._nativeAudioContext.resume().catch((err) => {\n // Bug #55: Chrome and Edge do throw an InvalidAccessError instead of an InvalidStateError.\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined || err.code === 15) {\n throw createInvalidStateError();\n }\n\n throw err;\n });\n }\n\n public suspend(): Promise {\n return this._nativeAudioContext.suspend().catch((err) => {\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined) {\n throw createInvalidStateError();\n }\n\n throw err;\n });\n }\n };\n};\n","import { TGetUnrenderedAudioWorkletNodesFactory } from '../types';\n\nexport const createGetUnrenderedAudioWorkletNodes: TGetUnrenderedAudioWorkletNodesFactory = (unrenderedAudioWorkletNodeStore) => {\n return (nativeContext) => {\n const unrenderedAudioWorkletNodes = unrenderedAudioWorkletNodeStore.get(nativeContext);\n\n if (unrenderedAudioWorkletNodes === undefined) {\n throw new Error('The context has no set of AudioWorkletNodes.');\n }\n\n return unrenderedAudioWorkletNodes;\n };\n};\n","import { TAddUnrenderedAudioWorkletNodeFactory } from '../types';\n\nexport const createAddUnrenderedAudioWorkletNode: TAddUnrenderedAudioWorkletNodeFactory = (getUnrenderedAudioWorkletNodes) => {\n return (nativeContext, audioWorkletNode) => {\n getUnrenderedAudioWorkletNodes(nativeContext).add(audioWorkletNode);\n };\n};\n","import { isNativeAudioNode } from '../guards/native-audio-node';\nimport { TConnectMultipleOutputsFactory } from '../types';\n\nexport const createConnectMultipleOutputs: TConnectMultipleOutputsFactory = (createIndexSizeError) => {\n return (outputAudioNodes, destination, output = 0, input = 0) => {\n const outputAudioNode = outputAudioNodes[output];\n\n if (outputAudioNode === undefined) {\n throw createIndexSizeError();\n }\n\n if (isNativeAudioNode(destination)) {\n return outputAudioNode.connect(destination, 0, input);\n }\n\n return outputAudioNode.connect(destination, 0);\n };\n};\n","import { TDeleteUnrenderedAudioWorkletNodeFactory } from '../types';\n\nexport const createDeleteUnrenderedAudioWorkletNode: TDeleteUnrenderedAudioWorkletNodeFactory = (getUnrenderedAudioWorkletNodes) => {\n return (nativeContext, audioWorkletNode) => {\n getUnrenderedAudioWorkletNodes(nativeContext).delete(audioWorkletNode);\n };\n};\n","import { TActiveInputConnection, TContext, TGetActiveAudioWorkletNodeInputsFactory, TNativeAudioWorkletNode } from '../types';\n\nexport const createGetActiveAudioWorkletNodeInputs: TGetActiveAudioWorkletNodeInputsFactory = (\n activeAudioWorkletNodeInputsStore,\n getValueForKey\n) => {\n return (nativeAudioWorkletNode: TNativeAudioWorkletNode) =>\n >[]>getValueForKey(activeAudioWorkletNodeInputsStore, nativeAudioWorkletNode);\n};\n","import { MOST_NEGATIVE_SINGLE_FLOAT, MOST_POSITIVE_SINGLE_FLOAT } from '../constants';\nimport { computeBufferSize } from '../helpers/compute-buffer-size';\nimport { copyFromChannel } from '../helpers/copy-from-channel';\nimport { copyToChannel } from '../helpers/copy-to-channel';\nimport { createAudioWorkletProcessor } from '../helpers/create-audio-worklet-processor';\nimport { createNestedArrays } from '../helpers/create-nested-arrays';\nimport { IAudioWorkletProcessor } from '../interfaces';\nimport { ReadOnlyMap } from '../read-only-map';\nimport {\n TNativeAudioNode,\n TNativeAudioParam,\n TNativeAudioWorkletNode,\n TNativeAudioWorkletNodeFakerFactoryFactory,\n TNativeChannelMergerNode,\n TNativeChannelSplitterNode,\n TNativeConstantSourceNode,\n TNativeGainNode\n} from '../types';\n\nexport const createNativeAudioWorkletNodeFakerFactory: TNativeAudioWorkletNodeFakerFactoryFactory = (\n connectMultipleOutputs,\n createIndexSizeError,\n createInvalidStateError,\n createNativeChannelMergerNode,\n createNativeChannelSplitterNode,\n createNativeConstantSourceNode,\n createNativeGainNode,\n createNativeScriptProcessorNode,\n createNotSupportedError,\n disconnectMultipleOutputs,\n exposeCurrentFrameAndCurrentTime,\n getActiveAudioWorkletNodeInputs,\n monitorConnections\n) => {\n return (nativeContext, baseLatency, processorConstructor, options) => {\n if (options.numberOfInputs === 0 && options.numberOfOutputs === 0) {\n throw createNotSupportedError();\n }\n\n const outputChannelCount = Array.isArray(options.outputChannelCount)\n ? options.outputChannelCount\n : Array.from(options.outputChannelCount);\n\n // @todo Check if any of the channelCount values is greater than the implementation's maximum number of channels.\n if (outputChannelCount.some((channelCount) => channelCount < 1)) {\n throw createNotSupportedError();\n }\n\n if (outputChannelCount.length !== options.numberOfOutputs) {\n throw createIndexSizeError();\n }\n\n // Bug #61: This is not part of the standard but required for the faker to work.\n if (options.channelCountMode !== 'explicit') {\n throw createNotSupportedError();\n }\n\n const numberOfInputChannels = options.channelCount * options.numberOfInputs;\n const numberOfOutputChannels = outputChannelCount.reduce((sum, value) => sum + value, 0);\n const numberOfParameters =\n processorConstructor.parameterDescriptors === undefined ? 0 : processorConstructor.parameterDescriptors.length;\n\n // Bug #61: This is not part of the standard but required for the faker to work.\n if (numberOfInputChannels + numberOfParameters > 6 || numberOfOutputChannels > 6) {\n throw createNotSupportedError();\n }\n\n const messageChannel = new MessageChannel();\n const gainNodes: TNativeGainNode[] = [];\n const inputChannelSplitterNodes: TNativeChannelSplitterNode[] = [];\n\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes.push(\n createNativeGainNode(nativeContext, {\n channelCount: options.channelCount,\n channelCountMode: options.channelCountMode,\n channelInterpretation: options.channelInterpretation,\n gain: 1\n })\n );\n inputChannelSplitterNodes.push(\n createNativeChannelSplitterNode(nativeContext, {\n channelCount: options.channelCount,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: options.channelCount\n })\n );\n }\n\n const constantSourceNodes: TNativeConstantSourceNode[] = [];\n\n if (processorConstructor.parameterDescriptors !== undefined) {\n for (const { defaultValue, maxValue, minValue, name } of processorConstructor.parameterDescriptors) {\n const constantSourceNode = createNativeConstantSourceNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset:\n options.parameterData[name] !== undefined\n ? options.parameterData[name]\n : defaultValue === undefined\n ? 0\n : defaultValue\n });\n\n Object.defineProperties(constantSourceNode.offset, {\n defaultValue: {\n get: () => (defaultValue === undefined ? 0 : defaultValue)\n },\n maxValue: {\n get: () => (maxValue === undefined ? MOST_POSITIVE_SINGLE_FLOAT : maxValue)\n },\n minValue: {\n get: () => (minValue === undefined ? MOST_NEGATIVE_SINGLE_FLOAT : minValue)\n }\n });\n\n constantSourceNodes.push(constantSourceNode);\n }\n }\n\n const inputChannelMergerNode = createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: Math.max(1, numberOfInputChannels + numberOfParameters)\n });\n const bufferSize = computeBufferSize(baseLatency, nativeContext.sampleRate);\n const scriptProcessorNode = createNativeScriptProcessorNode(\n nativeContext,\n bufferSize,\n numberOfInputChannels + numberOfParameters,\n // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output.\n Math.max(1, numberOfOutputChannels)\n );\n const outputChannelSplitterNode = createNativeChannelSplitterNode(nativeContext, {\n channelCount: Math.max(1, numberOfOutputChannels),\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n numberOfOutputs: Math.max(1, numberOfOutputChannels)\n });\n const outputChannelMergerNodes: TNativeChannelMergerNode[] = [];\n\n for (let i = 0; i < options.numberOfOutputs; i += 1) {\n outputChannelMergerNodes.push(\n createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: outputChannelCount[i]\n })\n );\n }\n\n for (let i = 0; i < options.numberOfInputs; i += 1) {\n gainNodes[i].connect(inputChannelSplitterNodes[i]);\n\n for (let j = 0; j < options.channelCount; j += 1) {\n inputChannelSplitterNodes[i].connect(inputChannelMergerNode, j, i * options.channelCount + j);\n }\n }\n\n const parameterMap = new ReadOnlyMap(\n processorConstructor.parameterDescriptors === undefined\n ? []\n : processorConstructor.parameterDescriptors.map(({ name }, index) => {\n const constantSourceNode = constantSourceNodes[index];\n\n constantSourceNode.connect(inputChannelMergerNode, 0, numberOfInputChannels + index);\n constantSourceNode.start(0);\n\n return <[string, TNativeAudioParam]>[name, constantSourceNode.offset];\n })\n );\n\n inputChannelMergerNode.connect(scriptProcessorNode);\n\n let channelInterpretation = options.channelInterpretation;\n let onprocessorerror: TNativeAudioWorkletNode['onprocessorerror'] = null;\n\n // Bug #87: Expose at least one output to make this node connectable.\n const outputAudioNodes = options.numberOfOutputs === 0 ? [scriptProcessorNode] : outputChannelMergerNodes;\n const nativeAudioWorkletNodeFaker = {\n get bufferSize(): number {\n return bufferSize;\n },\n get channelCount(): number {\n return options.channelCount;\n },\n set channelCount(_) {\n // Bug #61: This is not part of the standard but required for the faker to work.\n throw createInvalidStateError();\n },\n get channelCountMode(): TNativeAudioWorkletNode['channelCountMode'] {\n return options.channelCountMode;\n },\n set channelCountMode(_) {\n // Bug #61: This is not part of the standard but required for the faker to work.\n throw createInvalidStateError();\n },\n get channelInterpretation(): TNativeAudioWorkletNode['channelInterpretation'] {\n return channelInterpretation;\n },\n set channelInterpretation(value) {\n for (const gainNode of gainNodes) {\n gainNode.channelInterpretation = value;\n }\n\n channelInterpretation = value;\n },\n get context(): TNativeAudioWorkletNode['context'] {\n return scriptProcessorNode.context;\n },\n get inputs(): TNativeAudioNode[] {\n return gainNodes;\n },\n get numberOfInputs(): number {\n return options.numberOfInputs;\n },\n get numberOfOutputs(): number {\n return options.numberOfOutputs;\n },\n get onprocessorerror(): TNativeAudioWorkletNode['onprocessorerror'] {\n return onprocessorerror;\n },\n set onprocessorerror(value) {\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNodeFaker.removeEventListener('processorerror', onprocessorerror);\n }\n\n onprocessorerror = typeof value === 'function' ? value : null;\n\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNodeFaker.addEventListener('processorerror', onprocessorerror);\n }\n },\n get parameters(): TNativeAudioWorkletNode['parameters'] {\n return parameterMap;\n },\n get port(): TNativeAudioWorkletNode['port'] {\n return messageChannel.port2;\n },\n addEventListener(...args: any[]): void {\n return scriptProcessorNode.addEventListener(args[0], args[1], args[2]);\n },\n connect: connectMultipleOutputs.bind(null, outputAudioNodes),\n disconnect: disconnectMultipleOutputs.bind(null, outputAudioNodes),\n dispatchEvent(...args: any[]): boolean {\n return scriptProcessorNode.dispatchEvent(args[0]);\n },\n removeEventListener(...args: any[]): void {\n return scriptProcessorNode.removeEventListener(args[0], args[1], args[2]);\n }\n };\n\n const patchedEventListeners: Map> = new Map();\n\n messageChannel.port1.addEventListener = ((addEventListener) => {\n return (...args: [string, EventListenerOrEventListenerObject, (boolean | AddEventListenerOptions)?]): void => {\n if (args[0] === 'message') {\n const unpatchedEventListener =\n typeof args[1] === 'function'\n ? args[1]\n : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function'\n ? args[1].handleEvent\n : null;\n\n if (unpatchedEventListener !== null) {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n\n if (patchedEventListener !== undefined) {\n args[1] = patchedEventListener;\n } else {\n args[1] = (event: Event) => {\n exposeCurrentFrameAndCurrentTime(nativeContext.currentTime, nativeContext.sampleRate, () =>\n unpatchedEventListener(event)\n );\n };\n\n patchedEventListeners.set(unpatchedEventListener, args[1]);\n }\n }\n }\n\n return addEventListener.call(messageChannel.port1, args[0], args[1], args[2]);\n };\n })(messageChannel.port1.addEventListener);\n\n messageChannel.port1.removeEventListener = ((removeEventListener) => {\n return (...args: any[]): void => {\n if (args[0] === 'message') {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n\n if (patchedEventListener !== undefined) {\n patchedEventListeners.delete(args[1]);\n\n args[1] = patchedEventListener;\n }\n }\n\n return removeEventListener.call(messageChannel.port1, args[0], args[1], args[2]);\n };\n })(messageChannel.port1.removeEventListener);\n\n let onmessage: MessagePort['onmessage'] = null;\n\n Object.defineProperty(messageChannel.port1, 'onmessage', {\n get: () => onmessage,\n set: (value) => {\n if (typeof onmessage === 'function') {\n messageChannel.port1.removeEventListener('message', onmessage);\n }\n\n onmessage = typeof value === 'function' ? value : null;\n\n if (typeof onmessage === 'function') {\n messageChannel.port1.addEventListener('message', onmessage);\n messageChannel.port1.start();\n }\n }\n });\n\n processorConstructor.prototype.port = messageChannel.port1;\n\n let audioWorkletProcessor: null | IAudioWorkletProcessor = null;\n\n const audioWorkletProcessorPromise = createAudioWorkletProcessor(\n nativeContext,\n nativeAudioWorkletNodeFaker,\n processorConstructor,\n options\n );\n\n audioWorkletProcessorPromise.then((dWrkltPrcssr) => (audioWorkletProcessor = dWrkltPrcssr));\n\n const inputs = createNestedArrays(options.numberOfInputs, options.channelCount);\n const outputs = createNestedArrays(options.numberOfOutputs, outputChannelCount);\n const parameters: { [name: string]: Float32Array } =\n processorConstructor.parameterDescriptors === undefined\n ? []\n : processorConstructor.parameterDescriptors.reduce(\n (prmtrs, { name }) => ({ ...prmtrs, [name]: new Float32Array(128) }),\n {}\n );\n\n let isActive = true;\n\n const disconnectOutputsGraph = () => {\n if (options.numberOfOutputs > 0) {\n scriptProcessorNode.disconnect(outputChannelSplitterNode);\n }\n\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.disconnect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n };\n\n const activeInputIndexes = new Map();\n\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer, outputBuffer }: AudioProcessingEvent) => {\n if (audioWorkletProcessor !== null) {\n const activeInputs = getActiveAudioWorkletNodeInputs(nativeAudioWorkletNodeFaker);\n\n for (let i = 0; i < bufferSize; i += 128) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < options.channelCount; k += 1) {\n copyFromChannel(inputBuffer, inputs[j], k, k, i);\n }\n }\n\n if (processorConstructor.parameterDescriptors !== undefined) {\n processorConstructor.parameterDescriptors.forEach(({ name }, index) => {\n copyFromChannel(inputBuffer, parameters, name, numberOfInputChannels + index, i);\n });\n }\n\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n // The byteLength will be 0 when the ArrayBuffer was transferred.\n if (outputs[j][k].byteLength === 0) {\n outputs[j][k] = new Float32Array(128);\n }\n }\n }\n\n try {\n const potentiallyEmptyInputs = inputs.map((input, index) => {\n const activeInput = activeInputs[index];\n\n if (activeInput.size > 0) {\n activeInputIndexes.set(index, bufferSize / 128);\n\n return input;\n }\n\n const count = activeInputIndexes.get(index);\n\n if (count === undefined) {\n return [];\n }\n\n if (input.every((channelData) => channelData.every((sample) => sample === 0))) {\n if (count === 1) {\n activeInputIndexes.delete(index);\n } else {\n activeInputIndexes.set(index, count - 1);\n }\n }\n\n return input;\n });\n\n const activeSourceFlag = exposeCurrentFrameAndCurrentTime(\n nativeContext.currentTime + i / nativeContext.sampleRate,\n nativeContext.sampleRate,\n () => (audioWorkletProcessor).process(potentiallyEmptyInputs, outputs, parameters)\n );\n\n isActive = activeSourceFlag;\n\n for (let j = 0, outputChannelSplitterNodeOutput = 0; j < options.numberOfOutputs; j += 1) {\n for (let k = 0; k < outputChannelCount[j]; k += 1) {\n copyToChannel(outputBuffer, outputs[j], k, outputChannelSplitterNodeOutput + k, i);\n }\n\n outputChannelSplitterNodeOutput += outputChannelCount[j];\n }\n } catch (error) {\n isActive = false;\n\n nativeAudioWorkletNodeFaker.dispatchEvent(\n new ErrorEvent('processorerror', {\n colno: error.colno,\n filename: error.filename,\n lineno: error.lineno,\n message: error.message\n })\n );\n }\n\n if (!isActive) {\n for (let j = 0; j < options.numberOfInputs; j += 1) {\n gainNodes[j].disconnect(inputChannelSplitterNodes[j]);\n\n for (let k = 0; k < options.channelCount; k += 1) {\n inputChannelSplitterNodes[i].disconnect(inputChannelMergerNode, k, j * options.channelCount + k);\n }\n }\n\n if (processorConstructor.parameterDescriptors !== undefined) {\n const length = processorConstructor.parameterDescriptors.length;\n\n for (let j = 0; j < length; j += 1) {\n const constantSourceNode = constantSourceNodes[j];\n\n constantSourceNode.disconnect(inputChannelMergerNode, 0, numberOfInputChannels + j);\n constantSourceNode.stop();\n }\n }\n\n inputChannelMergerNode.disconnect(scriptProcessorNode);\n\n scriptProcessorNode.onaudioprocess = null; // tslint:disable-line:deprecation\n\n if (isConnected) {\n disconnectOutputsGraph();\n } else {\n disconnectFakeGraph();\n }\n\n break;\n }\n }\n }\n };\n\n let isConnected = false;\n\n // Bug #87: Only Firefox will fire an AudioProcessingEvent if there is no connected output.\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n\n const connectFakeGraph = () => scriptProcessorNode.connect(nativeGainNode).connect(nativeContext.destination);\n const disconnectFakeGraph = () => {\n scriptProcessorNode.disconnect(nativeGainNode);\n nativeGainNode.disconnect();\n };\n const whenConnected = () => {\n if (isActive) {\n disconnectFakeGraph();\n\n if (options.numberOfOutputs > 0) {\n scriptProcessorNode.connect(outputChannelSplitterNode);\n }\n\n for (let i = 0, outputChannelSplitterNodeOutput = 0; i < options.numberOfOutputs; i += 1) {\n const outputChannelMergerNode = outputChannelMergerNodes[i];\n\n for (let j = 0; j < outputChannelCount[i]; j += 1) {\n outputChannelSplitterNode.connect(outputChannelMergerNode, outputChannelSplitterNodeOutput + j, j);\n }\n\n outputChannelSplitterNodeOutput += outputChannelCount[i];\n }\n }\n\n isConnected = true;\n };\n const whenDisconnected = () => {\n if (isActive) {\n connectFakeGraph();\n disconnectOutputsGraph();\n }\n\n isConnected = false;\n };\n\n connectFakeGraph();\n\n return monitorConnections(nativeAudioWorkletNodeFaker, whenConnected, whenDisconnected);\n };\n};\n","import { NODE_TO_PROCESSOR_MAPS } from '../globals';\nimport { IAudioWorkletNodeOptions, IAudioWorkletProcessor, IAudioWorkletProcessorConstructor } from '../interfaces';\nimport { TNativeAudioWorkletNode, TNativeContext } from '../types';\nimport { createAudioWorkletProcessorPromise } from './create-audio-worklet-processor-promise';\n\nexport const createAudioWorkletProcessor = (\n nativeContext: TNativeContext,\n nativeAudioWorkletNode: TNativeAudioWorkletNode,\n processorConstructor: IAudioWorkletProcessorConstructor,\n audioWorkletNodeOptions: IAudioWorkletNodeOptions\n): Promise => {\n let nodeToProcessorMap = NODE_TO_PROCESSOR_MAPS.get(nativeContext);\n\n if (nodeToProcessorMap === undefined) {\n nodeToProcessorMap = new WeakMap();\n\n NODE_TO_PROCESSOR_MAPS.set(nativeContext, nodeToProcessorMap);\n }\n\n const audioWorkletProcessorPromise = createAudioWorkletProcessorPromise(processorConstructor, audioWorkletNodeOptions);\n\n nodeToProcessorMap.set(nativeAudioWorkletNode, audioWorkletProcessorPromise);\n\n return audioWorkletProcessorPromise;\n};\n","import { testClonabilityOfAudioWorkletNodeOptions } from '../helpers/test-clonability-of-audio-worklet-node-options';\nimport { TNativeAudioWorkletNode, TNativeAudioWorkletNodeFactoryFactory, TNativeAudioWorkletNodeOptions } from '../types';\n\nexport const createNativeAudioWorkletNodeFactory: TNativeAudioWorkletNodeFactoryFactory = (\n createInvalidStateError,\n createNativeAudioWorkletNodeFaker,\n createNativeGainNode,\n createNotSupportedError,\n monitorConnections\n) => {\n return (nativeContext, baseLatency, nativeAudioWorkletNodeConstructor, name, processorConstructor, options) => {\n if (nativeAudioWorkletNodeConstructor !== null) {\n try {\n const nativeAudioWorkletNode = new nativeAudioWorkletNodeConstructor(\n nativeContext,\n name,\n options\n );\n const patchedEventListeners: Map<\n EventListenerOrEventListenerObject,\n NonNullable\n > = new Map();\n\n let onprocessorerror: TNativeAudioWorkletNode['onprocessorerror'] = null;\n\n Object.defineProperties(nativeAudioWorkletNode, {\n /*\n * Bug #61: Overwriting the property accessors for channelCount and channelCountMode is necessary as long as some\n * browsers have no native implementation to achieve a consistent behavior.\n */\n channelCount: {\n get: () => options.channelCount,\n set: () => {\n throw createInvalidStateError();\n }\n },\n channelCountMode: {\n get: () => 'explicit',\n set: () => {\n throw createInvalidStateError();\n }\n },\n // Bug #156: Chrome and Edge do not yet fire an ErrorEvent.\n onprocessorerror: {\n get: () => onprocessorerror,\n set: (value) => {\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNode.removeEventListener('processorerror', onprocessorerror);\n }\n\n onprocessorerror = typeof value === 'function' ? value : null;\n\n if (typeof onprocessorerror === 'function') {\n nativeAudioWorkletNode.addEventListener('processorerror', onprocessorerror);\n }\n }\n }\n });\n\n nativeAudioWorkletNode.addEventListener = ((addEventListener) => {\n return (...args: [string, EventListenerOrEventListenerObject, (boolean | AddEventListenerOptions)?]): void => {\n if (args[0] === 'processorerror') {\n const unpatchedEventListener =\n typeof args[1] === 'function'\n ? args[1]\n : typeof args[1] === 'object' && args[1] !== null && typeof args[1].handleEvent === 'function'\n ? args[1].handleEvent\n : null;\n\n if (unpatchedEventListener !== null) {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n\n if (patchedEventListener !== undefined) {\n args[1] = patchedEventListener;\n } else {\n args[1] = (event: Event) => {\n // Bug #178: Chrome and Edge do fire an event of type error.\n if (event.type === 'error') {\n Object.defineProperties(event, {\n type: { value: 'processorerror' }\n });\n\n unpatchedEventListener(event);\n } else {\n unpatchedEventListener(new ErrorEvent(args[0], { ...event }));\n }\n };\n\n patchedEventListeners.set(unpatchedEventListener, args[1]);\n }\n }\n }\n\n // Bug #178: Chrome and Edge do fire an event of type error.\n addEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]);\n\n return addEventListener.call(nativeAudioWorkletNode, ...args);\n };\n })(nativeAudioWorkletNode.addEventListener);\n\n nativeAudioWorkletNode.removeEventListener = ((removeEventListener) => {\n return (...args: any[]): void => {\n if (args[0] === 'processorerror') {\n const patchedEventListener = patchedEventListeners.get(args[1]);\n\n if (patchedEventListener !== undefined) {\n patchedEventListeners.delete(args[1]);\n\n args[1] = patchedEventListener;\n }\n }\n\n // Bug #178: Chrome and Edge do fire an event of type error.\n removeEventListener.call(nativeAudioWorkletNode, 'error', args[1], args[2]);\n\n return removeEventListener.call(nativeAudioWorkletNode, args[0], args[1], args[2]);\n };\n })(nativeAudioWorkletNode.removeEventListener);\n\n /*\n * Bug #86: Chrome and Edge do not invoke the process() function if the corresponding AudioWorkletNode is unconnected but\n * has an output.\n */\n if (options.numberOfOutputs !== 0) {\n const nativeGainNode = createNativeGainNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n gain: 0\n });\n\n nativeAudioWorkletNode.connect(nativeGainNode).connect(nativeContext.destination);\n\n const whenConnected = () => nativeGainNode.disconnect();\n const whenDisconnected = () => nativeGainNode.connect(nativeContext.destination);\n\n // @todo Disconnect the connection when the process() function of the AudioWorkletNode returns false.\n return monitorConnections(nativeAudioWorkletNode, whenConnected, whenDisconnected);\n }\n\n return nativeAudioWorkletNode;\n } catch (err) {\n // Bug #60: Chrome & Edge throw an InvalidStateError instead of a NotSupportedError.\n if (err.code === 11) {\n throw createNotSupportedError();\n }\n\n throw err;\n }\n }\n\n // Bug #61: Only Chrome & Edge have an implementation of the AudioWorkletNode yet.\n if (processorConstructor === undefined) {\n throw createNotSupportedError();\n }\n\n testClonabilityOfAudioWorkletNodeOptions(options);\n\n return createNativeAudioWorkletNodeFaker(nativeContext, baseLatency, processorConstructor, options);\n };\n};\n","import { IAudioWorkletNodeOptions } from '../interfaces';\n\nexport const testClonabilityOfAudioWorkletNodeOptions = (audioWorkletNodeOptions: IAudioWorkletNodeOptions): void => {\n const { port1 } = new MessageChannel();\n\n try {\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port1.postMessage(audioWorkletNodeOptions);\n } finally {\n port1.close();\n }\n};\n","import { TGetBackupOfflineAudioContextFactory } from '../types';\n\nexport const createGetBackupOfflineAudioContext: TGetBackupOfflineAudioContextFactory = (backupOfflineAudioContextStore) => {\n return (nativeContext) => {\n return backupOfflineAudioContextStore.get(nativeContext);\n };\n};\n","import { TSetActiveAudioWorkletNodeInputsFactory } from '../types';\n\nexport const createSetActiveAudioWorkletNodeInputs: TSetActiveAudioWorkletNodeInputsFactory = (activeAudioWorkletNodeInputsStore) => {\n return (nativeAudioWorkletNode, activeInputs) => {\n activeAudioWorkletNodeInputsStore.set(nativeAudioWorkletNode, activeInputs);\n };\n};\n","import { TSanitizeAudioWorkletNodeOptionsFunction } from '../types';\n\nexport const sanitizeAudioWorkletNodeOptions: TSanitizeAudioWorkletNodeOptionsFunction = (options) => {\n return {\n ...options,\n outputChannelCount:\n options.outputChannelCount !== undefined\n ? options.outputChannelCount\n : options.numberOfInputs === 1 && options.numberOfOutputs === 1\n ? /*\n * Bug #61: This should be the computedNumberOfChannels, but unfortunately that is almost impossible to fake. That's why\n * the channelCountMode is required to be 'explicit' as long as there is not a native implementation in every browser. That\n * makes sure the computedNumberOfChannels is equivilant to the channelCount which makes it much easier to compute.\n */\n [options.channelCount]\n : Array.from({ length: options.numberOfOutputs }, () => 1)\n };\n};\n","import { TTestAudioWorkletNodeOptionsClonabilityFunction } from '../types';\n\nexport const testAudioWorkletNodeOptionsClonability: TTestAudioWorkletNodeOptionsClonabilityFunction = (audioWorkletNodeOptions) => {\n const { port1, port2 } = new MessageChannel();\n\n try {\n // This will throw an error if the audioWorkletNodeOptions are not clonable.\n port1.postMessage(audioWorkletNodeOptions);\n } finally {\n port1.close();\n port2.close();\n }\n};\n","import { deactivateAudioGraph } from '../helpers/deactivate-audio-graph';\nimport { isValidLatencyHint } from '../helpers/is-valid-latency-hint';\nimport { IAudioContextOptions, IMinimalAudioContext } from '../interfaces';\nimport {\n TAudioContextState,\n TMinimalAudioContextConstructorFactory,\n TNativeAudioContext,\n TNativeGainNode,\n TNativeOscillatorNode\n} from '../types';\n\nexport const createMinimalAudioContextConstructor: TMinimalAudioContextConstructorFactory = (\n createInvalidStateError,\n createNotSupportedError,\n createUnknownError,\n minimalBaseAudioContextConstructor,\n nativeAudioContextConstructor\n) => {\n return class MinimalAudioContext extends minimalBaseAudioContextConstructor implements IMinimalAudioContext {\n private _baseLatency: number;\n\n private _nativeAudioContext: TNativeAudioContext;\n\n private _nativeGainNode: null | TNativeGainNode;\n\n private _nativeOscillatorNode: null | TNativeOscillatorNode;\n\n private _state: null | 'suspended';\n\n constructor(options: IAudioContextOptions = {}) {\n if (nativeAudioContextConstructor === null) {\n throw new Error('Missing the native AudioContext constructor.');\n }\n\n let nativeAudioContext: TNativeAudioContext;\n\n try {\n nativeAudioContext = new nativeAudioContextConstructor(options);\n } catch (err) {\n // Bug #192 Safari does throw a SyntaxError if the sampleRate is not supported.\n if (err.code === 12 && err.message === 'sampleRate is not in range') {\n throw createNotSupportedError();\n }\n\n throw err;\n }\n\n // Bug #131 Safari returns null when there are four other AudioContexts running already.\n if (nativeAudioContext === null) {\n throw createUnknownError();\n }\n\n // Bug #51 Only Chrome and Edge throw an error if the given latencyHint is invalid.\n if (!isValidLatencyHint(options.latencyHint)) {\n throw new TypeError(\n `The provided value '${options.latencyHint}' is not a valid enum value of type AudioContextLatencyCategory.`\n );\n }\n\n // Bug #150 Safari does not support setting the sampleRate.\n if (options.sampleRate !== undefined && nativeAudioContext.sampleRate !== options.sampleRate) {\n throw createNotSupportedError();\n }\n\n super(nativeAudioContext, 2);\n\n const { latencyHint } = options;\n const { sampleRate } = nativeAudioContext;\n\n // @todo The values for 'balanced', 'interactive' and 'playback' are just copied from Chrome's implementation.\n this._baseLatency =\n typeof nativeAudioContext.baseLatency === 'number'\n ? nativeAudioContext.baseLatency\n : latencyHint === 'balanced'\n ? 512 / sampleRate\n : latencyHint === 'interactive' || latencyHint === undefined\n ? 256 / sampleRate\n : latencyHint === 'playback'\n ? 1024 / sampleRate\n : /*\n * @todo The min (256) and max (16384) values are taken from the allowed bufferSize values of a\n * ScriptProcessorNode.\n */\n (Math.max(2, Math.min(128, Math.round((latencyHint * sampleRate) / 128))) * 128) / sampleRate;\n this._nativeAudioContext = nativeAudioContext;\n\n // Bug #188: Safari will set the context's state to 'interrupted' in case the user switches tabs.\n if (nativeAudioContextConstructor.name === 'webkitAudioContext') {\n this._nativeGainNode = nativeAudioContext.createGain();\n this._nativeOscillatorNode = nativeAudioContext.createOscillator();\n\n this._nativeGainNode.gain.value = 1e-37;\n\n this._nativeOscillatorNode.connect(this._nativeGainNode).connect(nativeAudioContext.destination);\n this._nativeOscillatorNode.start();\n } else {\n this._nativeGainNode = null;\n this._nativeOscillatorNode = null;\n }\n\n this._state = null;\n\n /*\n * Bug #34: Chrome and Edge pretend to be running right away, but fire an onstatechange event when the state actually changes\n * to 'running'.\n */\n if (nativeAudioContext.state === 'running') {\n this._state = 'suspended';\n\n const revokeState = () => {\n if (this._state === 'suspended') {\n this._state = null;\n }\n\n nativeAudioContext.removeEventListener('statechange', revokeState);\n };\n\n nativeAudioContext.addEventListener('statechange', revokeState);\n }\n }\n\n get baseLatency(): number {\n return this._baseLatency;\n }\n\n get state(): TAudioContextState {\n return this._state !== null ? this._state : this._nativeAudioContext.state;\n }\n\n public close(): Promise {\n // Bug #35: Firefox does not throw an error if the AudioContext was closed before.\n if (this.state === 'closed') {\n return this._nativeAudioContext.close().then(() => {\n throw createInvalidStateError();\n });\n }\n\n // Bug #34: If the state was set to suspended before it should be revoked now.\n if (this._state === 'suspended') {\n this._state = null;\n }\n\n return this._nativeAudioContext.close().then(() => {\n if (this._nativeGainNode !== null && this._nativeOscillatorNode !== null) {\n this._nativeOscillatorNode.stop();\n\n this._nativeGainNode.disconnect();\n this._nativeOscillatorNode.disconnect();\n }\n\n deactivateAudioGraph(this);\n });\n }\n\n public resume(): Promise {\n if (this._state === 'suspended') {\n return new Promise((resolve, reject) => {\n const resolvePromise = () => {\n this._nativeAudioContext.removeEventListener('statechange', resolvePromise);\n\n if (this._nativeAudioContext.state === 'running') {\n resolve();\n } else {\n this.resume().then(resolve, reject);\n }\n };\n\n this._nativeAudioContext.addEventListener('statechange', resolvePromise);\n });\n }\n\n return this._nativeAudioContext.resume().catch((err) => {\n // Bug #55: Chrome and Edge do throw an InvalidAccessError instead of an InvalidStateError.\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined || err.code === 15) {\n throw createInvalidStateError();\n }\n\n throw err;\n });\n }\n\n public suspend(): Promise {\n return this._nativeAudioContext.suspend().catch((err) => {\n // Bug #56: Safari invokes the catch handler but without an error.\n if (err === undefined) {\n throw createInvalidStateError();\n }\n\n throw err;\n });\n }\n };\n};\n","import { TCreateNativeOfflineAudioContextFactory } from '../types';\n\nexport const createCreateNativeOfflineAudioContext: TCreateNativeOfflineAudioContextFactory = (\n createNotSupportedError,\n nativeOfflineAudioContextConstructor\n) => {\n return (numberOfChannels, length, sampleRate) => {\n if (nativeOfflineAudioContextConstructor === null) {\n throw new Error('Missing the native OfflineAudioContext constructor.');\n }\n\n try {\n return new nativeOfflineAudioContextConstructor(numberOfChannels, length, sampleRate);\n } catch (err) {\n // Bug #143, #144 & #146: Safari throws a SyntaxError when numberOfChannels, length or sampleRate are invalid.\n if (err.name === 'SyntaxError') {\n throw createNotSupportedError();\n }\n\n throw err;\n }\n };\n};\n","import { wrapAudioBufferGetChannelDataMethod } from '../helpers/wrap-audio-buffer-get-channel-data-method';\nimport { TStartRenderingFactory } from '../types';\n\nexport const createStartRendering: TStartRenderingFactory = (\n audioBufferStore,\n cacheTestResult,\n getAudioNodeRenderer,\n getUnrenderedAudioWorkletNodes,\n renderNativeOfflineAudioContext,\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport,\n wrapAudioBufferCopyChannelMethods,\n wrapAudioBufferCopyChannelMethodsOutOfBounds\n) => {\n return (destination, nativeOfflineAudioContext) =>\n getAudioNodeRenderer(destination)\n .render(destination, nativeOfflineAudioContext)\n /*\n * Bug #86 & #87: Invoking the renderer of an AudioWorkletNode might be necessary if it has no direct or indirect connection to the\n * destination.\n */\n .then(() =>\n Promise.all(\n Array.from(getUnrenderedAudioWorkletNodes(nativeOfflineAudioContext)).map((audioWorkletNode) =>\n getAudioNodeRenderer(audioWorkletNode).render(audioWorkletNode, nativeOfflineAudioContext)\n )\n )\n )\n .then(() => renderNativeOfflineAudioContext(nativeOfflineAudioContext))\n .then((audioBuffer) => {\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n // Bug #100: Safari does throw a wrong error when calling getChannelData() with an out-of-bounds value.\n if (typeof audioBuffer.copyFromChannel !== 'function') {\n wrapAudioBufferCopyChannelMethods(audioBuffer);\n wrapAudioBufferGetChannelDataMethod(audioBuffer);\n // Bug #157: Firefox does not allow the bufferOffset to be out-of-bounds.\n } else if (\n !cacheTestResult(testAudioBufferCopyChannelMethodsOutOfBoundsSupport, () =>\n testAudioBufferCopyChannelMethodsOutOfBoundsSupport(audioBuffer)\n )\n ) {\n wrapAudioBufferCopyChannelMethodsOutOfBounds(audioBuffer);\n }\n\n audioBufferStore.add(audioBuffer);\n\n return audioBuffer;\n });\n};\n","import { IAudioContext, IMinimalAudioContext } from '../interfaces';\nimport { TIsAnyAudioContextFactory, TNativeAudioContext } from '../types';\n\nexport const createIsAnyAudioContext: TIsAnyAudioContextFactory = (contextStore, isNativeAudioContext) => {\n return (anything): anything is IAudioContext | IMinimalAudioContext | TNativeAudioContext => {\n const nativeContext = contextStore.get(anything);\n\n return isNativeAudioContext(nativeContext) || isNativeAudioContext(anything);\n };\n};\n","import { IAudioNode } from '../interfaces';\nimport { TIsAnyAudioNodeFactory, TNativeAudioNode } from '../types';\n\nexport const createIsAnyAudioNode: TIsAnyAudioNodeFactory = (audioNodeStore, isNativeAudioNode) => {\n return (anything): anything is IAudioNode | TNativeAudioNode => audioNodeStore.has(anything) || isNativeAudioNode(anything);\n};\n","import { IAudioParam } from '../interfaces';\nimport { TIsAnyAudioParamFactory, TNativeAudioParam } from '../types';\n\nexport const createIsAnyAudioParam: TIsAnyAudioParamFactory = (audioParamStore, isNativeAudioParam) => {\n return (anything): anything is IAudioParam | TNativeAudioParam => audioParamStore.has(anything) || isNativeAudioParam(anything);\n};\n","import { IMinimalOfflineAudioContext, IOfflineAudioContext } from '../interfaces';\nimport { TIsAnyOfflineAudioContextFactory, TNativeOfflineAudioContext } from '../types';\n\nexport const createIsAnyOfflineAudioContext: TIsAnyOfflineAudioContextFactory = (contextStore, isNativeOfflineAudioContext) => {\n return (anything): anything is IMinimalOfflineAudioContext | IOfflineAudioContext | TNativeOfflineAudioContext => {\n const nativeContext = contextStore.get(anything);\n\n return isNativeOfflineAudioContext(nativeContext) || isNativeOfflineAudioContext(anything);\n };\n};\n","/**\n * Assert that the statement is true, otherwise invoke the error.\n * @param statement\n * @param error The message which is passed into an Error\n */\nexport function assert(statement: boolean, error: string): void {\n\tif (!statement) {\n\t\tthrow new Error(error);\n\t}\n}\n\n/**\n * Make sure that the given value is within the range\n */\nexport function assertRange(value: number, gte: number, lte = Infinity): void {\n\tif (!(gte <= value && value <= lte)) {\n\t\tthrow new RangeError(`Value must be within [${gte}, ${lte}], got: ${value}`);\n\t}\n}\n\n/**\n * Make sure that the given value is within the range\n */\nexport function assertContextRunning(context: import(\"../context/BaseContext\").BaseContext): void {\n\t// add a warning if the context is not started\n\tif (!context.isOffline && context.state !== \"running\") {\n\t\twarn(\"The AudioContext is \\\"suspended\\\". Invoke Tone.start() from a user action to start the audio.\");\n\t}\n}\n\n/**\n * A basic logging interface\n */\ninterface Logger {\n\tlog: (args?: any[]) => void;\n\twarn: (args?: any[]) => void;\n}\n\n/**\n * The default logger is the console\n */\nlet defaultLogger: Logger = console;\n\n/**\n * Set the logging interface\n */\nexport function setLogger(logger: Logger): void {\n\tdefaultLogger = logger;\n}\n\n/**\n * Log anything\n */\nexport function log(...args: any[]): void {\n\tdefaultLogger.log(...args);\n}\n\n/**\n * Warn anything\n */\nexport function warn(...args: any[]): void {\n\tdefaultLogger.warn(...args);\n}\n","import { Note } from \"../type/Units\";\n\n/**\n * Test if the arg is undefined\n */\nexport function isUndef(arg: any): arg is undefined {\n\treturn typeof arg === \"undefined\";\n}\n\n/**\n * Test if the arg is not undefined\n */\nexport function isDefined(arg: T | undefined): arg is T {\n\treturn !isUndef(arg);\n}\n\n/**\n * Test if the arg is a function\n */\nexport function isFunction(arg: any): arg is (a: any) => any {\n\treturn typeof arg === \"function\";\n}\n\n/**\n * Test if the argument is a number.\n */\nexport function isNumber(arg: any): arg is number {\n\treturn (typeof arg === \"number\");\n}\n\n/**\n * Test if the given argument is an object literal (i.e. `{}`);\n */\nexport function isObject(arg: any): arg is object {\n\treturn (Object.prototype.toString.call(arg) === \"[object Object]\" && arg.constructor === Object);\n}\n\n/**\n * Test if the argument is a boolean.\n */\nexport function isBoolean(arg: any): arg is boolean {\n\treturn (typeof arg === \"boolean\");\n}\n\n/**\n * Test if the argument is an Array\n */\nexport function isArray(arg: any): arg is any[] {\n\treturn (Array.isArray(arg));\n}\n\n/**\n * Test if the argument is a string.\n */\nexport function isString(arg: any): arg is string {\n\treturn (typeof arg === \"string\");\n}\n\n/**\n * Test if the argument is in the form of a note in scientific pitch notation.\n * e.g. \"C4\"\n */\nexport function isNote(arg: any): arg is Note {\n\treturn isString(arg) && /^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i.test(arg);\n}\n","import {\n\tAudioContext as stdAudioContext,\n\tAudioWorkletNode as stdAudioWorkletNode,\n\tOfflineAudioContext as stdOfflineAudioContext\n} from \"standardized-audio-context\";\nimport { assert } from \"../util/Debug\";\nimport { isDefined } from \"../util/TypeCheck\";\n\n/**\n * Create a new AudioContext\n */\nexport function createAudioContext(options?: AudioContextOptions): AudioContext {\n\treturn new stdAudioContext(options) as unknown as AudioContext;\n}\n\n/**\n * Create a new OfflineAudioContext\n */\nexport function createOfflineAudioContext(channels: number, length: number, sampleRate: number): OfflineAudioContext {\n\treturn new stdOfflineAudioContext(channels, length, sampleRate) as unknown as OfflineAudioContext;\n}\n\n/**\n * Either the online or offline audio context\n */\nexport type AnyAudioContext = AudioContext | OfflineAudioContext;\n\n/**\n * Interface for things that Tone.js adds to the window\n */\ninterface ToneWindow extends Window {\n\tTONE_SILENCE_LOGGING?: boolean;\n\tTONE_DEBUG_CLASS?: string;\n}\n\n/**\n * A reference to the window object\n * @hidden\n */\nexport const theWindow: ToneWindow | null = typeof self === \"object\" ? self : null;\n\n/**\n * If the browser has a window object which has an AudioContext\n * @hidden\n */\nexport const hasAudioContext = theWindow &&\n\t(theWindow.hasOwnProperty(\"AudioContext\") || theWindow.hasOwnProperty(\"webkitAudioContext\"));\n\nexport function createAudioWorkletNode(context: AnyAudioContext, name: string, options?: Partial): AudioWorkletNode {\n\tassert(isDefined(stdAudioWorkletNode), \"This node only works in a secure context (https or localhost)\");\n\t// @ts-ignore\n\treturn new stdAudioWorkletNode(context, name, options);\n}\n\n/**\n * This promise resolves to a boolean which indicates if the \n * functionality is supported within the currently used browse. \n * Taken from [standardized-audio-context](https://github.com/chrisguttandin/standardized-audio-context#issupported)\n */\nexport { isSupported as supported } from \"standardized-audio-context\";\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(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}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { Seconds } from \"../type/Units\";\n\nexport type TickerClockSource = \"worker\" | \"timeout\" | \"offline\";\n\n/**\n * A class which provides a reliable callback using either\n * a Web Worker, or if that isn't supported, falls back to setTimeout.\n */\nexport class Ticker {\n\n\t/**\n\t * Either \"worker\" or \"timeout\" or \"offline\"\n\t */\n\tprivate _type: TickerClockSource;\n\n\t/**\n\t * The update interval of the worker\n\t */\n\tprivate _updateInterval: Seconds;\n\n\t/**\n\t * The callback to invoke at regular intervals\n\t */\n\tprivate _callback: () => void;\n\n\t/**\n\t * track the callback interval\n\t */\n\tprivate _timeout!: ReturnType;\n\n\t/**\n\t * private reference to the worker\n\t */\n\tprivate _worker!: Worker;\n\n\tconstructor(callback: () => void, type: TickerClockSource, updateInterval: Seconds) {\n\n\t\tthis._callback = callback;\n\t\tthis._type = type;\n\t\tthis._updateInterval = updateInterval;\n\n\t\t// create the clock source for the first time\n\t\tthis._createClock();\n\t}\n\n\t/**\n\t * Generate a web worker\n\t */\n\tprivate _createWorker(): void {\n\n\t\tconst blob = new Blob([\n\t\t\t/* javascript */`\n\t\t\t// the initial timeout time\n\t\t\tlet timeoutTime = ${(this._updateInterval * 1000).toFixed(1)};\n\t\t\t// onmessage callback\n\t\t\tself.onmessage = function(msg){\n\t\t\t\ttimeoutTime = parseInt(msg.data);\n\t\t\t};\n\t\t\t// the tick function which posts a message\n\t\t\t// and schedules a new tick\n\t\t\tfunction tick(){\n\t\t\t\tsetTimeout(tick, timeoutTime);\n\t\t\t\tself.postMessage('tick');\n\t\t\t}\n\t\t\t// call tick initially\n\t\t\ttick();\n\t\t\t`\n\t\t], { type: \"text/javascript\" });\n\t\tconst blobUrl = URL.createObjectURL(blob);\n\t\tconst worker = new Worker(blobUrl);\n\n\t\tworker.onmessage = this._callback.bind(this);\n\n\t\tthis._worker = worker;\n\t}\n\n\t/**\n\t * Create a timeout loop\n\t */\n\tprivate _createTimeout(): void {\n\t\tthis._timeout = setTimeout(() => {\n\t\t\tthis._createTimeout();\n\t\t\tthis._callback();\n\t\t}, this._updateInterval * 1000);\n\t}\n\n\t/**\n\t * Create the clock source.\n\t */\n\tprivate _createClock(): void {\n\t\tif (this._type === \"worker\") {\n\t\t\ttry {\n\t\t\t\tthis._createWorker();\n\t\t\t} catch (e) {\n\t\t\t\t// workers not supported, fallback to timeout\n\t\t\t\tthis._type = \"timeout\";\n\t\t\t\tthis._createClock();\n\t\t\t}\n\t\t} else if (this._type === \"timeout\") {\n\t\t\tthis._createTimeout();\n\t\t}\n\t}\n\n\t/**\n\t * Clean up the current clock source\n\t */\n\tprivate _disposeClock(): void {\n\t\tif (this._timeout) {\n\t\t\tclearTimeout(this._timeout);\n\t\t\tthis._timeout = 0;\n\t\t}\n\t\tif (this._worker) {\n\t\t\tthis._worker.terminate();\n\t\t\tthis._worker.onmessage = null;\n\t\t}\n\t}\n\n\t/**\n\t * The rate in seconds the ticker will update\n\t */\n\tget updateInterval(): Seconds {\n\t\treturn this._updateInterval;\n\t}\n\tset updateInterval(interval: Seconds) {\n\t\tthis._updateInterval = Math.max(interval, 128 / 44100);\n\t\tif (this._type === \"worker\") {\n\t\t\tthis._worker.postMessage(Math.max(interval * 1000, 1));\n\t\t}\n\t}\n\n\t/**\n\t * The type of the ticker, either a worker or a timeout\n\t */\n\tget type(): TickerClockSource {\n\t\treturn this._type;\n\t}\n\tset type(type: TickerClockSource) {\n\t\tthis._disposeClock();\n\t\tthis._type = type;\n\t\tthis._createClock();\n\t}\n\n\t/**\n\t * Clean up\n\t */\n\tdispose(): void {\n\t\tthis._disposeClock();\n\t}\n}\n","import {\n\tisAnyAudioContext, isAnyAudioNode,\n\tisAnyAudioParam, isAnyOfflineAudioContext,\n} from \"standardized-audio-context\";\n\n/**\n * Test if the given value is an instanceof AudioParam\n */\nexport function isAudioParam(arg: any): arg is AudioParam {\n\treturn isAnyAudioParam(arg);\n}\n\n/**\n * Test if the given value is an instanceof AudioNode\n */\nexport function isAudioNode(arg: any): arg is AudioNode {\n\treturn isAnyAudioNode(arg);\n}\n\n/**\n * Test if the arg is instanceof an OfflineAudioContext\n */\nexport function isOfflineAudioContext(arg: any): arg is OfflineAudioContext {\n\treturn isAnyOfflineAudioContext(arg);\n}\n\n/**\n * Test if the arg is an instanceof AudioContext\n */\nexport function isAudioContext(arg: any): arg is AudioContext {\n\treturn isAnyAudioContext(arg);\n}\n\n/**\n * Test if the arg is instanceof an AudioBuffer\n */\nexport function isAudioBuffer(arg: any): arg is AudioBuffer {\n\treturn arg instanceof AudioBuffer;\n}\n","import { isAudioBuffer, isAudioNode, isAudioParam } from \"./AdvancedTypeCheck\";\nimport { isDefined, isObject, isUndef } from \"./TypeCheck\";\n\ntype BaseToneOptions = import(\"../Tone\").BaseToneOptions;\n\n/**\n * Some objects should not be merged\n */\nfunction noCopy(key: string, arg: any): boolean {\n\treturn key === \"value\" || isAudioParam(arg) || isAudioNode(arg) || isAudioBuffer(arg);\n}\n\n/**\n * Recursively merge an object\n * @param target the object to merge into\n * @param sources the source objects to merge\n */\nexport function deepMerge(target: T): T;\nexport function deepMerge(target: T, source1: U): T & U;\nexport function deepMerge(target: T, source1: U, source2: V): T & U & V;\nexport function deepMerge(target: T, source1: U, source2: V, source3: W): T & U & V & W;\nexport function deepMerge(target: any, ...sources: any[]): any {\n\tif (!sources.length) {\n\t\treturn target; \n\t}\n\tconst source = sources.shift();\n\n\tif (isObject(target) && isObject(source)) {\n\t\tfor (const key in source) {\n\t\t\tif (noCopy(key, source[key])) {\n\t\t\t\ttarget[key] = source[key];\n\t\t\t} else if (isObject(source[key])) {\n\t\t\t\tif (!target[key]) {\n\t\t\t\t\tObject.assign(target, { [key]: {} }); \n\t\t\t\t}\n\t\t\t\tdeepMerge(target[key], source[key] as any);\n\t\t\t} else {\n\t\t\t\tObject.assign(target, { [key]: source[key] as any });\n\t\t\t}\n\t\t}\n\t}\n\t// @ts-ignore\n\treturn deepMerge(target, ...sources);\n}\n\n/**\n * Returns true if the two arrays have the same value for each of the elements\n */\nexport function deepEquals(arrayA: T[], arrayB: T[]): boolean {\n\treturn arrayA.length === arrayB.length && arrayA.every((element, index) => arrayB[index] === element);\n}\n\n/**\n * Convert an args array into an object.\n */\nexport function optionsFromArguments(\n\tdefaults: T,\n\targsArray: IArguments,\n\tkeys: Array = [],\n\tobjKey?: keyof T,\n): T {\n\tconst opts: Partial = {};\n\tconst args = Array.from(argsArray);\n\t// if the first argument is an object and has an object key\n\tif (isObject(args[0]) && objKey && !Reflect.has(args[0], objKey)) {\n\t\t// if it's not part of the defaults\n\t\tconst partOfDefaults = Object.keys(args[0]).some(key => Reflect.has(defaults, key));\n\t\tif (!partOfDefaults) {\n\t\t\t// merge that key\n\t\t\tdeepMerge(opts, { [objKey]: args[0] });\n\t\t\t// remove the obj key from the keys\n\t\t\tkeys.splice(keys.indexOf(objKey), 1);\n\t\t\t// shift the first argument off\n\t\t\targs.shift();\n\t\t}\n\t}\n\tif (args.length === 1 && isObject(args[0])) {\n\t\tdeepMerge(opts, args[0]);\n\t} else {\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tif (isDefined(args[i])) {\n\t\t\t\topts[keys[i]] = args[i];\n\t\t\t}\n\t\t}\n\t}\n\treturn deepMerge(defaults, opts);\n}\n\n/**\n * Return this instances default values by calling Constructor.getDefaults()\n */\nexport function getDefaultsFromInstance(instance: T): BaseToneOptions {\n\ttype ToneClass = {\n\t\tconstructor: ToneClass;\n\t\tgetDefaults: () => BaseToneOptions;\n\t} & T;\n\n\treturn (instance as ToneClass).constructor.getDefaults();\n}\n\n/**\n * Returns the fallback if the given object is undefined.\n * Take an array of arguments and return a formatted options object.\n */\nexport function defaultArg(given: T, fallback: T): T {\n\tif (isUndef(given)) {\n\t\treturn fallback;\n\t} else {\n\t\treturn given;\n\t}\n}\n\n/**\n * Remove all of the properties belonging to omit from obj.\n */\nexport function omitFromObject(obj: T, omit: O): Omit {\n\tomit.forEach(prop => {\n\t\tif (Reflect.has(obj, prop)) {\n\t\t\tdelete obj[prop];\n\t\t}\n\t});\n\treturn obj;\n}\n","/**\n * Tone.js\n * @author Yotam Mann\n * @license http://opensource.org/licenses/MIT MIT License\n * @copyright 2014-2019 Yotam Mann\n */\nimport { version } from \"../version\";\nimport { theWindow } from \"./context/AudioContext\";\nimport { log } from \"./util/Debug\";\n\n//-------------------------------------\n// \tTONE\n//-------------------------------------\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface BaseToneOptions { }\n\n/**\n * @class Tone is the base class of all other classes.\n * @category Core\n * @constructor\n */\nexport abstract class Tone {\n\n\t/**\n\t * The version number semver\n\t */\n\tstatic version: string = version;\n\n\t/**\n\t * The name of the class\n\t */\n\tprotected abstract name: string;\n\n\t/**\n\t * Returns all of the default options belonging to the class.\n\t */\n\tstatic getDefaults(): BaseToneOptions {\n\t\treturn {};\n\t}\n\n\t//-------------------------------------\n\t// \tDEBUGGING\n\t//-------------------------------------\n\n\t/**\n\t * Set this debug flag to log all events that happen in this class.\n\t */\n\tdebug = false;\n\n\t/**\n\t * Prints the outputs to the console log for debugging purposes.\n\t * Prints the contents only if either the object has a property\n\t * called `debug` set to true, or a variable called TONE_DEBUG_CLASS\n\t * is set to the name of the class.\n\t * @example\n\t * const osc = new Tone.Oscillator();\n\t * // prints all logs originating from this oscillator\n\t * osc.debug = true;\n\t * // calls to start/stop will print in the console\n\t * osc.start();\n\t */\n\tprotected log(...args: any[]): void {\n\t\t// if the object is either set to debug = true\n\t\t// or if there is a string on the Tone.global.with the class name\n\t\tif (this.debug || (theWindow && this.toString() === theWindow.TONE_DEBUG_CLASS)) {\n\t\t\tlog(this, ...args);\n\t\t}\n\t}\n\n\t//-------------------------------------\n\t// \tDISPOSING\n\t//-------------------------------------\n\n\t/**\n\t * Indicates if the instance was disposed\n\t */\n\tprivate _wasDisposed = false;\n\n\t/**\n\t * disconnect and dispose.\n\t */\n\tdispose(): this {\n\t\tthis._wasDisposed = true;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Indicates if the instance was disposed. 'Disposing' an\n\t * instance means that all of the Web Audio nodes that were\n\t * created for the instance are disconnected and freed for garbage collection.\n\t */\n\tget disposed(): boolean {\n\t\treturn this._wasDisposed;\n\t}\n\n\t/**\n\t * Convert the class to a string\n\t * @example\n\t * const osc = new Tone.Oscillator();\n\t * console.log(osc.toString());\n\t */\n\ttoString(): string {\n\t\treturn this.name;\n\t}\n}\n","/**\n * The threshold for correctness for operators. Less than one sample even \n * at very high sampling rates (e.g. `1e-6 < 1 / 192000`).\n */\nconst EPSILON = 1e-6;\n\n/**\n * Test if A is greater than B\n */\nexport function GT(a: number, b: number): boolean {\n\treturn a > b + EPSILON;\n}\n\n/**\n * Test if A is greater than or equal to B\n */\nexport function GTE(a: number, b: number): boolean {\n\treturn GT(a, b) || EQ(a, b);\n}\n\n/**\n * Test if A is less than B\n */\nexport function LT(a: number, b: number): boolean {\n\treturn a + EPSILON < b;\n}\n\n/**\n * Test if A is less than B\n */\nexport function EQ(a: number, b: number): boolean {\n\treturn Math.abs(a - b) < EPSILON;\n}\n\n/**\n * Clamp the value within the given range\n */\nexport function clamp(value: number, min: number, max: number): number {\n\treturn Math.max(Math.min(value, max), min);\n}\n","import { Tone } from \"../Tone\";\nimport { Seconds } from \"../type/Units\";\nimport { optionsFromArguments } from \"./Defaults\";\nimport { assert } from \"./Debug\";\nimport { EQ, GT, GTE, LT } from \"./Math\";\n\ntype TimelineSearchParam = \"ticks\" | \"time\";\n\n/**\n * The options object for Timeline\n */\ninterface TimelineOptions {\n\tmemory: number;\n\tincreasing: boolean;\n}\n\n/**\n * An event must have a time number\n */\nexport interface TimelineEvent {\n\ttime: number;\n}\n\n/**\n * A Timeline class for scheduling and maintaining state\n * along a timeline. All events must have a \"time\" property.\n * Internally, events are stored in time order for fast\n * retrieval.\n */\nexport class Timeline extends Tone {\n\n\treadonly name: string = \"Timeline\";\n\n\t/**\n\t * The memory of the timeline, i.e.\n\t * how many events in the past it will retain\n\t */\n\tmemory: number;\n\n\t/**\n\t * The array of scheduled timeline events\n\t */\n\tprotected _timeline: GenericEvent[] = [];\n\n\t/**\n\t * If the time value must always be greater than or equal to the last \n\t * element on the list. \n\t */\n\tincreasing: boolean;\n\n\t/**\n\t * @param memory The number of previous events that are retained.\n\t */\n\tconstructor(memory?: number);\n\tconstructor(options?: Partial);\n\tconstructor() {\n\t\tsuper();\n\t\tconst options = optionsFromArguments(Timeline.getDefaults(), arguments, [\"memory\"]);\n\n\t\tthis.memory = options.memory;\n\t\tthis.increasing = options.increasing;\n\t}\n\n\tstatic getDefaults(): TimelineOptions {\n\t\treturn {\n\t\t\tmemory: Infinity,\n\t\t\tincreasing: false,\n\t\t};\n\t}\n\n\t/**\n\t * The number of items in the timeline.\n\t */\n\tget length(): number {\n\t\treturn this._timeline.length;\n\t}\n\n\t/**\n\t * Insert an event object onto the timeline. Events must have a \"time\" attribute.\n\t * @param event The event object to insert into the timeline.\n\t */\n\tadd(event: GenericEvent): this {\n\t\t// the event needs to have a time attribute\n\t\tassert(Reflect.has(event, \"time\"), \"Timeline: events must have a time attribute\");\n\t\tevent.time = event.time.valueOf();\n\t\tif (this.increasing && this.length) {\n\t\t\tconst lastValue = this._timeline[this.length - 1] as GenericEvent;\n\t\t\tassert(GTE(event.time, lastValue.time), \"The time must be greater than or equal to the last scheduled time\");\n\t\t\tthis._timeline.push(event);\n\t\t} else {\n\t\t\tconst index = this._search(event.time);\n\t\t\tthis._timeline.splice(index + 1, 0, event);\n\t\t}\n\t\t// if the length is more than the memory, remove the previous ones\n\t\tif (this.length > this.memory) {\n\t\t\tconst diff = this.length - this.memory;\n\t\t\tthis._timeline.splice(0, diff);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Remove an event from the timeline.\n\t * @param {Object} event The event object to remove from the list.\n\t * @returns {Timeline} this\n\t */\n\tremove(event: GenericEvent): this {\n\t\tconst index = this._timeline.indexOf(event);\n\t\tif (index !== -1) {\n\t\t\tthis._timeline.splice(index, 1);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get the nearest event whose time is less than or equal to the given time.\n\t * @param time The time to query.\n\t */\n\tget(time: number, param: TimelineSearchParam = \"time\"): GenericEvent | null {\n\t\tconst index = this._search(time, param);\n\t\tif (index !== -1) {\n\t\t\treturn this._timeline[index];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Return the first event in the timeline without removing it\n\t * @returns {Object} The first event object\n\t */\n\tpeek(): GenericEvent | undefined {\n\t\treturn this._timeline[0];\n\t}\n\n\t/**\n\t * Return the first event in the timeline and remove it\n\t */\n\tshift(): GenericEvent | undefined {\n\t\treturn this._timeline.shift();\n\t}\n\n\t/**\n\t * Get the event which is scheduled after the given time.\n\t * @param time The time to query.\n\t */\n\tgetAfter(time: number, param: TimelineSearchParam = \"time\"): GenericEvent | null {\n\t\tconst index = this._search(time, param);\n\t\tif (index + 1 < this._timeline.length) {\n\t\t\treturn this._timeline[index + 1];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Get the event before the event at the given time.\n\t * @param time The time to query.\n\t */\n\tgetBefore(time: number): GenericEvent | null {\n\t\tconst len = this._timeline.length;\n\t\t// if it's after the last item, return the last item\n\t\tif (len > 0 && this._timeline[len - 1].time < time) {\n\t\t\treturn this._timeline[len - 1];\n\t\t}\n\t\tconst index = this._search(time);\n\t\tif (index - 1 >= 0) {\n\t\t\treturn this._timeline[index - 1];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Cancel events at and after the given time\n\t * @param after The time to query.\n\t */\n\tcancel(after: number): this {\n\t\tif (this._timeline.length > 1) {\n\t\t\tlet index = this._search(after);\n\t\t\tif (index >= 0) {\n\t\t\t\tif (EQ(this._timeline[index].time, after)) {\n\t\t\t\t\t// get the first item with that time\n\t\t\t\t\tfor (let i = index; i >= 0; i--) {\n\t\t\t\t\t\tif (EQ(this._timeline[i].time, after)) {\n\t\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis._timeline = this._timeline.slice(0, index);\n\t\t\t\t} else {\n\t\t\t\t\tthis._timeline = this._timeline.slice(0, index + 1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._timeline = [];\n\t\t\t}\n\t\t} else if (this._timeline.length === 1) {\n\t\t\t// the first item's time\n\t\t\tif (GTE(this._timeline[0].time, after)) {\n\t\t\t\tthis._timeline = [];\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Cancel events before or equal to the given time.\n\t * @param time The time to cancel before.\n\t */\n\tcancelBefore(time: number): this {\n\t\tconst index = this._search(time);\n\t\tif (index >= 0) {\n\t\t\tthis._timeline = this._timeline.slice(index + 1);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Returns the previous event if there is one. null otherwise\n\t * @param event The event to find the previous one of\n\t * @return The event right before the given event\n\t */\n\tpreviousEvent(event: GenericEvent): GenericEvent | null {\n\t\tconst index = this._timeline.indexOf(event);\n\t\tif (index > 0) {\n\t\t\treturn this._timeline[index - 1];\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t/**\n\t * Does a binary search on the timeline array and returns the\n\t * nearest event index whose time is after or equal to the given time.\n\t * If a time is searched before the first index in the timeline, -1 is returned.\n\t * If the time is after the end, the index of the last item is returned.\n\t */\n\tprotected _search(time: number, param: TimelineSearchParam = \"time\"): number {\n\t\tif (this._timeline.length === 0) {\n\t\t\treturn -1;\n\t\t}\n\t\tlet beginning = 0;\n\t\tconst len = this._timeline.length;\n\t\tlet end = len;\n\t\tif (len > 0 && this._timeline[len - 1][param] <= time) {\n\t\t\treturn len - 1;\n\t\t}\n\t\twhile (beginning < end) {\n\t\t\t// calculate the midpoint for roughly equal partition\n\t\t\tlet midPoint = Math.floor(beginning + (end - beginning) / 2);\n\t\t\tconst event = this._timeline[midPoint];\n\t\t\tconst nextEvent = this._timeline[midPoint + 1];\n\t\t\tif (EQ(event[param], time)) {\n\t\t\t\t// choose the last one that has the same time\n\t\t\t\tfor (let i = midPoint; i < this._timeline.length; i++) {\n\t\t\t\t\tconst testEvent = this._timeline[i];\n\t\t\t\t\tif (EQ(testEvent[param], time)) {\n\t\t\t\t\t\tmidPoint = i;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn midPoint;\n\t\t\t} else if (LT(event[param], time) && GT(nextEvent[param], time)) {\n\t\t\t\treturn midPoint;\n\t\t\t} else if (GT(event[param], time)) {\n\t\t\t\t// search lower\n\t\t\t\tend = midPoint;\n\t\t\t} else {\n\t\t\t\t// search upper\n\t\t\t\tbeginning = midPoint + 1;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t}\n\n\t/**\n\t * Internal iterator. Applies extra safety checks for\n\t * removing items from the array.\n\t */\n\tprivate _iterate(\n\t\tcallback: (event: GenericEvent) => void,\n\t\tlowerBound = 0, upperBound = this._timeline.length - 1,\n\t): void {\n\t\tthis._timeline.slice(lowerBound, upperBound + 1).forEach(callback);\n\t}\n\n\t/**\n\t * Iterate over everything in the array\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEach(callback: (event: GenericEvent) => void): this {\n\t\tthis._iterate(callback);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array at or before the given time.\n\t * @param time The time to check if items are before\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachBefore(time: Seconds, callback: (event: GenericEvent) => void): this {\n\t\t// iterate over the items in reverse so that removing an item doesn't break things\n\t\tconst upperBound = this._search(time);\n\t\tif (upperBound !== -1) {\n\t\t\tthis._iterate(callback, 0, upperBound);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array after the given time.\n\t * @param time The time to check if items are before\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachAfter(time: Seconds, callback: (event: GenericEvent) => void): this {\n\t\t// iterate over the items in reverse so that removing an item doesn't break things\n\t\tconst lowerBound = this._search(time);\n\t\tthis._iterate(callback, lowerBound + 1);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array between the startTime and endTime.\n\t * The timerange is inclusive of the startTime, but exclusive of the endTime.\n\t * range = [startTime, endTime).\n\t * @param startTime The time to check if items are before\n\t * @param endTime The end of the test interval.\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachBetween(startTime: number, endTime: number, callback: (event: GenericEvent) => void): this {\n\t\tlet lowerBound = this._search(startTime);\n\t\tlet upperBound = this._search(endTime);\n\t\tif (lowerBound !== -1 && upperBound !== -1) {\n\t\t\tif (this._timeline[lowerBound].time !== startTime) {\n\t\t\t\tlowerBound += 1;\n\t\t\t}\n\t\t\t// exclusive of the end time\n\t\t\tif (this._timeline[upperBound].time === endTime) {\n\t\t\t\tupperBound -= 1;\n\t\t\t}\n\t\t\tthis._iterate(callback, lowerBound, upperBound);\n\t\t} else if (lowerBound === -1) {\n\t\t\tthis._iterate(callback, 0, upperBound);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array at or after the given time. Similar to\n\t * forEachAfter, but includes the item(s) at the given time.\n\t * @param time The time to check if items are before\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachFrom(time: number, callback: (event: GenericEvent) => void): this {\n\t\t// iterate over the items in reverse so that removing an item doesn't break things\n\t\tlet lowerBound = this._search(time);\n\t\t// work backwards until the event time is less than time\n\t\twhile (lowerBound >= 0 && this._timeline[lowerBound].time >= time) {\n\t\t\tlowerBound--;\n\t\t}\n\t\tthis._iterate(callback, lowerBound + 1);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Iterate over everything in the array at the given time\n\t * @param time The time to check if items are before\n\t * @param callback The callback to invoke with every item\n\t */\n\tforEachAtTime(time: number, callback: (event: GenericEvent) => void): this {\n\t\t// iterate over the items in reverse so that removing an item doesn't break things\n\t\tconst upperBound = this._search(time);\n\t\tif (upperBound !== -1 && EQ(this._timeline[upperBound].time, time)) {\n\t\t\tlet lowerBound = upperBound;\n\t\t\tfor (let i = upperBound; i >= 0; i--) {\n\t\t\t\tif (EQ(this._timeline[i].time, time)) {\n\t\t\t\t\tlowerBound = i;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._iterate(event => {\n\t\t\t\tcallback(event);\n\t\t\t}, lowerBound, upperBound);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clean up.\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._timeline = [];\n\t\treturn this;\n\t}\n}\n","//-------------------------------------\n// INITIALIZING NEW CONTEXT\n//-------------------------------------\n\ntype Context = import(\"./Context\").Context;\n\n/**\n * Array of callbacks to invoke when a new context is created\n */\nconst notifyNewContext: Array<(ctx: Context) => void> = [];\n\n/**\n * Used internally to setup a new Context\n */\nexport function onContextInit(cb: (ctx: Context) => void): void {\n\tnotifyNewContext.push(cb);\n}\n\n/**\n * Invoke any classes which need to also be initialized when a new context is created.\n */\nexport function initializeContext(ctx: Context): void {\n\t// add any additional modules\n\tnotifyNewContext.forEach(cb => cb(ctx));\n}\n\n/**\n * Array of callbacks to invoke when a new context is created\n */\nconst notifyCloseContext: Array<(ctx: Context) => void> = [];\n\n/**\n * Used internally to tear down a Context\n */\nexport function onContextClose(cb: (ctx: Context) => void): void {\n\tnotifyCloseContext.push(cb);\n}\n\nexport function closeContext(ctx: Context): void {\n\t// add any additional modules\n\tnotifyCloseContext.forEach(cb => cb(ctx));\n}\n","import { Tone } from \"../Tone\";\nimport { isUndef } from \"./TypeCheck\";\n\nexport interface EmitterEventObject {\n\t[event: string]: Array<(...args: any[]) => void>;\n}\n\n/**\n * Emitter gives classes which extend it\n * the ability to listen for and emit events.\n * Inspiration and reference from Jerome Etienne's [MicroEvent](https://github.com/jeromeetienne/microevent.js).\n * MIT (c) 2011 Jerome Etienne.\n * @category Core\n */\nexport class Emitter extends Tone {\n\n\treadonly name: string = \"Emitter\";\n\n\t/**\n\t * Private container for the events\n\t */\n\tprivate _events?: EmitterEventObject;\n\n\t/**\n\t * Bind a callback to a specific event.\n\t * @param event The name of the event to listen for.\n\t * @param callback The callback to invoke when the event is emitted\n\t */\n\ton(event: EventType, callback: (...args: any[]) => void): this {\n\t\t// split the event\n\t\tconst events = event.split(/\\W+/);\n\t\tevents.forEach(eventName => {\n\t\t\tif (isUndef(this._events)) {\n\t\t\t\tthis._events = {};\n\t\t\t}\n\t\t\tif (!this._events.hasOwnProperty(eventName)) {\n\t\t\t\tthis._events[eventName] = [];\n\t\t\t}\n\t\t\tthis._events[eventName].push(callback);\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Bind a callback which is only invoked once\n\t * @param event The name of the event to listen for.\n\t * @param callback The callback to invoke when the event is emitted\n\t */\n\tonce(event: EventType, callback: (...args: any[]) => void): this {\n\t\tconst boundCallback = (...args: any[]) => {\n\t\t\t// invoke the callback\n\t\t\tcallback(...args);\n\t\t\t// remove the event\n\t\t\tthis.off(event, boundCallback);\n\t\t};\n\t\tthis.on(event, boundCallback);\n\t\treturn this;\n\t}\n\n\t/**\n\t * Remove the event listener.\n\t * @param event The event to stop listening to.\n\t * @param callback The callback which was bound to the event with Emitter.on.\n\t * If no callback is given, all callbacks events are removed.\n\t */\n\toff(event: EventType, callback?: (...args: any[]) => void): this {\n\t\tconst events = event.split(/\\W+/);\n\t\tevents.forEach(eventName => {\n\t\t\tif (isUndef(this._events)) {\n\t\t\t\tthis._events = {};\n\t\t\t}\n\t\t\tif (this._events.hasOwnProperty(event)) {\n\t\t\t\tif (isUndef(callback)) {\n\t\t\t\t\tthis._events[event] = [];\n\t\t\t\t} else {\n\t\t\t\t\tconst eventList = this._events[event];\n\t\t\t\t\tfor (let i = eventList.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (eventList[i] === callback) {\n\t\t\t\t\t\t\teventList.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Invoke all of the callbacks bound to the event\n\t * with any arguments passed in.\n\t * @param event The name of the event.\n\t * @param args The arguments to pass to the functions listening.\n\t */\n\temit(event, ...args: any[]): this {\n\t\tif (this._events) {\n\t\t\tif (this._events.hasOwnProperty(event)) {\n\t\t\t\tconst eventList = this._events[event].slice(0);\n\t\t\t\tfor (let i = 0, len = eventList.length; i < len; i++) {\n\t\t\t\t\teventList[i].apply(this, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add Emitter functions (on/off/emit) to the object\n\t */\n\tstatic mixin(constr: any): void {\n\t\t// instance._events = {};\n\t\t[\"on\", \"once\", \"off\", \"emit\"].forEach(name => {\n\t\t\tconst property = Object.getOwnPropertyDescriptor(Emitter.prototype, name) as PropertyDescriptor;\n\t\t\tObject.defineProperty(constr.prototype, name, property);\n\t\t});\n\t}\n\n\t/**\n\t * Clean up\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._events = undefined;\n\t\treturn this;\n\t}\n}\n","import { Seconds } from \"../type/Units\";\nimport { Emitter } from \"../util/Emitter\";\nimport { AnyAudioContext } from \"./AudioContext\";\n\ntype Draw = import(\"../util/Draw\").Draw;\ntype Destination = import(\"./Destination\").Destination;\ntype Transport = import(\"../clock/Transport\").Transport;\ntype Listener = import(\"./Listener\").Listener;\n\n// these are either not used in Tone.js or deprecated and not implemented.\nexport type ExcludedFromBaseAudioContext =\n\t| \"onstatechange\"\n\t| \"addEventListener\"\n\t| \"removeEventListener\"\n\t| \"listener\"\n\t| \"dispatchEvent\"\n\t| \"audioWorklet\"\n\t| \"destination\"\n\t| \"createScriptProcessor\";\n\n// the subset of the BaseAudioContext which Tone.Context implements.\nexport type BaseAudioContextSubset = Omit<\nBaseAudioContext,\nExcludedFromBaseAudioContext\n>;\n\nexport type ContextLatencyHint = AudioContextLatencyCategory;\n\nexport abstract class BaseContext\n\textends Emitter<\"statechange\" | \"tick\">\n\timplements BaseAudioContextSubset {\n\t//---------------------------\n\t// BASE AUDIO CONTEXT METHODS\n\t//---------------------------\n\tabstract createAnalyser(): AnalyserNode;\n\n\tabstract createOscillator(): OscillatorNode;\n\n\tabstract createBufferSource(): AudioBufferSourceNode;\n\n\tabstract createBiquadFilter(): BiquadFilterNode;\n\n\tabstract createBuffer(\n\t\t_numberOfChannels: number,\n\t\t_length: number,\n\t\t_sampleRate: number\n\t): AudioBuffer;\n\n\tabstract createChannelMerger(\n\t\t_numberOfInputs?: number | undefined\n\t): ChannelMergerNode;\n\n\tabstract createChannelSplitter(\n\t\t_numberOfOutputs?: number | undefined\n\t): ChannelSplitterNode;\n\n\tabstract createConstantSource(): ConstantSourceNode;\n\n\tabstract createConvolver(): ConvolverNode;\n\n\tabstract createDelay(_maxDelayTime?: number | undefined): DelayNode;\n\n\tabstract createDynamicsCompressor(): DynamicsCompressorNode;\n\n\tabstract createGain(): GainNode;\n\n\tabstract createIIRFilter(\n\t\t_feedForward: number[] | Float32Array,\n\t\t_feedback: number[] | Float32Array\n\t): IIRFilterNode;\n\n\tabstract createPanner(): PannerNode;\n\n\tabstract createPeriodicWave(\n\t\t_real: number[] | Float32Array,\n\t\t_imag: number[] | Float32Array,\n\t\t_constraints?: PeriodicWaveConstraints | undefined\n\t): PeriodicWave;\n\n\tabstract createStereoPanner(): StereoPannerNode;\n\n\tabstract createWaveShaper(): WaveShaperNode;\n\n\tabstract createMediaStreamSource(\n\t\t_stream: MediaStream\n\t): MediaStreamAudioSourceNode;\n\n\tabstract createMediaElementSource(\n\t\t_element: HTMLMediaElement\n\t): MediaElementAudioSourceNode;\n\n\tabstract createMediaStreamDestination(): MediaStreamAudioDestinationNode;\n\n\tabstract decodeAudioData(_audioData: ArrayBuffer): Promise;\n\n\t//---------------------------\n\t// TONE AUDIO CONTEXT METHODS\n\t//---------------------------\n\n\tabstract createAudioWorkletNode(\n\t\t_name: string,\n\t\t_options?: Partial\n\t): AudioWorkletNode;\n\n\tabstract get rawContext(): AnyAudioContext;\n\n\tabstract async addAudioWorkletModule(\n\t\t_url: string,\n\t\t_name: string\n\t): Promise;\n\n\tabstract lookAhead: number;\n\n\tabstract latencyHint: ContextLatencyHint | Seconds;\n\n\tabstract resume(): Promise;\n\n\tabstract setTimeout(\n\t\t_fn: (...args: any[]) => void,\n\t\t_timeout: Seconds\n\t): number;\n\n\tabstract clearTimeout(_id: number): this;\n\n\tabstract setInterval(\n\t\t_fn: (...args: any[]) => void,\n\t\t_interval: Seconds\n\t): number;\n\n\tabstract clearInterval(_id: number): this;\n\n\tabstract getConstant(_val: number): AudioBufferSourceNode;\n\n\tabstract get currentTime(): Seconds;\n\n\tabstract get state(): AudioContextState;\n\n\tabstract get sampleRate(): number;\n\n\tabstract get listener(): Listener;\n\n\tabstract get transport(): Transport;\n\n\tabstract get draw(): Draw;\n\n\tabstract get destination(): Destination;\n\n\tabstract now(): Seconds;\n\n\tabstract immediate(): Seconds;\n\n\t/*\n\t * This is a placeholder so that JSON.stringify does not throw an error\n\t * This matches what JSON.stringify(audioContext) returns on a native\n\t * audioContext instance.\n\t */\n\ttoJSON(): Record {\n\t\treturn {};\n\t}\n\n\treadonly isOffline: boolean = false;\n}\n","import { Ticker, TickerClockSource } from \"../clock/Ticker\";\nimport { Seconds } from \"../type/Units\";\nimport { isAudioContext } from \"../util/AdvancedTypeCheck\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { Timeline } from \"../util/Timeline\";\nimport { isDefined, isString } from \"../util/TypeCheck\";\nimport {\n\tAnyAudioContext,\n\tcreateAudioContext,\n\tcreateAudioWorkletNode,\n} from \"./AudioContext\";\nimport { closeContext, initializeContext } from \"./ContextInitialization\";\nimport { BaseContext, ContextLatencyHint } from \"./BaseContext\";\nimport { assert } from \"../util/Debug\";\n\ntype Transport = import(\"../clock/Transport\").Transport;\ntype Destination = import(\"./Destination\").Destination;\ntype Listener = import(\"./Listener\").Listener;\ntype Draw = import(\"../util/Draw\").Draw;\n\nexport interface ContextOptions {\n\tclockSource: TickerClockSource;\n\tlatencyHint: ContextLatencyHint;\n\tlookAhead: Seconds;\n\tupdateInterval: Seconds;\n\tcontext: AnyAudioContext;\n}\n\nexport interface ContextTimeoutEvent {\n\tcallback: (...args: any[]) => void;\n\tid: number;\n\ttime: Seconds;\n}\n\n/**\n * Wrapper around the native AudioContext.\n * @category Core\n */\nexport class Context extends BaseContext {\n\treadonly name: string = \"Context\";\n\n\t/**\n\t * The amount of time into the future events are scheduled. Giving Web Audio\n\t * a short amount of time into the future to schedule events can reduce clicks and\n\t * improve performance. This value can be set to 0 to get the lowest latency.\n\t */\n\tlookAhead: Seconds;\n\n\t/**\n\t * private reference to the BaseAudioContext\n\t */\n\tprotected readonly _context: AnyAudioContext;\n\n\t/**\n\t * A reliable callback method\n\t */\n\tprivate readonly _ticker: Ticker;\n\n\t/**\n\t * The default latency hint\n\t */\n\tprivate _latencyHint!: ContextLatencyHint | Seconds;\n\n\t/**\n\t * An object containing all of the constants AudioBufferSourceNodes\n\t */\n\tprivate _constants = new Map();\n\n\t/**\n\t * All of the setTimeout events.\n\t */\n\tprivate _timeouts: Timeline = new Timeline();\n\n\t/**\n\t * The timeout id counter\n\t */\n\tprivate _timeoutIds = 0;\n\n\t/**\n\t * A reference the Transport singleton belonging to this context\n\t */\n\tprivate _transport!: Transport;\n\n\t/**\n\t * A reference the Listener singleton belonging to this context\n\t */\n\tprivate _listener!: Listener;\n\n\t/**\n\t * A reference the Destination singleton belonging to this context\n\t */\n\tprivate _destination!: Destination;\n\n\t/**\n\t * A reference the Transport singleton belonging to this context\n\t */\n\tprivate _draw!: Draw;\n\n\t/**\n\t * Private indicator if the context has been initialized\n\t */\n\tprivate _initialized = false;\n\n\t/**\n\t * Indicates if the context is an OfflineAudioContext or an AudioContext\n\t */\n\treadonly isOffline: boolean = false;\n\n\tconstructor(context?: AnyAudioContext);\n\tconstructor(options?: Partial);\n\tconstructor() {\n\t\tsuper();\n\t\tconst options = optionsFromArguments(Context.getDefaults(), arguments, [\n\t\t\t\"context\",\n\t\t]);\n\n\t\tif (options.context) {\n\t\t\tthis._context = options.context;\n\t\t} else {\n\t\t\tthis._context = createAudioContext({\n\t\t\t\tlatencyHint: options.latencyHint,\n\t\t\t});\n\t\t}\n\n\t\tthis._ticker = new Ticker(\n\t\t\tthis.emit.bind(this, \"tick\"),\n\t\t\toptions.clockSource,\n\t\t\toptions.updateInterval\n\t\t);\n\t\tthis.on(\"tick\", this._timeoutLoop.bind(this));\n\n\t\t// fwd events from the context\n\t\tthis._context.onstatechange = () => {\n\t\t\tthis.emit(\"statechange\", this.state);\n\t\t};\n\n\t\tthis._setLatencyHint(options.latencyHint);\n\t\tthis.lookAhead = options.lookAhead;\n\t}\n\n\tstatic getDefaults(): ContextOptions {\n\t\treturn {\n\t\t\tclockSource: \"worker\",\n\t\t\tlatencyHint: \"interactive\",\n\t\t\tlookAhead: 0.1,\n\t\t\tupdateInterval: 0.05,\n\t\t} as ContextOptions;\n\t}\n\n\t/**\n\t * Finish setting up the context. **You usually do not need to do this manually.**\n\t */\n\tprivate initialize(): this {\n\t\tif (!this._initialized) {\n\t\t\t// add any additional modules\n\t\t\tinitializeContext(this);\n\t\t\tthis._initialized = true;\n\t\t}\n\t\treturn this;\n\t}\n\n\t//---------------------------\n\t// BASE AUDIO CONTEXT METHODS\n\t//---------------------------\n\n\tcreateAnalyser(): AnalyserNode {\n\t\treturn this._context.createAnalyser();\n\t}\n\tcreateOscillator(): OscillatorNode {\n\t\treturn this._context.createOscillator();\n\t}\n\tcreateBufferSource(): AudioBufferSourceNode {\n\t\treturn this._context.createBufferSource();\n\t}\n\tcreateBiquadFilter(): BiquadFilterNode {\n\t\treturn this._context.createBiquadFilter();\n\t}\n\tcreateBuffer(\n\t\tnumberOfChannels: number,\n\t\tlength: number,\n\t\tsampleRate: number\n\t): AudioBuffer {\n\t\treturn this._context.createBuffer(numberOfChannels, length, sampleRate);\n\t}\n\tcreateChannelMerger(\n\t\tnumberOfInputs?: number | undefined\n\t): ChannelMergerNode {\n\t\treturn this._context.createChannelMerger(numberOfInputs);\n\t}\n\tcreateChannelSplitter(\n\t\tnumberOfOutputs?: number | undefined\n\t): ChannelSplitterNode {\n\t\treturn this._context.createChannelSplitter(numberOfOutputs);\n\t}\n\tcreateConstantSource(): ConstantSourceNode {\n\t\treturn this._context.createConstantSource();\n\t}\n\tcreateConvolver(): ConvolverNode {\n\t\treturn this._context.createConvolver();\n\t}\n\tcreateDelay(maxDelayTime?: number | undefined): DelayNode {\n\t\treturn this._context.createDelay(maxDelayTime);\n\t}\n\tcreateDynamicsCompressor(): DynamicsCompressorNode {\n\t\treturn this._context.createDynamicsCompressor();\n\t}\n\tcreateGain(): GainNode {\n\t\treturn this._context.createGain();\n\t}\n\tcreateIIRFilter(\n\t\tfeedForward: number[] | Float32Array,\n\t\tfeedback: number[] | Float32Array\n\t): IIRFilterNode {\n\t\t// @ts-ignore\n\t\treturn this._context.createIIRFilter(feedForward, feedback);\n\t}\n\tcreatePanner(): PannerNode {\n\t\treturn this._context.createPanner();\n\t}\n\tcreatePeriodicWave(\n\t\treal: number[] | Float32Array,\n\t\timag: number[] | Float32Array,\n\t\tconstraints?: PeriodicWaveConstraints | undefined\n\t): PeriodicWave {\n\t\treturn this._context.createPeriodicWave(real, imag, constraints);\n\t}\n\tcreateStereoPanner(): StereoPannerNode {\n\t\treturn this._context.createStereoPanner();\n\t}\n\tcreateWaveShaper(): WaveShaperNode {\n\t\treturn this._context.createWaveShaper();\n\t}\n\tcreateMediaStreamSource(stream: MediaStream): MediaStreamAudioSourceNode {\n\t\tassert(\n\t\t\tisAudioContext(this._context),\n\t\t\t\"Not available if OfflineAudioContext\"\n\t\t);\n\t\tconst context = this._context as AudioContext;\n\t\treturn context.createMediaStreamSource(stream);\n\t}\n\tcreateMediaElementSource(\n\t\telement: HTMLMediaElement\n\t): MediaElementAudioSourceNode {\n\t\tassert(\n\t\t\tisAudioContext(this._context),\n\t\t\t\"Not available if OfflineAudioContext\"\n\t\t);\n\t\tconst context = this._context as AudioContext;\n\t\treturn context.createMediaElementSource(element);\n\t}\n\tcreateMediaStreamDestination(): MediaStreamAudioDestinationNode {\n\t\tassert(\n\t\t\tisAudioContext(this._context),\n\t\t\t\"Not available if OfflineAudioContext\"\n\t\t);\n\t\tconst context = this._context as AudioContext;\n\t\treturn context.createMediaStreamDestination();\n\t}\n\tdecodeAudioData(audioData: ArrayBuffer): Promise {\n\t\treturn this._context.decodeAudioData(audioData);\n\t}\n\n\t/**\n\t * The current time in seconds of the AudioContext.\n\t */\n\tget currentTime(): Seconds {\n\t\treturn this._context.currentTime;\n\t}\n\t/**\n\t * The current time in seconds of the AudioContext.\n\t */\n\tget state(): AudioContextState {\n\t\treturn this._context.state;\n\t}\n\t/**\n\t * The current time in seconds of the AudioContext.\n\t */\n\tget sampleRate(): number {\n\t\treturn this._context.sampleRate;\n\t}\n\n\t/**\n\t * The listener\n\t */\n\tget listener(): Listener {\n\t\tthis.initialize();\n\t\treturn this._listener;\n\t}\n\tset listener(l) {\n\t\tassert(\n\t\t\t!this._initialized,\n\t\t\t\"The listener cannot be set after initialization.\"\n\t\t);\n\t\tthis._listener = l;\n\t}\n\n\t/**\n\t * There is only one Transport per Context. It is created on initialization.\n\t */\n\tget transport(): Transport {\n\t\tthis.initialize();\n\t\treturn this._transport;\n\t}\n\tset transport(t: Transport) {\n\t\tassert(\n\t\t\t!this._initialized,\n\t\t\t\"The transport cannot be set after initialization.\"\n\t\t);\n\t\tthis._transport = t;\n\t}\n\n\t/**\n\t * This is the Draw object for the context which is useful for synchronizing the draw frame with the Tone.js clock.\n\t */\n\tget draw(): Draw {\n\t\tthis.initialize();\n\t\treturn this._draw;\n\t}\n\tset draw(d) {\n\t\tassert(!this._initialized, \"Draw cannot be set after initialization.\");\n\t\tthis._draw = d;\n\t}\n\n\t/**\n\t * A reference to the Context's destination node.\n\t */\n\tget destination(): Destination {\n\t\tthis.initialize();\n\t\treturn this._destination;\n\t}\n\tset destination(d: Destination) {\n\t\tassert(\n\t\t\t!this._initialized,\n\t\t\t\"The destination cannot be set after initialization.\"\n\t\t);\n\t\tthis._destination = d;\n\t}\n\n\t//--------------------------------------------\n\t// AUDIO WORKLET\n\t//--------------------------------------------\n\n\t/**\n\t * Maps a module name to promise of the addModule method\n\t */\n\tprivate _workletModules: Map> = new Map();\n\n\t/**\n\t * Create an audio worklet node from a name and options. The module\n\t * must first be loaded using [[addAudioWorkletModule]].\n\t */\n\tcreateAudioWorkletNode(\n\t\tname: string,\n\t\toptions?: Partial\n\t): AudioWorkletNode {\n\t\treturn createAudioWorkletNode(this.rawContext, name, options);\n\t}\n\n\t/**\n\t * Add an AudioWorkletProcessor module\n\t * @param url The url of the module\n\t * @param name The name of the module\n\t */\n\tasync addAudioWorkletModule(url: string, name: string): Promise {\n\t\tassert(\n\t\t\tisDefined(this.rawContext.audioWorklet),\n\t\t\t\"AudioWorkletNode is only available in a secure context (https or localhost)\"\n\t\t);\n\t\tif (!this._workletModules.has(name)) {\n\t\t\tthis._workletModules.set(\n\t\t\t\tname,\n\t\t\t\tthis.rawContext.audioWorklet.addModule(url)\n\t\t\t);\n\t\t}\n\t\tawait this._workletModules.get(name);\n\t}\n\n\t/**\n\t * Returns a promise which resolves when all of the worklets have been loaded on this context\n\t */\n\tprotected async workletsAreReady(): Promise {\n\t\tconst promises: Promise[] = [];\n\t\tthis._workletModules.forEach((promise) => promises.push(promise));\n\t\tawait Promise.all(promises);\n\t}\n\n\t//---------------------------\n\t// TICKER\n\t//---------------------------\n\n\t/**\n\t * How often the interval callback is invoked.\n\t * This number corresponds to how responsive the scheduling\n\t * can be. context.updateInterval + context.lookAhead gives you the\n\t * total latency between scheduling an event and hearing it.\n\t */\n\tget updateInterval(): Seconds {\n\t\treturn this._ticker.updateInterval;\n\t}\n\tset updateInterval(interval: Seconds) {\n\t\tthis._ticker.updateInterval = interval;\n\t}\n\n\t/**\n\t * What the source of the clock is, either \"worker\" (default),\n\t * \"timeout\", or \"offline\" (none).\n\t */\n\tget clockSource(): TickerClockSource {\n\t\treturn this._ticker.type;\n\t}\n\tset clockSource(type: TickerClockSource) {\n\t\tthis._ticker.type = type;\n\t}\n\n\t/**\n\t * The type of playback, which affects tradeoffs between audio\n\t * output latency and responsiveness.\n\t * In addition to setting the value in seconds, the latencyHint also\n\t * accepts the strings \"interactive\" (prioritizes low latency),\n\t * \"playback\" (prioritizes sustained playback), \"balanced\" (balances\n\t * latency and performance).\n\t * @example\n\t * // prioritize sustained playback\n\t * const context = new Tone.Context({ latencyHint: \"playback\" });\n\t * // set this context as the global Context\n\t * Tone.setContext(context);\n\t * // the global context is gettable with Tone.getContext()\n\t * console.log(Tone.getContext().latencyHint);\n\t */\n\tget latencyHint(): ContextLatencyHint | Seconds {\n\t\treturn this._latencyHint;\n\t}\n\n\t/**\n\t * Update the lookAhead and updateInterval based on the latencyHint\n\t */\n\tprivate _setLatencyHint(hint: ContextLatencyHint | Seconds): void {\n\t\tlet lookAheadValue = 0;\n\t\tthis._latencyHint = hint;\n\t\tif (isString(hint)) {\n\t\t\tswitch (hint) {\n\t\t\t\tcase \"interactive\":\n\t\t\t\t\tlookAheadValue = 0.1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"playback\":\n\t\t\t\t\tlookAheadValue = 0.5;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"balanced\":\n\t\t\t\t\tlookAheadValue = 0.25;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tthis.lookAhead = lookAheadValue;\n\t\tthis.updateInterval = lookAheadValue / 2;\n\t}\n\n\t/**\n\t * The unwrapped AudioContext or OfflineAudioContext\n\t */\n\tget rawContext(): AnyAudioContext {\n\t\treturn this._context;\n\t}\n\n\t/**\n\t * The current audio context time plus a short [[lookAhead]].\n\t */\n\tnow(): Seconds {\n\t\treturn this._context.currentTime + this.lookAhead;\n\t}\n\n\t/**\n\t * The current audio context time without the [[lookAhead]].\n\t * In most cases it is better to use [[now]] instead of [[immediate]] since\n\t * with [[now]] the [[lookAhead]] is applied equally to _all_ components including internal components,\n\t * to making sure that everything is scheduled in sync. Mixing [[now]] and [[immediate]]\n\t * can cause some timing issues. If no lookAhead is desired, you can set the [[lookAhead]] to `0`.\n\t */\n\timmediate(): Seconds {\n\t\treturn this._context.currentTime;\n\t}\n\n\t/**\n\t * Starts the audio context from a suspended state. This is required\n\t * to initially start the AudioContext. See [[Tone.start]]\n\t */\n\tresume(): Promise {\n\t\tif (isAudioContext(this._context)) {\n\t\t\treturn this._context.resume();\n\t\t} else {\n\t\t\treturn Promise.resolve();\n\t\t}\n\t}\n\n\t/**\n\t * Close the context. Once closed, the context can no longer be used and\n\t * any AudioNodes created from the context will be silent.\n\t */\n\tasync close(): Promise {\n\t\tif (isAudioContext(this._context)) {\n\t\t\tawait this._context.close();\n\t\t}\n\t\tif (this._initialized) {\n\t\t\tcloseContext(this);\n\t\t}\n\t}\n\n\t/**\n\t * **Internal** Generate a looped buffer at some constant value.\n\t */\n\tgetConstant(val: number): AudioBufferSourceNode {\n\t\tif (this._constants.has(val)) {\n\t\t\treturn this._constants.get(val) as AudioBufferSourceNode;\n\t\t} else {\n\t\t\tconst buffer = this._context.createBuffer(\n\t\t\t\t1,\n\t\t\t\t128,\n\t\t\t\tthis._context.sampleRate\n\t\t\t);\n\t\t\tconst arr = buffer.getChannelData(0);\n\t\t\tfor (let i = 0; i < arr.length; i++) {\n\t\t\t\tarr[i] = val;\n\t\t\t}\n\t\t\tconst constant = this._context.createBufferSource();\n\t\t\tconstant.channelCount = 1;\n\t\t\tconstant.channelCountMode = \"explicit\";\n\t\t\tconstant.buffer = buffer;\n\t\t\tconstant.loop = true;\n\t\t\tconstant.start(0);\n\t\t\tthis._constants.set(val, constant);\n\t\t\treturn constant;\n\t\t}\n\t}\n\n\t/**\n\t * Clean up. Also closes the audio context.\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._ticker.dispose();\n\t\tthis._timeouts.dispose();\n\t\tObject.keys(this._constants).map((val) =>\n\t\t\tthis._constants[val].disconnect()\n\t\t);\n\t\treturn this;\n\t}\n\n\t//---------------------------\n\t// TIMEOUTS\n\t//---------------------------\n\n\t/**\n\t * The private loop which keeps track of the context scheduled timeouts\n\t * Is invoked from the clock source\n\t */\n\tprivate _timeoutLoop(): void {\n\t\tconst now = this.now();\n\t\tlet firstEvent = this._timeouts.peek();\n\t\twhile (this._timeouts.length && firstEvent && firstEvent.time <= now) {\n\t\t\t// invoke the callback\n\t\t\tfirstEvent.callback();\n\t\t\t// shift the first event off\n\t\t\tthis._timeouts.shift();\n\t\t\t// get the next one\n\t\t\tfirstEvent = this._timeouts.peek();\n\t\t}\n\t}\n\n\t/**\n\t * A setTimeout which is guaranteed by the clock source.\n\t * Also runs in the offline context.\n\t * @param fn The callback to invoke\n\t * @param timeout The timeout in seconds\n\t * @returns ID to use when invoking Context.clearTimeout\n\t */\n\tsetTimeout(fn: (...args: any[]) => void, timeout: Seconds): number {\n\t\tthis._timeoutIds++;\n\t\tconst now = this.now();\n\t\tthis._timeouts.add({\n\t\t\tcallback: fn,\n\t\t\tid: this._timeoutIds,\n\t\t\ttime: now + timeout,\n\t\t});\n\t\treturn this._timeoutIds;\n\t}\n\n\t/**\n\t * Clears a previously scheduled timeout with Tone.context.setTimeout\n\t * @param id The ID returned from setTimeout\n\t */\n\tclearTimeout(id: number): this {\n\t\tthis._timeouts.forEach((event) => {\n\t\t\tif (event.id === id) {\n\t\t\t\tthis._timeouts.remove(event);\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * Clear the function scheduled by [[setInterval]]\n\t */\n\tclearInterval(id: number): this {\n\t\treturn this.clearTimeout(id);\n\t}\n\n\t/**\n\t * Adds a repeating event to the context's callback clock\n\t */\n\tsetInterval(fn: (...args: any[]) => void, interval: Seconds): number {\n\t\tconst id = ++this._timeoutIds;\n\t\tconst intervalFn = () => {\n\t\t\tconst now = this.now();\n\t\t\tthis._timeouts.add({\n\t\t\t\tcallback: () => {\n\t\t\t\t\t// invoke the callback\n\t\t\t\t\tfn();\n\t\t\t\t\t// invoke the event to repeat it\n\t\t\t\t\tintervalFn();\n\t\t\t\t},\n\t\t\t\tid,\n\t\t\t\ttime: now + interval,\n\t\t\t});\n\t\t};\n\t\t// kick it off\n\t\tintervalFn();\n\t\treturn id;\n\t}\n}\n","import { isArray } from \"./TypeCheck\";\n\n// return an interface which excludes certain keys\nexport type Omit = Pick>;\n\n/**\n * Make the property not writable using `defineProperty`. Internal use only.\n */\nexport function readOnly(target: object, property: string | string[]): void {\n\tif (isArray(property)) {\n\t\tproperty.forEach(str => readOnly(target, str));\n\t} else {\n\t\tObject.defineProperty(target, property, {\n\t\t\tenumerable: true,\n\t\t\twritable: false,\n\t\t});\n\t}\n}\n\n/**\n * Make an attribute writeable. Internal use only.\n */\nexport function writable(target: object, property: string | string[]): void {\n\tif (isArray(property)) {\n\t\tproperty.forEach(str => writable(target, str));\n\t} else {\n\t\tObject.defineProperty(target, property, {\n\t\t\twritable: true,\n\t\t});\n\t}\n}\n\nexport const noOp: (...args: any[]) => any = () => {\n\t// no operation here!\n};\n\n/**\n * Recursive Partial taken from here: https://stackoverflow.com/a/51365037\n */\nexport type RecursivePartial = {\n\t[P in keyof T]?:\n\tT[P] extends Array ? Array> :\n\t\tT[P] extends object ? RecursivePartial :\n\t\t\tT[P];\n};\n","import { getContext } from \"../Global\";\nimport { Tone } from \"../Tone\";\nimport { Samples, Seconds } from \"../type/Units\";\nimport { isAudioBuffer } from \"../util/AdvancedTypeCheck\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { noOp } from \"../util/Interface\";\nimport { isArray, isNumber, isString } from \"../util/TypeCheck\";\nimport { assert } from \"../util/Debug\";\n\ninterface ToneAudioBufferOptions {\n\turl?: string | AudioBuffer | ToneAudioBuffer;\n\treverse: boolean;\n\tonload: (buffer?: ToneAudioBuffer) => void;\n\tonerror: (error: Error) => void;\n}\n\n/**\n * AudioBuffer loading and storage. ToneAudioBuffer is used internally by all\n * classes that make requests for audio files such as Tone.Player,\n * Tone.Sampler and Tone.Convolver.\n * @example\n * const buffer = new Tone.ToneAudioBuffer(\"https://tonejs.github.io/audio/casio/A1.mp3\", () => {\n * \tconsole.log(\"loaded\");\n * });\n * @category Core\n */\nexport class ToneAudioBuffer extends Tone {\n\n\treadonly name: string = \"ToneAudioBuffer\";\n\n\t/**\n\t * stores the loaded AudioBuffer\n\t */\n\tprivate _buffer?: AudioBuffer;\n\n\t/**\n\t * indicates if the buffer should be reversed or not\n\t */\n\tprivate _reversed!: boolean;\n\n\t/**\n\t * Callback when the buffer is loaded.\n\t */\n\tonload: (buffer: ToneAudioBuffer) => void = noOp;\n\n\t/**\n\t *\n\t * @param url The url to load, or the audio buffer to set.\n\t * @param onload A callback which is invoked after the buffer is loaded.\n\t * It's recommended to use `ToneAudioBuffer.on('load', callback)` instead\n\t * since it will give you a callback when _all_ buffers are loaded.\n\t * @param onerror The callback to invoke if there is an error\n\t */\n\tconstructor(\n\t\turl?: string | ToneAudioBuffer | AudioBuffer,\n\t\tonload?: (buffer: ToneAudioBuffer) => void,\n\t\tonerror?: (error: Error) => void,\n\t);\n\tconstructor(options?: Partial);\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tconst options = optionsFromArguments(ToneAudioBuffer.getDefaults(), arguments, [\"url\", \"onload\", \"onerror\"]);\n\n\t\tthis.reverse = options.reverse;\n\t\tthis.onload = options.onload;\n\n\t\tif (options.url && isAudioBuffer(options.url) || options.url instanceof ToneAudioBuffer) {\n\t\t\tthis.set(options.url);\n\t\t} else if (isString(options.url)) {\n\t\t\t// initiate the download\n\t\t\tthis.load(options.url).catch(options.onerror);\n\t\t}\n\t}\n\n\tstatic getDefaults(): ToneAudioBufferOptions {\n\t\treturn {\n\t\t\tonerror: noOp,\n\t\t\tonload: noOp,\n\t\t\treverse: false,\n\t\t};\n\t}\n\n\t/**\n\t * The sample rate of the AudioBuffer\n\t */\n\tget sampleRate(): number {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.sampleRate;\n\t\t} else {\n\t\t\treturn getContext().sampleRate;\n\t\t}\n\t}\n\n\t/**\n\t * Pass in an AudioBuffer or ToneAudioBuffer to set the value of this buffer.\n\t */\n\tset(buffer: AudioBuffer | ToneAudioBuffer): this {\n\t\tif (buffer instanceof ToneAudioBuffer) {\n\t\t\t// if it's loaded, set it\n\t\t\tif (buffer.loaded) {\n\t\t\t\tthis._buffer = buffer.get();\n\t\t\t} else {\n\t\t\t\t// otherwise when it's loaded, invoke it's callback\n\t\t\t\tbuffer.onload = () => {\n\t\t\t\t\tthis.set(buffer);\n\t\t\t\t\tthis.onload(this);\n\t\t\t\t};\n\t\t\t}\n\t\t} else {\n\t\t\tthis._buffer = buffer;\n\t\t}\n\t\t// reverse it initially\n\t\tif (this._reversed) {\n\t\t\tthis._reverse();\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * The audio buffer stored in the object.\n\t */\n\tget(): AudioBuffer | undefined {\n\t\treturn this._buffer;\n\t}\n\n\t/**\n\t * Makes an fetch request for the selected url then decodes the file as an audio buffer.\n\t * Invokes the callback once the audio buffer loads.\n\t * @param url The url of the buffer to load. filetype support depends on the browser.\n\t * @returns A Promise which resolves with this ToneAudioBuffer\n\t */\n\tasync load(url: string): Promise {\n\t\tconst doneLoading: Promise = ToneAudioBuffer.load(url).then(audioBuffer => {\n\t\t\tthis.set(audioBuffer);\n\t\t\t// invoke the onload method\n\t\t\tthis.onload(this);\n\t\t});\n\t\tToneAudioBuffer.downloads.push(doneLoading);\n\t\ttry {\n\t\t\tawait doneLoading;\n\t\t} finally {\n\t\t\t// remove the downloaded file\n\t\t\tconst index = ToneAudioBuffer.downloads.indexOf(doneLoading);\n\t\t\tToneAudioBuffer.downloads.splice(index, 1);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * clean up\n\t */\n\tdispose(): this {\n\t\tsuper.dispose();\n\t\tthis._buffer = undefined;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the audio buffer from the array.\n\t * To create a multichannel AudioBuffer, pass in a multidimensional array.\n\t * @param array The array to fill the audio buffer\n\t */\n\tfromArray(array: Float32Array | Float32Array[]): this {\n\t\tconst isMultidimensional = isArray(array) && array[0].length > 0;\n\t\tconst channels = isMultidimensional ? array.length : 1;\n\t\tconst len = isMultidimensional ? (array[0] as Float32Array).length : array.length;\n\t\tconst context = getContext();\n\t\tconst buffer = context.createBuffer(channels, len, context.sampleRate);\n\t\tconst multiChannelArray: Float32Array[] = !isMultidimensional && channels === 1 ?\n\t\t\t[array as Float32Array] : array as Float32Array[];\n\n\t\tfor (let c = 0; c < channels; c++) {\n\t\t\tbuffer.copyToChannel(multiChannelArray[c], c);\n\t\t}\n\t\tthis._buffer = buffer;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Sums multiple channels into 1 channel\n\t * @param chanNum Optionally only copy a single channel from the array.\n\t */\n\ttoMono(chanNum?: number): this {\n\t\tif (isNumber(chanNum)) {\n\t\t\tthis.fromArray(this.toArray(chanNum));\n\t\t} else {\n\t\t\tlet outputArray = new Float32Array(this.length as number);\n\t\t\tconst numChannels = this.numberOfChannels;\n\t\t\tfor (let channel = 0; channel < numChannels; channel++) {\n\t\t\t\tconst channelArray = this.toArray(channel) as Float32Array;\n\t\t\t\tfor (let i = 0; i < channelArray.length; i++) {\n\t\t\t\t\toutputArray[i] += channelArray[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\t// divide by the number of channels\n\t\t\toutputArray = outputArray.map(sample => sample / numChannels);\n\t\t\tthis.fromArray(outputArray);\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Get the buffer as an array. Single channel buffers will return a 1-dimensional\n\t * Float32Array, and multichannel buffers will return multidimensional arrays.\n\t * @param channel Optionally only copy a single channel from the array.\n\t */\n\ttoArray(channel?: number): Float32Array | Float32Array[] {\n\t\tif (isNumber(channel)) {\n\t\t\treturn this.getChannelData(channel);\n\t\t} else if (this.numberOfChannels === 1) {\n\t\t\treturn this.toArray(0);\n\t\t} else {\n\t\t\tconst ret: Float32Array[] = [];\n\t\t\tfor (let c = 0; c < this.numberOfChannels; c++) {\n\t\t\t\tret[c] = this.getChannelData(c);\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the Float32Array representing the PCM audio data for the specific channel.\n\t * @param channel The channel number to return\n\t * @return The audio as a TypedArray\n\t */\n\tgetChannelData(channel: number): Float32Array {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.getChannelData(channel);\n\t\t} else {\n\t\t\treturn new Float32Array(0);\n\t\t}\n\t}\n\n\t/**\n\t * Cut a subsection of the array and return a buffer of the\n\t * subsection. Does not modify the original buffer\n\t * @param start The time to start the slice\n\t * @param end The end time to slice. If none is given will default to the end of the buffer\n\t */\n\tslice(start: Seconds, end: Seconds = this.duration): ToneAudioBuffer {\n\t\tconst startSamples = Math.floor(start * this.sampleRate);\n\t\tconst endSamples = Math.floor(end * this.sampleRate);\n\t\tassert(startSamples < endSamples, \"The start time must be less than the end time\");\n\t\tconst length = endSamples - startSamples;\n\t\tconst retBuffer = getContext().createBuffer(this.numberOfChannels, length, this.sampleRate);\n\t\tfor (let channel = 0; channel < this.numberOfChannels; channel++) {\n\t\t\tretBuffer.copyToChannel(this.getChannelData(channel).subarray(startSamples, endSamples), channel);\n\t\t}\n\t\treturn new ToneAudioBuffer(retBuffer);\n\t}\n\n\t/**\n\t * Reverse the buffer.\n\t */\n\tprivate _reverse(): this {\n\t\tif (this.loaded) {\n\t\t\tfor (let i = 0; i < this.numberOfChannels; i++) {\n\t\t\t\tthis.getChannelData(i).reverse();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * If the buffer is loaded or not\n\t */\n\tget loaded(): boolean {\n\t\treturn this.length > 0;\n\t}\n\n\t/**\n\t * The duration of the buffer in seconds.\n\t */\n\tget duration(): Seconds {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.duration;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * The length of the buffer in samples\n\t */\n\tget length(): Samples {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.length;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * The number of discrete audio channels. Returns 0 if no buffer is loaded.\n\t */\n\tget numberOfChannels(): number {\n\t\tif (this._buffer) {\n\t\t\treturn this._buffer.numberOfChannels;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/**\n\t * Reverse the buffer.\n\t */\n\tget reverse(): boolean {\n\t\treturn this._reversed;\n\t}\n\tset reverse(rev: boolean) {\n\t\tif (this._reversed !== rev) {\n\t\t\tthis._reversed = rev;\n\t\t\tthis._reverse();\n\t\t}\n\t}\n\n\t//-------------------------------------\n\t// STATIC METHODS\n\t//-------------------------------------\n\n\t/**\n\t * A path which is prefixed before every url.\n\t */\n\tstatic baseUrl = \"\";\n\n\t/**\n\t * Create a ToneAudioBuffer from the array. To create a multichannel AudioBuffer,\n\t * pass in a multidimensional array.\n\t * @param array The array to fill the audio buffer\n\t * @return A ToneAudioBuffer created from the array\n\t */\n\tstatic fromArray(array: Float32Array | Float32Array[]): ToneAudioBuffer {\n\t\treturn (new ToneAudioBuffer()).fromArray(array);\n\t}\n\n\t/**\n\t * Creates a ToneAudioBuffer from a URL, returns a promise which resolves to a ToneAudioBuffer\n\t * @param url The url to load.\n\t * @return A promise which resolves to a ToneAudioBuffer\n\t */\n\tstatic async fromUrl(url: string): Promise {\n\t\tconst buffer = new ToneAudioBuffer();\n\t\treturn await buffer.load(url);\n\t}\n\n\t/**\n\t * All of the downloads\n\t */\n\tstatic downloads: Array> = [];\n\n\t/**\n\t * Loads a url using fetch and returns the AudioBuffer.\n\t */\n\tstatic async load(url: string): Promise {\n\n\t\t// test if the url contains multiple extensions\n\t\tconst matches = url.match(/\\[([^\\]\\[]+\\|.+)\\]$/);\n\t\tif (matches) {\n\t\t\tconst extensions = matches[1].split(\"|\");\n\t\t\tlet extension = extensions[0];\n\t\t\tfor (const ext of extensions) {\n\t\t\t\tif (ToneAudioBuffer.supportsType(ext)) {\n\t\t\t\t\textension = ext;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\turl = url.replace(matches[0], extension);\n\t\t}\n\n\t\t// make sure there is a slash between the baseUrl and the url\n\t\tconst baseUrl = ToneAudioBuffer.baseUrl === \"\" || ToneAudioBuffer.baseUrl.endsWith(\"/\") ? ToneAudioBuffer.baseUrl : ToneAudioBuffer.baseUrl + \"/\";\n\t\tconst response = await fetch(baseUrl + url);\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`could not load url: ${url}`);\n\t\t}\n\t\tconst arrayBuffer = await response.arrayBuffer();\n\n\t\tconst audioBuffer = await getContext().decodeAudioData(arrayBuffer);\n\n\t\treturn audioBuffer;\n\t}\n\n\t/**\n\t * Checks a url's extension to see if the current browser can play that file type.\n\t * @param url The url/extension to test\n\t * @return If the file extension can be played\n\t * @static\n\t * @example\n\t * Tone.ToneAudioBuffer.supportsType(\"wav\"); // returns true\n\t * Tone.ToneAudioBuffer.supportsType(\"path/to/file.wav\"); // returns true\n\t */\n\tstatic supportsType(url: string): boolean {\n\t\tconst extensions = url.split(\".\");\n\t\tconst extension = extensions[extensions.length - 1];\n\t\tconst response = document.createElement(\"audio\").canPlayType(\"audio/\" + extension);\n\t\treturn response !== \"\";\n\t}\n\n\t/**\n\t * Returns a Promise which resolves when all of the buffers have loaded\n\t */\n\tstatic async loaded(): Promise {\n\t\t// this makes sure that the function is always async\n\t\tawait Promise.resolve();\n\t\twhile (ToneAudioBuffer.downloads.length) {\n\t\t\tawait ToneAudioBuffer.downloads[0];\n\t\t}\n\t}\n}\n","import { createOfflineAudioContext } from \"../context/AudioContext\";\nimport { Context } from \"../context/Context\";\nimport { Seconds } from \"../type/Units\";\nimport { isOfflineAudioContext } from \"../util/AdvancedTypeCheck\";\nimport { ToneAudioBuffer } from \"./ToneAudioBuffer\";\n\n/**\n * Wrapper around the OfflineAudioContext\n * @category Core\n * @example\n * // generate a single channel, 0.5 second buffer\n * const context = new Tone.OfflineContext(1, 0.5, 44100);\n * const osc = new Tone.Oscillator({ context });\n * context.render().then(buffer => {\n * \tconsole.log(buffer.numberOfChannels, buffer.duration);\n * });\n */\nexport class OfflineContext extends Context {\n\n\treadonly name: string = \"OfflineContext\";\n\n\t/**\n\t * A private reference to the duration\n\t */\n\tprivate readonly _duration: Seconds;\n\n\t/**\n\t * An artificial clock source\n\t */\n\tprivate _currentTime: Seconds = 0;\n\n\t/**\n\t * Private reference to the OfflineAudioContext.\n\t */\n\tprotected _context!: OfflineAudioContext;\n\n\treadonly isOffline: boolean = true;\n\n\t/**\n\t * @param channels The number of channels to render\n\t * @param duration The duration to render in seconds\n\t * @param sampleRate the sample rate to render at\n\t */\n\tconstructor(\n\t\tchannels: number,\n\t\tduration: Seconds, \n\t\tsampleRate: number,\n\t);\n\tconstructor(context: OfflineAudioContext);\n\tconstructor() {\n\n\t\tsuper({\n\t\t\tclockSource: \"offline\",\n\t\t\tcontext: isOfflineAudioContext(arguments[0]) ?\n\t\t\t\targuments[0] : createOfflineAudioContext(arguments[0], arguments[1] * arguments[2], arguments[2]),\n\t\t\tlookAhead: 0,\n\t\t\tupdateInterval: isOfflineAudioContext(arguments[0]) ?\n\t\t\t\t128 / arguments[0].sampleRate : 128 / arguments[2],\n\t\t});\n\n\t\tthis._duration = isOfflineAudioContext(arguments[0]) ?\n\t\t\targuments[0].length / arguments[0].sampleRate : arguments[1];\n\t}\n\n\t/**\n\t * Override the now method to point to the internal clock time\n\t */\n\tnow(): Seconds {\n\t\treturn this._currentTime;\n\t}\n\n\t/**\n\t * Same as this.now()\n\t */\n\tget currentTime(): Seconds {\n\t\treturn this._currentTime;\n\t}\n\n\t/**\n\t * Render just the clock portion of the audio context.\n\t */\n\tprivate async _renderClock(asynchronous: boolean): Promise {\n\t\tlet index = 0;\n\t\twhile (this._duration - this._currentTime >= 0) {\n\n\t\t\t// invoke all the callbacks on that time\n\t\t\tthis.emit(\"tick\");\n\n\t\t\t// increment the clock in block-sized chunks\n\t\t\tthis._currentTime += 128 / this.sampleRate;\n\n\t\t\t// yield once a second of audio\n\t\t\tindex++;\n\t\t\tconst yieldEvery = Math.floor(this.sampleRate / 128);\n\t\t\tif (asynchronous && index % yieldEvery === 0) {\n\t\t\t\tawait new Promise(done => setTimeout(done, 1));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Render the output of the OfflineContext\n\t * @param asynchronous If the clock should be rendered asynchronously, which will not block the main thread, but be slightly slower.\n\t */\n\tasync render(asynchronous = true): Promise {\n\t\tawait this.workletsAreReady();\n\t\tawait this._renderClock(asynchronous);\n\t\tconst buffer = await this._context.startRendering();\n\t\treturn new ToneAudioBuffer(buffer);\n\t}\n\n\t/**\n\t * Close the context\n\t */\n\tclose(): Promise {\n\t\treturn Promise.resolve();\n\t}\n}\n","import { version } from \"../version\";\nimport { AnyAudioContext, hasAudioContext, theWindow } from \"./context/AudioContext\";\nimport { Context } from \"./context/Context\";\nimport { DummyContext } from \"./context/DummyContext\";\nimport { BaseContext } from \"./context/BaseContext\";\nimport { OfflineContext } from \"./context/OfflineContext\";\nimport { isAudioContext, isOfflineAudioContext } from \"./util/AdvancedTypeCheck\";\n\n/**\n * This dummy context is used to avoid throwing immediate errors when importing in Node.js\n */\nconst dummyContext = new DummyContext();\n\n/**\n * The global audio context which is getable and assignable through\n * getContext and setContext\n */\nlet globalContext: BaseContext = dummyContext;\n\n/**\n * Returns the default system-wide [[Context]]\n * @category Core\n */\nexport function getContext(): BaseContext {\n\tif (globalContext === dummyContext && hasAudioContext) {\n\t\tsetContext(new Context());\n\t}\n\treturn globalContext;\n}\n\n/**\n * Set the default audio context\n * @category Core\n */\nexport function setContext(context: BaseContext | AnyAudioContext): void {\n\tif (isAudioContext(context)) {\n\t\tglobalContext = new Context(context);\n\t} else if (isOfflineAudioContext(context)) {\n\t\tglobalContext = new OfflineContext(context);\n\t} else {\n\t\tglobalContext = context;\n\t}\n}\n\n/**\n * Most browsers will not play _any_ audio until a user\n * clicks something (like a play button). Invoke this method\n * on a click or keypress event handler to start the audio context.\n * More about the Autoplay policy\n * [here](https://developers.google.com/web/updates/2017/09/autoplay-policy-changes#webaudio)\n * @example\n * document.querySelector(\"button\").addEventListener(\"click\", async () => {\n * \tawait Tone.start();\n * \tconsole.log(\"context started\");\n * });\n * @category Core\n */\nexport function start(): Promise {\n\treturn globalContext.resume();\n}\n\n/**\n * Log Tone.js + version in the console.\n */\nif (theWindow && !theWindow.TONE_SILENCE_LOGGING) {\n\tlet prefix = \"v\";\n\tif (version === \"dev\") {\n\t\tprefix = \"\";\n\t}\n\tconst printString = ` * Tone.js ${prefix}${version} * `;\n\t// eslint-disable-next-line no-console\n\tconsole.log(`%c${printString}`, \"background: #000; color: #fff\");\n}\n","import { BaseContext } from \"./BaseContext\";\nimport { Seconds } from \"../type/Units\";\nimport { AnyAudioContext } from \"./AudioContext\";\n\ntype Draw = import(\"../util/Draw\").Draw;\ntype Destination = import(\"./Destination\").Destination;\ntype Transport = import(\"../clock/Transport\").Transport;\ntype Listener = import(\"./Listener\").Listener;\n\nexport class DummyContext extends BaseContext {\n\t//---------------------------\n\t// BASE AUDIO CONTEXT METHODS\n\t//---------------------------\n\tcreateAnalyser(): AnalyserNode {\n\t\treturn {} as AnalyserNode;\n\t}\n\n\tcreateOscillator(): OscillatorNode {\n\t\treturn {} as OscillatorNode;\n\t}\n\n\tcreateBufferSource() {\n\t\treturn {} as AudioBufferSourceNode;\n\t}\n\n\tcreateBiquadFilter(): BiquadFilterNode {\n\t\treturn {} as BiquadFilterNode;\n\t}\n\n\tcreateBuffer(\n\t\t_numberOfChannels: number,\n\t\t_length: number,\n\t\t_sampleRate: number\n\t): AudioBuffer {\n\t\treturn {} as AudioBuffer;\n\t}\n\n\tcreateChannelMerger(\n\t\t_numberOfInputs?: number | undefined\n\t): ChannelMergerNode {\n\t\treturn {} as ChannelMergerNode;\n\t}\n\n\tcreateChannelSplitter(\n\t\t_numberOfOutputs?: number | undefined\n\t): ChannelSplitterNode {\n\t\treturn {} as ChannelSplitterNode;\n\t}\n\n\tcreateConstantSource(): ConstantSourceNode {\n\t\treturn {} as ConstantSourceNode;\n\t}\n\n\tcreateConvolver(): ConvolverNode {\n\t\treturn {} as ConvolverNode;\n\t}\n\n\tcreateDelay(_maxDelayTime?: number | undefined): DelayNode {\n\t\treturn {} as DelayNode;\n\t}\n\n\tcreateDynamicsCompressor(): DynamicsCompressorNode {\n\t\treturn {} as DynamicsCompressorNode;\n\t}\n\n\tcreateGain(): GainNode {\n\t\treturn {} as GainNode;\n\t}\n\n\tcreateIIRFilter(\n\t\t_feedForward: number[] | Float32Array,\n\t\t_feedback: number[] | Float32Array\n\t): IIRFilterNode {\n\t\treturn {} as IIRFilterNode;\n\t}\n\n\tcreatePanner(): PannerNode {\n\t\treturn {} as PannerNode;\n\t}\n\n\tcreatePeriodicWave(\n\t\t_real: number[] | Float32Array,\n\t\t_imag: number[] | Float32Array,\n\t\t_constraints?: PeriodicWaveConstraints | undefined\n\t): PeriodicWave {\n\t\treturn {} as PeriodicWave;\n\t}\n\n\tcreateStereoPanner(): StereoPannerNode {\n\t\treturn {} as StereoPannerNode;\n\t}\n\n\tcreateWaveShaper(): WaveShaperNode {\n\t\treturn {} as WaveShaperNode;\n\t}\n\n\tcreateMediaStreamSource(_stream: MediaStream): MediaStreamAudioSourceNode {\n\t\treturn {} as MediaStreamAudioSourceNode;\n\t}\n\n\tcreateMediaElementSource(\n\t\t_element: HTMLMediaElement\n\t): MediaElementAudioSourceNode {\n\t\treturn {} as MediaElementAudioSourceNode;\n\t}\n\n\tcreateMediaStreamDestination(): MediaStreamAudioDestinationNode {\n\t\treturn {} as MediaStreamAudioDestinationNode;\n\t}\n\n\tdecodeAudioData(_audioData: ArrayBuffer): Promise {\n\t\treturn Promise.resolve({} as AudioBuffer);\n\t}\n\n\t//---------------------------\n\t// TONE AUDIO CONTEXT METHODS\n\t//---------------------------\n\n\tcreateAudioWorkletNode(\n\t\t_name: string,\n\t\t_options?: Partial\n\t): AudioWorkletNode {\n\t\treturn {} as AudioWorkletNode;\n\t}\n\n\tget rawContext(): AnyAudioContext {\n\t\treturn {} as AnyAudioContext;\n\t}\n\n\tasync addAudioWorkletModule(_url: string, _name: string): Promise {\n\t\treturn Promise.resolve();\n\t}\n\n\tlookAhead = 0;\n\n\tlatencyHint = 0;\n\n\tresume(): Promise {\n\t\treturn Promise.resolve();\n\t}\n\n\tsetTimeout(_fn: (...args: any[]) => void, _timeout: Seconds): number {\n\t\treturn 0;\n\t}\n\n\tclearTimeout(_id: number): this {\n\t\treturn this;\n\t}\n\n\tsetInterval(_fn: (...args: any[]) => void, _interval: Seconds): number {\n\t\treturn 0;\n\t}\n\n\tclearInterval(_id: number): this {\n\t\treturn this;\n\t}\n\n\tgetConstant(_val: number): AudioBufferSourceNode {\n\t\treturn {} as AudioBufferSourceNode;\n\t}\n\n\tget currentTime(): Seconds {\n\t\treturn 0;\n\t}\n\n\tget state(): AudioContextState {\n\t\treturn {} as AudioContextState;\n\t}\n\n\tget sampleRate(): number {\n\t\treturn 0;\n\t}\n\n\tget listener(): Listener {\n\t\treturn {} as Listener;\n\t}\n\n\tget transport(): Transport {\n\t\treturn {} as Transport;\n\t}\n\n\tget draw(): Draw {\n\t\treturn {} as Draw;\n\t}\n\tset draw(_d) {}\n\n\tget destination(): Destination {\n\t\treturn {} as Destination;\n\t}\n\tset destination(_d: Destination) {}\n\n\tnow() {\n\t\treturn 0;\n\t}\n\n\timmediate() {\n\t\treturn 0;\n\t}\n\n\treadonly isOffline: boolean = false;\n}\n","import { Decibels, GainFactor, Hertz, Interval, MidiNote, NormalRange } from \"./Units\";\n\n/**\n * Equal power gain scale. Good for cross-fading.\n * @param percent (0-1)\n */\nexport function equalPowerScale(percent: NormalRange): number {\n\tconst piFactor = 0.5 * Math.PI;\n\treturn Math.sin(percent * piFactor);\n}\n\n/**\n * Convert decibels into gain.\n */\nexport function dbToGain(db: Decibels): GainFactor {\n\treturn Math.pow(10, db / 20);\n}\n\n/**\n * Convert gain to decibels.\n */\nexport function gainToDb(gain: GainFactor): Decibels {\n\treturn 20 * (Math.log(gain) / Math.LN10);\n}\n\n/**\n * Convert an interval (in semitones) to a frequency ratio.\n * @param interval the number of semitones above the base note\n * @example\n * Tone.intervalToFrequencyRatio(0); // 1\n * Tone.intervalToFrequencyRatio(12); // 2\n * Tone.intervalToFrequencyRatio(-12); // 0.5\n */\nexport function intervalToFrequencyRatio(interval: Interval): number {\n\treturn Math.pow(2, (interval / 12));\n}\n\n/**\n * The Global [concert tuning pitch](https://en.wikipedia.org/wiki/Concert_pitch) which is used\n * to generate all the other pitch values from notes. A4's values in Hertz.\n */\nlet A4: Hertz = 440;\n\nexport function getA4(): Hertz {\n\treturn A4;\n}\n\nexport function setA4(freq: Hertz): void {\n\tA4 = freq;\n}\n\n/**\n * Convert a frequency value to a MIDI note.\n * @param frequency The value to frequency value to convert.\n * @example\n * Tone.ftom(440); // returns 69\n */\nexport function ftom(frequency: Hertz): MidiNote {\n\treturn Math.round(ftomf(frequency)) as MidiNote;\n}\n\n/**\n * Convert a frequency to a floating point midi value\n */\nexport function ftomf(frequency: Hertz): number {\n\treturn 69 + 12 * Math.log2(frequency / A4);\n}\n\n/**\n * Convert a MIDI note to frequency value.\n * @param midi The midi number to convert.\n * @return The corresponding frequency value\n * @example\n * Tone.mtof(69); // 440\n */\nexport function mtof(midi: MidiNote): Hertz {\n\treturn A4 * Math.pow(2, (midi - 69) / 12);\n}\n","import { BaseContext } from \"../context/BaseContext\";\nimport { Tone } from \"../Tone\";\nimport { isDefined, isObject, isString, isUndef } from \"../util/TypeCheck\";\nimport { BPM, Hertz, MidiNote, Milliseconds, Samples, Seconds, Ticks, Time } from \"./Units\";\n\nexport type TimeValue = Time | TimeBaseClass;\n\n/**\n * The units that the TimeBase can accept. extended by other classes\n */\nexport type TimeBaseUnit = \"s\" | \"n\" | \"t\" | \"m\" | \"i\" | \"hz\" | \"tr\" | \"samples\" | \"number\";\n\nexport interface TypeFunction {\n\tregexp: RegExp;\n\tmethod: (value: string, ...args: string[]) => number;\n}\n\nexport interface TimeExpression {\n\t[key: string]: {\n\t\tregexp: RegExp;\n\t\tmethod: (value: string, ...args: string[]) => Type;\n\t};\n}\n\n/**\n * TimeBase is a flexible encoding of time which can be evaluated to and from a string.\n */\nexport abstract class TimeBaseClass extends Tone {\n\n\treadonly context: BaseContext;\n\n\t/**\n\t * The value of the units\n\t */\n\tprotected _val?: TimeValue;\n\n\t/**\n\t * The units of time\n\t */\n\tprotected _units?: Unit;\n\n\t/**\n\t * All of the conversion expressions\n\t */\n\tprotected _expressions: TimeExpression;\n\n\t/**\n\t * The default units\n\t */\n\treadonly defaultUnits: Unit = \"s\" as Unit;\n\n\t/**\n\t * @param context The context associated with the time value. Used to compute\n\t * Transport and context-relative timing.\n\t * @param value The time value as a number, string or object\n\t * @param units Unit values\n\t */\n\tconstructor(context: BaseContext, value?: TimeValue, units?: Unit) {\n\t\tsuper();\n\n\t\tthis._val = value;\n\t\tthis._units = units;\n\t\tthis.context = context;\n\t\tthis._expressions = this._getExpressions();\n\t}\n\n\t/**\n\t * All of the time encoding expressions\n\t */\n\tprotected _getExpressions(): TimeExpression {\n\t\treturn {\n\t\t\thz: {\n\t\t\t\tmethod: (value) => {\n\t\t\t\t\treturn this._frequencyToUnits(parseFloat(value));\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+(?:\\.\\d+)?)hz$/i,\n\t\t\t},\n\t\t\ti: {\n\t\t\t\tmethod: (value) => {\n\t\t\t\t\treturn this._ticksToUnits(parseInt(value, 10));\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+)i$/i,\n\t\t\t},\n\t\t\tm: {\n\t\t\t\tmethod: (value) => {\n\t\t\t\t\treturn this._beatsToUnits(parseInt(value, 10) * this._getTimeSignature());\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+)m$/i,\n\t\t\t},\n\t\t\tn: {\n\t\t\t\tmethod: (value, dot) => {\n\t\t\t\t\tconst numericValue = parseInt(value, 10);\n\t\t\t\t\tconst scalar = dot === \".\" ? 1.5 : 1;\n\t\t\t\t\tif (numericValue === 1) {\n\t\t\t\t\t\treturn this._beatsToUnits(this._getTimeSignature()) * scalar as Type;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn this._beatsToUnits(4 / numericValue) * scalar as Type;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+)n(\\.?)$/i,\n\t\t\t},\n\t\t\tnumber: {\n\t\t\t\tmethod: (value) => {\n\t\t\t\t\treturn this._expressions[this.defaultUnits].method.call(this, value);\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+(?:\\.\\d+)?)$/,\n\t\t\t},\n\t\t\ts: {\n\t\t\t\tmethod: (value): Type => {\n\t\t\t\t\treturn this._secondsToUnits(parseFloat(value));\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+(?:\\.\\d+)?)s$/,\n\t\t\t},\n\t\t\tsamples: {\n\t\t\t\tmethod: (value) => {\n\t\t\t\t\treturn parseInt(value, 10) / this.context.sampleRate as Type;\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+)samples$/,\n\t\t\t},\n\t\t\tt: {\n\t\t\t\tmethod: (value) => {\n\t\t\t\t\tconst numericValue = parseInt(value, 10);\n\t\t\t\t\treturn this._beatsToUnits(8 / (Math.floor(numericValue) * 3));\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+)t$/i,\n\t\t\t},\n\t\t\ttr: {\n\t\t\t\tmethod: (m, q, s) => {\n\t\t\t\t\tlet total = 0;\n\t\t\t\t\tif (m && m !== \"0\") {\n\t\t\t\t\t\ttotal += this._beatsToUnits(this._getTimeSignature() * parseFloat(m));\n\t\t\t\t\t}\n\t\t\t\t\tif (q && q !== \"0\") {\n\t\t\t\t\t\ttotal += this._beatsToUnits(parseFloat(q));\n\t\t\t\t\t}\n\t\t\t\t\tif (s && s !== \"0\") {\n\t\t\t\t\t\ttotal += this._beatsToUnits(parseFloat(s) / 4);\n\t\t\t\t\t}\n\t\t\t\t\treturn total as Type;\n\t\t\t\t},\n\t\t\t\tregexp: /^(\\d+(?:\\.\\d+)?):(\\d+(?:\\.\\d+)?):?(\\d+(?:\\.\\d+)?)?$/,\n\t\t\t},\n\t\t};\n\t}\n\n\t//-------------------------------------\n\t// \tVALUE OF\n\t//-------------------------------------\n\n\t/**\n\t * Evaluate the time value. Returns the time in seconds.\n\t */\n\tvalueOf(): Type {\n\t\tif (this._val instanceof TimeBaseClass) {\n\t\t\tthis.fromType(this._val);\n\t\t}\n\t\tif (isUndef(this._val)) {\n\t\t\treturn this._noArg();\n\t\t} else if (isString(this._val) && isUndef(this._units)) {\n\t\t\tfor (const units in this._expressions) {\n\t\t\t\tif (this._expressions[units].regexp.test(this._val.trim())) {\n\t\t\t\t\tthis._units = units as Unit;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isObject(this._val)) {\n\t\t\tlet total = 0;\n\t\t\tfor (const typeName in this._val) {\n\t\t\t\tif (isDefined(this._val[typeName])) {\n\t\t\t\t\tconst quantity = this._val[typeName];\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tconst time = (new this.constructor(this.context, typeName)).valueOf() * quantity;\n\t\t\t\t\ttotal += time;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn total as Type;\n\t\t}\n\t\tif (isDefined(this._units)) {\n\t\t\tconst expr = this._expressions[this._units];\n\t\t\tconst matching = this._val.toString().trim().match(expr.regexp);\n\t\t\tif (matching) {\n\t\t\t\treturn expr.method.apply(this, matching.slice(1));\n\t\t\t} else {\n\t\t\t\treturn expr.method.call(this, this._val);\n\t\t\t}\n\t\t} else if (isString(this._val)) {\n\t\t\treturn parseFloat(this._val) as Type;\n\t\t} else {\n\t\t\treturn this._val as Type;\n\t\t}\n\t}\n\n\t//-------------------------------------\n\t// \tUNIT CONVERSIONS\n\t//-------------------------------------\n\n\t/**\n\t * Returns the value of a frequency in the current units\n\t */\n\tprotected _frequencyToUnits(freq: Hertz): Type {\n\t\treturn 1 / freq as Type;\n\t}\n\n\t/**\n\t * Return the value of the beats in the current units\n\t */\n\tprotected _beatsToUnits(beats: number): Type {\n\t\treturn (60 / this._getBpm()) * beats as Type;\n\t}\n\n\t/**\n\t * Returns the value of a second in the current units\n\t */\n\tprotected _secondsToUnits(seconds: Seconds): Type {\n\t\treturn seconds as Type;\n\t}\n\n\t/**\n\t * Returns the value of a tick in the current time units\n\t */\n\tprotected _ticksToUnits(ticks: Ticks): Type {\n\t\treturn (ticks * (this._beatsToUnits(1)) / this._getPPQ()) as Type;\n\t}\n\n\t/**\n\t * With no arguments, return 'now'\n\t */\n\tprotected _noArg(): Type {\n\t\treturn this._now();\n\t}\n\n\t//-------------------------------------\n\t// \tTEMPO CONVERSIONS\n\t//-------------------------------------\n\n\t/**\n\t * Return the bpm\n\t */\n\tprotected _getBpm(): BPM {\n\t\treturn this.context.transport.bpm.value;\n\t}\n\n\t/**\n\t * Return the timeSignature\n\t */\n\tprotected _getTimeSignature(): number {\n\t\treturn this.context.transport.timeSignature as number;\n\t}\n\n\t/**\n\t * Return the PPQ or 192 if Transport is not available\n\t */\n\tprotected _getPPQ(): number {\n\t\treturn this.context.transport.PPQ;\n\t}\n\n\t/**\n\t * Return the current time in whichever context is relevant\n\t */\n\tprotected abstract _now(): Type;\n\n\t//-------------------------------------\n\t// \tCONVERSION INTERFACE\n\t//-------------------------------------\n\n\t/**\n\t * Coerce a time type into this units type.\n\t * @param type Any time type units\n\t */\n\tfromType(type: TimeBaseClass): this {\n\t\tthis._units = undefined;\n\t\tswitch (this.defaultUnits) {\n\t\t\tcase \"s\":\n\t\t\t\tthis._val = type.toSeconds();\n\t\t\t\tbreak;\n\t\t\tcase \"i\":\n\t\t\t\tthis._val = type.toTicks();\n\t\t\t\tbreak;\n\t\t\tcase \"hz\":\n\t\t\t\tthis._val = type.toFrequency();\n\t\t\t\tbreak;\n\t\t\tcase \"midi\":\n\t\t\t\tthis._val = type.toMidi();\n\t\t\t\tbreak;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Return the value in seconds\n\t */\n\tabstract toSeconds(): Seconds;\n\n\t/**\n\t * Return the value as a Midi note\n\t */\n\tabstract toMidi(): MidiNote;\n\n\t/**\n\t * Convert the value into ticks\n\t */\n\tabstract toTicks(): Ticks;\n\n\t/**\n\t * Return the value in hertz\n\t */\n\ttoFrequency(): Hertz {\n\t\treturn 1 / this.toSeconds();\n\t}\n\n\t/**\n\t * Return the time in samples\n\t */\n\ttoSamples(): Samples {\n\t\treturn this.toSeconds() * this.context.sampleRate;\n\t}\n\n\t/**\n\t * Return the time in milliseconds.\n\t */\n\ttoMilliseconds(): Milliseconds {\n\t\treturn this.toSeconds() * 1000;\n\t}\n}\n","import { getContext } from \"../Global\";\nimport { ftom } from \"./Conversions\";\nimport { TimeBaseClass, TimeBaseUnit, TimeExpression, TimeValue } from \"./TimeBase\";\nimport { BarsBeatsSixteenths, MidiNote, Seconds, Subdivision, Ticks, Time } from \"./Units\";\n\n/**\n * TimeClass is a primitive type for encoding and decoding Time values.\n * TimeClass can be passed into the parameter of any method which takes time as an argument.\n * @param val The time value.\n * @param units The units of the value.\n * @example\n * const time = Tone.Time(\"4n\"); // a quarter note\n * @category Unit\n */\nexport class TimeClass\n\textends TimeBaseClass {\n\n\treadonly name: string = \"TimeClass\";\n\n\tprotected _getExpressions(): TimeExpression {\n\t\treturn Object.assign(super._getExpressions(), {\n\t\t\tnow: {\n\t\t\t\tmethod: (capture: string): Type => {\n\t\t\t\t\treturn this._now() + new (this.constructor as typeof TimeClass)(this.context, capture).valueOf() as Type;\n\t\t\t\t},\n\t\t\t\tregexp: /^\\+(.+)/,\n\t\t\t},\n\t\t\tquantize: {\n\t\t\t\tmethod: (capture: string): Type => {\n\t\t\t\t\tconst quantTo = new TimeClass(this.context, capture).valueOf();\n\t\t\t\t\treturn this._secondsToUnits(this.context.transport.nextSubdivision(quantTo));\n\t\t\t\t},\n\t\t\t\tregexp: /^@(.+)/,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Quantize the time by the given subdivision. Optionally add a\n\t * percentage which will move the time value towards the ideal\n\t * quantized value by that percentage.\n\t * @param subdiv The subdivision to quantize to\n\t * @param percent Move the time value towards the quantized value by a percentage.\n\t * @example\n\t * Tone.Time(21).quantize(2); // returns 22\n\t * Tone.Time(0.6).quantize(\"4n\", 0.5); // returns 0.55\n\t */\n\tquantize(subdiv: Time, percent = 1): Type {\n\t\tconst subdivision = new (this.constructor as typeof TimeClass)(this.context, subdiv).valueOf();\n\t\tconst value = this.valueOf();\n\t\tconst multiple = Math.round(value / subdivision);\n\t\tconst ideal = multiple * subdivision;\n\t\tconst diff = ideal - value;\n\t\treturn value + diff * percent as Type;\n\t}\n\n\t//-------------------------------------\n\t// CONVERSIONS\n\t//-------------------------------------\n\t/**\n\t * Convert a Time to Notation. The notation values are will be the\n\t * closest representation between 1m to 128th note.\n\t * @return {Notation}\n\t * @example\n\t * // if the Transport is at 120bpm:\n\t * Tone.Time(2).toNotation(); // returns \"1m\"\n\t */\n\ttoNotation(): Subdivision {\n\t\tconst time = this.toSeconds();\n\t\tconst testNotations: Subdivision[] = [\"1m\"];\n\t\tfor (let power = 1; power < 9; power++) {\n\t\t\tconst subdiv = Math.pow(2, power);\n\t\t\ttestNotations.push(subdiv + \"n.\" as Subdivision);\n\t\t\ttestNotations.push(subdiv + \"n\" as Subdivision);\n\t\t\ttestNotations.push(subdiv + \"t\" as Subdivision);\n\t\t}\n\t\ttestNotations.push(\"0\");\n\t\t// find the closets notation representation\n\t\tlet closest = testNotations[0];\n\t\tlet closestSeconds = new TimeClass(this.context, testNotations[0]).toSeconds();\n\t\ttestNotations.forEach(notation => {\n\t\t\tconst notationSeconds = new TimeClass(this.context, notation).toSeconds();\n\t\t\tif (Math.abs(notationSeconds - time) < Math.abs(closestSeconds - time)) {\n\t\t\t\tclosest = notation;\n\t\t\t\tclosestSeconds = notationSeconds;\n\t\t\t}\n\t\t});\n\t\treturn closest;\n\t}\n\n\t/**\n\t * Return the time encoded as Bars:Beats:Sixteenths.\n\t */\n\ttoBarsBeatsSixteenths(): BarsBeatsSixteenths {\n\t\tconst quarterTime = this._beatsToUnits(1);\n\t\tlet quarters = this.valueOf() / quarterTime;\n\t\tquarters = parseFloat(quarters.toFixed(4));\n\t\tconst measures = Math.floor(quarters / this._getTimeSignature());\n\t\tlet sixteenths = (quarters % 1) * 4;\n\t\tquarters = Math.floor(quarters) % this._getTimeSignature();\n\t\tconst sixteenthString = sixteenths.toString();\n\t\tif (sixteenthString.length > 3) {\n\t\t\t// the additional parseFloat removes insignificant trailing zeroes\n\t\t\tsixteenths = parseFloat(parseFloat(sixteenthString).toFixed(3));\n\t\t}\n\t\tconst progress = [measures, quarters, sixteenths];\n\t\treturn progress.join(\":\");\n\t}\n\n\t/**\n\t * Return the time in ticks.\n\t */\n\ttoTicks(): Ticks {\n\t\tconst quarterTime = this._beatsToUnits(1);\n\t\tconst quarters = this.valueOf() / quarterTime;\n\t\treturn Math.round(quarters * this._getPPQ());\n\t}\n\n\t/**\n\t * Return the time in seconds.\n\t */\n\ttoSeconds(): Seconds {\n\t\treturn this.valueOf();\n\t}\n\n\t/**\n\t * Return the value as a midi note.\n\t */\n\ttoMidi(): MidiNote {\n\t\treturn ftom(this.toFrequency());\n\t}\n\n\tprotected _now(): Type {\n\t\treturn this.context.now() as Type;\n\t}\n}\n\n/**\n * Create a TimeClass from a time string or number. The time is computed against the \n * global Tone.Context. To use a specific context, use [[TimeClass]]\n * @param value A value which represents time\n * @param units The value's units if they can't be inferred by the value.\n * @category Unit\n * @example\n * const time = Tone.Time(\"4n\").toSeconds();\n * console.log(time);\n * @example\n * const note = Tone.Time(1).toNotation();\n * console.log(note);\n * @example\n * const freq = Tone.Time(0.5).toFrequency();\n * console.log(freq);\n */\nexport function Time(value?: TimeValue, units?: TimeBaseUnit): TimeClass {\n\treturn new TimeClass(getContext(), value, units);\n}\n","import { getContext } from \"../Global\";\nimport { intervalToFrequencyRatio, mtof } from \"./Conversions\";\nimport { ftom, getA4, setA4 } from \"./Conversions\";\nimport { TimeClass } from \"./Time\";\nimport { TimeBaseUnit, TimeExpression, TimeValue } from \"./TimeBase\";\nimport { Frequency, Hertz, Interval, MidiNote, Note, Seconds, Ticks } from \"./Units\";\n\nexport type FrequencyUnit = TimeBaseUnit | \"midi\";\n\n/**\n * Frequency is a primitive type for encoding Frequency values.\n * Eventually all time values are evaluated to hertz using the `valueOf` method.\n * @example\n * Tone.Frequency(\"C3\"); // 261\n * Tone.Frequency(38, \"midi\");\n * Tone.Frequency(\"C3\").transpose(4);\n * @category Unit\n */\nexport class FrequencyClass extends TimeClass {\n\n\treadonly name: string = \"Frequency\";\n\n\treadonly defaultUnits: FrequencyUnit = \"hz\";\n\n\t/**\n\t * The [concert tuning pitch](https://en.wikipedia.org/wiki/Concert_pitch) which is used\n\t * to generate all the other pitch values from notes. A4's values in Hertz.\n\t */\n\tstatic get A4(): Hertz {\n\t\treturn getA4();\n\t}\n\tstatic set A4(freq: Hertz) {\n\t\tsetA4(freq);\n\t}\n\n\t//-------------------------------------\n\t// \tAUGMENT BASE EXPRESSIONS\n\t//-------------------------------------\n\n\tprotected _getExpressions(): TimeExpression {\n\t\treturn Object.assign({}, super._getExpressions(), {\n\t\t\tmidi: {\n\t\t\t\tregexp: /^(\\d+(?:\\.\\d+)?midi)/,\n\t\t\t\tmethod(value): number {\n\t\t\t\t\tif (this.defaultUnits === \"midi\") {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FrequencyClass.mtof(value);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\tnote: {\n\t\t\t\tregexp: /^([a-g]{1}(?:b|#|x|bb)?)(-?[0-9]+)/i,\n\t\t\t\tmethod(pitch, octave): number {\n\t\t\t\t\tconst index = noteToScaleIndex[pitch.toLowerCase()];\n\t\t\t\t\tconst noteNumber = index + (parseInt(octave, 10) + 1) * 12;\n\t\t\t\t\tif (this.defaultUnits === \"midi\") {\n\t\t\t\t\t\treturn noteNumber;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn FrequencyClass.mtof(noteNumber);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t},\n\t\t\ttr: {\n\t\t\t\tregexp: /^(\\d+(?:\\.\\d+)?):(\\d+(?:\\.\\d+)?):?(\\d+(?:\\.\\d+)?)?/,\n\t\t\t\tmethod(m, q, s): number {\n\t\t\t\t\tlet total = 1;\n\t\t\t\t\tif (m && m !== \"0\") {\n\t\t\t\t\t\ttotal *= this._beatsToUnits(this._getTimeSignature() * parseFloat(m));\n\t\t\t\t\t}\n\t\t\t\t\tif (q && q !== \"0\") {\n\t\t\t\t\t\ttotal *= this._beatsToUnits(parseFloat(q));\n\t\t\t\t\t}\n\t\t\t\t\tif (s && s !== \"0\") {\n\t\t\t\t\t\ttotal *= this._beatsToUnits(parseFloat(s) / 4);\n\t\t\t\t\t}\n\t\t\t\t\treturn total;\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t}\n\n\t//-------------------------------------\n\t// \tEXPRESSIONS\n\t//-------------------------------------\n\n\t/**\n\t * Transposes the frequency by the given number of semitones.\n\t * @return A new transposed frequency\n\t * @example\n\t * Tone.Frequency(\"A4\").transpose(3); // \"C5\"\n\t */\n\ttranspose(interval: Interval): FrequencyClass {\n\t\treturn new FrequencyClass(this.context, this.valueOf() * intervalToFrequencyRatio(interval));\n\t}\n\n\t/**\n\t * Takes an array of semitone intervals and returns\n\t * an array of frequencies transposed by those intervals.\n\t * @return Returns an array of Frequencies\n\t * @example\n\t * Tone.Frequency(\"A4\").harmonize([0, 3, 7]); // [\"A4\", \"C5\", \"E5\"]\n\t */\n\tharmonize(intervals: Interval[]): FrequencyClass[] {\n\t\treturn intervals.map(interval => {\n\t\t\treturn this.transpose(interval);\n\t\t});\n\t}\n\n\t//-------------------------------------\n\t// \tUNIT CONVERSIONS\n\t//-------------------------------------\n\n\t/**\n\t * Return the value of the frequency as a MIDI note\n\t * @example\n\t * Tone.Frequency(\"C4\").toMidi(); // 60\n\t */\n\ttoMidi(): MidiNote {\n\t\treturn ftom(this.valueOf());\n\t}\n\n\t/**\n\t * Return the value of the frequency in Scientific Pitch Notation\n\t * @example\n\t * Tone.Frequency(69, \"midi\").toNote(); // \"A4\"\n\t */\n\ttoNote(): Note {\n\t\tconst freq = this.toFrequency();\n\t\tconst log = Math.log2(freq / FrequencyClass.A4);\n\t\tlet noteNumber = Math.round(12 * log) + 57;\n\t\tconst octave = Math.floor(noteNumber / 12);\n\t\tif (octave < 0) {\n\t\t\tnoteNumber += -12 * octave;\n\t\t}\n\t\tconst noteName = scaleIndexToNote[noteNumber % 12];\n\t\treturn noteName + octave.toString() as Note;\n\t}\n\n\t/**\n\t * Return the duration of one cycle in seconds.\n\t */\n\ttoSeconds(): Seconds {\n\t\treturn 1 / super.toSeconds();\n\t}\n\n\t/**\n\t * Return the duration of one cycle in ticks\n\t */\n\ttoTicks(): Ticks {\n\t\tconst quarterTime = this._beatsToUnits(1);\n\t\tconst quarters = this.valueOf() / quarterTime;\n\t\treturn Math.floor(quarters * this._getPPQ());\n\t}\n\n\t//-------------------------------------\n\t// \tUNIT CONVERSIONS HELPERS\n\t//-------------------------------------\n\n\t/**\n\t * With no arguments, return 0\n\t */\n\tprotected _noArg(): Type {\n\t\treturn 0 as Type;\n\t}\n\n\t/**\n\t * Returns the value of a frequency in the current units\n\t */\n\tprotected _frequencyToUnits(freq: Hertz): Type {\n\t\treturn freq as Type;\n\t}\n\n\t/**\n\t * Returns the value of a tick in the current time units\n\t */\n\tprotected _ticksToUnits(ticks: Ticks): Type {\n\t\treturn 1 / ((ticks * 60) / (this._getBpm() * this._getPPQ())) as Type;\n\t}\n\n\t/**\n\t * Return the value of the beats in the current units\n\t */\n\tprotected _beatsToUnits(beats: number): Type {\n\t\treturn 1 / super._beatsToUnits(beats) as Type;\n\t}\n\n\t/**\n\t * Returns the value of a second in the current units\n\t */\n\tprotected _secondsToUnits(seconds: Seconds): Type {\n\t\treturn 1 / seconds as Type;\n\t}\n\n\t/**\n\t * Convert a MIDI note to frequency value.\n\t * @param midi The midi number to convert.\n\t * @return The corresponding frequency value\n\t */\n\tstatic mtof(midi: MidiNote): Hertz {\n\t\treturn mtof(midi);\n\t}\n\n\t/**\n\t * Convert a frequency value to a MIDI note.\n\t * @param frequency The value to frequency value to convert.\n\t */\n\tstatic ftom(frequency: Hertz): MidiNote {\n\t\treturn ftom(frequency);\n\t}\n}\n\n//-------------------------------------\n// \tFREQUENCY CONVERSIONS\n//-------------------------------------\n\n/**\n * Note to scale index. \n * @hidden\n */\nconst noteToScaleIndex = {\n\tcbb: -2, cb: -1, c: 0, \"c#\": 1, cx: 2,\n\tdbb: 0, db: 1, d: 2, \"d#\": 3, dx: 4,\n\tebb: 2, eb: 3, e: 4, \"e#\": 5, ex: 6,\n\tfbb: 3, fb: 4, f: 5, \"f#\": 6, fx: 7,\n\tgbb: 5, gb: 6, g: 7, \"g#\": 8, gx: 9,\n\tabb: 7, ab: 8, a: 9, \"a#\": 10, ax: 11,\n\tbbb: 9, bb: 10, b: 11, \"b#\": 12, bx: 13,\n};\n\n/**\n * scale index to note (sharps)\n * @hidden\n */\nconst scaleIndexToNote = [\"C\", \"C#\", \"D\", \"D#\", \"E\", \"F\", \"F#\", \"G\", \"G#\", \"A\", \"A#\", \"B\"];\n\n/**\n * Convert a value into a FrequencyClass object.\n * @category Unit\n * @example\n * const midi = Tone.Frequency(\"C3\").toMidi();\n * console.log(midi);\n * @example\n * const hertz = Tone.Frequency(38, \"midi\").toFrequency();\n * console.log(hertz);\n */\nexport function Frequency(value?: TimeValue | Frequency, units?: FrequencyUnit): FrequencyClass {\n\treturn new FrequencyClass(getContext(), value, units);\n}\n","import { getContext } from \"../Global\";\nimport { Seconds, Ticks } from \"../type/Units\";\nimport { TimeClass } from \"./Time\";\nimport { TimeBaseUnit, TimeValue } from \"./TimeBase\";\n\n/**\n * TransportTime is a the time along the Transport's\n * timeline. It is similar to Tone.Time, but instead of evaluating\n * against the AudioContext's clock, it is evaluated against\n * the Transport's position. See [TransportTime wiki](https://github.com/Tonejs/Tone.js/wiki/TransportTime).\n * @category Unit\n */\nexport class TransportTimeClass extends TimeClass {\n\n\treadonly name: string = \"TransportTime\";\n\n\t/**\n\t * Return the current time in whichever context is relevant\n\t */\n\tprotected _now(): Type {\n\t\treturn this.context.transport.seconds as Type;\n\t}\n}\n\n/**\n * TransportTime is a the time along the Transport's\n * timeline. It is similar to [[Time]], but instead of evaluating\n * against the AudioContext's clock, it is evaluated against\n * the Transport's position. See [TransportTime wiki](https://github.com/Tonejs/Tone.js/wiki/TransportTime).\n * @category Unit\n */\nexport function TransportTime(value?: TimeValue, units?: TimeBaseUnit): TransportTimeClass {\n\treturn new TransportTimeClass(getContext(), value, units);\n}\n","import { getContext } from \"../Global\";\nimport { Tone } from \"../Tone\";\nimport { FrequencyClass } from \"../type/Frequency\";\nimport { TimeClass } from \"../type/Time\";\nimport { TransportTimeClass } from \"../type/TransportTime\";\nimport { Frequency, Hertz, Seconds, Ticks, Time } from \"../type/Units\";\nimport { getDefaultsFromInstance, optionsFromArguments } from \"../util/Defaults\";\nimport { RecursivePartial } from \"../util/Interface\";\nimport { isArray, isBoolean, isDefined, isNumber, isString, isUndef } from \"../util/TypeCheck\";\nimport { BaseContext } from \"./BaseContext\";\n\n/**\n * A unit which process audio\n */\nexport interface ToneWithContextOptions {\n\tcontext: BaseContext;\n}\n\n/**\n * The Base class for all nodes that have an AudioContext.\n */\nexport abstract class ToneWithContext extends Tone {\n\n\t/**\n\t * The context belonging to the node.\n\t */\n\treadonly context: BaseContext;\n\n\t/**\n\t * The default context to use if no AudioContext is passed in to the constructor.\n\t * Probably should not be set manually. Used internally.\n\t * @hidden\n\t */\n\treadonly defaultContext?: BaseContext;\n\n\t/**\n\t * Pass in a constructor as the first argument\n\t */\n\tconstructor(context?: BaseContext)\n\tconstructor(options?: Partial);\n\tconstructor() {\n\t\tsuper();\n\t\tconst options = optionsFromArguments(ToneWithContext.getDefaults(), arguments, [\"context\"]);\n\t\tif (this.defaultContext) {\n\t\t\tthis.context = this.defaultContext;\n\t\t} else {\n\t\t\tthis.context = options.context;\n\t\t}\n\t}\n\n\tstatic getDefaults(): ToneWithContextOptions {\n\t\treturn {\n\t\t\tcontext: getContext(),\n\t\t};\n\t}\n\n\t/**\n\t * Return the current time of the Context clock plus the lookAhead.\n\t * @example\n\t * setInterval(() => {\n\t * \tconsole.log(Tone.now());\n\t * }, 100);\n\t */\n\tnow(): Seconds {\n\t\treturn this.context.currentTime + this.context.lookAhead;\n\t}\n\n\t/**\n\t * Return the current time of the Context clock without any lookAhead.\n\t * @example\n\t * setInterval(() => {\n\t * \tconsole.log(Tone.immediate());\n\t * }, 100);\n\t */\n\timmediate(): Seconds {\n\t\treturn this.context.currentTime;\n\t}\n\n\t/**\n\t * The duration in seconds of one sample.\n\t * @example\n\t * console.log(Tone.Transport.sampleTime);\n\t */\n\tget sampleTime(): Seconds {\n\t\treturn 1 / this.context.sampleRate;\n\t}\n\n\t/**\n\t * The number of seconds of 1 processing block (128 samples)\n\t * @example\n\t * console.log(Tone.Destination.blockTime);\n\t */\n\tget blockTime(): Seconds {\n\t\treturn 128 / this.context.sampleRate;\n\t}\n\n\t/**\n\t * Convert the incoming time to seconds. \n\t * This is calculated against the current [[Tone.Transport]] bpm\n\t * @example\n\t * const gain = new Tone.Gain();\n\t * setInterval(() => console.log(gain.toSeconds(\"4n\")), 100);\n\t * // ramp the tempo to 60 bpm over 30 seconds\n\t * Tone.getTransport().bpm.rampTo(60, 30);\n\t */\n\ttoSeconds(time?: Time): Seconds {\n\t\treturn new TimeClass(this.context, time).toSeconds();\n\t}\n\n\t/**\n\t * Convert the input to a frequency number\n\t * @example\n\t * const gain = new Tone.Gain();\n\t * console.log(gain.toFrequency(\"4n\"));\n\t */\n\ttoFrequency(freq: Frequency): Hertz {\n\t\treturn new FrequencyClass(this.context, freq).toFrequency();\n\t}\n\n\t/**\n\t * Convert the input time into ticks\n\t * @example\n\t * const gain = new Tone.Gain();\n\t * console.log(gain.toTicks(\"4n\"));\n\t */\n\ttoTicks(time?: Time | TimeClass): Ticks {\n\t\treturn new TransportTimeClass(this.context, time).toTicks();\n\t}\n\n\t//-------------------------------------\n\t// \tGET/SET\n\t//-------------------------------------\n\n\t/**\n\t * Get a subset of the properties which are in the partial props\n\t */\n\tprotected _getPartialProperties(props: Options): Partial {\n\t\tconst options = this.get();\n\t\t// remove attributes from the prop that are not in the partial\n\t\tObject.keys(options).forEach(name => {\n\t\t\tif (isUndef(props[name])) {\n\t\t\t\tdelete options[name];\n\t\t\t}\n\t\t});\n\t\treturn options;\n\t}\n\n\t/**\n\t * Get the object's attributes.\n\t * @example\n\t * const osc = new Tone.Oscillator();\n\t * console.log(osc.get());\n\t */\n\tget(): Options {\n\t\tconst defaults = getDefaultsFromInstance(this) as Options;\n\t\tObject.keys(defaults).forEach(attribute => {\n\t\t\tif (Reflect.has(this, attribute)) {\n\t\t\t\tconst member = this[attribute];\n\t\t\t\tif (isDefined(member) && isDefined(member.value) && isDefined(member.setValueAtTime)) {\n\t\t\t\t\tdefaults[attribute] = member.value;\n\t\t\t\t} else if (member instanceof ToneWithContext) {\n\t\t\t\t\tdefaults[attribute] = member._getPartialProperties(defaults[attribute]);\n\t\t\t\t\t// otherwise make sure it's a serializable type\n\t\t\t\t} else if (isArray(member) || isNumber(member) || isString(member) || isBoolean(member)) {\n\t\t\t\t\tdefaults[attribute] = member;\n\t\t\t\t} else {\n\t\t\t\t\t// remove all undefined and unserializable attributes\n\t\t\t\t\tdelete defaults[attribute];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn defaults;\n\t}\n\n\t/**\n\t * Set multiple properties at once with an object.\n\t * @example\n\t * const filter = new Tone.Filter().toDestination();\n\t * // set values using an object\n\t * filter.set({\n\t * \tfrequency: \"C6\",\n\t * \ttype: \"highpass\"\n\t * });\n\t * const player = new Tone.Player(\"https://tonejs.github.io/audio/berklee/Analogsynth_octaves_highmid.mp3\").connect(filter);\n\t * player.autostart = true;\n\t */\n\tset(props: RecursivePartial): this {\n\t\tObject.keys(props).forEach(attribute => {\n\t\t\tif (Reflect.has(this, attribute) && isDefined(this[attribute])) {\n\t\t\t\tif (this[attribute] && isDefined(this[attribute].value) && isDefined(this[attribute].setValueAtTime)) {\n\t\t\t\t\t// small optimization\n\t\t\t\t\tif (this[attribute].value !== props[attribute]) {\n\t\t\t\t\t\tthis[attribute].value = props[attribute];\n\t\t\t\t\t}\n\t\t\t\t} else if (this[attribute] instanceof ToneWithContext) {\n\t\t\t\t\tthis[attribute].set(props[attribute]);\n\t\t\t\t} else {\n\t\t\t\t\tthis[attribute] = props[attribute];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn this;\n\t}\n}\n","import { Seconds } from \"../type/Units\";\nimport { Timeline, TimelineEvent } from \"./Timeline\";\nimport { assertRange } from \"./Debug\";\n\nexport type BasicPlaybackState = \"started\" | \"stopped\";\nexport type PlaybackState = BasicPlaybackState | \"paused\";\n\nexport interface StateTimelineEvent extends TimelineEvent {\n\tstate: PlaybackState;\n}\n\n/**\n * A Timeline State. Provides the methods: `setStateAtTime(\"state\", time)` and `getValueAtTime(time)`\n * @param initial The initial state of the StateTimeline. Defaults to `undefined`\n */\nexport class StateTimeline extends Timeline {\n\n\treadonly name: string = \"StateTimeline\";\n\n\t/**\n\t * The initial state\n\t */\n\tprivate _initial: PlaybackState;\n\n\tconstructor(initial: PlaybackState = \"stopped\") {\n\t\tsuper();\n\t\tthis._initial = initial;\n\t\tthis.setStateAtTime(this._initial, 0);\n\t}\n\n\t/**\n\t * Returns the scheduled state scheduled before or at\n\t * the given time.\n\t * @param time The time to query.\n\t * @return The name of the state input in setStateAtTime.\n\t */\n\tgetValueAtTime(time: Seconds): PlaybackState {\n\t\tconst event = this.get(time);\n\t\tif (event !== null) {\n\t\t\treturn event.state;\n\t\t} else {\n\t\t\treturn this._initial;\n\t\t}\n\t}\n\n\t/**\n\t * Add a state to the timeline.\n\t * @param state The name of the state to set.\n\t * @param time The time to query.\n\t * @param options Any additional options that are needed in the timeline.\n\t */\n\tsetStateAtTime(state: PlaybackState, time: Seconds, options?: AdditionalOptions): this {\n\t\tassertRange(time, 0);\n\t\tthis.add(Object.assign({}, options, {\n\t\t\tstate,\n\t\t\ttime,\n\t\t}));\n\t\treturn this;\n\t}\n\n\t/**\n\t * Return the event before the time with the given state\n\t * @param state The state to look for\n\t * @param time When to check before\n\t * @return The event with the given state before the time\n\t */\n\tgetLastState(state: PlaybackState, time: number): StateTimelineEvent & AdditionalOptions | undefined {\n\t\t// time = this.toSeconds(time);\n\t\tconst index = this._search(time);\n\t\tfor (let i = index; i >= 0; i--) {\n\t\t\tconst event = this._timeline[i];\n\t\t\tif (event.state === state) {\n\t\t\t\treturn event;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return the event after the time with the given state\n\t * @param state The state to look for\n\t * @param time When to check from\n\t * @return The event with the given state after the time\n\t */\n\tgetNextState(state: PlaybackState, time: number): StateTimelineEvent & AdditionalOptions | undefined {\n\t\t// time = this.toSeconds(time);\n\t\tconst index = this._search(time);\n\t\tif (index !== -1) {\n\t\t\tfor (let i = index; i < this._timeline.length; i++) {\n\t\t\t\tconst event = this._timeline[i];\n\t\t\t\tif (event.state === state) {\n\t\t\t\t\treturn event;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { AbstractParam } from \"../context/AbstractParam\";\nimport { dbToGain, gainToDb } from \"../type/Conversions\";\nimport { Decibels, Frequency, Positive, Time, UnitMap, UnitName } from \"../type/Units\";\nimport { isAudioParam } from \"../util/AdvancedTypeCheck\";\nimport { optionsFromArguments } from \"../util/Defaults\";\nimport { Timeline } from \"../util/Timeline\";\nimport { isDefined } from \"../util/TypeCheck\";\nimport { ToneWithContext, ToneWithContextOptions } from \"./ToneWithContext\";\nimport { EQ } from \"../util/Math\";\nimport { assert, assertRange } from \"../util/Debug\";\n\nexport interface ParamOptions extends ToneWithContextOptions {\n\tunits: TypeName;\n\tvalue?: UnitMap[TypeName];\n\tparam: AudioParam | Param;\n\tconvert: boolean;\n\tminValue?: number;\n\tmaxValue?: number;\n\tswappable?: boolean;\n}\n\n/**\n * the possible automation types\n */\ntype AutomationType = \"linearRampToValueAtTime\" | \"exponentialRampToValueAtTime\" | \"setValueAtTime\" | \"setTargetAtTime\" | \"cancelScheduledValues\";\n\ninterface TargetAutomationEvent {\n\ttype: \"setTargetAtTime\";\n\ttime: number;\n\tvalue: number;\n\tconstant: number;\n}\n\ninterface NormalAutomationEvent {\n\ttype: Exclude;\n\ttime: number;\n\tvalue: number;\n}\n/**\n * The events on the automation\n */\nexport type AutomationEvent = NormalAutomationEvent | TargetAutomationEvent;\n\n/**\n * Param wraps the native Web Audio's AudioParam to provide\n * additional unit conversion functionality. It also\n * serves as a base-class for classes which have a single,\n * automatable parameter.\n * @category Core\n */\nexport class Param\n\textends ToneWithContext>\n\timplements AbstractParam {\n\n\treadonly name: string = \"Param\";\n\n\treadonly input: GainNode | AudioParam;\n\n\treadonly units: UnitName;\n\tconvert: boolean;\n\toverridden = false;\n\n\t/**\n\t * The timeline which tracks all of the automations.\n\t */\n\tprotected _events: Timeline;\n\n\t/**\n\t * The native parameter to control\n\t */\n\tprotected _param: AudioParam;\n\n\t/**\n\t * The default value before anything is assigned\n\t */\n\tprotected _initialValue: number;\n\n\t/**\n\t * The minimum output value\n\t */\n\tprivate _minOutput = 1e-7;\n\n\t/**\n\t * Private reference to the min and max values if passed into the constructor\n\t */\n\tprivate readonly _minValue?: number;\n\tprivate readonly _maxValue?: number;\n\n\t/**\n\t * If the underlying AudioParam can be swapped out\n\t * using the setParam method. \n\t */\n\tprotected readonly _swappable: boolean;\n\n\t/**\n\t * @param param The AudioParam to wrap\n\t * @param units The unit name\n\t * @param convert Whether or not to convert the value to the target units\n\t */\n\tconstructor(param: AudioParam, units?: TypeName, convert?: boolean);\n\tconstructor(options: Partial>);\n\tconstructor() {\n\t\tsuper(optionsFromArguments(Param.getDefaults(), arguments, [\"param\", \"units\", \"convert\"]));\n\n\t\tconst options = optionsFromArguments(Param.getDefaults(), arguments, [\"param\", \"units\", \"convert\"]);\n\n\t\tassert(isDefined(options.param) &&\n\t\t\t(isAudioParam(options.param) || options.param instanceof Param), \"param must be an AudioParam\");\n\n\t\twhile (!isAudioParam(options.param)) {\n\t\t\toptions.param = options.param._param;\n\t\t}\n\n\t\tthis._swappable = isDefined(options.swappable) ? options.swappable : false;\n\t\tif (this._swappable) {\n\t\t\tthis.input = this.context.createGain();\n\t\t\t// initialize\n\t\t\tthis._param = options.param;\n\t\t\tthis.input.connect(this._param);\n\t\t} else {\n\t\t\tthis._param = this.input = options.param;\n\t\t}\n\t\tthis._events = new Timeline(1000);\n\t\tthis._initialValue = this._param.defaultValue;\n\t\tthis.units = options.units;\n\t\tthis.convert = options.convert;\n\t\tthis._minValue = options.minValue;\n\t\tthis._maxValue = options.maxValue;\n\n\t\t// if the value is defined, set it immediately\n\t\tif (isDefined(options.value) && options.value !== this._toType(this._initialValue)) {\n\t\t\tthis.setValueAtTime(options.value, 0);\n\t\t}\n\t}\n\n\tstatic getDefaults(): ParamOptions {\n\t\treturn Object.assign(ToneWithContext.getDefaults(), {\n\t\t\tconvert: true,\n\t\t\tunits: \"number\" as UnitName,\n\t\t} as ParamOptions);\n\t}\n\n\tget value(): UnitMap[TypeName] {\n\t\tconst now = this.now();\n\t\treturn this.getValueAtTime(now);\n\t}\n\tset value(value) {\n\t\tthis.cancelScheduledValues(this.now());\n\t\tthis.setValueAtTime(value, this.now());\n\t}\n\n\tget minValue(): number {\n\t\t// if it's not the default minValue, return it\n\t\tif (isDefined(this._minValue)) {\n\t\t\treturn this._minValue;\n\t\t} else if (this.units === \"time\" || this.units === \"frequency\" ||\n\t\t\tthis.units === \"normalRange\" || this.units === \"positive\" ||\n\t\t\tthis.units === \"transportTime\" || this.units === \"ticks\" ||\n\t\t\tthis.units === \"bpm\" || this.units === \"hertz\" || this.units === \"samples\") {\n\t\t\treturn 0;\n\t\t} else if (this.units === \"audioRange\") {\n\t\t\treturn -1;\n\t\t} else if (this.units === \"decibels\") {\n\t\t\treturn -Infinity;\n\t\t} else {\n\t\t\treturn this._param.minValue;\n\t\t}\n\t}\n\n\tget maxValue(): number {\n\t\tif (isDefined(this._maxValue)) {\n\t\t\treturn this._maxValue;\n\t\t} else if (this.units === \"normalRange\" ||\n\t\t\tthis.units === \"audioRange\") {\n\t\t\treturn 1;\n\t\t} else {\n\t\t\treturn this._param.maxValue;\n\t\t}\n\t}\n\n\t/**\n\t * Type guard based on the unit name\n\t */\n\tprivate _is(arg: any, type: UnitName): arg is T {\n\t\treturn this.units === type;\n\t}\n\n\t/**\n\t * Make sure the value is always in the defined range\n\t */\n\tprivate _assertRange(value: number): number {\n\t\tif (isDefined(this.maxValue) && isDefined(this.minValue)) {\n\t\t\tassertRange(value, this._fromType(this.minValue), this._fromType(this.maxValue));\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Convert the given value from the type specified by Param.units\n\t * into the destination value (such as Gain or Frequency).\n\t */\n\tprotected _fromType(val: UnitMap[TypeName]): number {\n\t\tif (this.convert && !this.overridden) {\n\t\t\tif (this._is