{"version":3,"sources":["../../Tone/version.ts","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/automation-events/build/es5/bundle.js","../../../src/factories/abort-error.ts","../../../src/factories/add-active-input-connection-to-audio-node.ts","../../../src/factories/add-audio-node-connections.ts","../../../src/factories/add-audio-param-connections.ts","../../src/globals.ts","../../../src/helpers/is-constructible.ts","../../../src/helpers/split-import-statements.ts","../../../src/factories/add-audio-worklet-module.ts","../../../src/helpers/get-value-for-key.ts","../../../src/helpers/pick-element-from-set.ts","../../../src/helpers/delete-passive-input-connection-to-audio-node.ts","../../../src/helpers/get-event-listeners-of-audio-node.ts","../../../src/helpers/set-internal-state-to-active.ts","../../../src/guards/audio-worklet-node.ts","../../../src/helpers/set-internal-state-to-passive.ts","../../../src/helpers/set-internal-state-to-passive-when-necessary.ts","../../../src/factories/add-connection-to-audio-node.ts","../../../src/factories/add-passive-input-connection-to-audio-node.ts","../../../src/factories/add-silent-connection.ts","../../../src/factories/add-unrendered-audio-worklet-node.ts","../../../src/factories/analyser-node-constructor.ts","../../../src/helpers/is-owned-by-context.ts","../../../src/factories/analyser-node-renderer-factory.ts","../../../src/helpers/test-audio-buffer-copy-channel-methods-out-of-bounds-support.ts","../../../src/factories/index-size-error.ts","../../../src/helpers/wrap-audio-buffer-get-channel-data-method.ts","../../../src/factories/audio-buffer-constructor.ts","../../src/constants.ts","../../../src/helpers/is-active-audio-node.ts","../../../src/factories/audio-buffer-source-node-constructor.ts","../../../src/factories/audio-buffer-source-node-renderer-factory.ts","../../../src/guards/audio-buffer-source-node.ts","../../../src/guards/biquad-filter-node.ts","../../../src/guards/constant-source-node.ts","../../../src/guards/gain-node.ts","../../../src/guards/oscillator-node.ts","../../../src/guards/stereo-panner-node.ts","../../../src/helpers/get-audio-node-connections.ts","../../../src/helpers/get-audio-param-connections.ts","../../../src/helpers/deactivate-active-audio-node-input-connections.ts","../../../src/helpers/deactivate-audio-graph.ts","../../../src/helpers/is-valid-latency-hint.ts","../../../src/factories/audio-context-constructor.ts","../../../src/factories/audio-destination-node-constructor.ts","../../../src/factories/audio-destination-node-renderer-factory.ts","../../../src/factories/audio-listener-factory.ts","../../../src/guards/audio-node.ts","../../../src/guards/audio-node-output-connection.ts","../../../src/helpers/insert-element-in-set.ts","../../../src/helpers/add-active-input-connection-to-audio-param.ts","../../../src/helpers/add-passive-input-connection-to-audio-param.ts","../../../src/guards/native-audio-node-faker.ts","../../../src/helpers/connect-native-audio-node-to-native-audio-node.ts","../../../src/helpers/delete-active-input-connection.ts","../../../src/helpers/delete-active-input-connection-to-audio-param.ts","../../../src/helpers/delete-event-listeners-of-audio-node.ts","../../../src/helpers/delete-passive-input-connection-to-audio-param.ts","../../../src/helpers/disconnect-native-audio-node-from-native-audio-node.ts","../../../src/helpers/get-native-audio-node.ts","../../../src/helpers/get-native-audio-param.ts","../../../src/helpers/is-part-of-a-cycle.ts","../../../src/helpers/is-passive-audio-node.ts","../../../src/helpers/test-audio-node-disconnect-method-support.ts","../../../src/helpers/visit-each-audio-node-once.ts","../../../src/guards/native-audio-node.ts","../../../src/helpers/wrap-audio-node-disconnect-method.ts","../../../src/factories/audio-node-constructor.ts","../../../src/factories/audio-param-factory.ts","../../../src/factories/audio-param-renderer.ts","../../src/read-only-map.ts","../../../src/factories/audio-worklet-node-constructor.ts","../../../src/helpers/copy-from-channel.ts","../../../src/helpers/copy-to-channel.ts","../../../src/helpers/create-nested-arrays.ts","../../../src/helpers/get-audio-worklet-processor.ts","../../../src/factories/audio-worklet-node-renderer-factory.ts","../../../src/factories/base-audio-context-constructor.ts","../../../src/factories/biquad-filter-node-constructor.ts","../../../src/factories/biquad-filter-node-renderer-factory.ts","../../../src/factories/cache-test-result.ts","../../../src/factories/channel-merger-node-constructor.ts","../../../src/factories/channel-merger-node-renderer-factory.ts","../../../src/factories/channel-splitter-node-constructor.ts","../../../src/factories/channel-splitter-node-renderer-factory.ts","../../../src/factories/connect-audio-param.ts","../../../src/factories/connect-multiple-outputs.ts","../../../src/factories/connected-native-audio-buffer-source-node-factory.ts","../../../src/factories/constant-source-node-constructor.ts","../../../src/factories/constant-source-node-renderer-factory.ts","../../../src/factories/convert-number-to-unsigned-long.ts","../../../src/factories/convolver-node-constructor.ts","../../../src/factories/convolver-node-renderer-factory.ts","../../../src/factories/create-native-offline-audio-context.ts","../../../src/factories/data-clone-error.ts","../../../src/helpers/detach-array-buffer.ts","../../../src/factories/decode-audio-data.ts","../../../src/factories/decrement-cycle-counter.ts","../../../src/factories/delay-node-constructor.ts","../../../src/factories/delay-node-renderer-factory.ts","../../../src/factories/delete-active-input-connection-to-audio-node.ts","../../../src/factories/delete-unrendered-audio-worklet-node.ts","../../../src/guards/delay-node.ts","../../../src/factories/detect-cycles.ts","../../../src/factories/disconnect-multiple-outputs.ts","../../../src/factories/dynamics-compressor-node-constructor.ts","../../../src/factories/dynamics-compressor-node-renderer-factory.ts","../../../src/factories/encoding-error.ts","../../../src/factories/evaluate-source.ts","../../../src/factories/event-target-constructor.ts","../../../src/factories/expose-current-frame-and-current-time.ts","../../../src/factories/fetch-source.ts","../../../src/factories/gain-node-constructor.ts","../../../src/factories/gain-node-renderer-factory.ts","../../../src/factories/get-active-audio-worklet-node-inputs.ts","../../../src/factories/get-audio-node-renderer.ts","../../../src/factories/get-audio-node-tail-time.ts","../../../src/factories/get-audio-param-renderer.ts","../../../src/factories/get-backup-offline-audio-context.ts","../../../src/factories/invalid-state-error.ts","../../../src/factories/get-native-context.ts","../../../src/factories/get-or-create-backup-offline-audio-context.ts","../../../src/factories/get-unrendered-audio-worklet-nodes.ts","../../../src/factories/invalid-access-error.ts","../../../src/helpers/wrap-iir-filter-node-get-frequency-response-method.ts","../../../src/factories/iir-filter-node-constructor.ts","../../../src/helpers/filter-buffer.ts","../../../src/factories/iir-filter-node-renderer-factory.ts","../../../src/factories/increment-cycle-counter-factory.ts","../../../src/factories/is-any-audio-context.ts","../../../src/factories/is-any-audio-node.ts","../../../src/factories/is-any-audio-param.ts","../../../src/factories/is-any-offline-audio-context.ts","../../../src/factories/is-native-audio-context.ts","../../../src/factories/is-native-audio-node.ts","../../../src/factories/is-native-audio-param.ts","../../../src/factories/is-native-context.ts","../../../src/factories/is-native-offline-audio-context.ts","../../../src/factories/is-secure-context.ts","../../../src/factories/is-supported-promise.ts","../../../src/factories/media-element-audio-source-node-constructor.ts","../../../src/factories/media-stream-audio-destination-node-constructor.ts","../../../src/factories/media-stream-audio-source-node-constructor.ts","../../../src/factories/media-stream-track-audio-source-node-constructor.ts","../../../src/factories/minimal-audio-context-constructor.ts","../../../src/factories/minimal-base-audio-context-constructor.ts","../../../src/helpers/test-promise-support.ts","../../../src/factories/minimal-offline-audio-context-constructor.ts","../../../src/factories/monitor-connections.ts","../../../src/helpers/assign-native-audio-node-option.ts","../../../src/helpers/assign-native-audio-node-options.ts","../../../src/helpers/test-analyser-node-get-float-time-domain-data-method-support.ts","../../../src/helpers/wrap-analyser-node-get-float-time-domain-data-method.ts","../../../src/factories/native-analyser-node-factory.ts","../../../src/factories/native-audio-buffer-constructor.ts","../../../src/helpers/assign-native-audio-node-audio-param-value.ts","../../../src/helpers/wrap-audio-buffer-source-node-start-method-consecutive-calls.ts","../../../src/helpers/wrap-audio-scheduled-source-node-start-method-negative-parameters.ts","../../../src/helpers/wrap-audio-scheduled-source-node-stop-method-negative-parameters.ts","../../../src/factories/native-audio-buffer-source-node-factory.ts","../../../src/factories/native-audio-context-constructor.ts","../../../src/factories/native-audio-destination-node.ts","../../../src/factories/native-audio-worklet-node-constructor.ts","../../../src/helpers/test-clonability-of-audio-worklet-node-options.ts","../../../src/factories/native-audio-worklet-node-factory.ts","../../../src/helpers/compute-buffer-size.ts","../../../src/helpers/clone-audio-worklet-node-options.ts","../../../src/helpers/create-audio-worklet-processor-promise.ts","../../../src/helpers/create-audio-worklet-processor.ts","../../../src/factories/native-audio-worklet-node-faker-factory.ts","../../../src/factories/native-biquad-filter-node.ts","../../../src/factories/native-channel-merger-node-factory.ts","../../../src/helpers/wrap-channel-splitter-node.ts","../../../src/factories/native-channel-splitter-node.ts","../../../src/factories/native-constant-source-node-factory.ts","../../../src/helpers/intercept-connections.ts","../../../src/factories/native-constant-source-node-faker-factory.ts","../../../src/factories/native-convolver-node-factory.ts","../../../src/factories/native-delay-node.ts","../../../src/factories/native-dynamics-compressor-node-factory.ts","../../../src/factories/native-gain-node.ts","../../../src/factories/native-iir-filter-node-factory.ts","../../../src/factories/native-iir-filter-node-faker-factory.ts","../../../src/factories/native-media-element-audio-source-node.ts","../../../src/factories/native-media-stream-audio-destination-node.ts","../../../src/factories/native-media-stream-audio-source-node.ts","../../../src/factories/native-media-stream-track-audio-source-node-factory.ts","../../../src/factories/native-offline-audio-context-constructor.ts","../../../src/factories/native-oscillator-node-factory.ts","../../../src/factories/native-panner-node-factory.ts","../../../src/factories/native-panner-node-faker-factory.ts","../../../src/factories/native-periodic-wave-factory.ts","../../../src/factories/native-script-processor-node.ts","../../../src/factories/native-stereo-panner-node-factory.ts","../../../src/factories/native-stereo-panner-node-faker-factory.ts","../../../src/factories/native-wave-shaper-node-factory.ts","../../../src/factories/native-wave-shaper-node-faker-factory.ts","../../../src/factories/not-supported-error.ts","../../../src/factories/offline-audio-context-constructor.ts","../../../src/factories/oscillator-node-constructor.ts","../../../src/factories/oscillator-node-renderer-factory.ts","../../../src/factories/panner-node-constructor.ts","../../../src/factories/panner-node-renderer-factory.ts","../../../src/factories/periodic-wave-constructor.ts","../../../src/factories/render-automation.ts","../../../src/factories/render-inputs-of-audio-node.ts","../../../src/factories/render-inputs-of-audio-param.ts","../../../src/factories/render-native-offline-audio-context.ts","../../../src/factories/set-active-audio-worklet-node-inputs.ts","../../../src/factories/set-audio-node-tail-time.ts","../../../src/factories/start-rendering.ts","../../../src/factories/stereo-panner-node-constructor.ts","../../../src/factories/stereo-panner-node-renderer-factory.ts","../../../src/factories/test-audio-buffer-constructor-support.ts","../../../src/factories/test-audio-buffer-copy-channel-methods-subarray-support.ts","../../../src/factories/test-audio-context-close-method-support.ts","../../../src/factories/test-audio-context-decode-audio-data-method-type-error-support.ts","../../../src/factories/test-audio-context-options-support.ts","../../../src/factories/test-audio-node-connect-method-support.ts","../../../src/factories/test-audio-worklet-processor-no-outputs-support.ts","../../../src/factories/test-audio-worklet-processor-post-message-support.ts","../../../src/factories/test-channel-merger-node-channel-count-support.ts","../../../src/factories/test-constant-source-node-accurate-scheduling-support.ts","../../../src/factories/test-convolver-node-buffer-reassignability-support.ts","../../../src/factories/test-convolver-node-channel-count-support.ts","../../../src/factories/test-is-secure-context-support.ts","../../../src/factories/test-media-stream-audio-source-node-media-stream-without-audio-track-support.ts","../../../src/factories/test-offline-audio-context-current-time-support.ts","../../../src/factories/test-stereo-panner-node-default-value-support.ts","../../../src/factories/unknown-error.ts","../../../src/factories/wave-shaper-node-constructor.ts","../../../src/factories/wave-shaper-node-renderer-factory.ts","../../../src/factories/window.ts","../../../src/factories/wrap-audio-buffer-copy-channel-methods.ts","../../../src/factories/wrap-audio-buffer-copy-channel-methods-out-of-bounds.ts","../../../src/factories/wrap-audio-buffer-source-node-stop-method-nullified-buffer.ts","../../../src/factories/wrap-channel-merger-node.ts","../../../src/helpers/is-dc-curve.ts","../../../src/helpers/overwrite-accessors.ts","../../../src/helpers/sanitize-audio-worklet-node-options.ts","../../../src/helpers/sanitize-channel-splitter-options.ts","../../../src/helpers/sanitize-periodic-wave-options.ts","../../../src/helpers/test-audio-buffer-source-node-start-method-consecutive-calls-support.ts","../../../src/helpers/test-audio-buffer-source-node-start-method-offset-clamping-support.ts","../../../src/helpers/test-audio-buffer-source-node-stop-method-nullified-buffer-support.ts","../../../src/helpers/test-audio-scheduled-source-node-start-method-negative-parameters-support.ts","../../../src/helpers/test-audio-scheduled-source-node-stop-method-consecutive-calls-support.ts","../../../src/helpers/test-audio-scheduled-source-node-stop-method-negative-parameters-support.ts","../../../src/helpers/test-dom-exception-constructor-support.ts","../../../src/helpers/test-transferables-support.ts","../../../src/helpers/wrap-audio-buffer-source-node-start-method-offset-clamping.ts","../../../src/helpers/wrap-audio-scheduled-source-node-stop-method-consecutive-calls.ts","../../../src/helpers/wrap-event-listener.ts","../../../src/interfaces/index.ts","../../../src/types/index.ts","../../src/module.ts","../../../../Tone/core/util/Debug.ts","../../../../Tone/core/util/TypeCheck.ts","../../../../Tone/core/context/AudioContext.ts","../node_modules/tone/node_modules/tslib/tslib.es6.js","../../../../Tone/core/clock/Ticker.ts","../../../../Tone/core/util/AdvancedTypeCheck.ts","../../../../Tone/core/util/Defaults.ts","../../../Tone/core/Tone.ts","../../../../Tone/core/util/Math.ts","../../../../Tone/core/util/Timeline.ts","../../../../Tone/core/context/ContextInitialization.ts","../../../../Tone/core/util/Emitter.ts","../../../../Tone/core/context/BaseContext.ts","../../../../Tone/core/context/Context.ts","../../../../Tone/core/context/DummyContext.ts","../../../../Tone/core/util/Interface.ts","../../../../Tone/core/context/ToneAudioBuffer.ts","../../../../Tone/core/context/OfflineContext.ts","../../../Tone/core/Global.ts","../../../../Tone/core/type/Conversions.ts","../../../../Tone/core/type/TimeBase.ts","../../../../Tone/core/type/Time.ts","../../../../Tone/core/type/Frequency.ts","../../../../Tone/core/type/TransportTime.ts","../../../../Tone/core/context/ToneWithContext.ts","../../../../Tone/core/util/StateTimeline.ts","../../../../Tone/core/context/Param.ts","../../../../Tone/core/context/ToneAudioNode.ts","../../../../Tone/core/context/Gain.ts","../../../Tone/source/OneShotSource.ts","../../../Tone/signal/ToneConstantSource.ts","../../../Tone/signal/Signal.ts","../../../../Tone/core/clock/TickParam.ts","../../../../Tone/core/clock/TickSignal.ts","../../../../Tone/core/clock/TickSource.ts","../../../../Tone/core/clock/Clock.ts","../../../../Tone/core/context/Delay.ts","../../../../Tone/core/context/Offline.ts","../../../../Tone/core/context/ToneAudioBuffers.ts","../../../../Tone/core/type/Midi.ts","../../../../Tone/core/type/Ticks.ts","../../../../Tone/core/util/Draw.ts","../../../../Tone/core/util/IntervalTimeline.ts","../../../../Tone/core/type/Units.ts","../../../Tone/core/index.ts","../../../../Tone/component/channel/Volume.ts","../../../../Tone/core/context/Destination.ts","../../../../Tone/core/util/TimelineValue.ts","../../../../Tone/core/clock/TransportEvent.ts","../../../../Tone/core/clock/TransportRepeatEvent.ts","../../../../Tone/core/clock/Transport.ts","../../../Tone/source/Source.ts","../../../../Tone/source/buffer/ToneBufferSource.ts","../../../Tone/source/Noise.ts","../../../Tone/source/UserMedia.ts","../../../../Tone/source/oscillator/OscillatorInterface.ts","../../../../Tone/source/oscillator/ToneOscillatorNode.ts","../../../../Tone/source/oscillator/Oscillator.ts","../../../Tone/signal/SignalOperator.ts","../../../Tone/signal/WaveShaper.ts","../../../Tone/signal/AudioToGain.ts","../../../Tone/signal/Multiply.ts","../../../../Tone/source/oscillator/AMOscillator.ts","../../../../Tone/source/oscillator/FMOscillator.ts","../../../../Tone/source/oscillator/PulseOscillator.ts","../../../../Tone/source/oscillator/FatOscillator.ts","../../../../Tone/source/oscillator/PWMOscillator.ts","../../../../Tone/source/oscillator/OmniOscillator.ts","../../../Tone/signal/Add.ts","../../../Tone/signal/Scale.ts","../../../Tone/signal/Zero.ts","../../../../Tone/source/oscillator/LFO.ts","../../../../Tone/core/util/Decorator.ts","../../../../Tone/source/buffer/Player.ts","../../../../Tone/source/buffer/Players.ts","../../../../Tone/source/buffer/GrainPlayer.ts","../../../Tone/source/index.ts","../../../Tone/signal/Abs.ts","../../../Tone/signal/GainToAudio.ts","../../../Tone/signal/Negate.ts","../../../Tone/signal/Subtract.ts","../../../Tone/signal/GreaterThanZero.ts","../../../Tone/signal/GreaterThan.ts","../../../Tone/signal/Pow.ts","../../../Tone/signal/ScaleExp.ts","../../../Tone/signal/SyncedSignal.ts","../../../Tone/signal/index.ts","../../../../Tone/component/envelope/Envelope.ts","../../../Tone/instrument/Instrument.ts","../../../Tone/instrument/Monophonic.ts","../../../../Tone/component/envelope/AmplitudeEnvelope.ts","../../../Tone/instrument/Synth.ts","../../../Tone/instrument/ModulationSynth.ts","../../../Tone/instrument/AMSynth.ts","../../../../Tone/component/filter/BiquadFilter.ts","../../../../Tone/component/filter/Filter.ts","../../../../Tone/component/envelope/FrequencyEnvelope.ts","../../../Tone/instrument/MonoSynth.ts","../../../Tone/instrument/DuoSynth.ts","../../../Tone/instrument/FMSynth.ts","../../../Tone/instrument/MetalSynth.ts","../../../Tone/instrument/MembraneSynth.ts","../../../Tone/instrument/NoiseSynth.ts","../../../../Tone/core/worklet/WorkletGlobalScope.ts","../../../../Tone/core/worklet/ToneAudioWorklet.ts","../../../../Tone/core/worklet/ToneAudioWorkletProcessor.worklet.ts","../../../../Tone/core/worklet/SingleIOProcessor.worklet.ts","../../../../Tone/core/worklet/DelayLine.worklet.ts","../../../../Tone/component/filter/FeedbackCombFilter.worklet.ts","../../../../Tone/component/filter/FeedbackCombFilter.ts","../../../../Tone/component/filter/OnePoleFilter.ts","../../../../Tone/component/filter/LowpassCombFilter.ts","../../../Tone/instrument/PluckSynth.ts","../../../Tone/instrument/PolySynth.ts","../../../Tone/instrument/Sampler.ts","../../../Tone/instrument/index.ts","../../../Tone/event/ToneEvent.ts","../../../Tone/event/Loop.ts","../../../Tone/event/Part.ts","../../../Tone/event/PatternGenerator.ts","../../../Tone/event/Pattern.ts","../../../Tone/event/Sequence.ts","../../../Tone/event/index.ts","../../../../Tone/component/channel/CrossFade.ts","../../../Tone/effect/Effect.ts","../../../Tone/effect/LFOEffect.ts","../../../Tone/effect/AutoFilter.ts","../../../../Tone/component/channel/Panner.ts","../../../Tone/effect/AutoPanner.ts","../../../../Tone/component/analysis/Follower.ts","../../../Tone/effect/AutoWah.ts","../../../Tone/effect/BitCrusher.worklet.ts","../../../Tone/effect/BitCrusher.ts","../../../Tone/effect/Chebyshev.ts","../../../../Tone/component/channel/Split.ts","../../../../Tone/component/channel/Merge.ts","../../../Tone/effect/StereoEffect.ts","../../../Tone/effect/StereoFeedbackEffect.ts","../../../Tone/effect/Chorus.ts","../../../Tone/effect/Distortion.ts","../../../Tone/effect/FeedbackEffect.ts","../../../Tone/effect/FeedbackDelay.ts","../../../../Tone/component/filter/PhaseShiftAllpass.ts","../../../Tone/effect/FrequencyShifter.ts","../../../Tone/effect/Freeverb.ts","../../../Tone/effect/JCReverb.ts","../../../Tone/effect/StereoXFeedbackEffect.ts","../../../Tone/effect/PingPongDelay.ts","../../../Tone/effect/PitchShift.ts","../../../Tone/effect/Phaser.ts","../../../Tone/effect/Reverb.ts","../../../../Tone/component/channel/MidSideSplit.ts","../../../../Tone/component/channel/MidSideMerge.ts","../../../Tone/effect/MidSideEffect.ts","../../../Tone/effect/StereoWidener.ts","../../../Tone/effect/Tremolo.ts","../../../Tone/effect/Vibrato.ts","../../../Tone/effect/index.ts","../../../../Tone/component/analysis/Analyser.ts","../../../../Tone/component/analysis/MeterBase.ts","../../../../Tone/component/analysis/Meter.ts","../../../../Tone/component/analysis/FFT.ts","../../../../Tone/component/analysis/DCMeter.ts","../../../../Tone/component/analysis/Waveform.ts","../../../../Tone/component/channel/Solo.ts","../../../../Tone/component/channel/PanVol.ts","../../../../Tone/component/channel/Channel.ts","../../../../Tone/component/channel/MultibandSplit.ts","../../../../Tone/core/context/Listener.ts","../../../../Tone/component/channel/Panner3D.ts","../../../../Tone/component/channel/Recorder.ts","../../../../Tone/component/dynamics/Compressor.ts","../../../../Tone/component/dynamics/Gate.ts","../../../../Tone/component/dynamics/Limiter.ts","../../../../Tone/component/dynamics/MidSideCompressor.ts","../../../../Tone/component/dynamics/MultibandCompressor.ts","../../../../Tone/component/filter/EQ3.ts","../../../../Tone/component/filter/Convolver.ts","../../../Tone/component/index.ts","../../Tone/classes.ts","../../Tone/index.ts","../node_modules/scroll-to-anchor/index.js","../node_modules/document-ready/index.js","../node_modules/nanoassert/index.js","../node_modules/nanoscheduler/index.js","../node_modules/nanotiming/browser.js","../node_modules/wayfarer/trie.js","../node_modules/wayfarer/index.js","../node_modules/nanorouter/index.js","../node_modules/nanomorph/lib/events.js","../node_modules/nanomorph/lib/morph.js","../node_modules/nanomorph/index.js","../node_modules/nanoquery/browser.js","../node_modules/nanohref/index.js","../node_modules/nanoraf/index.js","../node_modules/remove-array-items/index.js","../node_modules/nanobus/index.js","../node_modules/nanolru/index.js","../node_modules/choo/component/cache.js","../node_modules/choo/index.js","../node_modules/hyperscript-attribute-to-property/index.js","../node_modules/hyperx/index.js","../node_modules/nanohtml/lib/append-child.js","../node_modules/nanohtml/lib/svg-tags.js","../node_modules/nanohtml/lib/bool-props.js","../node_modules/nanohtml/lib/direct-props.js","../node_modules/nanohtml/lib/dom.js","../node_modules/nanohtml/lib/browser.js","../node_modules/choo/html/index.js","store/drag.js","store/recording.js","../node_modules/process/browser.js","../node_modules/path-browserify/index.js","store/utility/shuffle.js","audio/config.json","store/load.js","store/utility/previewSample.js","store/utility/playSample.js","store/utility/stopLoop.js","store/sound.js","components/icons.js","store/utility/requestMic.js","store/ui.js","store/tutorial.js","../node_modules/text-encoding/lib/encoding-indexes.js","../node_modules/text-encoding/lib/encoding.js","../node_modules/text-encoding/index.js","../src/FileSaver.js","store/utility/getSamplesFromInput.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/buffer/index.js","../node_modules/jszip/dist/jszip.min.js","store/utility/getFilesFromZip.js","store/utility/getZipFile.js","store/importExport.js","store/theme.js","store/utility/featureDetection.js","store.js","components/elements.js","components/sound-library.js","components/sample-board.js","components/recording.js","components/loading.js","components/logo.js","../node_modules/nanohtml/lib/raw-browser.js","../node_modules/choo/html/raw.js","components/tutorial.js","components/sharing-dialog.js","app.js","main.js"],"names":["global","factory","exports","module","require","define","amd","globalThis","self","automationEvents","_slicedToArray","_classCallCheck","_createClass","_interopDefaultLegacy","e","_slicedToArray__default","_classCallCheck__default","_createClass__default","createExtendedExponentialRampToValueAutomationEvent","value","endTime","insertTime","type","createExtendedLinearRampToValueAutomationEvent","createSetValueAutomationEvent","startTime","createSetValueCurveAutomationEvent","values","duration","getTargetValueAtTime","time","valueAtStartTime","_ref","target","timeConstant","Math","exp","isExponentialRampToValueAutomationEvent","automationEvent","isLinearRampToValueAutomationEvent","isAnyRampToValueAutomationEvent","isSetValueAutomationEvent","isSetValueCurveAutomationEvent","getValueOfAutomationEventAtIndexAtTime","index","defaultValue","undefined","length","getEndTimeAndValueOfPreviousAutomationEvent","currentAutomationEvent","nextAutomationEvent","isCancelAndHoldAutomationEvent","isCancelScheduledValuesAutomationEvent","getEventTime","cancelTime","getExponentialRampValueAtTime","pow","getLinearRampValueAtTime","getValueCurveValueAtTime","interpolateValue","theoreticIndex","lowerIndex","floor","upperIndex","ceil","isSetTargetAutomationEvent","AutomationEventList","_automationEvents","_currenTime","_defaultValue","key","Symbol","iterator","eventTime","findIndex","removedAutomationEvent","slice","lastAutomationEvent","Error","startValue","truncatedAutomationEvent","push","getValue","Float32Array","_index","previousAutomationEvent","persistentAutomationEvent","splice","remainingAutomationEvents","firstRemainingAutomationEvent","unshift","_getEndTimeAndValueOf","_getEndTimeAndValueOf2","_getEndTimeAndValueOf3","_getEndTimeAndValueOf4","_startTime","_value","createCancelAndHoldAutomationEvent","createCancelScheduledValuesAutomationEvent","createExponentialRampToValueAutomationEvent","createLinearRampToValueAutomationEvent","createSetTargetAutomationEvent","Object","defineProperty","extendStatics","d","b","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","__","constructor","create","__assign","assign","t","s","i","n","arguments","apply","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","result","adopt","done","then","__generator","body","_","f","y","g","label","sent","trys","ops","verb","v","op","TypeError","pop","__createBinding","o","m","k","k2","enumerable","get","__exportStar","__values","__read","ar","error","__spread","concat","__spreadArrays","il","a","j","jl","__await","__asyncGenerator","asyncIterator","q","resume","fulfill","settle","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__setModuleDefault","__importStar","mod","__esModule","__importDefault","default","__classPrivateFieldGet","receiver","privateMap","has","__classPrivateFieldSet","set","LRU","opts","max","cache","head","tail","maxAge","keys","clear","remove","element","_unlink","prev","peek","_checkAge","modified","Date","now","evict","el","children","parentNode","childNodes","state","emitter","dragging","sampleBoard","customSamplePack","selectedSample","on","event","attributes","emit","preventDefault","closest","parent","classList","contains","style","opacity","console","log","onSamplerGrid","item","isRecording","recorder","mic","meter","recordingInterval","recordingTimeout","meterReads","recordedData","recordingSlice","recordedSample","recordingNumber","recordingName","name","window","Tone","start","Recorder","Meter","UserMedia","connect","open","setInterval","catch","clearInterval","clearTimeout","stop","blob","arrayBuffer","buffer","ctx","AudioContext","decodeAudioData","audioBuffer","ToneAudioBuffer","Player","toDestination","position","getNormalizedWidth","bounds","getBoundingClientRect","layerX","width","loopStart","loop","slicedBuffer","file","title","id","toLowerCase","split","join","files","samples","mySample","category","selectedCategory","document","querySelector","scroll","top","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","runClearTimeout","marker","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","len","run","Item","array","noop","nextTick","args","env","argv","version","versions","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","shuffle","x","random","packs","path","config","parcelFiles","getLibraryFiles","filePromises","entries","map","filename","player","url","onload","onerror","reduce","acc","all","provisionPath","sharedPack","filter","hidden","theme","availableSamples","sample","find","includes","fileEntry","onstop","startingPack","shuffledPacks","themePacks","pack","previewSample","playSample","stopLoop","draggingSampleOnBoard","keyIsDown","sampleIndex","nextSampleIndex","activeButtons","sampleId","forEach","addEventListener","onMouseUp","draggingSampleId","hoverSampleId","html","list","record","add","arrowUp","arrowDown","arrowLeft","arrowRight","playCircle","zipFile","link","trash","navigator","mediaDevices","getUserMedia","audio","requestMic","isSoundLibraryOpen","isRecordingOpen","imready","typing","boardLayout","className","activeElement","blur","keyIndex","lastActiveIndex","buttons","querySelectorAll","button","indexToXY","parseInt","tutorialSteps","message","onComplete","webkitAudioContext","bufferPromises","fileReader","FileReader","readAsArrayBuffer","buffers","audioBuffers","JSZip","zip","loadAsync","data","promises","async","getWavHeader","options","numFrames","numChannels","sampleRate","bytesPerSample","isFloat","format","blockAlign","byteRate","dataSize","ArrayBuffer","dv","DataView","writeString","setUint8","charCodeAt","writeUint32","setUint32","writeUint16","setUint16","Uint8Array","getWavBytes","Uint16Array","byteLength","BYTES_PER_ELEMENT","headerBytes","wavBytes","buff","getChannelData","sampleConfig","newSample","JSON","stringify","generateAsync","content","encoder","saveAs","getSamplesFromInput","getFilesFromZip","getZipFile","isAllowed","importFiles","onChange","importZip","click","decoder","TextDecoder","parse","decode","sampleFile","params","URLSearchParams","location","search","today","getMonth","isMobile","test","userAgent","isiPad","match","maxTouchPoints","isSafari","drag","recording","load","sound","ui","tutorial","importExport","store","mobile","ipad","safari","Button","opt","color","activeColor","active","onClick","onMouseDown","classes","Input","placeholder","onFocus","onBlur","Wave","reads","slicePosition","WaveSlice","drums","effects","loops","voice","chords","notes","exportPack","SoundLibraryItem","soundLibraryHidden","mySamples","defaultSamples","soundList","ShareButtons","agreeWithTerms","openLibraryButton","stopAllSoundsButton","openRecordingButton","toggleShuffleButton","droppingClass","dispatchEvent","KeyboardEvent","SampleListItem","background","onMouseOver","recordingHidden","logo","hole","elBound","bottom","left","innerWidth","height","Logo","uploading","sharedUrl","agree","SoundLibrary","SampleBoard","Recording","LoadingMessage","Tutorial","SharingDialog","SamplerApp","onKeyDown","onKeyUp","layout","onTouchStart","Event","onTouchEnd","choo","App","app","hash","use","route","mount"],"mappings":"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A,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,KAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,OAAA,OAAA,KAAA,MAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,OAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,KAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,KAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,KAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,KAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,KAAA,MAAA,OAAA,MAAA,MAAA,OAAA,KAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,KAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,KAAA,OAAA,OAAA,OAAA,OAAA,KAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,KAAA,KAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,KAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,KAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,KAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,KAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,KAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,KAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,KAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,KAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,KAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,KAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,KAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,KAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,KAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,KAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,KAAA,MAAA,OAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,KAAA,OAAA,OAAA,KAAA,MAAA,OAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,KAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,KAAA,MAAA,KAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,MAAA,MAAA,MAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,KAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,KAAA,KAAA,MAAA,MAAA,MAAA,KAAA,IAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,KAAA,IAAA,MAAA,MAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,KAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,OAAA,OAAA,OAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OAAA,OAAA,MAAA,MAAA,MAAA,MAAA,OAAA,MAAA,OAAA,MAAA,MAAA,MAAA,OAAA,MAAA,MAAA,OAAA,OACA,SAAA,CAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,KAAA,KAAA,IAAA,MAAA,IAAA,KAAA,KAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,IAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,KAAA,MAAA,KAAA,MAAA,MAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MACA,QAAA,CAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,IAAA,MAAA,MAAA,KAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,MAAA,IAAA,MAAA,MAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,OACA,iBAAA,CAAA,CAAA,EAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,KAAA,CAAA,IAAA,MAAA,CAAA,IAAA,MAAA,CAAA,IAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,KAAA,MAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,OAAA,CAAA,MAAA,QACA,QAAA,CAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,MAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,MAAA,MAAA,MAAA,KAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,IAAA,IAAA,MAAA,KAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,KAAA,KAAA,KAAA,KAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,KAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,IAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MACA,QAAA,CAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,MAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,MAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MACA,OAAA,CAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,KAAA,IAAA,KAAA,KACA,aAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACA,aAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACA,aAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACA,aAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,MACA,aAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MACA,aAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,IAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,MACA,aAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MACA,cAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACA,cAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,MACA,cAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,KAAA,KAAA,IAAA,IAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACA,cAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACA,cAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACA,SAAA,CAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MACA,SAAA,CAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MACA,UAAA,CAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,KAAA,IAAA,IAAA,KAAA,IAAA,KAAA,KAAA,IAAA,IAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,KAAA,KAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,MAAA,MAAA,KAAA,IAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACA,cAAA,CAAA,KAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MACA,eAAA,CAAA,KAAA,IAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACA,eAAA,CAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MACA,eAAA,CAAA,KAAA,IAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACA,eAAA,CAAA,KAAA,IAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,MACA,eAAA,CAAA,KAAA,IAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACA,eAAA,CAAA,KAAA,IAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,MACA,eAAA,CAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,KAAA,KAAA,MACA,eAAA,CAAA,KAAA,IAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KACA,eAAA,CAAA,KAAA,IAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,KACA,iBAAA,CAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,IAAA,KAAA,IAAA,KAAA,IAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,IAAA,KAAA,KAAA,IAAA,IAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,IAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,KAAA,OAzCA,CA8CA,MAAA;;;ACksGA,IAAA,EAAA,UAAA,IAzuGA,SAAA,GACA,aAmBA,SAAA,EAAA,EAAA,EAAA,GACA,OAAA,GAAA,GAAA,GAAA,EAjBA,oBAAA,QAAA,OAAA,UACA,EAAA,sBACA,EAAA,oBACA,QAAA,yBAAA,qBA0BA,IAAA,EAAA,KAAA,MAMA,SAAA,EAAA,GACA,QAAA,IAAA,EAAA,MAAA,GACA,GAAA,IAAA,OAAA,GAAA,OAAA,EACA,MAAA,UAAA,4CAwHA,SAAA,EAAA,GACA,OAAA,GAAA,GAAA,GAAA,IAOA,IAAA,EAAA,EAOA,GAAA,EASA,SAAA,EAAA,GAEA,KAAA,OAAA,GAAA,MAAA,KAAA,GAEA,KAAA,OAAA,UAGA,EAAA,UAAA,CAIA,YAAA,WACA,OAAA,KAAA,OAAA,QAWA,KAAA,WACA,OAAA,KAAA,OAAA,OAEA,KAAA,OAAA,MADA,GAYA,QAAA,SAAA,GACA,GAAA,MAAA,QAAA,GAEA,IADA,IAAA,EAAA,EACA,EAAA,QACA,KAAA,OAAA,KAAA,EAAA,YAEA,KAAA,OAAA,KAAA,IAYA,KAAA,SAAA,GACA,GAAA,MAAA,QAAA,GAEA,IADA,IAAA,EAAA,EACA,EAAA,QACA,KAAA,OAAA,QAAA,EAAA,cAEA,KAAA,OAAA,QAAA,KAYA,IAAA,GAAA,EAOA,SAAA,EAAA,EAAA,GACA,GAAA,EACA,MAAA,UAAA,iBACA,OAAA,GAAA,MAOA,SAAA,EAAA,GACA,MAAA,UAAA,kBAAA,EAAA,0BAoCA,SAAA,EAAA,GAOA,OALA,EAAA,OAAA,GAAA,OAAA,cAKA,OAAA,UAAA,eAAA,KAAA,EAAA,GACA,EAAA,GAEA,KAWA,IAAA,EAAA,CACA,CACA,UAAA,CACA,CACA,OAAA,CACA,oBACA,QACA,QAEA,KAAA,UAGA,QAAA,gBAEA,CACA,UAAA,CACA,CACA,OAAA,CACA,MACA,QACA,WACA,UAEA,KAAA,UAEA,CACA,OAAA,CACA,cACA,aACA,aACA,YACA,WACA,aACA,kBACA,KACA,UAEA,KAAA,cAEA,CACA,OAAA,CACA,cACA,aACA,aACA,YACA,WACA,aACA,kBACA,KACA,UAEA,KAAA,cAEA,CACA,OAAA,CACA,cACA,aACA,aACA,YACA,WACA,aACA,kBACA,KACA,UAEA,KAAA,cAEA,CACA,OAAA,CACA,qBACA,WACA,aACA,aACA,YACA,WACA,aACA,mBAEA,KAAA,cAEA,CACA,OAAA,CACA,SACA,WACA,cACA,cACA,mBACA,WACA,aACA,eACA,eACA,aACA,YACA,WACA,aACA,mBAEA,KAAA,cAEA,CACA,OAAA,CACA,kBACA,WACA,WACA,QACA,SACA,aACA,aACA,YACA,WACA,aACA,kBACA,gBAEA,KAAA,cAEA,CACA,OAAA,CACA,cACA,mBACA,SACA,aACA,eACA,aACA,YACA,WACA,aACA,kBACA,UAEA,KAAA,cAEA,CACA,OAAA,CACA,cACA,eACA,WAEA,KAAA,gBAEA,CACA,OAAA,CACA,cACA,cACA,aACA,aACA,YACA,KACA,UAEA,KAAA,eAEA,CACA,OAAA,CACA,cACA,aACA,aAEA,KAAA,eAEA,CACA,OAAA,CACA,cACA,aACA,aAEA,KAAA,eAEA,CACA,OAAA,CACA,cACA,cACA,aACA,YACA,cACA,MAEA,KAAA,eAEA,CACA,OAAA,CACA,eAEA,KAAA,eAEA,CACA,OAAA,CACA,UACA,MACA,OACA,SACA,UAEA,KAAA,UAEA,CACA,OAAA,CACA,UACA,UAEA,KAAA,UAEA,CACA,OAAA,CACA,cACA,MACA,YACA,eAEA,KAAA,aAEA,CACA,OAAA,CACA,UACA,cACA,aACA,YACA,UACA,eAEA,KAAA,eAEA,CACA,OAAA,CACA,SACA,eACA,YAEA,KAAA,gBAEA,CACA,OAAA,CACA,SACA,eACA,YAEA,KAAA,gBAEA,CACA,OAAA,CACA,iBACA,QACA,SACA,QACA,cACA,SACA,aACA,aACA,YACA,WACA,aACA,kBACA,KACA,SACA,WACA,eACA,YAEA,KAAA,gBAEA,CACA,OAAA,CACA,SACA,eACA,YAEA,KAAA,gBAEA,CACA,OAAA,CACA,SACA,cACA,aACA,aACA,YACA,WACA,aACA,kBACA,KACA,SACA,eACA,YAEA,KAAA,gBAEA,CACA,OAAA,CACA,SACA,eACA,YAEA,KAAA,gBAEA,CACA,OAAA,CACA,SACA,eACA,YAEA,KAAA,gBAEA,CACA,OAAA,CACA,SACA,eACA,YAEA,KAAA,gBAEA,CACA,OAAA,CACA,SACA,eACA,YAEA,KAAA,gBAEA,CACA,OAAA,CACA,iBACA,mBAEA,KAAA,mBAGA,QAAA,gCAEA,CACA,UAAA,CACA,CACA,OAAA,CACA,UACA,WACA,kBACA,SACA,UACA,aACA,MACA,YACA,SAEA,KAAA,OAEA,CACA,OAAA,CACA,WAEA,KAAA,YAGA,QAAA,oDAEA,CACA,UAAA,CACA,CACA,OAAA,CACA,OACA,aACA,UACA,SACA,YAEA,KAAA,SAGA,QAAA,qDAEA,CACA,UAAA,CACA,CACA,OAAA,CACA,sBACA,SACA,YAEA,KAAA,UAEA,CACA,OAAA,CACA,cACA,eAEA,KAAA,eAEA,CACA,OAAA,CACA,aACA,QACA,WACA,YACA,YACA,OACA,cACA,UAEA,KAAA,cAGA,QAAA,wCAEA,CACA,UAAA,CACA,CACA,OAAA,CACA,UACA,gBACA,SACA,aACA,SACA,iBACA,iBACA,UACA,WACA,eAEA,KAAA,WAGA,QAAA,sCAEA,CACA,UAAA,CACA,CACA,OAAA,CACA,cACA,aACA,cACA,kBACA,eAEA,KAAA,eAEA,CACA,OAAA,CACA,YAEA,KAAA,YAEA,CACA,OAAA,CACA,SACA,YAEA,KAAA,YAEA,CACA,OAAA,CACA,kBAEA,KAAA,mBAGA,QAAA,mCAMA,EAAA,GACA,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AA,KAAA,EAAA,EAAA,QAAA,EAAA,OAAA,IAAA,EAAA,MAAA,GAAA,EAAA,SAAA,EAAA,QAAA,IAAA,EAAA,MAAA,GAAA,EAAA,KAAA,EAAA,EAAA,MAAA,EAAA,GAAA,EAAA,SAAA,EAAA,GAAA,IAAA,EAAA,OAAA,GAAA,EAAA,QAAA,EAAA,EAAA,OAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,OAAA,GAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,GAAA,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,GAAA,GAAA,EAAA,KAAA,GAAA,KAAA,IAAA,EAAA,GAAA,GAAA,GAAA,GAAA,OAAA,EAAA,QAAA,EAAA,QAAA,IAAA,EAAA,OAAA,MAAA,EAAA,KAAA,EAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,SAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,OAAA,GAAA,EAAA,IAAA,GAAA,EAAA,MAAA,GAAA,OAAA,MAAA,EAAA,EAAA,EAAA,MAAA,IAAA,EAAA,MAAA,MAAA,GAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,SAAA,EAAA,GAAA,GAAA,EAAA,CAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,KAAA,EAAA,IAAA,EAAA,MAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,KAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,KAAA,EAAA,KAAA,EAAA,KAAA,EAAA,KAAA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,CAAA,KAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,KAAA,KAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,GAAA,EAAA,EAAA,EAAA,KAAA,CAAA,KAAA,IAAA,GAAA,EAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,EAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,EA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GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,GAAA,IAAA,EAAA,QAAA,SAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,IAAA,EAAA,IAAA,EAAA,MAAA,IAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,GAAA,GAAA,IAAA,EAAA,GAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,IAAA,EAAA,EAAA,EAAA,GAAA,GAAA,GAAA,IAAA,EAAA,GAAA,KAAA,GAAA,EAAA,IAAA,EAAA,GAAA,IAAA,EAAA,OAAA,EAAA,KAAA,SAAA,EAAA,KAAA,SAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,EAAA,GAAA,IAAA,EAAA,GAAA,KAAA,IAAA,EAAA,IAAA,EAAA,GAAA,EAAA,EAAA,EAAA,GAAA,GAAA,IAAA,GAAA,IAAA,GAAA,GAAA,EAAA,IAAA,EAAA,OAAA,EAAA,GAAA,EAAA,IAAA,IAAA,GAAA,IAAA,GAAA,OAAA,EAAA,IAAA,EAAA,GAAA,EAAA,EAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,EAAA,EAAA,EAAA,EAAA,IAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,EAAA,EAAA,OAAA,GAAA,GAAA,EAAA,IAAA,GAAA,EAAA,EAAA,EAAA,IAAA,IAAA,GAAA,EAAA,EAAA,GAAA,IAAA,EAAA,EAAA,GAAA,IAAA,MAAA,EAAA,EAAA,EAAA,GAAA,GAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,GAAA,EAAA,GAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAA,IAAA,EAAA,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","file":"main.js","sourceRoot":"..\\src","sourcesContent":["export const version: string = \"14.7.58\";\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _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++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\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\nmodule.exports = _unsupportedIterableToArray;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","(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 function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\n var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);\n var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);\n var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);\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\n if (isExponentialRampToValueAutomationEvent(automationEvent) || isLinearRampToValueAutomationEvent(automationEvent)) {\n return automationEvent.endTime;\n }\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\n if (valueAtStartTime === value) {\n return value;\n }\n\n if (0 < valueAtStartTime && 0 < value || valueAtStartTime < 0 && value < 0) {\n return valueAtStartTime * Math.pow(value / valueAtStartTime, (time - startTime) / (endTime - startTime));\n }\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\n if (lowerIndex === upperIndex) {\n return values[lowerIndex];\n }\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__default['default'](this, AutomationEventList);\n\n this._automationEvents = [];\n this._currenTime = 0;\n this._defaultValue = defaultValue;\n }\n\n _createClass__default['default'](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\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\n return getEventTime(currentAutomationEvent) >= eventTime;\n });\n\n var removedAutomationEvent = this._automationEvents[index];\n\n if (index !== -1) {\n this._automationEvents = this._automationEvents.slice(0, index);\n }\n\n if (isCancelAndHoldAutomationEvent(automationEvent)) {\n var lastAutomationEvent = this._automationEvents[this._automationEvents.length - 1];\n\n if (removedAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(removedAutomationEvent)) {\n if (isSetTargetAutomationEvent(lastAutomationEvent)) {\n throw new Error('The internal list is malformed.');\n }\n\n var startTime = isSetValueCurveAutomationEvent(lastAutomationEvent) ? lastAutomationEvent.startTime + lastAutomationEvent.duration : getEventTime(lastAutomationEvent);\n var startValue = 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\n this._automationEvents.push(truncatedAutomationEvent);\n }\n\n if (lastAutomationEvent !== undefined && isSetTargetAutomationEvent(lastAutomationEvent)) {\n this._automationEvents.push(createSetValueAutomationEvent(this.getValue(eventTime), eventTime));\n }\n\n if (lastAutomationEvent !== undefined && isSetValueCurveAutomationEvent(lastAutomationEvent) && lastAutomationEvent.startTime + lastAutomationEvent.duration > eventTime) {\n this._automationEvents[this._automationEvents.length - 1] = createSetValueCurveAutomationEvent(new Float32Array([6, 7]), lastAutomationEvent.startTime, eventTime - lastAutomationEvent.startTime);\n }\n }\n } else {\n var _index = this._automationEvents.findIndex(function (currentAutomationEvent) {\n return getEventTime(currentAutomationEvent) > eventTime;\n });\n\n var previousAutomationEvent = _index === -1 ? this._automationEvents[this._automationEvents.length - 1] : this._automationEvents[_index - 1];\n\n if (previousAutomationEvent !== undefined && isSetValueCurveAutomationEvent(previousAutomationEvent) && getEventTime(previousAutomationEvent) + previousAutomationEvent.duration > eventTime) {\n return false;\n }\n\n var persistentAutomationEvent = isExponentialRampToValueAutomationEvent(automationEvent) ? createExtendedExponentialRampToValueAutomationEvent(automationEvent.value, automationEvent.endTime, this._currenTime) : isLinearRampToValueAutomationEvent(automationEvent) ? createExtendedLinearRampToValueAutomationEvent(automationEvent.value, eventTime, this._currenTime) : automationEvent;\n\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\n this._automationEvents.splice(_index, 0, persistentAutomationEvent);\n }\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\n if (index > 1) {\n var remainingAutomationEvents = this._automationEvents.slice(index - 1);\n\n var firstRemainingAutomationEvent = remainingAutomationEvents[0];\n\n if (isSetTargetAutomationEvent(firstRemainingAutomationEvent)) {\n remainingAutomationEvents.unshift(createSetValueAutomationEvent(getValueOfAutomationEventAtIndexAtTime(this._automationEvents, index - 2, firstRemainingAutomationEvent.startTime, this._defaultValue), firstRemainingAutomationEvent.startTime));\n }\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\n var lastAutomationEvent = this._automationEvents[this._automationEvents.length - 1];\n\n var index = this._automationEvents.findIndex(function (automationEvent) {\n return getEventTime(automationEvent) > time;\n });\n\n var nextAutomationEvent = this._automationEvents[index];\n var currentAutomationEvent = getEventTime(lastAutomationEvent) <= time ? lastAutomationEvent : this._automationEvents[index - 1];\n\n if (currentAutomationEvent !== undefined && isSetTargetAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent) || nextAutomationEvent.insertTime > time)) {\n return getTargetValueAtTime(time, getValueOfAutomationEventAtIndexAtTime(this._automationEvents, index - 2, currentAutomationEvent.startTime, this._defaultValue), currentAutomationEvent);\n }\n\n if (currentAutomationEvent !== undefined && isSetValueAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) {\n return currentAutomationEvent.value;\n }\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\n return currentAutomationEvent.values[currentAutomationEvent.values.length - 1];\n }\n\n if (currentAutomationEvent !== undefined && isAnyRampToValueAutomationEvent(currentAutomationEvent) && (nextAutomationEvent === undefined || !isAnyRampToValueAutomationEvent(nextAutomationEvent))) {\n return currentAutomationEvent.value;\n }\n\n if (nextAutomationEvent !== undefined && isExponentialRampToValueAutomationEvent(nextAutomationEvent)) {\n var _getEndTimeAndValueOf = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, index - 1, currentAutomationEvent, nextAutomationEvent, this._defaultValue),\n _getEndTimeAndValueOf2 = _slicedToArray__default['default'](_getEndTimeAndValueOf, 2),\n startTime = _getEndTimeAndValueOf2[0],\n value = _getEndTimeAndValueOf2[1];\n\n return getExponentialRampValueAtTime(time, startTime, value, nextAutomationEvent);\n }\n\n if (nextAutomationEvent !== undefined && isLinearRampToValueAutomationEvent(nextAutomationEvent)) {\n var _getEndTimeAndValueOf3 = getEndTimeAndValueOfPreviousAutomationEvent(this._automationEvents, index - 1, currentAutomationEvent, nextAutomationEvent, this._defaultValue),\n _getEndTimeAndValueOf4 = _slicedToArray__default['default'](_getEndTimeAndValueOf3, 2),\n _startTime = _getEndTimeAndValueOf4[0],\n _value = _getEndTimeAndValueOf4[1];\n\n return getLinearRampValueAtTime(time, _startTime, _value, nextAutomationEvent);\n }\n\n return this._defaultValue;\n }\n }]);\n\n return AutomationEventList;\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 Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","import { TAbortErrorFactory } from '../types';\n\nexport const createAbortError: TAbortErrorFactory = () => new DOMException('', 'AbortError');\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 { 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 { 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 { 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 ongoingRequests,\n resolvedRequests,\n testAudioWorkletProcessorPostMessageSupport,\n window\n) => {\n return (context, moduleURL, options = { credentials: 'omit' }) => {\n const nativeContext = getNativeContext(context);\n const absoluteUrl = new URL(moduleURL, window.location.href).toString();\n\n // Bug #59: Safari does not implement the audioWorklet property.\n if (nativeContext.audioWorklet !== undefined) {\n return Promise.all([\n fetchSource(moduleURL),\n Promise.resolve(cacheTestResult(testAudioWorkletProcessorPostMessageSupport, testAudioWorkletProcessorPostMessageSupport))\n ]).then(([source, isSupportingPostMessage]) => {\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 patchedSourceWithoutImportStatements = isSupportingPostMessage\n ? sourceWithoutImportStatements\n : sourceWithoutImportStatements.replace(\n /\\s+extends\\s+AudioWorkletProcessor\\s*{/,\n ` extends (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 /*\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 * This is the unminified version of the code used below:\n *\n * ```js\n * `${ importStatements };\n * ((registerProcessor) => {${ sourceWithoutImportStatements }\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 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};(registerProcessor=>{${patchedSourceWithoutImportStatements}\n})((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)}}))`;\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;\n }\n\n // Bug #186: Chrome, Edge and Opera do not allow to create an AudioWorkletNode on a closed AudioContext.\n const backupOfflineAudioContext = getOrCreateBackupOfflineAudioContext(nativeContext);\n\n return backupOfflineAudioContext.audioWorklet.addModule(url, options);\n })\n .finally(() => URL.revokeObjectURL(url));\n });\n }\n\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 promise = fetchSource(moduleURL)\n .then((source) => {\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, Edge and Opera 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\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 rslvdRqstsFCntxt = resolvedRequests.get(context);\n\n if (rslvdRqstsFCntxt === undefined) {\n resolvedRequests.set(context, new Set([moduleURL]));\n } else {\n rslvdRqstsFCntxt.add(moduleURL);\n }\n })\n .finally(() => {\n const ngngRqstsFCntxt = ongoingRequests.get(context);\n\n if (ngngRqstsFCntxt !== undefined) {\n ngngRqstsFCntxt.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 { 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 { TAddConnectionToAudioNodeFactory, 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 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 setTimeout(() => {\n if (isActiveAudioNode(destination)) {\n setInternalStateToPassiveWhenNecessary(destination, activeInputs);\n }\n }, tailTime * 1000);\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 { 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 { 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 { TAddUnrenderedAudioWorkletNodeFactory } from '../types';\n\nexport const createAddUnrenderedAudioWorkletNode: TAddUnrenderedAudioWorkletNodeFactory = (getUnrenderedAudioWorkletNodes) => {\n return (nativeContext, audioWorkletNode) => {\n getUnrenderedAudioWorkletNodes(nativeContext).add(audioWorkletNode);\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 { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAnalyserNode, IAudioNode, 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 (\n proxy: IAnalyserNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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, trace);\n\n return nativeAnalyserNode;\n };\n\n return {\n render(\n proxy: IAnalyserNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ): Promise {\n const renderedNativeAnalyserNode = renderedNativeAnalyserNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeAnalyserNode !== undefined) {\n return Promise.resolve(renderedNativeAnalyserNode);\n }\n\n return createAnalyserNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\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 } 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 extends audioNodeConstructor implements IAudioBufferSourceNode {\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 & Opera 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 { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioBufferSourceNode, IAudioNode, 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 trace: readonly IAudioNode[]\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, trace);\n } else {\n // Bug #149: Safari does not yet support the detune AudioParam.\n await connectAudioParam(nativeOfflineAudioContext, proxy.playbackRate, nativeAudioBufferSourceNode.playbackRate, trace);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioBufferSourceNode, trace);\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 trace: readonly IAudioNode[]\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, trace);\n }\n };\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 { 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 { 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 { 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 const nativeAudioContext = new nativeAudioContextConstructor(options);\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, Edge and Opera 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, Edge and Opera pretend to be running right away, but fire an onstatechange event when the state actually\n * changes 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, Edge and Opera 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 { 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, Opera & 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, IAudioNode, 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 let nativeAudioDestinationNodePromise: null | Promise = null;\n\n const createAudioDestinationNode = async (\n proxy: IAudioDestinationNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\n const nativeAudioDestinationNode = nativeOfflineAudioContext.destination;\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioDestinationNode, trace);\n\n return nativeAudioDestinationNode;\n };\n\n return {\n render(\n proxy: IAudioDestinationNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ): Promise {\n if (nativeAudioDestinationNodePromise === null) {\n nativeAudioDestinationNodePromise = createAudioDestinationNode(proxy, nativeOfflineAudioContext, trace);\n }\n\n return nativeAudioDestinationNodePromise;\n }\n };\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 isNativeOfflineAudioContext\n) => {\n return (context, nativeContext) => {\n const nativeListener = nativeContext.listener;\n\n // Bug #117: Only Chrome, Edge & Opera support the new interface already.\n const createFakeAudioParams = () => {\n const channelMergerNode = createNativeChannelMergerNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'speakers',\n numberOfInputs: 9\n });\n const isOffline = isNativeOfflineAudioContext(nativeContext);\n const scriptProcessorNode = createNativeScriptProcessorNode(nativeContext, 256, 9, 0);\n\n const createFakeAudioParam = (input: number, value: number) => {\n const constantSourceNode = createNativeConstantSourceNode(nativeContext, {\n channelCount: 1,\n channelCountMode: 'explicit',\n channelInterpretation: 'discrete',\n offset: value\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 value;\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 return createAudioParam(\n { context },\n isOffline,\n constantSourceNode.offset,\n MOST_POSITIVE_SINGLE_FLOAT,\n MOST_NEGATIVE_SINGLE_FLOAT\n );\n };\n\n let lastOrientation = [0, 0, -1, 0, 1, 0];\n let lastPosition = [0, 0, 0];\n\n // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => {\n const orientation: [number, number, number, number, number, number] = [\n inputBuffer.getChannelData(0)[0],\n inputBuffer.getChannelData(1)[0],\n inputBuffer.getChannelData(2)[0],\n inputBuffer.getChannelData(3)[0],\n inputBuffer.getChannelData(4)[0],\n inputBuffer.getChannelData(5)[0]\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 inputBuffer.getChannelData(6)[0],\n inputBuffer.getChannelData(7)[0],\n inputBuffer.getChannelData(8)[0]\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 channelMergerNode.connect(scriptProcessorNode);\n\n return {\n forwardX: createFakeAudioParam(0, 0),\n forwardY: createFakeAudioParam(1, 0),\n forwardZ: createFakeAudioParam(2, -1),\n positionX: createFakeAudioParam(6, 0),\n positionY: createFakeAudioParam(7, 0),\n positionZ: createFakeAudioParam(8, 0),\n upX: createFakeAudioParam(3, 0),\n upY: createFakeAudioParam(4, 1),\n upZ: createFakeAudioParam(5, 0)\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 { 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 { 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 { 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 } from '../types';\n\nexport const testAudioNodeDisconnectMethodSupport = (nativeAudioContext: TNativeAudioContext): Promise => {\n return new Promise((resolve) => {\n const analyzer = nativeAudioContext.createScriptProcessor(256, 1, 1);\n\n const dummy = nativeAudioContext.createGain();\n\n // Bug #95: Safari does not play one sample buffers.\n const ones = nativeAudioContext.createBuffer(1, 2, 44100);\n\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\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);\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","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\n return (destination: TNativeAudioNode | TNativeAudioParam, output = 0, input = 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) => {\n return class AudioNode extends eventTargetConstructor implements IAudioNode {\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);\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 #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.\n */\n if ((nativeAudioParam).name === 'playbackRate') {\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: Only Firefox does throw an InvalidStateError 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 { 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) => {\n return (\n audioNode: IAudioNode,\n isAudioParamOfOfflineAudioContext: boolean,\n nativeAudioParam: TNativeAudioParam,\n maxValue: null | number = null,\n minValue: null | number = null\n ): IAudioParam => {\n const automationEventList = new AutomationEventList(nativeAudioParam.defaultValue);\n const audioParamRenderer = isAudioParamOfOfflineAudioContext ? createAudioParamRenderer(automationEventList) : null;\n const audioParam = {\n get defaultValue(): number {\n return nativeAudioParam.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 if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.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 if (audioParamRenderer === null) {\n automationEventList.flush(audioNode.context.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 audioParam.setValueAtTime(interpolatedValues[interpolatedValues.length - 1], timeOfLastSample);\n }\n\n audioParam.setValueAtTime(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 { 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 { 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 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 wrapEventListener\n) => {\n return class AudioWorkletNode extends audioNodeConstructor implements IAudioWorkletNode {\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 const nodeNameToProcessorConstructorMap = NODE_NAME_TO_PROCESSOR_CONSTRUCTOR_MAPS.get(nativeContext);\n const processorConstructor = nodeNameToProcessorConstructorMap?.get(name);\n // Bug #186: Chrome, Edge and Opera 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 { 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 { 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 IAudioNode,\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 (\n proxy: IAudioWorkletNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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 & Opera 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, trace);\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, trace))\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 trace\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 trace\n );\n }\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeAudioWorkletNode, trace);\n\n return nativeAudioWorkletNode;\n };\n\n return {\n render(\n proxy: IAudioWorkletNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\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, trace);\n }\n };\n };\n};\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)\n .then((audioBuffer) => {\n if (typeof successCallback === 'function') {\n successCallback(audioBuffer);\n }\n\n return audioBuffer;\n })\n .catch((err) => {\n if (typeof errorCallback === 'function') {\n errorCallback(err);\n }\n\n throw err;\n });\n }\n };\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 this._nativeBiquadFilterNode.getFrequencyResponse(frequencyHz, magResponse, phaseResponse);\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 { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, 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 (\n proxy: IBiquadFilterNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain, trace);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.Q, nativeBiquadFilterNode.Q, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeBiquadFilterNode.detune, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeBiquadFilterNode.frequency, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeBiquadFilterNode.gain, trace);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeBiquadFilterNode, trace);\n\n return nativeBiquadFilterNode;\n };\n\n return {\n render(\n proxy: IBiquadFilterNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ): Promise {\n const renderedNativeBiquadFilterNode = renderedNativeBiquadFilterNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeBiquadFilterNode !== undefined) {\n return Promise.resolve(renderedNativeBiquadFilterNode);\n }\n\n return createBiquadFilterNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\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 { 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 { 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 (\n proxy: IAudioNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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, trace);\n\n return nativeAudioNode;\n };\n\n return {\n render(\n proxy: IAudioNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\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, trace);\n }\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 { 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 (\n proxy: IAudioNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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, trace);\n\n return nativeAudioNode;\n };\n\n return {\n render(\n proxy: IAudioNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\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, trace);\n }\n };\n };\n};\n","import { TConnectAudioParamFactory } from '../types';\n\nexport const createConnectAudioParam: TConnectAudioParamFactory = (renderInputsOfAudioParam) => {\n return (nativeOfflineAudioContext, audioParam, nativeAudioParam, trace) => {\n return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam, trace);\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 { 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 { 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, 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 extends audioNodeConstructor implements IConstantSourceNode {\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 { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, 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 (\n proxy: IConstantSourceNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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, trace);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.offset, nativeConstantSourceNode.offset, trace);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConstantSourceNode, trace);\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 trace: readonly IAudioNode[]\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, trace);\n }\n };\n };\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 { 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, 44100);\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","import { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, 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 (\n proxy: IConvolverNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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], trace);\n } else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeConvolverNode, trace);\n }\n\n return nativeConvolverNode;\n };\n\n return {\n render(\n proxy: IConvolverNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ): Promise {\n const renderedNativeConvolverNode = renderedNativeConvolverNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeConvolverNode !== undefined) {\n return Promise.resolve(renderedNativeConvolverNode);\n }\n\n return createConvolverNode(proxy, nativeOfflineAudioContext, trace);\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 { TDataCloneErrorFactory } from '../types';\n\nexport const createDataCloneError: TDataCloneErrorFactory = () => new DOMException('', 'DataCloneError');\n","export const detachArrayBuffer = (arrayBuffer: ArrayBuffer): void => {\n const { port1 } = new MessageChannel();\n\n port1.postMessage(arrayBuffer, [arrayBuffer]);\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, Edge and Opera 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 #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 = () => {\n // Bug #133: Safari does neuter the ArrayBuffer.\n try {\n 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();\n 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 { 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 { 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 { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, 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 (\n proxy: IDelayNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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, trace);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.delayTime, nativeDelayNode.delayTime, trace);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDelayNode, trace);\n\n return nativeDelayNode;\n };\n\n return {\n render(\n proxy: IDelayNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ): Promise {\n const renderedNativeDelayNode = renderedNativeDelayNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeDelayNode !== undefined) {\n return Promise.resolve(renderedNativeDelayNode);\n }\n\n return createDelayNode(proxy, nativeOfflineAudioContext, trace);\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 { TDeleteUnrenderedAudioWorkletNodeFactory } from '../types';\n\nexport const createDeleteUnrenderedAudioWorkletNode: TDeleteUnrenderedAudioWorkletNodeFactory = (getUnrenderedAudioWorkletNodes) => {\n return (nativeContext, audioWorkletNode) => {\n getUnrenderedAudioWorkletNodes(nativeContext).delete(audioWorkletNode);\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 { 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 { 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, Firefox and Opera 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 { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, 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 trace: readonly IAudioNode[]\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, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold, trace);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.attack, nativeDynamicsCompressorNode.attack, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.knee, nativeDynamicsCompressorNode.knee, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.ratio, nativeDynamicsCompressorNode.ratio, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.release, nativeDynamicsCompressorNode.release, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.threshold, nativeDynamicsCompressorNode.threshold, trace);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeDynamicsCompressorNode, trace);\n\n return nativeDynamicsCompressorNode;\n };\n\n return {\n render(\n proxy: IDynamicsCompressorNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\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, trace);\n }\n };\n };\n};\n","import { TEncodingErrorFactory } from '../types';\n\nexport const createEncodingError: TEncodingErrorFactory = () => new DOMException('', 'EncodingError');\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, Edge and Opera 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, Edge and Opera 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, Edge and Opera 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 { TEventTargetConstructorFactory, TNativeEventTarget } from '../types';\n\nexport const createEventTargetConstructor: TEventTargetConstructorFactory = (wrapEventListener) => {\n return class EventTarget implements TNativeEventTarget {\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 | 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 | 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 { 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 { 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 response.text();\n }\n } catch {\n // Ignore errors.\n } // tslint:disable-line:no-empty\n\n throw createAbortError();\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 { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, 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 (\n proxy: IGainNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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, trace);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.gain, nativeGainNode.gain, trace);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeGainNode, trace);\n\n return nativeGainNode;\n };\n\n return {\n render(\n proxy: IGainNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ): Promise {\n const renderedNativeGainNode = renderedNativeGainNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeGainNode !== undefined) {\n return Promise.resolve(renderedNativeGainNode);\n }\n\n return createGainNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\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 { 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 { TGetAudioNodeTailTimeFactory } from '../types';\n\nexport const createGetAudioNodeTailTime: TGetAudioNodeTailTimeFactory = (audioNodeTailTimeStore) => {\n return (audioNode) => audioNodeTailTimeStore.get(audioNode) ?? 0;\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 { TGetBackupOfflineAudioContextFactory } from '../types';\n\nexport const createGetBackupOfflineAudioContext: TGetBackupOfflineAudioContextFactory = (backupOfflineAudioContextStore) => {\n return (nativeContext) => {\n return backupOfflineAudioContextStore.get(nativeContext);\n };\n};\n","import { TInvalidStateErrorFactory } from '../types';\n\nexport const createInvalidStateError: TInvalidStateErrorFactory = () => new DOMException('', 'InvalidStateError');\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 { 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 backupOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 8000);\n\n backupOfflineAudioContextStore.set(nativeContext, backupOfflineAudioContext);\n\n return backupOfflineAudioContext;\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 { TInvalidAccessErrorFactory } from '../types';\n\nexport const createInvalidAccessError: TInvalidAccessErrorFactory = () => new DOMException('', 'InvalidAccessError');\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 { 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 { filterBuffer } from '../helpers/filter-buffer';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, 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 (\n proxy: IIIRFilterNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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, trace);\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, trace);\n\n return nativeIIRFilterNode;\n };\n\n return {\n render(\n proxy: IIIRFilterNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\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, trace);\n }\n };\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 { 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","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 { 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 { 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 { TIsSecureContextFactory } from '../types';\n\nexport const createIsSecureContext: TIsSecureContextFactory = (window) => window !== null && window.isSecureContext;\n","import { TIsSupportedPromiseFactory } from '../types';\n\nexport const createIsSupportedPromise: TIsSupportedPromiseFactory = async (\n cacheTestResult,\n testAudioBufferCopyChannelMethodsSubarraySupport,\n testAudioContextCloseMethodSupport,\n testAudioContextDecodeAudioDataMethodTypeErrorSupport,\n testAudioContextOptionsSupport,\n testAudioNodeConnectMethodSupport,\n testAudioWorkletProcessorNoOutputsSupport,\n testChannelMergerNodeChannelCountSupport,\n testConstantSourceNodeAccurateSchedulingSupport,\n testConvolverNodeBufferReassignabilitySupport,\n testConvolverNodeChannelCountSupport,\n testDomExceptionContrucorSupport,\n testIsSecureContextSupport,\n testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport,\n testStereoPannerNodeDefaultValueSupport,\n testTransferablesSupport\n) => {\n if (\n cacheTestResult(testAudioBufferCopyChannelMethodsSubarraySupport, testAudioBufferCopyChannelMethodsSubarraySupport) &&\n cacheTestResult(testAudioContextCloseMethodSupport, testAudioContextCloseMethodSupport) &&\n cacheTestResult(testAudioContextOptionsSupport, testAudioContextOptionsSupport) &&\n cacheTestResult(testAudioNodeConnectMethodSupport, testAudioNodeConnectMethodSupport) &&\n cacheTestResult(testChannelMergerNodeChannelCountSupport, testChannelMergerNodeChannelCountSupport) &&\n cacheTestResult(testConstantSourceNodeAccurateSchedulingSupport, testConstantSourceNodeAccurateSchedulingSupport) &&\n cacheTestResult(testConvolverNodeBufferReassignabilitySupport, testConvolverNodeBufferReassignabilitySupport) &&\n cacheTestResult(testConvolverNodeChannelCountSupport, testConvolverNodeChannelCountSupport) &&\n cacheTestResult(testDomExceptionContrucorSupport, testDomExceptionContrucorSupport) &&\n cacheTestResult(testIsSecureContextSupport, testIsSecureContextSupport) &&\n cacheTestResult(\n testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport,\n testMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport\n )\n ) {\n const results = await Promise.all([\n cacheTestResult(testAudioContextDecodeAudioDataMethodTypeErrorSupport, testAudioContextDecodeAudioDataMethodTypeErrorSupport),\n cacheTestResult(testAudioWorkletProcessorNoOutputsSupport, testAudioWorkletProcessorNoOutputsSupport),\n cacheTestResult(testStereoPannerNodeDefaultValueSupport, testStereoPannerNodeDefaultValueSupport),\n cacheTestResult(testTransferablesSupport, testTransferablesSupport)\n ]);\n\n return results.every((result) => result);\n }\n\n return false;\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 { 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 { 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 { 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 { 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 const nativeAudioContext = new nativeAudioContextConstructor(options);\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 Edge, and Opera 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, Edge and Opera pretend to be running right away, but fire an onstatechange event when the state actually\n * changes 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, Edge and Opera 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 { CONTEXT_STORE } from '../globals';\nimport { IAudioDestinationNode, IAudioListener, IMinimalBaseAudioContext } 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 extends eventTargetConstructor implements IMinimalBaseAudioContext {\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 =\n nativeOnStateChange !== null && nativeOnStateChange === wrappedListener\n ? value\n : >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 { 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","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\n return (destination: TNativeAudioNode | TNativeAudioParam, output = 0, input = 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","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","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 { 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 { 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","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 { 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 { 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","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 { 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 { 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 { 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 { 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 { 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, Edge and Opera 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, Edge and Opera 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, Edge and Opera 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 & Opera 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 & Opera 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","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 } 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 & Opera partially support the spec yet.\n wrapChannelSplitterNode(nativeChannelSplitterNode);\n\n return nativeChannelSplitterNode;\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 { 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 { 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 { 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 { 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 { 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, Firefox and Opera 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 { 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 { 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 { 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 { 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 { 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 { 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 { 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 & Opera 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 { 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 { 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 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 // tslint:disable-next-line:deprecation\n scriptProcessorNode.onaudioprocess = ({ inputBuffer }) => {\n const orientation: [number, number, number] = [\n inputBuffer.getChannelData(0)[0],\n inputBuffer.getChannelData(1)[0],\n inputBuffer.getChannelData(2)[0]\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 inputBuffer.getChannelData(3)[0],\n inputBuffer.getChannelData(4)[0],\n inputBuffer.getChannelData(5)[0]\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 { 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 { TNativeScriptProcessorNodeFactory } from '../types';\n\nexport const createNativeScriptProcessorNode: TNativeScriptProcessorNodeFactory = (\n nativeContext,\n bufferSize,\n numberOfInputChannels,\n numberOfOutputChannels\n) => {\n return nativeContext.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels);\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 { 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[0]);\n inputGainNode.connect(rightGainNode);\n\n panWaveShaperNode.connect(panGainNode);\n\n panGainNode.connect(leftWaveShaperNode.inputs[0]);\n panGainNode.connect(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[0]);\n inputGainNode.disconnect(rightGainNode);\n\n panWaveShaperNode.disconnect(panGainNode);\n\n panGainNode.disconnect(leftWaveShaperNode.inputs[0]);\n panGainNode.disconnect(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[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(leftInputForLeftOutputWaveShaperNode.inputs[0]);\n panGainNode.connect(leftInputForRightOutputWaveShaperNode.inputs[0]);\n panGainNode.connect(rightInputForLeftOutputWaveShaperNode.inputs[0]);\n panGainNode.connect(rightInputForRightOutputWaveShaperNode.inputs[0]);\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[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(leftInputForLeftOutputWaveShaperNode.inputs[0]);\n panGainNode.disconnect(leftInputForRightOutputWaveShaperNode.inputs[0]);\n panGainNode.disconnect(rightInputForLeftOutputWaveShaperNode.inputs[0]);\n panGainNode.disconnect(rightInputForRightOutputWaveShaperNode.inputs[0]);\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, '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 { 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.\n */\n if (nativeAudioContextConstructor !== null && nativeAudioContextConstructor.name === 'webkitAudioContext') {\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, Edge and Opera 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, 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 { 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 { IAudioParam, IMinimalOfflineAudioContext, IOscillatorNode, IOscillatorNodeRenderer, IOscillatorOptions } 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 extends audioNodeConstructor implements IOscillatorNode {\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 { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, 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 (\n proxy: IOscillatorNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency, trace);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.detune, nativeOscillatorNode.detune, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.frequency, nativeOscillatorNode.frequency, trace);\n }\n\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeOscillatorNode, trace);\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(\n proxy: IOscillatorNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ): Promise {\n const renderedNativeOscillatorNode = renderedNativeOscillatorNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeOscillatorNode !== undefined) {\n return Promise.resolve(renderedNativeOscillatorNode);\n }\n\n return createOscillatorNode(proxy, nativeOfflineAudioContext, trace);\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 { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, 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 (\n proxy: IPannerNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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, trace);\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, trace);\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, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY, trace);\n await renderAutomation(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ, trace);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationX, nativePannerNode.orientationX, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationY, nativePannerNode.orientationY, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.orientationZ, nativePannerNode.orientationZ, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionX, nativePannerNode.positionX, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionY, nativePannerNode.positionY, trace);\n await connectAudioParam(nativeOfflineAudioContext, proxy.positionZ, nativePannerNode.positionZ, trace);\n }\n\n if (isNativeAudioNodeFaker(nativePannerNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode.inputs[0], trace);\n } else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativePannerNode, trace);\n }\n\n return nativePannerNode;\n };\n\n return {\n render(\n proxy: IPannerNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\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, trace);\n }\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 { TRenderAutomationFactory } from '../types';\n\nexport const createRenderAutomation: TRenderAutomationFactory = (getAudioParamRenderer, renderInputsOfAudioParam) => {\n return (nativeOfflineAudioContext, audioParam, nativeAudioParam, trace) => {\n const audioParamRenderer = getAudioParamRenderer(audioParam);\n\n audioParamRenderer.replay(nativeAudioParam);\n\n return renderInputsOfAudioParam(audioParam, nativeOfflineAudioContext, nativeAudioParam, trace);\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, trace) => {\n const audioNodeConnections = getAudioNodeConnections(audioNode);\n const nextTrace = [...trace, audioNode];\n\n await Promise.all(\n audioNodeConnections.activeInputs\n .map((connections, input) =>\n Array.from(connections)\n .filter(([source]) => !nextTrace.includes(source))\n .map(async ([source, output]) => {\n const audioNodeRenderer = getAudioNodeRenderer(source);\n const renderedNativeAudioNode = await audioNodeRenderer.render(source, nativeOfflineAudioContext, nextTrace);\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 { IAudioNode, 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 trace: readonly IAudioNode[]\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, trace);\n\n if (!isPartOfACycle(source)) {\n renderedNativeAudioNode.connect(nativeAudioParam, output);\n }\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 { TSetActiveAudioWorkletNodeInputsFactory } from '../types';\n\nexport const createSetActiveAudioWorkletNodeInputs: TSetActiveAudioWorkletNodeInputsFactory = (activeAudioWorkletNodeInputsStore) => {\n return (nativeAudioWorkletNode, activeInputs) => {\n activeAudioWorkletNodeInputsStore.set(nativeAudioWorkletNode, activeInputs);\n };\n};\n","import { TSetAudioNodeTailTimeFactory } from '../types';\n\nexport const createSetAudioNodeTailTime: TSetAudioNodeTailTimeFactory = (audioNodeTailTimeStore) => {\n return (audioNode, tailTime) => audioNodeTailTimeStore.set(audioNode, tailTime);\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 const trace = [] as const;\n\n return (destination, nativeOfflineAudioContext) =>\n getAudioNodeRenderer(destination)\n .render(destination, nativeOfflineAudioContext, trace)\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, trace)\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 { 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 { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, 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 (\n proxy: IStereoPannerNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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, trace);\n } else {\n await connectAudioParam(nativeOfflineAudioContext, proxy.pan, nativeStereoPannerNode.pan, trace);\n }\n\n if (isNativeAudioNodeFaker(nativeStereoPannerNode)) {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode.inputs[0], trace);\n } else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeStereoPannerNode, trace);\n }\n\n return nativeStereoPannerNode;\n };\n\n return {\n render(\n proxy: IStereoPannerNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ): Promise {\n const renderedNativeStereoPannerNode = renderedNativeStereoPannerNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeStereoPannerNode !== undefined) {\n return Promise.resolve(renderedNativeStereoPannerNode);\n }\n\n return createStereoPannerNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\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 { TTestAudioBufferCopyChannelMethodsSubarraySupportFactory } from '../types';\n\n/*\n * Firefox up to version 67 didn't fully support the copyFromChannel() and copyToChannel() methods. Therefore testing one of those methods\n * is enough to know if the other one is supported as well.\n */\nexport const createTestAudioBufferCopyChannelMethodsSubarraySupport: TTestAudioBufferCopyChannelMethodsSubarraySupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeAudioBuffer = nativeOfflineAudioContext.createBuffer(1, 1, 44100);\n\n // Bug #5: Safari does not support copyFromChannel() and copyToChannel().\n if (nativeAudioBuffer.copyToChannel === undefined) {\n return true;\n }\n\n const source = new Float32Array(2);\n\n try {\n nativeAudioBuffer.copyFromChannel(source, 0, 0);\n } catch {\n return false;\n }\n\n return true;\n };\n};\n","import { TTestAudioContextCloseMethodSupportFactory } from '../types';\n\nexport const createTestAudioContextCloseMethodSupport: TTestAudioContextCloseMethodSupportFactory = (nativeAudioContextConstructor) => {\n return () => {\n if (nativeAudioContextConstructor === null) {\n return false;\n }\n\n // Try to check the prototype before constructing the AudioContext.\n if (nativeAudioContextConstructor.prototype !== undefined && nativeAudioContextConstructor.prototype.close !== undefined) {\n return true;\n }\n\n const audioContext = new nativeAudioContextConstructor();\n\n const isAudioContextClosable = audioContext.close !== undefined;\n\n try {\n audioContext.close();\n } catch {\n // Ignore errors.\n }\n\n return isAudioContextClosable;\n };\n};\n","import { TTestAudioContextDecodeAudioDataMethodTypeErrorSupportFactory } from '../types';\n\n/**\n * Edge up to version 14, Firefox up to version 52, Safari up to version 9 and maybe other browsers\n * did not refuse to decode invalid parameters with a TypeError.\n */\nexport const createTestAudioContextDecodeAudioDataMethodTypeErrorSupport: TTestAudioContextDecodeAudioDataMethodTypeErrorSupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return Promise.resolve(false);\n }\n\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n\n // Bug #21: Safari does not support promises yet.\n return new Promise((resolve) => {\n let isPending = true;\n\n const resolvePromise = (err: Error) => {\n if (isPending) {\n isPending = false;\n\n offlineAudioContext.startRendering();\n\n resolve(err instanceof TypeError);\n }\n };\n\n let promise;\n\n // Bug #26: Safari throws a synchronous error.\n try {\n promise = offlineAudioContext\n // Bug #1: Safari requires a successCallback.\n .decodeAudioData(\n null,\n () => {\n // Ignore the success callback.\n },\n resolvePromise\n );\n } catch (err) {\n resolvePromise(err);\n }\n\n // Bug #21: Safari does not support promises yet.\n if (promise !== undefined) {\n // Bug #6: Chrome, Edge, Firefox and Opera do not call the errorCallback.\n promise.catch(resolvePromise);\n }\n });\n };\n};\n","import { TTestAudioContextOptionsSupportFactory } from '../types';\n\nexport const createTestAudioContextOptionsSupport: TTestAudioContextOptionsSupportFactory = (nativeAudioContextConstructor) => {\n return () => {\n if (nativeAudioContextConstructor === null) {\n return false;\n }\n\n let audioContext;\n\n try {\n audioContext = new nativeAudioContextConstructor({ latencyHint: 'balanced' });\n } catch {\n return false;\n }\n\n audioContext.close();\n\n return true;\n };\n};\n","import { TTestAudioNodeConnectMethodSupportFactory } from '../types';\n\n// Safari up to version 12.0 (but not v12.1) didn't return the destination in case it was an AudioNode.\nexport const createTestAudioNodeConnectMethodSupport: TTestAudioNodeConnectMethodSupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeGainNode = nativeOfflineAudioContext.createGain();\n const isSupported = nativeGainNode.connect(nativeGainNode) === nativeGainNode;\n\n nativeGainNode.disconnect(nativeGainNode);\n\n return isSupported;\n };\n};\n","import { TTestAudioWorkletProcessorNoOutputsSupportFactory } from '../types';\n\n/**\n * Chrome version 66 and 67 did not call the process() function of an AudioWorkletProcessor if it had no outputs. AudioWorklet support was\n * enabled by default in version 66.\n */\nexport const createTestAudioWorkletProcessorNoOutputsSupport: TTestAudioWorkletProcessorNoOutputsSupportFactory = (\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(['class A extends AudioWorkletProcessor{process(){this.port.postMessage(0)}}registerProcessor(\"a\",A)'], {\n type: 'application/javascript; charset=utf-8'\n });\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 8000);\n const url = URL.createObjectURL(blob);\n\n let isCallingProcess = 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 = () => (isCallingProcess = true);\n\n oscillator.connect(audioWorkletNode);\n oscillator.start(0);\n\n await offlineAudioContext.startRendering();\n\n if (!isCallingProcess) {\n await new Promise((resolve) => setTimeout(resolve, 5));\n }\n } catch {\n // Ignore errors.\n } finally {\n URL.revokeObjectURL(url);\n }\n\n return isCallingProcess;\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 const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 128, 8000);\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\n await offlineAudioContext.startRendering();\n } catch {\n // Ignore errors.\n } finally {\n URL.revokeObjectURL(url);\n }\n\n return isEmittingMessageEvents && !isEmittingProcessorErrorEvents;\n };\n};\n","import { TTestChannelMergerNodeChannelCountSupportFactory } from '../types';\n\n/**\n * Firefox up to version 69 did not throw an error when setting a different channelCount or channelCountMode.\n */\nexport const createTestChannelMergerNodeChannelCountSupport: TTestChannelMergerNodeChannelCountSupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeChannelMergerNode = offlineAudioContext.createChannelMerger();\n\n /**\n * Bug #15: Safari does not return the default properties. It still needs to be patched. This test is supposed to test the support\n * in other browsers.\n */\n if (nativeChannelMergerNode.channelCountMode === 'max') {\n return true;\n }\n\n try {\n nativeChannelMergerNode.channelCount = 2;\n } catch {\n return true;\n }\n\n return false;\n };\n};\n","import { TTestConstantSourceNodeAccurateSchedulingSupportFactory } from '../types';\n\nexport const createTestConstantSourceNodeAccurateSchedulingSupport: TTestConstantSourceNodeAccurateSchedulingSupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const nativeOfflineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeOfflineAudioContext.createConstantSource === undefined) {\n return true;\n }\n\n const nativeConstantSourceNode = nativeOfflineAudioContext.createConstantSource();\n\n /*\n * @todo This is using bug #75 to detect bug #70. That works because both bugs were unique to\n * the implementation of Firefox right now, but it could probably be done in a better way.\n */\n return nativeConstantSourceNode.offset.maxValue !== Number.POSITIVE_INFINITY;\n };\n};\n","import { TTestConvolverNodeBufferReassignabilitySupportFactory } from '../types';\n\n// Opera up to version 57 did not allow to reassign the buffer of a ConvolverNode.\nexport const createTestConvolverNodeBufferReassignabilitySupport: TTestConvolverNodeBufferReassignabilitySupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeConvolverNode = offlineAudioContext.createConvolver();\n\n nativeConvolverNode.buffer = offlineAudioContext.createBuffer(1, 1, offlineAudioContext.sampleRate);\n\n try {\n nativeConvolverNode.buffer = offlineAudioContext.createBuffer(1, 1, offlineAudioContext.sampleRate);\n } catch {\n return false;\n }\n\n return true;\n };\n};\n","import { TTestConvolverNodeChannelCountSupportFactory } from '../types';\n\n// Chrome up to version v80, Edge up to version v80 and Opera up to version v67 did not allow to set the channelCount property of a ConvolverNode to 1. They also did not allow to set the channelCountMode to 'explicit'.\nexport const createTestConvolverNodeChannelCountSupport: TTestConvolverNodeChannelCountSupportFactory = (\n nativeOfflineAudioContextConstructor\n) => {\n return () => {\n if (nativeOfflineAudioContextConstructor === null) {\n return false;\n }\n\n const offlineAudioContext = new nativeOfflineAudioContextConstructor(1, 1, 44100);\n const nativeConvolverNode = offlineAudioContext.createConvolver();\n\n try {\n nativeConvolverNode.channelCount = 1;\n } catch {\n return false;\n }\n\n return true;\n };\n};\n","import { TTestIsSecureContextSupportFactory } from '../types';\n\nexport const createTestIsSecureContextSupport: TTestIsSecureContextSupportFactory = (window) => {\n return () => window !== null && window.hasOwnProperty('isSecureContext');\n};\n","import { TTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupportFactory } from '../types';\n\n// Firefox up to version 68 did not throw an error when creating a MediaStreamAudioSourceNode with a mediaStream that had no audio track.\nexport const createTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupport: TTestMediaStreamAudioSourceNodeMediaStreamWithoutAudioTrackSupportFactory = (\n nativeAudioContextConstructor\n) => {\n return () => {\n if (nativeAudioContextConstructor === null) {\n return false;\n }\n\n const audioContext = new nativeAudioContextConstructor();\n\n try {\n audioContext.createMediaStreamSource(new MediaStream());\n\n return false;\n } catch (err) {\n return true;\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 { TTestStereoPannerNodeDefaultValueSupportFactory } from '../types';\n\n/**\n * Firefox up to version 62 did not kick off the processing of the StereoPannerNode if the value of pan was zero.\n */\nexport const createTestStereoPannerNodeDefaultValueSupport: TTestStereoPannerNodeDefaultValueSupportFactory = (\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 /*\n * Bug #105: Safari does not support the StereoPannerNode. Therefore the returned value should normally be false but the faker does\n * support the tested behaviour.\n */\n if (nativeOfflineAudioContext.createStereoPanner === undefined) {\n return Promise.resolve(true);\n }\n\n // Bug #62: Safari does not support ConstantSourceNodes.\n if (nativeOfflineAudioContext.createConstantSource === undefined) {\n return Promise.resolve(true);\n }\n\n const constantSourceNode = nativeOfflineAudioContext.createConstantSource();\n const stereoPanner = nativeOfflineAudioContext.createStereoPanner();\n\n constantSourceNode.channelCount = 1;\n constantSourceNode.offset.value = 1;\n\n stereoPanner.channelCount = 1;\n\n constantSourceNode.start();\n\n constantSourceNode.connect(stereoPanner).connect(nativeOfflineAudioContext.destination);\n\n return nativeOfflineAudioContext.startRendering().then((buffer) => buffer.getChannelData(0)[0] !== 1);\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, Edge and Opera 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 { isNativeAudioNodeFaker } from '../guards/native-audio-node-faker';\nimport { isOwnedByContext } from '../helpers/is-owned-by-context';\nimport { IAudioNode, 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 (\n proxy: IWaveShaperNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ) => {\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], trace);\n } else {\n await renderInputsOfAudioNode(proxy, nativeOfflineAudioContext, nativeWaveShaperNode, trace);\n }\n\n return nativeWaveShaperNode;\n };\n\n return {\n render(\n proxy: IWaveShaperNode,\n nativeOfflineAudioContext: TNativeOfflineAudioContext,\n trace: readonly IAudioNode[]\n ): Promise {\n const renderedNativeWaveShaperNode = renderedNativeWaveShaperNodes.get(nativeOfflineAudioContext);\n\n if (renderedNativeWaveShaperNode !== undefined) {\n return Promise.resolve(renderedNativeWaveShaperNode);\n }\n\n return createWaveShaperNode(proxy, nativeOfflineAudioContext, trace);\n }\n };\n };\n};\n","import { TWindow, TWindowFactory } from '../types';\n\nexport const createWindow: TWindowFactory = () => (typeof window === 'undefined' ? null : window);\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 { 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 { 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 { 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.getPrototypeOf(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 { 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 { TSanitizeChannelSplitterOptionsFunction } from '../types';\n\nexport const sanitizeChannelSplitterOptions: TSanitizeChannelSplitterOptionsFunction = (options) => {\n return { ...options, channelCount: options.numberOfOutputs };\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 { 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 { 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","/*\n * Bug #122: Edge up to version v18 did not allow to construct a DOMException'. It also had a couple more bugs but since this is easy to\n * test it's used here as a placeholder.\n *\n * Bug #27: Edge up to version v18 did reject an invalid arrayBuffer passed to decodeAudioData() with a DOMException.\n *\n * Bug #50: Edge up to version v18 did not allow to create AudioNodes on a closed context.\n *\n * Bug #57: Edge up to version v18 did not throw an error when assigning the type of an OscillatorNode to 'custom'.\n *\n * Bug #63: Edge up to version v18 did not expose the mediaElement property of a MediaElementAudioSourceNode.\n *\n * Bug #64: Edge up to version v18 did not support the MediaStreamAudioDestinationNode.\n *\n * Bug #71: Edge up to version v18 did not allow to set the buffer of an AudioBufferSourceNode to null.\n *\n * Bug #93: Edge up to version v18 did set the sampleRate of an AudioContext to zero when it was closed.\n *\n * Bug #101: Edge up to version v18 refused to execute decodeAudioData() on a closed context.\n *\n * Bug #106: Edge up to version v18 did not expose the maxValue and minValue properties of the pan AudioParam of a StereoPannerNode.\n *\n * Bug #110: Edge up to version v18 did not expose the maxValue and minValue properties of the attack, knee, ratio, release and threshold AudioParams of a DynamicsCompressorNode.\n *\n * Bug #123: Edge up to version v18 did not support HRTF as the panningModel for a PannerNode.\n *\n * Bug #145: Edge up to version v18 did throw an IndexSizeError when an OfflineAudioContext was created with a sampleRate of zero.\n *\n * Bug #161: Edge up to version v18 did not expose the maxValue and minValue properties of the delayTime AudioParam of a DelayNode.\n */\nexport const testDomExceptionConstructorSupport = () => {\n try {\n new DOMException(); // tslint:disable-line:no-unused-expression\n } catch {\n return false;\n }\n\n return true;\n};\n","// Safari at version 11 did not support transferables.\nexport const testTransferablesSupport = () =>\n new Promise((resolve) => {\n const arrayBuffer = new ArrayBuffer(0);\n const { port1, port2 } = new MessageChannel();\n\n port1.onmessage = ({ data }) => resolve(data !== null);\n port2.postMessage(arrayBuffer, [arrayBuffer]);\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 { 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","export * from './analyser-node';\nexport * from './analyser-options';\nexport * from './audio-buffer';\nexport * from './audio-buffer-options';\nexport * from './audio-buffer-source-node';\nexport * from './audio-buffer-source-node-renderer';\nexport * from './audio-buffer-source-options';\nexport * from './audio-context';\nexport * from './audio-context-options';\nexport * from './audio-destination-node';\nexport * from './audio-listener';\nexport * from './audio-node';\nexport * from './audio-node-options';\nexport * from './audio-node-renderer';\nexport * from './audio-param';\nexport * from './audio-param-descriptor';\nexport * from './audio-param-renderer';\nexport * from './audio-scheduled-source-node';\nexport * from './audio-scheduled-source-node-event-map';\nexport * from './audio-worklet';\nexport * from './audio-worklet-node';\nexport * from './audio-worklet-node-event-map';\nexport * from './audio-worklet-node-options';\nexport * from './audio-worklet-processor';\nexport * from './audio-worklet-processor-constructor';\nexport * from './automation';\nexport * from './base-audio-context';\nexport * from './biquad-filter-node';\nexport * from './biquad-filter-options';\nexport * from './channel-merger-options';\nexport * from './channel-splitter-options';\nexport * from './common-audio-context';\nexport * from './common-offline-audio-context';\nexport * from './constant-source-node';\nexport * from './constant-source-node-renderer';\nexport * from './constant-source-options';\nexport * from './convolver-node';\nexport * from './convolver-options';\nexport * from './delay-node';\nexport * from './delay-options';\nexport * from './dynamics-compressor-node';\nexport * from './dynamics-compressor-options';\nexport * from './gain-node';\nexport * from './gain-options';\nexport * from './iir-filter-node';\nexport * from './iir-filter-options';\nexport * from './media-element-audio-source-node';\nexport * from './media-element-audio-source-options';\nexport * from './media-stream-audio-destination-node';\nexport * from './media-stream-audio-source-node';\nexport * from './media-stream-audio-source-options';\nexport * from './media-stream-track-audio-source-node';\nexport * from './media-stream-track-audio-source-options';\nexport * from './minimal-audio-context';\nexport * from './minimal-base-audio-context';\nexport * from './minimal-base-audio-context-event-map';\nexport * from './minimal-offline-audio-context';\nexport * from './native-audio-node-faker';\nexport * from './native-audio-worklet-node-faker';\nexport * from './native-constant-source-node-faker';\nexport * from './native-convolver-node-faker';\nexport * from './native-iir-filter-node-faker';\nexport * from './native-panner-node-faker';\nexport * from './native-stereo-panner-node-faker';\nexport * from './native-wave-shaper-node-faker';\nexport * from './offline-audio-completion-event';\nexport * from './offline-audio-context';\nexport * from './offline-audio-context-constructor';\nexport * from './offline-audio-context-options';\nexport * from './oscillator-node';\nexport * from './oscillator-node-renderer';\nexport * from './oscillator-options';\nexport * from './panner-node';\nexport * from './panner-options';\nexport * from './periodic-wave';\nexport * from './periodic-wave-constraints';\nexport * from './periodic-wave-options';\nexport * from './read-only-map';\nexport * from './stereo-panner-node';\nexport * from './stereo-panner-options';\nexport * from './wave-shaper-node';\nexport * from './wave-shaper-options';\nexport * from './worklet-options';\n","export * from './abort-error-factory';\nexport * from './active-audio-worklet-node-inputs-store';\nexport * from './active-input-connection';\nexport * from './add-active-input-connection-to-audio-node-factory';\nexport * from './add-active-input-connection-to-audio-node-function';\nexport * from './add-audio-node-connections-factory';\nexport * from './add-audio-node-connections-function';\nexport * from './add-audio-param-connections-factory';\nexport * from './add-audio-param-connections-function';\nexport * from './add-audio-worklet-module-factory';\nexport * from './add-audio-worklet-module-function';\nexport * from './add-connection-to-audio-node-factory';\nexport * from './add-connection-to-audio-node-function';\nexport * from './add-passive-input-connection-to-audio-node-factory';\nexport * from './add-passive-input-connection-to-audio-node-function';\nexport * from './add-silent-connection-factory';\nexport * from './add-silent-connection-function';\nexport * from './add-unrendered-audio-worklet-node-factory';\nexport * from './add-unrendered-audio-worklet-node-function';\nexport * from './analyser-node-constructor';\nexport * from './analyser-node-constructor-factory';\nexport * from './analyser-node-renderer-factory';\nexport * from './analyser-node-renderer-factory-factory';\nexport * from './any-audio-buffer';\nexport * from './any-context';\nexport * from './audio-buffer-constructor';\nexport * from './audio-buffer-constructor-factory';\nexport * from './audio-buffer-source-node-constructor';\nexport * from './audio-buffer-source-node-constructor-factory';\nexport * from './audio-buffer-source-node-renderer';\nexport * from './audio-buffer-source-node-renderer-factory';\nexport * from './audio-buffer-source-node-renderer-factory-factory';\nexport * from './audio-buffer-store';\nexport * from './audio-context-constructor';\nexport * from './audio-context-constructor-factory';\nexport * from './audio-context-latency-category';\nexport * from './audio-context-state';\nexport * from './audio-destination-node-constructor';\nexport * from './audio-destination-node-constructor-factory';\nexport * from './audio-destination-node-renderer-factory';\nexport * from './audio-listener-factory';\nexport * from './audio-listener-factory-factory';\nexport * from './audio-node-connections';\nexport * from './audio-node-connections-store';\nexport * from './audio-node-constructor';\nexport * from './audio-node-constructor-factory';\nexport * from './audio-node-output-connection';\nexport * from './audio-node-renderer';\nexport * from './audio-node-store';\nexport * from './audio-node-tail-time-store';\nexport * from './audio-param-audio-node-store';\nexport * from './audio-param-connections';\nexport * from './audio-param-connections-store';\nexport * from './audio-param-factory';\nexport * from './audio-param-factory-factory';\nexport * from './audio-param-map';\nexport * from './audio-param-output-connection';\nexport * from './audio-param-renderer-factory';\nexport * from './audio-param-store';\nexport * from './audio-worklet-node-constructor';\nexport * from './audio-worklet-node-constructor-factory';\nexport * from './audio-worklet-node-renderer-factory';\nexport * from './audio-worklet-node-renderer-factory-factory';\nexport * from './backup-offline-audio-context-store';\nexport * from './base-audio-context-constructor';\nexport * from './base-audio-context-constructor-factory';\nexport * from './biquad-filter-node-constructor';\nexport * from './biquad-filter-node-constructor-factory';\nexport * from './biquad-filter-node-renderer-factory';\nexport * from './biquad-filter-node-renderer-factory-factory';\nexport * from './biquad-filter-type';\nexport * from './channel-count-mode';\nexport * from './channel-interpretation';\nexport * from './channel-merger-node-constructor';\nexport * from './channel-merger-node-constructor-factory';\nexport * from './channel-merger-node-renderer-factory';\nexport * from './channel-merger-node-renderer-factory-factory';\nexport * from './channel-splitter-node-constructor';\nexport * from './channel-splitter-node-constructor-factory';\nexport * from './channel-splitter-node-renderer-factory';\nexport * from './channel-splitter-node-renderer-factory-factory';\nexport * from './cache-test-result-factory';\nexport * from './cache-test-result-function';\nexport * from './connect-audio-param-factory';\nexport * from './connect-audio-param-function';\nexport * from './connect-multiple-outputs-factory';\nexport * from './connect-multiple-outputs-function';\nexport * from './connect-native-audio-node-to-native-audio-node-function';\nexport * from './connected-native-audio-buffer-source-node-factory';\nexport * from './connected-native-audio-buffer-source-node-factory-factory';\nexport * from './constant-source-node-constructor';\nexport * from './constant-source-node-constructor-factory';\nexport * from './constant-source-node-renderer';\nexport * from './constant-source-node-renderer-factory';\nexport * from './constant-source-node-renderer-factory-factory';\nexport * from './constructor';\nexport * from './context';\nexport * from './context-store';\nexport * from './convert-number-to-unsigned-long-factory';\nexport * from './convert-number-to-unsigned-long-function';\nexport * from './convolver-node-constructor';\nexport * from './convolver-node-constructor-factory';\nexport * from './convolver-node-renderer-factory';\nexport * from './convolver-node-renderer-factory-factory';\nexport * from './create-native-offline-audio-context-factory';\nexport * from './create-native-offline-audio-context-function';\nexport * from './cycle-counters';\nexport * from './data-clone-error-factory';\nexport * from './decode-audio-data-factory';\nexport * from './decode-audio-data-function';\nexport * from './decode-error-callback';\nexport * from './decode-success-callback';\nexport * from './decrement-cycle-counter-factory';\nexport * from './decrement-cycle-counter-function';\nexport * from './delay-node-constructor';\nexport * from './delay-node-constructor-factory';\nexport * from './delay-node-renderer-factory';\nexport * from './delay-node-renderer-factory-factory';\nexport * from './delete-active-input-connection-to-audio-node-factory';\nexport * from './delete-active-input-connection-to-audio-node-function';\nexport * from './delete-unrendered-audio-worklet-node-factory';\nexport * from './delete-unrendered-audio-worklet-node-function';\nexport * from './detect-cycles-factory';\nexport * from './detect-cycles-function';\nexport * from './disconnect-multiple-outputs-factory';\nexport * from './disconnect-multiple-outputs-function';\nexport * from './disconnect-native-audio-node-from-native-audio-node-function';\nexport * from './distance-model-type';\nexport * from './dynamics-compressor-node-constructor';\nexport * from './dynamics-compressor-node-constructor-factory';\nexport * from './dynamics-compressor-node-renderer-factory';\nexport * from './dynamics-compressor-node-renderer-factory-factory';\nexport * from './encoding-error-factory';\nexport * from './error-event-handler';\nexport * from './evaluate-audio-worklet-global-scope-function';\nexport * from './evaluate-source-factory';\nexport * from './evaluate-source-function';\nexport * from './event-handler';\nexport * from './event-target-constructor';\nexport * from './event-target-constructor-factory';\nexport * from './expose-current-frame-and-current-time-factory';\nexport * from './expose-current-frame-and-current-time-function';\nexport * from './fetch-source-factory';\nexport * from './fetch-source-function';\nexport * from './gain-node-constructor';\nexport * from './gain-node-constructor-factory';\nexport * from './gain-node-renderer-factory';\nexport * from './gain-node-renderer-factory-factory';\nexport * from './get-active-audio-worklet-node-inputs-factory';\nexport * from './get-active-audio-worklet-node-inputs-function';\nexport * from './get-audio-node-connections-function';\nexport * from './get-audio-node-renderer-factory';\nexport * from './get-audio-node-renderer-function';\nexport * from './get-audio-node-tail-time-factory';\nexport * from './get-audio-node-tail-time-function';\nexport * from './get-audio-param-connections-function';\nexport * from './get-audio-param-renderer-factory';\nexport * from './get-audio-param-renderer-function';\nexport * from './get-backup-offline-audio-context-factory';\nexport * from './get-backup-offline-audio-context-function';\nexport * from './get-event-listeners-of-audio-node-function';\nexport * from './get-native-audio-node-function';\nexport * from './get-native-audio-param-function';\nexport * from './get-native-context-factory';\nexport * from './get-native-context-function';\nexport * from './get-or-create-backup-offline-audio-context-factory';\nexport * from './get-or-create-backup-offline-audio-context-function';\nexport * from './get-unrendered-audio-worklet-nodes-factory';\nexport * from './get-unrendered-audio-worklet-nodes-function';\nexport * from './get-value-for-key-function';\nexport * from './iir-filter-node-constructor';\nexport * from './iir-filter-node-constructor-factory';\nexport * from './iir-filter-node-renderer-factory';\nexport * from './iir-filter-node-renderer-factory-factory';\nexport * from './increment-cycle-counter-factory';\nexport * from './increment-cycle-counter-factory-factory';\nexport * from './increment-cycle-counter-function';\nexport * from './index-size-error-factory';\nexport * from './insert-element-in-set-function';\nexport * from './internal-state-event-listener';\nexport * from './invalid-access-error-factory';\nexport * from './invalid-state-error-factory';\nexport * from './is-active-audio-node-function';\nexport * from './is-any-audio-context-factory';\nexport * from './is-any-audio-context-function';\nexport * from './is-any-audio-node-factory';\nexport * from './is-any-audio-node-function';\nexport * from './is-any-audio-param-factory';\nexport * from './is-any-audio-param-function';\nexport * from './is-any-offline-audio-context-factory';\nexport * from './is-any-offline-audio-context-function';\nexport * from './is-dc-curve-function';\nexport * from './is-native-audio-context-factory';\nexport * from './is-native-audio-context-function';\nexport * from './is-native-audio-node-factory';\nexport * from './is-native-audio-node-function';\nexport * from './is-native-audio-param-factory';\nexport * from './is-native-audio-param-function';\nexport * from './is-native-context-factory';\nexport * from './is-native-context-function';\nexport * from './is-native-offline-audio-context-factory';\nexport * from './is-native-offline-audio-context-function';\nexport * from './is-part-of-a-cycle-function';\nexport * from './is-passive-audio-node-function';\nexport * from './is-secure-context-factory';\nexport * from './is-supported-promise-factory';\nexport * from './media-element-audio-source-node-constructor';\nexport * from './media-element-audio-source-node-constructor-factory';\nexport * from './media-stream-audio-destination-node-constructor';\nexport * from './media-stream-audio-destination-node-constructor-factory';\nexport * from './media-stream-audio-source-node-constructor';\nexport * from './media-stream-audio-source-node-constructor-factory';\nexport * from './media-stream-track-audio-source-node-constructor';\nexport * from './media-stream-track-audio-source-node-constructor-factory';\nexport * from './minimal-audio-context-constructor';\nexport * from './minimal-audio-context-constructor-factory';\nexport * from './minimal-base-audio-context-constructor';\nexport * from './minimal-base-audio-context-constructor-factory';\nexport * from './minimal-offline-audio-context-constructor';\nexport * from './minimal-offline-audio-context-constructor-factory';\nexport * from './monitor-connections-factory';\nexport * from './monitor-connections-function';\nexport * from './native-analyser-node';\nexport * from './native-analyser-node-factory';\nexport * from './native-analyser-node-factory-factory';\nexport * from './native-audio-buffer';\nexport * from './native-audio-buffer-constructor';\nexport * from './native-audio-buffer-constructor-factory';\nexport * from './native-audio-buffer-source-node';\nexport * from './native-audio-buffer-source-node-factory';\nexport * from './native-audio-buffer-source-node-factory-factory';\nexport * from './native-audio-context';\nexport * from './native-audio-context-constructor';\nexport * from './native-audio-context-constructor-factory';\nexport * from './native-audio-destination-node';\nexport * from './native-audio-destination-node-factory';\nexport * from './native-audio-destination-node-factory-factory';\nexport * from './native-audio-listener';\nexport * from './native-audio-node';\nexport * from './native-audio-param';\nexport * from './native-audio-param-map';\nexport * from './native-audio-worklet';\nexport * from './native-audio-worklet-node';\nexport * from './native-audio-worklet-node-constructor';\nexport * from './native-audio-worklet-node-constructor-factory';\nexport * from './native-audio-worklet-node-factory';\nexport * from './native-audio-worklet-node-factory-factory';\nexport * from './native-audio-worklet-node-faker-factory';\nexport * from './native-audio-worklet-node-faker-factory-factory';\nexport * from './native-audio-worklet-node-options';\nexport * from './native-biquad-filter-node';\nexport * from './native-biquad-filter-node-factory';\nexport * from './native-channel-merger-node';\nexport * from './native-channel-merger-node-factory';\nexport * from './native-channel-merger-node-factory-factory';\nexport * from './native-channel-splitter-node';\nexport * from './native-channel-splitter-node-factory';\nexport * from './native-constant-source-node';\nexport * from './native-constant-source-node-factory';\nexport * from './native-constant-source-node-factory-factory';\nexport * from './native-constant-source-node-faker-factory';\nexport * from './native-constant-source-node-faker-factory-factory';\nexport * from './native-context';\nexport * from './native-convolver-node';\nexport * from './native-convolver-node-factory';\nexport * from './native-convolver-node-factory-factory';\nexport * from './native-delay-node-factory';\nexport * from './native-delay-node';\nexport * from './native-dynamics-compressor-node';\nexport * from './native-dynamics-compressor-node-factory';\nexport * from './native-dynamics-compressor-node-factory-factory';\nexport * from './native-event-target';\nexport * from './native-gain-node';\nexport * from './native-gain-node-factory';\nexport * from './native-iir-filter-node';\nexport * from './native-iir-filter-node-factory';\nexport * from './native-iir-filter-node-factory-factory';\nexport * from './native-iir-filter-node-faker-factory';\nexport * from './native-iir-filter-node-faker-factory-factory';\nexport * from './native-media-element-audio-source-node';\nexport * from './native-media-element-audio-source-node-factory';\nexport * from './native-media-stream-audio-destination-node';\nexport * from './native-media-stream-audio-destination-node-factory';\nexport * from './native-media-stream-audio-source-node';\nexport * from './native-media-stream-audio-source-node-factory';\nexport * from './native-media-stream-track-audio-source-node';\nexport * from './native-media-stream-track-audio-source-node-factory';\nexport * from './native-media-stream-track-audio-source-node-factory-factory';\nexport * from './native-offline-audio-context';\nexport * from './native-offline-audio-context-constructor';\nexport * from './native-offline-audio-context-constructor-factory';\nexport * from './native-oscillator-node';\nexport * from './native-oscillator-node-factory';\nexport * from './native-oscillator-node-factory-factory';\nexport * from './native-panner-node';\nexport * from './native-panner-node-factory';\nexport * from './native-panner-node-factory-factory';\nexport * from './native-panner-node-faker-factory';\nexport * from './native-panner-node-faker-factory-factory';\nexport * from './native-periodic-wave';\nexport * from './native-periodic-wave-factory';\nexport * from './native-periodic-wave-factory-factory';\nexport * from './native-script-processor-node';\nexport * from './native-script-processor-node-factory';\nexport * from './native-stereo-panner-node';\nexport * from './native-stereo-panner-node-factory';\nexport * from './native-stereo-panner-node-factory-factory';\nexport * from './native-stereo-panner-node-faker-factory';\nexport * from './native-stereo-panner-node-faker-factory-factory';\nexport * from './native-wave-shaper-node';\nexport * from './native-wave-shaper-node-factory';\nexport * from './native-wave-shaper-node-factory-factory';\nexport * from './native-wave-shaper-node-faker-factory';\nexport * from './native-wave-shaper-node-faker-factory-factory';\nexport * from './not-supported-error-factory';\nexport * from './offline-audio-context-constructor-factory';\nexport * from './oscillator-node-constructor';\nexport * from './oscillator-node-constructor-factory';\nexport * from './oscillator-node-renderer';\nexport * from './oscillator-node-renderer-factory';\nexport * from './oscillator-node-renderer-factory-factory';\nexport * from './oscillator-type';\nexport * from './output-connection';\nexport * from './over-sample-type';\nexport * from './overwrite-accessors-function';\nexport * from './panner-node-constructor';\nexport * from './panner-node-constructor-factory';\nexport * from './panner-node-renderer-factory';\nexport * from './panner-node-renderer-factory-factory';\nexport * from './panning-model-type';\nexport * from './passive-audio-node-input-connection';\nexport * from './passive-audio-param-input-connection';\nexport * from './periodic-wave-constructor';\nexport * from './periodic-wave-constructor-factory';\nexport * from './pick-element-from-set-function';\nexport * from './render-automation-factory';\nexport * from './render-automation-function';\nexport * from './render-inputs-of-audio-node-factory';\nexport * from './render-inputs-of-audio-node-function';\nexport * from './render-inputs-of-audio-param-factory';\nexport * from './render-inputs-of-audio-param-function';\nexport * from './render-native-offline-audio-context-factory';\nexport * from './render-native-offline-audio-context-function';\nexport * from './sanitize-audio-worklet-node-options-function';\nexport * from './sanitize-channel-splitter-options-function';\nexport * from './sanitize-periodic-wave-options-function';\nexport * from './set-active-audio-worklet-node-inputs-factory';\nexport * from './set-active-audio-worklet-node-inputs-function';\nexport * from './set-audio-node-tail-time-factory';\nexport * from './set-audio-node-tail-time-function';\nexport * from './start-rendering-factory';\nexport * from './start-rendering-function';\nexport * from './stereo-panner-node-constructor';\nexport * from './stereo-panner-node-constructor-factory';\nexport * from './stereo-panner-node-renderer-factory-factory';\nexport * from './stereo-panner-node-renderer-factory';\nexport * from './test-audio-buffer-copy-channel-methods-subarray-support-factory';\nexport * from './test-audio-buffer-constructor-support-factory';\nexport * from './test-audio-context-close-method-support-factory';\nexport * from './test-audio-context-decode-audio-data-method-type-error-support-factory';\nexport * from './test-audio-context-options-support-factory';\nexport * from './test-audio-node-connect-method-support-factory';\nexport * from './test-audio-worklet-processor-no-outputs-support-factory';\nexport * from './test-audio-worklet-processor-post-message-support-factory';\nexport * from './test-channel-merger-node-channel-count-support-factory';\nexport * from './test-constant-source-node-accurate-scheduling-support-factory';\nexport * from './test-convolver-node-buffer-reassignability-support-factory';\nexport * from './test-convolver-node-channel-count-support-factory';\nexport * from './test-is-secure-context-support-factory';\nexport * from './test-media-stream-audio-source-node-media-stream-without-audio-track-support';\nexport * from './test-offline-audio-context-current-time-support-factory';\nexport * from './test-stereo-panner-node-default-value-support-factory';\nexport * from './unknown-error-factory';\nexport * from './unrendered-audio-worklet-node-store';\nexport * from './unrendered-audio-worklet-nodes';\nexport * from './wave-shaper-node-constructor';\nexport * from './wave-shaper-node-constructor-factory';\nexport * from './wave-shaper-node-renderer-factory-factory';\nexport * from './wave-shaper-node-renderer-factory';\nexport * from './window';\nexport * from './window-factory';\nexport * from './wrap-audio-buffer-copy-channel-methods-factory';\nexport * from './wrap-audio-buffer-copy-channel-methods-function';\nexport * from './wrap-audio-buffer-copy-channel-methods-out-of-bounds-factory';\nexport * from './wrap-audio-buffer-copy-channel-methods-out-of-bounds-function';\nexport * from './wrap-audio-buffer-source-node-start-method-offset-clamping-function';\nexport * from './wrap-audio-buffer-source-node-stop-method-nullified-buffer-factory';\nexport * from './wrap-audio-buffer-source-node-stop-method-nullified-buffer-function';\nexport * from './wrap-audio-scheduled-source-node-stop-method-consecutive-calls-function';\nexport * from './wrap-channel-merger-node-factory';\nexport * from './wrap-channel-merger-node-function';\nexport * from './wrap-event-listener-function';\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 { 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 { 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 { 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 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);\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);\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 isNativeOfflineAudioContext\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 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);\nconst nativeAudioWorkletNodeConstructor = createNativeAudioWorkletNodeConstructor(window);\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 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 = 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 = createMediaStreamTrackAudioSourceNodeConstructor(\n audioNodeConstructor,\n createNativeMediaStreamTrackAudioSourceNode,\n getNativeContext\n);\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 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","/**\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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { 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;\ntype BaseAudioContextSubset = import(\"./Context\").BaseAudioContextSubset;\n\nexport type ContextLatencyHint = AudioContextLatencyCategory;\n\nexport abstract class BaseContext extends Emitter<\"statechange\" | \"tick\"> implements BaseAudioContextSubset {\n\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(_numberOfChannels: number, _length: number, _sampleRate: number): AudioBuffer\n\n\tabstract createChannelMerger(_numberOfInputs?: number | undefined): ChannelMergerNode\n\n\tabstract createChannelSplitter(_numberOfOutputs?: number | undefined): 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(_feedForward: number[] | Float32Array, _feedback: number[] | Float32Array): 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(_stream: MediaStream): MediaStreamAudioSourceNode\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(_url: string, _name: string): Promise\n\n\tabstract lookAhead: number;\n\n\tabstract latencyHint: ContextLatencyHint | Seconds;\n\n\tabstract resume(): Promise\n\n\tabstract setTimeout(_fn: (...args: any[]) => void, _timeout: Seconds): number\n\n\tabstract clearTimeout(_id: number): this\n\n\tabstract setInterval(_fn: (...args: any[]) => void, _interval: Seconds): 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\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 { Omit } from \"../util/Interface\";\nimport { Timeline } from \"../util/Timeline\";\nimport { isDefined, isString } from \"../util/TypeCheck\";\nimport { AnyAudioContext, createAudioContext, createAudioWorkletNode } 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\n// these are either not used in Tone.js or deprecated and not implemented.\nexport type ExcludedFromBaseAudioContext = \"onstatechange\" | \"addEventListener\" | \"removeEventListener\" | \"listener\" | \"dispatchEvent\" | \"audioWorklet\" | \"destination\" | \"createScriptProcessor\";\n// \"createMediaStreamSource\" | \"createMediaElementSource\" | \"createMediaStreamTrackSource\" |\n// \"baseLatency\" | \"suspend\" |\n\n// the subset of the BaseAudioContext which Tone.Context implements.\nexport type BaseAudioContextSubset = Omit;\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\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, [\"context\"]);\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(this.emit.bind(this, \"tick\"), options.clockSource, options.updateInterval);\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(numberOfChannels: number, length: number, sampleRate: number): AudioBuffer {\n\t\treturn this._context.createBuffer(numberOfChannels, length, sampleRate);\n\t}\n\tcreateChannelMerger(numberOfInputs?: number | undefined): ChannelMergerNode {\n\t\treturn this._context.createChannelMerger(numberOfInputs);\n\t}\n\tcreateChannelSplitter(numberOfOutputs?: number | undefined): 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(feedForward: number[] | Float32Array, feedback: number[] | Float32Array): 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(isAudioContext(this._context), \"Not available if OfflineAudioContext\");\n\t\tconst context = this._context as AudioContext;\n\t\treturn context.createMediaStreamSource(stream);\n\t}\n\tcreateMediaStreamDestination(): MediaStreamAudioDestinationNode {\n\t\tassert(isAudioContext(this._context), \"Not available if OfflineAudioContext\");\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(!this._initialized, \"The listener cannot be set after initialization.\");\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(!this._initialized, \"The transport cannot be set after initialization.\");\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(!this._initialized, \"The destination cannot be set after initialization.\");\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(isDefined(this.rawContext.audioWorklet), \"AudioWorkletNode is only available in a secure context (https or localhost)\");\n\t\tif (!this._workletModules.has(name)) {\n\t\t\tthis._workletModules.set(name, this.rawContext.audioWorklet.addModule(url));\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 (this._context.state === \"suspended\" && 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(1, 128, this._context.sampleRate);\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 => this._constants[val].disconnect());\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 { 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(_numberOfChannels: number, _length: number, _sampleRate: number): AudioBuffer {\n\t\treturn {} as AudioBuffer;\n\t}\n\n\tcreateChannelMerger(_numberOfInputs?: number | undefined): ChannelMergerNode {\n\t\treturn {} as ChannelMergerNode;\n\t}\n\n\tcreateChannelSplitter(_numberOfOutputs?: number | undefined): 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(_feedForward: number[] | Float32Array, _feedback: number[] | Float32Array): 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\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 { 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 * Aside from load callbacks from individual buffers, ToneAudioBuffer\n * provides events which keep track of the loading progress\n * of _all_ of the buffers. These are ToneAudioBuffer.on(\"load\" / \"progress\" / \"error\")\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 { 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