├── .github ├── ISSUE_TEMPLATE │ ├── bug-report-zh_cn.md │ └── feature_request-zh_cn.md └── workflows │ └── release.yml ├── .gitignore ├── AUTHORS ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro ├── schemas │ ├── io.nekohasekai.sagernet.database.SagerDatabase │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ └── 5.json │ ├── io.nekohasekai.sagernet.database.preference.PublicDatabase │ │ └── 1.json │ └── moe.matsuri.nya.TempDatabase │ │ └── 1.json └── src │ ├── foss │ └── java │ │ └── moe │ │ └── matsuri │ │ └── MoeAd.kt │ ├── google │ └── java │ │ └── moe │ │ └── matsuri │ │ └── MoeAd.kt │ └── main │ ├── AndroidManifest.xml │ ├── aidl │ └── io │ │ └── nekohasekai │ │ └── sagernet │ │ └── aidl │ │ ├── AppStatsList.aidl │ │ ├── ISagerNetService.aidl │ │ ├── ISagerNetServiceCallback.aidl │ │ └── TrafficStats.aidl │ ├── assets │ ├── LICENSE │ ├── analysis.txt │ └── proxy_packagename.txt │ ├── java │ ├── com │ │ ├── github │ │ │ └── shadowsocks │ │ │ │ ├── net │ │ │ │ ├── ConcurrentLocalSocketListener.kt │ │ │ │ └── LocalSocketListener.kt │ │ │ │ ├── plugin │ │ │ │ ├── ConfigurationActivity.kt │ │ │ │ ├── HelpActivity.kt │ │ │ │ ├── HelpCallback.kt │ │ │ │ ├── InternalPlugin.kt │ │ │ │ ├── NativePlugin.kt │ │ │ │ ├── NativePluginProvider.kt │ │ │ │ ├── NoPlugin.kt │ │ │ │ ├── OptionsCapableActivity.kt │ │ │ │ ├── PathProvider.kt │ │ │ │ ├── Plugin.kt │ │ │ │ ├── PluginConfiguration.kt │ │ │ │ ├── PluginContract.kt │ │ │ │ ├── PluginList.kt │ │ │ │ ├── PluginManager.kt │ │ │ │ ├── PluginOptions.kt │ │ │ │ ├── ResolvedPlugin.kt │ │ │ │ ├── Utils.kt │ │ │ │ └── fragment │ │ │ │ │ └── AlertDialogFragment.kt │ │ │ │ └── preference │ │ │ │ ├── PluginConfigurationDialogFragment.kt │ │ │ │ ├── PluginPreference.kt │ │ │ │ └── PluginPreferenceDialogFragment.kt │ │ └── wireguard │ │ │ └── crypto │ │ │ ├── Curve25519.java │ │ │ ├── Ed25519.java │ │ │ ├── Key.java │ │ │ ├── KeyFormatException.java │ │ │ └── KeyPair.java │ ├── io │ │ └── nekohasekai │ │ │ └── sagernet │ │ │ ├── BootReceiver.kt │ │ │ ├── Constants.kt │ │ │ ├── QuickToggleShortcut.kt │ │ │ ├── SagerNet.kt │ │ │ ├── aidl │ │ │ ├── AppStats.kt │ │ │ ├── AppStatsList.kt │ │ │ └── TrafficStats.kt │ │ │ ├── bg │ │ │ ├── AbstractInstance.kt │ │ │ ├── BaseService.kt │ │ │ ├── Executable.kt │ │ │ ├── GuardedProcessPool.kt │ │ │ ├── ProxyService.kt │ │ │ ├── SagerConnection.kt │ │ │ ├── ServiceNotification.kt │ │ │ ├── SubscriptionUpdater.kt │ │ │ ├── TileService.kt │ │ │ ├── VpnService.kt │ │ │ ├── proto │ │ │ │ ├── ProxyInstance.kt │ │ │ │ └── V2RayInstance.kt │ │ │ └── test │ │ │ │ ├── DebugInstance.kt │ │ │ │ ├── UrlTest.kt │ │ │ │ └── V2RayTestInstance.kt │ │ │ ├── database │ │ │ ├── DataStore.kt │ │ │ ├── GroupManager.kt │ │ │ ├── ParcelizeBridge.java │ │ │ ├── ProfileManager.kt │ │ │ ├── ProxyEntity.kt │ │ │ ├── ProxyGroup.kt │ │ │ ├── RuleEntity.kt │ │ │ ├── SagerDatabase.kt │ │ │ ├── StatsEntity.kt │ │ │ ├── SubscriptionBean.java │ │ │ └── preference │ │ │ │ ├── EditTextPreferenceModifiers.kt │ │ │ │ ├── KeyValuePair.kt │ │ │ │ ├── OnPreferenceDataStoreChangeListener.kt │ │ │ │ ├── PublicDatabase.kt │ │ │ │ └── RoomPreferenceDataStore.kt │ │ │ ├── fmt │ │ │ ├── AbstractBean.java │ │ │ ├── ConfigBuilder.kt │ │ │ ├── KryoConverters.java │ │ │ ├── PluginEntry.kt │ │ │ ├── Serializable.kt │ │ │ ├── TypeMap.kt │ │ │ ├── UniversalFmt.kt │ │ │ ├── gson │ │ │ │ ├── GsonConverters.java │ │ │ │ ├── Gsons.kt │ │ │ │ ├── JsonLazyAdapter.java │ │ │ │ ├── JsonLazyFactory.java │ │ │ │ ├── JsonLazyInterface.java │ │ │ │ ├── JsonOr.java │ │ │ │ ├── JsonOrAdapter.java │ │ │ │ └── JsonOrAdapterFactory.java │ │ │ ├── http │ │ │ │ ├── HttpBean.java │ │ │ │ └── HttpFmt.kt │ │ │ ├── hysteria │ │ │ │ ├── HysteriaBean.java │ │ │ │ └── HysteriaFmt.kt │ │ │ ├── internal │ │ │ │ ├── ChainBean.java │ │ │ │ └── InternalBean.java │ │ │ ├── naive │ │ │ │ ├── NaiveBean.java │ │ │ │ └── NaiveFmt.kt │ │ │ ├── shadowsocks │ │ │ │ ├── ShadowsocksBean.java │ │ │ │ └── ShadowsocksFmt.kt │ │ │ ├── shadowsocksr │ │ │ │ ├── ShadowsocksRBean.java │ │ │ │ └── ShadowsocksRFmt.kt │ │ │ ├── socks │ │ │ │ ├── SOCKSBean.java │ │ │ │ └── SOCKSFmt.kt │ │ │ ├── ssh │ │ │ │ └── SSHBean.java │ │ │ ├── trojan │ │ │ │ ├── TrojanBean.java │ │ │ │ └── TrojanFmt.kt │ │ │ ├── trojan_go │ │ │ │ ├── TrojanGoBean.java │ │ │ │ └── TrojanGoFmt.kt │ │ │ ├── tuic │ │ │ │ ├── TuicBean.java │ │ │ │ └── TuicFmt.kt │ │ │ ├── v2ray │ │ │ │ ├── StandardV2RayBean.java │ │ │ │ ├── V2RayConfig.java │ │ │ │ ├── V2RayFmt.kt │ │ │ │ └── VMessBean.java │ │ │ └── wireguard │ │ │ │ ├── WireGuardBean.java │ │ │ │ └── WireGuardFmt.kt │ │ │ ├── group │ │ │ ├── GroupInterfaceAdapter.kt │ │ │ ├── GroupUpdater.kt │ │ │ ├── OpenOnlineConfigUpdater.kt │ │ │ ├── RawUpdater.kt │ │ │ └── SIP008Updater.kt │ │ │ ├── ktx │ │ │ ├── Asyncs.kt │ │ │ ├── Browsers.kt │ │ │ ├── Dialogs.kt │ │ │ ├── Dimens.kt │ │ │ ├── Formats.kt │ │ │ ├── Kryos.kt │ │ │ ├── Layouts.kt │ │ │ ├── Logs.kt │ │ │ ├── Nets.kt │ │ │ ├── Preferences.kt │ │ │ ├── Utils.kt │ │ │ └── Validators.kt │ │ │ ├── plugin │ │ │ └── PluginManager.kt │ │ │ ├── ui │ │ │ ├── AboutFragment.kt │ │ │ ├── ActiveConnFragment.kt │ │ │ ├── ActiveFragment.kt │ │ │ ├── AppListActivity.kt │ │ │ ├── AppManagerActivity.kt │ │ │ ├── AssetsActivity.kt │ │ │ ├── BackupFragment.kt │ │ │ ├── BlankActivity.kt │ │ │ ├── ConfigurationFragment.kt │ │ │ ├── DebugFragment.kt │ │ │ ├── GroupFragment.kt │ │ │ ├── GroupSettingsActivity.kt │ │ │ ├── LogcatFragment.kt │ │ │ ├── MainActivity.kt │ │ │ ├── NamedFragment.kt │ │ │ ├── NetworkFragment.kt │ │ │ ├── ProfileSelectActivity.kt │ │ │ ├── RouteFragment.kt │ │ │ ├── RouteSettingsActivity.kt │ │ │ ├── ScannerActivity.kt │ │ │ ├── SettingsFragment.kt │ │ │ ├── SettingsPreferenceFragment.kt │ │ │ ├── StatsFragment.kt │ │ │ ├── StunActivity.kt │ │ │ ├── SwitchActivity.kt │ │ │ ├── ThemedActivity.kt │ │ │ ├── ToolbarFragment.kt │ │ │ ├── ToolsFragment.kt │ │ │ ├── TrafficFragment.kt │ │ │ ├── VpnRequestActivity.kt │ │ │ └── profile │ │ │ │ ├── ChainSettingsActivity.kt │ │ │ │ ├── HttpSettingsActivity.kt │ │ │ │ ├── HysteriaSettingsActivity.kt │ │ │ │ ├── NaiveSettingsActivity.kt │ │ │ │ ├── ProfileSettingsActivity.kt │ │ │ │ ├── SSHSettingsActivity.kt │ │ │ │ ├── ShadowsocksRSettingsActivity.kt │ │ │ │ ├── ShadowsocksSettingsActivity.kt │ │ │ │ ├── SocksSettingsActivity.kt │ │ │ │ ├── StandardV2RaySettingsActivity.kt │ │ │ │ ├── TrojanGoSettingsActivity.kt │ │ │ │ ├── TrojanSettingsActivity.kt │ │ │ │ ├── TuicSettingsActivity.kt │ │ │ │ ├── VMessSettingsActivity.kt │ │ │ │ └── WireGuardSettingsActivity.kt │ │ │ ├── utils │ │ │ ├── Cloudflare.kt │ │ │ ├── Commandline.kt │ │ │ ├── CrashHandler.kt │ │ │ ├── DefaultNetworkListener.kt │ │ │ ├── DeviceStorageApp.kt │ │ │ ├── PackageCache.kt │ │ │ ├── Subnet.kt │ │ │ ├── Theme.kt │ │ │ └── cf │ │ │ │ ├── DeviceResponse.kt │ │ │ │ ├── RegisterRequest.kt │ │ │ │ └── UpdateDeviceRequest.kt │ │ │ └── widget │ │ │ ├── AppListPreference.kt │ │ │ ├── AutoCollapseTextView.kt │ │ │ ├── FabProgressBehavior.kt │ │ │ ├── GroupPreference.kt │ │ │ ├── LinkOrContentPreference.kt │ │ │ ├── OOCv1TokenPreference.kt │ │ │ ├── OutboundPreference.kt │ │ │ ├── QRCodeDialog.kt │ │ │ ├── ServiceButton.kt │ │ │ ├── StatsBar.kt │ │ │ ├── UndoSnackbarManager.kt │ │ │ ├── UserAgentPreference.kt │ │ │ └── WindowInsetsListeners.kt │ └── moe │ │ └── matsuri │ │ ├── nb4a │ │ └── ui │ │ │ └── UrlTestPreference.kt │ │ └── nya │ │ ├── DNS.kt │ │ ├── Protocols.kt │ │ ├── TempDatabase.kt │ │ ├── neko │ │ ├── NekoBean.java │ │ ├── NekoFmt.kt │ │ ├── NekoJSInterface.kt │ │ ├── NekoPluginManager.kt │ │ ├── NekoPreferenceInflater.kt │ │ ├── NekoSettingActivity.kt │ │ └── Plugins.kt │ │ ├── ui │ │ ├── ColorPickerPreference.kt │ │ ├── Dialogs.kt │ │ ├── DnsLinkPreference.kt │ │ ├── LongClickSwitchPreference.kt │ │ └── MTUPreference.kt │ │ └── utils │ │ ├── JavaUtil.java │ │ ├── KotlinUtil.kt │ │ ├── NGUtil.kt │ │ ├── SendLog.kt │ │ └── Util.kt │ └── res │ ├── color │ ├── chip_background.xml │ ├── chip_ripple_color.xml │ ├── chip_text_color.xml │ ├── navigation_icon.xml │ └── navigation_item.xml │ ├── drawable-v26 │ ├── ic_qu_camera_launcher.xml │ └── ic_qu_shadowsocks_launcher.xml │ ├── drawable │ ├── baseline_arrow_back_24.xml │ ├── baseline_construction_24.xml │ ├── baseline_delete_sweep_24.xml │ ├── baseline_developer_board_24.xml │ ├── baseline_flight_takeoff_24.xml │ ├── baseline_public_24.xml │ ├── baseline_save_24.xml │ ├── baseline_send_24.xml │ ├── baseline_translate_24.xml │ ├── baseline_widgets_24.xml │ ├── baseline_wrap_text_24.xml │ ├── ic_action_copyright.xml │ ├── ic_action_delete.xml │ ├── ic_action_description.xml │ ├── ic_action_dns.xml │ ├── ic_action_done.xml │ ├── ic_action_lock.xml │ ├── ic_action_lock_open.xml │ ├── ic_action_note_add.xml │ ├── ic_action_settings.xml │ ├── ic_app_shortcut_background.xml │ ├── ic_av_playlist_add.xml │ ├── ic_baseline_add_road_24.xml │ ├── ic_baseline_airplanemode_active_24.xml │ ├── ic_baseline_android_24.xml │ ├── ic_baseline_bug_report_24.xml │ ├── ic_baseline_camera_24.xml │ ├── ic_baseline_card_giftcard_24.xml │ ├── ic_baseline_cast_connected_24.xml │ ├── ic_baseline_center_focus_weak_24.xml │ ├── ic_baseline_color_lens_24.xml │ ├── ic_baseline_compare_arrows_24.xml │ ├── ic_baseline_domain_24.xml │ ├── ic_baseline_download_24.xml │ ├── ic_baseline_emoji_emotions_24.xml │ ├── ic_baseline_fast_forward_24.xml │ ├── ic_baseline_fiber_manual_record_24.xml │ ├── ic_baseline_fingerprint_24.xml │ ├── ic_baseline_flip_camera_android_24.xml │ ├── ic_baseline_format_align_left_24.xml │ ├── ic_baseline_grid_3x3_24.xml │ ├── ic_baseline_home_24.xml │ ├── ic_baseline_http_24.xml │ ├── ic_baseline_https_24.xml │ ├── ic_baseline_import_contacts_24.xml │ ├── ic_baseline_info_24.xml │ ├── ic_baseline_layers_24.xml │ ├── ic_baseline_legend_toggle_24.xml │ ├── ic_baseline_link_24.xml │ ├── ic_baseline_local_bar_24.xml │ ├── ic_baseline_location_on_24.xml │ ├── ic_baseline_lock_24.xml │ ├── ic_baseline_low_priority_24.xml │ ├── ic_baseline_manage_search_24.xml │ ├── ic_baseline_more_vert_24.xml │ ├── ic_baseline_multiline_chart_24.xml │ ├── ic_baseline_multiple_stop_24.xml │ ├── ic_baseline_nat_24.xml │ ├── ic_baseline_nfc_24.xml │ ├── ic_baseline_no_encryption_gmailerrorred_24.xml │ ├── ic_baseline_person_24.xml │ ├── ic_baseline_push_pin_24.xml │ ├── ic_baseline_refresh_24.xml │ ├── ic_baseline_rule_folder_24.xml │ ├── ic_baseline_running_with_errors_24.xml │ ├── ic_baseline_sanitizer_24.xml │ ├── ic_baseline_security_24.xml │ ├── ic_baseline_shuffle_24.xml │ ├── ic_baseline_shutter_speed_24.xml │ ├── ic_baseline_speed_24.xml │ ├── ic_baseline_stream_24.xml │ ├── ic_baseline_texture_24.xml │ ├── ic_baseline_timelapse_24.xml │ ├── ic_baseline_transform_24.xml │ ├── ic_baseline_transgender_24.xml │ ├── ic_baseline_update_24.xml │ ├── ic_baseline_view_list_24.xml │ ├── ic_baseline_vpn_key_24.xml │ ├── ic_baseline_warning_24.xml │ ├── ic_baseline_wb_sunny_24.xml │ ├── ic_communication_phonelink_ring.xml │ ├── ic_device_data_usage.xml │ ├── ic_device_developer_mode.xml │ ├── ic_file_cloud_queue.xml │ ├── ic_file_file_upload.xml │ ├── ic_hardware_router.xml │ ├── ic_image_camera_alt.xml │ ├── ic_image_edit.xml │ ├── ic_image_looks_6.xml │ ├── ic_image_photo.xml │ ├── ic_maps_360.xml │ ├── ic_maps_directions.xml │ ├── ic_maps_directions_boat.xml │ ├── ic_navigation_apps.xml │ ├── ic_navigation_close.xml │ ├── ic_navigation_menu.xml │ ├── ic_notification_enhanced_encryption.xml │ ├── ic_qu_camera_launcher.xml │ ├── ic_qu_shadowsocks_foreground.xml │ ├── ic_qu_shadowsocks_launcher.xml │ ├── ic_service_active.xml │ ├── ic_service_busy.xml │ ├── ic_service_connected.xml │ ├── ic_service_connecting.xml │ ├── ic_service_idle.xml │ ├── ic_service_stopped.xml │ ├── ic_service_stopping.xml │ ├── ic_settings_password.xml │ ├── ic_social_emoji_symbols.xml │ ├── ic_social_share.xml │ └── terminal_scroll_shape.xml │ ├── font │ └── jetbrains_mono.ttf │ ├── layout │ ├── layout_about.xml │ ├── layout_add_entity.xml │ ├── layout_app_list.xml │ ├── layout_appbar.xml │ ├── layout_apps.xml │ ├── layout_apps_item.xml │ ├── layout_asset_item.xml │ ├── layout_assets.xml │ ├── layout_backup.xml │ ├── layout_chain_settings.xml │ ├── layout_config_settings.xml │ ├── layout_debug.xml │ ├── layout_edit_group.xml │ ├── layout_empty.xml │ ├── layout_empty_route.xml │ ├── layout_group.xml │ ├── layout_group_item.xml │ ├── layout_group_list.xml │ ├── layout_icon_list_item_2.xml │ ├── layout_import.xml │ ├── layout_license.xml │ ├── layout_loading.xml │ ├── layout_logcat.xml │ ├── layout_main.xml │ ├── layout_network.xml │ ├── layout_password_dialog.xml │ ├── layout_profile.xml │ ├── layout_profile_list.xml │ ├── layout_progress.xml │ ├── layout_progress_list.xml │ ├── layout_route.xml │ ├── layout_route_item.xml │ ├── layout_scanner.xml │ ├── layout_settings_activity.xml │ ├── layout_stun.xml │ ├── layout_tools.xml │ ├── layout_traffic.xml │ ├── layout_traffic_conn.xml │ ├── layout_traffic_item.xml │ ├── layout_traffic_list.xml │ └── layout_urltest_preference_dialog.xml │ ├── menu │ ├── add_group_menu.xml │ ├── add_profile_menu.xml │ ├── add_route_menu.xml │ ├── app_list_menu.xml │ ├── app_list_neko_menu.xml │ ├── group_action_menu.xml │ ├── import_asset_menu.xml │ ├── logcat_menu.xml │ ├── main_drawer_menu.xml │ ├── per_app_proxy_menu.xml │ ├── profile_apply_menu.xml │ ├── profile_config_menu.xml │ ├── profile_share_menu.xml │ ├── scanner_menu.xml │ ├── traffic_item_menu.xml │ └── traffic_menu.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ ├── ic_launcher_foreground.png │ └── ic_launcher_round.png │ ├── raw-zh-rCN │ ├── insecure.txt │ ├── mkcp_no_seed.txt │ ├── not_encrypted.txt │ ├── shadowsocks_stream_cipher.txt │ ├── shadowsocksr.txt │ └── vmess_md5_auth.txt │ ├── raw │ ├── insecure.txt │ ├── mkcp_no_seed.txt │ ├── not_encrypted.txt │ ├── shadowsocks_stream_cipher.txt │ ├── shadowsocksr.txt │ └── vmess_md5_auth.txt │ ├── values-ar │ └── strings.xml │ ├── values-be │ └── strings.xml │ ├── values-de │ └── strings.xml │ ├── values-es │ └── strings.xml │ ├── values-fa │ └── strings.xml │ ├── values-fr │ └── strings.xml │ ├── values-in │ └── strings.xml │ ├── values-it │ └── strings.xml │ ├── values-ja │ └── strings.xml │ ├── values-ko │ └── strings.xml │ ├── values-nb-rNO │ └── strings.xml │ ├── values-night │ └── colors.xml │ ├── values-nl │ └── strings.xml │ ├── values-pt-rBR │ └── strings.xml │ ├── values-ru │ └── strings.xml │ ├── values-tr │ └── strings.xml │ ├── values-uk │ └── strings.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values-zh-rHK │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values │ ├── arrays.xml │ ├── attrs.xml │ ├── colors.xml │ ├── dimens.xml │ ├── ic_launcher_background.xml │ ├── strings.xml │ └── themes.xml │ └── xml │ ├── backup_descriptor.xml │ ├── backup_rules.xml │ ├── balancer_preferences.xml │ ├── cache_paths.xml │ ├── global_preferences.xml │ ├── group_preferences.xml │ ├── http_preferences.xml │ ├── hysteria_preferences.xml │ ├── naive_preferences.xml │ ├── name_preferences.xml │ ├── neko_preferences.xml │ ├── network_security_config.xml │ ├── route_preferences.xml │ ├── shadowsocks_preferences.xml │ ├── shadowsocksr_preferences.xml │ ├── shortcuts.xml │ ├── socks_preferences.xml │ ├── ssh_preferences.xml │ ├── standard_v2ray_preferences.xml │ ├── trojan_go_preferences.xml │ ├── tuic_preferences.xml │ └── wireguard_preferences.xml ├── build.gradle.kts ├── buildScript ├── copyLocal.sh ├── fdroid │ └── prebuild.sh ├── init │ ├── action │ │ ├── go.sh │ │ └── gradle.sh │ ├── env.sh │ └── env_ndk.sh ├── lib │ ├── assets.sh │ ├── core.sh │ └── core │ │ ├── build.sh │ │ ├── clone.sh │ │ └── init.sh ├── nkmr └── zipVersion │ └── downloadZip.sh ├── buildSrc ├── build.gradle.kts └── src │ └── main │ └── kotlin │ └── Helpers.kt ├── fastlane └── metadata │ └── android │ ├── en-US │ ├── full_description.txt │ └── short_description.txt │ └── zh-CN │ ├── full_description.txt │ └── short_description.txt ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── libcore ├── .gitignore ├── LICENSE ├── assets.go ├── assets_android.go ├── assets_other.go ├── build.sh ├── certs.go ├── comm │ ├── base.go │ └── ipv6.go ├── core.go ├── core_commit.txt ├── crypto.go ├── device │ ├── debug.go │ ├── device.go │ ├── syscall.go │ ├── syscall_other.go │ └── syscall_windows.go ├── doh │ ├── LICENSE │ ├── doh.go │ └── doh_test.go ├── errors.generated.go ├── go.mod ├── go.sum ├── http.go ├── import.go ├── init.sh ├── io.go ├── log.go ├── nyan.go ├── procfs.go ├── protect │ ├── errors.generated.go │ ├── protect.go │ ├── protect_go.go │ ├── protect_other.go │ └── protect_windows.go ├── speedtest.go ├── speedtest_linux.go ├── stats.go ├── stun.go ├── stun │ ├── README │ ├── attribute.go │ ├── client.go │ ├── const.go │ ├── discover.go │ ├── doc.go │ ├── host.go │ ├── log.go │ ├── net.go │ ├── packet.go │ ├── response.go │ ├── tests.go │ └── utils.go ├── tun.go ├── tun │ ├── tun.go │ ├── tun2socket │ │ ├── LICENSE │ │ ├── libcore_wrapper.go │ │ ├── nat │ │ │ ├── nat.go │ │ │ ├── sys_linux.go │ │ │ ├── sys_other.go │ │ │ ├── table.go │ │ │ ├── tcp.go │ │ │ └── udp.go │ │ ├── tcpip │ │ │ ├── icmp.go │ │ │ ├── ip.go │ │ │ ├── tcp.go │ │ │ ├── tcpip.go │ │ │ ├── tcpip_amd64.go │ │ │ ├── tcpip_amd64.s │ │ │ ├── tcpip_amd64_test.go │ │ │ ├── tcpip_arm64.go │ │ │ ├── tcpip_arm64.s │ │ │ ├── tcpip_arm64_test.go │ │ │ ├── tcpip_compat.go │ │ │ ├── tcpip_compat_test.go │ │ │ └── udp.go │ │ └── tun2socket.go │ └── tuns │ │ ├── tuns_linux.go │ │ └── tuns_stub.go ├── uid.go ├── v2ray.go ├── v2ray_dns.go ├── v2ray_sip │ ├── errors.generated.go │ ├── sip_obfs.go │ └── sip_ssr.go └── v2ray_udp.go ├── lint.xml ├── release.keystore ├── repositories.gradle.kts ├── run ├── sager.properties └── settings.gradle.kts /.github/ISSUE_TEMPLATE/bug-report-zh_cn.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report zh_CN 3 | about: 问题反馈,在提出问题前请先自行排除服务器端问题和升级到最新客户端。 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **描述问题** 11 | 12 | 预期行为: 13 | 14 | 实际行为: 15 | 16 | **如何复现** 17 | 18 | 提供有帮助的截图,录像,文字说明,订阅链接等。 19 | 20 | **日志** 21 | 22 | 如果有日志,请上传。请在文档内查看导出日志的详细步骤。 23 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request-zh_cn.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request zh_CN 3 | about: 功能请求,提出建议。 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **描述建议** 11 | 12 | **建议的必要性** 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | .idea 4 | .vscode 5 | .DS_Store 6 | build/ 7 | /captures 8 | .externalNativeBuild 9 | .cxx 10 | local.properties 11 | /app/libs/ 12 | /app/src/main/assets/v2ray 13 | /app/src/main/assets/sing-box 14 | /service_account_credentials.json 15 | jniLibs/ 16 | /library/libcore_build/ 17 | .idea/deploymentTargetDropDown.xml 18 | /nkmr 19 | 20 | # submodules 21 | /external 22 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | SagerNet was originally created in late 2021, by 2 | nekohasekai . 3 | 4 | Here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS -- 5 | people who have submitted patches, fixed bugs, added translations, and 6 | generally made SagerNet that much better: 7 | 8 | https://github.com/SagerNet/SagerNet/graphs/contributors 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2021 by nekohasekai 2 | 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | GNU General Public License for more details. 12 | 13 | You should have received a copy of the GNU General Public License 14 | along with this program. If not, see . -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/schemas/io.nekohasekai.sagernet.database.preference.PublicDatabase/1.json: -------------------------------------------------------------------------------- 1 | { 2 | "formatVersion": 1, 3 | "database": { 4 | "version": 1, 5 | "identityHash": "f1aab1fb633378621635c344dbc8ac7b", 6 | "entities": [ 7 | { 8 | "tableName": "KeyValuePair", 9 | "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`key` TEXT NOT NULL, `valueType` INTEGER NOT NULL, `value` BLOB NOT NULL, PRIMARY KEY(`key`))", 10 | "fields": [ 11 | { 12 | "fieldPath": "key", 13 | "columnName": "key", 14 | "affinity": "TEXT", 15 | "notNull": true 16 | }, 17 | { 18 | "fieldPath": "valueType", 19 | "columnName": "valueType", 20 | "affinity": "INTEGER", 21 | "notNull": true 22 | }, 23 | { 24 | "fieldPath": "value", 25 | "columnName": "value", 26 | "affinity": "BLOB", 27 | "notNull": true 28 | } 29 | ], 30 | "primaryKey": { 31 | "columnNames": [ 32 | "key" 33 | ], 34 | "autoGenerate": false 35 | }, 36 | "indices": [], 37 | "foreignKeys": [] 38 | } 39 | ], 40 | "views": [], 41 | "setupQueries": [ 42 | "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", 43 | "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'f1aab1fb633378621635c344dbc8ac7b')" 44 | ] 45 | } 46 | } -------------------------------------------------------------------------------- /app/schemas/moe.matsuri.nya.TempDatabase/1.json: -------------------------------------------------------------------------------- 1 | { 2 | "formatVersion": 1, 3 | "database": { 4 | "version": 1, 5 | "identityHash": "f1aab1fb633378621635c344dbc8ac7b", 6 | "entities": [ 7 | { 8 | "tableName": "KeyValuePair", 9 | "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`key` TEXT NOT NULL, `valueType` INTEGER NOT NULL, `value` BLOB NOT NULL, PRIMARY KEY(`key`))", 10 | "fields": [ 11 | { 12 | "fieldPath": "key", 13 | "columnName": "key", 14 | "affinity": "TEXT", 15 | "notNull": true 16 | }, 17 | { 18 | "fieldPath": "valueType", 19 | "columnName": "valueType", 20 | "affinity": "INTEGER", 21 | "notNull": true 22 | }, 23 | { 24 | "fieldPath": "value", 25 | "columnName": "value", 26 | "affinity": "BLOB", 27 | "notNull": true 28 | } 29 | ], 30 | "primaryKey": { 31 | "columnNames": [ 32 | "key" 33 | ], 34 | "autoGenerate": false 35 | }, 36 | "indices": [], 37 | "foreignKeys": [] 38 | } 39 | ], 40 | "views": [], 41 | "setupQueries": [ 42 | "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", 43 | "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'f1aab1fb633378621635c344dbc8ac7b')" 44 | ] 45 | } 46 | } -------------------------------------------------------------------------------- /app/src/foss/java/moe/matsuri/MoeAd.kt: -------------------------------------------------------------------------------- 1 | package moe.matsuri 2 | 3 | import android.content.Context 4 | import android.view.ViewGroup 5 | 6 | object MoeAd { 7 | fun initialize(ctx: Context) { 8 | } 9 | 10 | fun showBannerAd(parentLayout: ViewGroup) { 11 | } 12 | } -------------------------------------------------------------------------------- /app/src/main/aidl/io/nekohasekai/sagernet/aidl/AppStatsList.aidl: -------------------------------------------------------------------------------- 1 | package io.nekohasekai.sagernet.aidl; 2 | 3 | parcelable AppStatsList; 4 | -------------------------------------------------------------------------------- /app/src/main/aidl/io/nekohasekai/sagernet/aidl/ISagerNetService.aidl: -------------------------------------------------------------------------------- 1 | package io.nekohasekai.sagernet.aidl; 2 | 3 | import io.nekohasekai.sagernet.aidl.ISagerNetServiceCallback; 4 | 5 | interface ISagerNetService { 6 | int getState(); 7 | String getProfileName(); 8 | 9 | void registerCallback(in ISagerNetServiceCallback cb); 10 | void startListeningForBandwidth(in ISagerNetServiceCallback cb, long timeout); 11 | oneway void stopListeningForBandwidth(in ISagerNetServiceCallback cb); 12 | void startListeningForStats(in ISagerNetServiceCallback cb, long timeout); 13 | oneway void stopListeningForStats(in ISagerNetServiceCallback cb); 14 | oneway void unregisterCallback(in ISagerNetServiceCallback cb); 15 | int urlTest(); 16 | oneway void resetTrafficStats(); 17 | boolean getTrafficStatsEnabled(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/aidl/io/nekohasekai/sagernet/aidl/ISagerNetServiceCallback.aidl: -------------------------------------------------------------------------------- 1 | package io.nekohasekai.sagernet.aidl; 2 | 3 | import io.nekohasekai.sagernet.aidl.TrafficStats; 4 | import io.nekohasekai.sagernet.aidl.AppStatsList; 5 | 6 | oneway interface ISagerNetServiceCallback { 7 | void stateChanged(int state, String profileName, String msg); 8 | void trafficUpdated(long profileId, in TrafficStats stats, boolean isCurrent); 9 | void statsUpdated(in AppStatsList statsList); 10 | void missingPlugin(String profileName, String pluginName); 11 | void updateWakeLockStatus(boolean acquired); 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/aidl/io/nekohasekai/sagernet/aidl/TrafficStats.aidl: -------------------------------------------------------------------------------- 1 | package io.nekohasekai.sagernet.aidl; 2 | 3 | parcelable TrafficStats; 4 | -------------------------------------------------------------------------------- /app/src/main/assets/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2021 by nekohasekai 2 | 3 | 4 | This program is free software: you can 5 | redistribute it and/or modify it under 6 | the terms of the GNU General Public License 7 | as published by the Free Software Foundation, 8 | either version 3 of the License, 9 | or (at your option) any later version. 10 | 11 | This program is distributed in the hope 12 | that it will be useful, but WITHOUT ANY WARRANTY; 13 | without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 15 | See the GNU General Public License for more details. 16 | 17 | You should have received a copy of the 18 | GNU General Public License along with this program. 19 | If not, see . -------------------------------------------------------------------------------- /app/src/main/assets/analysis.txt: -------------------------------------------------------------------------------- 1 | domain:appcenter.ms 2 | domain:app-measurement.com 3 | domain:firebase.io 4 | domain:crashlytics.com 5 | domain:google-analytics.com -------------------------------------------------------------------------------- /app/src/main/java/com/wireguard/crypto/KeyFormatException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2018-2019 WireGuard LLC. All Rights Reserved. 3 | * SPDX-License-Identifier: Apache-2.0 4 | */ 5 | 6 | package com.wireguard.crypto; 7 | 8 | /** 9 | * An exception thrown when attempting to parse an invalid key (too short, too long, or byte 10 | * data inappropriate for the format). The format being parsed can be accessed with the 11 | * {@link #getFormat} method. 12 | */ 13 | public final class KeyFormatException extends Exception { 14 | private final Key.Format format; 15 | private final Type type; 16 | 17 | KeyFormatException(final Key.Format format, final Type type) { 18 | this.format = format; 19 | this.type = type; 20 | } 21 | 22 | public Key.Format getFormat() { 23 | return format; 24 | } 25 | 26 | public Type getType() { 27 | return type; 28 | } 29 | 30 | public enum Type { 31 | CONTENTS, 32 | LENGTH 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/wireguard/crypto/KeyPair.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright © 2017-2019 WireGuard LLC. All Rights Reserved. 3 | * SPDX-License-Identifier: Apache-2.0 4 | */ 5 | 6 | package com.wireguard.crypto; 7 | 8 | /** 9 | * Represents a Curve25519 key pair as used by WireGuard. 10 | *

11 | * Instances of this class are immutable. 12 | */ 13 | public class KeyPair { 14 | private final Key privateKey; 15 | private final Key publicKey; 16 | 17 | /** 18 | * Creates a key pair using a newly-generated private key. 19 | */ 20 | public KeyPair() { 21 | this(Key.generatePrivateKey()); 22 | } 23 | 24 | /** 25 | * Creates a key pair using an existing private key. 26 | * 27 | * @param privateKey a private key, used to derive the public key 28 | */ 29 | public KeyPair(final Key privateKey) { 30 | this.privateKey = privateKey; 31 | publicKey = Key.generatePublicKey(privateKey); 32 | } 33 | 34 | /** 35 | * Returns the private key from the key pair. 36 | * 37 | * @return the private key 38 | */ 39 | public Key getPrivateKey() { 40 | return privateKey; 41 | } 42 | 43 | /** 44 | * Returns the public key from the key pair. 45 | * 46 | * @return the public key 47 | */ 48 | public Key getPublicKey() { 49 | return publicKey; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /app/src/main/java/io/nekohasekai/sagernet/bg/AbstractInstance.kt: -------------------------------------------------------------------------------- 1 | /****************************************************************************** 2 | * * 3 | * Copyright (C) 2021 by nekohasekai * 4 | * * 5 | * This program is free software: you can redistribute it and/or modify * 6 | * it under the terms of the GNU General Public License as published by * 7 | * the Free Software Foundation, either version 3 of the License, or * 8 | * (at your option) any later version. * 9 | * * 10 | * This program is distributed in the hope that it will be useful, * 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of * 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 13 | * GNU General Public License for more details. * 14 | * * 15 | * You should have received a copy of the GNU General Public License * 16 | * along with this program. If not, see . * 17 | * * 18 | ******************************************************************************/ 19 | 20 | package io.nekohasekai.sagernet.bg 21 | 22 | import java.io.Closeable 23 | 24 | interface AbstractInstance : Closeable { 25 | 26 | fun launch() 27 | 28 | } -------------------------------------------------------------------------------- /app/src/main/java/io/nekohasekai/sagernet/ui/BlankActivity.kt: -------------------------------------------------------------------------------- 1 | package io.nekohasekai.sagernet.ui 2 | 3 | import android.os.Bundle 4 | import androidx.appcompat.app.AppCompatActivity 5 | import moe.matsuri.nya.utils.SendLog 6 | 7 | class BlankActivity : AppCompatActivity() { 8 | 9 | override fun onCreate(savedInstanceState: Bundle?) { 10 | super.onCreate(savedInstanceState) 11 | 12 | // process crash log 13 | intent?.getStringExtra("sendLog")?.apply { 14 | SendLog.sendLog(this@BlankActivity, this) 15 | } 16 | 17 | finish() 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /app/src/main/java/moe/matsuri/nya/DNS.kt: -------------------------------------------------------------------------------- 1 | package moe.matsuri.nya 2 | 3 | import io.nekohasekai.sagernet.database.DataStore 4 | import io.nekohasekai.sagernet.fmt.v2ray.V2RayConfig.DnsObject.ServerObject 5 | 6 | object DNS { 7 | fun ServerObject.applyDNSNetworkSettings(isDirect: Boolean) { 8 | if (isDirect) { 9 | if (DataStore.dnsNetwork.contains("NoDirectIPv4")) this.queryStrategy = "UseIPv6" 10 | if (DataStore.dnsNetwork.contains("NoDirectIPv6")) this.queryStrategy = "UseIPv4" 11 | } else { 12 | if (DataStore.dnsNetwork.contains("NoRemoteIPv4")) this.queryStrategy = "UseIPv6" 13 | if (DataStore.dnsNetwork.contains("NoRemoteIPv6")) this.queryStrategy = "UseIPv4" 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/moe/matsuri/nya/TempDatabase.kt: -------------------------------------------------------------------------------- 1 | package moe.matsuri.nya 2 | 3 | import androidx.room.Database 4 | import androidx.room.Room 5 | import androidx.room.RoomDatabase 6 | import io.nekohasekai.sagernet.SagerNet 7 | import io.nekohasekai.sagernet.database.preference.KeyValuePair 8 | import kotlinx.coroutines.GlobalScope 9 | import kotlinx.coroutines.launch 10 | 11 | @Database(entities = [KeyValuePair::class], version = 1) 12 | abstract class TempDatabase : RoomDatabase() { 13 | 14 | companion object { 15 | @Suppress("EXPERIMENTAL_API_USAGE") 16 | private val instance by lazy { 17 | Room.inMemoryDatabaseBuilder(SagerNet.application, TempDatabase::class.java) 18 | .allowMainThreadQueries() 19 | .fallbackToDestructiveMigration() 20 | .setQueryExecutor { GlobalScope.launch { it.run() } } 21 | .build() 22 | } 23 | 24 | val profileCacheDao get() = instance.profileCacheDao() 25 | 26 | } 27 | 28 | abstract fun profileCacheDao(): KeyValuePair.Dao 29 | } -------------------------------------------------------------------------------- /app/src/main/java/moe/matsuri/nya/ui/Dialogs.kt: -------------------------------------------------------------------------------- 1 | package moe.matsuri.nya.ui 2 | 3 | import android.content.Context 4 | import android.widget.TextView 5 | import com.google.android.material.dialog.MaterialAlertDialogBuilder 6 | import io.nekohasekai.sagernet.R 7 | import io.nekohasekai.sagernet.ktx.Logs 8 | import io.nekohasekai.sagernet.ktx.readableMessage 9 | import io.nekohasekai.sagernet.ktx.runOnMainDispatcher 10 | 11 | object Dialogs { 12 | fun logExceptionAndShow(context: Context, e: Exception, callback: Runnable) { 13 | Logs.e(e) 14 | runOnMainDispatcher { 15 | MaterialAlertDialogBuilder(context) 16 | .setTitle(R.string.error_title) 17 | .setMessage(e.readableMessage) 18 | .setCancelable(false) 19 | .setPositiveButton(android.R.string.ok) { _, _ -> 20 | callback.run() 21 | } 22 | .show() 23 | } 24 | } 25 | 26 | fun message(context: Context, title: String, message: String) { 27 | runOnMainDispatcher { 28 | val dialog = MaterialAlertDialogBuilder(context) 29 | .setTitle(title) 30 | .setMessage(message) 31 | .setCancelable(true) 32 | .show() 33 | dialog.findViewById(android.R.id.message)?.apply { 34 | setTextIsSelectable(true) 35 | } 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /app/src/main/java/moe/matsuri/nya/ui/LongClickSwitchPreference.kt: -------------------------------------------------------------------------------- 1 | package moe.matsuri.nya.ui 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import android.view.View 6 | import androidx.core.content.res.TypedArrayUtils 7 | import androidx.preference.PreferenceViewHolder 8 | import androidx.preference.R 9 | import androidx.preference.SwitchPreference 10 | 11 | class LongClickSwitchPreference 12 | @JvmOverloads constructor( 13 | context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = TypedArrayUtils.getAttr( 14 | context, R.attr.switchPreferenceStyle, android.R.attr.switchPreferenceStyle 15 | ), defStyleRes: Int = 0 16 | ) : SwitchPreference( 17 | context, attrs, defStyleAttr, defStyleRes 18 | ) { 19 | private var mLongClickListener: View.OnLongClickListener? = null 20 | 21 | override fun onBindViewHolder(holder: PreferenceViewHolder) { 22 | super.onBindViewHolder(holder) 23 | val itemView: View = holder.itemView 24 | itemView.setOnLongClickListener { 25 | mLongClickListener?.onLongClick(it) ?: true 26 | } 27 | } 28 | 29 | fun setOnLongClickListener(longClickListener: View.OnLongClickListener) { 30 | this.mLongClickListener = longClickListener 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/res/color/chip_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/color/chip_ripple_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/color/chip_text_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/color/navigation_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/color/navigation_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v26/ic_qu_camera_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v26/ic_qu_shadowsocks_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_arrow_back_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_construction_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_delete_sweep_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_developer_board_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_flight_takeoff_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_public_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_save_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_send_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_translate_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_widgets_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_wrap_text_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_copyright.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_delete.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_description.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_dns.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_done.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_lock.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_lock_open.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_note_add.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_action_settings.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_app_shortcut_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 15 | 16 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_av_playlist_add.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_add_road_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 16 | 19 | 22 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_airplanemode_active_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_android_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_bug_report_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_camera_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_card_giftcard_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_cast_connected_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_center_focus_weak_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_color_lens_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_compare_arrows_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_domain_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_download_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_emoji_emotions_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_fast_forward_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_fiber_manual_record_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_flip_camera_android_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_format_align_left_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_grid_3x3_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_home_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_http_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_https_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_import_contacts_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_info_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_layers_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_legend_toggle_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_link_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_local_bar_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_location_on_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_lock_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_low_priority_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_manage_search_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_more_vert_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_multiline_chart_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_multiple_stop_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_nat_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_nfc_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_no_encryption_gmailerrorred_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_person_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_push_pin_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_refresh_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_rule_folder_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_running_with_errors_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_sanitizer_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_security_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_shuffle_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_shutter_speed_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_speed_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_stream_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 16 | 19 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_texture_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_timelapse_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_transform_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_transgender_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_update_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_view_list_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_vpn_key_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_warning_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_wb_sunny_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_communication_phonelink_ring.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_device_data_usage.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_device_developer_mode.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_file_cloud_queue.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_file_file_upload.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_hardware_router.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_image_camera_alt.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_image_edit.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_image_looks_6.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_image_photo.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_maps_360.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_maps_directions.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_maps_directions_boat.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_navigation_apps.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_navigation_close.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_navigation_menu.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_notification_enhanced_encryption.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qu_camera_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qu_shadowsocks_foreground.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qu_shadowsocks_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_service_busy.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_service_connected.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_service_connecting.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 15 | 16 | 17 | 18 | 19 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_service_idle.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_service_stopped.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 15 | 16 | 17 | 18 | 19 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_service_stopping.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_social_share.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/terminal_scroll_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/font/jetbrains_mono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MatsuriDayo/Matsuri/d16fff69534d69c6059f6dcdf4951e37987b7d1e/app/src/main/res/font/jetbrains_mono.ttf -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_add_entity.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 14 | 15 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_appbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_assets.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 17 | 18 | 22 | 23 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_chain_settings.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 23 | 24 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_config_settings.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 10 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_debug.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 |