gitextract_icqr6nvq/ ├── .editorconfig ├── .eslintrc.json ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ └── workflows/ │ └── build-release.yml ├── .gitignore ├── .gitmodules ├── .prettierignore ├── .prettierrc ├── .storybook/ │ ├── main.js │ ├── preview.js │ ├── tsconfig.json │ └── webpack.config.js ├── .vscode/ │ └── extensions.json ├── .yarnrc ├── CONTRIBUTION.md ├── LICENSE.md ├── README.md ├── apps/ │ ├── desktop/ │ │ ├── README.md │ │ ├── frontend/ │ │ │ ├── .babelrc │ │ │ ├── .browserslistrc │ │ │ ├── .eslintrc.json │ │ │ ├── .storybook/ │ │ │ │ ├── main.js │ │ │ │ ├── preview.js │ │ │ │ ├── tsconfig.json │ │ │ │ └── webpack.config.js │ │ │ ├── README.md │ │ │ ├── jest.config.ts │ │ │ ├── proxy.conf.json │ │ │ ├── src/ │ │ │ │ ├── app/ │ │ │ │ │ ├── RewindApp.tsx │ │ │ │ │ ├── api.ts │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── analyzer/ │ │ │ │ │ │ │ ├── BaseAudioSettingsPanel.tsx │ │ │ │ │ │ │ ├── BaseCurrentTime.stories.tsx │ │ │ │ │ │ │ ├── BaseCurrentTime.tsx │ │ │ │ │ │ │ ├── BaseDialog.tsx │ │ │ │ │ │ │ ├── BaseGameTimeSlider.stories.tsx │ │ │ │ │ │ │ ├── BaseGameTimeSlider.tsx │ │ │ │ │ │ │ ├── BaseSettingsModal.stories.tsx │ │ │ │ │ │ │ ├── BaseSettingsModal.tsx │ │ │ │ │ │ │ ├── GameCanvas.tsx │ │ │ │ │ │ │ ├── HelpModal.stories.tsx │ │ │ │ │ │ │ ├── HelpModal.tsx │ │ │ │ │ │ │ ├── PlayBar.tsx │ │ │ │ │ │ │ └── SettingsModal.tsx │ │ │ │ │ │ ├── logo/ │ │ │ │ │ │ │ └── RewindLogo.tsx │ │ │ │ │ │ ├── sidebar/ │ │ │ │ │ │ │ └── LeftMenuSidebar.tsx │ │ │ │ │ │ └── update/ │ │ │ │ │ │ └── UpdateModal.tsx │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ ├── app-info.ts │ │ │ │ │ │ ├── audio.ts │ │ │ │ │ │ ├── energy-saver.ts │ │ │ │ │ │ ├── game-clock.ts │ │ │ │ │ │ ├── interval.ts │ │ │ │ │ │ ├── mods.ts │ │ │ │ │ │ ├── redux.ts │ │ │ │ │ │ └── shortcuts.ts │ │ │ │ │ ├── model/ │ │ │ │ │ │ ├── BlueprintInfo.ts │ │ │ │ │ │ ├── OsuReplay.ts │ │ │ │ │ │ ├── Skin.ts │ │ │ │ │ │ └── SkinId.ts │ │ │ │ │ ├── providers/ │ │ │ │ │ │ ├── SettingsProvider.tsx │ │ │ │ │ │ └── TheaterProvider.tsx │ │ │ │ │ ├── screens/ │ │ │ │ │ │ ├── analyzer/ │ │ │ │ │ │ │ └── Analyzer.tsx │ │ │ │ │ │ ├── home/ │ │ │ │ │ │ │ └── HomeScreen.tsx │ │ │ │ │ │ ├── setup/ │ │ │ │ │ │ │ └── SetupScreen.tsx │ │ │ │ │ │ └── splash/ │ │ │ │ │ │ └── SplashScreen.tsx │ │ │ │ │ ├── services/ │ │ │ │ │ │ ├── analysis/ │ │ │ │ │ │ │ ├── AnalysisApp.ts │ │ │ │ │ │ │ ├── analysis-cursor.ts │ │ │ │ │ │ │ ├── createRewindAnalysisApp.ts │ │ │ │ │ │ │ ├── mod-settings.ts │ │ │ │ │ │ │ ├── scenes/ │ │ │ │ │ │ │ │ ├── AnalysisScene.ts │ │ │ │ │ │ │ │ ├── IdleScene.ts │ │ │ │ │ │ │ │ ├── LoadingScene.ts │ │ │ │ │ │ │ │ └── ResultsScreenScene.ts │ │ │ │ │ │ │ └── screenshot.ts │ │ │ │ │ │ ├── common/ │ │ │ │ │ │ │ ├── CommonManagers.ts │ │ │ │ │ │ │ ├── app-info.ts │ │ │ │ │ │ │ ├── audio/ │ │ │ │ │ │ │ │ ├── AudioEngine.ts │ │ │ │ │ │ │ │ ├── AudioService.ts │ │ │ │ │ │ │ │ └── settings.ts │ │ │ │ │ │ │ ├── beatmap-background.ts │ │ │ │ │ │ │ ├── beatmap-render.ts │ │ │ │ │ │ │ ├── cursor.ts │ │ │ │ │ │ │ ├── game/ │ │ │ │ │ │ │ │ ├── GameLoop.ts │ │ │ │ │ │ │ │ ├── GameSimulator.ts │ │ │ │ │ │ │ │ └── GameplayClock.ts │ │ │ │ │ │ │ ├── hit-error-bar.ts │ │ │ │ │ │ │ ├── key-press-overlay.ts │ │ │ │ │ │ │ ├── local/ │ │ │ │ │ │ │ │ ├── BlueprintLocatorService.ts │ │ │ │ │ │ │ │ ├── OsuDBDao.ts │ │ │ │ │ │ │ │ ├── OsuFolderService.ts │ │ │ │ │ │ │ │ ├── ReplayFileWatcher.ts │ │ │ │ │ │ │ │ ├── ReplayService.ts │ │ │ │ │ │ │ │ └── SkinLoader.ts │ │ │ │ │ │ │ ├── local-storage.ts │ │ │ │ │ │ │ ├── playbar.ts │ │ │ │ │ │ │ ├── playfield-border.ts │ │ │ │ │ │ │ ├── replay-cursor.ts │ │ │ │ │ │ │ ├── scenes/ │ │ │ │ │ │ │ │ ├── IScene.ts │ │ │ │ │ │ │ │ └── SceneManager.ts │ │ │ │ │ │ │ └── skin.ts │ │ │ │ │ │ ├── core/ │ │ │ │ │ │ │ └── service.ts │ │ │ │ │ │ ├── manager/ │ │ │ │ │ │ │ ├── AnalysisSceneManager.ts │ │ │ │ │ │ │ ├── BeatmapManager.ts │ │ │ │ │ │ │ ├── ClipRecorder.ts │ │ │ │ │ │ │ ├── ReplayManager.ts │ │ │ │ │ │ │ └── ScenarioManager.ts │ │ │ │ │ │ ├── renderers/ │ │ │ │ │ │ │ ├── PixiRendererManager.ts │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── background/ │ │ │ │ │ │ │ │ │ └── BeatmapBackground.ts │ │ │ │ │ │ │ │ ├── hud/ │ │ │ │ │ │ │ │ │ └── ForegroundHUDPreparer.ts │ │ │ │ │ │ │ │ ├── keypresses/ │ │ │ │ │ │ │ │ │ └── KeyPressOverlay.ts │ │ │ │ │ │ │ │ ├── playfield/ │ │ │ │ │ │ │ │ │ ├── CursorPreparer.ts │ │ │ │ │ │ │ │ │ ├── HitCircleFactory.ts │ │ │ │ │ │ │ │ │ ├── HitObjectsContainerFactory.ts │ │ │ │ │ │ │ │ │ ├── JudgementPreparer.ts │ │ │ │ │ │ │ │ │ ├── PlayfieldBorderFactory.ts │ │ │ │ │ │ │ │ │ ├── PlayfieldFactory.ts │ │ │ │ │ │ │ │ │ ├── SliderFactory.ts │ │ │ │ │ │ │ │ │ └── SpinnerFactory.ts │ │ │ │ │ │ │ │ ├── sliders/ │ │ │ │ │ │ │ │ │ └── SliderTextureManager.ts │ │ │ │ │ │ │ │ └── stage/ │ │ │ │ │ │ │ │ └── AnalysisStage.ts │ │ │ │ │ │ │ └── constants.ts │ │ │ │ │ │ ├── textures/ │ │ │ │ │ │ │ └── TextureManager.ts │ │ │ │ │ │ └── types/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── store/ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ ├── settings/ │ │ │ │ │ │ │ └── slice.ts │ │ │ │ │ │ └── update/ │ │ │ │ │ │ └── slice.ts │ │ │ │ │ ├── styles/ │ │ │ │ │ │ └── theme.ts │ │ │ │ │ └── utils/ │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── focus.ts │ │ │ │ │ ├── pooling/ │ │ │ │ │ │ ├── ObjectPool.ts │ │ │ │ │ │ └── TemporaryObjectPool.ts │ │ │ │ │ └── replay.ts │ │ │ │ ├── assets/ │ │ │ │ │ └── .gitkeep │ │ │ │ ├── constants.ts │ │ │ │ ├── environments/ │ │ │ │ │ ├── environment.prod.ts │ │ │ │ │ └── environment.ts │ │ │ │ ├── index.html │ │ │ │ ├── main.tsx │ │ │ │ ├── polyfills.ts │ │ │ │ └── styles.css │ │ │ ├── test/ │ │ │ │ └── ajv.spec.ts │ │ │ ├── tsconfig.app.json │ │ │ ├── tsconfig.json │ │ │ ├── tsconfig.spec.json │ │ │ └── webpack.config.js │ │ └── main/ │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── electron-builder.json │ │ ├── jest.config.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── .gitkeep │ │ │ │ ├── config.ts │ │ │ │ ├── events.ts │ │ │ │ ├── updater.ts │ │ │ │ └── windows.ts │ │ │ ├── assets/ │ │ │ │ └── .gitkeep │ │ │ ├── environments/ │ │ │ │ ├── environment.prod.ts │ │ │ │ └── environment.ts │ │ │ └── index.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ └── web/ │ └── backend/ │ ├── .eslintrc.json │ ├── README.md │ ├── jest.config.ts │ ├── src/ │ │ ├── DesktopAPI.ts │ │ ├── api-common.module.ts │ │ ├── assets/ │ │ │ └── index.html │ │ ├── blueprints/ │ │ │ ├── BlueprintInfo.ts │ │ │ ├── LocalBlueprintController.ts │ │ │ ├── LocalBlueprintService.ts │ │ │ └── OsuDBDao.ts │ │ ├── config/ │ │ │ ├── DesktopConfigController.ts │ │ │ ├── DesktopConfigService.ts │ │ │ ├── UserConfigService.ts │ │ │ └── utils.ts │ │ ├── constants.ts │ │ ├── environments/ │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ ├── events/ │ │ │ ├── Events.ts │ │ │ └── EventsGateway.ts │ │ ├── main.ts │ │ ├── replays/ │ │ │ ├── LocalReplayController.ts │ │ │ ├── LocalReplayService.ts │ │ │ ├── ReplayWatcher.ts │ │ │ └── ScoresDBDao.ts │ │ ├── skins/ │ │ │ ├── SkinController.ts │ │ │ ├── SkinNameResolver.ts │ │ │ └── SkinService.ts │ │ ├── status/ │ │ │ └── SetupStatusController.ts │ │ └── utils/ │ │ ├── names.spec.ts │ │ └── names.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── babel.config.json ├── electron-builder.json ├── jest.config.ts ├── jest.preset.js ├── libs/ │ ├── @types/ │ │ └── node-osr/ │ │ └── index.d.ts │ ├── osu/ │ │ ├── core/ │ │ │ ├── .babelrc │ │ │ ├── .eslintrc.json │ │ │ ├── README.md │ │ │ ├── jest.config.ts │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── audio/ │ │ │ │ │ ├── HitSampleInfo.ts │ │ │ │ │ └── LegacySampleBank.ts │ │ │ │ ├── beatmap/ │ │ │ │ │ ├── Beatmap.ts │ │ │ │ │ ├── BeatmapBuilder.ts │ │ │ │ │ ├── BeatmapDifficulty.ts │ │ │ │ │ ├── ControlPoints/ │ │ │ │ │ │ ├── ControlPoint.ts │ │ │ │ │ │ ├── ControlPointGroup.ts │ │ │ │ │ │ ├── ControlPointInfo.ts │ │ │ │ │ │ ├── DifficultyControlPoint.ts │ │ │ │ │ │ ├── EffectControlPoint.ts │ │ │ │ │ │ ├── SampleControlPoint.ts │ │ │ │ │ │ └── TimingControlPoint.ts │ │ │ │ │ ├── LegacyEffectFlag.ts │ │ │ │ │ └── TimeSignatures.ts │ │ │ │ ├── blueprint/ │ │ │ │ │ ├── Blueprint.ts │ │ │ │ │ ├── BlueprintParser.spec.ts │ │ │ │ │ ├── BlueprintParser.ts │ │ │ │ │ └── HitObjectSettings.ts │ │ │ │ ├── gameplay/ │ │ │ │ │ ├── GameState.ts │ │ │ │ │ ├── GameStateEvaluator.spec.ts │ │ │ │ │ ├── GameStateEvaluator.ts │ │ │ │ │ ├── GameStateTimeMachine.ts │ │ │ │ │ ├── GameplayAnalysisEvent.ts │ │ │ │ │ ├── GameplayInfo.ts │ │ │ │ │ └── Verdicts.ts │ │ │ │ ├── hitobjects/ │ │ │ │ │ ├── HitCircle.ts │ │ │ │ │ ├── Properties.ts │ │ │ │ │ ├── Slider.ts │ │ │ │ │ ├── SliderCheckPoint.ts │ │ │ │ │ ├── Spinner.ts │ │ │ │ │ ├── Types.ts │ │ │ │ │ └── slider/ │ │ │ │ │ ├── PathApproximator.ts │ │ │ │ │ ├── PathControlPoint.ts │ │ │ │ │ ├── PathType.ts │ │ │ │ │ ├── SliderCheckPointDescriptor.ts │ │ │ │ │ ├── SliderCheckPointGenerator.ts │ │ │ │ │ └── SliderPath.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mods/ │ │ │ │ │ ├── EasyMod.ts │ │ │ │ │ ├── HardRockMod.ts │ │ │ │ │ ├── HiddenMod.ts │ │ │ │ │ ├── Mods.spec.ts │ │ │ │ │ ├── Mods.ts │ │ │ │ │ └── StackingMod.ts │ │ │ │ ├── playfield.ts │ │ │ │ ├── replays/ │ │ │ │ │ ├── RawReplayData.ts │ │ │ │ │ ├── Replay.ts │ │ │ │ │ ├── ReplayClicks.ts │ │ │ │ │ ├── ReplayParser.spec.ts │ │ │ │ │ └── ReplayParser.ts │ │ │ │ └── utils/ │ │ │ │ ├── SortedList.spec.ts │ │ │ │ ├── SortedList.ts │ │ │ │ ├── index.spec.ts │ │ │ │ └── index.ts │ │ │ ├── test/ │ │ │ │ ├── PathApproximator.spec.ts │ │ │ │ └── utils/ │ │ │ │ └── asserts.ts │ │ │ ├── tsconfig.json │ │ │ ├── tsconfig.lib.json │ │ │ └── tsconfig.spec.json │ │ ├── math/ │ │ │ ├── .babelrc │ │ │ ├── .eslintrc.json │ │ │ ├── README.md │ │ │ ├── jest.config.ts │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── Vec2.ts │ │ │ │ ├── colors.ts │ │ │ │ ├── difficulty.spec.ts │ │ │ │ ├── difficulty.ts │ │ │ │ ├── easing.ts │ │ │ │ ├── float32.ts │ │ │ │ ├── index.ts │ │ │ │ ├── sliders.ts │ │ │ │ ├── time.spec.ts │ │ │ │ ├── time.ts │ │ │ │ └── utils.ts │ │ │ ├── tsconfig.json │ │ │ ├── tsconfig.lib.json │ │ │ └── tsconfig.spec.json │ │ ├── pp/ │ │ │ ├── .babelrc │ │ │ ├── .eslintrc.json │ │ │ ├── README.md │ │ │ ├── jest.config.ts │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── index.ts │ │ │ │ └── lib/ │ │ │ │ ├── diff.ts │ │ │ │ ├── mods.spec.ts │ │ │ │ ├── mods.ts │ │ │ │ ├── pp.ts │ │ │ │ ├── skills/ │ │ │ │ │ ├── aim.ts │ │ │ │ │ ├── flashlight.ts │ │ │ │ │ ├── speed.ts │ │ │ │ │ └── strain.ts │ │ │ │ ├── utils.spec.ts │ │ │ │ └── utils.ts │ │ │ ├── tsconfig.json │ │ │ ├── tsconfig.lib.json │ │ │ └── tsconfig.spec.json │ │ └── skin/ │ │ ├── .babelrc │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── jest.config.ts │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── lib/ │ │ │ ├── OsuSkinTextureConfig.ts │ │ │ ├── SkinConfig.ts │ │ │ ├── SkinConfigParser.spec.ts │ │ │ ├── SkinConfigParser.ts │ │ │ └── TextureTypes.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ └── tsconfig.spec.json │ ├── osu-local/ │ │ ├── db-reader/ │ │ │ ├── .babelrc │ │ │ ├── .eslintrc.json │ │ │ ├── README.md │ │ │ ├── jest.config.ts │ │ │ ├── src/ │ │ │ │ ├── DatabaseReader.ts │ │ │ │ ├── DatabaseTypes.ts │ │ │ │ ├── OsuBuffer.ts │ │ │ │ ├── OsuDBReader.ts │ │ │ │ ├── ScoresDBReader.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── tsconfig.lib.json │ │ │ └── tsconfig.spec.json │ │ ├── gosumemory/ │ │ │ ├── .babelrc │ │ │ ├── .eslintrc.json │ │ │ ├── README.md │ │ │ ├── jest.config.ts │ │ │ ├── src/ │ │ │ │ ├── gosumemory.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── tsconfig.lib.json │ │ │ └── tsconfig.spec.json │ │ ├── osr-reader/ │ │ │ ├── .babelrc │ │ │ ├── .eslintrc.json │ │ │ ├── README.md │ │ │ ├── jest.config.ts │ │ │ ├── src/ │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── tsconfig.lib.json │ │ │ └── tsconfig.spec.json │ │ ├── skin-reader/ │ │ │ ├── .babelrc │ │ │ ├── .eslintrc.json │ │ │ ├── README.md │ │ │ ├── jest.config.ts │ │ │ ├── src/ │ │ │ │ ├── SkinFolderReader.ts │ │ │ │ ├── SkinTextureResolver.ts │ │ │ │ └── index.ts │ │ │ ├── tsconfig.json │ │ │ ├── tsconfig.lib.json │ │ │ └── tsconfig.spec.json │ │ └── utils/ │ │ ├── .babelrc │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── jest.config.ts │ │ ├── src/ │ │ │ ├── dates.ts │ │ │ ├── files.ts │ │ │ ├── index.ts │ │ │ ├── osuUserConfig.spec.ts │ │ │ ├── osuUserConfig.ts │ │ │ └── stable.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ └── tsconfig.spec.json │ └── osu-pixi/ │ ├── classic-components/ │ │ ├── .babelrc │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── jest.config.ts │ │ ├── src/ │ │ │ ├── DrawableSettings.ts │ │ │ ├── hitobjects/ │ │ │ │ ├── OsuClassicApproachCircle.ts │ │ │ │ ├── OsuClassicConstants.ts │ │ │ │ ├── OsuClassicCursor.ts │ │ │ │ ├── OsuClassicHitCircleArea.ts │ │ │ │ ├── OsuClassicJudgements.ts │ │ │ │ ├── OsuClassicSliderBall.ts │ │ │ │ ├── OsuClassicSliderBody.ts │ │ │ │ ├── OsuClassicSliderRepeat.ts │ │ │ │ ├── OsuClassicSliderTick.ts │ │ │ │ └── OsuClassicSpinner.ts │ │ │ ├── hud/ │ │ │ │ ├── HitErrorBar.ts │ │ │ │ ├── OsuClassicAccuracy.ts │ │ │ │ ├── OsuClassicJudgement.ts │ │ │ │ └── OsuClassicNumber.ts │ │ │ ├── index.ts │ │ │ ├── playfield/ │ │ │ │ └── PlayfieldBorder.ts │ │ │ ├── renderers/ │ │ │ │ └── BasicSliderTextureRenderer.ts │ │ │ └── utils/ │ │ │ ├── Animation.ts │ │ │ ├── Pixi.ts │ │ │ ├── Preparable.ts │ │ │ ├── Transformations.ts │ │ │ ├── constants.ts │ │ │ ├── numbers.spec.ts │ │ │ └── numbers.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.lib.json │ │ └── tsconfig.spec.json │ └── rewind/ │ ├── .babelrc │ ├── .eslintrc.json │ ├── README.md │ ├── jest.config.ts │ ├── src/ │ │ ├── index.ts │ │ └── lib/ │ │ └── AnalysisCursor.ts │ ├── tsconfig.json │ ├── tsconfig.lib.json │ └── tsconfig.spec.json ├── migrations.json ├── nx.json ├── package.json ├── resources/ │ └── Skins/ │ ├── OsuDefaultSkin/ │ │ └── README.md │ └── RewindDefaultSkin/ │ ├── README.md │ └── skin.ini ├── testdata/ │ └── osu!/ │ ├── Replays/ │ │ ├── - Perfume - Daijobanai [Short kick slider] (2021-07-16) Perfect.osr │ │ ├── - Perfume - Daijobanai [Short kick slider] (2021-07-16) TooLateMissed.osr │ │ ├── - Perfume - Daijobanai [Slider (Repeat = 1)] (2021-07-07) Perfect.osr │ │ ├── - Perfume - Daijobanai [Slider 1] (2021-07-07) Osu Perfect.osr │ │ ├── - Perfume - Daijobanai [Slider 1] (2021-07-07) Osu SliderHeadMissedButTrackingWtf.osr │ │ ├── - Perfume - Daijobanai [Slider 1] (2021-07-07) Osu SliderHeadTooEarly.osr │ │ ├── - Perfume - Daijobanai [Slider 1] (2021-07-07) Osu SliderHeadTooLate.osr │ │ ├── - Perfume - Daijobanai [Slider 1] (2021-07-07) Perfect.osr │ │ ├── - Perfume - Daijobanai [Slider 1] (2021-07-07) SliderEndMissed.osr │ │ ├── - Perfume - Daijobanai [Slider 1] (2021-07-07) SliderHeadMissedButTrackingWtf.osr │ │ ├── - Perfume - Daijobanai [Slider 1] (2021-07-07) SliderHeadTooEarly.osr │ │ ├── - Perfume - Daijobanai [Slider 1] (2021-07-07) SliderHeadTooLate.osr │ │ ├── RyuK - HoneyWorks - Akatsuki Zukuyo [Taeyang_s Extra] (2019-06-08) Osu.osr │ │ ├── Varvalian - Aether Realm - The Sun, The Moon, The Star [Mourning Those Things I've Long Left Behind] (2019-05-15) Osu.osr │ │ ├── abstrakt - Gojou Mayumi - DANZEN! Futari wa PreCure Ver. MaxHeart (TV Size) [Insane] (2021-08-21) Osu.osr │ │ ├── abstrakt - PSYQUI - Hype feat. Such [Dreamer] (2021-08-08) Osu.osr │ │ ├── abstrakt - SHK - Violet Perfume [Insane] (2021-03-27) Osu.osr │ │ ├── abstrakt - Smile.dk - Koko Soko (AKIBA KOUBOU Eurobeat Remix) [Couch Mini2a] (2021-04-09) Osu.osr │ │ ├── abstrakt - sabi - true DJ MAG top ranker_s song Zenpen (katagiri Remix) [Senseabel's Extra] (2021-08-08) Osu.osr │ │ ├── hallowatcher - DECO27 - HIBANA feat. Hatsune Miku [Lock On] (2020-02-09) Osu.osr │ │ └── kellad - Asriel - Raison D'etre [EXist] (2025-02-16) Osu.osr │ ├── Songs/ │ │ ├── 1001507 ZUTOMAYO - Kan Saete Kuyashiiwa/ │ │ │ └── ZUTOMAYO - Kan Saete Kuyashiiwa (Nathan) [geragera].osu │ │ ├── 1010865 SHK - Violet Perfume [no video]/ │ │ │ └── SHK - Violet Perfume (ktgster) [Insane].osu │ │ ├── 1236927 Frums - XNOR XNOR XNOR/ │ │ │ ├── Frums - XNOR XNOR XNOR (fanzhen0019) [.-- .-. --- -. --. .-- .- -.--].osu │ │ │ ├── Frums - XNOR XNOR XNOR (fanzhen0019) [Beloved Exclusive].osu │ │ │ ├── Frums - XNOR XNOR XNOR (fanzhen0019) [Earth (atm)].osu │ │ │ ├── Frums - XNOR XNOR XNOR (fanzhen0019) [Earth].osu │ │ │ ├── Frums - XNOR XNOR XNOR (fanzhen0019) [Fire].osu │ │ │ ├── Frums - XNOR XNOR XNOR (fanzhen0019) [Metal].osu │ │ │ ├── Frums - XNOR XNOR XNOR (fanzhen0019) [Moon].osu │ │ │ ├── Frums - XNOR XNOR XNOR (fanzhen0019) [Sun].osu │ │ │ ├── Frums - XNOR XNOR XNOR (fanzhen0019) [Water].osu │ │ │ └── Frums - XNOR XNOR XNOR (fanzhen0019) [Wood].osu │ │ ├── 1302792 Smiledk - Koko Soko (AKIBA KOUBOU Eurobeat Remix)/ │ │ │ └── Smile.dk - Koko Soko (AKIBA KOUBOU Eurobeat Remix) ([ Couch ] Mini) [Couch Mini2a].osu │ │ ├── 1357624 sabi - true DJ MAG top ranker's song Zenpen (katagiri Remix)/ │ │ │ └── sabi - true DJ MAG top ranker's song Zenpen (katagiri Remix) (Nathan) [KEMOMIMI EDM SQUAD].osu │ │ ├── 1495211 Aether Realm - The Tower/ │ │ │ └── Aether Realm - The Tower (Takane) [Brick and Mortar].osu │ │ ├── 150945 Knife Party - Centipede/ │ │ │ └── Knife Party - Centipede (Sugoi-_-Desu) [This isn't a map, just a simple visualisation].osu │ │ ├── 158023 UNDEAD CORPORATION - Everything will freeze/ │ │ │ └── UNDEAD CORPORATION - Everything will freeze (Ekoro) [Time Freeze].osu │ │ ├── 29157 Within Temptation - The Unforgiving [no video]/ │ │ │ └── Within Temptation - The Unforgiving (Armin) [Marathon].osu │ │ ├── 351280 HoneyWorks - Akatsuki Zukuyo/ │ │ │ └── HoneyWorks - Akatsuki Zukuyo ([C u r i]) [Taeyang's Extra].osu │ │ ├── 607089 Xi - Rokujuu Nenme no Shinsoku Saiban _ Rapidity is a justice/ │ │ │ └── Xi - Rokujuu Nenme no Shinsoku Saiban ~ Rapidity is a justice (tokiko) [Extra Stage].osu │ │ ├── 863227 Brian The Sun - Lonely Go! (TV Size) [no video]/ │ │ │ └── Brian The Sun - Lonely Go! (TV Size) (Nevo) [Fiery's Extreme].osu │ │ ├── 931596 Apol - Hidamari no Uta/ │ │ │ └── Apol - Hidamari no Uta (-Keitaro) [Expert].osu │ │ ├── 933630 Aether Realm - The Sun, The Moon, The Star/ │ │ │ └── Aether Realm - The Sun, The Moon, The Star (ItsWinter) [Mourning Those Things I've Long Left Behind].osu │ │ └── 967347 Perfume - Daijobanai/ │ │ ├── Perfume - Daijobanai (eiri-) [Easy].osu │ │ ├── Perfume - Daijobanai (eiri-) [Hard].osu │ │ ├── Perfume - Daijobanai (eiri-) [HitCircle 1].osu │ │ ├── Perfume - Daijobanai (eiri-) [Normal].osu │ │ ├── Perfume - Daijobanai (eiri-) [Short kick slider].osu │ │ ├── Perfume - Daijobanai (eiri-) [Slider (Repeat = 1)].osu │ │ ├── Perfume - Daijobanai (eiri-) [Slider 1].osu │ │ └── Perfume - Daijobanai (eiri-) [Smile].osu │ └── osu!.me.cfg ├── tests/ │ ├── game-simulation/ │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── jest.config.ts │ │ ├── src/ │ │ │ ├── core/ │ │ │ │ ├── BeatmapBuilder.spec.ts │ │ │ │ ├── BlueprintParser.spec.ts │ │ │ │ ├── OsuStdReplayState.spec.ts │ │ │ │ ├── ReplayClicks.spec.ts │ │ │ │ ├── archive/ │ │ │ │ │ ├── reference/ │ │ │ │ │ │ ├── DANZEN.spec.ts │ │ │ │ │ │ └── KokoSokoMini.spec.ts │ │ │ │ │ └── replays/ │ │ │ │ │ ├── DaijobanaiSlider1.spec.ts │ │ │ │ │ ├── sunMoonStar.spec.ts │ │ │ │ │ └── topranker.spec.ts │ │ │ │ ├── bpm.test.ts │ │ │ │ └── hitobjects.test.ts │ │ │ ├── local/ │ │ │ │ ├── osudb.test.ts │ │ │ │ └── scoresdb.test.ts │ │ │ ├── others.ts │ │ │ ├── pp/ │ │ │ │ ├── diff.test.ts │ │ │ │ ├── ojsama.test.ts │ │ │ │ └── pp.test.ts │ │ │ ├── reference.ts │ │ │ └── util.ts │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ └── osu-stable-test-generator/ │ ├── .eslintrc.json │ ├── jest.config.ts │ ├── src/ │ │ ├── app/ │ │ │ └── .gitkeep │ │ ├── assets/ │ │ │ └── .gitkeep │ │ ├── environments/ │ │ │ ├── environment.prod.ts │ │ │ └── environment.ts │ │ └── main.ts │ ├── tsconfig.app.json │ ├── tsconfig.json │ └── tsconfig.spec.json ├── tools/ │ ├── generators/ │ │ └── .gitkeep │ └── tsconfig.tools.json ├── tsconfig.base.json └── workspace.json