[
  {
    "path": ".gitignore",
    "content": "*.iml\n.gradle\n/local.properties\n/.idea\n.DS_Store\n/build\n/captures\n.externalNativeBuild\n.cxx\nlocal.properties\n"
  },
  {
    "path": "README.md",
    "content": "# Noti Progress Bar\n\n[<img alt=\"banner\" src=\"Images/Banner.png\" />](https://play.google.com/store/apps/details?id=com.gustavoas.noti)\n\n> Noti lets you easily track the progress of downloads, music and more directly from your status bar.\n\n## ✨ Features\n\n+ Track downloads, music, and timers from Google Clock.\n+ Customizable progress bar or progress circle.\n+ Adjustable progress circle to fit your phone's hole punch camera.\n+ Automatically hides when in full screen mode.\n+ Display Noti in the lockscreen by enabling the accessibility service.\n+ Filter which apps you want to track.\n+ Customize Noti on a per-app basis.\n\n## ⬇️ Download\n\n[<img alt=\"Get it on Google Play\" height=\"100\" src=\"https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png\" />](https://play.google.com/store/apps/details?id=com.gustavoas.noti)\n\n## 💜 Help Translate\n\n<a href=\"https://hosted.weblate.org/engage/noti-progress-bar/\">\n<img src=\"https://hosted.weblate.org/widget/noti-progress-bar/strings/287x66-white.png\" alt=\"Translation status\" />\n</a>\n\n## 🔑 License\n\nThe source code for Noti is available under the GPL-3.0 License. However, distributing the compiled application anywhere, including on Google Play, requires explicit written permission from the original author."
  },
  {
    "path": "app/.gitignore",
    "content": "/build\n/release/\n/src/debug/\n/google-services.json\n"
  },
  {
    "path": "app/build.gradle",
    "content": "plugins {\n    id 'com.android.application'\n    id 'org.jetbrains.kotlin.android'\n    id 'com.google.gms.google-services'\n    id 'kotlin-parcelize'\n}\n\nandroid {\n    namespace 'com.gustavoas.noti'\n    compileSdk 35\n\n    defaultConfig {\n        applicationId \"com.gustavoas.noti\"\n        minSdk 21\n        targetSdk 34\n        versionCode 90\n        versionName \"2.0\"\n        versionCode 95\n        versionName \"2.2\"\n\n        vectorDrawables {\n            useSupportLibrary true\n        }\n    }\n\n    buildTypes {\n        release {\n            minifyEnabled true\n            shrinkResources true\n            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'\n        }\n\n        debug {\n            applicationIdSuffix \".dogfood\"\n        }\n    }\n    compileOptions {\n        sourceCompatibility JavaVersion.VERSION_1_8\n        targetCompatibility JavaVersion.VERSION_1_8\n    }\n    kotlinOptions {\n        jvmTarget = '1.8'\n    }\n    packagingOptions {\n        resources {\n            excludes += '/META-INF/{AL2.0,LGPL2.1}'\n        }\n    }\n    androidResources {\n        generateLocaleConfig true\n    }\n}\n\ndependencies {\n    implementation platform('com.google.firebase:firebase-bom:33.13.0')\n\n    implementation 'androidx.core:core-ktx:1.16.0'\n    implementation 'androidx.appcompat:appcompat:1.7.0'\n    implementation 'androidx.constraintlayout:constraintlayout:2.2.1'\n    implementation 'com.google.android.material:material:1.12.0'\n    implementation 'androidx.palette:palette-ktx:1.0.0'\n    implementation 'androidx.preference:preference-ktx:1.2.1'\n    implementation 'androidx.core:core-splashscreen:1.0.1'\n    implementation 'androidx.recyclerview:recyclerview:1.4.0'\n    implementation 'com.github.kizitonwose.colorpreference:support:1.1.0'\n    implementation 'com.github.kizitonwose.colorpreference:core:1.1.0'\n    implementation 'com.github.eltos:simpledialogfragments:v3.7'\n    implementation 'com.google.firebase:firebase-storage'\n}"
  },
  {
    "path": "app/proguard-rules.pro",
    "content": "# Add project specific ProGuard rules here.\n# You can control the set of applied configuration files using the\n# proguardFiles setting in build.gradle.\n#\n# For more details, see\n#   http://developer.android.com/guide/developing/tools/proguard.html\n\n# If your project uses WebView with JS, uncomment the following\n# and specify the fully qualified class name to the JavaScript interface\n# class:\n#-keepclassmembers class fqcn.of.javascript.interface.for.webview {\n#   public *;\n#}\n\n# Uncomment this to preserve the line number information for\n# debugging stack traces.\n#-keepattributes SourceFile,LineNumberTable\n\n# If you keep the line number information, uncomment this to\n# hide the original source file name.\n#-renamesourcefileattribute SourceFile"
  },
  {
    "path": "app/src/main/AndroidManifest.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:tools=\"http://schemas.android.com/tools\">\n\n    <uses-permission android:name=\"android.permission.SYSTEM_ALERT_WINDOW\"/>\n    <uses-permission android:name=\"android.permission.QUERY_ALL_PACKAGES\"\n        android:minSdkVersion=\"30\"/>\n    <uses-permission android:name=\"android.permission.VIBRATE\" />\n\n    <uses-sdk tools:overrideLibrary=\"androidx.core.splashscreen\"/>\n\n    <application\n        android:allowBackup=\"true\"\n        android:dataExtractionRules=\"@xml/data_extraction_rules\"\n        android:fullBackupContent=\"@xml/backup_rules\"\n        android:icon=\"@mipmap/ic_launcher\"\n        android:label=\"@string/app_name\"\n        android:roundIcon=\"@mipmap/ic_launcher_round\"\n        android:supportsRtl=\"true\"\n        android:enableOnBackInvokedCallback=\"true\"\n        android:theme=\"@style/Theme.NotiProgressBar\"\n        tools:targetApi=\"tiramisu\">\n        <activity\n            android:name=\".SettingsActivity\"\n            android:exported=\"true\"\n            android:label=\"@string/app_name_short\"\n            android:theme=\"@style/SplashScreen\">\n            <intent-filter>\n                <action android:name=\"android.intent.action.APPLICATION_PREFERENCES\"/>\n                <category android:name=\"android.intent.category.DEFAULT\"/>\n                <action android:name=\"android.intent.action.MAIN\" />\n                <category android:name=\"android.intent.category.LAUNCHER\" />\n            </intent-filter>\n        </activity>\n        <service\n            android:name=\".services.AccessibilityService\"\n            android:label=\"@string/app_name\"\n            android:exported=\"false\"\n            android:theme=\"@style/Theme.NotiProgressBar\"\n            android:permission=\"android.permission.BIND_ACCESSIBILITY_SERVICE\">\n            <intent-filter>\n                <action android:name=\"android.accessibilityservice.AccessibilityService\" />\n            </intent-filter>\n            <meta-data\n                android:name=\"android.accessibilityservice\"\n                android:resource=\"@xml/accessibility_service_config\" />\n        </service>\n        <service\n            android:name=\".services.NotificationListenerService\"\n            android:label=\"@string/notificationListenerDescription\"\n            android:exported=\"false\"\n            android:theme=\"@style/Theme.NotiProgressBar\"\n            android:permission=\"android.permission.BIND_NOTIFICATION_LISTENER_SERVICE\">\n            <intent-filter>\n                <action android:name=\"android.service.notification.NotificationListenerService\" />\n            </intent-filter>\n        </service>\n        <service\n            android:name=\".services.FullscreenDetectionService\"\n            android:exported=\"false\" />\n    </application>\n\n</manifest>"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/ProgressBarAppsAdapter.kt",
    "content": "package com.gustavoas.noti\n\nimport android.content.Context\nimport android.content.Intent\nimport android.graphics.Color\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport android.widget.Button\nimport android.widget.CheckBox\nimport android.widget.LinearLayout\nimport android.widget.TextView\nimport androidx.core.content.edit\nimport androidx.core.graphics.drawable.toDrawable\nimport androidx.fragment.app.Fragment\nimport androidx.preference.PreferenceManager\nimport androidx.recyclerview.widget.RecyclerView\nimport com.google.android.material.button.MaterialButtonToggleGroup\nimport com.gustavoas.noti.Utils.dpToPx\nimport com.gustavoas.noti.Utils.getApplicationIcon\nimport com.gustavoas.noti.Utils.getApplicationName\nimport com.gustavoas.noti.Utils.getColorForApp\nimport com.gustavoas.noti.Utils.showColorDialog\nimport com.gustavoas.noti.model.ProgressBarApp\nimport com.gustavoas.noti.services.AccessibilityService\n\nclass ProgressBarAppsAdapter(\n    private val fragment: Fragment,\n    private val context: Context,\n    private val apps: ArrayList<ProgressBarApp>,\n    private val appsRepository: ProgressBarAppsRepository\n) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {\n    private val VIEW_TYPE_HEADER = 0\n    private val VIEW_TYPE_ITEM = 1\n    private val VIEW_TYPE_FOOTER = 2\n\n    override fun getItemViewType(position: Int): Int {\n        return when (position) {\n            0 -> VIEW_TYPE_HEADER\n            itemCount - 1 -> VIEW_TYPE_FOOTER\n            else -> VIEW_TYPE_ITEM\n        }\n    }\n\n    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {\n        return when (viewType) {\n            VIEW_TYPE_HEADER -> {\n                val view = LayoutInflater.from(context).inflate(R.layout.button_toggle_group, parent, false)\n                HeaderViewHolder(view)\n            }\n            VIEW_TYPE_FOOTER -> {\n                val view = LayoutInflater.from(context).inflate(R.layout.per_app_settings_footer, parent, false)\n                FooterViewHolder(view)\n            }\n            else -> {\n                val view = LayoutInflater.from(context).inflate(R.layout.app_item, parent, false)\n                ItemViewHolder(view)\n            }\n        }\n    }\n\n    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {\n        if (holder !is ItemViewHolder) return\n\n        with(apps[position - 1]) {\n            holder.appName.text = getApplicationName(context, packageName) ?: packageName\n            val appIcon = getApplicationIcon(context, packageName) ?: Color.TRANSPARENT.toDrawable()\n            val appIconSize = dpToPx(context, 36)\n            appIcon.setBounds(0, 0, appIconSize, appIconSize)\n            holder.appName.setCompoundDrawables(appIcon, null, null, null)\n            holder.toggle.isChecked = showProgressBar\n            holder.toggle.setOnCheckedChangeListener { _, isChecked ->\n                showProgressBar = isChecked\n                appsRepository.updateApp(this)\n                if (!isChecked) {\n                    val intent = Intent(context, AccessibilityService::class.java)\n                    intent.putExtra(\"packageName\", packageName)\n                    intent.putExtra(\"removal\", true)\n                    context.startService(intent)\n                }\n            }\n            holder.background.setOnClickListener {\n                holder.toggle.toggle()\n            }\n\n            val barColor = getColorForApp(context, this)\n            holder.colorPicker.setBackgroundColor(barColor)\n            holder.colorPicker.setOnClickListener {\n                showColorDialog(\n                    fragment,\n                    barColor,\n                    (position - 1).toString(),\n                    !useDefaultColor,\n                )\n            }\n        }\n    }\n\n    override fun onViewRecycled(holder: RecyclerView.ViewHolder) {\n        super.onViewRecycled(holder)\n\n        if (holder !is ItemViewHolder) return\n        holder.toggle.setOnCheckedChangeListener(null)\n    }\n\n    override fun getItemCount(): Int = apps.size + 2\n\n    class HeaderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {\n        private val toggleGroup: MaterialButtonToggleGroup = itemView.findViewById(R.id.toggleGroup)\n\n        init {\n            val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this.itemView.context)\n            val enableDownloads = sharedPrefs.getBoolean(\"showForDownloads\", true)\n            val enableMedia = sharedPrefs.getBoolean(\"showForMedia\", true)\n\n            if (enableDownloads) {\n                toggleGroup.check(R.id.toggleDownloads)\n            }\n\n            if (enableMedia) {\n                toggleGroup.check(R.id.toggleMedia)\n            }\n\n            toggleGroup.addOnButtonCheckedListener { _, checkedId, isChecked ->\n                when (checkedId) {\n                    R.id.toggleDownloads -> {\n                        sharedPrefs.edit { putBoolean(\"showForDownloads\", isChecked) }\n                    }\n                    R.id.toggleMedia -> {\n                        sharedPrefs.edit { putBoolean(\"showForMedia\", isChecked) }\n                    }\n                }\n            }\n        }\n    }\n\n    class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {\n        val appName: TextView = view.findViewById(R.id.app_name)\n        val toggle: CheckBox = view.findViewById(R.id.checkbox)\n        val background: LinearLayout = view.findViewById(R.id.item_container)\n        val colorPicker: Button = view.findViewById(R.id.color_picker)\n    }\n\n    class FooterViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/ProgressBarAppsRepository.kt",
    "content": "package com.gustavoas.noti\n\nimport android.content.Context\nimport android.database.sqlite.SQLiteDatabase\nimport android.database.sqlite.SQLiteOpenHelper\nimport com.gustavoas.noti.model.ProgressBarApp\n\nclass ProgressBarAppsRepository(context: Context) :\n    SQLiteOpenHelper(context, DATABASE_NAME, null, 3) {\n    companion object {\n        const val DATABASE_NAME = \"progressBarApps\"\n        const val TABLE_NAME = \"apps\"\n        const val COLUMN_PACKAGE = \"package_name\"\n        const val COLUMN_SHOW_PROGRESS = \"show_progress\"\n        const val COLUMN_COLOR = \"color\"\n        const val COLUMN_USE_DEFAULT = \"default_color\"\n        const val COLUMN_USE_MATERIAL_YOU = \"material_you_color\"\n\n        private val apps: MutableList<ProgressBarApp> = mutableListOf()\n    }\n\n    init {\n        if (apps.isEmpty()) {\n            apps.addAll(getAllApps())\n        }\n    }\n\n    override fun onCreate(db: SQLiteDatabase?) {\n        db?.execSQL(\n            \"CREATE TABLE IF NOT EXISTS $TABLE_NAME (\" +\n                    \"$COLUMN_PACKAGE TEXT PRIMARY KEY,\" +\n                    \"$COLUMN_SHOW_PROGRESS INTEGER NOT NULL DEFAULT 1,\" +\n                    \"$COLUMN_COLOR INTEGER DEFAULT NULL,\" +\n                    \"$COLUMN_USE_DEFAULT INTEGER NOT NULL DEFAULT 1,\" +\n                    \"$COLUMN_USE_MATERIAL_YOU INTEGER NOT NULL DEFAULT 0\" +\n                    \")\"\n        )\n\n        val knownApps = listOf(\n            \"com.google.android.deskclock\",\n            \"com.android.chrome\",\n            \"com.duckduckgo.mobile.android\",\n            \"com.android.vending\",\n            \"com.epicgames.portal\",\n            \"code.name.monkey.retromusic\",\n            \"com.google.android.apps.youtube.music\",\n            \"com.spotify.music\",\n        )\n\n        knownApps.forEach { packageName ->\n            db?.execSQL(\n                \"INSERT INTO $TABLE_NAME ($COLUMN_PACKAGE) VALUES ('$packageName')\"\n            )\n        }\n    }\n\n    override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {\n        if (oldVersion < 2) {\n            db?.execSQL(\"ALTER TABLE $TABLE_NAME ADD COLUMN $COLUMN_COLOR INTEGER NOT NULL DEFAULT 1\")\n        }\n\n        if (oldVersion < 3) {\n            db?.execSQL(\"ALTER TABLE $TABLE_NAME RENAME TO ${TABLE_NAME}_old\")\n\n            db?.execSQL(\n                \"CREATE TABLE $TABLE_NAME (\" +\n                        \"$COLUMN_PACKAGE TEXT PRIMARY KEY,\" +\n                        \"$COLUMN_SHOW_PROGRESS INTEGER NOT NULL DEFAULT 1,\" +\n                        \"$COLUMN_COLOR INTEGER DEFAULT NULL,\" +\n                        \"$COLUMN_USE_DEFAULT INTEGER NOT NULL DEFAULT 1,\" +\n                        \"$COLUMN_USE_MATERIAL_YOU INTEGER NOT NULL DEFAULT 0\" +\n                        \")\"\n            )\n\n            db?.execSQL(\n                \"INSERT INTO $TABLE_NAME ($COLUMN_PACKAGE, $COLUMN_SHOW_PROGRESS, $COLUMN_COLOR) \" +\n                        \"SELECT $COLUMN_PACKAGE, $COLUMN_SHOW_PROGRESS, $COLUMN_COLOR FROM ${TABLE_NAME}_old\"\n            )\n\n            db?.execSQL(\"DROP TABLE ${TABLE_NAME}_old\")\n\n            db?.execSQL(\"UPDATE $TABLE_NAME SET \" +\n                    \"$COLUMN_USE_DEFAULT = CASE WHEN $COLUMN_COLOR = 1 THEN 1 ELSE 0 END, \" +\n                    \"$COLUMN_USE_MATERIAL_YOU = CASE WHEN $COLUMN_COLOR = 2 THEN 1 ELSE 0 END, \" +\n                    \"$COLUMN_COLOR = CASE WHEN $COLUMN_COLOR IN (1, 2) THEN NULL ELSE $COLUMN_COLOR END\"\n            )\n        }\n    }\n\n    fun addApp(app: ProgressBarApp): ProgressBarApp {\n        writableDatabase.execSQL(\n            \"INSERT OR IGNORE INTO $TABLE_NAME ($COLUMN_PACKAGE) VALUES (?)\",\n            arrayOf(app.packageName)\n        )\n\n        apps.firstOrNull {\n            it.packageName == app.packageName\n        }?.let {\n            return it\n        }\n\n        apps.add(app)\n\n        return app\n    }\n\n    fun updateApp(app: ProgressBarApp) {\n        writableDatabase.execSQL(\n            \"UPDATE $TABLE_NAME \" +\n                    \"SET $COLUMN_SHOW_PROGRESS = ?, \" +\n                    \"$COLUMN_COLOR = ?, \" +\n                    \"$COLUMN_USE_DEFAULT = ?, \" +\n                    \"$COLUMN_USE_MATERIAL_YOU = ? \" +\n                    \"WHERE $COLUMN_PACKAGE = ?\",\n            arrayOf(\n                if (app.showProgressBar) 1 else 0,\n                app.color,\n                if (app.useDefaultColor) 1 else 0,\n                if (app.useMaterialYouColor) 1 else 0,\n                app.packageName\n            )\n        )\n\n        apps.indexOfFirst {\n            it.packageName == app.packageName\n        }.let { index ->\n            if (index != -1) {\n                apps[index] = app\n            }\n        }\n    }\n\n    fun showProgressForApp(packageName: String): Boolean? {\n        apps.firstOrNull {\n            it.packageName == packageName\n        }?.let {\n            return it.showProgressBar\n        }\n\n        readableDatabase.rawQuery(\n            \"SELECT $COLUMN_SHOW_PROGRESS FROM $TABLE_NAME WHERE $COLUMN_PACKAGE = ?\",\n            arrayOf(packageName)\n        ).use { cursor ->\n            if (cursor.moveToFirst()) {\n                return cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_SHOW_PROGRESS)) == 1\n            }\n        }\n\n        return null\n    }\n\n    fun getApp(packageName: String): ProgressBarApp? {\n        apps.firstOrNull {\n            it.packageName == packageName\n        }?.let {\n            return it\n        }\n\n        readableDatabase.rawQuery(\n            \"SELECT * FROM $TABLE_NAME WHERE $COLUMN_PACKAGE = ?\",\n            arrayOf(packageName)\n        ).use { cursor ->\n            if (cursor.moveToFirst()) {\n                val showProgress = cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_SHOW_PROGRESS))\n                val colorIndex = cursor.getColumnIndexOrThrow(COLUMN_COLOR)\n                val color = if (cursor.isNull(colorIndex)) {\n                    null\n                } else {\n                    cursor.getInt(colorIndex)\n                }\n                val useDefault = cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_USE_DEFAULT))\n                val useMaterialYou = cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_USE_MATERIAL_YOU))\n                return ProgressBarApp(\n                    packageName,\n                    showProgress == 1,\n                    color,\n                    useDefault == 1,\n                    useMaterialYou == 1\n                )\n            }\n        }\n\n        return null\n    }\n\n    private fun getAllApps(): MutableList<ProgressBarApp> {\n        val apps = mutableListOf<ProgressBarApp>()\n        readableDatabase.rawQuery(\n            \"SELECT * FROM $TABLE_NAME\", null\n        ).use { cursor ->\n            val packageIndex = cursor.getColumnIndexOrThrow(COLUMN_PACKAGE)\n            val showProgressIndex = cursor.getColumnIndexOrThrow(COLUMN_SHOW_PROGRESS)\n            val colorIndex = cursor.getColumnIndexOrThrow(COLUMN_COLOR)\n            val useDefaultIndex = cursor.getColumnIndexOrThrow(COLUMN_USE_DEFAULT)\n            val useMaterialYouIndex = cursor.getColumnIndexOrThrow(COLUMN_USE_MATERIAL_YOU)\n\n            while (cursor.moveToNext()) {\n                val packageName = cursor.getString(packageIndex)\n                val showProgress = cursor.getInt(showProgressIndex)\n                val color = if (cursor.isNull(colorIndex)) {\n                    null\n                } else {\n                    cursor.getInt(colorIndex)\n                }\n                val useDefault = cursor.getInt(useDefaultIndex)\n                val useMaterialYou = cursor.getInt(useMaterialYouIndex)\n                apps.add(\n                    ProgressBarApp(\n                        packageName,\n                        showProgress == 1,\n                        color,\n                        useDefault == 1,\n                        useMaterialYou == 1\n                    )\n                )\n            }\n        }\n\n        return apps\n    }\n\n    fun getAll(): List<ProgressBarApp> {\n        return apps.toList()\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/SettingsActivity.kt",
    "content": "package com.gustavoas.noti\n\nimport android.content.Intent\nimport android.content.SharedPreferences\nimport android.net.Uri\nimport android.os.Build\nimport android.os.Bundle\nimport android.os.Handler\nimport android.os.Looper\nimport android.util.Xml\nimport android.view.View\nimport androidx.appcompat.app.AppCompatActivity\nimport androidx.core.content.ContextCompat\nimport androidx.core.content.edit\nimport androidx.core.net.toUri\nimport androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen\nimport androidx.core.view.ViewCompat\nimport androidx.core.view.WindowInsetsCompat\nimport androidx.preference.Preference\nimport androidx.preference.PreferenceFragmentCompat\nimport androidx.preference.PreferenceManager\nimport com.google.android.material.appbar.AppBarLayout\nimport com.google.android.material.appbar.AppBarLayout.OnOffsetChangedListener\nimport com.google.android.material.appbar.CollapsingToolbarLayout\nimport com.google.android.material.appbar.MaterialToolbar\nimport com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton\nimport com.gustavoas.noti.Utils.dpToPx\nimport com.gustavoas.noti.Utils.getFirebaseConfigStorageReference\nimport com.gustavoas.noti.Utils.getScreenLargeSide\nimport com.gustavoas.noti.Utils.getScreenSmallSide\nimport com.gustavoas.noti.Utils.hasAccessibilityPermission\nimport com.gustavoas.noti.Utils.hasNotificationListenerPermission\nimport com.gustavoas.noti.Utils.hasSystemAlertWindowPermission\nimport com.gustavoas.noti.fragments.CircularBarFragment\nimport com.gustavoas.noti.fragments.LinearBarFragment\nimport com.gustavoas.noti.fragments.PerAppSettingsFragment\nimport com.gustavoas.noti.fragments.SettingsFragment\nimport com.gustavoas.noti.model.DeviceConfiguration\nimport com.gustavoas.noti.model.ProgressBarApp\nimport com.gustavoas.noti.model.ProgressNotification\nimport com.gustavoas.noti.services.AccessibilityService\nimport kotlinx.coroutines.runBlocking\nimport kotlinx.coroutines.tasks.await\nimport org.xmlpull.v1.XmlPullParser\nimport java.io.InputStream\nimport kotlin.math.abs\nimport kotlin.math.roundToInt\nimport kotlin.math.sqrt\n\nclass SettingsActivity : AppCompatActivity(),\n    PreferenceFragmentCompat.OnPreferenceStartFragmentCallback,\n    SharedPreferences.OnSharedPreferenceChangeListener {\n    private val previewFab by lazy { findViewById<ExtendedFloatingActionButton>(R.id.previewFab) }\n    private val topAppBar by lazy { findViewById<MaterialToolbar>(R.id.topAppBar) }\n    private val appBarLayout by lazy { findViewById<AppBarLayout>(R.id.appBarLayout) }\n    private var offsetChangeListener: OnOffsetChangedListener? = null\n    private val handler = Handler(Looper.getMainLooper())\n\n    private val sizeDependentPrefs = arrayOf(\n        Pair(\"advancedProgressBarStyle\", false),\n        Pair(\"progressBarStyle\", \"linear\"),\n        Pair(\"progressBarStylePortrait\", \"linear\"),\n        Pair(\"progressBarStyleLandscape\", \"linear\"),\n        Pair(\"circularProgressBarThickness\", 15),\n        Pair(\"circularProgressBarSize\", 65),\n        Pair(\"circularProgressBarTopOffset\", 60),\n        Pair(\"circularProgressBarHorizontalOffset\", 0),\n        Pair(\"linearProgressBarSize\", 15),\n        Pair(\"matchStatusBarHeight\", false),\n        Pair(\"linearProgressBarMarginTop\", 0),\n        Pair(\"showBelowNotch\", false),\n    )\n\n    override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {\n        if (sizeDependentPrefs.any { it.first == key }) {\n            val defaultValue = sizeDependentPrefs.first { it.first == key }.second\n            val width = getScreenSmallSide(this)\n            val height = getScreenLargeSide(this)\n\n            moveSharedPreferenceValue(key + height + \"x\" + width, key!!, defaultValue)\n        }\n    }\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {\n            setTheme(R.style.SplashScreen)\n            installSplashScreen()\n        } else {\n            setTheme(R.style.Theme_NotiProgressBar)\n        }\n\n        super.onCreate(savedInstanceState)\n\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)\n\n        if (!sharedPreferences.contains(\"progressBarStyle\")) {\n            runBlocking {\n                setupDeviceConfiguration()\n            }\n        }\n\n        if (!sharedPreferences.contains(\"progressBarColor\")) {\n            setMaterialYouAsDefault()\n        }\n\n        setupSizeDependentPrefs()\n\n        sharedPreferences\n            .registerOnSharedPreferenceChangeListener(this)\n\n        setContentView(R.layout.activity_main)\n\n        if (savedInstanceState == null) {\n            supportFragmentManager.beginTransaction()\n                .replace(R.id.settings, SettingsFragment())\n                .commitNow()\n        }\n\n        updateUpNavigationVisibility()\n\n        ViewCompat.setOnApplyWindowInsetsListener(window.decorView.rootView) { _, insets ->\n            val keyboardInset = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom\n            if (keyboardInset > 0) {\n                appBarLayout.setExpanded(false, true)\n            }\n            insets\n        }\n    }\n\n    private fun setupSizeDependentPrefs() {\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)\n        val width = getScreenSmallSide(this)\n        val height = getScreenLargeSide(this)\n\n        for (pref in sizeDependentPrefs) {\n            val relatedPrefs = sharedPreferences.all.filterKeys { it.startsWith(pref.first) }\n\n            val sameRatio = relatedPrefs.filterKeys { it.length > pref.first.length && it[pref.first.length].isDigit() && it.drop(pref.first.length).split(\"x\")[0].toInt() / it.drop(pref.first.length).split(\"x\")[1].toInt() == height / width }\n\n            if (sameRatio.isEmpty()) {\n                continue\n            }\n\n            val closest = sameRatio.keys.minByOrNull { abs(it.drop(pref.first.length).split(\"x\")[0].toInt() * it.drop(pref.first.length).split(\"x\")[1].toInt() - height * width) }\n\n            var reductionRatio = 1f\n\n            if (pref.second is Int) {\n                reductionRatio = sqrt((height * width).div(closest!!.drop(pref.first.length).split(\"x\")[0].toFloat() * closest.drop(pref.first.length).split(\"x\")[1].toFloat()))\n            }\n\n            moveSharedPreferenceValue(pref.first, closest!!, pref.second, reductionRatio)\n        }\n    }\n\n    private fun moveSharedPreferenceValue(key: String, oldKey: String, defaultValue: Any, reductionRatio: Float = 1f) {\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)\n        sharedPreferences.edit {\n            when (defaultValue) {\n                is Boolean -> putBoolean(key, sharedPreferences.getBoolean(oldKey, defaultValue))\n                is Int -> putInt(\n                    key,\n                    sharedPreferences.getInt(oldKey, defaultValue).times(reductionRatio)\n                        .roundToInt()\n                )\n                is String -> putString(key, sharedPreferences.getString(oldKey, defaultValue))\n            }\n        }\n    }\n\n    override fun onStart() {\n        super.onStart()\n\n        val collapsingToolbarLayout = findViewById<CollapsingToolbarLayout>(R.id.collapsingToolbar)\n        var isVisible = true\n        var scrollRange = -1\n\n        offsetChangeListener =\n            OnOffsetChangedListener { barLayout, verticalOffset ->\n                if (scrollRange == -1) {\n                    scrollRange = barLayout?.totalScrollRange!!\n                }\n                if (scrollRange + verticalOffset < dpToPx(this, 25)) {\n                    collapsingToolbarLayout.title = resources.getString(R.string.app_name_short)\n                    isVisible = true\n                } else if (isVisible) {\n                    collapsingToolbarLayout.title = resources.getString(R.string.app_name)\n                    isVisible = false\n                }\n            }\n\n        appBarLayout.addOnOffsetChangedListener(offsetChangeListener)\n\n        if (hasNotificationListenerPermission(this) && (hasAccessibilityPermission(this) || hasSystemAlertWindowPermission(this))) {\n            previewFab.visibility = View.VISIBLE\n        } else {\n            previewFab.visibility = View.GONE\n        }\n\n        previewFab.setOnClickListener {\n            simulateDownload()\n        }\n\n        supportFragmentManager.addOnBackStackChangedListener {\n            updateUpNavigationVisibility()\n        }\n\n        topAppBar.setNavigationOnClickListener {\n            supportFragmentManager.popBackStack()\n        }\n\n        topAppBar.setOnMenuItemClickListener { menuItem ->\n            when (menuItem.itemId) {\n                R.id.bug_report -> {\n                    val sendEmail = Intent(Intent.ACTION_SENDTO).apply {\n                        data =\n                            (\"mailto:gustavoasgas1+noti@gmail.com\" + \"?subject=\" + Uri.encode(\"Noti\")).toUri()\n                    }\n                    sendEmail.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)\n                    startActivity(sendEmail)\n                    true\n                }\n\n                else -> false\n            }\n        }\n    }\n\n    override fun onStop() {\n        super.onStop()\n\n        if (offsetChangeListener != null) {\n            appBarLayout.removeOnOffsetChangedListener(offsetChangeListener!!)\n        }\n    }\n\n    override fun onDestroy() {\n        super.onDestroy()\n\n        PreferenceManager.getDefaultSharedPreferences(this)\n            .unregisterOnSharedPreferenceChangeListener(this)\n    }\n\n    override fun onPreferenceStartFragment(\n        caller: PreferenceFragmentCompat,\n        pref: Preference\n    ): Boolean {\n        val fragment = when (pref.key) {\n            \"CircularBarFragment\" -> CircularBarFragment()\n            \"LinearBarFragment\" -> LinearBarFragment()\n            \"PerAppSettingsFragment\" -> PerAppSettingsFragment()\n            else -> null\n        }\n\n        supportFragmentManager.beginTransaction()\n            .replace(R.id.settings, fragment ?: return false)\n            .addToBackStack(null)\n            .commit()\n\n        return true\n    }\n\n    private fun simulateDownload() {\n        val intent = Intent(this, AccessibilityService::class.java)\n        handler.removeCallbacksAndMessages(null)\n        val maxProgress = this.resources.getInteger(R.integer.progress_bar_max)\n        val numberOfSteps = 4\n        val stepSize = maxProgress / numberOfSteps\n        for (i in stepSize..(maxProgress + stepSize) step stepSize) {\n            handler.postDelayed({\n                intent.putExtra(\"removal\", i > maxProgress)\n                intent.putExtra(\"id\", packageName)\n                intent.putExtra(\n                    \"progressNotification\",\n                    ProgressNotification(\n                        ProgressBarApp(\n                            packageName,\n                            true\n                        ),\n                        i,\n                        10\n                    )\n                )\n                startService(intent)\n            }, ((i - stepSize) * 1000 / stepSize).toLong())\n        }\n    }\n\n    private suspend fun setupDeviceConfiguration() {\n        if (!Utils.isInternetAvailable(this)) {\n            return\n        }\n\n        val configRef = getFirebaseConfigStorageReference()\n\n        try {\n            val taskSnapshot = configRef.stream.await()\n\n            val inputStream: InputStream = taskSnapshot.stream\n\n            val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)\n            sharedPreferences.edit {\n                putString(\"progressBarStyle\", \"circular\")\n            }\n\n            parseDeviceConfiguration(inputStream)\n\n        } catch (_: Exception) {\n            val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)\n            sharedPreferences.edit {\n                putString(\"progressBarStyle\", \"linear\")\n            }\n        }\n    }\n\n    private fun parseDeviceConfiguration(input: InputStream) {\n        val parser: XmlPullParser = Xml.newPullParser()\n        parser.setInput(input, null)\n\n        while (parser.eventType != XmlPullParser.END_DOCUMENT) {\n            when (parser.eventType) {\n                XmlPullParser.START_TAG -> {\n                    if (parser.name == \"display\") {\n                        val displayConfig = DeviceConfiguration()\n                        displayConfig.deviceWidth = parser.getAttributeValue(null, \"width\")\n                        displayConfig.deviceHeight = parser.getAttributeValue(null, \"height\")\n                        displayConfig.configuration = parser.getAttributeValue(null, \"configuration\")\n                        parseDisplay(displayConfig, parser)\n                    }\n                }\n            }\n            parser.next()\n        }\n    }\n\n    private fun parseDisplay(config: DeviceConfiguration, parser: XmlPullParser) {\n        while (parser.eventType != XmlPullParser.END_DOCUMENT) {\n            when (parser.eventType) {\n                XmlPullParser.START_TAG -> {\n                    when (parser.name) {\n                        \"size\" -> config.size = parser.nextText()\n                        \"marginTop\" -> config.marginTop = parser.nextText()\n                        \"topOffset\" -> config.topOffset = parser.nextText()\n                        \"offset\" -> config.horizontalOffset = parser.nextText()\n                    }\n                }\n\n                XmlPullParser.END_TAG -> {\n                    if (parser.name == \"display\") {\n                        break\n                    }\n                }\n            }\n            parser.next()\n        }\n\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)\n\n        val currentWidth = getScreenSmallSide(this)\n        val currentHeight = getScreenLargeSide(this)\n\n        if (config.deviceWidth == \"\" || config.deviceHeight == \"\") {\n            if ((config.deviceWidth != \"\" && currentWidth == config.deviceWidth?.toInt()) ||\n                (config.deviceHeight != \"\" && currentHeight == config.deviceHeight?.toInt())) {\n                config.deviceWidth = currentWidth.toString()\n                config.deviceHeight = currentHeight.toString()\n            }\n\n            if (config.deviceWidth == \"\" && config.deviceHeight != \"\") {\n                config.deviceWidth = (currentWidth * config.deviceHeight!!.toInt() / currentHeight).toString()\n            } else if (config.deviceHeight == \"\" && config.deviceWidth != \"\") {\n                config.deviceHeight = (currentHeight * config.deviceWidth!!.toInt() / currentWidth).toString()\n            }\n\n            if (config.deviceWidth == \"\" || config.deviceHeight == \"\") {\n                config.deviceWidth = currentWidth.toString()\n                config.deviceHeight = currentHeight.toString()\n            }\n        }\n\n        val appendix = config.deviceHeight + \"x\" + config.deviceWidth\n\n        if (config.configuration == \"circular\") {\n            sharedPreferences.edit {\n                putString(\"progressBarStyle$appendix\", \"circular\")\n                putBoolean(\"blackBackground\", true)\n                putInt(\"circularProgressBarSize$appendix\", config.size?.toIntOrNull() ?: 65)\n                putInt(\"circularProgressBarTopOffset$appendix\", config.topOffset?.toIntOrNull() ?: 60)\n                putInt(\"circularProgressBarHorizontalOffset$appendix\", config.horizontalOffset?.toIntOrNull() ?: 0)\n            }\n        } else {\n            sharedPreferences.edit {\n                putString(\"progressBarStyle$appendix\", \"linear\")\n            }\n        }\n    }\n\n    private fun setMaterialYouAsDefault() {\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)\n\n        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {\n            sharedPreferences.edit {\n                putInt(\n                    \"progressBarColor\", ContextCompat.getColor(\n                        this@SettingsActivity,\n                        R.color.system_accent_color\n                    )\n                )\n                putBoolean(\"usingMaterialYouColor\", true)\n            }\n        } else {\n            sharedPreferences.edit {\n                putInt(\n                    \"progressBarColor\", ContextCompat.getColor(\n                        this@SettingsActivity,\n                        R.color.purple_500\n                    )\n                )\n            }\n        }\n    }\n\n    private fun updateUpNavigationVisibility() {\n        if (supportFragmentManager.backStackEntryCount > 0) {\n            topAppBar.setNavigationIcon(androidx.appcompat.R.drawable.abc_ic_ab_back_material)\n            topAppBar.setNavigationIconTint(ContextCompat.getColor(this, R.color.text))\n            topAppBar.setTitleMargin(0, 0, dpToPx(this, 40), 0)\n        } else {\n            topAppBar.navigationIcon = null\n            topAppBar.setTitleMargin(0, 0, 0, 0)\n        }\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/Utils.kt",
    "content": "package com.gustavoas.noti\n\nimport android.content.ComponentName\nimport android.content.Context\nimport android.content.pm.ApplicationInfo\nimport android.content.pm.PackageManager.NameNotFoundException\nimport android.graphics.drawable.Drawable\nimport android.net.ConnectivityManager\nimport android.net.NetworkCapabilities\nimport android.os.Build\nimport android.os.VibrationEffect\nimport android.os.Vibrator\nimport android.os.VibratorManager\nimport android.provider.Settings\nimport android.util.DisplayMetrics\nimport android.view.Display\nimport android.widget.Toast\nimport androidx.core.content.ContextCompat\nimport androidx.fragment.app.Fragment\nimport androidx.preference.PreferenceManager\nimport com.google.firebase.ktx.Firebase\nimport com.google.firebase.storage.StorageReference\nimport com.google.firebase.storage.ktx.storage\nimport com.gustavoas.noti.model.ProgressBarApp\nimport com.gustavoas.noti.services.AccessibilityService\nimport com.gustavoas.noti.services.NotificationListenerService\nimport eltos.simpledialogfragment.color.SimpleColorDialog\nimport java.io.ByteArrayInputStream\nimport java.io.ByteArrayOutputStream\nimport java.io.InputStream\nimport java.nio.charset.StandardCharsets\n\nobject Utils {\n    fun hasAccessibilityPermission(context: Context): Boolean {\n        val accessibilityServiceComponentName = ComponentName(context, AccessibilityService::class.java)\n        val enabledServices = Settings.Secure.getString(context.contentResolver, Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES)\n\n        return enabledServices.orEmpty().let {\n            it.contains(accessibilityServiceComponentName.flattenToString()) ||\n                    it.contains(accessibilityServiceComponentName.flattenToShortString())\n        }\n    }\n\n    fun hasNotificationListenerPermission(context: Context): Boolean {\n        val notificationListenerComponentName = ComponentName(context, NotificationListenerService::class.java)\n        val enabledServices = Settings.Secure.getString(context.contentResolver, \"enabled_notification_listeners\")\n        return enabledServices?.contains(notificationListenerComponentName.flattenToString()) ?: false\n    }\n\n    fun hasSystemAlertWindowPermission(context: Context): Boolean {\n        return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {\n            Settings.canDrawOverlays(context)\n        } else {\n            true\n        }\n    }\n\n    fun dpToPx(context: Context, dp: Int): Int {\n        return (dp * context.resources.displayMetrics.density).toInt()\n    }\n\n    fun isInternetAvailable(context: Context): Boolean {\n        val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager\n\n        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {\n            val network = connectivityManager.activeNetwork ?: return false\n            val capabilities = connectivityManager.getNetworkCapabilities(network) ?: return false\n            return capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED)\n        } else {\n            val activeNetworkInfo = connectivityManager.activeNetworkInfo\n            return activeNetworkInfo != null && activeNetworkInfo.isConnected\n        }\n    }\n\n    fun getFirebaseConfigStorageReference(): StorageReference {\n        val storage = Firebase.storage\n        val storageRef = storage.reference\n\n        val brand = Build.BRAND.lowercase()\n        var model = Build.DEVICE.lowercase().replace(\"\\\\W\".toRegex(), \"\")\n\n        if (brand == \"xiaomi\" || brand == \"redmi\" || brand == \"poco\") {\n            while (model.endsWith(\"in\")) {\n                model = model.dropLast(2)\n            }\n        }\n\n        return storageRef.child(\"configs/$brand/$model.xml\")\n    }\n\n    fun shareConfigToFirebase(context: Context) {\n        if (!isInternetAvailable(context)) {\n            Toast.makeText(context, context.getString(R.string.shareConfigNoInternetMessage), Toast.LENGTH_SHORT).show()\n            return\n        }\n\n        val configRef = getFirebaseConfigStorageReference()\n\n        configRef.stream.addOnSuccessListener { taskSnapshot ->\n            val inputStream: InputStream = taskSnapshot.stream\n\n            val outputStream = ByteArrayOutputStream()\n            val buffer = ByteArray(1024)\n            var length: Int\n            while (inputStream.read(buffer).also { length = it } != -1) {\n                outputStream.write(buffer, 0, length)\n            }\n            val existingFileContent = outputStream.toString(StandardCharsets.UTF_8.name())\n\n            if (existingFileContent != buildConfig(context)) {\n                uploadConfigToStorageRef(context, configRef)\n            }\n\n        }.addOnFailureListener {\n            uploadConfigToStorageRef(context, configRef)\n        }\n\n        Toast.makeText(context, context.getString(R.string.shareConfigPositiveMessage), Toast.LENGTH_SHORT).show()\n    }\n\n    private fun uploadConfigToStorageRef(context: Context, storageRef: StorageReference) {\n        val config = buildConfig(context)\n        val xmlInputStream = ByteArrayInputStream(config.toByteArray(StandardCharsets.UTF_8))\n\n        storageRef.putStream(xmlInputStream)\n    }\n\n    private fun buildConfig(context: Context): String {\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)\n\n        val stylePrefs = sharedPreferences.all.filterKeys { it.startsWith(\"progressBarStyle\") && it.last().isDigit() }\n\n        if (stylePrefs.isEmpty() || stylePrefs.none { it.value == \"circular\" }) {\n            return \"\"\n        }\n\n        val config = StringBuilder()\n        config.append(\"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?>\\n\")\n        config.append(\"<device>\\n\")\n\n        val sizes = stylePrefs.keys.map { str -> str.dropWhile { !it.isDigit() } }.distinct()\n\n        sizes.forEach {\n            config.append(buildConfigForDisplay(context, it)).append(\"\\n\")\n        }\n\n        config.append(\"</device>\")\n\n        return config.toString()\n    }\n\n    private fun buildConfigForDisplay(context: Context, display: String): String {\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)\n        val height = display.split(\"x\")[0].toInt()\n        val width = display.split(\"x\")[1].toInt()\n        val configuration = sharedPreferences.getString(\"progressBarStyle$display\", \"linear\")\n\n        val displayConfig = StringBuilder()\n        displayConfig.append(\"\\t<display width=\\\"$width\\\" height=\\\"$height\\\" configuration=\\\"$configuration\\\">\\n\")\n\n        if (configuration == \"circular\") {\n            val size = sharedPreferences.getInt(\"circularProgressBarSize$display\", 65)\n            val marginTop = sharedPreferences.getInt(\"circularProgressBarTopOffset$display\", 60)\n            val offset = sharedPreferences.getInt(\"circularProgressBarHorizontalOffset$display\", 0)\n\n            displayConfig.append(\"\\t\\t<size>$size</size>\\n\")\n            displayConfig.append(\"\\t\\t<topOffset>$marginTop</topOffset>\\n\")\n            displayConfig.append(\"\\t\\t<offset>$offset</offset>\\n\")\n        }\n\n        displayConfig.append(\"\\t</display>\")\n\n        return displayConfig.toString()\n    }\n\n    fun showColorDialog(fragment: Fragment, color: Int, tag: String, reset: Boolean = false) {\n        if (reset) {\n            SimpleColorDialog.build()\n                .colorPreset(color)\n                .colors(fragment.context, R.array.colorsArrayValues)\n                .allowCustom(true)\n                .showOutline(0x46000000)\n                .gridNumColumn(5)\n                .choiceMode(SimpleColorDialog.SINGLE_CHOICE)\n                .neg()\n                .neut(R.string.reset)\n                .show(fragment, tag)\n        } else {\n            SimpleColorDialog.build()\n                .colorPreset(color)\n                .colors(fragment.context, R.array.colorsArrayValues)\n                .allowCustom(true)\n                .showOutline(0x46000000)\n                .gridNumColumn(5)\n                .choiceMode(SimpleColorDialog.SINGLE_CHOICE)\n                .neg()\n                .show(fragment, tag)\n        }\n    }\n\n    fun getRealDisplayHeight(context: Context): Int {\n        return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {\n            val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as android.view.WindowManager\n            windowManager.currentWindowMetrics.bounds.height()\n        } else {\n            val displayManager = context.getSystemService(Context.DISPLAY_SERVICE) as android.hardware.display.DisplayManager\n            val display = displayManager.getDisplay(Display.DEFAULT_DISPLAY)!!\n            val metrics = DisplayMetrics()\n            display.getRealMetrics(metrics)\n            metrics.heightPixels\n        }\n    }\n\n    private fun getRealDisplayWidth(context: Context): Int {\n        return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {\n            val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as android.view.WindowManager\n            windowManager.currentWindowMetrics.bounds.width()\n        } else {\n            val displayManager = context.getSystemService(Context.DISPLAY_SERVICE) as android.hardware.display.DisplayManager\n            val display = displayManager.getDisplay(Display.DEFAULT_DISPLAY)!!\n            val metrics = DisplayMetrics()\n            display.getRealMetrics(metrics)\n            metrics.widthPixels\n        }\n    }\n\n    fun getScreenSmallSide(context: Context): Int {\n        return minOf(getRealDisplayHeight(context), getRealDisplayWidth(context))\n    }\n\n    fun getScreenLargeSide(context: Context): Int {\n        return maxOf(getRealDisplayHeight(context), getRealDisplayWidth(context))\n    }\n\n    fun vibrate(context: Context) {\n        val vibrator = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {\n            val vibratorManager =\n                ContextCompat.getSystemService(context, VibratorManager::class.java)\n            vibratorManager?.defaultVibrator\n        } else {\n            @Suppress(\"DEPRECATION\")\n            context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator\n        }\n\n        if (vibrator == null) {\n            return\n        }\n\n        vibrator.cancel()\n\n        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {\n            vibrator.vibrate(VibrationEffect.createPredefined(VibrationEffect.EFFECT_TICK))\n        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {\n            vibrator.vibrate(VibrationEffect.createOneShot(1, 200))\n        } else {\n            @Suppress(\"DEPRECATION\")\n            vibrator.vibrate(1)\n        }\n    }\n\n    fun getStatusBarHeight(context: Context): Int {\n        return context.resources.getDimensionPixelSize(\n            (context.resources.getIdentifier(\n                \"status_bar_height\",\n                \"dimen\",\n                \"android\"\n            )))\n    }\n\n    fun getApplicationInfo(context: Context, packageName: String): ApplicationInfo? {\n        return try {\n            context.packageManager.getApplicationInfo(packageName, 0)\n        } catch (e: NameNotFoundException) {\n            null\n        }\n    }\n\n    fun getApplicationName(context: Context, packageName: String): String? {\n        return context.packageManager.getApplicationLabel(\n            getApplicationInfo(context, packageName) ?: return null\n        ).toString()\n    }\n\n    fun getApplicationIcon(context: Context, packageName: String): Drawable? {\n        return context.packageManager.getApplicationIcon(\n            getApplicationInfo(context, packageName) ?: return null\n        )\n    }\n\n    fun getColorForApp(context: Context, progressBarApp: ProgressBarApp): Int {\n        val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context)\n        val useNotificationColor = sharedPrefs.getBoolean(\"useNotificationColor\", false)\n        val useMaterialYou = sharedPrefs.getBoolean(\"usingMaterialYouColor\", false)\n\n        if ((progressBarApp.useDefaultColor && useNotificationColor) ||\n            (!progressBarApp.useDefaultColor && !progressBarApp.useMaterialYouColor)) {\n            progressBarApp.color?.let { return it }\n        }\n\n        if ((progressBarApp.useMaterialYouColor) ||\n            (progressBarApp.useDefaultColor && useMaterialYou)) {\n            return ContextCompat.getColor(context, R.color.system_accent_color)\n        }\n\n        return sharedPrefs.getInt(\n            \"progressBarColor\", ContextCompat.getColor(context, R.color.purple_500)\n        )\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/fragments/BasePreferenceFragment.kt",
    "content": "package com.gustavoas.noti.fragments\n\nimport android.os.Bundle\nimport android.view.View\nimport androidx.preference.PreferenceFragmentCompat\nimport com.gustavoas.noti.Utils\n\nabstract class BasePreferenceFragment : PreferenceFragmentCompat() {\n    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n        super.onViewCreated(view, savedInstanceState)\n\n        val preferencesView = listView\n        preferencesView.setPadding(0, 0, 0, Utils.dpToPx(requireContext(), 100))\n        preferencesView.isVerticalScrollBarEnabled = false\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/fragments/CircularBarFragment.kt",
    "content": "package com.gustavoas.noti.fragments\n\nimport android.content.SharedPreferences\nimport android.os.Bundle\nimport androidx.preference.Preference\nimport androidx.preference.PreferenceManager\nimport com.gustavoas.noti.R\nimport com.gustavoas.noti.Utils\n\nclass CircularBarFragment : BasePreferenceFragment(),\n    SharedPreferences.OnSharedPreferenceChangeListener {\n    override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {\n        // TODO: If offset is not zero and hole punch size changes toast suggesting a 0.5x change\n    }\n\n    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {\n        setPreferencesFromResource(R.xml.circular_bar_preferences, rootKey)\n\n        findPreference<Preference>(\"shareConfig\")?.setOnPreferenceClickListener {\n            Utils.shareConfigToFirebase(requireContext())\n            true\n        }\n\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())\n\n        sharedPreferences.registerOnSharedPreferenceChangeListener(this)\n    }\n\n    override fun onDestroy() {\n        super.onDestroy()\n\n        PreferenceManager.getDefaultSharedPreferences(requireContext())\n            .unregisterOnSharedPreferenceChangeListener(this)\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/fragments/LinearBarFragment.kt",
    "content": "package com.gustavoas.noti.fragments\n\nimport android.content.SharedPreferences\nimport android.os.Build\nimport android.os.Bundle\nimport androidx.preference.Preference\nimport androidx.preference.PreferenceManager\nimport com.gustavoas.noti.R\nimport com.gustavoas.noti.Utils.getStatusBarHeight\n\nclass LinearBarFragment : BasePreferenceFragment(),\n    SharedPreferences.OnSharedPreferenceChangeListener {\n\n    override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {\n        if (key == \"linearProgressBarSize\") {\n            val size = sharedPreferences?.getInt(key, 15) ?: 15\n            sharedPreferences?.edit()\n                ?.putBoolean(\"matchStatusBarHeight\", size == getStatusBarHeight(context ?: return))\n                ?.apply()\n        }\n    }\n\n    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {\n        setPreferencesFromResource(R.xml.linear_bar_preferences, rootKey)\n\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())\n\n        findPreference<Preference>(\"statusBarHeightCard\")?.summary =\n            getString(R.string.prefsStatusBarHeightInfo, getStatusBarHeight(requireContext()))\n\n        if (sharedPreferences.getBoolean(\"matchStatusBarHeight\", false)) {\n            sharedPreferences.edit()\n                .putInt(\"linearProgressBarSize\", getStatusBarHeight(requireContext())).apply()\n        }\n\n        sharedPreferences.registerOnSharedPreferenceChangeListener(this)\n    }\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n\n        if (savedInstanceState == null) {\n            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P || !hasDisplayCutout()) {\n                findPreference<Preference>(\"showBelowNotch\")?.isVisible = false\n            }\n        }\n    }\n\n    private fun hasDisplayCutout(): Boolean {\n        return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {\n            val windowInsets = requireActivity().window?.decorView?.rootWindowInsets\n            val displayCutout = windowInsets?.displayCutout\n            displayCutout != null\n        } else {\n            false\n        }\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/fragments/PerAppSettingsFragment.kt",
    "content": "package com.gustavoas.noti.fragments\n\nimport android.os.Build\nimport android.os.Build.VERSION_CODES\nimport android.os.Bundle\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport android.widget.TextView\nimport androidx.core.content.ContextCompat\nimport androidx.fragment.app.Fragment\nimport androidx.preference.PreferenceManager\nimport androidx.recyclerview.widget.LinearLayoutManager\nimport androidx.recyclerview.widget.RecyclerView\nimport com.gustavoas.noti.ProgressBarAppsAdapter\nimport com.gustavoas.noti.ProgressBarAppsRepository\nimport com.gustavoas.noti.R\nimport com.gustavoas.noti.Utils.getApplicationInfo\nimport com.gustavoas.noti.Utils.getApplicationName\nimport com.gustavoas.noti.Utils.getColorForApp\nimport com.gustavoas.noti.model.ProgressBarApp\nimport eltos.simpledialogfragment.SimpleDialog\nimport eltos.simpledialogfragment.SimpleDialog.OnDialogResultListener.BUTTON_NEUTRAL\nimport eltos.simpledialogfragment.SimpleDialog.OnDialogResultListener.BUTTON_POSITIVE\nimport eltos.simpledialogfragment.color.SimpleColorDialog\n\nclass PerAppSettingsFragment : Fragment(), SimpleDialog.OnDialogResultListener {\n    private val apps = ArrayList<ProgressBarApp>()\n    private val appsRepository by lazy { ProgressBarAppsRepository(requireContext()) }\n    private val recyclerView by lazy { requireView().findViewById<RecyclerView>(R.id.apps_recycler_view) }\n\n    override fun onCreateView(\n        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?\n    ): View = inflater.inflate(R.layout.fragment_per_app_settings, container, false)\n\n    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {\n        super.onViewCreated(view, savedInstanceState)\n\n        updateAppsFromDatabase()\n\n        recyclerView.layoutManager = LinearLayoutManager(requireContext())\n        recyclerView.adapter =\n            ProgressBarAppsAdapter(this, requireContext(), apps, appsRepository)\n\n        updateRecyclerViewVisibility()\n    }\n\n    override fun onResult(dialogTag: String, which: Int, extras: Bundle): Boolean {\n        val progressBarApp = apps[dialogTag.toInt()].copy()\n\n        val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(requireContext())\n        val defaultColor = sharedPrefs.getInt(\n            \"progressBarColor\", ContextCompat.getColor(requireContext(), R.color.purple_500)\n        )\n        val existingSelectedColor = getColorForApp(requireContext(), progressBarApp)\n        val useMaterialYou = sharedPrefs.getBoolean(\"usingMaterialYouColor\", false)\n\n        val color = extras.getInt(SimpleColorDialog.COLOR)\n        val selectedPosition = extras.getInt(SimpleColorDialog.SELECTED_SINGLE_POSITION)\n\n        if (which == BUTTON_NEUTRAL || (color == defaultColor && (!useMaterialYou || selectedPosition != 19))) {\n            progressBarApp.useDefaultColor = true\n            progressBarApp.useMaterialYouColor = false\n            progressBarApp.color = null\n        } else if (which == BUTTON_POSITIVE) {\n            if (\n                Build.VERSION.SDK_INT >= VERSION_CODES.S && selectedPosition != 19 &&\n                color == ContextCompat.getColor(requireContext(), R.color.system_accent_color)\n            ) {\n                progressBarApp.useDefaultColor = false\n                progressBarApp.useMaterialYouColor = true\n                progressBarApp.color = null\n            } else if (color != existingSelectedColor || (progressBarApp.useMaterialYouColor && selectedPosition == 19)) {\n                progressBarApp.useDefaultColor = false\n                progressBarApp.useMaterialYouColor = false\n                progressBarApp.color = color\n            }\n        }\n\n        if (apps[dialogTag.toInt()] != progressBarApp) {\n            apps[dialogTag.toInt()] = progressBarApp\n            appsRepository.updateApp(apps[dialogTag.toInt()])\n            recyclerView.adapter?.notifyItemChanged(dialogTag.toInt() + 1)\n        }\n\n        return true\n    }\n\n    private fun updateAppsFromDatabase() {\n        apps.clear()\n        apps.addAll(appsRepository.getAll())\n        removeUnavailableApps()\n        alphabetizeApps()\n    }\n\n    private fun removeUnavailableApps() {\n        apps.removeAll { app ->\n            getApplicationInfo(requireContext(), app.packageName)?.enabled != true\n        }\n    }\n\n    private fun alphabetizeApps() {\n        apps.sortBy { app ->\n            (getApplicationName(requireContext(), app.packageName) ?: app.packageName).lowercase()\n        }\n    }\n\n    private fun updateRecyclerViewVisibility() {\n        val emptyRecyclerView = requireView().findViewById<TextView>(R.id.empty_view)\n        if (apps.isEmpty()) {\n            recyclerView.visibility = View.GONE\n            emptyRecyclerView.visibility = View.VISIBLE\n        } else {\n            recyclerView.visibility = View.VISIBLE\n            emptyRecyclerView.visibility = View.GONE\n        }\n    }\n\n    override fun onDestroy() {\n        super.onDestroy()\n\n        appsRepository.close()\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/fragments/SettingsFragment.kt",
    "content": "package com.gustavoas.noti.fragments\n\nimport android.content.ComponentName\nimport android.content.Intent\nimport android.content.SharedPreferences\nimport android.content.res.Configuration.ORIENTATION_LANDSCAPE\nimport android.os.Build\nimport android.os.Bundle\nimport android.provider.Settings\nimport android.widget.Toast\nimport androidx.appcompat.app.AlertDialog\nimport androidx.core.content.ContextCompat\nimport androidx.core.content.edit\nimport androidx.core.net.toUri\nimport androidx.preference.Preference\nimport androidx.preference.PreferenceCategory\nimport androidx.preference.PreferenceManager\nimport androidx.preference.children\nimport com.gustavoas.noti.R\nimport com.gustavoas.noti.Utils.hasAccessibilityPermission\nimport com.gustavoas.noti.Utils.hasNotificationListenerPermission\nimport com.gustavoas.noti.Utils.hasSystemAlertWindowPermission\nimport com.gustavoas.noti.Utils.showColorDialog\nimport com.gustavoas.noti.preferences.BannerPreference\nimport com.gustavoas.noti.services.NotificationListenerService\nimport com.kizitonwose.colorpreferencecompat.ColorPreferenceCompat\nimport eltos.simpledialogfragment.SimpleDialog\nimport eltos.simpledialogfragment.SimpleDialog.OnDialogResultListener.BUTTON_POSITIVE\nimport eltos.simpledialogfragment.color.SimpleColorDialog\n\nclass SettingsFragment : BasePreferenceFragment(),\n    SharedPreferences.OnSharedPreferenceChangeListener, SimpleDialog.OnDialogResultListener {\n    override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {\n        if (key == \"progressBarStyle\" || key == \"progressBarStylePortrait\" || key == \"progressBarStyleLandscape\" || key == \"advancedProgressBarStyle\") {\n            if (key != \"advancedProgressBarStyle\" && sharedPreferences?.getString(\n                    key, \"linear\"\n                ) == \"circular\" && sharedPreferences.getBoolean(\"showHolePunchInstruction\", true)\n            ) {\n                Toast.makeText(\n                    requireContext(), getString(R.string.holePunchInstruction), Toast.LENGTH_LONG\n                ).show()\n                sharedPreferences.edit { putBoolean(\"showHolePunchInstruction\", false) }\n            }\n            updateProgressBarStyle()\n        } else if (key == \"progressBarColor\") {\n            updateColorPreferenceSummary()\n        } else if (key == \"useNotificationColor\") {\n            updateColorPreferenceState()\n        }\n    }\n\n    private val myApps = listOf(\n        Triple(\"CalenTile\", \"https://play.google.com/store/apps/details?id=com.gustavoas.calendarqst\", R.drawable.ic_calentile),\n        Triple(\"Sum Up\", \"https://play.google.com/store/apps/details?id=com.gustavoas.sumup\", R.drawable.ic_sumup),\n    )\n\n    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {\n        setPreferencesFromResource(R.xml.preferences, rootKey)\n\n        updateSetupVisibility()\n\n        updateProgressBarStyle()\n\n        updatePermissionDependentPreferences()\n\n        updateColorPreferenceState()\n\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())\n\n        sharedPreferences.registerOnSharedPreferenceChangeListener(this)\n\n        val appIndex = myApps.indices.random()\n        val appPromo = findPreference<Preference>(\"selfPromo\")\n        appPromo?.title = getString(R.string.prefsCalentileTitle, myApps[appIndex].first)\n        appPromo?.intent = Intent(Intent.ACTION_VIEW, myApps[appIndex].second.toUri())\n        appPromo?.icon = ContextCompat.getDrawable(requireContext(), myApps[appIndex].third)\n\n        if (!sharedPreferences.contains(\"batteryOptimizations\")) {\n            sharedPreferences.edit {\n                putBoolean(\n                    \"batteryOptimizations\",\n                    Build.BRAND.lowercase() != \"google\"\n                )\n            }\n        }\n\n        val batterOptimizationsBanner = findPreference<BannerPreference>(\"batteryOptimizations\")\n        if (!sharedPreferences.getBoolean(\"batteryOptimizations\", true)) {\n            batterOptimizationsBanner?.isVisible = false\n        }\n\n        findPreference<Preference>(\"accessibilityPermission\")?.setOnPreferenceClickListener {\n            showAccessibilityDialog()\n            true\n        }\n\n        findPreference<Preference>(\"progressBarColor\")?.setOnPreferenceClickListener {\n            val color = PreferenceManager.getDefaultSharedPreferences(requireContext()).getInt(\n                    \"progressBarColor\", ContextCompat.getColor(requireContext(), R.color.purple_500)\n                )\n            showColorDialog(this, color, \"colorPicker\")\n            true\n        }\n\n        findPreference<Preference>(\"notificationPermission\")?.setOnPreferenceClickListener {\n            requestNotificationAccess()\n            true\n        }\n    }\n\n    override fun onStart() {\n        super.onStart()\n\n        updateSetupVisibility()\n\n        updateColorPreferenceSummary()\n\n        updatePermissionDependentPreferences()\n    }\n\n    override fun onDestroy() {\n        super.onDestroy()\n\n        PreferenceManager.getDefaultSharedPreferences(requireContext())\n            .unregisterOnSharedPreferenceChangeListener(this)\n    }\n\n    override fun onResult(dialogTag: String, which: Int, extras: Bundle): Boolean {\n        if (which == BUTTON_POSITIVE) {\n            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {\n                PreferenceManager.getDefaultSharedPreferences(requireContext()).edit {\n                    putBoolean(\n                        \"usingMaterialYouColor\",\n                        extras.getInt(SimpleColorDialog.COLOR) == ContextCompat.getColor(\n                            requireContext(), R.color.system_accent_color\n                        ) && extras.getInt(SimpleColorDialog.SELECTED_SINGLE_POSITION) != 19\n                    )\n                }\n            }\n\n            findPreference<ColorPreferenceCompat>(\"progressBarColor\")?.value = extras.getInt(\n                SimpleColorDialog.COLOR,\n                ContextCompat.getColor(requireContext(), R.color.purple_500)\n            )\n        }\n        return true\n    }\n\n    private fun updateColorPreferenceState() {\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())\n        val colorPreference = findPreference<ColorPreferenceCompat>(\"progressBarColor\")\n        val useNotificationColor = sharedPreferences.getBoolean(\"useNotificationColor\", false)\n\n        colorPreference?.isEnabled = !useNotificationColor\n        colorPreference?.icon?.alpha = if (useNotificationColor) 80 else 255\n    }\n\n    private fun updateColorPreferenceSummary() {\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())\n        val color = sharedPreferences.getInt(\n            \"progressBarColor\", ContextCompat.getColor(requireContext(), R.color.purple_500)\n        )\n        val colorPosition = resources.getIntArray(R.array.colorsArrayValues).indexOf(color)\n        var colorName = resources.getStringArray(R.array.colorsArray).getOrNull(colorPosition)\n        val useMaterialYou = sharedPreferences.getBoolean(\"usingMaterialYouColor\", false)\n\n        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && colorName == null && useMaterialYou) {\n            sharedPreferences.edit {\n                putInt(\n                    \"progressBarColor\", ContextCompat.getColor(\n                        requireContext(), R.color.system_accent_color\n                    )\n                )\n            }\n\n            findPreference<ColorPreferenceCompat>(\"progressBarColor\")?.value =\n                ContextCompat.getColor(requireContext(), R.color.system_accent_color)\n            colorName = resources.getString(R.string.colorMaterialYou)\n        }\n\n        findPreference<Preference>(\"progressBarColor\")?.summary =\n            colorName ?: \"#${Integer.toHexString(color).drop(2).uppercase()}\"\n    }\n\n    private fun updateProgressBarStyle() {\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext())\n        val advancedStyleOptions = sharedPreferences.getBoolean(\"advancedProgressBarStyle\", false)\n        val progressBarStyle = sharedPreferences.getString(\"progressBarStyle\", \"linear\")\n        val progressBarStylePortrait =\n            sharedPreferences.getString(\"progressBarStylePortrait\", \"linear\")\n        val progressBarStyleLandscape =\n            sharedPreferences.getString(\"progressBarStyleLandscape\", \"linear\")\n\n        val anyLinear =\n            (!advancedStyleOptions && progressBarStyle == \"linear\") || (advancedStyleOptions && (progressBarStylePortrait == \"linear\" || progressBarStyleLandscape == \"linear\"))\n        val anyCircular =\n            (!advancedStyleOptions && progressBarStyle == \"circular\") || (advancedStyleOptions && (progressBarStylePortrait == \"circular\" || progressBarStyleLandscape == \"circular\"))\n\n        findPreference<Preference>(\"CircularBarFragment\")?.isVisible = anyCircular\n        findPreference<Preference>(\"LinearBarFragment\")?.isVisible = anyLinear\n\n        findPreference<Preference>(\"progressBarStyle\")?.summary = if (advancedStyleOptions) {\n            if (resources.configuration.orientation == ORIENTATION_LANDSCAPE) {\n                resources.getStringArray(R.array.progressBarStyle).getOrNull(\n                    resources.getStringArray(R.array.progressBarStyleValues)\n                        .indexOf(progressBarStyleLandscape)\n                )\n            } else {\n                resources.getStringArray(R.array.progressBarStyle).getOrNull(\n                    resources.getStringArray(R.array.progressBarStyleValues)\n                        .indexOf(progressBarStylePortrait)\n                )\n            }\n        } else {\n            resources.getStringArray(R.array.progressBarStyle).getOrNull(\n                resources.getStringArray(R.array.progressBarStyleValues).indexOf(progressBarStyle)\n            )\n        }\n    }\n\n    private fun updatePermissionDependentPreferences() {\n        findPreference<Preference>(\"showInLockScreen\")?.isVisible =\n            (hasAccessibilityPermission(requireContext()) || Build.VERSION.SDK_INT < Build.VERSION_CODES.M)\n        findPreference<Preference>(\"disableInFullScreen\")?.isVisible =\n            hasSystemAlertWindowPermission(requireContext())\n    }\n\n    private fun updateSetupVisibility() {\n        val hasAccessibilityPermission = hasAccessibilityPermission(requireContext())\n        val hasNotificationListenerPermission = hasNotificationListenerPermission(requireContext())\n        val hasSystemAlertWindowPermission = hasSystemAlertWindowPermission(requireContext())\n\n        findPreference<Preference>(\"accessibilityPermission\")?.isVisible =\n            !hasAccessibilityPermission\n        findPreference<Preference>(\"notificationPermission\")?.isVisible =\n            !hasNotificationListenerPermission\n        findPreference<Preference>(\"systemAlertWindowPermission\")?.isVisible =\n            !hasSystemAlertWindowPermission\n        findPreference<PreferenceCategory>(\"setup\")?.isVisible = findPreference<PreferenceCategory>(\"setup\")?.children?.any { it.isVisible } == true\n    }\n\n    private fun showAccessibilityDialog() {\n        AlertDialog.Builder(requireContext())\n            .setTitle(R.string.prefsAccessibilityPermissionTitle)\n            .setMessage(R.string.prefsAccessibilityPermissionSummary)\n            .setPositiveButton(android.R.string.ok) { _, _ ->\n                val intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)\n                startActivity(intent)\n            }\n            .setNegativeButton(android.R.string.cancel, null)\n            .show()\n    }\n\n    private fun requestNotificationAccess() {\n        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {\n            val intent = Intent(Settings.ACTION_NOTIFICATION_LISTENER_DETAIL_SETTINGS)\n            intent.putExtra(\n                Settings.EXTRA_NOTIFICATION_LISTENER_COMPONENT_NAME, ComponentName(\n                requireContext(), NotificationListenerService::class.java\n            ).flattenToString()\n            )\n            try {\n                startActivity(intent)\n            } catch (e: Exception) {\n                startActivity(Intent(\"android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS\"))\n            }\n        } else {\n            startActivity(Intent(\"android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS\"))\n        }\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/model/DeviceConfiguration.kt",
    "content": "package com.gustavoas.noti.model\n\ndata class DeviceConfiguration (\n    var configuration: String? = null,\n    var deviceWidth: String? = null,\n    var deviceHeight: String? = null,\n    var size: String? = null,\n    var marginTop: String? = null,\n    var topOffset: String? = null,\n    var horizontalOffset: String? = null,\n)"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/model/ProgressBarApp.kt",
    "content": "package com.gustavoas.noti.model\n\nimport android.os.Parcelable\nimport kotlinx.parcelize.Parcelize\n\n@Parcelize\ndata class ProgressBarApp(\n    val packageName: String,\n    var showProgressBar: Boolean = true,\n    var color: Int? = null,\n    var useDefaultColor: Boolean = true,\n    var useMaterialYouColor: Boolean = false\n) : Parcelable"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/model/ProgressNotification.kt",
    "content": "package com.gustavoas.noti.model\n\nimport android.os.Parcelable\nimport kotlinx.parcelize.Parcelize\n\n@Parcelize\ndata class ProgressNotification (\n    val progressBarApp: ProgressBarApp,\n    val progress: Int,\n    val priority: Int\n) : Parcelable"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/notifications/DownloadProgressBar.kt",
    "content": "package com.gustavoas.noti.notifications\n\nimport android.app.Notification\nimport android.content.Context\nimport android.service.notification.StatusBarNotification\nimport androidx.preference.PreferenceManager\nimport com.gustavoas.noti.ProgressBarAppsRepository\n\nclass DownloadProgressBar(\n    ctx: Context,\n    sbn: StatusBarNotification,\n    appsRepository: ProgressBarAppsRepository\n): ProgressBarNotification(ctx, sbn, appsRepository) {\n    override val priorityLevel: Int = 2\n\n    init {\n        updateNotification(sbn)\n    }\n\n    override fun updateNotification(sbn: StatusBarNotification) {\n        super.updateNotification(sbn)\n\n        val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(ctx)\n        val enabledForDownloads = sharedPrefs.getBoolean(\"showForDownloads\", true)\n\n        if (!enabledForDownloads) {\n            cancel()\n            return\n        }\n\n        val (progress, progressMax) = getProgressBarValues(sbn)\n\n        if (progress == 0 && progressMax == 0) {\n            cancel()\n            return\n        }\n\n        sendProgressToAccessibilityService(progress, progressMax)\n    }\n\n    private fun getProgressBarValues(sbn: StatusBarNotification): Pair<Int, Int> {\n        val progress = sbn.notification.extras.getInt(Notification.EXTRA_PROGRESS)\n        val progressMax = sbn.notification.extras.getInt(Notification.EXTRA_PROGRESS_MAX)\n        return Pair(progress, progressMax)\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/notifications/GoogleTimerProgressBar.kt",
    "content": "package com.gustavoas.noti.notifications\n\nimport android.content.Context\nimport android.service.notification.StatusBarNotification\nimport com.gustavoas.noti.ProgressBarAppsRepository\n\nclass GoogleTimerProgressBar(\n    ctx: Context,\n    sbn: StatusBarNotification,\n    appsRepository: ProgressBarAppsRepository\n): TimedProgressBar(ctx, sbn, appsRepository) {\n    override val priorityLevel: Int = 1\n\n    init {\n        updateNotification(sbn)\n    }\n\n    override fun updateNotification(sbn: StatusBarNotification) {\n        super.updateNotification(sbn)\n\n        val sortKey = sbn.notification.sortKey\n\n        if (sortKey == null || !sortKey.contains(\"RUNNING\")) {\n            cancel()\n            return\n        }\n\n        val splitKey = sortKey.split(\"|\")\n        val timeLeft = splitKey.firstOrNull { it.contains(\"⏳\") } ?: return\n        val totalTime = splitKey.firstOrNull { it.contains(\"Σ\") } ?: return\n        val timeLeftMillis = parseTimeStringToMillis(timeLeft.substringAfter(\"⏳\"))\n        val totalTimeMillis = parseTimeStringToMillis(totalTime.substringAfter(\"Σ\"))\n\n        startUpdatingTimedPosition(timeLeftMillis, totalTimeMillis, -1f)\n    }\n\n    private fun parseTimeStringToMillis(time: String): Long {\n        val timeSplit = time.trim().split(\":\")\n        val hours = timeSplit.getOrNull(0)?.toLongOrNull() ?: 0\n        val minutes = timeSplit.getOrNull(1)?.toLongOrNull() ?: 0\n        val seconds = timeSplit.getOrNull(2)?.toLongOrNull() ?: 0\n        return (hours * 3600 + minutes * 60 + seconds) * 1000\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/notifications/MediaProgressBar.kt",
    "content": "package com.gustavoas.noti.notifications\n\nimport android.content.Context\nimport android.media.MediaMetadata\nimport android.media.session.MediaController\nimport android.media.session.MediaSession\nimport android.media.session.PlaybackState\nimport android.service.notification.StatusBarNotification\nimport androidx.core.app.NotificationCompat\nimport androidx.preference.PreferenceManager\nimport com.gustavoas.noti.ProgressBarAppsRepository\n\nclass MediaProgressBar(\n    ctx: Context,\n    sbn: StatusBarNotification,\n    appsRepository: ProgressBarAppsRepository\n): TimedProgressBar(ctx, sbn, appsRepository) {\n    override val priorityLevel: Int = 0\n\n    private var mediaController: MediaController? = null\n    private var mediaCallback: MediaController.Callback? = null\n\n    init {\n        updateNotification(sbn)\n    }\n\n    override fun updateNotification(sbn: StatusBarNotification) {\n        super.updateNotification(sbn)\n\n        val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(ctx)\n        val enabledForMedia = sharedPrefs.getBoolean(\"showForMedia\", true)\n\n        if (!enabledForMedia) {\n            cancel()\n            return\n        }\n\n        val mediaSession =\n            sbn.notification.extras.get(NotificationCompat.EXTRA_MEDIA_SESSION) as? MediaSession.Token\n\n        if (mediaSession == null) {\n            cancel()\n            return\n        }\n\n        val newMediaController = MediaController(ctx, mediaSession)\n        if (mediaController == null) {\n            createProgressBarFromMedia(newMediaController)\n        }\n    }\n\n    private fun createProgressBarFromMedia(newMediaController: MediaController) {\n        mediaController = newMediaController\n\n        if (mediaController?.playbackState?.state == PlaybackState.STATE_PLAYING) {\n            startTrackingMediaPosition()\n        }\n\n        mediaCallback = object : MediaController.Callback() {\n            override fun onPlaybackStateChanged(state: PlaybackState?) {\n                super.onPlaybackStateChanged(state)\n\n                when (state?.state) {\n                    PlaybackState.STATE_PLAYING -> {\n                        startTrackingMediaPosition()\n                    }\n                    PlaybackState.STATE_NONE, PlaybackState.STATE_STOPPED,\n                    PlaybackState.STATE_PAUSED, PlaybackState.STATE_ERROR -> {\n                        cancel()\n                    }\n                    else -> {\n                        stopUpdatingTimedPosition()\n                    }\n                }\n            }\n        }\n\n        mediaController?.registerCallback(mediaCallback as MediaController.Callback)\n    }\n\n    private fun startTrackingMediaPosition() {\n        val artwork = mediaController?.metadata?.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART)\n        artwork?.let {\n            getColorFromBitmap(it)?.let { color ->\n                notificationColor = color\n            }\n        }\n\n        startUpdatingTimedPosition(\n            mediaController?.playbackState?.position ?: 0,\n            mediaController?.metadata?.getLong(MediaMetadata.METADATA_KEY_DURATION) ?: 0,\n            mediaController?.playbackState?.playbackSpeed ?: 1f\n        )\n    }\n\n    override fun cancel() {\n        super.cancel()\n\n        if (mediaCallback != null) {\n            mediaController?.unregisterCallback(mediaCallback as MediaController.Callback)\n            mediaCallback = null\n        }\n        mediaController = null\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/notifications/PercentageProgressBar.kt",
    "content": "package com.gustavoas.noti.notifications\n\nimport android.app.Notification\nimport android.content.Context\nimport android.service.notification.StatusBarNotification\nimport androidx.preference.PreferenceManager\nimport com.gustavoas.noti.ProgressBarAppsRepository\nimport kotlin.math.roundToInt\n\nclass PercentageProgressBar(\n    ctx: Context,\n    sbn: StatusBarNotification,\n    appsRepository: ProgressBarAppsRepository\n): ProgressBarNotification(ctx, sbn, appsRepository) {\n    override val priorityLevel: Int = 2\n\n    private var initialValue: Int? = null\n\n    init {\n        updateNotification(sbn)\n    }\n\n    override fun updateNotification(sbn: StatusBarNotification) {\n        super.updateNotification(sbn)\n\n        val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(ctx)\n        val enabledForDownloads = sharedPrefs.getBoolean(\"showForDownloads\", true)\n\n        if (!enabledForDownloads) {\n            cancel()\n            return\n        }\n\n        val percentageProgress = getProgressFromPercentage(sbn)\n\n        if (percentageProgress == 0) {\n            cancel()\n            return\n        }\n\n        if (initialValue != null && initialValue != percentageProgress) {\n            sendProgressToAccessibilityService(percentageProgress, 100)\n        }\n\n        if (initialValue == null) {\n            initialValue = percentageProgress\n        }\n    }\n\n    private fun getProgressFromPercentage(sbn: StatusBarNotification): Int {\n        val extras = sbn.notification.extras\n        val title = extras.getCharSequence(Notification.EXTRA_TITLE)?.toString() ?: \"\"\n        val text = extras.getCharSequence(Notification.EXTRA_TEXT)?.toString() ?: \"\"\n        val subText = extras.getCharSequence(Notification.EXTRA_SUB_TEXT)?.toString() ?: \"\"\n        val bigText = extras.getCharSequence(Notification.EXTRA_BIG_TEXT)?.toString() ?: \"\"\n        val textLines = extras.getCharSequenceArray(Notification.EXTRA_TEXT_LINES)\n\n        val percentageProgress = title.substringBefore(\"%\").toFloatOrNull() ?:\n        text.substringBefore(\"%\").toFloatOrNull() ?:\n        subText.substringBefore(\"%\").toFloatOrNull() ?:\n        bigText.split(\"\\n\").firstOrNull { it.contains(\"%\") }?.toString()\n            ?.substringBefore(\"%\")?.toFloatOrNull() ?:\n        textLines?.firstOrNull { it.contains(\"%\") }?.toString()\n            ?.substringBefore(\"%\")?.toFloatOrNull()\n\n        if (percentageProgress == null || percentageProgress.isNaN()) {\n            return 0\n        }\n\n        return percentageProgress.roundToInt()\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/notifications/ProgressBarNotification.kt",
    "content": "package com.gustavoas.noti.notifications\n\nimport android.app.Notification\nimport android.content.Context\nimport android.content.Intent\nimport android.graphics.Bitmap\nimport android.graphics.Canvas\nimport android.graphics.drawable.BitmapDrawable\nimport android.graphics.drawable.Drawable\nimport android.os.Handler\nimport android.os.Looper\nimport android.service.notification.StatusBarNotification\nimport androidx.core.graphics.createBitmap\nimport androidx.palette.graphics.Palette\nimport androidx.preference.PreferenceManager\nimport com.gustavoas.noti.ProgressBarAppsRepository\nimport com.gustavoas.noti.R\nimport com.gustavoas.noti.Utils.getApplicationIcon\nimport com.gustavoas.noti.model.ProgressBarApp\nimport com.gustavoas.noti.model.ProgressNotification\nimport com.gustavoas.noti.services.AccessibilityService\nimport kotlin.math.roundToInt\n\nabstract class ProgressBarNotification(\n    protected val ctx: Context,\n    private var sbn: StatusBarNotification,\n    private val appsRepository: ProgressBarAppsRepository\n) {\n    protected abstract val priorityLevel: Int\n\n    protected var notificationColor = sbn.notification.color\n\n    private val removalHandler = Handler(Looper.getMainLooper())\n\n    open fun updateNotification(sbn: StatusBarNotification) {\n        this.sbn = sbn\n    }\n\n    open fun cancel() {\n        removalHandler.removeCallbacksAndMessages(null)\n        sendRemovalRequestToAccessibilityService()\n    }\n\n    protected fun sendProgressToAccessibilityService(\n        progress: Int = 0,\n        progressMax: Int = 0\n    ) {\n        if (progressMax <= 0 || progress !in 0..progressMax) {\n            return\n        }\n\n        val appInDatabase = getOrCreateAppInDatabase()\n        updateProgressBarColor(appInDatabase)\n        if (!appInDatabase.showProgressBar) {\n            cancel()\n            return\n        }\n\n        val progressBarMax = ctx.resources.getInteger(R.integer.progress_bar_max)\n        val progressNormalized = if (progress == 0) {\n            0\n        } else {\n            (progress.toFloat() / progressMax.toFloat() * progressBarMax).roundToInt()\n        }\n\n        val intent = Intent(ctx, AccessibilityService::class.java)\n        intent.putExtra(\"id\", sbn.key ?: \"\")\n        intent.putExtra(\n            \"progressNotification\",\n            ProgressNotification(\n                appInDatabase,\n                progressNormalized,\n                priorityLevel\n            )\n        )\n        ctx.startService(intent)\n\n        removalHandler.removeCallbacksAndMessages(null)\n\n        removalHandler.postDelayed({\n            sendRemovalRequestToAccessibilityService()\n        }, 10000)\n    }\n\n    private fun sendRemovalRequestToAccessibilityService() {\n        val intent = Intent(ctx, AccessibilityService::class.java)\n        intent.putExtra(\"id\", sbn.key ?: \"\")\n        intent.putExtra(\"removal\", true)\n        ctx.startService(intent)\n    }\n\n    private fun updateProgressBarColor(progressBarApp: ProgressBarApp) {\n        val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(ctx)\n        val useNotificationColor = sharedPrefs.getBoolean(\"useNotificationColor\", false)\n\n        if (!progressBarApp.useDefaultColor || !useNotificationColor) {\n            return\n        }\n\n        if (notificationColor == Notification.COLOR_DEFAULT) {\n            val appIcon = getApplicationIcon(ctx, sbn.packageName)\n\n            appIcon?.let {\n                getColorFromBitmap(drawableToBitmap(it))?.let { color ->\n                    notificationColor = color\n                }\n            }\n        }\n\n        if (notificationColor != Notification.COLOR_DEFAULT && progressBarApp.color != notificationColor) {\n            progressBarApp.color = notificationColor\n            appsRepository.updateApp(progressBarApp)\n        }\n    }\n\n    protected fun getColorFromBitmap(bitmap: Bitmap): Int? {\n        val palette = Palette.from(bitmap).generate()\n        val swatch = palette.lightMutedSwatch\n            ?: palette.vibrantSwatch\n            ?: palette.dominantSwatch\n\n        return swatch?.rgb\n    }\n\n    private fun drawableToBitmap(drawable: Drawable): Bitmap {\n        if (drawable is BitmapDrawable) return drawable.bitmap\n\n        val width = drawable.intrinsicWidth.takeIf { it > 0 } ?: 1\n        val height = drawable.intrinsicHeight.takeIf { it > 0 } ?: 1\n        val bitmap = createBitmap(width, height)\n        val canvas = Canvas(bitmap)\n        drawable.setBounds(0, 0, canvas.width, canvas.height)\n        drawable.draw(canvas)\n\n        return bitmap\n    }\n\n    private fun getOrCreateAppInDatabase(): ProgressBarApp {\n        return appsRepository.let {\n            it.getApp(sbn.packageName ?: \"\") ?: it.addApp(ProgressBarApp(sbn.packageName, true))\n        }\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/notifications/TimedProgressBar.kt",
    "content": "package com.gustavoas.noti.notifications\n\nimport android.content.Context\nimport android.os.Handler\nimport android.os.Looper\nimport android.service.notification.StatusBarNotification\nimport com.gustavoas.noti.ProgressBarAppsRepository\nimport kotlin.math.abs\n\nabstract class TimedProgressBar(\n    ctx: Context,\n    sbn: StatusBarNotification,\n    appsRepository: ProgressBarAppsRepository\n): ProgressBarNotification(ctx, sbn, appsRepository) {\n    private val updateInterval = 1000\n\n    private val handler = Handler(Looper.getMainLooper())\n\n    private var updatesRunnable: Runnable? = null\n\n    protected fun startUpdatingTimedPosition(\n        initialPosition: Long,\n        duration: Long,\n        speed: Float\n    ) {\n        stopUpdatingTimedPosition()\n\n        val initialTime = System.currentTimeMillis()\n        updatesRunnable = object : Runnable {\n            override fun run() {\n                val currTime = System.currentTimeMillis()\n                var currProgress = (initialPosition + (currTime - initialTime) * speed).toLong()\n\n                if (currProgress !in 0..duration) {\n                    return\n                }\n\n                val updateStep = abs(updateInterval * speed).toInt()\n                if (duration - currProgress < updateStep) {\n                    currProgress = duration\n                } else if (currProgress < updateStep) {\n                    currProgress = 0\n                }\n\n                sendProgressToAccessibilityService(\n                    currProgress.toInt(),\n                    duration.toInt(),\n                )\n\n                updatesRunnable?.let { handler.postDelayed(it, updateInterval.toLong()) }\n            }\n        }\n\n        updatesRunnable?.let { handler.post(it) }\n    }\n\n    protected fun stopUpdatingTimedPosition() {\n        handler.removeCallbacksAndMessages(null)\n        updatesRunnable = null\n    }\n\n    override fun cancel() {\n        super.cancel()\n\n        stopUpdatingTimedPosition()\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/preferences/BannerPreference.kt",
    "content": "package com.gustavoas.noti.preferences\n\nimport android.content.Context\nimport android.util.AttributeSet\nimport android.widget.Button\nimport android.widget.ImageButton\nimport androidx.preference.Preference\nimport androidx.preference.PreferenceViewHolder\nimport com.gustavoas.noti.R\n\nclass BannerPreference(context: Context, attrs: AttributeSet): Preference(context, attrs) {\n\n    var onBtnClick = { intent?.let { context.startActivity(intent) } }\n\n    init {\n        layoutResource = R.layout.banner_preference\n        isSelectable = false\n    }\n\n    override fun onBindViewHolder(holder: PreferenceViewHolder) {\n        super.onBindViewHolder(holder)\n\n        val persistedValue = getPersistedBoolean(true)\n        val preferenceHolder = holder.itemView\n\n        if (!persistedValue) {\n            this.isVisible = false\n            return\n        }\n\n        val btn = preferenceHolder.findViewById<Button>(R.id.bannerBtn)\n        btn.text = summary\n\n        btn.setOnClickListener {\n            onBtnClick()\n        }\n\n        val closeBtn = preferenceHolder.findViewById<ImageButton>(R.id.closeBtn)\n\n        closeBtn.setOnClickListener {\n            this.isVisible = false\n            persistBoolean(false)\n        }\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/preferences/BarStylesListPreference.kt",
    "content": "package com.gustavoas.noti.preferences\n\nimport android.content.Context\nimport android.util.AttributeSet\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.widget.ArrayAdapter\nimport android.widget.ListView\nimport androidx.appcompat.app.AlertDialog\nimport androidx.preference.ListPreference\nimport com.gustavoas.noti.R\n\nclass BarStylesListPreference(context: Context, attrs: AttributeSet?) : ListPreference(context, attrs) {\n\n    override fun onClick() {\n        val sharedPreferences = preferenceManager.sharedPreferences ?: return\n\n        if (!sharedPreferences.getBoolean(\"advancedProgressBarStyle\", false)) {\n            AlertDialog.Builder(context)\n                .setSingleChoiceItems(entries, getValueIndex()) { dialog, index ->\n                    if (callChangeListener(entryValues[index].toString())) {\n                        setValueIndex(index)\n                    }\n                    dialog.dismiss()\n                }.setNeutralButton(context.resources.getString(R.string.advancedOptions)) { _, _ ->\n                    showAdvancedDialog()\n                }.setTitle(title).show()\n\n        } else {\n            showAdvancedDialog()\n        }\n    }\n\n    private fun showAdvancedDialog() {\n        val layoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater\n        val dialogView = layoutInflater.inflate(R.layout.advanced_style_dialog, null)\n        val portraitStyleListview = dialogView.findViewById<ListView>(R.id.portraitStyleOptions)\n        val landscapeStyleListview = dialogView.findViewById<ListView>(R.id.landscapeStyleOptions)\n\n        val options = context.resources.getStringArray(R.array.progressBarStyle)\n        val adapter = ArrayAdapter(context, androidx.appcompat.R.layout.select_dialog_singlechoice_material, options)\n        portraitStyleListview.adapter = adapter\n        landscapeStyleListview.adapter = adapter\n\n        var viewHeight = 0\n\n        for (i in 0 until adapter.count) {\n            val view = adapter.getView(i, null, portraitStyleListview)\n            view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED)\n            viewHeight += view.measuredHeight\n        }\n\n        portraitStyleListview.layoutParams.height = viewHeight\n        landscapeStyleListview.layoutParams.height = viewHeight\n\n        val sharedPreferences = preferenceManager.sharedPreferences ?: return\n\n        if (!sharedPreferences.contains(\"progressBarStylePortrait\") && !sharedPreferences.contains(\"progressBarStyleLandscape\")) {\n            sharedPreferences.edit()\n                .putString(\n                    \"progressBarStylePortrait\",\n                    sharedPreferences.getString(\"progressBarStyle\", \"linear\")\n                )\n                .putString(\n                    \"progressBarStyleLandscape\",\n                    sharedPreferences.getString(\"progressBarStyle\", \"linear\")\n                )\n                .apply()\n        }\n\n        portraitStyleListview.setItemChecked(\n            context.resources.getStringArray(R.array.progressBarStyleValues).indexOf(\n                sharedPreferences.getString(\"progressBarStylePortrait\", \"linear\")\n            ), true\n        )\n\n        landscapeStyleListview.setItemChecked(\n            context.resources.getStringArray(R.array.progressBarStyleValues).indexOf(\n                sharedPreferences.getString(\"progressBarStyleLandscape\", \"linear\")\n            ), true\n        )\n\n        AlertDialog.Builder(context)\n            .setView(dialogView)\n            .setPositiveButton(android.R.string.ok) { _, _ ->\n                sharedPreferences.edit()?.putBoolean(\"advancedProgressBarStyle\", true)?.apply()\n                sharedPreferences.edit()\n                    .putString(\n                        \"progressBarStylePortrait\",\n                        context.resources.getStringArray(R.array.progressBarStyleValues)[portraitStyleListview.checkedItemPosition]\n                    )\n                    .putString(\n                        \"progressBarStyleLandscape\",\n                        context.resources.getStringArray(R.array.progressBarStyleValues)[landscapeStyleListview.checkedItemPosition]\n                    )\n                    .apply()\n            }\n            .setNegativeButton(android.R.string.cancel, null)\n            .setNeutralButton(context.resources.getString(R.string.reset)) { _, _ ->\n                sharedPreferences.edit()?.putBoolean(\"advancedProgressBarStyle\", false)?.apply()\n            }\n            .show()\n    }\n\n    private fun getValueIndex() = entryValues.indexOf(value)\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/preferences/SeekBarPreference.kt",
    "content": "package com.gustavoas.noti.preferences\n\nimport android.content.Context\nimport android.util.AttributeSet\nimport android.view.View\nimport androidx.preference.Preference\nimport androidx.preference.PreferenceViewHolder\nimport com.google.android.material.slider.Slider\nimport com.gustavoas.noti.R\nimport com.gustavoas.noti.Utils.vibrate\n\nclass SeekBarPreference(context: Context, attrs: AttributeSet): Preference(context, attrs) {\n    private var preferenceHolder: View? = null\n\n    private var minNumber: Int = -50\n    private var maxNumber: Int = 50\n    private var defaultValue: Int = 0\n\n    private var currentValue: Int = defaultValue\n\n    init {\n        layoutResource = R.layout.seekbar_preference\n\n        val attributes = context.obtainStyledAttributes(attrs, R.styleable.HorizontalNumberPicker)\n        minNumber = attributes.getInteger(R.styleable.HorizontalNumberPicker_min_number, minNumber)\n        maxNumber = attributes.getInteger(R.styleable.HorizontalNumberPicker_max_number, maxNumber)\n        defaultValue = attributes.getInteger(R.styleable.HorizontalNumberPicker_default_value, defaultValue)\n        attributes.recycle()\n    }\n\n    override fun onBindViewHolder(holder: PreferenceViewHolder) {\n        super.onBindViewHolder(holder)\n\n        preferenceHolder = holder.itemView\n        val seekBar = preferenceHolder?.findViewById<Slider>(R.id.slider)\n\n        currentValue = getPersistedInt(defaultValue)\n        seekBar?.value = currentValue.toFloat()\n        seekBar?.valueFrom = minNumber.toFloat()\n        seekBar?.valueTo = maxNumber.toFloat()\n\n        seekBar?.addOnChangeListener { _, value, _ ->\n            if (value.toInt() != currentValue) {\n                currentValue = value.toInt()\n                persistInt(currentValue)\n                vibrate(context)\n            }\n        }\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/services/AccessibilityService.kt",
    "content": "package com.gustavoas.noti.services\n\nimport android.accessibilityservice.AccessibilityService\nimport android.animation.ObjectAnimator\nimport android.app.KeyguardManager\nimport android.content.BroadcastReceiver\nimport android.content.Intent\nimport android.content.IntentFilter\nimport android.content.SharedPreferences\nimport android.content.res.Configuration\nimport android.graphics.PixelFormat\nimport android.os.Build\nimport android.os.Build.VERSION.SDK_INT\nimport android.os.Handler\nimport android.os.Looper\nimport android.view.Display\nimport android.view.Gravity\nimport android.view.Surface\nimport android.view.View\nimport android.view.ViewGroup\nimport android.view.WindowManager\nimport android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER\nimport android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES\nimport android.view.accessibility.AccessibilityEvent\nimport android.view.animation.DecelerateInterpolator\nimport android.widget.FrameLayout\nimport androidx.core.content.ContextCompat\nimport androidx.core.hardware.display.DisplayManagerCompat\nimport androidx.localbroadcastmanager.content.LocalBroadcastManager\nimport androidx.preference.PreferenceManager\nimport com.google.android.material.progressindicator.CircularProgressIndicator\nimport com.google.android.material.progressindicator.LinearProgressIndicator\nimport com.gustavoas.noti.R\nimport com.gustavoas.noti.Utils.getColorForApp\nimport com.gustavoas.noti.Utils.getScreenLargeSide\nimport com.gustavoas.noti.Utils.getScreenSmallSide\nimport com.gustavoas.noti.Utils.getStatusBarHeight\nimport com.gustavoas.noti.Utils.hasAccessibilityPermission\nimport com.gustavoas.noti.Utils.hasSystemAlertWindowPermission\nimport com.gustavoas.noti.model.ProgressBarApp\nimport com.gustavoas.noti.model.ProgressNotification\nimport kotlin.math.abs\nimport kotlin.math.max\nimport kotlin.math.roundToInt\nimport kotlin.math.sqrt\n\nclass AccessibilityService : AccessibilityService() {\n    private val windowManager by lazy { getSystemService(WINDOW_SERVICE) as WindowManager }\n    private val displayManager by lazy { DisplayManagerCompat.getInstance(this) }\n    private val keyguardManager by lazy { getSystemService(KEYGUARD_SERVICE) as KeyguardManager }\n\n    private lateinit var overlayView: View\n    private lateinit var progressBar: LinearProgressIndicator\n    private lateinit var circularProgressBar: CircularProgressIndicator\n    private val handler = Handler(Looper.getMainLooper())\n\n    private val activeProgressBars = mutableMapOf<String, ProgressNotification>()\n\n    private val fullscreenDetectionService by lazy {\n        Intent(this, FullscreenDetectionService::class.java)\n    }\n\n    override fun onAccessibilityEvent(event: AccessibilityEvent?) {}\n\n    override fun onInterrupt() {}\n\n    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {\n        if (!hasAccessibilityPermission(this) && !hasSystemAlertWindowPermission(this)) {\n            return super.onStartCommand(intent, flags, startId)\n        }\n\n        val id = intent?.getStringExtra(\"id\") ?: \"\"\n        val removal = intent?.getBooleanExtra(\"removal\", false) ?: false\n\n        if (removal) {\n            activeProgressBars.remove(id)\n        } else {\n            val newProgressNotification = if (SDK_INT > Build.VERSION_CODES.TIRAMISU) {\n                intent?.getParcelableExtra(\"progressNotification\", ProgressNotification::class.java)\n            } else {\n                intent?.getParcelableExtra(\"progressNotification\")\n            }\n\n            newProgressNotification?.let {\n                activeProgressBars[id] = it\n            }\n        }\n\n        updateProgressOverlay(1000)\n\n        return super.onStartCommand(intent, flags, startId)\n    }\n\n    private fun updateProgressOverlay(hideDelay: Long = 0) {\n        val showInLockScreen = PreferenceManager.getDefaultSharedPreferences(this)\n            .getBoolean(\"showInLockScreen\", true)\n\n        if (activeProgressBars.isEmpty() || (isLocked() && !showInLockScreen)) {\n            if (!this::overlayView.isInitialized || !overlayView.isShown) {\n                return\n            }\n            handler.postDelayed({\n                hideProgressBarIn(hideDelay / 2)\n            }, hideDelay)\n        } else {\n            getActiveNotification()?.let {\n                showOverlayWithProgress(it)\n            }\n        }\n    }\n\n    private fun getActiveNotification(): ProgressNotification? {\n        val highestPriority = activeProgressBars.values.maxOfOrNull { it.priority } ?: 0\n        return activeProgressBars.values\n            .filter { it.priority >= highestPriority }\n            .maxByOrNull { it.progress }\n    }\n\n    private fun showOverlayWithProgress(notification: ProgressNotification) {\n        handler.removeCallbacksAndMessages(null)\n\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)\n\n        val progressBarStyle =\n            if (sharedPreferences.getBoolean(getSizeDependentPreferenceKey(\"advancedProgressBarStyle\").first, false)) {\n                sharedPreferences.getString(\n                    if (isInPortraitMode()) {\n                        getSizeDependentPreferenceKey(\"progressBarStylePortrait\").first\n                    } else {\n                        getSizeDependentPreferenceKey(\"progressBarStyleLandscape\").first\n                    }, \"linear\"\n                )\n            } else {\n                sharedPreferences.getString(getSizeDependentPreferenceKey(\"progressBarStyle\").first, \"linear\")\n            }\n\n        if(progressBarStyle == \"none\") {\n            if (this::overlayView.isInitialized && overlayView.isShown) {\n                hideProgressBarIn()\n            }\n            return\n        }\n\n        if (!this::overlayView.isInitialized || !overlayView.isShown) {\n            inflateOverlay()\n        }\n\n        progressBar = overlayView.findViewById(R.id.progressBar)\n        circularProgressBar = overlayView.findViewById(R.id.circularProgressBar)\n\n\n        if (progressBarStyle == \"circular\") {\n            progressBar.visibility = View.GONE\n            circularProgressBar.visibility = View.VISIBLE\n\n            circularProgressBarCustomizations(sharedPreferences)\n        } else {\n            progressBar.visibility = View.VISIBLE\n            circularProgressBar.visibility = View.GONE\n\n            linearProgressBarCustomizations(sharedPreferences)\n        }\n\n        applyCommonProgressBarCustomizations(sharedPreferences, notification.progressBarApp)\n\n        animateProgressBarTo(notification.progress, progressBarStyle == \"circular\")\n\n        // TODO: record timestamp and deprioritize after a while\n//        handler.postDelayed({\n//            updateProgressOverlay()\n//        }, 3000)\n    }\n\n    private fun circularProgressBarCustomizations(sharedPrefs: SharedPreferences) {\n        val trackThickness = max(sharedPrefs.getSizeDependentInt(\"circularProgressBarThickness\", 15), 0)\n        val cutoutSize = max(sharedPrefs.getSizeDependentInt(\"circularProgressBarSize\", 65), 0)\n\n        circularProgressBar.indicatorSize = cutoutSize + 2 * trackThickness\n\n        circularProgressBar.trackThickness = trackThickness\n\n        val marginTop = sharedPrefs.getSizeDependentInt(\"circularProgressBarTopOffset\", 60) - trackThickness - cutoutSize / 2\n        val horizontalOffset = sharedPrefs.getSizeDependentInt(\"circularProgressBarHorizontalOffset\", 0)\n\n        val overlayParams = overlayView.layoutParams as WindowManager.LayoutParams\n\n        overlayParams.width = circularProgressBar.indicatorSize\n        overlayParams.height = circularProgressBar.indicatorSize\n\n        val displayRotation = displayManager.getDisplay(Display.DEFAULT_DISPLAY)!!.rotation\n\n        circularProgressBar.rotation = (360 - displayRotation.toFloat() * 90) % 360\n\n        val progressParams = circularProgressBar.layoutParams as FrameLayout.LayoutParams\n\n        var paddingTop = 0\n        var paddingRight = 0\n        var paddingLeft = 0\n\n        if (marginTop < 0) {\n            paddingTop = marginTop\n        } else if (marginTop + circularProgressBar.indicatorSize > getScreenLargeSide(this))  {\n            paddingTop = marginTop + circularProgressBar.indicatorSize - getScreenLargeSide(this)\n        }\n\n        val halfWidth = getScreenSmallSide(this) / 2\n        val halfIndicatorSize = circularProgressBar.indicatorSize / 2\n\n        if (abs(horizontalOffset) + halfIndicatorSize > halfWidth) {\n            if (horizontalOffset - halfIndicatorSize < -halfWidth) {\n                paddingLeft = halfWidth + horizontalOffset - halfIndicatorSize\n            } else {\n                paddingLeft = -halfWidth + horizontalOffset + halfIndicatorSize\n            }\n\n            if (horizontalOffset + halfIndicatorSize > halfWidth) {\n                paddingRight = halfWidth - horizontalOffset - halfIndicatorSize\n            } else {\n                paddingRight = -halfWidth - horizontalOffset + halfIndicatorSize\n            }\n        }\n\n        when(displayRotation) {\n            Surface.ROTATION_0 -> {\n                overlayParams.gravity = Gravity.CENTER_HORIZONTAL or Gravity.TOP\n                overlayParams.x = horizontalOffset\n                overlayParams.y = marginTop\n                progressParams.setMargins(paddingLeft, paddingTop, -paddingLeft, -paddingTop)\n            }\n            Surface.ROTATION_180 -> {\n                overlayParams.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM\n                overlayParams.x = -horizontalOffset\n                overlayParams.y = marginTop\n                progressParams.setMargins(paddingRight, -paddingTop, -paddingRight, paddingTop)\n            }\n            Surface.ROTATION_90 -> {\n                // landscape, device top is on the left\n                overlayParams.gravity = Gravity.CENTER_VERTICAL or Gravity.LEFT\n                overlayParams.x = marginTop\n                overlayParams.y = -horizontalOffset\n                progressParams.setMargins(paddingTop, paddingRight, -paddingTop, -paddingRight)\n            }\n            Surface.ROTATION_270 -> {\n                // landscape, device top is on the right\n                overlayParams.gravity = Gravity.CENTER_VERTICAL or Gravity.RIGHT\n                overlayParams.x = marginTop\n                overlayParams.y = horizontalOffset\n                progressParams.setMargins(-paddingTop, paddingLeft, paddingTop, -paddingLeft)\n            }\n        }\n\n        if (SDK_INT >= Build.VERSION_CODES.P) {\n            overlayParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES\n        }\n\n        circularProgressBar.layoutParams = progressParams\n\n        try {\n            windowManager.updateViewLayout(overlayView, overlayParams)\n        } catch (_: Exception) {}\n    }\n\n    private fun linearProgressBarCustomizations(sharedPrefs: SharedPreferences) {\n        if (sharedPrefs.getBoolean(getSizeDependentPreferenceKey(\"matchStatusBarHeight\").first, false)) {\n            progressBar.trackThickness = getStatusBarHeight(this)\n        } else {\n            progressBar.trackThickness = sharedPrefs.getSizeDependentInt(\"linearProgressBarSize\", 15)\n        }\n\n        val paddingTop = sharedPrefs.getSizeDependentInt(\"linearProgressBarMarginTop\", 0)\n\n        val overlayParams = overlayView.layoutParams as WindowManager.LayoutParams\n\n        if (SDK_INT >= Build.VERSION_CODES.P) {\n            if (sharedPrefs.getBoolean(getSizeDependentPreferenceKey(\"showBelowNotch\").first, false)) {\n                overlayParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER\n            } else {\n                overlayParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES\n            }\n        }\n\n        overlayParams.gravity = Gravity.TOP\n        overlayParams.width = ViewGroup.LayoutParams.MATCH_PARENT\n        overlayParams.height = progressBar.trackThickness + paddingTop\n        overlayParams.y = paddingTop\n\n        try {\n            windowManager.updateViewLayout(overlayView, overlayParams)\n        } catch (_: Exception) {}\n    }\n\n    private fun applyCommonProgressBarCustomizations(sharedPrefs: SharedPreferences, progressBarApp: ProgressBarApp) {\n        val progressBarColor = getColorForApp(this, progressBarApp)\n        progressBar.setIndicatorColor(progressBarColor)\n        circularProgressBar.setIndicatorColor(progressBarColor)\n\n        val blackBackground = sharedPrefs.getBoolean(\"blackBackground\", false)\n        val backgroundColor = if (blackBackground) {\n            ContextCompat.getColor(this, android.R.color.black)\n        } else {\n            ContextCompat.getColor(this, android.R.color.transparent)\n        }\n        progressBar.trackColor = backgroundColor\n        circularProgressBar.trackColor = backgroundColor\n\n        val useRoundedCorners = sharedPrefs.getBoolean(\"useRoundedCorners\", false)\n        if (useRoundedCorners) {\n            progressBar.trackCornerRadius = 100\n            circularProgressBar.trackCornerRadius = 100\n        } else {\n            progressBar.trackCornerRadius = 0\n            circularProgressBar.trackCornerRadius = 0\n        }\n    }\n\n    private fun SharedPreferences.getSizeDependentInt(key: String, defaultValue: Int): Int {\n        val sizeDependentPreference = getSizeDependentPreferenceKey(key)\n        return this.getInt(sizeDependentPreference.first, defaultValue).times(sizeDependentPreference.second).roundToInt()\n    }\n\n    private fun getSizeDependentPreferenceKey(key: String): Pair<String, Float> {\n        val width = getScreenSmallSide(this)\n        val height = getScreenLargeSide(this)\n\n        val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this)\n\n        val relatedPrefs = sharedPreferences.all.filterKeys { it.startsWith(key) }\n\n        val sameRatio = relatedPrefs.filterKeys { it.length > key.length && it[key.length].isDigit() && it.drop(key.length).split(\"x\")[0].toInt() / it.drop(key.length).split(\"x\")[1].toInt() == height / width }\n\n        if (sameRatio.isEmpty()) {\n            return Pair(key, 1f)\n        }\n\n        val closest = sameRatio.keys.minByOrNull { abs(it.drop(key.length).split(\"x\")[0].toInt() * it.drop(key.length).split(\"x\")[1].toInt() - height * width) }\n\n        val reductionRatio = sqrt((height * width).div(closest!!.drop(key.length).split(\"x\")[0].toFloat() * closest.drop(key.length).split(\"x\")[1].toFloat()))\n\n        return Pair(closest, reductionRatio)\n    }\n\n    private fun isInPortraitMode(): Boolean {\n        return resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT\n    }\n\n    private fun isLocked(): Boolean {\n        return keyguardManager.isKeyguardLocked\n    }\n\n    private fun setProgressToZero() {\n        progressBar.progress = 0\n        circularProgressBar.progress = 0\n    }\n\n    private fun hideProgressBarIn(delay: Long = 500) {\n        progressBar.hide()\n        circularProgressBar.hide()\n        handler.postDelayed({\n            setProgressToZero()\n            hideOverlay()\n        }, delay)\n    }\n\n    private fun animateProgressBarTo(progress: Int, animateCircularProgressBar: Boolean = false) {\n        if (animateCircularProgressBar) {\n            circularProgressBar.show()\n            val circularProgressAnimation =\n                ObjectAnimator.ofInt(circularProgressBar, \"progress\", progress)\n            circularProgressAnimation.duration = 250\n            circularProgressAnimation.interpolator = DecelerateInterpolator()\n            circularProgressAnimation.start()\n            progressBar.progress = progress\n        } else {\n            progressBar.show()\n            val progressAnimation = ObjectAnimator.ofInt(progressBar, \"progress\", progress)\n            progressAnimation.duration = 250\n            progressAnimation.interpolator = DecelerateInterpolator()\n            progressAnimation.start()\n            circularProgressBar.progress = progress\n        }\n    }\n\n    private fun inflateOverlay() {\n        if (!this::overlayView.isInitialized) {\n            overlayView = View.inflate(this, R.layout.progress_bar, null)\n        }\n\n        val hasSAWPermission = hasSystemAlertWindowPermission(this)\n        val hasAccessibilityPermission = hasAccessibilityPermission(this)\n\n        val showInLockscreen = PreferenceManager.getDefaultSharedPreferences(this)\n            .getBoolean(\"showInLockScreen\", true) && hasAccessibilityPermission\n\n        val windowType = if (SDK_INT >= Build.VERSION_CODES.O && hasSAWPermission && !showInLockscreen) {\n            WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY\n        } else if (SDK_INT >= Build.VERSION_CODES.M && hasAccessibilityPermission) {\n            WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY\n        } else if (SDK_INT < Build.VERSION_CODES.O && hasSAWPermission) {\n            @Suppress(\"DEPRECATION\")\n            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY\n        } else {\n            return\n        }\n\n        val params = WindowManager.LayoutParams (\n            WindowManager.LayoutParams.MATCH_PARENT,\n            WindowManager.LayoutParams.MATCH_PARENT,\n            windowType,\n            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or\n                    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE or\n                    WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN or\n                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION or\n                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,\n            PixelFormat.TRANSLUCENT\n        )\n\n        if (SDK_INT >= Build.VERSION_CODES.S && hasSAWPermission && !showInLockscreen) {\n            params.alpha = 0.8f\n        }\n\n        if (!overlayView.isShown) {\n            try {\n                windowManager.addView(overlayView, params)\n            } catch (_: Exception) {\n                // TODO\n                return\n            }\n\n            if (hasSAWPermission) {\n                overlayView.alpha = 0f\n                LocalBroadcastManager.getInstance(this).registerReceiver(\n                    fullscreenDetectionReceiver,\n                    IntentFilter(FullscreenDetectionService::class.java.simpleName)\n                )\n                startService(fullscreenDetectionService)\n            }\n        }\n    }\n\n    private val fullscreenDetectionReceiver = object : BroadcastReceiver() {\n        override fun onReceive(context: android.content.Context?, intent: Intent?) {\n            val disableInFullscreen = PreferenceManager.getDefaultSharedPreferences(this@AccessibilityService)\n                .getBoolean(\"disableInFullScreen\", true)\n            val isFullscreen = intent?.getBooleanExtra(\"isFullscreen\", false) ?: false\n            val alpha = if (disableInFullscreen && isFullscreen) 0f else 1f\n\n            overlayView.animate()\n                .alpha(alpha)\n                .setDuration(300)\n                .start()\n        }\n    }\n\n    private fun hideOverlay() {\n        if (this::overlayView.isInitialized && overlayView.isShown) {\n            windowManager.removeView(overlayView)\n        }\n        stopService(fullscreenDetectionService)\n        LocalBroadcastManager.getInstance(this).unregisterReceiver(fullscreenDetectionReceiver)\n        stopSelf()\n    }\n\n    override fun onConfigurationChanged(newConfig: Configuration) {\n        super.onConfigurationChanged(newConfig)\n\n        updateProgressOverlay(0)\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/services/FullscreenDetectionService.kt",
    "content": "package com.gustavoas.noti.services\n\nimport android.app.KeyguardManager\nimport android.app.Service\nimport android.content.BroadcastReceiver\nimport android.content.Context\nimport android.content.Intent\nimport android.content.IntentFilter\nimport android.graphics.PixelFormat\nimport android.os.Build\nimport android.view.View\nimport android.view.ViewTreeObserver\nimport android.view.WindowManager\nimport androidx.localbroadcastmanager.content.LocalBroadcastManager\nimport com.gustavoas.noti.R\nimport com.gustavoas.noti.Utils.getRealDisplayHeight\nimport com.gustavoas.noti.Utils.hasSystemAlertWindowPermission\n\nclass FullscreenDetectionService : Service() {\n    private val windowManager by lazy { getSystemService(WINDOW_SERVICE) as WindowManager }\n    private lateinit var fullscreenDetectionView: View\n    private lateinit var globalLayoutListener: ViewTreeObserver.OnGlobalLayoutListener\n\n    private var displayOffReceiver: BroadcastReceiver? = null\n\n    override fun onBind(intent: Intent?) = null\n\n    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {\n        if (!hasSystemAlertWindowPermission(this)) {\n            return super.onStartCommand(intent, flags, startId)\n        }\n\n        if (!this::fullscreenDetectionView.isInitialized || !fullscreenDetectionView.isShown) {\n            inflateFullscreenDetectionOverlay()\n        }\n\n        registerDisplayOffReceiver()\n\n        return super.onStartCommand(intent, flags, startId)\n    }\n\n    private fun inflateFullscreenDetectionOverlay() {\n        if (!this::fullscreenDetectionView.isInitialized) {\n            fullscreenDetectionView = View.inflate(this, R.layout.progress_bar, null)\n        }\n\n        val windowType = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {\n            WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY\n        } else {\n            @Suppress(\"DEPRECATION\")\n            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY\n        }\n\n        val fullscreenDetectorParams = WindowManager.LayoutParams(\n            0,\n            WindowManager.LayoutParams.MATCH_PARENT,\n            windowType,\n            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or\n                    WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,\n            PixelFormat.TRANSLUCENT\n        )\n\n        fullscreenDetectorParams.alpha = 0f\n        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {\n            fullscreenDetectorParams.layoutInDisplayCutoutMode =\n                WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES\n        }\n\n        windowManager.addView(fullscreenDetectionView, fullscreenDetectorParams)\n\n        globalLayoutListener = ViewTreeObserver.OnGlobalLayoutListener {\n            val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager\n            val isKeyguardShown = keyguardManager.isKeyguardLocked\n\n            broadcastFullscreenState(\n                if (!isKeyguardShown) {\n                    isFullScreen()\n                } else {\n                    false\n                }\n            )\n        }\n\n        fullscreenDetectionView.viewTreeObserver.addOnGlobalLayoutListener(\n            globalLayoutListener\n        )\n    }\n\n    private fun isFullScreen(): Boolean {\n        val displayHeight = getRealDisplayHeight(this)\n\n        return fullscreenDetectionView.height == displayHeight\n    }\n\n    private fun broadcastFullscreenState(isFullscreen: Boolean) {\n        val intent = Intent(this.javaClass.simpleName)\n        intent.putExtra(\"isFullscreen\", isFullscreen)\n        LocalBroadcastManager.getInstance(this).sendBroadcast(intent)\n    }\n\n    private fun registerDisplayOffReceiver() {\n        if (displayOffReceiver != null) {\n            return\n        }\n\n        displayOffReceiver = object : BroadcastReceiver() {\n            override fun onReceive(context: Context, intent: Intent) {\n                if (intent.action == Intent.ACTION_SCREEN_OFF) {\n                    broadcastFullscreenState(false)\n                }\n            }\n        }\n\n        registerReceiver(displayOffReceiver, IntentFilter(Intent.ACTION_SCREEN_OFF))\n    }\n\n    private fun unregisterDisplayOffReceiver() {\n        displayOffReceiver?.let {\n            try {\n                unregisterReceiver(it)\n            } catch (_: IllegalArgumentException) {}\n            displayOffReceiver = null\n        }\n    }\n\n    override fun onDestroy() {\n        super.onDestroy()\n\n        if (this::fullscreenDetectionView.isInitialized && fullscreenDetectionView.isShown) {\n            windowManager.removeView(fullscreenDetectionView)\n            if (fullscreenDetectionView.viewTreeObserver.isAlive) {\n                fullscreenDetectionView.viewTreeObserver.removeOnGlobalLayoutListener(globalLayoutListener)\n            }\n        }\n\n        unregisterDisplayOffReceiver()\n    }\n}"
  },
  {
    "path": "app/src/main/java/com/gustavoas/noti/services/NotificationListenerService.kt",
    "content": "package com.gustavoas.noti.services\n\nimport android.app.Notification\nimport android.os.Process\nimport android.service.notification.NotificationListenerService\nimport android.service.notification.StatusBarNotification\nimport androidx.core.app.NotificationCompat\nimport androidx.preference.PreferenceManager\nimport com.gustavoas.noti.ProgressBarAppsRepository\nimport com.gustavoas.noti.notifications.DownloadProgressBar\nimport com.gustavoas.noti.notifications.GoogleTimerProgressBar\nimport com.gustavoas.noti.notifications.MediaProgressBar\nimport com.gustavoas.noti.notifications.PercentageProgressBar\nimport com.gustavoas.noti.notifications.ProgressBarNotification\nimport kotlin.math.roundToInt\n\nclass NotificationListenerService : NotificationListenerService() {\n    private val appsRepository by lazy { ProgressBarAppsRepository(this) }\n\n    private val activeProgressBars = mutableMapOf<String, ProgressBarNotification>()\n\n    private fun isMediaNotification(sbn: StatusBarNotification): Boolean {\n        val extras = sbn.notification.extras\n\n        val template = extras.getString(Notification.EXTRA_TEMPLATE)\n        val templateMatch = Notification.MediaStyle::class.java.name\n\n        if (template != templateMatch) {\n            return false\n        }\n\n        return sbn.notification.extras.containsKey(NotificationCompat.EXTRA_MEDIA_SESSION)\n    }\n\n    private fun isDownloadNotification(sbn: StatusBarNotification): Boolean {\n        val extras = sbn.notification.extras\n\n        val hasProgress = extras.getInt(NotificationCompat.EXTRA_PROGRESS) > 0\n        val hasProgressMax = extras.getInt(NotificationCompat.EXTRA_PROGRESS_MAX) > 0\n        val isIndeterminate = extras.getBoolean(NotificationCompat.EXTRA_PROGRESS_INDETERMINATE)\n\n        return hasProgress && hasProgressMax && !isIndeterminate\n    }\n\n    // TODO Do this differently\n    private fun getProgressFromPercentage(sbn: StatusBarNotification): Int {\n        val extras = sbn.notification.extras\n        val title = extras.getCharSequence(Notification.EXTRA_TITLE)?.toString() ?: \"\"\n        val text = extras.getCharSequence(Notification.EXTRA_TEXT)?.toString() ?: \"\"\n        val subText = extras.getCharSequence(Notification.EXTRA_SUB_TEXT)?.toString() ?: \"\"\n        val bigText = extras.getCharSequence(Notification.EXTRA_BIG_TEXT)?.toString() ?: \"\"\n        val textLines = extras.getCharSequenceArray(Notification.EXTRA_TEXT_LINES)\n\n        val percentageProgress = title.substringBefore(\"%\").toFloatOrNull() ?:\n        text.substringBefore(\"%\").toFloatOrNull() ?:\n        subText.substringBefore(\"%\").toFloatOrNull() ?:\n        bigText.split(\"\\n\").firstOrNull { it.contains(\"%\") }?.toString()\n            ?.substringBefore(\"%\")?.toFloatOrNull() ?:\n        textLines?.firstOrNull { it.contains(\"%\") }?.toString()\n            ?.substringBefore(\"%\")?.toFloatOrNull()\n\n        if (percentageProgress == null || percentageProgress.isNaN()) {\n            return 0\n        }\n\n        return percentageProgress.roundToInt()\n    }\n\n    private fun isGoogleTimerNotification(sbn: StatusBarNotification): Boolean {\n        if (sbn.packageName != \"com.google.android.deskclock\") {\n            return false\n        }\n\n        val sortKey = sbn.notification.sortKey\n        return !sortKey.isNullOrEmpty()\n    }\n\n    private fun shouldShowProgressForNotification(sbn: StatusBarNotification): Boolean {\n        if (sbn.packageName == this.packageName) {\n            return false\n        }\n\n        val uniqueIdentifier = sbn.key ?: return false\n\n        if (activeProgressBars.containsKey(uniqueIdentifier)) {\n            return true\n        }\n\n        if (!showForApp(sbn.packageName ?: \"\")) {\n            return false\n        }\n\n        val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this)\n        if (isMediaNotification(sbn)) {\n            val enabledForMedia = sharedPrefs.getBoolean(\"showForMedia\", true)\n            return enabledForMedia\n        }\n\n        if (isDownloadNotification(sbn) || getProgressFromPercentage(sbn) > 0) {\n            val enabledForDownloads = sharedPrefs.getBoolean(\"showForDownloads\", true)\n            return enabledForDownloads\n        }\n\n        return isGoogleTimerNotification(sbn)\n    }\n\n    override fun onNotificationPosted(sbn: StatusBarNotification) {\n        super.onNotificationPosted(sbn)\n\n        val notificationUser = sbn.user\n        val packageUser = Process.myUserHandle()\n\n        if (notificationUser != packageUser) {\n            return\n        }\n\n        if (shouldShowProgressForNotification(sbn)) {\n            getProgressFromNotification(sbn)\n        }\n    }\n\n    private fun getProgressFromNotification(sbn: StatusBarNotification) {\n        val uniqueIdentifier = sbn.key.toString()\n\n        if (activeProgressBars.containsKey(uniqueIdentifier)) {\n            val notification = activeProgressBars[uniqueIdentifier]\n\n            notification?.updateNotification(sbn)\n\n            return\n        }\n\n        activeProgressBars[uniqueIdentifier] = if (isMediaNotification(sbn)) {\n            MediaProgressBar(this, sbn, appsRepository)\n        } else if (isGoogleTimerNotification(sbn)) {\n            GoogleTimerProgressBar(this, sbn, appsRepository)\n        } else if (isDownloadNotification(sbn)) {\n            DownloadProgressBar(this, sbn, appsRepository)\n        }  else if (getProgressFromPercentage(sbn) > 0) {\n            PercentageProgressBar(this, sbn, appsRepository)\n        } else {\n            return\n        }\n    }\n\n    override fun onNotificationRemoved(sbn: StatusBarNotification) {\n        super.onNotificationRemoved(sbn)\n\n        val activeProgressBar = activeProgressBars.remove(sbn.key.toString())\n        activeProgressBar?.cancel()\n    }\n\n    private fun showForApp(packageName: String): Boolean {\n        return packageName.isNotEmpty() && appsRepository.showProgressForApp(packageName) != false\n    }\n\n    override fun onDestroy() {\n        super.onDestroy()\n\n        activeProgressBars.values.forEach { it.cancel() }\n        activeProgressBars.clear()\n        appsRepository.close()\n    }\n}"
  },
  {
    "path": "app/src/main/res/color/outlined_button_selector.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:color=\"?attr/colorPrimaryContainer\" android:state_checked=\"true\" />\n    <item android:color=\"@android:color/transparent\" />\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/circular_mask.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ripple xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:color=\"?android:colorControlHighlight\">\n\n    <item android:id=\"@android:id/mask\">\n        <shape android:shape=\"oval\">\n            <solid android:color=\"@color/app_accent_color\" />\n        </shape>\n    </item>\n\n</ripple>"
  },
  {
    "path": "app/src/main/res/drawable/ic_accessibility.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M480,240Q447,240 424,217Q400,193 400,160Q400,127 424,104Q447,80 480,80Q513,80 537,104Q560,127 560,160Q560,193 537,217Q513,240 480,240ZM360,880L360,360Q300,355 238,345Q176,335 120,320L140,240Q218,261 306,271Q394,280 480,280Q566,280 654,271Q742,261 820,240L840,320Q784,335 722,345Q660,355 600,360L600,880L520,880L520,640L440,640L440,880L360,880Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_apps.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M240,800Q207,800 184,777Q160,753 160,720Q160,687 184,664Q207,640 240,640Q273,640 297,664Q320,687 320,720Q320,753 297,777Q273,800 240,800ZM480,800Q447,800 424,777Q400,753 400,720Q400,687 424,664Q447,640 480,640Q513,640 537,664Q560,687 560,720Q560,753 537,777Q513,800 480,800ZM720,800Q687,800 664,777Q640,753 640,720Q640,687 664,664Q687,640 720,640Q753,640 777,664Q800,687 800,720Q800,753 777,777Q753,800 720,800ZM240,560Q207,560 184,537Q160,513 160,480Q160,447 184,424Q207,400 240,400Q273,400 297,424Q320,447 320,480Q320,513 297,537Q273,560 240,560ZM480,560Q447,560 424,537Q400,513 400,480Q400,447 424,424Q447,400 480,400Q513,400 537,424Q560,447 560,480Q560,513 537,537Q513,560 480,560ZM720,560Q687,560 664,537Q640,513 640,480Q640,447 664,424Q687,400 720,400Q753,400 777,424Q800,447 800,480Q800,513 777,537Q753,560 720,560ZM240,320Q207,320 184,297Q160,273 160,240Q160,207 184,184Q207,160 240,160Q273,160 297,184Q320,207 320,240Q320,273 297,297Q273,320 240,320ZM480,320Q447,320 424,297Q400,273 400,240Q400,207 424,184Q447,160 480,160Q513,160 537,184Q560,207 560,240Q560,273 537,297Q513,320 480,320ZM720,320Q687,320 664,297Q640,273 640,240Q640,207 664,184Q687,160 720,160Q753,160 777,184Q800,207 800,240Q800,273 777,297Q753,320 720,320Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_bug_report.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"48dp\"\n    android:height=\"48dp\"\n    android:viewportWidth=\"48\"\n    android:viewportHeight=\"48\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"#000000\"\n      android:pathData=\"M36.8,17.6h-4.5c-0.7,-1.2 -1.7,-2.3 -2.9,-3.1l2.6,-2.6l-2.2,-2.2l-3.5,3.5c-0.7,-0.2 -1.5,-0.3 -2.3,-0.3s-1.5,0.1 -2.2,0.3l-3.5,-3.5L16,11.9l2.6,2.6c-1.2,0.8 -2.2,1.9 -2.9,3.1h-4.5v3.2h3.3c-0.1,0.5 -0.1,1.1 -0.1,1.6V24h-3.2v3.2h3.2v1.6c0,0.5 0.1,1.1 0.1,1.6h-3.3v3.2h4.5c1.7,2.9 4.7,4.8 8.3,4.8s6.6,-1.9 8.3,-4.8h4.5v-3.2h-3.3c0.1,-0.5 0.1,-1.1 0.1,-1.6v-1.6h3.2V24h-3.2v-1.6c0,-0.5 -0.1,-1.1 -0.1,-1.6h3.3V17.6zM27.2,30.4h-6.4v-3.2h6.4V30.4zM27.2,24h-6.4v-3.2h6.4V24z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_calentile.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:height=\"28dp\"\n    android:width=\"28dp\"\n    android:viewportHeight=\"48\"\n    android:viewportWidth=\"48\"\n    android:tint=\"@color/text\">\n    <path android:fillColor=\"#000000\" android:pathData=\"M20.8,29a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0\"/>\n    <path android:fillColor=\"#000000\" android:pathData=\"M20.8,21.1a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0\"/>\n    <path android:fillColor=\"#000000\" android:pathData=\"M20.8,36.9a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0\"/>\n    <path android:fillColor=\"#000000\" android:pathData=\"M29.7,21.1a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0\"/>\n    <path android:fillColor=\"#000000\" android:pathData=\"M11.9,21.1a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0\"/>\n    <path android:fillColor=\"#000000\" android:pathData=\"M11.9,29a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0\"/>\n    <path android:fillColor=\"#000000\" android:pathData=\"M11.9,36.9a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0\"/>\n    <path android:fillColor=\"#000000\" android:pathData=\"M29.7,36.9a3.2,3.2 0,1 1,6.4 0a3.2,3.2 0,1 1,-6.4 0\"/>\n    <path android:fillColor=\"#000000\" android:pathData=\"M40,6h-2V2h-4v4H14V2h-4v4H8c-2.2,0 -4,1.8 -4,4v32c0,2.2 1.8,4 4,4h32c2.2,0 4,-1.8 4,-4V10C44,7.8 42.2,6 40,6zM40,42H8V16h32V42z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_circular_progress_bar.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M480,905Q390,905 312,872Q235,840 178,782Q120,725 88,648Q55,570 55,480Q55,390 88,313Q120,235 177,178Q235,120 312,87Q390,54 480,54L480,149Q342,149 245,245Q149,342 149,480Q149,618 245,715Q342,811 480,811Q618,811 715,715Q811,618 811,480L906,480Q906,570 873,648Q840,725 783,783Q725,840 648,873Q570,905 480,905Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_close.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"24dp\"\n    android:height=\"24dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M256,760L200,704L424,480L200,256L256,200L480,424L704,200L760,256L536,480L760,704L704,760L480,536L256,760Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_colors.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M18,4L18,3c0,-0.6 -0.5,-1 -1,-1L5,2c-0.6,0 -1,0.5 -1,1v4c0,0.6 0.5,1 1,1h12c0.6,0 1,-0.5 1,-1L18,6h1v4L9,10v11c0,0.6 0.5,1 1,1h2c0.6,0 1,-0.5 1,-1v-9h8L21,4h-3zM16,6L6,6L6,4h10v2z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_contrast.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\"\n    android:autoMirrored=\"true\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M480,899Q393,899 317,866Q240,833 183,777Q127,720 94,643Q61,567 61,480Q61,393 94,317Q127,240 183,183Q240,127 317,94Q393,61 480,61Q567,61 643,94Q720,127 777,183Q833,240 866,317Q899,393 899,480Q899,567 866,643Q833,720 777,777Q720,833 643,866Q567,899 480,899ZM527,789Q641,772 717,686Q793,600 793,480Q793,361 717,275Q641,189 527,172L527,789Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_download.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M280,680H680V600H280ZM480,560L640,400L584,344L520,406V240H440V406L376,344L320,400ZM480,880Q397,880,324,848.5Q251,817,197,763Q143,709,111.5,636Q80,563,80,480Q80,397,111.5,324Q143,251,197,197Q251,143,324,111.5Q397,80,480,80Q563,80,636,111.5Q709,143,763,197Q817,251,848.5,324Q880,397,880,480Q880,563,848.5,636Q817,709,763,763Q709,817,636,848.5Q563,880,480,880ZM480,800Q614,800,707,707Q800,614,800,480Q800,346,707,253Q614,160,480,160Q346,160,253,253Q160,346,160,480Q160,614,253,707Q346,800,480,800Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_download_filled.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M280,680H680V600H280ZM480,560L640,400L584,344L520,406V240H440V406L376,344L320,400ZM480,880Q397,880,324,848.5Q251,817,197,763Q143,709,111.5,636Q80,563,80,480Q80,397,111.5,324Q143,251,197,197Q251,143,324,111.5Q397,80,480,80Q563,80,636,111.5Q709,143,763,197Q817,251,848.5,324Q880,397,880,480Q880,563,848.5,636Q817,709,763,763Q709,817,636,848.5Q563,880,480,880Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_fullscreen.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M120,840L120,640L200,640L200,760L320,760L320,840L120,840ZM640,840L640,760L760,760L760,640L840,640L840,840L640,840ZM120,320L120,120L320,120L320,200L200,200L200,320L120,320ZM760,320L760,200L640,200L640,120L840,120L840,320L760,320Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_height.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"30dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M480,854L298,672L354,617L440,702L439,258L354,344L297,288L480,105L663,288L606,344L520,258L520,702L607,617L663,672L480,854Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_horizontal.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M280,840L80,640L280,440L337,496L233,600L840,600L840,680L233,680L337,784L280,840ZM680,520L623,464L727,360L120,360L120,280L727,280L623,176L680,120L880,320L680,520Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_info.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"?attr/colorControlNormal\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M440,680L520,680L520,440L440,440L440,680ZM480,360Q497,360 509,349Q520,337 520,320Q520,303 509,292Q497,280 480,280Q463,280 452,292Q440,303 440,320Q440,337 452,349Q463,360 480,360ZM480,880Q397,880 324,849Q251,817 197,763Q143,709 112,636Q80,563 80,480Q80,397 112,324Q143,251 197,197Q251,143 324,112Q397,80 480,80Q563,80 636,112Q709,143 763,197Q817,251 849,324Q880,397 880,480Q880,563 849,636Q817,709 763,763Q709,817 636,849Q563,880 480,880ZM480,800Q614,800 707,707Q800,614 800,480Q800,346 707,253Q614,160 480,160Q346,160 253,253Q160,346 160,480Q160,614 253,707Q346,800 480,800Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_launcher_foreground.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"108dp\"\n    android:height=\"108dp\"\n    android:viewportWidth=\"480\"\n    android:viewportHeight=\"480\"\n    android:tint=\"@color/deep_purple_800\">\n  <group android:scaleX=\"0.72\"\n      android:scaleY=\"0.72\"\n      android:translateX=\"67.2\"\n      android:translateY=\"67.2\">\n    <path\n        android:pathData=\"M290.5,119.3c-25.8,0 -46.7,20.9 -46.7,46.7c0,25.8 20.9,46.7 46.7,46.7c25.8,0 46.7,-20.9 46.7,-46.7C337.2,140.2 316.3,119.3 290.5,119.3zM290.5,196.3c-16.7,0 -30.3,-13.6 -30.3,-30.3c0,-16.7 13.6,-30.3 30.3,-30.3s30.3,13.6 30.3,30.3C320.8,182.7 307.3,196.3 290.5,196.3z\"\n        android:fillColor=\"@android:color/black\"/>\n    <path\n        android:pathData=\"M142.7,122.6H158v11.8h0.7c2.4,-4.2 6.2,-7.6 11.2,-10.4c5,-2.8 10.3,-4.2 15.7,-4.2c10.4,0 18.4,3 24,8.9c5.6,6 8.4,14.4 8.4,25.4v53.5h-16v-52.4c-0.3,-13.9 -7.4,-20.8 -21,-20.8c-6.4,0 -11.7,2.6 -16,7.7c-4.3,5.2 -6.4,11.3 -6.4,18.5v47.1h-16V122.6z\"\n        android:fillColor=\"@android:color/black\"/>\n    <path\n        android:pathData=\"M186.9,360.6c-7,0 -12.9,-2.2 -17.5,-6.5c-4.6,-4.3 -7,-10.4 -7.1,-18.1v-48.2h-15.1v-14.8h15.1v-26.4h16.2v26.4h21.1v14.8h-21.1v42.9c0,5.8 1.1,9.7 3.3,11.7c2.2,2.1 4.8,3.1 7.6,3.1c1.3,0 2.6,-0.1 3.8,-0.4c1.2,-0.3 2.4,-0.7 3.4,-1.1l5.1,14.4C197.4,359.8 192.5,360.6 186.9,360.6z\"\n        android:fillColor=\"@android:color/black\"/>\n    <path\n        android:pathData=\"M288,253.3a12.4,12.4 0,1 1,24.8 0a12.4,12.4 0,1 1,-24.8 0\"\n        android:fillColor=\"@android:color/black\"/>\n    <path\n        android:pathData=\"M308.3,361.4h-16c-0.6,0 -1,-0.4 -1,-1v-77.7c0,-0.6 0.4,-1 1,-1h16c0.6,0 1,0.4 1,1v77.7C309.3,361 308.9,361.4 308.3,361.4z\"\n        android:fillColor=\"@android:color/black\"/>\n  </group>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_linear_progress_bar.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M66,589L66,510L288,510L288,589L66,589ZM348,589L348,510L573,510L573,589L348,589ZM633,589L633,510L855,510L855,589L633,589ZM66,450L66,370L855,370L855,450L66,450Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_lockscreen.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M19,1L9,1c-1.1,0 -2,0.9 -2,2v3h2L9,4h10v16L9,20v-2L7,18v3c0,1.1 0.9,2 2,2h10c1.1,0 2,-0.9 2,-2L21,3c0,-1.1 -0.9,-2 -2,-2zM10.8,11L10.8,9.5C10.8,8.1 9.4,7 8,7S5.2,8.1 5.2,9.5L5.2,11c-0.6,0 -1.2,0.6 -1.2,1.2v3.5c0,0.7 0.6,1.3 1.2,1.3h5.5c0.7,0 1.3,-0.6 1.3,-1.2v-3.5c0,-0.7 -0.6,-1.3 -1.2,-1.3zM9.5,11h-3L6.5,9.5c0,-0.8 0.7,-1.3 1.5,-1.3s1.5,0.5 1.5,1.3L9.5,11z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_margin_top.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M440,643L520,643L520,468L590,539L646,483L480,317L314,483L370,539L440,468L440,643ZM480,894Q395,894 319,862Q244,829 187,773Q131,717 98,641Q66,566 66,480Q66,394 98,318Q131,243 187,187Q243,131 319,98Q394,65 480,65Q566,65 642,98Q718,131 774,186Q830,242 862,318Q895,393 895,480Q895,566 862,641Q829,717 773,773Q718,829 642,862Q567,894 480,894ZM480,815Q620,815 717,717Q815,620 815,480Q815,340 717,243Q620,145 480,145Q341,145 243,243Q145,340 145,480Q145,619 243,717Q341,815 480,815Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_music.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M12,3l0.01,10.55c-0.59-0.34-1.27-0.55-2-0.55C7.79,13,6,14.79,6,17s1.79,4,4.01,4S14,19.21,14,17V7h4V3zM10.01,19c-1.1,0-2-0.9-2-2s0.9-2,2-2s2,0.9,2,2-0.9,2-2,2z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_music_filled.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M12,3v10.55c-0.59-0.34-1.27-0.55-2-0.55-2.21,0-4,1.79-4,4s1.79,4,4,4s4-1.79,4-4V7h4V3z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_notification.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"27dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M91,404Q91,306 134,225Q176,143 250,89L295,150Q236,193 201,259Q166,325 166,404L91,404ZM795,404Q795,325 759,259Q724,193 666,150L711,89Q784,144 827,225Q870,306 870,404L795,404ZM146,774L146,695L221,695L221,405Q221,316 272,245Q324,173 410,154L410,136Q410,106 431,86Q451,65 480,65Q509,65 529,86Q550,106 550,136L550,154Q636,172 688,244Q740,316 740,405L740,695L815,695L815,774L146,774ZM480,899Q445,899 420,874Q396,849 396,814L565,814Q565,849 540,874Q515,899 480,899ZM300,695L660,695L660,405Q660,331 608,278Q555,225 480,225Q405,225 353,278Q300,331 300,405L300,695Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_notification_bar.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"27dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M120,840L120,510L840,510L840,840L120,840ZM120,450L120,120L840,120L840,450L120,450Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_overlay.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M479,868L96,569L162,520L479,768L798,520L864,569ZM479,692L96,394L479,95L863,394ZM479,591L733,394L479,196L226,394Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_palette.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M480,880Q398,880,325,848.5Q252,817,197.5,762.5Q143,708,111.5,635Q80,562,80,480Q80,397,112.5,324Q145,251,200.5,197Q256,143,330,111.5Q404,80,488,80Q568,80,639,107.5Q710,135,763.5,183.5Q817,232,848.5,298.5Q880,365,880,442Q880,557,810,618.5Q740,680,640,680H566Q557,680,553.5,685Q550,690,550,696Q550,708,565,730.5Q580,753,580,782Q580,832,552.5,856Q525,880,480,880ZM260,520Q286,520,303,503Q320,486,320,460Q320,434,303,417Q286,400,260,400Q234,400,217,417Q200,434,200,460Q200,486,217,503Q234,520,260,520ZM380,360Q406,360,423,343Q440,326,440,300Q440,274,423,257Q406,240,380,240Q354,240,337,257Q320,274,320,300Q320,326,337,343Q354,360,380,360ZM580,360Q606,360,623,343Q640,326,640,300Q640,274,623,257Q606,240,580,240Q554,240,537,257Q520,274,520,300Q520,326,537,343Q554,360,580,360ZM700,520Q726,520,743,503Q760,486,760,460Q760,434,743,417Q726,400,700,400Q674,400,657,417Q640,434,640,460Q640,486,657,503Q674,520,700,520ZM480,800Q489,800,494.5,795Q500,790,500,782Q500,768,485,749Q470,730,470,692Q470,650,499,625Q528,600,570,600H640Q706,600,753,561.5Q800,523,800,442Q800,321,707.5,240.5Q615,160,488,160Q352,160,256,253Q160,346,160,480Q160,613,253.5,706.5Q347,800,480,800Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_preview.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"48dp\"\n    android:height=\"48dp\"\n    android:viewportWidth=\"24\"\n    android:viewportHeight=\"24\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M19.8,5.7c0.6,0.7 1.1,1.5 1.5,2.4S21.9,10 22,11h-2c-0.1,-0.7 -0.3,-1.4 -0.6,-2.1c-0.3,-0.7 -0.6,-1.3 -1,-1.8L19.8,5.7zM22,13c-0.1,1 -0.4,1.9 -0.8,2.8c-0.4,0.9 -0.9,1.7 -1.5,2.4l-1.4,-1.4c0.4,-0.5 0.8,-1.2 1,-1.8c0.3,-0.7 0.5,-1.4 0.6,-2.1H22zM13.1,2c1,0.1 1.9,0.3 2.8,0.7c0.9,0.4 1.7,0.9 2.5,1.5L17,5.7c-0.6,-0.4 -1.2,-0.8 -1.8,-1.1c-0.6,-0.3 -1.3,-0.5 -2.1,-0.6V2zM16.9,18.3l1.5,1.5c-0.8,0.6 -1.6,1.1 -2.5,1.5C15,21.6 14,21.9 13,22v-2c0.8,-0.1 1.4,-0.3 2.1,-0.6C15.8,19.1 16.4,18.7 16.9,18.3zM9.5,16.5v-9l7,4.5L9.5,16.5zM11,2v2C9,4.3 7.3,5.2 6,6.7S4,10 4,12s0.7,3.8 2,5.3s3,2.4 5,2.7v2c-2.6,-0.3 -4.7,-1.4 -6.4,-3.2C2.9,16.8 2,14.6 2,12s0.9,-4.8 2.6,-6.7S8.4,2.3 11,2z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_progress_bar_style.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M190,180L190,100L770,100L770,180L190,180ZM480,859Q357,859 272,774Q187,689 187,566Q187,444 272,359Q358,274 480,274Q603,274 688,359Q773,444 773,567Q773,689 688,774Q602,859 480,859ZM480,754Q557,754 612,699Q667,645 667,567Q667,489 613,434Q558,379 480,379Q403,379 348,434Q293,488 293,566Q293,644 347,699Q402,754 480,754Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_rounded_corners.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M95,865L95,783L177,783L177,865L95,865ZM95,693L95,610L177,610L177,693L95,693ZM95,521L95,439L177,439L177,521L95,521ZM95,349L95,266L177,266L177,349L95,349ZM95,177L95,94L177,94L177,177L95,177ZM267,865L267,783L350,783L350,865L267,865ZM267,177L267,94L350,94L350,177L267,177ZM439,865L439,783L521,783L521,865L439,865ZM611,865L611,783L694,783L694,865L611,865ZM783,865L783,783L866,783L866,865L783,865ZM783,693L783,610L866,610L866,693L783,693ZM866,521L783,521L783,307Q783,254 745,215Q707,177 653,177L439,177L439,94L653,94Q742,94 804,156Q866,218 866,307L866,521Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_share.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M720,880Q670,880 635,845Q600,810 600,760Q600,753 601,746Q602,738 604,732L322,568Q305,583 284,592Q263,600 240,600Q190,600 155,565Q120,530 120,480Q120,430 155,395Q190,360 240,360Q263,360 284,369Q305,377 322,392L604,228Q602,222 601,215Q600,207 600,200Q600,150 635,115Q670,80 720,80Q770,80 805,115Q840,150 840,200Q840,250 805,285Q770,320 720,320Q697,320 676,312Q655,303 638,288L356,452Q358,458 359,466Q360,473 360,480Q360,487 359,495Q358,502 356,508L638,672Q655,657 676,649Q697,640 720,640Q770,640 805,675Q840,710 840,760Q840,810 805,845Q770,880 720,880Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_size.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"960\"\n    android:viewportHeight=\"960\"\n    android:tint=\"@color/text\">\n  <path\n      android:fillColor=\"@android:color/black\"\n      android:pathData=\"M106,854L106,598L185,598L185,718L324,580L380,637L242,775L362,775L362,854L106,854ZM598,854L598,775L718,775L581,638L638,581L775,718L775,598L855,598L855,854L598,854ZM323,379L185,242L185,362L106,362L106,105L362,105L362,185L242,185L379,323L323,379ZM638,379L581,323L718,185L598,185L598,105L855,105L855,362L775,362L775,242L638,379Z\"/>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/ic_sumup.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"28dp\"\n    android:height=\"28dp\"\n    android:viewportWidth=\"921.6\"\n    android:viewportHeight=\"921.6\"\n    android:tint=\"@color/text\">\n  <group android:scaleX=\"1.3\"\n      android:scaleY=\"1.3\"\n      android:translateX=\"-138.24\"\n      android:translateY=\"-138.24\">\n    <path\n        android:pathData=\"M680.8,699h-440c-27.6,0-50-22.4-50-50V532.4c0-27.6,22.4-50,50-50h440c27.6,0,50,22.4,50,50V649C730.8,676.6,708.4,699,680.8,699z\"\n        android:fillColor=\"@android:color/black\"/>\n    <path\n        android:pathData=\"M700.5,353.3c-18.1,0-34.1-10.2-41.7-26.7l-20.6-45.4L593,260.7c-15.5-7-25.5-21.4-26.8-38.1H240.8c-27.6,0-50,22.4-50,50v116.6c0,27.6,22.4,50,50,50h440c27.6,0,50-22.4,50-50v-47.4C722.6,349.1,711.9,353.3,700.5,353.3z\"\n        android:fillColor=\"@android:color/black\"/>\n    <path\n        android:pathData=\"M795.5,204.6l-55.5-25.2-25.2-55.5c-5.5-12.4-23.3-12.4-28.8,0l-25.2,55.5-55.5,25.2c-12.4,5.7-12.4,23.3,0,28.8l55.5,25.2L686,314c5.7,12.4,23.3,12.4,28.8,0l25.2-55.5l55.5-25.2C807.9,227.7,807.9,210.1,795.5,204.6z\"\n        android:fillColor=\"@android:color/black\"/>\n  </group>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable/layout_bg.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <corners android:radius=\"12dp\" />\n    <solid android:color=\"?attr/colorBackgroundFloating\" />\n</shape>\n"
  },
  {
    "path": "app/src/main/res/drawable/selector_download.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:drawable=\"@drawable/ic_download_filled\" android:state_checked=\"true\"/>\n    <item android:drawable=\"@drawable/ic_download\"/>\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/selector_music.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <item android:drawable=\"@drawable/ic_music_filled\" android:state_checked=\"true\"/>\n    <item android:drawable=\"@drawable/ic_music\"/>\n</selector>"
  },
  {
    "path": "app/src/main/res/drawable/splashscreen.xml",
    "content": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:width=\"30dp\"\n    android:height=\"30dp\"\n    android:viewportWidth=\"30\"\n    android:viewportHeight=\"30\"\n    android:tint=\"@color/deep_purple_800\">\n  <group\n      android:name=\"splashscreen_group\"\n      android:translateX=\"3\"\n      android:translateY=\"3\">\n    <path\n        android:fillColor=\"@android:color/black\"\n        android:pathData=\"M3.4,10.5h1v0.7h0c0.2,-0.3 0.4,-0.5 0.7,-0.7c0.3,-0.2 0.7,-0.3 1,-0.3c0.7,0 1.2,0.2 1.5,0.6c0.4,0.4 0.5,0.9 0.5,1.6v3.4h-1v-3.3c0,-0.9 -0.5,-1.3 -1.3,-1.3c-0.4,0 -0.7,0.2 -1,0.5c-0.3,0.3 -0.4,0.7 -0.4,1.2v3h-1V10.5z\"/>\n    <path\n        android:fillColor=\"@android:color/black\"\n        android:pathData=\"M11.8,10.3c-1.6,0 -2.9,1.3 -2.9,2.9c0,1.6 1.3,2.9 2.9,2.9c1.6,0 2.9,-1.3 2.9,-2.9C14.7,11.6 13.4,10.3 11.8,10.3zM11.8,15.2c-1.1,0 -2,-0.9 -2,-2c0,-1.1 0.9,-2 2,-2c1.1,0 2,0.9 2,2C13.8,14.3 12.9,15.2 11.8,15.2z\"/>\n    <path\n        android:fillColor=\"@android:color/black\"\n        android:pathData=\"M17.5,16c-0.4,0 -0.8,-0.1 -1.1,-0.4s-0.4,-0.6 -0.4,-1.1v-3H15v-0.9h0.9V8.9h1v1.6h1.3v0.9H17v2.7c0,0.4 0.1,0.6 0.2,0.7c0.1,0.1 0.3,0.2 0.5,0.2c0.1,0 0.2,0 0.2,0s0.1,0 0.2,-0.1l0.3,0.9C18.1,15.9 17.8,16 17.5,16z\"/>\n    <path\n        android:fillColor=\"@android:color/black\"\n        android:pathData=\"M20.6,8.6c0,0.2 -0.1,0.4 -0.2,0.5c-0.1,0.1 -0.3,0.2 -0.5,0.2s-0.4,-0.1 -0.5,-0.2c-0.1,-0.1 -0.2,-0.3 -0.2,-0.5c0,-0.2 0.1,-0.4 0.2,-0.5c0.1,-0.1 0.3,-0.2 0.5,-0.2s0.4,0.1 0.5,0.2S20.6,8.4 20.6,8.6zM20.4,10.5v5.4h-1v-5.4H20.4z\"/>\n  </group>\n</vector>\n"
  },
  {
    "path": "app/src/main/res/drawable-v31/splashscreen.xml",
    "content": "<animated-vector\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:aapt=\"http://schemas.android.com/aapt\">\n    <aapt:attr name=\"android:drawable\">\n        <vector\n            android:name=\"noti_splashscreen\"\n            android:width=\"30dp\"\n            android:height=\"30dp\"\n            android:viewportWidth=\"30\"\n            android:viewportHeight=\"30\"\n            android:tint=\"@color/deep_purple_800\">\n            <group\n                android:name=\"pb_group\"\n                android:translateX=\"14.85\"\n                android:translateY=\"22.2\"\n                android:scaleX=\"0.45\"\n                android:scaleY=\"0.45\"\n                android:rotation=\"-135\">\n                <path\n                    android:name=\"progress_bar\"\n                    android:pathData=\"M 13.4 13.4 C 15.5 11.2 15.5 7.8 13.4 5.6 C 11.2 3.5 7.8 3.5 5.6 5.6 C 3.5 7.8 3.5 11.2 5.6 13.4 C 7.8 15.5 11.2 15.5 13.4 13.4 Z\"\n                    android:strokeColor=\"@android:color/black\"\n                    android:strokeWidth=\"2.1\"/>\n            </group>\n            <group\n                android:name=\"letters_group\"\n                android:translateX=\"3\"\n                android:translateY=\"3\">\n                <path\n                    android:name=\"letters\"\n                    android:pathData=\"M 3.4 10.5 L 4.4 10.5 L 4.4 11.2 C 4.6 10.9 4.8 10.7 5.1 10.5 C 5.4 10.3 5.8 10.2 6.1 10.2 C 6.8 10.2 7.3 10.4 7.6 10.8 C 8 11.2 8.1 11.7 8.1 12.4 L 8.1 15.8 L 7.1 15.8 L 7.1 12.5 C 7.1 11.6 6.6 11.2 5.8 11.2 C 5.4 11.2 5.1 11.4 4.8 11.7 C 4.5 12 4.4 12.4 4.4 12.9 L 4.4 15.9 L 3.4 15.9 L 3.4 10.5 Z M 17.5 16 C 17.1 16 16.7 15.9 16.4 15.6 C 16.1 15.3 16 15 16 14.5 L 16 11.5 L 15 11.5 L 15 10.6 L 15.9 10.6 L 15.9 8.9 L 16.9 8.9 L 16.9 10.5 L 18.2 10.5 L 18.2 11.4 L 17 11.4 L 17 14.1 C 17 14.5 17.1 14.7 17.2 14.8 C 17.3 14.9 17.5 15 17.7 15 L 17.9 15 C 17.9 15 18 15 18.1 14.9 L 18.4 15.8 C 18.1 15.9 17.8 16 17.5 16 Z M 20.6 8.6 C 20.6 8.8 20.5 9 20.4 9.1 C 20.3 9.2 20.1 9.3 19.9 9.3 C 19.7 9.3 19.5 9.2 19.4 9.1 C 19.3 9 19.2 8.8 19.2 8.6 C 19.2 8.4 19.3 8.2 19.4 8.1 C 19.5 8 19.7 7.9 19.9 7.9 C 20.1 7.9 20.3 8 20.4 8.1 C 20.5 8.2 20.6 8.4 20.6 8.6 Z M 20.4 10.5 L 20.4 15.9 L 19.4 15.9 L 19.4 10.5 L 20.4 10.5 Z\"\n                    android:fillColor=\"@android:color/black\"\n                    android:fillAlpha=\"0\"/>\n            </group>\n        </vector>\n    </aapt:attr>\n    <target android:name=\"progress_bar\">\n        <aapt:attr name=\"android:animation\">\n            <objectAnimator\n                android:propertyName=\"trimPathStart\"\n                android:startOffset=\"25\"\n                android:duration=\"400\"\n                android:valueFrom=\"1\"\n                android:valueTo=\"0\"\n                android:valueType=\"floatType\"\n                android:interpolator=\"@android:anim/accelerate_decelerate_interpolator\"/>\n        </aapt:attr>\n    </target>\n    <target android:name=\"letters\">\n        <aapt:attr name=\"android:animation\">\n            <objectAnimator\n                android:propertyName=\"fillAlpha\"\n                android:startOffset=\"225\"\n                android:duration=\"200\"\n                android:valueFrom=\"0\"\n                android:valueTo=\"1\"\n                android:valueType=\"floatType\"\n                android:interpolator=\"@android:anim/decelerate_interpolator\"/>\n        </aapt:attr>\n    </target>\n</animated-vector>\n"
  },
  {
    "path": "app/src/main/res/layout/activity_main.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.coordinatorlayout.widget.CoordinatorLayout\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:id=\"@+id/coordinatorLayout\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\">\n\n    <com.google.android.material.appbar.AppBarLayout\n        android:id=\"@+id/appBarLayout\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        app:elevation=\"0dp\">\n\n        <com.google.android.material.appbar.CollapsingToolbarLayout\n            style=\"?attr/collapsingToolbarLayoutLargeStyle\"\n            android:id=\"@+id/collapsingToolbar\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"?attr/collapsingToolbarLayoutLargeSize\"\n            app:collapsedTitleGravity=\"center\"\n            android:background=\"?android:attr/colorBackground\"\n            app:contentScrim=\"?android:attr/colorBackground\"\n            app:expandedTitleMarginStart=\"30dp\"\n            app:expandedTitleMarginBottom=\"28dp\"\n            app:layout_scrollFlags=\"scroll|exitUntilCollapsed|snap\">\n\n            <com.google.android.material.appbar.MaterialToolbar\n                android:id=\"@+id/topAppBar\"\n                android:layout_width=\"match_parent\"\n                android:layout_height=\"?attr/actionBarSize\"\n                app:layout_collapseMode=\"pin\"\n                app:title=\"@string/app_name\"\n                app:menu=\"@menu/settings_menu\" />\n\n        </com.google.android.material.appbar.CollapsingToolbarLayout>\n\n    </com.google.android.material.appbar.AppBarLayout>\n\n    <FrameLayout\n        android:id=\"@+id/settings\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"match_parent\"\n        app:layout_behavior=\"@string/appbar_scrolling_view_behavior\" />\n\n    <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton\n        android:id=\"@+id/previewFab\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:visibility=\"gone\"\n        android:layout_gravity=\"bottom|end\"\n        app:icon=\"@drawable/ic_preview\"\n        android:text=\"@string/settingsPreviewFab\"\n        android:textSize=\"18sp\"\n        app:iconSize=\"26dp\"\n        android:layout_marginEnd=\"30dp\"\n        android:layout_marginBottom=\"30dp\" />\n\n</androidx.coordinatorlayout.widget.CoordinatorLayout>"
  },
  {
    "path": "app/src/main/res/layout/advanced_style_dialog.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.core.widget.NestedScrollView\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:fillViewport=\"true\">\n\n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:orientation=\"vertical\">\n\n        <TextView\n            style=\"?android:attr/windowTitleStyle\"\n            android:id=\"@+id/portraitStyleTitle\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:text=\"@string/prefsProgressBarStylePortraitTitle\"\n            android:singleLine=\"false\"\n            android:paddingStart=\"?dialogPreferredPadding\"\n            android:paddingEnd=\"?dialogPreferredPadding\"\n            android:paddingTop=\"18dp\"\n            android:paddingBottom=\"8dp\" />\n\n        <ListView\n            android:id=\"@+id/portraitStyleOptions\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:divider=\"@null\"\n            android:choiceMode=\"singleChoice\" />\n\n        <TextView\n            style=\"?android:attr/windowTitleStyle\"\n            android:id=\"@+id/landscapeStyleTitle\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:text=\"@string/prefsProgressBarStyleLandscapeTitle\"\n            android:singleLine=\"false\"\n            android:paddingStart=\"?dialogPreferredPadding\"\n            android:paddingEnd=\"?dialogPreferredPadding\"\n            android:paddingTop=\"8dp\"\n            android:paddingBottom=\"8dp\"/>\n\n        <ListView\n            android:id=\"@+id/landscapeStyleOptions\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            android:divider=\"@null\"\n            android:choiceMode=\"singleChoice\"/>\n\n    </LinearLayout>\n\n</androidx.core.widget.NestedScrollView>"
  },
  {
    "path": "app/src/main/res/layout/app_item.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:id=\"@+id/item_container\"\n    android:orientation=\"horizontal\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:gravity=\"center_vertical\"\n    android:paddingHorizontal=\"16dp\"\n    android:paddingVertical=\"10dp\"\n    android:background=\"?android:attr/selectableItemBackground\">\n\n    <TextView\n        android:id=\"@+id/app_name\"\n        android:layout_width=\"0dp\"\n        android:layout_height=\"wrap_content\"\n        android:layout_marginStart=\"14dp\"\n        android:layout_marginEnd=\"12dp\"\n        android:drawablePadding=\"19dp\"\n        android:gravity=\"center_vertical\"\n        android:textSize=\"22sp\"\n        android:textColor=\"?android:attr/textColorPrimary\"\n        android:layout_weight=\"1\"/>\n\n    <com.google.android.material.button.MaterialButton\n        android:id=\"@+id/color_picker\"\n        android:layout_width=\"41dp\"\n        android:layout_height=\"41dp\"\n        android:insetTop=\"5dp\"\n        android:insetBottom=\"5dp\"\n        android:insetLeft=\"5dp\"\n        android:insetRight=\"5dp\"\n        android:scrollbars=\"none\"\n        android:foreground=\"?actionBarItemBackground\"\n        app:strokeColor=\"#46000000\"\n        app:strokeWidth=\"2dp\"/>\n\n    <com.google.android.material.checkbox.MaterialCheckBox\n        android:id=\"@+id/checkbox\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"/>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/banner_preference.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<com.google.android.material.card.MaterialCardView\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    style=\"@style/Widget.Material3.CardView.Filled\"\n    app:cardCornerRadius=\"18dp\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:layout_margin=\"?android:attr/listPreferredItemPaddingStart\">\n\n    <LinearLayout\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:paddingBottom=\"8dp\"\n        android:layout_marginStart=\"24dp\"\n        android:orientation=\"vertical\">\n\n        <LinearLayout\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\">\n\n            <TextView\n                android:id=\"@android:id/title\"\n                android:layout_width=\"0dp\"\n                android:layout_height=\"wrap_content\"\n                android:layout_weight=\"1\"\n                android:layout_marginTop=\"16dp\"\n                android:textAppearance=\"?android:attr/textAppearanceListItem\" />\n\n            <ImageButton\n                android:id=\"@+id/closeBtn\"\n                android:layout_width=\"38dp\"\n                android:layout_height=\"38dp\"\n                android:padding=\"6dp\"\n                android:layout_marginTop=\"8dp\"\n                android:layout_marginEnd=\"8dp\"\n                android:layout_marginStart=\"6dp\"\n                android:background=\"@drawable/circular_mask\"\n                android:scaleType=\"fitCenter\"\n                android:src=\"@drawable/ic_close\"\n                app:tint=\"@color/text\" />\n\n        </LinearLayout>\n\n        <Button\n            android:id=\"@+id/bannerBtn\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            style=\"@style/Widget.Material3.Button.TextButton\"\n            android:layout_marginTop=\"4dp\"\n            android:textColor=\"?attr/colorOnPrimaryContainer\"/>\n\n    </LinearLayout>\n\n</com.google.android.material.card.MaterialCardView>"
  },
  {
    "path": "app/src/main/res/layout/button_toggle_group.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.constraintlayout.widget.ConstraintLayout\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:layout_margin=\"?android:attr/listPreferredItemPaddingStart\">\n\n    <com.google.android.material.card.MaterialCardView\n        style=\"@style/Widget.Material3.CardView.Filled\"\n        app:cardCornerRadius=\"18dp\"\n        android:layout_width=\"0dp\"\n        android:layout_height=\"match_parent\"\n        app:cardBackgroundColor=\"?attr/colorBackgroundFloating\"\n        app:layout_constraintWidth_max=\"400dp\"\n        app:layout_constraintStart_toStartOf=\"parent\"\n        app:layout_constraintEnd_toEndOf=\"parent\"\n        app:layout_constraintHorizontal_bias=\"0\">\n\n        <LinearLayout\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"match_parent\"\n            android:orientation=\"vertical\"\n            android:paddingVertical=\"4dp\"\n            android:paddingHorizontal=\"8dp\">\n\n            <TextView\n                android:layout_width=\"match_parent\"\n                android:layout_height=\"wrap_content\"\n                android:text=\"@string/activateToggle\"\n                android:textAppearance=\"?android:attr/textAppearanceSmall\"\n                android:textSize=\"18sp\"\n                android:textStyle=\"bold\"\n                android:layout_marginTop=\"4dp\"\n                android:layout_marginHorizontal=\"14dp\" />\n\n            <com.google.android.material.button.MaterialButtonToggleGroup\n                android:id=\"@+id/toggleGroup\"\n                android:layout_width=\"match_parent\"\n                android:layout_height=\"wrap_content\">\n\n                <com.google.android.material.button.MaterialButton\n                    android:id=\"@+id/toggleDownloads\"\n                    style=\"@style/ToggleGroupButtonStyle\"\n                    android:layout_width=\"0dp\"\n                    android:layout_height=\"match_parent\"\n                    android:layout_weight=\"1\"\n                    app:icon=\"@drawable/selector_download\"\n                    app:iconSize=\"28dp\"\n                    app:iconGravity=\"top\"\n                    android:text=\"@string/downloads\"\n                    android:paddingVertical=\"16dp\"/>\n\n                <com.google.android.material.button.MaterialButton\n                    android:id=\"@+id/toggleMedia\"\n                    style=\"@style/ToggleGroupButtonStyle\"\n                    android:layout_width=\"0dp\"\n                    android:layout_height=\"match_parent\"\n                    android:layout_weight=\"1\"\n                    app:icon=\"@drawable/selector_music\"\n                    app:iconSize=\"28dp\"\n                    app:iconGravity=\"top\"\n                    android:text=\"@string/media\"\n                    android:paddingVertical=\"16dp\"/>\n\n            </com.google.android.material.button.MaterialButtonToggleGroup>\n\n        </LinearLayout>\n\n    </com.google.android.material.card.MaterialCardView>\n\n</androidx.constraintlayout.widget.ConstraintLayout>\n"
  },
  {
    "path": "app/src/main/res/layout/fragment_per_app_settings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:orientation=\"vertical\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:gravity=\"center\">\n\n    <androidx.recyclerview.widget.RecyclerView\n        android:id=\"@+id/apps_recycler_view\"\n        android:layout_height=\"match_parent\"\n        android:layout_width=\"match_parent\"\n        android:paddingBottom=\"100dp\"\n        android:scrollbars=\"none\"\n        android:visibility=\"gone\"\n        android:clipToPadding=\"false\"/>\n\n    <TextView\n        android:id=\"@+id/empty_view\"\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:paddingHorizontal=\"30dp\"\n        android:gravity=\"center_horizontal\"\n        android:text=\"@string/perAppSettingsEmptyView\"\n        android:textColor=\"?android:attr/textColorPrimary\"\n        android:textSize=\"20sp\"\n        android:layout_marginBottom=\"100dp\"/>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout/material_switch.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!-- https://stackoverflow.com/a/76270479 -->\n<com.google.android.material.materialswitch.MaterialSwitch\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:id=\"@+id/switchWidget\"\n    android:layout_width=\"wrap_content\"\n    android:layout_height=\"wrap_content\"\n    android:background=\"@null\" />"
  },
  {
    "path": "app/src/main/res/layout/per_app_settings_footer.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<TextView\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:layout_marginHorizontal=\"14dp\"\n    android:paddingStart=\"?android:attr/listPreferredItemPaddingStart\"\n    android:paddingEnd=\"?android:attr/listPreferredItemPaddingEnd\"\n    android:textAppearance=\"?android:attr/textAppearanceSmall\"\n    android:textColor=\"?android:attr/textColorSecondary\"\n    android:maxLines=\"4\"\n    android:ellipsize=\"end\"\n    android:gravity=\"center_vertical\"\n    android:text=\"@string/perAppSettingsEmptyView\"\n    android:layout_marginVertical=\"6dp\"\n    android:lineSpacingMultiplier=\"1.2\"\n    android:letterSpacing=\"0.018\"\n    android:paddingVertical=\"10dp\"\n    app:drawableLeftCompat=\"@drawable/ic_info\"\n    android:drawablePadding=\"28dp\"/>"
  },
  {
    "path": "app/src/main/res/layout/progress_bar.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:id=\"@+id/container_parent\"\n    android:layout_height=\"match_parent\"\n    android:layout_width=\"match_parent\">\n\n    <FrameLayout\n        android:id=\"@+id/container\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        app:layout_constraintLeft_toLeftOf=\"parent\"\n        app:layout_constraintRight_toRightOf=\"parent\"\n        app:layout_constraintTop_toTopOf=\"parent\">\n                <com.google.android.material.progressindicator.LinearProgressIndicator\n                    android:id=\"@+id/progressBar\"\n                    android:layout_width=\"match_parent\"\n                    android:layout_height=\"wrap_content\"\n                    android:max=\"@integer/progress_bar_max\"\n                    android:progress=\"0\"\n                    android:theme=\"@style/Theme.NotiProgressBar\"\n                    android:visibility=\"gone\"\n                    app:trackStopIndicatorSize=\"0dp\"\n                    app:indicatorTrackGapSize=\"0dp\"\n                    app:hideAnimationBehavior=\"outward\" />\n                <com.google.android.material.progressindicator.CircularProgressIndicator\n                    android:id=\"@+id/circularProgressBar\"\n                    android:layout_width=\"wrap_content\"\n                    android:layout_height=\"wrap_content\"\n                    android:max=\"@integer/progress_bar_max\"\n                    android:progress=\"0\"\n                    android:theme=\"@style/Theme.NotiProgressBar\"\n                    android:visibility=\"visible\"\n                    app:hideAnimationBehavior=\"inward\"\n                    app:indicatorInset=\"0dp\"\n                    app:indicatorTrackGapSize=\"0dp\"\n                    app:showAnimationBehavior=\"outward\"/>\n    </FrameLayout>\n</androidx.constraintlayout.widget.ConstraintLayout>"
  },
  {
    "path": "app/src/main/res/layout/seekbar_preference.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:minHeight=\"?android:attr/listPreferredItemHeightSmall\"\n    android:orientation=\"horizontal\"\n    android:gravity=\"center_vertical\"\n    android:paddingStart=\"?android:attr/listPreferredItemPaddingStart\"\n    android:paddingEnd=\"?android:attr/listPreferredItemPaddingEnd\"\n    android:clipChildren=\"false\"\n    android:clipToPadding=\"false\"\n    android:baselineAligned=\"false\">\n\n    <ImageView\n        android:id=\"@android:id/icon\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_gravity=\"center\"/>\n\n    <LinearLayout\n        android:layout_width=\"0dp\"\n        android:layout_height=\"wrap_content\"\n        android:layout_weight=\"1\"\n        android:orientation=\"vertical\"\n        android:layout_marginStart=\"12dp\"\n        android:layout_marginTop=\"6dp\"\n        android:layout_marginBottom=\"4dp\">\n\n        <TextView\n            android:id=\"@android:id/title\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:textAppearance=\"?android:attr/textAppearanceListItem\"\n            android:ellipsize=\"marquee\"\n            android:layout_marginStart=\"16dp\"\n            android:fadingEdge=\"horizontal\"/>\n\n        <TextView\n            android:id=\"@android:id/summary\"\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"wrap_content\"\n            android:layout_marginStart=\"16dp\"\n            android:textAppearance=\"?android:attr/textAppearanceSmall\"\n            android:textColor=\"?android:attr/textColorSecondary\"\n            android:maxLines=\"4\"/>\n\n        <com.google.android.material.slider.Slider\n            android:id=\"@+id/slider\"\n            android:layout_width=\"match_parent\"\n            android:layout_height=\"wrap_content\"\n            app:labelBehavior=\"gone\"\n            android:paddingTop=\"4dp\"\n            android:stepSize=\"1\"/>\n\n    </LinearLayout>\n\n</LinearLayout>"
  },
  {
    "path": "app/src/main/res/layout-land/button_toggle_group.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.constraintlayout.widget.ConstraintLayout\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:paddingHorizontal=\"28dp\"\n    android:layout_marginVertical=\"?android:attr/listPreferredItemPaddingStart\">\n\n    <com.google.android.material.card.MaterialCardView\n        style=\"@style/Widget.Material3.CardView.Filled\"\n        app:cardCornerRadius=\"18dp\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"match_parent\"\n        app:cardBackgroundColor=\"?attr/colorBackgroundFloating\"\n        app:layout_constraintStart_toStartOf=\"parent\"\n        app:layout_constraintEnd_toEndOf=\"parent\"\n        app:layout_constraintHorizontal_bias=\"0\">\n\n        <LinearLayout\n            android:layout_width=\"wrap_content\"\n            android:layout_height=\"match_parent\"\n            android:gravity=\"center_vertical\"\n            android:paddingVertical=\"4dp\"\n            android:paddingHorizontal=\"8dp\">\n\n            <TextView\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\"\n                android:text=\"@string/activateToggle\"\n                android:textAppearance=\"?android:attr/textAppearanceSmall\"\n                android:textSize=\"18sp\"\n                android:textStyle=\"bold\"\n                android:layout_marginHorizontal=\"14dp\"/>\n\n            <com.google.android.material.button.MaterialButtonToggleGroup\n                android:id=\"@+id/toggleGroup\"\n                android:layout_width=\"wrap_content\"\n                android:layout_height=\"wrap_content\">\n\n                <com.google.android.material.button.MaterialButton\n                    android:id=\"@+id/toggleDownloads\"\n                    style=\"@style/ToggleGroupButtonStyle\"\n                    android:layout_width=\"wrap_content\"\n                    android:layout_height=\"match_parent\"\n                    android:paddingVertical=\"8dp\"\n                    android:paddingHorizontal=\"48dp\"\n                    app:icon=\"@drawable/selector_download\"\n                    app:iconSize=\"28dp\"\n                    app:iconPadding=\"10dp\"\n                    android:text=\"@string/downloads\"/>\n\n                <com.google.android.material.button.MaterialButton\n                    android:id=\"@+id/toggleMedia\"\n                    style=\"@style/ToggleGroupButtonStyle\"\n                    android:layout_width=\"wrap_content\"\n                    android:layout_height=\"match_parent\"\n                    android:paddingVertical=\"8dp\"\n                    android:paddingHorizontal=\"48dp\"\n                    app:icon=\"@drawable/selector_music\"\n                    app:iconSize=\"28dp\"\n                    app:iconPadding=\"10dp\"\n                    android:text=\"@string/media\"/>\n\n            </com.google.android.material.button.MaterialButtonToggleGroup>\n\n        </LinearLayout>\n\n    </com.google.android.material.card.MaterialCardView>\n\n</androidx.constraintlayout.widget.ConstraintLayout>\n"
  },
  {
    "path": "app/src/main/res/menu/settings_menu.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<menu xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\">\n    <item\n        android:id=\"@+id/bug_report\"\n        android:icon=\"@drawable/ic_bug_report\"\n        android:title=\"@string/menuReportBug\"\n        app:showAsAction=\"ifRoom\"\n        android:visible=\"false\"/>\n</menu>"
  },
  {
    "path": "app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <background android:drawable=\"@color/ic_launcher_background\"/>\n    <foreground android:drawable=\"@drawable/ic_launcher_foreground\"/>\n    <monochrome android:drawable=\"@drawable/ic_launcher_foreground\"/>\n</adaptive-icon>"
  },
  {
    "path": "app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<adaptive-icon xmlns:android=\"http://schemas.android.com/apk/res/android\">\n    <background android:drawable=\"@color/ic_launcher_background\"/>\n    <foreground android:drawable=\"@drawable/ic_launcher_foreground\"/>\n    <monochrome android:drawable=\"@drawable/ic_launcher_foreground\"/>\n</adaptive-icon>"
  },
  {
    "path": "app/src/main/res/resources.properties",
    "content": "unqualifiedResLocale=en"
  },
  {
    "path": "app/src/main/res/values/arrays.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string-array name=\"progressBarStyle\">\n        <item>@string/prefsProgressBarStyleEntryNone</item>\n        <item>@string/prefsProgressBarStyleEntryCircular</item>\n        <item>@string/prefsProgressBarStyleEntryLinear</item>\n    </string-array>\n    <string-array name=\"progressBarStyleValues\">\n        <item>none</item>\n        <item>circular</item>\n        <item>linear</item>\n    </string-array>\n\n    <string-array name=\"colorsArray\">\n        <item>@string/colorRed</item>\n        <item>@string/colorPink</item>\n        <item>@string/colorPurple</item>\n        <item>@string/colorDeepPurple</item>\n        <item>@string/colorIndigo</item>\n        <item>@string/colorBlue</item>\n        <item>@string/colorLightBlue</item>\n        <item>@string/colorCyan</item>\n        <item>@string/colorTeal</item>\n        <item>@string/colorGreen</item>\n        <item>@string/colorLightGreen</item>\n        <item>@string/colorLime</item>\n        <item>@string/colorYellow</item>\n        <item>@string/colorAmber</item>\n        <item>@string/colorOrange</item>\n        <item>@string/colorDeepOrange</item>\n        <item>@string/colorBrown</item>\n        <item>@string/colorGrey</item>\n        <item>@string/colorWhite</item>\n    </string-array>\n    <array name=\"colorsArrayValues\">\n        <item>#D32F2F</item>\n        <item>#D81B60</item>\n        <item>#8E24AA</item>\n        <item>#6200EE</item>\n        <item>#303F9F</item>\n        <item>#1A73E9</item>\n        <item>#03A9F4</item>\n        <item>#00BCD4</item>\n        <item>#009688</item>\n        <item>#4CAF50</item>\n        <item>#8BC34A</item>\n        <item>#CDDC39</item>\n        <item>#FFEB3B</item>\n        <item>#FFC107</item>\n        <item>#FF9800</item>\n        <item>#FF5722</item>\n        <item>#795548</item>\n        <item>#9E9E9E</item>\n        <item>#FFFFFF</item>\n    </array>\n</resources>"
  },
  {
    "path": "app/src/main/res/values/attrs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <declare-styleable name=\"HorizontalNumberPicker\">\n        <attr name=\"min_number\" format=\"integer\"/>\n        <attr name=\"max_number\" format=\"integer\"/>\n        <attr name=\"default_value\" format=\"integer\"/>\n    </declare-styleable>\n</resources>"
  },
  {
    "path": "app/src/main/res/values/colors.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <color name=\"purple_500\">#FF6200EE</color>\n    <color name=\"deep_purple_100\">#D1C4E9</color>\n    <color name=\"deep_purple_800\">#4527A0</color>\n    <color name=\"text\">#000000</color>\n    <color name=\"system_accent_color\">@color/material_dynamic_primary40</color>\n    <color name=\"app_accent_color\">#EADDFF</color>\n</resources>"
  },
  {
    "path": "app/src/main/res/values/dimens.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <integer name=\"progress_bar_max\">10000</integer>\n</resources>"
  },
  {
    "path": "app/src/main/res/values/ic_launcher_background.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <color name=\"ic_launcher_background\">@color/deep_purple_100</color>\n</resources>"
  },
  {
    "path": "app/src/main/res/values/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"app_name\" translatable=\"false\">Noti Progress Bar</string>\n    <string name=\"app_name_short\" translatable=\"false\">noti</string>\n    <string name=\"menuReportBug\">Report Bug</string>\n    <string name=\"settingsPreviewFab\">Preview</string>\n    <string name=\"notificationListenerDescription\">Reads notifications with a progress bar</string>\n    <string name=\"perAppSettingsEmptyView\">Noti will identify more compatible apps as notifications are received</string>\n    <string name=\"activateToggle\">Enabled for</string>\n    <string name=\"downloads\">Downloads</string>\n    <string name=\"media\">Media</string>\n    <string name=\"reset\">Reset</string>\n    <string name=\"holePunchInstruction\">Change alignment in circular progress bar tweaks</string>\n    <string name=\"prefsBatteryBannerSummary\">You may need to disable battery optimizations and allow autostart for Noti to work in the background. A reboot after doing this may be necessary</string>\n    <string name=\"prefsBatteryBannerButton\">Learn more</string>\n    <string name=\"prefsCategorySetup\">setup</string>\n    <string name=\"prefsCategoryGeneral\">general</string>\n    <string name=\"prefsNotificationPermissionTitle\">Allow notification access</string>\n    <string name=\"prefsNotificationPermissionSummary\">Required to read notifications with a progress bar</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Grant accessibility permission</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Required to display in the lock screen and system apps</string>\n    <string name=\"prefsSAWPermissionTitle\">Allow displaying over other apps</string>\n    <string name=\"prefsSAWPermissionSummary\">Required to display the progress bar overlay</string>\n    <string name=\"prefsCategoryCustomization\">customization</string>\n    <string name=\"prefsProgressBarStyleTitle\">Select progress bar style</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">Portrait progress bar style</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">Landscape progress bar style</string>\n    <string name=\"advancedOptions\">Advanced Options</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">No progress bar</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Linear progress bar</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Circular progress bar</string>\n    <string name=\"prefsCategoryTweaks\">tweaks</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Linear progress bar tweaks</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Progress bar thickness</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Change size of the progress bar\\'s track</string>\n    <string name=\"prefsShowBelowNotchTitle\">Show below display cutout</string>\n    <string name=\"prefsShowBelowNotchSummary\">Display progress bar below any notch or hole punch</string>\n    <string name=\"prefsStatusBarHeightInfo\">Your status bar is %d pixels tall</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Circular progress bar tweaks</string>\n    <string name=\"prefsProgressBarOffsetTitle\">Horizontal offset</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Change progress bar alignment</string>\n    <string name=\"prefsCutoutSizeTitle\">Cutout size</string>\n    <string name=\"prefsCutoutSizeSummary\">Change size of the inner diameter</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Margin from the top</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Change spacing from top of the screen</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Perfect fit? Share configuration</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Let others with the same device use your configuration</string>\n    <string name=\"prefsMultiScreenInfoCard\">For multiple screens, access the settings through each display to adjust the bar for that setup</string>\n    <string name=\"prefsBlackBackgroundTitle\">Use black background</string>\n    <string name=\"prefsBlackBackgroundSummary\">Switch to progress bar with black track</string>\n    <string name=\"prefsPerAppSettingsTitle\">Per-app settings</string>\n    <string name=\"prefsPerAppSettingsSummary\">Toggle noti on per-app basis</string>\n    <string name=\"prefsRoundedCornersTitle\">Use progress bar with rounded corners</string>\n    <string name=\"prefsRoundedCornersSummary\">Switch to progress bar with rounded ends</string>\n    <string name=\"prefsShowInLockScreenTitle\">Show progress bar in lock screen</string>\n    <string name=\"prefsShowInLockScreenSummary\">Will also show in the always on display</string>\n    <string name=\"prefsDisableInFullScreenTitle\">Disable in fullscreen mode</string>\n    <string name=\"prefsDisableInFullScreenSummary\">Hide progress bar in fullscreen apps</string>\n    <string name=\"prefsNotificationColorTitle\">Match notification color</string>\n    <string name=\"prefsNotificationColorSummary\">Use the notification\\'s color for the progress bar</string>\n    <string name=\"prefsChangeColorTitle\">Change progress bar color</string>\n    <string name=\"prefsCategoryMore\">more</string>\n    <string name=\"prefsCalentileTitle\">Try %s on Google Play</string>\n    <string name=\"prefsCalentileSummary\">Support the developer</string>\n    <string name=\"shareConfigPositiveMessage\">Thanks for sharing your configuration!</string>\n    <string name=\"shareConfigNoInternetMessage\">Enable internet to upload configuration</string>\n    <string name=\"colorRed\">Red</string>\n    <string name=\"colorPink\">Pink</string>\n    <string name=\"colorPurple\">Purple</string>\n    <string name=\"colorDeepPurple\">Deep purple</string>\n    <string name=\"colorIndigo\">Indigo</string>\n    <string name=\"colorBlue\">Blue</string>\n    <string name=\"colorLightBlue\">Light blue</string>\n    <string name=\"colorCyan\">Cyan</string>\n    <string name=\"colorTeal\">Teal</string>\n    <string name=\"colorGreen\">Green</string>\n    <string name=\"colorLightGreen\">Light green</string>\n    <string name=\"colorLime\">Lime</string>\n    <string name=\"colorYellow\">Yellow</string>\n    <string name=\"colorAmber\">Amber</string>\n    <string name=\"colorOrange\">Orange</string>\n    <string name=\"colorDeepOrange\">Deep orange</string>\n    <string name=\"colorBrown\">Brown</string>\n    <string name=\"colorBlack\">Black</string>\n    <string name=\"colorGrey\">Grey</string>\n    <string name=\"colorWhite\">White</string>\n    <string name=\"colorMaterialYou\" translatable=\"false\">Material you</string>\n</resources>"
  },
  {
    "path": "app/src/main/res/values/themes.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources xmlns:tools=\"http://schemas.android.com/tools\">\n\n    <style name=\"Theme.NotiProgressBar\" parent=\"Theme.Material3.DayNight.NoActionBar\">\n        <item name=\"android:statusBarColor\" tools:targetApi=\"lollipop\">@android:color/transparent</item>\n        <item name=\"android:navigationBarColor\" tools:targetApi=\"lollipop\">@android:color/transparent</item>\n        <item name=\"android:windowLightStatusBar\" tools:targetApi=\"m\">true</item>\n        <item name=\"dialogCornerRadius\">20dp</item>\n    </style>\n\n    <style name=\"TextAppearance.AppCompat.Widget.ActionBar.Title\" parent=\"TextAppearance.AppCompat.Widget.ActionBar.Title\" tools:ignore=\"ResourceCycle\">\n        <item name=\"android:textSize\">22sp</item>\n        <item name=\"android:textColor\">@color/text</item>\n    </style>\n\n    <style name=\"Preference.SwitchPreferenceCompat\" parent=\"Preference.SwitchPreferenceCompat\" tools:ignore=\"ResourceCycle\">\n        <item name=\"widgetLayout\">@layout/material_switch</item>\n    </style>\n\n    <style name=\"SplashScreen\" parent=\"Theme.SplashScreen\">\n        <item name=\"windowSplashScreenBackground\">@color/ic_launcher_background</item>\n        <item name=\"windowSplashScreenAnimatedIcon\">@drawable/splashscreen</item>\n        <item name=\"android:windowSplashScreenBehavior\" tools:targetApi=\"33\">icon_preferred</item>\n        <item name=\"postSplashScreenTheme\">@style/Theme.NotiProgressBar</item>\n    </style>\n\n    <style name=\"ToggleGroupButtonStyle\" parent=\"Widget.Material3.Button.OutlinedButton\">\n        <item name=\"android:textColor\">?android:attr/textColorPrimary</item>\n        <item name=\"cornerRadius\">12dp</item>\n        <item name=\"strokeWidth\">0dp</item>\n        <item name=\"backgroundTint\">@color/outlined_button_selector</item>\n    </style>\n</resources>"
  },
  {
    "path": "app/src/main/res/values-ar/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">تقرير الأخطاء</string>\n    <string name=\"settingsPreviewFab\">معاينة</string>\n    <string name=\"notificationListenerDescription\">يقرأ الإشعارات مع شريط التقدم</string>\n    <string name=\"prefsCategorySetup\">الإعداد</string>\n    <string name=\"prefsNotificationPermissionTitle\">منح إذن الوصول للإشعارات</string>\n    <string name=\"prefsNotificationPermissionSummary\">مطلوب لقراءة الإشعارات التي تحتوي على شريط تقدم</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">منح إذن إمكانية الوصول</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">مطلوب للعرض في شاشة القفل و تطبيقات النظام</string>\n    <string name=\"prefsCategoryCustomization\">التخصيص</string>\n    <string name=\"prefsProgressBarStyleTitle\">حدد نمط شريط التقدم</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">نمط شريط التقدم العمودي</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">نمط شريط التقدم الأفقي</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">شريط تقدم خطي</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">شريط تقدم دائري</string>\n    <string name=\"prefsCategoryTweaks\">التعديلات</string>\n    <string name=\"prefsLinearProgressBarTweaks\">تعديلات شريط التقدم الخطي</string>\n    <string name=\"prefsProgressBarThicknessTitle\">سمك مسار شريط التقدم</string>\n    <string name=\"prefsProgressBarThicknessSummary\">تغيير حجم مسار شريط التقدم</string>\n    <string name=\"prefsShowBelowNotchTitle\">إظهار الشريط تحت ثقب الكاميرا</string>\n    <string name=\"prefsShowBelowNotchSummary\">عرض شريط التقدم أسفل أي نوتش أو ثقب الكاميرا</string>\n    <string name=\"prefsCircularProgressBarTweaks\">تعديلات شريط التقدم الدائري</string>\n    <string name=\"prefsProgressBarOffsetSummary\">تغيير إنحياز شريط التقدم</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">الحد من الأعلى</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">تغيير مسافة التباعد من أعلى الشاشة</string>\n    <string name=\"prefsRoundedCornersTitle\">استخدم شريط التقدم بزوايا مستديرة</string>\n    <string name=\"prefsRoundedCornersSummary\">التبديل إلى شريط التقدم ذو الأطراف المستديرة</string>\n    <string name=\"prefsShowInLockScreenTitle\">إظهار شريط التقدم في شاشة القفل</string>\n    <string name=\"prefsShowInLockScreenSummary\">سيظهر أيضًا في العرض دوماً على الشاشة إن كان هاتفك يدعم هذه الخاصية</string>\n    <string name=\"prefsChangeColorTitle\">تغيير لون شريط التقدم</string>\n    <string name=\"prefsCategoryMore\">المزيد</string>\n    <string name=\"prefsCalentileTitle\">جرب %s على Google Play</string>\n    <string name=\"prefsCalentileSummary\">دعم المطور</string>\n    <string name=\"colorRed\">أحمر</string>\n    <string name=\"colorPink\">وردي</string>\n    <string name=\"colorPurple\">أرجواني</string>\n    <string name=\"colorDeepPurple\">أرجواني غامق</string>\n    <string name=\"colorIndigo\">نيلي</string>\n    <string name=\"colorBlue\">أزرق</string>\n    <string name=\"colorLightBlue\">أزرق فاتح</string>\n    <string name=\"colorCyan\">أزرق سماوي</string>\n    <string name=\"colorTeal\">أزرق مخضر</string>\n    <string name=\"colorGreen\">أخضر</string>\n    <string name=\"colorLightGreen\">أخضر فاتح</string>\n    <string name=\"colorLime\">ليموني</string>\n    <string name=\"colorYellow\">أصفر</string>\n    <string name=\"colorAmber\">عنبر</string>\n    <string name=\"colorOrange\">برتقالي</string>\n    <string name=\"colorDeepOrange\">برتقالي غامق</string>\n    <string name=\"colorBrown\">بني</string>\n    <string name=\"colorBlack\">أسود</string>\n    <string name=\"colorGrey\">رمادي</string>\n    <string name=\"colorWhite\">أبيض</string>\n    <string name=\"perAppSettingsEmptyView\">لم يتم العثور على شريط تقدم، سيتم إكتشاف التطبيقات التي تحتوي على أشرطة تقدم أثناء استخدامك للجهاز.</string>\n    <string name=\"prefsPerAppSettingsTitle\">إعدادات لكل تطبيق</string>\n    <string name=\"prefsPerAppSettingsSummary\">خصص التطبيقات التي تريد أن تظهر في شريط التقدم</string>\n    <string name=\"prefsBlackBackgroundTitle\">استخدم خلفية سوداء</string>\n    <string name=\"prefsBlackBackgroundSummary\">وضع خلفية سوداء لشريط التقدم</string>\n    <string name=\"prefsSAWPermissionTitle\">السماح بالعرض فوق التطبيقات الأخرى</string>\n    <string name=\"prefsSAWPermissionSummary\">مطلوب لعرض تراكب شريط التقدم</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">أصبح مثالي ؟ شارك إعداداتك</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">اسمح للآخرين الذين لديهم نفس الجهاز بإستخدام الإعدادات الخاصة بك</string>\n    <string name=\"reset\">إعادة ضبط</string>\n    <string name=\"prefsCategoryGeneral\">عام</string>\n    <string name=\"holePunchInstruction\">تغيير المحاذاة في تعديلات شريط التقدم الدائري</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">لا يوجد شريط تقدم</string>\n    <string name=\"advancedOptions\">خيارات متقدمة</string>\n    <string name=\"prefsDisableInFullScreenSummary\">إخفاء شريط التقدم في تطبيقات الشاشة الممتلئة</string>\n    <string name=\"prefsDisableInFullScreenTitle\">عطِل في وضع الشاشة الممتلئة</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-ar-rSA/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">تقرير الأخطاء</string>\n    <string name=\"settingsPreviewFab\">معاينة</string>\n    <string name=\"notificationListenerDescription\">يقرأ الإشعارات مع شريط التقدم</string>\n    <string name=\"prefsCategorySetup\">الإعداد</string>\n    <string name=\"prefsNotificationPermissionTitle\">منح حق الوصول للإشعارات</string>\n    <string name=\"prefsNotificationPermissionSummary\">مطلوب لقراءة الإشعارات مع شريط التقدم</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">منح إذن إمكانية الوصول</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">مطلوب للعرض في شاشة القفل وتطبيقات النظام</string>\n    <string name=\"prefsCategoryCustomization\">التخصيص</string>\n    <string name=\"prefsProgressBarStyleTitle\">حدد نمط شريط التقدم</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">شريط تقدم خطي</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">شريط تقدم دائري</string>\n    <string name=\"prefsCategoryTweaks\">التعديلات</string>\n    <string name=\"prefsLinearProgressBarTweaks\">تعديلات شريط التقدم الخطي</string>\n    <string name=\"prefsProgressBarThicknessTitle\">سمك مسار شريط التقدم</string>\n    <string name=\"prefsProgressBarThicknessSummary\">تغيير حجم مسار شريط التقدم</string>\n    <string name=\"prefsShowBelowNotchTitle\">يظهر الشريط اسفل الثقب</string>\n    <string name=\"prefsShowBelowNotchSummary\">عرض شريط التقدم أسفل أي نوتش أو ثقب الكاميرا</string>\n    <string name=\"prefsCircularProgressBarTweaks\">تعديلات شريط التقدم الدائري</string>\n    <string name=\"prefsProgressBarOffsetSummary\">تغيير محاذاة شريط التقدم</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">الحد من الأعلى</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">تغيير مسافة التباعد من أعلى الشاشة</string>\n    <string name=\"prefsRoundedCornersTitle\">استخدم شريط التقدم بزوايا مستديرة</string>\n    <string name=\"prefsRoundedCornersSummary\">التبديل إلى شريط التقدم ذو الأطراف المستديرة</string>\n    <string name=\"prefsShowInLockScreenTitle\">إظهار شريط التقدم في شاشة القفل</string>\n    <string name=\"prefsShowInLockScreenSummary\">سيظهر أيضًا في العرض دوماً على الشاشة إن كان هاتفك يدعم هذه الخاصية</string>\n    <string name=\"prefsChangeColorTitle\">تغيير لون شريط التقدم</string>\n    <string name=\"prefsCategoryMore\">المزيد</string>\n    <string name=\"prefsCalentileTitle\">جرب %s على Google Play</string>\n    <string name=\"prefsCalentileSummary\">دعم المطور</string>\n    <string name=\"colorRed\">أحمر</string>\n    <string name=\"colorPink\">وردي</string>\n    <string name=\"colorPurple\">أرجواني</string>\n    <string name=\"colorDeepPurple\">أرجواني غامق</string>\n    <string name=\"colorIndigo\">نيلي</string>\n    <string name=\"colorBlue\">أزرق</string>\n    <string name=\"colorLightBlue\">أزرق فاتح</string>\n    <string name=\"colorCyan\">أزرق سماوي</string>\n    <string name=\"colorTeal\">أزرق مخضر</string>\n    <string name=\"colorGreen\">أخضر</string>\n    <string name=\"colorLightGreen\">أخضر فاتح</string>\n    <string name=\"colorLime\">ليموني</string>\n    <string name=\"colorYellow\">أصفر</string>\n    <string name=\"colorAmber\">عنبر</string>\n    <string name=\"colorOrange\">برتقالي</string>\n    <string name=\"colorDeepOrange\">برتقالي غامق</string>\n    <string name=\"colorBrown\">بني</string>\n    <string name=\"colorBlack\">أسود</string>\n    <string name=\"colorGrey\">رمادي</string>\n    <string name=\"colorWhite\">أبيض</string>\n    <string name=\"perAppSettingsEmptyView\">لم يتم العثور على شريط التقدم حتى الآن، سوف يكتشف Noti التطبيقات التي تحتوي على أشرطة تقدم أثناء استخدامك لهاتفك</string>\n    <string name=\"prefsPerAppSettingsTitle\">إعداد لكل تطبيق</string>\n    <string name=\"prefsPerAppSettingsSummary\">خصص التطبيقات التي تريد أن تظهر في شريط التقدم</string>\n    <string name=\"prefsBlackBackgroundTitle\">استخدم خلفية سوداء</string>\n    <string name=\"prefsBlackBackgroundSummary\">وضع خلفية سوداء لشريط التقدم</string>\n    <string name=\"prefsSAWPermissionTitle\">السماح بالعرض فوق التطبيقات الأخرى</string>\n    <string name=\"prefsSAWPermissionSummary\">مطلوب لعرض تراكب شريط التقدم</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">أصبح مثالياً ؟ مشاركة التكوين</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">اسمح للآخرين الذين لديهم نفس الجهاز باستخدام التكوين الخاص بك</string>\n    <string name=\"reset\">إعادة ضبط</string>\n    <string name=\"prefsCategoryGeneral\">عام</string>\n    <string name=\"holePunchInstruction\">تغيير المحاذاة في تعديلات شريط التقدم الدائري</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-bg/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">Докладвай за грешка</string>\n    <string name=\"settingsPreviewFab\">Прегледай</string>\n    <string name=\"notificationListenerDescription\">Чете известията с лента за прогрес</string>\n    <string name=\"prefsCategorySetup\">Настройки</string>\n    <string name=\"prefsNotificationPermissionTitle\">Разреши достъп до известията</string>\n    <string name=\"prefsNotificationPermissionSummary\">Изисква се за четене на известия с лента за прогрес</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Даване на разрешение за достъпност</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Изисква се за показване на заключен екран и в системните приложения</string>\n    <string name=\"prefsCategoryCustomization\">Персонализиране</string>\n    <string name=\"prefsProgressBarStyleTitle\">Избери стил на лентата за прогрес</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Линейна лента за прогрес</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Кръгова лента за прогрес</string>\n    <string name=\"prefsCategoryTweaks\">Настройки</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Настройки на линейната лента за прогрес</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Дебелина на лентата за прогрес</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Промяна на размера на лентата за прогрес</string>\n    <string name=\"prefsShowBelowNotchTitle\">Показвай под изрязакът на дисплея</string>\n    <string name=\"prefsShowBelowNotchSummary\">Показвай лентата за прогрес под всеки изрязък или дупка</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Настройки на кръговата лента за прогрес</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Промяна на подравняването на лентата за прогрес</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Отстъп отгоре</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Промяна на разстоянието от горната част на екрана</string>\n    <string name=\"prefsRoundedCornersTitle\">Използване на лента за прогрес със заоблени ъгли</string>\n    <string name=\"prefsRoundedCornersSummary\">Превключване към лента за прогрес със заоблени ъгли</string>\n    <string name=\"prefsShowInLockScreenTitle\">Показвй лентата за прогрес на заключен екран</string>\n    <string name=\"prefsShowInLockScreenSummary\">Ще се показва и на постоянно включен дисплей</string>\n    <string name=\"prefsChangeColorTitle\">Промяна на цвета на лентата за прогрес</string>\n    <string name=\"prefsCategoryMore\">Още</string>\n    <string name=\"prefsCalentileTitle\">Пробвай %s в Google Play</string>\n    <string name=\"prefsCalentileSummary\">Подкрепете разработчика</string>\n    <string name=\"colorRed\">Червено</string>\n    <string name=\"colorPink\">Розово</string>\n    <string name=\"colorPurple\">Лилаво</string>\n    <string name=\"colorDeepPurple\">Тъмно лилаво</string>\n    <string name=\"colorIndigo\">Индиго</string>\n    <string name=\"colorBlue\">Синьо</string>\n    <string name=\"colorLightBlue\">Светло синьо</string>\n    <string name=\"colorCyan\">Циан</string>\n    <string name=\"colorTeal\">Тюркоазено</string>\n    <string name=\"colorGreen\">Зелено</string>\n    <string name=\"colorLightGreen\">Светло зелено</string>\n    <string name=\"colorLime\">Лимоново зелено</string>\n    <string name=\"colorYellow\">Жълто</string>\n    <string name=\"colorAmber\">Кехлибар</string>\n    <string name=\"colorOrange\">Оранжево</string>\n    <string name=\"colorDeepOrange\">Тъмно оранжево</string>\n    <string name=\"colorBrown\">Кафяво</string>\n    <string name=\"colorBlack\">Черно</string>\n    <string name=\"colorGrey\">Сиво</string>\n    <string name=\"colorWhite\">Бяло</string>\n    <string name=\"perAppSettingsEmptyView\">Все още не е намерена лента за прогрес. Noti ще открие кои приложения имат ленти за прогрес, докато използвате телефона си</string>\n    <string name=\"prefsPerAppSettingsTitle\">Настройки за всяко приложение</string>\n    <string name=\"prefsPerAppSettingsSummary\">Превключване на noti за всяко приложение</string>\n    <string name=\"prefsBlackBackgroundTitle\">Използвай черен фон</string>\n    <string name=\"prefsBlackBackgroundSummary\">Превключване към лента за прогрес с черен  фон</string>\n    <string name=\"prefsSAWPermissionTitle\">Разреши показване над други приложения</string>\n    <string name=\"prefsSAWPermissionSummary\">Изисква се за показване на наслагването на лентата за прогрес</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Перфектно прилягане? Споделете конфигурацията</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Позволете на други със същото устройство да използват вашата конфигурация</string>\n    <string name=\"reset\">Рестартирай</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-cs/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">Nahlásit chybu</string>\n    <string name=\"notificationListenerDescription\">Čtení notifikací s ukazatelem průběhu</string>\n    <string name=\"reset\">Reset</string>\n    <string name=\"prefsNotificationPermissionTitle\">Udělení přístupu k oznámení</string>\n    <string name=\"prefsNotificationPermissionSummary\">Nutné pro čtení oznámení s ukazatelem průběhu</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Udělení povolení k přístupnosti</string>\n    <string name=\"prefsSAWPermissionTitle\">Povolení zobrazení přes jiné aplikace</string>\n    <string name=\"prefsSAWPermissionSummary\">Vyžadováno k zobrazení překryvného ukazatele průběhu</string>\n    <string name=\"prefsCategoryCustomization\">přizpůsobení</string>\n    <string name=\"prefsProgressBarStyleTitle\">Výběr stylu ukazatele průběhu</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">Žádný ukazatel průběhu</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Lineární ukazatel průběhu</string>\n    <string name=\"prefsCategoryTweaks\">ladění</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Změna velikosti stopy ukazatele průběhu</string>\n    <string name=\"prefsShowBelowNotchTitle\">Zobrazit pod výřezem displeje</string>\n    <string name=\"prefsShowBelowNotchSummary\">Zobrazení ukazatele průběhu pod libovolným výřezem nebo průstřelem</string>\n    <string name=\"prefsPerAppSettingsSummary\">Zapnutí Noti pro jednotlivé aplikace</string>\n    <string name=\"prefsDisableInFullScreenSummary\">Skrytí ukazatele průběhu v aplikacích spuštěných v režimu celé obrazovky</string>\n    <string name=\"prefsChangeColorTitle\">Změna barvy ukazatele průběhu</string>\n    <string name=\"prefsCalentileTitle\">Vyzkoušejte %s na Google Play</string>\n    <string name=\"prefsCalentileSummary\">Podpořte vývojáře</string>\n    <string name=\"colorRed\">Červená</string>\n    <string name=\"colorPink\">Růžová</string>\n    <string name=\"colorPurple\">Fialová</string>\n    <string name=\"colorCyan\">Azurová</string>\n    <string name=\"colorLime\">Limetková</string>\n    <string name=\"colorAmber\">Jantarová</string>\n    <string name=\"colorOrange\">Oranžová</string>\n    <string name=\"colorDeepOrange\">Tmavě oranžová</string>\n    <string name=\"colorBlack\">Černá</string>\n    <string name=\"colorGrey\">Šedá</string>\n    <string name=\"settingsPreviewFab\">Náhled</string>\n    <string name=\"perAppSettingsEmptyView\">Zatím nebyly nalezeny žádné ukazatele průběhu. Kompatibilní aplikace se objevují v průběhu používání zařízení.</string>\n    <string name=\"prefsCategorySetup\">nastavení</string>\n    <string name=\"prefsCategoryGeneral\">obecné</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Úpravy kruhového ukazatele průběhu</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Změna zarovnání ukazatele průběhu</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Okraj shora</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Změna vzdálenosti od horního okraje obrazovky</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Perfektně sedí? Podělte se o konfiguraci</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Umožněte ostatním uživatelům se stejným zařízením používat vaši konfiguraci</string>\n    <string name=\"prefsBlackBackgroundTitle\">Použít černé pozadí</string>\n    <string name=\"prefsBlackBackgroundSummary\">Přepnutí na ukazatel průběhu s černou stopou</string>\n    <string name=\"prefsPerAppSettingsTitle\">Nastavení pro jednotlivé aplikace</string>\n    <string name=\"prefsRoundedCornersSummary\">Přepnutí na ukazatel průběhu se zaoblenými konci</string>\n    <string name=\"prefsRoundedCornersTitle\">Použití ukazatele průběhu se zaoblenými rohy</string>\n    <string name=\"prefsShowInLockScreenTitle\">Zobrazení ukazatele průběhu na zamčené obrazovce</string>\n    <string name=\"colorTeal\">Čírková</string>\n    <string name=\"colorGreen\">Zelená</string>\n    <string name=\"colorBrown\">Hnědá</string>\n    <string name=\"colorLightGreen\">Světle zelená</string>\n    <string name=\"colorYellow\">Žlutá</string>\n    <string name=\"colorWhite\">Bílá</string>\n    <string name=\"holePunchInstruction\">Změna zarovnání v úpravách kruhového ukazatele průběhu</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Nutné pro zobrazení na zamykací obrazovce a v systémových aplikacích</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Kruhový ukazatel průběhu</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Ladění lineárního ukazatele průběhu</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Tloušťka stopy ukazatele průběhu</string>\n    <string name=\"prefsShowInLockScreenSummary\">Bude se také zobrazovat při zapnutém režimu always on</string>\n    <string name=\"prefsDisableInFullScreenTitle\">Zakázat v režimu celé obrazovky</string>\n    <string name=\"prefsCategoryMore\">více</string>\n    <string name=\"colorDeepPurple\">Tmavě fialová</string>\n    <string name=\"colorIndigo\">Indigo</string>\n    <string name=\"colorBlue\">Modrá</string>\n    <string name=\"colorLightBlue\">Světle modrá</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">Styl ukazatele průběhu</string>\n    <string name=\"advancedOptions\">Rozšířené nastavení</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">Styl panelu průběhu na šířku</string>\n    <string name=\"prefsProgressBarOffsetTitle\">Horizontální posun</string>\n    <string name=\"prefsCutoutSizeTitle\">Velikost výřezu</string>\n    <string name=\"prefsCutoutSizeSummary\">Změna velikosti vnitřního průměru</string>\n    <string name=\"shareConfigPositiveMessage\">Děkujeme za sdílení konfigurace!</string>\n    <string name=\"shareConfigNoInternetMessage\">Povolení internetu pro odesílání konfigurace</string>\n    <string name=\"prefsBatteryBannerButton\">Číst více</string>\n    <string name=\"prefsBatteryBannerSummary\">Možná bude nutné vypnout optimalizaci baterie a povolit automatické spouštění, aby aplikace Noti pracovala na pozadí. Po provedení těchto úkonů může být nutné restartovat zařízení</string>\n    <string name=\"prefsStatusBarHeightInfo\">Váš stavový řádek je vysoký %d pixelů</string>\n    <string name=\"prefsMultiScreenInfoCard\">V případě více obrazovek přistupujte k nastavení přes každý displej a upravte proužek pro dané nastavení</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-de/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"notificationListenerDescription\">Liest Benachrichtigungen mit einem Fortschrittsbalken</string>\n    <string name=\"perAppSettingsEmptyView\">Noti erkennt kompatible Apps, sobald Benachrichtigungen empfangen werden</string>\n    <string name=\"reset\">Zurücksetzen</string>\n    <string name=\"prefsCategorySetup\">Aufbau</string>\n    <string name=\"prefsCategoryGeneral\">Allgemein</string>\n    <string name=\"prefsNotificationPermissionTitle\">Erlaube Benachrichtigungszugriff</string>\n    <string name=\"prefsNotificationPermissionSummary\">Erforderlich, um Benachrichtigungen mit einem Fortschrittsbalken zu lesen</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Zugriffsberechtigung erteilen</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Erforderlich für die Anzeige im Sperrbildschirm und System-Apps</string>\n    <string name=\"prefsSAWPermissionTitle\">Anzeigen über andere Apps erlauben</string>\n    <string name=\"prefsSAWPermissionSummary\">Erforderlich für die Anzeige des Fortschrittsbalken-Overlays</string>\n    <string name=\"prefsCategoryCustomization\">Anpassung</string>\n    <string name=\"prefsProgressBarStyleTitle\">Fortschrittsbalkenstil auswählen</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">Fortschrittsbalken im Querformat</string>\n    <string name=\"advancedOptions\">Erweiterte Optionen</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">Keinen Fortschrittsbalken</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Linearer Fortschrittsbalken</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Kreisförmiger Fortschrittsbalken</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Lineare Fortschrittsanzeige optimieren</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Dicke des Fortschrittsbalken</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Größe der Spur des Fortschrittsbalkens ändern</string>\n    <string name=\"prefsShowBelowNotchSummary\">‘Fortschrittsbalken unter jeder Notch oder Kameralochung anzeigen</string>\n    <string name=\"menuReportBug\">Fehler melden</string>\n    <string name=\"settingsPreviewFab\">Vorschau</string>\n    <string name=\"holePunchInstruction\">Ändere die Ausrichtung in kreisförmigen Fortschrittsleisten-Tweaks</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">Fortschrittsbalken im Hochformat</string>\n    <string name=\"prefsCategoryTweaks\">Anpassungen</string>\n    <string name=\"prefsShowBelowNotchTitle\">Unterhalb des Displayausschnitts anzeigen</string>\n    <string name=\"prefsBatteryBannerSummary\">Eventuell müssen akkuschonende Einstellungen deaktiviert und Autostart erlaubt werden, damit Noti im Hintergrund wirkt. Ein Neustart kann nötig sein.</string>\n    <string name=\"activateToggle\">Erlaubt für</string>\n    <string name=\"downloads\">Downloads</string>\n    <string name=\"media\">Medien</string>\n    <string name=\"prefsBatteryBannerButton\">erfahre mehr</string>\n    <string name=\"prefsStatusBarHeightInfo\">Die Benachrichtigungsleiste ist %d Pixel groß</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Kreisförmige Fortschrittsbalken Optimierungen</string>\n    <string name=\"prefsCutoutSizeSummary\">ändere die Größe des inneren Durchmessers</string>\n    <string name=\"prefsCutoutSizeTitle\">Ausschnittgröße</string>\n    <string name=\"prefsNotificationColorSummary\">benutze die Farbe der Benachrichtigung für den Fortschrittsbalken</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Abstand von oben</string>\n    <string name=\"colorDeepPurple\">tief purpur</string>\n    <string name=\"prefsProgressBarOffsetTitle\">horizontaler Versatz</string>\n    <string name=\"prefsProgressBarOffsetSummary\">ändere Fortschrittsbalkenausrichtung</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Ändere den Zwischenraum vom oberen Teil des Bildschirms</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Lasse andere mit dem selben Gerät deine Konfiguration nutzen</string>\n    <string name=\"prefsBlackBackgroundSummary\">wechsle zum Fortschrittsbalken mit schwarzem \\\"track\\\"</string>\n    <string name=\"prefsPerAppSettingsTitle\">App-spezifische Einstellungen</string>\n    <string name=\"prefsPerAppSettingsSummary\">Schalte noti auf App-spezifisch um</string>\n    <string name=\"prefsRoundedCornersTitle\">benutze Fortschrittsbalken mit runden Ecken</string>\n    <string name=\"prefsCategoryMore\">mehr</string>\n    <string name=\"prefsRoundedCornersSummary\">wechsle zu Fortschrittsbalken mit runden Enden</string>\n    <string name=\"prefsCalentileTitle\">Teste %s im Google Play Store</string>\n    <string name=\"prefsShowInLockScreenTitle\">zeige Fortschrittsbalken auf dem Sperrbildschirm</string>\n    <string name=\"prefsShowInLockScreenSummary\">wird auch auf dem Always-on-Display gezeigt</string>\n    <string name=\"prefsDisableInFullScreenTitle\">deaktiviere im Vollbildmodus</string>\n    <string name=\"prefsDisableInFullScreenSummary\">verstecke Fortschrittsbalken in Vollbild-Apps</string>\n    <string name=\"prefsChangeColorTitle\">ändere die Farbe des Fortschrittsbalkens</string>\n    <string name=\"prefsCalentileSummary\">Unterstütze den Entwickler</string>\n    <string name=\"shareConfigPositiveMessage\">Danke, dass du deine Konfiguration geteilt hast!</string>\n    <string name=\"shareConfigNoInternetMessage\">aktiviere Internet, um die Konfiguration hochzuladen</string>\n    <string name=\"colorRed\">rot</string>\n    <string name=\"colorIndigo\">indigo</string>\n    <string name=\"colorPink\">rosa</string>\n    <string name=\"colorPurple\">purpur</string>\n    <string name=\"colorBlue\">blau</string>\n    <string name=\"colorLightBlue\">hellblau</string>\n    <string name=\"colorCyan\">türkis</string>\n    <string name=\"colorTeal\">aquamarin</string>\n    <string name=\"colorGreen\">grün</string>\n    <string name=\"colorLightGreen\">hellgrün</string>\n    <string name=\"colorLime\">limette</string>\n    <string name=\"colorYellow\">gelb</string>\n    <string name=\"colorBlack\">schwarz</string>\n    <string name=\"colorGrey\">grau</string>\n    <string name=\"colorAmber\">amber</string>\n    <string name=\"colorOrange\">orange</string>\n    <string name=\"colorDeepOrange\">dunkelorange</string>\n    <string name=\"colorBrown\">braun</string>\n    <string name=\"colorWhite\">weiß</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Passt? Teile deine Konfiguration</string>\n    <string name=\"prefsBlackBackgroundTitle\">nutze einen schwarzen Hintergrund</string>\n    <string name=\"prefsNotificationColorTitle\">mit Benachrichtigungsfarbe abgleichen</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-es/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"perAppSettingsEmptyView\">Aún no se han encontrado barras de progreso. Las aplicaciones compatibles se descubren a medida que usas el dispositivo.</string>\n    <string name=\"reset\">Reset</string>\n    <string name=\"holePunchInstruction\">Cambiar la alineación en los ajustes de la barra de progreso circular</string>\n    <string name=\"prefsCategorySetup\">Primeros Pasos</string>\n    <string name=\"prefsCategoryGeneral\">General</string>\n    <string name=\"prefsNotificationPermissionTitle\">Permite el acceso a las notificaciones</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Permite los servicios de accesibilidad</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Necesarios para mostrar noti en la pantalla de bloqueo y sobre aplicaciones del sistema</string>\n    <string name=\"prefsSAWPermissionTitle\">Permite mostrar a noti sobre otras apps</string>\n    <string name=\"prefsSAWPermissionSummary\">Necesario para mostrar la superposición de las barras de progreso</string>\n    <string name=\"prefsCategoryCustomization\">Personalización</string>\n    <string name=\"prefsProgressBarStyleTitle\">Selecciona estilos para la barra de progreso</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">Ninguno</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Barra lineal</string>\n    <string name=\"prefsCategoryTweaks\">Ajustes</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Ajustes de la barra de progreso lineal</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Cambiar el tamaño de la barra de progreso</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Grosor de la barra de progreso</string>\n    <string name=\"prefsShowBelowNotchTitle\">Mostrar bajo la muesca de la pantalla</string>\n    <string name=\"prefsShowBelowNotchSummary\">Mostrar noti debajo de cualquier muesca o perforación</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Ajustes de la barra circular</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Margen superior</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Cambia el margen desde el tope de la pantalla</string>\n    <string name=\"menuReportBug\">Reportar un error</string>\n    <string name=\"settingsPreviewFab\">Vista previa</string>\n    <string name=\"prefsNotificationPermissionSummary\">Necesario para leer las notificaciones que contengan barras de progreso</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Barra circular</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Cambiar la alineación de la barra de progreso</string>\n    <string name=\"notificationListenerDescription\">Lea notificaciones con una barra de progreso</string>\n    <string name=\"colorOrange\">Naranja</string>\n    <string name=\"colorDeepOrange\">Naranja Oscuro</string>\n    <string name=\"colorBrown\">Marrón</string>\n    <string name=\"colorBlack\">Negro</string>\n    <string name=\"colorWhite\">Blanco</string>\n    <string name=\"colorGrey\">Gris</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">Barra de progreso vertical</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">Barra de progreso horizontal</string>\n    <string name=\"advancedOptions\">Opciones avanzadas</string>\n    <string name=\"prefsBlackBackgroundSummary\">Establecer un fondo negro para la barra de progreso</string>\n    <string name=\"prefsPerAppSettingsTitle\">Ajustes por aplicación</string>\n    <string name=\"prefsPerAppSettingsSummary\">Alternar notificaciones por aplicación</string>\n    <string name=\"prefsRoundedCornersTitle\">Utilizar barra de progreso con esquinas redondeadas</string>\n    <string name=\"prefsRoundedCornersSummary\">Cambiar la barra de progreso con extremos redondeados</string>\n    <string name=\"prefsShowInLockScreenTitle\">Mostrar barra de progreso en pantalla de bloqueo</string>\n    <string name=\"prefsDisableInFullScreenTitle\">Desactivar en modo pantalla completa</string>\n    <string name=\"prefsDisableInFullScreenSummary\">Ocultar la barra de progreso en las aplicaciones a pantalla completa</string>\n    <string name=\"prefsChangeColorTitle\">Cambiar el color de la barra de progreso</string>\n    <string name=\"prefsCategoryMore\">más</string>\n    <string name=\"prefsCalentileTitle\">Prueba %s en Google Play</string>\n    <string name=\"prefsCalentileSummary\">Apoyar al desarrollador</string>\n    <string name=\"colorRed\">Rojo</string>\n    <string name=\"colorPink\">Rosa</string>\n    <string name=\"colorPurple\">Morado</string>\n    <string name=\"colorDeepPurple\">Morado oscuro</string>\n    <string name=\"colorIndigo\">Añil</string>\n    <string name=\"colorBlue\">Azul</string>\n    <string name=\"colorLightBlue\">Azul claro</string>\n    <string name=\"colorCyan\">Cian</string>\n    <string name=\"colorTeal\">Turquesa</string>\n    <string name=\"colorGreen\">Verde</string>\n    <string name=\"colorLightGreen\">Verde claro</string>\n    <string name=\"colorYellow\">Amarillo</string>\n    <string name=\"colorAmber\">Ámbar</string>\n    <string name=\"prefsShowInLockScreenSummary\">También aparecerá en Always On Display si su teléfono admite esta función</string>\n    <string name=\"colorLime\">Lima</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">¿Ajuste perfecto? Compartir configuración</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Permita que otras personas con el mismo dispositivo utilicen su configuración</string>\n    <string name=\"prefsBlackBackgroundTitle\">Utilice un fondo negro</string>\n    <string name=\"prefsBatteryBannerButton\">Más información</string>\n    <string name=\"prefsStatusBarHeightInfo\">Tu barra de estado mide %d píxeles de alto</string>\n    <string name=\"prefsProgressBarOffsetTitle\">Desplazamiento horizontal</string>\n    <string name=\"prefsCutoutSizeTitle\">Tamaño del recorte</string>\n    <string name=\"prefsCutoutSizeSummary\">Cambiar el tamaño del diámetro interior</string>\n    <string name=\"prefsMultiScreenInfoCard\">Para múltiples pantallas, acceda a la configuración a través de cada pantalla para ajustar la barra para esa configuración</string>\n    <string name=\"shareConfigPositiveMessage\">¡Gracias por compartir tu configuración!</string>\n    <string name=\"prefsBatteryBannerSummary\">Es posible que tengas que desactivar las optimizaciones de la batería y permitir el inicio automático para que Noti funcione en segundo plano. Puede ser necesario reiniciar el sistema después de hacer esto</string>\n    <string name=\"shareConfigNoInternetMessage\">Activar internet para cargar la configuración</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-es-rMX/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">Informar error</string>\n    <string name=\"settingsPreviewFab\">Vista previa</string>\n    <string name=\"notificationListenerDescription\">Leer las notificaciones con una barra de progreso</string>\n    <string name=\"prefsCategorySetup\">Configuración</string>\n    <string name=\"prefsNotificationPermissionTitle\">Conceder acceso a las notificaciónes</string>\n    <string name=\"prefsNotificationPermissionSummary\">Necesario para leer notificaciónes con una barra de progreso</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Conceder permisos de accesibilidad</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Necesario para mostrar en la pantalla de bloqueo y las aplicaciones del sistema</string>\n    <string name=\"prefsCategoryCustomization\">personalización</string>\n    <string name=\"prefsProgressBarStyleTitle\">Seleccionar el estilo de la barra de progreso</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Barra de progreso linear</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Barra de progreso circular</string>\n    <string name=\"prefsCategoryTweaks\">ajustes</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Ajuste de la barra de progreso linear </string>\n    <string name=\"prefsProgressBarThicknessTitle\">Grosor de la pista de la barra de progreso</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Cambiar el tamaño de la pista de la barra de progreso</string>\n    <string name=\"prefsShowBelowNotchTitle\">Mostrar debajo de la muesca de la pantalla</string>\n    <string name=\"prefsShowBelowNotchSummary\">Mostrar barra de progreso debajo de cualquier muesca o perforación</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Ajustes de la barra de progreso circular</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Cambiar alineación de la barra de progreso</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Margen superior</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Cambiar el espaciado desde la parte superior de la pantalla</string>\n    <string name=\"prefsRoundedCornersTitle\">Usar barra de progreso con esquinas redondeadas</string>\n    <string name=\"prefsRoundedCornersSummary\">Cambiar a barra de progreso con extremos redondeados</string>\n    <string name=\"prefsShowInLockScreenTitle\">Mostrar barra de progreso en la pantalla de bloqueo</string>\n    <string name=\"prefsShowInLockScreenSummary\">También mostrar en pantalla siempre encendida</string>\n    <string name=\"prefsChangeColorTitle\">Cambiar color de la barra de progreso</string>\n    <string name=\"prefsCategoryMore\">más</string>\n    <string name=\"prefsCalentileTitle\">Prueba %s en Google Play</string>\n    <string name=\"prefsCalentileSummary\">Apoya al desarrollador</string>\n    <string name=\"colorRed\">Rojo</string>\n    <string name=\"colorPink\">Rosa</string>\n    <string name=\"colorPurple\">Morado</string>\n    <string name=\"colorDeepPurple\">Morado profundo</string>\n    <string name=\"colorIndigo\">índigo</string>\n    <string name=\"colorBlue\">Azul</string>\n    <string name=\"colorLightBlue\">Azul claro</string>\n    <string name=\"colorCyan\">Cian</string>\n    <string name=\"colorTeal\">Azul cerceta</string>\n    <string name=\"colorGreen\">Verde</string>\n    <string name=\"colorLightGreen\">Verde claro</string>\n    <string name=\"colorLime\">Lima</string>\n    <string name=\"colorYellow\">Amarillo</string>\n    <string name=\"colorAmber\">Ámbar</string>\n    <string name=\"colorOrange\">Naranja</string>\n    <string name=\"colorDeepOrange\">Naranja profundo</string>\n    <string name=\"colorBrown\">Cafe</string>\n    <string name=\"colorBlack\">Negro</string>\n    <string name=\"colorGrey\">Gris</string>\n    <string name=\"colorWhite\">Blanco</string>\n    <string name=\"perAppSettingsEmptyView\">Aún no se ha encontrado ninguna barra de progreso. Noti descubrirá qué aplicaciones tienen barras de progreso a medida que usas tu teléfono</string>\n    <string name=\"prefsPerAppSettingsTitle\">Configuración por aplicación</string>\n    <string name=\"prefsPerAppSettingsSummary\">Alternar noti por aplicación</string>\n    <string name=\"prefsBlackBackgroundTitle\">Usar fondo negro</string>\n    <string name=\"prefsBlackBackgroundSummary\">Cambiar a barra de progreso con pista negra</string>\n    <string name=\"prefsSAWPermissionTitle\">Permitir la visualización sobre otras aplicaciones</string>\n    <string name=\"prefsSAWPermissionSummary\">Necesario para mostrar la barra de progreso</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">¿Forma perfecta? Compartir configuración</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Permitir que otras personas con el mismo dispositivo utilicen tu configuración</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-fr/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"colorWhite\">Blanc</string>\n    <string name=\"reset\">Réinitialiser</string>\n    <string name=\"perAppSettingsEmptyView\">Noti identifiera davantage d\\'applications compatibles au fur et à mesure que des notifications seront reçues</string>\n    <string name=\"prefsCategoryGeneral\">Général</string>\n    <string name=\"notificationListenerDescription\">Lire les notifications avec une barre de progression</string>\n    <string name=\"prefsCalentileSummary\">Soutenir le développeur</string>\n    <string name=\"prefsChangeColorTitle\">Changement de couleur de la barre</string>\n    <string name=\"settingsPreviewFab\">Aperçu</string>\n    <string name=\"prefsCategorySetup\">Configurer</string>\n    <string name=\"menuReportBug\">Signaler une erreur</string>\n    <string name=\"colorOrange\">Orange</string>\n    <string name=\"colorAmber\">Ambré</string>\n    <string name=\"colorDeepOrange\">Orange foncé</string>\n    <string name=\"colorLightGreen\">Vert clair</string>\n    <string name=\"colorBlue\">Bleu</string>\n    <string name=\"colorGreen\">Vert</string>\n    <string name=\"colorGrey\">Gris</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Laissez d\\'autres personnes possédant le même appareil d\\'utiliser votre configuration</string>\n    <string name=\"prefsCalentileTitle\">Essayez %s sur Google Play</string>\n    <string name=\"colorBlack\">Noir</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Accorder la permission d\\'accessibilité</string>\n    <string name=\"prefsCategoryCustomization\">Personnalisation</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Obligatoire pour afficher sur l\\'écran de verrouillage et sur les applications du système</string>\n    <string name=\"colorRed\">Rouge</string>\n    <string name=\"prefsShowBelowNotchTitle\">Afficher sous la coupure de l\\'écran</string>\n    <string name=\"prefsShowInLockScreenTitle\">Affiche la barre de progression dans l\\'écran de verrouillage</string>\n    <string name=\"prefsShowInLockScreenSummary\">Cela sera aussi affiché dans l\\'always on display</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Marge du haut</string>\n    <string name=\"prefsProgressBarStyleTitle\">Sélectionnez le style de la barre de progression</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Barre de progression linéaire</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Épaisseur de la barre de progression</string>\n    <string name=\"prefsSAWPermissionTitle\">Autoriser l\\'affichage par dessus d\\'autres applications</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Changer l\\'alignement de la barre de progression</string>\n    <string name=\"prefsBlackBackgroundTitle\">Utiliser un fond noir</string>\n    <string name=\"prefsPerAppSettingsSummary\">Activer noti selon les applications</string>\n    <string name=\"prefsNotificationPermissionSummary\">Obligatoire pour lire les notifications avec une barre de progression</string>\n    <string name=\"colorLime\">Vert fluo</string>\n    <string name=\"prefsBlackBackgroundSummary\">Passez à une barre de progression avec un fond noir</string>\n    <string name=\"colorDeepPurple\">Violet foncé</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Ajustements de la barre de progression circulaire</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Barre de progression circulaire</string>\n    <string name=\"prefsNotificationPermissionTitle\">Autoriser l\\'accès aux notifications</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Changer la taille de la barre de progression</string>\n    <string name=\"colorYellow\">Jaune</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Changer l\\'espacement du haut de l\\'écran</string>\n    <string name=\"prefsPerAppSettingsTitle\">Paramètres par application</string>\n    <string name=\"colorCyan\">Cyan</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Ajusté parfaitement? Partagez votre configuration</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Ajustements de la barre de progression linéaire</string>\n    <string name=\"holePunchInstruction\">Changez l\\'alignement de la barre de progression circulaire avec les curseurs</string>\n    <string name=\"colorIndigo\">Indigo</string>\n    <string name=\"colorBrown\">Marron</string>\n    <string name=\"prefsCategoryTweaks\">Ajustements</string>\n    <string name=\"colorPink\">Rose</string>\n    <string name=\"prefsRoundedCornersSummary\">Passer à une barre de progression avec les extrémités arrondies</string>\n    <string name=\"prefsCategoryMore\">Plus</string>\n    <string name=\"colorLightBlue\">Bleu clair</string>\n    <string name=\"prefsShowBelowNotchSummary\">Afficher la barre de progression sous n\\'importe quel encoche</string>\n    <string name=\"prefsRoundedCornersTitle\">Utiliser une barre de progression avec des coin arrondis</string>\n    <string name=\"prefsSAWPermissionSummary\">Obligatoire pour afficher la barre de progression au premier plan</string>\n    <string name=\"colorTeal\">Sarcelle</string>\n    <string name=\"colorPurple\">Violet</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">Pas de barre de progression</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">Style de la barre de progression en mode portrait</string>\n    <string name=\"advancedOptions\">Options avancés</string>\n    <string name=\"prefsDisableInFullScreenSummary\">Cacher la barre de progression dans les applications en plein écran</string>\n    <string name=\"prefsDisableInFullScreenTitle\">Désactiver en mode plein écran</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">Style de la barre de progression en mode paysage</string>\n    <string name=\"prefsBatteryBannerSummary\">Vous allez peut-être avoir besoin de désactiver l\\'optimisation de batterie et permettre à Noti de s\\'exécuter dans l\\'arrière-plan. Un redémarrage pourrait être nécessaire</string>\n    <string name=\"prefsBatteryBannerButton\">En savoir plus</string>\n    <string name=\"prefsStatusBarHeightInfo\">La largeur de ta barre de status est de %d pixels</string>\n    <string name=\"prefsProgressBarOffsetTitle\">Déplacement horizontal</string>\n    <string name=\"prefsCutoutSizeTitle\">Taille de la coupe</string>\n    <string name=\"prefsCutoutSizeSummary\">Changer la taille du diamètre intérieur</string>\n    <string name=\"prefsMultiScreenInfoCard\">Pour les écrans partagés, accédez au paramètres de chaque écran pour ajuster la barre</string>\n    <string name=\"shareConfigPositiveMessage\">Merci d\\'avoir partagé votre configuration!</string>\n    <string name=\"shareConfigNoInternetMessage\">Activez le réseau pour téléverser la configuration</string>\n    <string name=\"activateToggle\">Activé pour</string>\n    <string name=\"downloads\">Téléchargements</string>\n    <string name=\"media\">Médias</string>\n    <string name=\"prefsNotificationColorTitle\">Faire correspondre avec la couleur de la notification</string>\n    <string name=\"prefsNotificationColorSummary\">Utiliser la couleur de la notification pour la barre de progression</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-fr-rCA/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources></resources>"
  },
  {
    "path": "app/src/main/res/values-hu/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">Hiba jelentése</string>\n    <string name=\"settingsPreviewFab\">Előnézet</string>\n    <string name=\"notificationListenerDescription\">Értesítések mutatása előrehaladási sávval</string>\n    <string name=\"reset\">Visszaállítása</string>\n    <string name=\"perAppSettingsEmptyView\">Nem találtunk előrehaladási sávokat. Az előrehaladási sávokkal rendelkező alkalmazások a készülék használata során kerülnek felfedezésre.</string>\n    <string name=\"prefsProgressBarStyleTitle\">Haladási sáv stílusának kiválasztása</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Akadálymentesítési engedély megadása</string>\n    <string name=\"holePunchInstruction\">A körkörös előrehaladási sáv beállításának megváltoztatása</string>\n    <string name=\"prefsCategorySetup\">beállítás</string>\n    <string name=\"prefsCategoryGeneral\">általános</string>\n    <string name=\"prefsNotificationPermissionTitle\">Értesítésekhez való hozzáférés engedélyezése</string>\n    <string name=\"prefsNotificationPermissionSummary\">Szükséges az értesítések olvasásához előrehaladási sávval</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">A zárolási képernyőn és a rendszeralkalmazásokban való megjelenítéshez szükséges</string>\n    <string name=\"prefsSAWPermissionTitle\">Más alkalmazások feletti megjelenítés engedélyezése</string>\n    <string name=\"prefsSAWPermissionSummary\">Az előrehaladási sáv megjelenítése szükséges</string>\n    <string name=\"prefsCategoryCustomization\">testreszabás</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">Nincs előrehaladási sáv</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Lineáris előrehaladási sáv</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Kör alakú előrehaladási sáv</string>\n    <string name=\"prefsCategoryTweaks\">finomhangolások</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-in/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">Pelaporan Bug</string>\n    <string name=\"settingsPreviewFab\">Lihat Tampilan</string>\n    <string name=\"notificationListenerDescription\">Membaca notifikasi lewat bar</string>\n    <string name=\"prefsCategorySetup\">Pengaturan</string>\n    <string name=\"prefsNotificationPermissionTitle\">Berikan izin notifikasi</string>\n    <string name=\"prefsNotificationPermissionSummary\">Diperlukan oleh progress bar untuk membaca notifikasi</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Berikan izin aksesibilitas</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Diperlukan untuk menampilkan di layar kunci dan aplikasi sistem</string>\n    <string name=\"prefsCategoryCustomization\">Kustomisasi</string>\n    <string name=\"prefsProgressBarStyleTitle\">Pilih gaya progress bar</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">Tampilan bar progres di portrait</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">Tampilan bar progres di landskap</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Progress bar batang</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Progress bar lingkaran</string>\n    <string name=\"prefsCategoryTweaks\">Atur</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Pengaturan progress bar batang</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Ketebalan bar</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Ubah ukuran progress bar</string>\n    <string name=\"prefsShowBelowNotchTitle\">Tampilkan dibawah notch</string>\n    <string name=\"prefsShowBelowNotchSummary\">Tampilkan progress bar dibawah notch atau lobang kamera</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Pengaturan untuk bar lingkaran</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Ubah penempatan bar</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">Tidak ada bilah kemajuan</string>\n    <string name=\"prefsBlackBackgroundTitle\">Gunakan latar belakang hitam</string>\n    <string name=\"prefsPerAppSettingsTitle\">Pengaturan per aplikasi</string>\n    <string name=\"holePunchInstruction\">Atur posisi untuk bar progres bundar</string>\n    <string name=\"prefsCategoryGeneral\">Umum</string>\n    <string name=\"prefsSAWPermissionTitle\">Izinkan untuk menampilkan di atas aplikasi lain</string>\n    <string name=\"perAppSettingsEmptyView\">Belum ada bilah kemajuan yang ditemukan. Aplikasi yang kompatibel ditemukan saat Anda menggunakan perangkat.</string>\n    <string name=\"prefsSAWPermissionSummary\">Diperlukan untuk menampilkan hamparan bilah kemajuan</string>\n    <string name=\"advancedOptions\">Opsi Lanjutan</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Margin dari atas</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Ubah spasi dari atas layar</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Sangat cocok? Konfigurasi berbagi</string>\n    <string name=\"prefsBlackBackgroundSummary\">Ganti ke bar progres dengan lintasan hitam</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Izinkan orang lain dengan perangkat yang sama menggunakan konfigurasi Anda</string>\n    <string name=\"reset\">Setel ulang</string>\n    <string name=\"prefsPerAppSettingsSummary\">Atur noti dalam setiap aplikasi</string>\n    <string name=\"prefsBatteryBannerSummary\">Anda mungkin perlu menonaktifkan pengoptimalan baterai dan mengizinkan mulai otomatis agar Noti bekerja di latar belakang. Reboot setelah melakukan hal ini mungkin diperlukan</string>\n    <string name=\"prefsBatteryBannerButton\">Pelajari lebih</string>\n    <string name=\"prefsStatusBarHeightInfo\">Bilah status Anda memiliki tinggi %d piksel</string>\n    <string name=\"prefsProgressBarOffsetTitle\">Pergeseran horizontal</string>\n    <string name=\"prefsCutoutSizeTitle\">Ukuran potongan</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-it/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"prefsPerAppSettingsSummary\">Attiva noti in base alle impostazioni per singole app</string>\n    <string name=\"prefsRoundedCornersTitle\">Usa una barra di avanzamento con gli angoli smussati</string>\n    <string name=\"prefsRoundedCornersSummary\">Passa a una barra di avanzamento con le terminazioni smussate</string>\n    <string name=\"prefsShowInLockScreenTitle\">Mostra la barra di avanzamento nella schermata di blocco</string>\n    <string name=\"prefsShowInLockScreenSummary\">Sarà mostrata anche nella schermata Always On</string>\n    <string name=\"prefsChangeColorTitle\">Cambia il colore della barra di avanzamento</string>\n    <string name=\"prefsCategoryMore\">Di più</string>\n    <string name=\"prefsCalentileTitle\">Prova %s disponibile su Play Store</string>\n    <string name=\"prefsCalentileSummary\">Supporta lo sviluppatore</string>\n    <string name=\"colorLightBlue\">Celeste</string>\n    <string name=\"colorIndigo\">Indaco</string>\n    <string name=\"colorBlue\">Blu</string>\n    <string name=\"colorCyan\">Ciano</string>\n    <string name=\"colorTeal\">Verde acqua</string>\n    <string name=\"colorYellow\">Giallo</string>\n    <string name=\"colorAmber\">Ambra</string>\n    <string name=\"colorGreen\">Verde</string>\n    <string name=\"colorLightGreen\">Verde chiaro</string>\n    <string name=\"colorBlack\">Nero</string>\n    <string name=\"colorOrange\">Arancione</string>\n    <string name=\"colorDeepOrange\">Arancione scuro</string>\n    <string name=\"colorBrown\">Marrone</string>\n    <string name=\"colorGrey\">Grigio</string>\n    <string name=\"colorWhite\">Bianco</string>\n    <string name=\"menuReportBug\">Segnala Bug</string>\n    <string name=\"settingsPreviewFab\">Anteprima</string>\n    <string name=\"colorRed\">Rosso</string>\n    <string name=\"colorPink\">Rosa</string>\n    <string name=\"colorPurple\">Viola</string>\n    <string name=\"colorDeepPurple\">Viola scuro</string>\n    <string name=\"prefsCategoryGeneral\">Generali</string>\n    <string name=\"prefsNotificationPermissionTitle\">Concedi acessso alle notifiche</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Concedi autorizzazione accessibilità</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Richiesto per mostrare Noti nella schermata di blocco e nelle app di sistema</string>\n    <string name=\"prefsSAWPermissionTitle\">Concedi per mostrare Noti sopra le app</string>\n    <string name=\"prefsSAWPermissionSummary\">Richiesto per mostrare l\\'overlay della barra di avanzamento</string>\n    <string name=\"prefsCategoryCustomization\">personalizzazione</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">Barra di avanzamento in modalità verticale</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">Barra di avanzamento in modalità orizzontale</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">Nessuna barra di avanzamento</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Barra di avanzamento lineare</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Barra di avanzamento circolare</string>\n    <string name=\"prefsCategoryTweaks\">modifiche</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Modifiche barra di avanzamento lineare</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Larghezza barra di avanzamento</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Modifica la dimensione della barra di avanzamento</string>\n    <string name=\"prefsShowBelowNotchTitle\">Mostra dietro al ritaglio del display</string>\n    <string name=\"prefsShowBelowNotchSummary\">Mostra la barra di avanzamento dietro al notch o alla fotocamera</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Modifiche barra di avanzamento circolare</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Cambia l\\'allineamento della barra di avanzamento</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Margine partendo dall\\'alto</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Dimensione corretta? Condividi la tua configurazione</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Permetti ad altre persone con lo stesso dispositivo di usare la tua configurazione</string>\n    <string name=\"prefsBlackBackgroundTitle\">Usa sfondo nero</string>\n    <string name=\"prefsPerAppSettingsTitle\">Impostazioni singole app</string>\n    <string name=\"prefsBlackBackgroundSummary\">Passa a una barra di avanzamento con contorno nero</string>\n    <string name=\"advancedOptions\">Opzioni avanzate</string>\n    <string name=\"prefsDisableInFullScreenSummary\">Nascondi la barra di avanzamento nelle app a schermo intero</string>\n    <string name=\"prefsProgressBarStyleTitle\">Seleziona lo stile della barra di avanzamento</string>\n    <string name=\"prefsDisableInFullScreenTitle\">Disattiva in modalità a schermo intero</string>\n    <string name=\"reset\">Resetta</string>\n    <string name=\"perAppSettingsEmptyView\">Nessuna barra di avanzamento trovata. Usa le app per farle apparire</string>\n    <string name=\"colorLime\">Lime</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Cambia la spaziatura dalla parte superiore dello schermo</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-iw/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">דווח על באג</string>\n    <string name=\"settingsPreviewFab\">תצוגה מקדימה</string>\n    <string name=\"notificationListenerDescription\">קורא התראות עם פס התקדמות</string>\n    <string name=\"prefsCategorySetup\">התחל</string>\n    <string name=\"prefsNotificationPermissionTitle\">אפשר גישה להודעות</string>\n    <string name=\"prefsNotificationPermissionSummary\">נדרש לקרוא הודעות עם סרגל התקדמות</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">אפשר הגדרות נגישות</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">נדרש להציג במסך הנעילה ויישומי מערכת</string>\n    <string name=\"prefsCategoryCustomization\">התאמה אישית</string>\n    <string name=\"prefsProgressBarStyleTitle\">בחר תצוגה של פס ההתקדמות</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">פס התקדמות ליניארי</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">סרגל התקדמות מעגלי</string>\n    <string name=\"prefsCategoryTweaks\">שינויים</string>\n    <string name=\"prefsLinearProgressBarTweaks\">הגדרת פס התקדמות ליניארי</string>\n    <string name=\"prefsProgressBarThicknessTitle\">עובי פס התקדמות</string>\n    <string name=\"prefsProgressBarThicknessSummary\">שנה את העובי של פס התקדמות</string>\n    <string name=\"prefsShowBelowNotchTitle\">הצג מתחת לנקב המצלמה</string>\n    <string name=\"prefsShowBelowNotchSummary\">הצג סרגל התקדמות מתחת למגרעת או חור המצלמה</string>\n    <string name=\"prefsCircularProgressBarTweaks\">הגדרת פס התקדמות מעגלי</string>\n    <string name=\"prefsProgressBarOffsetSummary\">שנה את</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">מרחק מהחלק העליון</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">שנה את המרחק מהחלק העליון של המסך</string>\n    <string name=\"prefsRoundedCornersTitle\">השתמש בפס התקדמות עם פינות מעוגלות</string>\n    <string name=\"prefsRoundedCornersSummary\">עבור לפס התקדמות עם קצוות מעוגלים</string>\n    <string name=\"prefsShowInLockScreenTitle\">הצג את פס ההתקדמות במסך הנעילה</string>\n    <string name=\"prefsShowInLockScreenSummary\">יופיע גם ב always on display</string>\n    <string name=\"prefsChangeColorTitle\">שנה את צבע פס ההתקדמות</string>\n    <string name=\"prefsCategoryMore\">עוד</string>\n    <string name=\"prefsCalentileTitle\">נסה את %s בחנות play</string>\n    <string name=\"prefsCalentileSummary\">תמוך במפתח</string>\n    <string name=\"colorRed\">אדום</string>\n    <string name=\"colorPink\">ורוד</string>\n    <string name=\"colorPurple\">סגול</string>\n    <string name=\"colorDeepPurple\">סגול כהה</string>\n    <string name=\"colorIndigo\">אינדיגו</string>\n    <string name=\"colorBlue\">כחול</string>\n    <string name=\"colorLightBlue\">כחול בהיר</string>\n    <string name=\"colorCyan\">טורקיז</string>\n    <string name=\"colorTeal\">ירקרק</string>\n    <string name=\"colorGreen\">ירוק</string>\n    <string name=\"colorLightGreen\">ירוק בהיר</string>\n    <string name=\"colorLime\">ליים</string>\n    <string name=\"colorYellow\">צהוב</string>\n    <string name=\"colorAmber\">אמבר</string>\n    <string name=\"colorOrange\">כתום</string>\n    <string name=\"colorDeepOrange\">כתום כהה</string>\n    <string name=\"colorBrown\">חום</string>\n    <string name=\"colorBlack\">שחור</string>\n    <string name=\"colorGrey\">אפור</string>\n    <string name=\"colorWhite\">לבן</string>\n    <string name=\"perAppSettingsEmptyView\">עדיין לא נמצא פס התקדמות. Noti תגלה לאילו אפליקציות יש פסי התקדמות בזמן השימוש בטלפון</string>\n    <string name=\"prefsPerAppSettingsTitle\">הגדרת לפי כול אפליקציה</string>\n    <string name=\"prefsPerAppSettingsSummary\">הפעל כול אפליקציה בנפרד</string>\n    <string name=\"prefsBlackBackgroundTitle\">השתמש ברקע שחור</string>\n    <string name=\"prefsBlackBackgroundSummary\">החלף לפס התקדמות עם רקע שחור</string>\n    <string name=\"prefsSAWPermissionTitle\">אפשר הצגה מעל אפליקציות אחרות</string>\n    <string name=\"prefsSAWPermissionSummary\">נדרש כדי להציג את פס ההתקדמות</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">התאמה מושלמת? שתף את הבחירה שלך</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">אפשר לאחרים עם אותו מכשיר להשתמש הבחירה שלך</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">אל תציג סרגל התקדמות</string>\n    <string name=\"reset\">איפוס</string>\n    <string name=\"holePunchInstruction\">שנה יישור בטוויקים מעגליים של פס התקדמות</string>\n    <string name=\"prefsCategoryGeneral\">כללי</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-ja/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"notificationListenerDescription\">プログレスバー付きの通知を読み取ります</string>\n    <string name=\"perAppSettingsEmptyView\">プログレスバーがまだ見つかりませんでした。対応アプリはデバイスを使用するにつれて発見されます。</string>\n    <string name=\"reset\">リセット</string>\n    <string name=\"holePunchInstruction\">円形プログレスバーの調整で配置を変更してください</string>\n    <string name=\"prefsBatteryBannerSummary\">バックグラウンドでNotiを動作させるには、バッテリー最適化を無効にし、自動起動を許可する必要があるかもしれません。設定後の再起動が必要な場合があります</string>\n    <string name=\"prefsBatteryBannerButton\">詳細を見る</string>\n    <string name=\"prefsCategorySetup\">セットアップ</string>\n    <string name=\"prefsCategoryGeneral\">一般</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">ロック画面やシステムアプリでの表示に必要</string>\n    <string name=\"prefsSAWPermissionTitle\">他のアプリの上に表示することを許可</string>\n    <string name=\"prefsSAWPermissionSummary\">プログレスバーのオーバーレイ表示に必要</string>\n    <string name=\"prefsCategoryCustomization\">カスタマイズ</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">直線型プログレスバー</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">円形プログレスバー</string>\n    <string name=\"prefsCategoryTweaks\">調整</string>\n    <string name=\"prefsLinearProgressBarTweaks\">直線型プログレスバーの調整</string>\n    <string name=\"prefsProgressBarThicknessTitle\">プログレスバーの太さ</string>\n    <string name=\"prefsProgressBarThicknessSummary\">プログレスバーのトラックのサイズを変更</string>\n    <string name=\"prefsShowBelowNotchTitle\">ディスプレイの切り欠きの下に表示</string>\n    <string name=\"prefsShowBelowNotchSummary\">ノッチやパンチホールの下にプログレスバーを表示</string>\n    <string name=\"prefsStatusBarHeightInfo\">ステータスバーの高さは%dピクセルです</string>\n    <string name=\"prefsCircularProgressBarTweaks\">円形プログレスバーの調整</string>\n    <string name=\"prefsProgressBarOffsetTitle\">水平オフセット</string>\n    <string name=\"prefsProgressBarOffsetSummary\">プログレスバーの配置を変更</string>\n    <string name=\"prefsCutoutSizeTitle\">切り欠きのサイズ</string>\n    <string name=\"prefsCutoutSizeSummary\">内径のサイズを変更</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">同じデバイスを使用している他のユーザーがあなたの設定を使用できるようにする</string>\n    <string name=\"prefsMultiScreenInfoCard\">複数画面の場合、各ディスプレイの設定にアクセスしてそのセットアップのバーを調整してください</string>\n    <string name=\"prefsBlackBackgroundTitle\">黒い背景を使用</string>\n    <string name=\"prefsBlackBackgroundSummary\">黒いトラックのプログレスバーに切り替え</string>\n    <string name=\"prefsPerAppSettingsTitle\">アプリごとの設定</string>\n    <string name=\"prefsPerAppSettingsSummary\">アプリごとにNotiの有効/無効を切り替え</string>\n    <string name=\"prefsRoundedCornersTitle\">角が丸いプログレスバーを使用</string>\n    <string name=\"prefsRoundedCornersSummary\">端が丸いプログレスバーに切り替え</string>\n    <string name=\"prefsShowInLockScreenTitle\">ロック画面でプログレスバーを表示</string>\n    <string name=\"prefsShowInLockScreenSummary\">常時表示画面でも表示されます</string>\n    <string name=\"prefsDisableInFullScreenTitle\">全画面モードで無効にする</string>\n    <string name=\"prefsDisableInFullScreenSummary\">全画面アプリでプログレスバーを非表示</string>\n    <string name=\"prefsChangeColorTitle\">プログレスバーの色を変更</string>\n    <string name=\"prefsCalentileTitle\">Google Playで%sを試す</string>\n    <string name=\"prefsCalentileSummary\">開発者をサポート</string>\n    <string name=\"shareConfigPositiveMessage\">設定を共有していただきありがとうございます！</string>\n    <string name=\"shareConfigNoInternetMessage\">設定をアップロードするにはインターネットを有効にしてください</string>\n    <string name=\"colorRed\">赤</string>\n    <string name=\"colorPink\">ピンク</string>\n    <string name=\"colorPurple\">紫</string>\n    <string name=\"colorDeepPurple\">ディープパープル</string>\n    <string name=\"colorIndigo\">インディゴ</string>\n    <string name=\"colorBlue\">青</string>\n    <string name=\"colorLightBlue\">ライトブルー</string>\n    <string name=\"colorCyan\">シアン</string>\n    <string name=\"colorTeal\">ティール</string>\n    <string name=\"colorGreen\">緑</string>\n    <string name=\"colorLightGreen\">ライトグリーン</string>\n    <string name=\"colorLime\">ライム</string>\n    <string name=\"colorYellow\">黄色</string>\n    <string name=\"colorAmber\">アンバー</string>\n    <string name=\"colorOrange\">オレンジ</string>\n    <string name=\"colorDeepOrange\">ディープオレンジ</string>\n    <string name=\"colorBrown\">茶色</string>\n    <string name=\"menuReportBug\">問題を報告</string>\n    <string name=\"settingsPreviewFab\">プレビュー</string>\n    <string name=\"prefsNotificationPermissionTitle\">通知アクセスを許可</string>\n    <string name=\"prefsNotificationPermissionSummary\">プログレスバー付きの通知を読み取るために必要</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">アクセシビリティ権限を許可</string>\n    <string name=\"prefsProgressBarStyleTitle\">プログレスバーのスタイルを選択</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">縦向きのプログレスバースタイル</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">横向きのプログレスバースタイル</string>\n    <string name=\"advancedOptions\">詳細設定</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">プログレスバーなし</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">上端からのマージン</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">画面上部からの間隔を変更</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">ぴったりフィットしましたか？設定を共有</string>\n    <string name=\"prefsCategoryMore\">その他</string>\n    <string name=\"colorBlack\">黒</string>\n    <string name=\"colorGrey\">グレー</string>\n    <string name=\"colorWhite\">白</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-ka/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"reset\">საწყის პარამეტრებზე დაბრუნება</string>\n    <string name=\"holePunchInstruction\">შეცვალე მდებარეობა წრიული პროგრესის ზოლის პარამეტრებში</string>\n    <string name=\"prefsCategorySetup\">მოწყობა</string>\n    <string name=\"prefsCategoryGeneral\">მთავარი პარამეტრები</string>\n    <string name=\"prefsNotificationPermissionTitle\">მიეცი შეტყობინებებზე წვდომა</string>\n    <string name=\"prefsNotificationPermissionSummary\">საჭიროა, რომ იცნოს შეტყობინებები პროგრესის ზოლით</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">საჭიროა, რომ გამოჩნდეს გაუხსნელ ეკრანზე და სისტემურ აპლიკაციებში</string>\n    <string name=\"prefsCategoryCustomization\">საკუთარი თავისთვის მორგება</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">ვერტიკალურ მდგომარეობაში პროგრესული ზოლის სტილი</string>\n    <string name=\"advancedOptions\">განვითარებული პარამეტრები</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">გათიშული პროგრესული ზოლი</string>\n    <string name=\"menuReportBug\">ბაგის მოხსენება</string>\n    <string name=\"settingsPreviewFab\">მაგალითის ჩვენება</string>\n    <string name=\"notificationListenerDescription\">კითხულობს შეტყობინებებს პროგრესის ზოლით</string>\n    <string name=\"perAppSettingsEmptyView\">პროგრესის ზოლი ვერ იქნა ნაპოვნი. აპლიკაციები პროგრესის ზოლებით გამოვლინდებიან ტელეფონის გამოყენებისას.</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">მიეცი ხელმისაწვდომობის (accessibility) უფლება</string>\n    <string name=\"prefsSAWPermissionTitle\">მიეცი უფლება, რომ სხვა აპლიკაციებზე გამოჩნდეს</string>\n    <string name=\"prefsSAWPermissionSummary\">საჭიროა, რომ პროგრესული ზოლი გამოჩნდეს</string>\n    <string name=\"prefsProgressBarStyleTitle\">შეარჩიეთ პროგრესული ზოლის სტილი</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">ჰორიზონტალურ მდგომარეობაში პროგრესული ზოლის სტილი</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">სწორი პროგრესული ზოლი</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">წრიული პროგრესული ზოლი</string>\n    <string name=\"prefsCategoryTweaks\">პარამეტრები</string>\n    <string name=\"prefsLinearProgressBarTweaks\">სწორი პროგრესული ზოლის პარამეტრები</string>\n    <string name=\"prefsProgressBarThicknessTitle\">პროგრესული ზოლის სისქე</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-lt/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources></resources>"
  },
  {
    "path": "app/src/main/res/values-ml/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">റിപ്പോർട്ട് ബഗ്ഗ്‌</string>\n    <string name=\"holePunchInstruction\">വൃത്താകൃതിയിലുള്ള പ്രോഗ്രസ്സ് ബാർ ട്വീക്കുകളിൽ അലൈൻമെന്റ് മാറ്റുക</string>\n    <string name=\"prefsCategorySetup\">സെറ്റപ്പ്</string>\n    <string name=\"perAppSettingsEmptyView\">നോട്ടിഫിക്കേഷൻ വരുന്നത് അനുസരിച്ച് അന്യോജ്യമായ് ആപ്പ് നോട്ടി തിരിച്ചറിയും</string>\n    <string name=\"reset\">റീസെറ്റ്</string>\n    <string name=\"prefsCategoryGeneral\">ജനറൽ</string>\n    <string name=\"prefsNotificationPermissionTitle\">നോട്ടിഫിക്കേഷൻ ആക്സസ് അനുവദിക്കുക</string>\n    <string name=\"notificationListenerDescription\">പ്രോഗ്രസ്സ് ബാർ ഉപയോഗിച്ച് നോട്ടിഫിക്കേഷൻ വായിക്കു</string>\n    <string name=\"prefsNotificationPermissionSummary\">പ്രോഗ്രസ്സ് ബാർ ഉപയോഗിച്ച് നോട്ടിഫിക്കേഷനുകൾ വായിക്കേണ്ടതുണ്ട്</string>\n    <string name=\"settingsPreviewFab\">പ്രിവ്യൂ</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">ആക്സസിബിലിറ്റി പെർമിഷൻ അനുവദിക്കുക</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">ലോക്ക് സ്‌ക്രീനിലും സിസ്റ്റം ആപ്പുകളിലും പ്രദർശിപ്പിക്കാൻ ആവശ്യമാണ്</string>\n    <string name=\"advancedOptions\">അഡ്വാൻസ്ഡ് ഓപ്ഷനുകൾ</string>\n    <string name=\"prefsLinearProgressBarTweaks\">ലീനിയർ പ്രോഗ്രസ് ബാർ മാറ്റങ്ങൾ</string>\n    <string name=\"activateToggle\">ഇതിനായി പ്രാത്മമാകാൻ</string>\n    <string name=\"downloads\">ഡൗൺലോഡ്സ്</string>\n    <string name=\"media\">മീഡിയ</string>\n    <string name=\"prefsBatteryBannerButton\">കൂടുതലറിയുക</string>\n    <string name=\"prefsSAWPermissionTitle\">മറ്റ് ആപ്പുകൾക്ക് മുകളിൽ പ്രദർശിപ്പിക്കാൻ അനുവദിക്കുക</string>\n    <string name=\"prefsSAWPermissionSummary\">പ്രോഗ്രസ് ബാർ ഓവർലേ പ്രദർശിപ്പിക്കാൻ ആവശ്യമാണ്</string>\n    <string name=\"prefsCategoryCustomization\">കസ്റ്‌മൈസേഷൻ</string>\n    <string name=\"prefsProgressBarStyleTitle\">പ്രോഗ്രസ് ബാർ സ്റ്റൈൽ തിരഞ്ഞെടുക്കുക</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">പോർട്രെയ്റ്റ് പ്രോഗ്രസ് ബാർ സ്റ്റൈൽ</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">വൃത്താകൃതിയിലുള്ള പ്രോഗ്രസ് ബാർ</string>\n    <string name=\"prefsCategoryTweaks\">മാറ്റങ്ങൾ</string>\n    <string name=\"prefsBatteryBannerSummary\">നോട്ടി ബാക്ഗ്രൗണ്ടിൽ പ്രവർത്തിക്കാൻ വേണ്ടി ബാറ്ററി ഓപ്‌ഷമൈസേഷൻ ഓഫ് ആകുകെയും ഓട്ടോസ്റ്റാർട്ട് അനുവദികെയും വേണ്ടി വരും. ഇത് ചെയ്തതിനുശേഷം ഒരു റീബൂട്ട് ആവശ്യമായി വന്നേക്കാം</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">പ്രോഗ്രസ് ബാർ ഇല്ല</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">ലാൻഡ്സ്കേപ്പ് പ്രോഗ്രസ് ബാർ സ്റ്റൈൽ</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">ലീനിയർ പ്രോഗ്രസ് ബാർ</string>\n    <string name=\"prefsStatusBarHeightInfo\">നിങ്ങളുടെ സ്റ്റാറ്റസ് ബാർ %d പിക്സൽ ഉയരമുണ്ട്</string>\n    <string name=\"prefsProgressBarOffsetTitle\">തിരശ്ചീനമായ ഓഫ്സെറ്റ്</string>\n    <string name=\"prefsCutoutSizeTitle\">കട്ടൗട്ടിൻ്റെ വലുപ്പം</string>\n    <string name=\"prefsShowBelowNotchTitle\">ഡിസ്പ്ലേ കട്ടൗട്ടിൻ്റെ താഴെ കാണിക്കുക</string>\n    <string name=\"prefsShowBelowNotchSummary\">ഏതെങ്കിലും നോച്ച് അല്ലെങ്കിൽ ഹോൾ പഞ്ചിന് താഴെ പ്രോഗ്രസ് ബാർ പ്രദർശിപ്പിക്കുക</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">സ്ക്രീനിന്റെ മുകളിൽ നിന്നുള്ള സ്പെയ്സിംഗ് മാറ്റുക</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">മുകളിൽ നിന്നുള്ള മാർജിൻ</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">തികച്ചും യോചിക്കുന്നു? കോൺഫിഗറേഷൻ പങ്കിടുക</string>\n    <string name=\"prefsBlackBackgroundSummary\">കറുത്ത ട്രാക്കുള്ള പ്രോഗ്രസ് ബാറിലേക്ക് മാറുക</string>\n    <string name=\"prefsPerAppSettingsTitle\">ഓരോ ആപ്പിനുമുള്ള ക്രമീകരണങ്ങൾ</string>\n    <string name=\"prefsBlackBackgroundTitle\">കറുത്ത ബാക്ക്ഗ്രൗണ്ട് ഉപയോഗിക്കുക</string>\n    <string name=\"prefsChangeColorTitle\">പ്രോഗ്രസ് ബാറിന്റെ നിറം മാറ്റുക</string>\n    <string name=\"prefsDisableInFullScreenSummary\">പൂർണ്ണസ്‌ക്രീൻ ആപ്പുകളിൽ പ്രോഗ്രസ് ബാർ മറയ്ക്കുക</string>\n    <string name=\"prefsCategoryMore\">കൂടുതൽ</string>\n    <string name=\"prefsCalentileTitle\">ഗൂഗിൾ പ്ലേയിൽ %s പരീക്ഷിച്ചു നോക്കൂ</string>\n    <string name=\"prefsCalentileSummary\">ഡെവലപ്പറെ പിന്തുണയ്ക്കുക</string>\n    <string name=\"colorRed\">ചുവപ്പ്</string>\n    <string name=\"colorPink\">പിങ്ക്</string>\n    <string name=\"colorPurple\">പർപ്പിൾ</string>\n    <string name=\"colorDeepPurple\">കടും പർപ്പിൾ</string>\n    <string name=\"colorIndigo\">ഇൻഡിഗോ</string>\n    <string name=\"colorBlue\">നീല</string>\n    <string name=\"colorLightBlue\">ഇളം നീല</string>\n    <string name=\"colorLime\">നാരങ്ങ</string>\n    <string name=\"colorYellow\">മഞ്ഞ</string>\n    <string name=\"colorAmber\">ആമ്പർ</string>\n    <string name=\"colorTeal\">ടീൽ</string>\n    <string name=\"colorGreen\">പച്ച</string>\n    <string name=\"colorLightGreen\">ഇളം പച്ച</string>\n    <string name=\"colorDeepOrange\">കടും ഓറഞ്ച്</string>\n    <string name=\"colorOrange\">ഓറഞ്ച്</string>\n    <string name=\"colorBrown\">തവിട്ട്</string>\n    <string name=\"prefsProgressBarThicknessTitle\">പ്രോഗ്രസ് ബാറിൻ്റെ കട്ടി</string>\n    <string name=\"prefsProgressBarThicknessSummary\">പ്രോഗ്രസ് ബാറിന്റെ ട്രാക്കിന്റെ വലുപ്പം മാറ്റുക</string>\n    <string name=\"prefsProgressBarOffsetSummary\">പ്രോഗ്രസ് ബാറിൻ്റെ വിന്യാസം മാറ്റുക</string>\n    <string name=\"prefsCutoutSizeSummary\">അകത്തെ വ്യാസത്തിന്റെ വലിപ്പം മാറ്റുക</string>\n    <string name=\"prefsMultiScreenInfoCard\">ഒന്നിലധികം സ്‌ക്രീനുകൾക്ക്, ഓരോ ഡിസ്‌പ്ലേയിലൂടെയും ക്രമീകരണങ്ങൾ ആക്‌സസ് ചെയ്‌ത് ആ സജ്ജീകരണത്തിനായി ബാർ ക്രമീകരിക്കുക</string>\n    <string name=\"prefsPerAppSettingsSummary\">ഓരോ ആപ്പിനും അനുസരിച്ച് നോട്ടി ടോഗിൾ ചെയ്യുക</string>\n    <string name=\"prefsRoundedCornersTitle\">വൃത്താകൃതിയിലുള്ള മൂലകളുള്ള പ്രോഗ്രസ് ബാർ ഉപയോഗിക്കുക</string>\n    <string name=\"prefsRoundedCornersSummary\">വൃത്താകൃതിയിലുള്ള അറ്റങ്ങളുള്ള പ്രോഗ്രസ് ബാറിലേക്ക് മാറുക</string>\n    <string name=\"prefsShowInLockScreenTitle\">ലോക്ക് സ്ക്രീനിൽ പ്രോഗ്രസ് ബാർ കാണിക്കുക</string>\n    <string name=\"prefsShowInLockScreenSummary\">\\'എല്ലായ്പ്പോഴും പ്രദർശിപ്പിക്കും\\' എന്നതിലും കാണിക്കും</string>\n    <string name=\"colorCyan\">സിയാൻ</string>\n    <string name=\"prefsDisableInFullScreenTitle\">പൂർണ്ണസ്‌ക്രീൻ മോഡിൽ പ്രവർത്തനരഹിതമാക്കുക</string>\n    <string name=\"shareConfigPositiveMessage\">നിങ്ങളുടെ കോൺഫിഗറേഷൻ പങ്കിട്ടതിന് നന്ദി!</string>\n    <string name=\"colorWhite\">വെള്ള</string>\n    <string name=\"prefsNotificationColorTitle\">നോട്ടിഫിക്കേഷൻ്റെ നിറം പൊരുത്തം പിടികുക</string>\n    <string name=\"shareConfigNoInternetMessage\">കോൺഫിഗറേഷൻ അപ്‌ലോഡ് ചെയ്യാൻ ഇന്റർനെറ്റ് പ്രവർത്തനക്ഷമമാക്കുക</string>\n    <string name=\"colorBlack\">കറുപ്പ്</string>\n    <string name=\"colorGrey\">ചാരനിറം</string>\n    <string name=\"prefsCircularProgressBarTweaks\">വൃത്താകൃതിയിലുള്ള പ്രോഗ്രസ് ബാറിൻ്റെ മാറ്റങ്ങൾ</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">ഒരേ ഉപകരണമുള്ള മറ്റുള്ളവരെ നിങ്ങളുടെ കോൺഫിഗറേഷൻ ഉപയോഗിക്കാൻ അനുവദിക്കുക</string>\n    <string name=\"prefsNotificationColorSummary\">പ്രോഗ്രസ് ബാറിനായി അറിയിപ്പിന്റെ നിറം ഉപയോഗിക്കുക</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-nb-rNO/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"colorOrange\">Oransje</string>\n    <string name=\"colorWhite\">Hvit</string>\n    <string name=\"colorAmber\">Ravgul</string>\n    <string name=\"colorDeepOrange\">Mørkeoransje</string>\n    <string name=\"reset\">Tilbakestill</string>\n    <string name=\"colorLightGreen\">Lysegrønn</string>\n    <string name=\"colorBlue\">Blå</string>\n    <string name=\"colorGreen\">Grønn</string>\n    <string name=\"colorGrey\">Grå</string>\n    <string name=\"prefsCalentileTitle\">Prøv %s på Google Play</string>\n    <string name=\"colorBlack\">Svart</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Innvilg tilgjengelighetstilgang</string>\n    <string name=\"colorRed\">Rød</string>\n    <string name=\"perAppSettingsEmptyView\">Fant ikke noe framdriftsfelt. Noti oppdager hvilke programmer som har framdriftsfelt når du bruker enheten.</string>\n    <string name=\"prefsCategoryGeneral\">generelt</string>\n    <string name=\"prefsBlackBackgroundTitle\">Bruk svart bakgrunn</string>\n    <string name=\"colorLime\">Limegrønn</string>\n    <string name=\"notificationListenerDescription\">Leser merknader med et framdriftsfelt</string>\n    <string name=\"colorDeepPurple\">Mørkelilla</string>\n    <string name=\"prefsCalentileSummary\">Støtt utvikleren</string>\n    <string name=\"colorYellow\">Gul</string>\n    <string name=\"settingsPreviewFab\">Forhåndvisning</string>\n    <string name=\"prefsCategorySetup\">oppsett</string>\n    <string name=\"colorCyan\">Cyanblå</string>\n    <string name=\"menuReportBug\">Rapporter feil</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Perfekt tilpasning? Del oppsettet.</string>\n    <string name=\"colorIndigo\">Indigo</string>\n    <string name=\"colorBrown\">Brun</string>\n    <string name=\"colorPink\">Rosa</string>\n    <string name=\"colorLightBlue\">Lyseblå</string>\n    <string name=\"colorPurple\">Lilla</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">La andre med samme enhet bruke ditt oppsett</string>\n    <string name=\"prefsCategoryCustomization\">tilpasning</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Påkrevd for visning på låseskjermen og i systemprogrammer</string>\n    <string name=\"prefsShowBelowNotchTitle\">Vis under skjermbusslomme</string>\n    <string name=\"prefsShowInLockScreenTitle\">Vis framdriftsfelt på låseskjermen</string>\n    <string name=\"prefsShowInLockScreenSummary\">Vil også vises når skjerm ikke skrur seg av</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Margin til toppen</string>\n    <string name=\"prefsProgressBarStyleTitle\">Velg framdriftfeltsstil</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Lineært framdriftsfelt</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Tykkelse for framdriftsfeltspor</string>\n    <string name=\"prefsSAWPermissionTitle\">Tillat visning over andre programmer</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Endre framdriftfeltsjustering</string>\n    <string name=\"prefsPerAppSettingsSummary\">Veksle visning av noti per program</string>\n    <string name=\"prefsNotificationPermissionSummary\">Påkrevd for lesing av merknader med framdriftsfelt</string>\n    <string name=\"prefsBlackBackgroundSummary\">Endre til framdriftsfelt med svart spor</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Justering av sirkulære framdriftsfelt</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Sirkulært framdriftsfelt</string>\n    <string name=\"prefsNotificationPermissionTitle\">Innvilg merknadstilgang</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Endre størrelsen på framdriftsfeltets spor</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Endre avstanden fra toppen av skjermen</string>\n    <string name=\"prefsChangeColorTitle\">Endre framdriftsfeltsfarge</string>\n    <string name=\"prefsPerAppSettingsTitle\">Innstillinger per program</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Justering av lineære framdriftsfelt</string>\n    <string name=\"holePunchInstruction\">Endre justering av sirkulære framdriftsfelt</string>\n    <string name=\"prefsCategoryTweaks\">justeringer</string>\n    <string name=\"prefsRoundedCornersSummary\">Endre til framdriftsfelt med avrundede hjørner</string>\n    <string name=\"prefsCategoryMore\">mer</string>\n    <string name=\"prefsShowBelowNotchSummary\">Vis framdriftsfelt under busslomme eller spionhull</string>\n    <string name=\"prefsRoundedCornersTitle\">Bruk framdriftsfelt med avrundede hjørner</string>\n    <string name=\"prefsSAWPermissionSummary\">Påkrevd for visning av framdriftsfeltsoverlaget</string>\n    <string name=\"colorTeal\">Blågrønn</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-night/colors.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <color name=\"text\">#FFFFFF</color>\n    <color name=\"system_accent_color\">@color/material_dynamic_primary90</color>\n    <color name=\"app_accent_color\">#4F378B</color>\n</resources>"
  },
  {
    "path": "app/src/main/res/values-night/themes.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources xmlns:tools=\"http://schemas.android.com/tools\">\n    <style name=\"Theme.NotiProgressBar\" parent=\"Theme.Material3.DayNight.NoActionBar\">\n        <item name=\"android:statusBarColor\" tools:targetApi=\"lollipop\">@android:color/transparent</item>\n        <item name=\"android:navigationBarColor\" tools:targetApi=\"lollipop\">@android:color/transparent</item>\n        <item name=\"android:windowLightStatusBar\" tools:targetApi=\"m\">false</item>\n        <item name=\"dialogCornerRadius\">20dp</item>\n    </style>\n</resources>"
  },
  {
    "path": "app/src/main/res/values-pl/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">Zgłoś błąd</string>\n    <string name=\"settingsPreviewFab\">Podgląd</string>\n    <string name=\"notificationListenerDescription\">Odczytuje powiadomienia z paskiem postępu</string>\n    <string name=\"prefsCategorySetup\">Konfiguracja</string>\n    <string name=\"prefsNotificationPermissionTitle\">Udziel dostępu do powiadomień</string>\n    <string name=\"prefsNotificationPermissionSummary\">Wymagane do odczytywania powiadomień aplikacji z paskiem postępu</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Udziel uprawnienia w ustawieniach ułatwiania dostępu</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Wymagane do działania na ekranie blokady, jak i w aplikacjach systemowych</string>\n    <string name=\"prefsCategoryCustomization\">Dostosuj</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">Styl paska postępu w pionie</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">Styl paska postępu w poziomie</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Liniowy pasek postępu</string>\n    <string name=\"prefsProgressBarStyleTitle\">Wybierz wygląd paska</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Okrągły pasek postępu</string>\n    <string name=\"prefsCategoryTweaks\">opcje</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Ustawienia linearnego paska postępu</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Grubość paska postępu</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Zmienia grubość ścieżki paska postępu</string>\n    <string name=\"prefsShowBelowNotchTitle\">Wyświetl poniżej linii wycięcia</string>\n    <string name=\"prefsShowBelowNotchSummary\">Sprawia że pasek postępu wyświetla się pod wycięciem w ekranie</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Ustawienia okrągłego paska postępu</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Zmień wyrównanie paska postępu</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Margines od góry</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Zmienia odstęp od góry ekranu</string>\n    <string name=\"prefsRoundedCornersTitle\">Używaj zaokrąglonego paska postępu</string>\n    <string name=\"prefsRoundedCornersSummary\">Sprawia że pasek postępu ma zaokrąglone krawędzie</string>\n    <string name=\"prefsShowInLockScreenTitle\">Pokazuje pasek postępu na ekranie blokady</string>\n    <string name=\"prefsShowInLockScreenSummary\">Będzie także działać w trybie \\\"Always on display\\\"</string>\n    <string name=\"prefsChangeColorTitle\">Zmień kolor paska postępu</string>\n    <string name=\"prefsCategoryMore\">więcej</string>\n    <string name=\"prefsCalentileTitle\">Wypróbuj %s w Google Play</string>\n    <string name=\"prefsCalentileSummary\">Wspomóż twórcę</string>\n    <string name=\"colorRed\">Czerwony</string>\n    <string name=\"colorPink\">Różowy</string>\n    <string name=\"colorPurple\">Fioletowy</string>\n    <string name=\"colorDeepPurple\">Ciemny fiolet</string>\n    <string name=\"colorIndigo\">Indygo</string>\n    <string name=\"colorBlue\">Niebieski</string>\n    <string name=\"colorLightBlue\">Jasny niebieski</string>\n    <string name=\"colorCyan\">Cyjan</string>\n    <string name=\"colorTeal\">Morski</string>\n    <string name=\"colorGreen\">Zielony</string>\n    <string name=\"colorLightGreen\">Jasna zieleń</string>\n    <string name=\"colorLime\">Limonkowy</string>\n    <string name=\"colorYellow\">Żółty</string>\n    <string name=\"colorAmber\">Bursztynowy</string>\n    <string name=\"colorOrange\">Pomarańczowy</string>\n    <string name=\"colorDeepOrange\">Ciemny pomarańczowy</string>\n    <string name=\"colorBrown\">Brązowy</string>\n    <string name=\"colorBlack\">Czarny</string>\n    <string name=\"colorGrey\">Szary</string>\n    <string name=\"colorWhite\">Biały</string>\n    <string name=\"perAppSettingsEmptyView\">Na ten moment nie wykryto żadnych aplikacji z paskiem postępu w powiadomieniu. Jeśli Noti wykryje takową, to pojawi się tutaj</string>\n    <string name=\"prefsPerAppSettingsTitle\">Wybór aplikacji</string>\n    <string name=\"prefsPerAppSettingsSummary\">Noti w tych aplikacjach będzie szukać pasków postępu</string>\n    <string name=\"prefsBlackBackgroundTitle\">Używaj ciemnego tła</string>\n    <string name=\"prefsBlackBackgroundSummary\">Tworzy czarną ścieżkę dla paska postępu</string>\n    <string name=\"prefsSAWPermissionTitle\">Zezwól na wyświetlanie nad innymi aplikacjami</string>\n    <string name=\"prefsSAWPermissionSummary\">Wymagane do wyświetlania paska postępu nad innymi aplikacjami</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Idealnie dopasowane? Podziel się konfiguracją</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Pozwól innym użytkownikom tego samego urządzenia korzystać z Twojej konfiguracji</string>\n    <string name=\"prefsCategoryGeneral\">Ogólne</string>\n    <string name=\"reset\">Resetuj</string>\n    <string name=\"holePunchInstruction\">Zmień wyrównanie w ustawieniach okrągłego paska postępu</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">Brak paska postępu</string>\n    <string name=\"advancedOptions\">Ustawienia zaawansowane</string>\n    <string name=\"prefsDisableInFullScreenSummary\">Wyłącz pasek postępu w aplikacjach pełnoekranowych</string>\n    <string name=\"prefsDisableInFullScreenTitle\">Wyłącz w trybie pełnoekranowym</string>\n    <string name=\"prefsBatteryBannerButton\">Dowiedz się więcej</string>\n    <string name=\"shareConfigPositiveMessage\">Dzięki za podzielenie się twoją konfiguracją!</string>\n    <string name=\"prefsCutoutSizeSummary\">Zmienia rozmiar średnicy wewnętrznej</string>\n    <string name=\"prefsCutoutSizeTitle\">Rozmiar okręgu</string>\n    <string name=\"prefsProgressBarOffsetTitle\">Poziome przesunięcie</string>\n    <string name=\"prefsStatusBarHeightInfo\">Twój pasek stanu ma wysokość %d pikseli</string>\n    <string name=\"shareConfigNoInternetMessage\">Do wysłania twoich ustawień wymagane jest połączenie internetowe</string>\n    <string name=\"prefsBatteryBannerSummary\">Może być wymagane dodanie aplikacji Noti do wyjątków oszczędzania energii, jak i zezwolenie na uruchamianie wraz z urządzeniem. Może być wymagane ponowne uruchomienie urządzenia</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-pt-rPT/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">Reportar Erro</string>\n    <string name=\"settingsPreviewFab\">Pré-visualizar</string>\n    <string name=\"notificationListenerDescription\">Lê notificações com uma barra de progresso</string>\n    <string name=\"media\">Multimédia</string>\n    <string name=\"reset\">Restaurar</string>\n    <string name=\"prefsBatteryBannerSummary\">Podes ter de desativar otimizações da bateria e permitir o início automático para o Noti funcionar em segundo plano. Pode ser necessário reiniciar após estes passos</string>\n    <string name=\"prefsBatteryBannerButton\">Saber mais</string>\n    <string name=\"prefsCategorySetup\">configuração</string>\n    <string name=\"prefsNotificationPermissionTitle\">Permitir acesso a notificações</string>\n    <string name=\"prefsNotificationPermissionSummary\">Necessário para ler notificações com uma barra de progresso</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Conceder permissão de acessibilidade</string>\n    <string name=\"prefsSAWPermissionSummary\">Necessário para mostrar o overlay da barra de progresso</string>\n    <string name=\"prefsCategoryCustomization\">personalização</string>\n    <string name=\"prefsProgressBarStyleTitle\">Selecionar estilo da barra de progresso</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">Estilo da barra de progresso em modo vertical</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">Estilo da barra de progresso em modo horizontal</string>\n    <string name=\"advancedOptions\">Opções Avançadas</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">Nenhuma barra de progresso</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Barra de progresso linear</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Barra de progresso circular</string>\n    <string name=\"prefsCategoryTweaks\">ajustes</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Ajustes da barra de progresso linear</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Espessura da barra de progresso</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Mudar tamanho da linha da barra de progresso</string>\n    <string name=\"prefsShowBelowNotchTitle\">Mostrar por baixo de recortes do ecrã</string>\n    <string name=\"prefsShowBelowNotchSummary\">Exibir barra de progresso por baixo de qualquer notch ou hole punch</string>\n    <string name=\"prefsStatusBarHeightInfo\">A tua barra de estado tem %d píxeis de altura</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Ajustes da barra de progresso circular</string>\n    <string name=\"prefsProgressBarOffsetTitle\">Desvio horizontal</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Mudar alinhamento da barra de progresso</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Margem do topo</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Mudar espaçamento do topo do ecrã</string>\n    <string name=\"prefsRoundedCornersTitle\">Usar barra de progresso com cantos arredondados</string>\n    <string name=\"prefsRoundedCornersSummary\">Mudar para barra de progresso com pontas arredondadas</string>\n    <string name=\"prefsShowInLockScreenTitle\">Mostrar barra de progresso no ecrã de bloqueio</string>\n    <string name=\"prefsShowInLockScreenSummary\">Irá também aparecer no always on display</string>\n    <string name=\"prefsNotificationColorTitle\">Usar cor da notificação</string>\n    <string name=\"prefsNotificationColorSummary\">Retirar cor da notificação para a barra de progresso</string>\n    <string name=\"prefsChangeColorTitle\">Mudar cor da barra de progresso</string>\n    <string name=\"prefsCategoryMore\">mais</string>\n    <string name=\"prefsCalentileTitle\">Experimentar o %s no Google Play</string>\n    <string name=\"prefsCalentileSummary\">Apoiar o criador</string>\n    <string name=\"shareConfigPositiveMessage\">Obrigado por partilhares a configuração!</string>\n    <string name=\"colorRed\">Vermelho</string>\n    <string name=\"colorPink\">Rosa</string>\n    <string name=\"colorPurple\">Roxo</string>\n    <string name=\"colorDeepPurple\">Roxo profundo</string>\n    <string name=\"colorIndigo\">Índigo</string>\n    <string name=\"colorBlue\">Azul</string>\n    <string name=\"colorLightBlue\">Azul claro</string>\n    <string name=\"colorCyan\">Ciano</string>\n    <string name=\"colorTeal\">Verde petróleo</string>\n    <string name=\"colorGreen\">Verde</string>\n    <string name=\"colorLightGreen\">Verde claro</string>\n    <string name=\"colorLime\">Lima</string>\n    <string name=\"colorYellow\">Amarelo</string>\n    <string name=\"colorAmber\">Âmbar</string>\n    <string name=\"colorOrange\">Laranja</string>\n    <string name=\"colorDeepOrange\">Laranja profundo</string>\n    <string name=\"colorBrown\">Castanho</string>\n    <string name=\"colorBlack\">Preto</string>\n    <string name=\"colorGrey\">Cinzento</string>\n    <string name=\"colorWhite\">Branco</string>\n    <string name=\"prefsPerAppSettingsTitle\">Definições por app</string>\n    <string name=\"prefsPerAppSettingsSummary\">Ativar noti por aplicação</string>\n    <string name=\"perAppSettingsEmptyView\">O noti vai identificar mais aplicações compatíveis ao receberes notificações</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Encaixe perfeito? Partilha a configuração</string>\n    <string name=\"prefsMultiScreenInfoCard\">Com vários ecrãs, acede às definições através de cada ecrã para ajustar a barra para essa configuração</string>\n    <string name=\"prefsBlackBackgroundTitle\">Usar fundo preto</string>\n    <string name=\"prefsBlackBackgroundSummary\">Mudar para barra de progresso com carril preto</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Necessário para mostrar no ecrã de bloqueio e aplicações de sistema</string>\n    <string name=\"prefsSAWPermissionTitle\">Permitir sobrepor a outras apps</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Permite a outros com o mesmo dispositivo usar a tua configuração</string>\n    <string name=\"prefsCategoryGeneral\">geral</string>\n    <string name=\"holePunchInstruction\">Mudar alinhamento em ajustes da barra de progresso circular</string>\n    <string name=\"prefsDisableInFullScreenTitle\">Desativar em ecrã inteiro</string>\n    <string name=\"prefsDisableInFullScreenSummary\">Esconder barra de progresso em aplicações em ecrã inteiro</string>\n    <string name=\"prefsCutoutSizeTitle\">Tamanho do recorte</string>\n    <string name=\"prefsCutoutSizeSummary\">Mudar tamanho do diâmetro interior</string>\n    <string name=\"shareConfigNoInternetMessage\">Ativa a internet para partilhar a configuração</string>\n    <string name=\"activateToggle\">Ativo para</string>\n    <string name=\"downloads\">Transferências</string>\n</resources>"
  },
  {
    "path": "app/src/main/res/values-ro/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"reset\">Resetează</string>\n    <string name=\"perAppSettingsEmptyView\">Deocamdată nu a fost găsită nicio aplicație ce utilizează bară de progres. Noti va descoperi ce aplicații utilizează bare de progres pe măsură ce folosești telefonul</string>\n    <string name=\"notificationListenerDescription\">Citește notificările cu o bară de progres</string>\n    <string name=\"settingsPreviewFab\">Previzualizează</string>\n    <string name=\"menuReportBug\">Raportează erori</string>\n    <string name=\"colorOrange\">Portocaliu</string>\n    <string name=\"colorWhite\">Alb</string>\n    <string name=\"colorAmber\">Portocaliu gălbui</string>\n    <string name=\"colorDeepOrange\">Portocaliu roșiatic</string>\n    <string name=\"colorLightGreen\">Verde deschis</string>\n    <string name=\"colorBlue\">Albastru</string>\n    <string name=\"colorGreen\">Verde</string>\n    <string name=\"colorGrey\">Gri</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Permite și celor ce au același dispozitiv să utilizeze configurația ta</string>\n    <string name=\"prefsCalentileTitle\">Încearcă aplicația %s pe Google Play</string>\n    <string name=\"colorBlack\">Negru</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Acordați permisiunea pentru accesibilitate</string>\n    <string name=\"prefsCategoryCustomization\">personalizare</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Necesar pentru a fi afișat în ecranul de blocare și în aplicațiile de sistem</string>\n    <string name=\"colorRed\">Roșu</string>\n    <string name=\"prefsShowBelowNotchTitle\">Arată sub decupajul afișajului</string>\n    <string name=\"prefsShowInLockScreenTitle\">Arată bara de progres în ecranul de blocare</string>\n    <string name=\"prefsCategoryGeneral\">Setări generale</string>\n    <string name=\"prefsShowInLockScreenSummary\">Va fi afișat și în modul ecran mereu pornit (always on display)</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Marginea din partea de sus</string>\n    <string name=\"prefsProgressBarStyleTitle\">Alegeți stilul barei de progres</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Bară liniară de progres</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Grosimea pistei barei de progres</string>\n    <string name=\"prefsSAWPermissionTitle\">Permiteți afișarea peste alte aplicații</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Schimbă aliniamentul barei de progres</string>\n    <string name=\"prefsBlackBackgroundTitle\">Utilizează fundal negru</string>\n    <string name=\"prefsPerAppSettingsSummary\">Comutați noti în funcție de aplicație</string>\n    <string name=\"prefsNotificationPermissionSummary\">Necesar pentru a citi notificările cu o bară de progres</string>\n    <string name=\"colorLime\">Verde lămâie</string>\n    <string name=\"prefsBlackBackgroundSummary\">Comutați la bara de progres cu pistă neagră</string>\n    <string name=\"colorDeepPurple\">Mov închis</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Ajustări ale barei circulare de progres</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Bară de progres circulară</string>\n    <string name=\"prefsNotificationPermissionTitle\">Acordați acces la notificări</string>\n    <string name=\"prefsCalentileSummary\">Susține dezvoltatorul</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Schimbă dimensiunea pistei barei de progres</string>\n    <string name=\"colorYellow\">Galben</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Schimbă spațierea față de partea de sus a ecranului</string>\n    <string name=\"prefsChangeColorTitle\">Schimbă culoarea barei de progres</string>\n    <string name=\"prefsCategorySetup\">Configurare</string>\n    <string name=\"prefsPerAppSettingsTitle\">Setări în funcție de aplicație</string>\n    <string name=\"colorCyan\">Albastru verzui</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Se potrivește perfect? Distribuiți configurația</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Ajustări ale barei de progres</string>\n    <string name=\"holePunchInstruction\">Schimbă alinierea în ajustările barei de progres circulare</string>\n    <string name=\"colorIndigo\">Indigo</string>\n    <string name=\"colorBrown\">Maro</string>\n    <string name=\"prefsCategoryTweaks\">ajustări</string>\n    <string name=\"colorPink\">Roz</string>\n    <string name=\"prefsRoundedCornersSummary\">Comutați la bara de progres cu capete rotunjite</string>\n    <string name=\"prefsCategoryMore\">mai mult</string>\n    <string name=\"colorLightBlue\">Albastru deschis</string>\n    <string name=\"prefsShowBelowNotchSummary\">Pentru tipurile de ecran ce au crestătură (notch) sau gaură pentru cameră (hole punch), afișează bara de progres dedesubt</string>\n    <string name=\"prefsRoundedCornersTitle\">Utilizează bara de progres cu colțuri rotunjite</string>\n    <string name=\"prefsSAWPermissionSummary\">Necesar pentru a afișa bara de progres cu un strat dedesubt</string>\n    <string name=\"colorTeal\">Turcoaz</string>\n    <string name=\"colorPurple\">Violet</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-ru/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"settingsPreviewFab\">Предпросмотр</string>\n    <string name=\"menuReportBug\">Сообщить о сбое</string>\n</resources>"
  },
  {
    "path": "app/src/main/res/values-sk/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"settingsPreviewFab\">Náhľad</string>\n    <string name=\"reset\">Reštart</string>\n    <string name=\"prefsCategorySetup\">nastaviť</string>\n    <string name=\"prefsCategoryGeneral\">všeobecné</string>\n    <string name=\"prefsNotificationPermissionTitle\">Udeliť prístup k upozorneniam</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Udeliť povolenie na prístupnosť</string>\n    <string name=\"prefsSAWPermissionTitle\">Povoliť zobrazovanie cez iné aplikácie</string>\n    <string name=\"prefsSAWPermissionSummary\">Vyžadované na zobrazenie prekryvu ukazovateľa priebehu</string>\n    <string name=\"prefsCategoryCustomization\">prispôsobenie</string>\n    <string name=\"prefsProgressBarStyleTitle\">Vyberte štýl ukazovateľa priebehu</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">Štýl ukazovateľa priebehu na výšk</string>\n    <string name=\"advancedOptions\">Pokročilé nastavenia</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Lineárny ukazovateľ priebehu</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Kruhový ukazovateľ priebehu</string>\n    <string name=\"prefsCategoryTweaks\">úpravy</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Úpravy lineárneho ukazovateľa priebehu</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Hrúbka dráhy ukazovateľa priebehu</string>\n    <string name=\"menuReportBug\">Nahlásiť chybu</string>\n    <string name=\"perAppSettingsEmptyView\">Nenašli sa žiadne ukazovatele priebehu. Aplikácie s ukazovateľmi priebehu sú objavované, keď používate svoje zariadenie.</string>\n    <string name=\"holePunchInstruction\">Zmeňte zarovnanie pri úpravách kruhového ukazovateľa priebehu.</string>\n    <string name=\"prefsNotificationPermissionSummary\">Vyžaduje sa na čítanie upozornení s ukazovateľom priebehu</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Vyžaduje sa na zobrazenie na uzamknutej obrazovke a v systémových aplikáciách</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">Štýl ukazovateľa priebehu na šírku</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">Žiadny ukazovateľ priebehu</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Zmeniť hrúbku dráhy ukazovateľa priebehu</string>\n    <string name=\"prefsBatteryBannerButton\">Zistite viac</string>\n    <string name=\"notificationListenerDescription\">Číta oznámenia s ukazovateľom priebehu</string>\n    <string name=\"prefsBatteryBannerSummary\">Možno bude potrebné vypnúť optimalizáciu batérie a povoliť automatické spúšťanie, aby aplikácia Noti fungovala na pozadí. Po tomto úkone môže byť potrebný reštart</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-sl/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">Prijavi napako</string>\n    <string name=\"settingsPreviewFab\">Predogled</string>\n    <string name=\"reset\">Ponastavi</string>\n    <string name=\"prefsCategorySetup\">začetna nastavitev</string>\n    <string name=\"prefsCategoryGeneral\">splošno</string>\n    <string name=\"prefsNotificationPermissionSummary\">Potrebno za branje obvestil z vrstico napredka</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Podeli dovoljenje za dostopnost</string>\n    <string name=\"notificationListenerDescription\">Prebere obvestila z vrstico napredka</string>\n    <string name=\"perAppSettingsEmptyView\">Ni najdenih vrstic napredka. Aplikacije z vrsticami napredka so odkrite med uporabo vaše naprave.</string>\n    <string name=\"holePunchInstruction\">Spremenite poravnavo v nastavitvah krožne vrstice napredka</string>\n    <string name=\"prefsNotificationPermissionTitle\">Dovolite dostop do obvestil</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-ta/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"prefsNotificationPermissionSummary\">முன்னேற்றப் பட்டியுடன் அறிவிப்புகளைப் படிக்க வேண்டும்</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">பூட்டுத் திரை மற்றும் கணினி பயன்பாடுகளில் காண்பிக்க வேண்டும்</string>\n    <string name=\"prefsSAWPermissionTitle\">பிற பயன்பாடுகளைக் காண்பிப்பதை அனுமதிக்கவும்</string>\n    <string name=\"prefsSAWPermissionSummary\">முன்னேற்றப் பட்டி மேலடுக்கைக் காண்பிக்க வேண்டும்</string>\n    <string name=\"prefsCategoryCustomization\">தனிப்பயனாக்கம்</string>\n    <string name=\"prefsProgressBarOffsetTitle\">கிடைமட்ட ஆஃப்செட்</string>\n    <string name=\"prefsProgressBarOffsetSummary\">முன்னேற்றப் பட்டை சீரமைப்பை மாற்றவும்</string>\n    <string name=\"prefsCutoutSizeTitle\">கட்அவுட் அளவு</string>\n    <string name=\"prefsCutoutSizeSummary\">உள் விட்டம் அளவை மாற்றவும்</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">மேலே இருந்து விளிம்பு</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">திரையின் மேலிருந்து இடைவெளியை மாற்றவும்</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">சரியான பொருத்தம்? உள்ளமைவைப் பகிரவும்</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">அதே சாதனத்துடன் கூடிய மற்றவர்கள் உங்கள் உள்ளமைவைப் பயன்படுத்தட்டும்</string>\n    <string name=\"prefsChangeColorTitle\">முன்னேற்றப் பட்டி நிறத்தை மாற்றவும்</string>\n    <string name=\"prefsCalentileTitle\">Google Play இல் %s ஐ முயற்சிக்கவும்</string>\n    <string name=\"prefsCalentileSummary\">டெவலப்பரை ஆதரிக்கவும்</string>\n    <string name=\"shareConfigPositiveMessage\">உங்கள் உள்ளமைவைப் பகிர்ந்தமைக்கு நன்றி!</string>\n    <string name=\"colorRed\">சிவப்பு</string>\n    <string name=\"colorPink\">இளஞ்சிவப்பு</string>\n    <string name=\"shareConfigNoInternetMessage\">உள்ளமைவைப் பதிவேற்ற இணையத்தை இயக்கவும்</string>\n    <string name=\"colorPurple\">ஊதா</string>\n    <string name=\"menuReportBug\">பிழையைப் புகாரளிக்கவும்</string>\n    <string name=\"settingsPreviewFab\">முன்னோட்டம்</string>\n    <string name=\"notificationListenerDescription\">முன்னேற்றப் பட்டியுடன் அறிவிப்புகளைப் படிக்கிறது</string>\n    <string name=\"perAppSettingsEmptyView\">முன்னேற்ற பார்கள் இதுவரை காணப்படவில்லை. உங்கள் சாதனத்தைப் பயன்படுத்தும்போது இணக்கமான பயன்பாடுகள் கண்டுபிடிக்கப்படுகின்றன.</string>\n    <string name=\"reset\">மீட்டமை</string>\n    <string name=\"holePunchInstruction\">வட்ட முன்னேற்ற பட்டி மாற்றங்களில் சீரமைப்பை மாற்றவும்</string>\n    <string name=\"prefsBatteryBannerSummary\">நீங்கள் பேட்டரி மேம்படுத்தல்களை முடக்க வேண்டியிருக்கலாம் மற்றும் ஆட்டோச்டார்ட்டை நோட்டிக்கு பின்னணியில் வேலை செய்ய அனுமதிக்க வேண்டும். இதைச் செய்தபின் மறுதொடக்கம் அவசியமாக இருக்கலாம்</string>\n    <string name=\"prefsBatteryBannerButton\">மேலும் அறிக</string>\n    <string name=\"prefsCategorySetup\">அமைவு</string>\n    <string name=\"prefsCategoryGeneral\">பொது</string>\n    <string name=\"prefsNotificationPermissionTitle\">அறிவிப்பு அணுகல் வழங்கவும்</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">அணுகல் இசைவு வழங்கவும்</string>\n    <string name=\"prefsProgressBarStyleTitle\">முன்னேற்றப் பட்டி பாணியைத் தேர்ந்தெடுக்கவும்</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">உருவப்படம் முன்னேற்ற பட்டி பாணி</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">இயற்கை முன்னேற்ற பட்டி நடை</string>\n    <string name=\"advancedOptions\">மேம்பட்ட விருப்பங்கள்</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">முன்னேற்றப் பட்டி இல்லை</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">நேரியல் முன்னேற்றப் பட்டி</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">வட்ட முன்னேற்ற பட்டி</string>\n    <string name=\"prefsCategoryTweaks\">மாற்றங்கள்</string>\n    <string name=\"prefsLinearProgressBarTweaks\">நேரியல் முன்னேற்ற பட்டி மாற்றங்கள்</string>\n    <string name=\"prefsProgressBarThicknessTitle\">முன்னேற்றப் பட்டி தடிமன்</string>\n    <string name=\"prefsProgressBarThicknessSummary\">முன்னேற்றப் பட்டியின் பாதையின் அளவை மாற்றவும்</string>\n    <string name=\"prefsShowBelowNotchTitle\">காட்சி கட்அவுட்டைக் கீழே காண்பி</string>\n    <string name=\"prefsShowBelowNotchSummary\">எந்தவொரு உச்சநிலை அல்லது துளை பஞ்சிற்கும் கீழே முன்னேற்றப் பட்டியைக் காண்பி</string>\n    <string name=\"prefsStatusBarHeightInfo\">உங்கள் நிலை பட்டி %d படப்புள்ளிகள் உயரம்</string>\n    <string name=\"prefsCircularProgressBarTweaks\">வட்ட முன்னேற்ற பட்டி மாற்றங்கள்</string>\n    <string name=\"prefsMultiScreenInfoCard\">பல திரைகளுக்கு, அந்த அமைப்பிற்கான பட்டியை சரிசெய்ய ஒவ்வொரு காட்சியின் மூலமும் அமைப்புகளை அணுகவும்</string>\n    <string name=\"prefsBlackBackgroundTitle\">கருப்பு பின்னணியைப் பயன்படுத்துங்கள்</string>\n    <string name=\"prefsBlackBackgroundSummary\">பிளாக் டிராக்குடன் முன்னேற்ற பட்டிக்கு மாறவும்</string>\n    <string name=\"prefsPerAppSettingsTitle\">பயன்பாட்டு அமைப்புகள்</string>\n    <string name=\"prefsPerAppSettingsSummary\">பயன்பாட்டிற்கு ஒரு பயன்பாட்டை மாற்றவும்</string>\n    <string name=\"prefsRoundedCornersTitle\">வட்டமான மூலைகளுடன் முன்னேற்றப் பட்டியைப் பயன்படுத்தவும்</string>\n    <string name=\"prefsRoundedCornersSummary\">வட்டமான முனைகளுடன் முன்னேற்ற பட்டிக்கு மாறவும்</string>\n    <string name=\"prefsShowInLockScreenTitle\">பூட்டுத் திரையில் முன்னேற்றப் பட்டியைக் காட்டு</string>\n    <string name=\"prefsShowInLockScreenSummary\">எப்போதும் காட்சிக்கு வைக்கப்பட்டிருக்கும்</string>\n    <string name=\"prefsDisableInFullScreenTitle\">முழுத்திரை பயன்முறையில் முடக்கு</string>\n    <string name=\"prefsDisableInFullScreenSummary\">முழுத்திரை பயன்பாடுகளில் முன்னேற்றப் பட்டியை மறைக்கவும்</string>\n    <string name=\"prefsCategoryMore\">மேலும்</string>\n    <string name=\"colorDeepPurple\">ஆழமான ஊதா</string>\n    <string name=\"colorIndigo\">இண்டிகோ</string>\n    <string name=\"colorBlue\">நீலம்</string>\n    <string name=\"colorLightBlue\">வெளிர் நீலம்</string>\n    <string name=\"colorCyan\">சியான்</string>\n    <string name=\"colorTeal\">டீல்</string>\n    <string name=\"colorGreen\">பச்சை</string>\n    <string name=\"colorLightGreen\">வெளிர் பச்சை</string>\n    <string name=\"colorLime\">சுண்ணாம்பு</string>\n    <string name=\"colorYellow\">மஞ்சள்</string>\n    <string name=\"colorAmber\">அம்பர்</string>\n    <string name=\"colorOrange\">ஆரஞ்சு</string>\n    <string name=\"colorDeepOrange\">ஆழமான ஆரஞ்சு</string>\n    <string name=\"colorBrown\">பழுப்பு</string>\n    <string name=\"colorBlack\">கருப்பு</string>\n    <string name=\"colorGrey\">சாம்பல்</string>\n    <string name=\"colorWhite\">வெள்ளை</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-tr/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">Hata Bildir</string>\n    <string name=\"settingsPreviewFab\">Önizleme</string>\n    <string name=\"prefsCategorySetup\">kurulum</string>\n    <string name=\"prefsNotificationPermissionTitle\">Bildirim erişimi verin</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Erişilebilirlik izni verin</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Kilit ekranında ve sistem uygulamalarında görüntülenmesi için gereklidir</string>\n    <string name=\"prefsCategoryCustomization\">özelleştirme</string>\n    <string name=\"prefsProgressBarStyleTitle\">İlerleme çubuğu stilini seçin</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Doğrusal ilerleme çubuğu</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Dairesel ilerleme çubuğu</string>\n    <string name=\"prefsCategoryTweaks\">ayarlar</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Doğrusal ilerleme çubuğu ayarları</string>\n    <string name=\"prefsProgressBarThicknessTitle\">İlerleme çubuğu iz kalınlığı</string>\n    <string name=\"prefsProgressBarThicknessSummary\">İlerleme çubuğunun boyutunu değiştir</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Dairesel ilerleme çubuğu ayarları</string>\n    <string name=\"prefsRoundedCornersTitle\">İlerleme çubuğunun uçlarını yuvarla</string>\n    <string name=\"prefsShowInLockScreenTitle\">Kilit ekranında ilerleme çubuğunu göster</string>\n    <string name=\"prefsChangeColorTitle\">İlerleme çubuğunun rengini değiştir</string>\n    <string name=\"prefsCategoryMore\">daha fazla</string>\n    <string name=\"prefsCalentileTitle\">%s\\'ı Google Play\\'de deneyin</string>\n    <string name=\"colorOrange\">Turuncu</string>\n    <string name=\"colorWhite\">Beyaz</string>\n    <string name=\"colorAmber\">Kehribar rengi</string>\n    <string name=\"colorDeepOrange\">Koyu Turuncu</string>\n    <string name=\"reset\">Sıfırla</string>\n    <string name=\"colorLightGreen\">Açık Yeşil</string>\n    <string name=\"colorBlue\">Mavi</string>\n    <string name=\"colorGreen\">Yeşil</string>\n    <string name=\"colorGrey\">Gri</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Aynı cihaza sahip kişilerin ayarlarınızı kullanmasına izin verin</string>\n    <string name=\"colorBlack\">Siyah</string>\n    <string name=\"colorRed\">Kırmızı</string>\n    <string name=\"perAppSettingsEmptyView\">İlerleme çubuğu bulunamadı. İlerleme çubuğu olan uygulamalar siz cihazınızı kullandıkça keşfedilir.</string>\n    <string name=\"prefsShowBelowNotchTitle\">Ekranın altında göster</string>\n    <string name=\"prefsCategoryGeneral\">genel</string>\n    <string name=\"prefsShowInLockScreenSummary\">Aynı zamanda AOD\\'(Always On Display)de de gösterilecek</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Üstten kenar boşluğu</string>\n    <string name=\"prefsSAWPermissionTitle\">Diğer uygulamaların üzerinde göstermeye izin ver</string>\n    <string name=\"prefsProgressBarOffsetSummary\">İlerleme çubuğunun hizalamasını değiştir</string>\n    <string name=\"prefsBlackBackgroundTitle\">Siyah arkaplan kullan</string>\n    <string name=\"prefsPerAppSettingsSummary\">Uygulamaların bu özelliği kullanıp kullanmayacağını seçin</string>\n    <string name=\"prefsNotificationPermissionSummary\">Bildirimleri ilerleme çubuğu ile okumak için gerekli</string>\n    <string name=\"colorLime\">Çim Rengi</string>\n    <string name=\"notificationListenerDescription\">Bildirimleri ilerleme çubuğu ile okur</string>\n    <string name=\"prefsBlackBackgroundSummary\">İlerleme çubuğunun yolunu siyah yap</string>\n    <string name=\"colorDeepPurple\">Koyu Mor</string>\n    <string name=\"prefsCalentileSummary\">Geliştiriciyi destekle</string>\n    <string name=\"colorYellow\">Sarı</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Ekranın üst kısmı ile olan aralığı değiştir</string>\n    <string name=\"prefsPerAppSettingsTitle\">Uygulamaları seç</string>\n    <string name=\"colorCyan\">Camgöbeği</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Tam mı uydu! Ayarlarını paylaş</string>\n    <string name=\"holePunchInstruction\">Dairesel ilerleme çubuğunun hizalamasını değiştir</string>\n    <string name=\"colorIndigo\">Indigo</string>\n    <string name=\"colorBrown\">Kahverengi</string>\n    <string name=\"colorPink\">Pembe</string>\n    <string name=\"prefsRoundedCornersSummary\">İlerleme çubuğunun uçlarını yuvarlanmış hale getir</string>\n    <string name=\"colorLightBlue\">Açık Mavi</string>\n    <string name=\"prefsShowBelowNotchSummary\">İlerleme çubuğunu bir çentik veya delik etrafında göster</string>\n    <string name=\"prefsSAWPermissionSummary\">İlerleme çubuğunu göstermek için gerekli</string>\n    <string name=\"colorTeal\">Teal</string>\n    <string name=\"colorPurple\">Mor</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">Dikey ilerleme çubuğu görünümü</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">Yatay ilerleme çubuğu görünümü</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">İlerleme çubuğu yok</string>\n    <string name=\"prefsDisableInFullScreenTitle\">Tam ekran modunda devre dışı bırak</string>\n    <string name=\"prefsDisableInFullScreenSummary\">Tam ekran uygulamalarda ilerleme çubuğunu gizle</string>\n    <string name=\"advancedOptions\">Gelişmiş Seçenekler</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-uk/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"notificationListenerDescription\">Читає сповіщення з індикатора прогресу</string>\n    <string name=\"settingsPreviewFab\">Передперегляд</string>\n    <string name=\"reset\">Скинути</string>\n    <string name=\"holePunchInstruction\">Змінити вирівнювання можна в налаштуваннях кругового індикатора прогресу</string>\n    <string name=\"prefsBatteryBannerButton\">Дізнатися більше</string>\n    <string name=\"prefsCategorySetup\">налаштування</string>\n    <string name=\"prefsCategoryGeneral\">загальні</string>\n    <string name=\"menuReportBug\">Повідомити про ваду</string>\n    <string name=\"perAppSettingsEmptyView\">Noti визначатиме більш сумісні застосунки під час отримання сповіщень</string>\n    <string name=\"prefsBatteryBannerSummary\">Можливо, вам доведеться вимкнути оптимізацію заряду батареї і дозволити автозапуск для роботи Noti у фоновому режимі. Після цього може знадобитися перезавантаження</string>\n    <string name=\"prefsMultiScreenInfoCard\">Для кількох екранів перейдіть до налаштувань на кожному з них, щоби відрегулювати рядок для відповідного параметра</string>\n    <string name=\"prefsRoundedCornersTitle\">Використовувати індикатор виконання із закругленими кутами</string>\n    <string name=\"prefsNotificationPermissionSummary\">Необхідно для читання сповіщень з індикатором виконання</string>\n    <string name=\"prefsNotificationPermissionTitle\">Дозволити доступ до сповіщень</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Надайте дозвіл на доступність</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Необхідно для показу на екрані блокування та в системних застосунках</string>\n    <string name=\"prefsSAWPermissionTitle\">Дозволити показ поверх інших застосунків</string>\n    <string name=\"prefsSAWPermissionSummary\">Необхідно для показу накладання індикатора виконання</string>\n    <string name=\"prefsCategoryCustomization\">Персоналізація</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">Портретний стиль індикатора виконання</string>\n    <string name=\"prefsProgressBarStyleTitle\">Виберіть стиль індикатора виконання</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">Альбомний стиль індикатора виконання</string>\n    <string name=\"advancedOptions\">Розширені параметри</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">Без індикатора виконання</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Лінійний індикатор виконання</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Круговий індикатор виконання</string>\n    <string name=\"prefsCategoryTweaks\">Опції</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Опції лінійного індикатора виконання</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Товщина індикатора виконання</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Змінити розмір індикатора виконання</string>\n    <string name=\"prefsShowBelowNotchTitle\">Показати під вирізом у дисплеї</string>\n    <string name=\"prefsShowBelowNotchSummary\">Показувати індикатора виконання під будь-якою вирізом у екрані</string>\n    <string name=\"prefsStatusBarHeightInfo\">Ваш рядок стану має висоту в %d пікселів</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Опції кругового індикатора виконання</string>\n    <string name=\"prefsProgressBarOffsetTitle\">Зсув по горизонталі</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Змінити вирівнювання індикатора виконання</string>\n    <string name=\"prefsCutoutSizeTitle\">Розмір вирізу</string>\n    <string name=\"prefsCutoutSizeSummary\">Змінити розмір внутрішнього діаметра</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Запас зверху</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Змінити відстань зверху екрана</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Ідеально підходить? Поділіться конфігурацією</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Дозвольте іншим користувачам з таким самим пристроєм використовувати вашу конфігурацію</string>\n    <string name=\"prefsBlackBackgroundTitle\">Використовувати чорне тло</string>\n    <string name=\"prefsBlackBackgroundSummary\">Перемкнутися на індикатор виконання з чорною доріжкою</string>\n    <string name=\"prefsPerAppSettingsTitle\">Налаштування для кожного застосунку</string>\n    <string name=\"prefsPerAppSettingsSummary\">Перемикання noti для кожного застосунку</string>\n    <string name=\"prefsRoundedCornersSummary\">Перемкнутися на індикатор прогресу із закругленими краями</string>\n    <string name=\"prefsShowInLockScreenTitle\">Показувати індикатор виконання на екрані блокування</string>\n    <string name=\"prefsShowInLockScreenSummary\">Також буде показуватися на always on екранах</string>\n    <string name=\"prefsDisableInFullScreenTitle\">Вимкнути повноекранний режим</string>\n    <string name=\"prefsDisableInFullScreenSummary\">Приховати індикатор виконання в повноекранних застосунках</string>\n    <string name=\"prefsChangeColorTitle\">Змінити колір індикатора виконання</string>\n    <string name=\"prefsCategoryMore\">Більше</string>\n    <string name=\"prefsCalentileTitle\">Спробуйте %s в Google Play</string>\n    <string name=\"prefsCalentileSummary\">Підтримати розробника</string>\n    <string name=\"shareConfigPositiveMessage\">Дякуємо, що поділилися своєю конфігурацією!</string>\n    <string name=\"shareConfigNoInternetMessage\">Увімкніть інтернет для завантаження конфігурації</string>\n    <string name=\"colorRed\">Червоний</string>\n    <string name=\"colorPink\">Рожевий</string>\n    <string name=\"colorPurple\">Фіолетовий</string>\n    <string name=\"colorDeepPurple\">Насичений фіолетовий</string>\n    <string name=\"colorIndigo\">Індиго</string>\n    <string name=\"colorBlue\">Синій</string>\n    <string name=\"colorLightBlue\">Світло-синій</string>\n    <string name=\"colorCyan\">Блакитний</string>\n    <string name=\"colorTeal\">Бірюзовий</string>\n    <string name=\"colorGreen\">Зелений</string>\n    <string name=\"colorLightGreen\">Світло-зелений</string>\n    <string name=\"colorLime\">Лаймовий</string>\n    <string name=\"colorYellow\">Жовтий</string>\n    <string name=\"colorAmber\">Бурштиновий</string>\n    <string name=\"colorOrange\">Помаранчевий</string>\n    <string name=\"colorDeepOrange\">Насичений оранжевий</string>\n    <string name=\"colorBrown\">Коричневий</string>\n    <string name=\"colorBlack\">Чорний</string>\n    <string name=\"colorGrey\">Сірий</string>\n    <string name=\"colorWhite\">Білий</string>\n    <string name=\"activateToggle\">Увімкнено для</string>\n    <string name=\"downloads\">Завантаження</string>\n    <string name=\"media\">Медіа</string>\n    <string name=\"prefsNotificationColorSummary\">Використовувати колір сповіщення для панелі прогресу</string>\n    <string name=\"prefsNotificationColorTitle\">Підібрати колір сповіщень</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-v31/arrays.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string-array name=\"colorsArray\">\n        <item>@string/colorRed</item>\n        <item>@string/colorPink</item>\n        <item>@string/colorPurple</item>\n        <item>@string/colorDeepPurple</item>\n        <item>@string/colorIndigo</item>\n        <item>@string/colorBlue</item>\n        <item>@string/colorLightBlue</item>\n        <item>@string/colorCyan</item>\n        <item>@string/colorTeal</item>\n        <item>@string/colorGreen</item>\n        <item>@string/colorLightGreen</item>\n        <item>@string/colorLime</item>\n        <item>@string/colorYellow</item>\n        <item>@string/colorAmber</item>\n        <item>@string/colorOrange</item>\n        <item>@string/colorDeepOrange</item>\n        <item>@string/colorGrey</item>\n        <item>@string/colorWhite</item>\n        <item>@string/colorMaterialYou</item>\n    </string-array>\n    <array name=\"colorsArrayValues\">\n        <item>#D32F2F</item>\n        <item>#D81B60</item>\n        <item>#8E24AA</item>\n        <item>#6200EE</item>\n        <item>#303F9F</item>\n        <item>#1A73E9</item>\n        <item>#03A9F4</item>\n        <item>#00BCD4</item>\n        <item>#009688</item>\n        <item>#4CAF50</item>\n        <item>#8BC34A</item>\n        <item>#CDDC39</item>\n        <item>#FFEB3B</item>\n        <item>#FFC107</item>\n        <item>#FF9800</item>\n        <item>#FF5722</item>\n        <item>#9E9E9E</item>\n        <item>#FFFFFF</item>\n        <item>@color/system_accent_color</item>\n    </array>\n</resources>"
  },
  {
    "path": "app/src/main/res/values-vi/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">Báo cáo lỗi</string>\n    <string name=\"settingsPreviewFab\">Xem trước</string>\n    <string name=\"reset\">Đặt lại</string>\n    <string name=\"prefsCategoryGeneral\">chung</string>\n    <string name=\"prefsNotificationPermissionTitle\">Cấp quyền truy cập thông báo</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">Cấp quyền truy cập trợ năng</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">Dùng để hiển thị trên màn hình khoá và trong các ứng dụng hệ thống</string>\n    <string name=\"prefsNotificationPermissionSummary\">Dùng để đọc các thông báo bằng thanh tiến trình</string>\n    <string name=\"prefsSAWPermissionSummary\">Dùng để hiển thị lớp phủ thanh tiến trình</string>\n    <string name=\"prefsCategoryCustomization\">tuỳ biến</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">Thanh tiến trình tuyến tính</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">Thanh tiến trình tròn</string>\n    <string name=\"prefsCategoryTweaks\">tinh chỉnh</string>\n    <string name=\"prefsProgressBarThicknessTitle\">Độ dày của thanh tiến trình</string>\n    <string name=\"prefsShowBelowNotchTitle\">Hiển thị bên dưới phần cắt màn hình</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">Lề từ trên xuống</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">Cho phép người khác có cùng thiết bị sử dụng cấu hình của bạn</string>\n    <string name=\"prefsBlackBackgroundSummary\">Chuyển sang thanh tiến trình đen</string>\n    <string name=\"prefsRoundedCornersTitle\">Sử dụng thanh tiến trình với các góc tròn</string>\n    <string name=\"prefsShowInLockScreenSummary\">Cũng sẽ hiển thị ở chế độ luôn hiển thị</string>\n    <string name=\"prefsChangeColorTitle\">Thay đổi màu thanh tiến trình</string>\n    <string name=\"prefsCalentileTitle\">Thử %s trên Google Play</string>\n    <string name=\"colorRed\">Đỏ</string>\n    <string name=\"colorPink\">Hồng</string>\n    <string name=\"colorPurple\">Tím</string>\n    <string name=\"colorDeepPurple\">Tím đậm</string>\n    <string name=\"colorIndigo\">Xanh chàm</string>\n    <string name=\"colorLightBlue\">Xanh biển nhạt</string>\n    <string name=\"colorTeal\">Xanh lục lam</string>\n    <string name=\"colorCyan\">Xanh lơ</string>\n    <string name=\"colorLightGreen\">Xanh lá nhạt</string>\n    <string name=\"colorLime\">Vàng chanh</string>\n    <string name=\"colorAmber\">Hổ phách</string>\n    <string name=\"colorDeepOrange\">Cam đậm</string>\n    <string name=\"colorWhite\">Trắng</string>\n    <string name=\"prefsCategorySetup\">cài đặt</string>\n    <string name=\"prefsSAWPermissionTitle\">Cho phép hiển thị trên các ứng dụng khác</string>\n    <string name=\"prefsCircularProgressBarTweaks\">Tinh chỉnh thanh tiến trình tròn</string>\n    <string name=\"prefsProgressBarOffsetSummary\">Thay đổi căn chỉnh thanh tiến trình</string>\n    <string name=\"prefsPerAppSettingsTitle\">Cài đặt cho mỗi ứng dụng</string>\n    <string name=\"prefsCategoryMore\">thêm</string>\n    <string name=\"prefsLinearProgressBarTweaks\">Tinh chỉnh thanh tiến trình tuyến tính</string>\n    <string name=\"prefsCalentileSummary\">Hỗ trợ nhà phát triển</string>\n    <string name=\"colorBlue\">Xanh biển</string>\n    <string name=\"colorGreen\">Xanh lá</string>\n    <string name=\"colorYellow\">Vàng</string>\n    <string name=\"colorOrange\">Cam</string>\n    <string name=\"colorBrown\">Nâu</string>\n    <string name=\"colorBlack\">Đen</string>\n    <string name=\"colorGrey\">Xám</string>\n    <string name=\"notificationListenerDescription\">Đọc thông báo bằng thanh tiến trình</string>\n    <string name=\"perAppSettingsEmptyView\">Không tìm thấy thanh tiến trình. Các ứng dụng có thanh tiến trình sẽ được phát hiện khi bạn sử dụng thiết bị của mình.</string>\n    <string name=\"prefsBlackBackgroundTitle\">Sử dụng nền đen</string>\n    <string name=\"prefsProgressBarThicknessSummary\">Thay đổi kích thước của thanh tiến trình</string>\n    <string name=\"prefsShowBelowNotchSummary\">Hiển thị thanh tiến trình bên dưới mọi phần tai thỏ hoặc phần đục lỗ</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">Thay đổi khoảng cách từ đầu màn hình</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">Hoàn toàn phù hợp? Hãy chia sẻ cấu hình</string>\n    <string name=\"prefsPerAppSettingsSummary\">Bật tắt noti trong từng ứng dụng</string>\n    <string name=\"prefsRoundedCornersSummary\">Chuyển sang thanh tiến trình với các đầu tròn</string>\n    <string name=\"prefsShowInLockScreenTitle\">Hiển thị thanh tiến trình ở màn hình khóa</string>\n    <string name=\"holePunchInstruction\">Thay đổi căn chỉnh trong các chỉnh sửa của thanh tiến trình tròn</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-zh-rCN/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"settingsPreviewFab\">预览</string>\n    <string name=\"prefsNotificationPermissionSummary\">用于获取带有进度条的通知</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">授予无障碍权限</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">用于在锁屏界面显示以及在系统英语中显示</string>\n    <string name=\"prefsSAWPermissionTitle\">授予悬浮窗权限</string>\n    <string name=\"prefsCategoryCustomization\">个性化</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">纵向进度条样式</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">直线进度条</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">不显示进度条</string>\n    <string name=\"prefsProgressBarThicknessTitle\">进度条厚度</string>\n    <string name=\"prefsProgressBarThicknessSummary\">更改进度条轨迹厚度</string>\n    <string name=\"prefsShowBelowNotchTitle\">显示在屏幕挖孔下方</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">更改距离屏幕顶部的间距</string>\n    <string name=\"prefsBlackBackgroundTitle\">使用黑色背景</string>\n    <string name=\"prefsRoundedCornersTitle\">使用圆角进度条</string>\n    <string name=\"prefsRoundedCornersSummary\">切换成末端为圆角的进度条</string>\n    <string name=\"prefsShowInLockScreenTitle\">在锁屏界面中显示进度条</string>\n    <string name=\"prefsChangeColorTitle\">更改进度条颜色</string>\n    <string name=\"prefsDisableInFullScreenTitle\">全屏时禁用</string>\n    <string name=\"prefsShowInLockScreenSummary\">也会在熄屏显示上展现</string>\n    <string name=\"colorIndigo\">靛蓝色</string>\n    <string name=\"colorCyan\">青色</string>\n    <string name=\"colorTeal\">深青色</string>\n    <string name=\"colorLime\">酸橙色</string>\n    <string name=\"colorYellow\">黄色</string>\n    <string name=\"colorWhite\">白色</string>\n    <string name=\"menuReportBug\">反馈错误</string>\n    <string name=\"notificationListenerDescription\">通过进度条阅读通知</string>\n    <string name=\"reset\">重置</string>\n    <string name=\"prefsNotificationPermissionTitle\">授予通知使用权</string>\n    <string name=\"prefsProgressBarStyleTitle\">选择进度条样式</string>\n    <string name=\"advancedOptions\">高级选项</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">环形进度条</string>\n    <string name=\"prefsCategoryTweaks\">微调</string>\n    <string name=\"prefsCategorySetup\">设置</string>\n    <string name=\"prefsCategoryGeneral\">常规</string>\n    <string name=\"prefsCategoryMore\">更多</string>\n    <string name=\"prefsCalentileTitle\">试试 Google Play 上的 %s</string>\n    <string name=\"prefsCalentileSummary\">支持开发者</string>\n    <string name=\"prefsPerAppSettingsTitle\">分应用设置</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">完美贴合？分享配置吧</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">顶部边距</string>\n    <string name=\"perAppSettingsEmptyView\">未找到进度条。带有进度条的应用会随你使用设备时被发现。</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">横向进度条样式</string>\n    <string name=\"prefsLinearProgressBarTweaks\">调整直线进度条</string>\n    <string name=\"prefsCircularProgressBarTweaks\">调整环形进度条</string>\n    <string name=\"holePunchInstruction\">在环形进度条微调中更改对齐方式</string>\n    <string name=\"prefsProgressBarOffsetSummary\">更改进度条对齐方式</string>\n    <string name=\"colorPink\">粉红色</string>\n    <string name=\"colorPurple\">紫色</string>\n    <string name=\"prefsDisableInFullScreenSummary\">在全屏应用中隐藏进度条</string>\n    <string name=\"colorRed\">红色</string>\n    <string name=\"colorDeepPurple\">深紫色</string>\n    <string name=\"colorBlue\">蓝色</string>\n    <string name=\"colorLightBlue\">浅蓝色</string>\n    <string name=\"colorGreen\">绿色</string>\n    <string name=\"colorAmber\">琥珀色</string>\n    <string name=\"colorOrange\">橘色</string>\n    <string name=\"colorLightGreen\">浅绿色</string>\n    <string name=\"colorDeepOrange\">深橘色</string>\n    <string name=\"colorBrown\">棕色</string>\n    <string name=\"colorBlack\">黑色</string>\n    <string name=\"colorGrey\">灰色</string>\n    <string name=\"prefsShowBelowNotchSummary\">在刘海或挖孔的下方显示进度条</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">让使用同样设备的人应用你的配置</string>\n    <string name=\"prefsSAWPermissionSummary\">用于显示进度条叠加层</string>\n    <string name=\"prefsBlackBackgroundSummary\">切换为黑色轨迹背景的进度条</string>\n    <string name=\"prefsPerAppSettingsSummary\">为每个应用调整 noti 样式</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/values-zh-rTW/strings.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n    <string name=\"menuReportBug\">回報錯誤</string>\n    <string name=\"settingsPreviewFab\">預覽</string>\n    <string name=\"notificationListenerDescription\">透過進度條閱讀通知</string>\n    <string name=\"reset\">重置</string>\n    <string name=\"holePunchInstruction\">在圓形進度條調整中更改對齊方式</string>\n    <string name=\"prefsCategorySetup\">設定</string>\n    <string name=\"prefsCategoryGeneral\">一般</string>\n    <string name=\"prefsNotificationPermissionTitle\">授予通知存取權限</string>\n    <string name=\"prefsAccessibilityPermissionTitle\">授予協助工具權限</string>\n    <string name=\"prefsAccessibilityPermissionSummary\">需要以在鎖定畫面和系統應用程式中顯示</string>\n    <string name=\"prefsSAWPermissionSummary\">需要以顯示覆蓋的進度條</string>\n    <string name=\"prefsCategoryCustomization\">自定義</string>\n    <string name=\"prefsProgressBarStyleLandscapeTitle\">橫向進度條樣式</string>\n    <string name=\"prefsProgressBarStylePortraitTitle\">直向進度條樣式</string>\n    <string name=\"prefsProgressBarStyleEntryNone\">無進度條</string>\n    <string name=\"prefsProgressBarStyleEntryLinear\">直線進度條</string>\n    <string name=\"prefsProgressBarStyleEntryCircular\">圓形進度條</string>\n    <string name=\"prefsCategoryTweaks\">調整</string>\n    <string name=\"prefsLinearProgressBarTweaks\">直線進度條調整</string>\n    <string name=\"prefsProgressBarThicknessTitle\">進度條厚度</string>\n    <string name=\"prefsProgressBarThicknessSummary\">更改進度條的厚度</string>\n    <string name=\"prefsShowBelowNotchSummary\">在缺口或挖孔下方顯示進度條</string>\n    <string name=\"prefsCircularProgressBarTweaks\">圓形進度條調整</string>\n    <string name=\"prefsProgressBarOffsetSummary\">更改進度條對齊方式</string>\n    <string name=\"prefsProgressBarMarginTopTitle\">上方間距</string>\n    <string name=\"prefsCircularBarShareConfigTitle\">完美對齊？分享配置</string>\n    <string name=\"prefsBlackBackgroundTitle\">使用黑色背景</string>\n    <string name=\"prefsBlackBackgroundSummary\">切換成黑色背景的進度條</string>\n    <string name=\"prefsPerAppSettingsTitle\">個別應用程式設定</string>\n    <string name=\"prefsPerAppSettingsSummary\">根據個別應用程式調整 noti</string>\n    <string name=\"prefsRoundedCornersTitle\">使用圓角的進度條</string>\n    <string name=\"prefsRoundedCornersSummary\">切換成具有圓角末端的進度條</string>\n    <string name=\"prefsShowInLockScreenSummary\">也會在 always on display 中顯示</string>\n    <string name=\"prefsChangeColorTitle\">更改進度條顏色</string>\n    <string name=\"prefsCategoryMore\">更多</string>\n    <string name=\"prefsCalentileSummary\">支持開發者</string>\n    <string name=\"colorRed\">紅色</string>\n    <string name=\"colorPink\">粉紅色</string>\n    <string name=\"colorPurple\">紫色</string>\n    <string name=\"colorDeepPurple\">深紫色</string>\n    <string name=\"colorIndigo\">靛藍色</string>\n    <string name=\"colorBlue\">藍色</string>\n    <string name=\"colorLightGreen\">淺綠色</string>\n    <string name=\"colorLime\">萊姆色</string>\n    <string name=\"colorYellow\">黃色</string>\n    <string name=\"colorOrange\">橘色</string>\n    <string name=\"colorDeepOrange\">深橘色</string>\n    <string name=\"colorBrown\">棕色</string>\n    <string name=\"colorGrey\">灰色</string>\n    <string name=\"colorWhite\">白色</string>\n    <string name=\"prefsSAWPermissionTitle\">允許顯示在其他應用程式上方</string>\n    <string name=\"prefsNotificationPermissionSummary\">需要以讀取帶有進度條的通知</string>\n    <string name=\"prefsShowBelowNotchTitle\">顯示於螢幕缺口下方</string>\n    <string name=\"prefsProgressBarMarginTopSummary\">更改距離螢幕上方的間距</string>\n    <string name=\"prefsCircularBarShareConfigSummary\">讓其他相同裝置的使用者使用你的配置</string>\n    <string name=\"prefsShowInLockScreenTitle\">在鎖定螢幕中顯示進度條</string>\n    <string name=\"prefsCalentileTitle\">試試 Google Play 上的 %s</string>\n    <string name=\"colorCyan\">青色</string>\n    <string name=\"colorLightBlue\">淺藍色</string>\n    <string name=\"colorTeal\">深青色</string>\n    <string name=\"colorGreen\">綠色</string>\n    <string name=\"colorBlack\">黑色</string>\n    <string name=\"colorAmber\">琥珀色</string>\n    <string name=\"perAppSettingsEmptyView\">未找到進度條。相容的應用程式會隨你使用裝置時被發現。</string>\n    <string name=\"advancedOptions\">進階設定</string>\n    <string name=\"prefsDisableInFullScreenTitle\">在全螢幕時禁用</string>\n    <string name=\"prefsDisableInFullScreenSummary\">在全螢幕應用程式中隱藏進度條</string>\n    <string name=\"prefsProgressBarStyleTitle\">選擇進度條樣式</string>\n    <string name=\"prefsBatteryBannerSummary\">要讓Noti在背景運作，你可能需要禁用電池最佳化並允許自啟動。完成此步驟後可能需要重新啟動設備</string>\n    <string name=\"prefsBatteryBannerButton\">查看更多</string>\n    <string name=\"prefsStatusBarHeightInfo\">你的狀態列高度是%d像素</string>\n    <string name=\"prefsProgressBarOffsetTitle\">水平偏移</string>\n    <string name=\"prefsCutoutSizeTitle\">螢幕缺口尺寸</string>\n    <string name=\"prefsMultiScreenInfoCard\">對於多螢幕裝置，你需要通過每個螢幕的設定來調整該設定的進度條</string>\n    <string name=\"prefsCutoutSizeSummary\">更改內徑尺寸</string>\n    <string name=\"shareConfigNoInternetMessage\">開啟網路來上傳你的配置</string>\n    <string name=\"shareConfigPositiveMessage\">謝謝你分享自己的配置！</string>\n</resources>\n"
  },
  {
    "path": "app/src/main/res/xml/accessibility_service_config.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<accessibility-service\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:description=\"@string/prefsAccessibilityPermissionSummary\"/>"
  },
  {
    "path": "app/src/main/res/xml/backup_rules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<full-backup-content>\n    <include domain=\"database\"/>\n</full-backup-content>"
  },
  {
    "path": "app/src/main/res/xml/circular_bar_preferences.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<PreferenceScreen\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\">\n\n    <PreferenceCategory\n        android:title=\"@string/prefsCategoryTweaks\"\n        app:iconSpaceReserved=\"true\"\n        app:allowDividerAbove=\"false\"\n        app:allowDividerBelow=\"false\">\n\n        <com.gustavoas.noti.preferences.SeekBarPreference\n            android:key=\"circularProgressBarThickness\"\n            android:title=\"@string/prefsProgressBarThicknessTitle\"\n            android:summary=\"@string/prefsProgressBarThicknessSummary\"\n            app:singleLineTitle=\"false\"\n            app:icon=\"@drawable/ic_height\"\n            app:default_value=\"15\"\n            app:max_number=\"50\"\n            app:min_number=\"5\"/>\n\n        <com.gustavoas.noti.preferences.SeekBarPreference\n            android:key=\"circularProgressBarSize\"\n            android:title=\"@string/prefsCutoutSizeTitle\"\n            android:summary=\"@string/prefsCutoutSizeSummary\"\n            app:singleLineTitle=\"false\"\n            app:icon=\"@drawable/ic_size\"\n            app:default_value=\"65\"\n            app:max_number=\"150\"\n            app:min_number=\"1\"/>\n\n        <com.gustavoas.noti.preferences.SeekBarPreference\n            android:key=\"circularProgressBarTopOffset\"\n            android:title=\"@string/prefsProgressBarMarginTopTitle\"\n            android:summary=\"@string/prefsProgressBarMarginTopSummary\"\n            app:singleLineTitle=\"false\"\n            app:icon=\"@drawable/ic_margin_top\"\n            app:default_value=\"60\"\n            app:max_number=\"150\"\n            app:min_number=\"1\"/>\n\n        <com.gustavoas.noti.preferences.SeekBarPreference\n            android:key=\"circularProgressBarHorizontalOffset\"\n            android:title=\"@string/prefsProgressBarOffsetTitle\"\n            android:summary=\"@string/prefsProgressBarOffsetSummary\"\n            app:singleLineTitle=\"false\"\n            app:icon=\"@drawable/ic_horizontal\"\n            app:default_value=\"0\"\n            app:max_number=\"75\"\n            app:min_number=\"-75\" />\n\n        <Preference\n            android:key=\"shareConfig\"\n            android:title=\"@string/prefsCircularBarShareConfigTitle\"\n            android:summary=\"@string/prefsCircularBarShareConfigSummary\"\n            app:singleLineTitle=\"false\"\n            app:icon=\"@drawable/ic_share\"/>\n\n        <Preference\n            android:key=\"multipleScreensInfoCard\"\n            android:summary=\"@string/prefsMultiScreenInfoCard\"\n            app:singleLineTitle=\"false\"\n            android:selectable=\"false\"\n            app:icon=\"@drawable/ic_info\"/>\n\n    </PreferenceCategory>\n</PreferenceScreen>"
  },
  {
    "path": "app/src/main/res/xml/data_extraction_rules.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<data-extraction-rules>\n    <device-transfer>\n        <include domain=\"database\"/>\n        <exclude domain=\"sharedpref\"/>\n    </device-transfer>\n</data-extraction-rules>"
  },
  {
    "path": "app/src/main/res/xml/linear_bar_preferences.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<PreferenceScreen\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\">\n\n    <PreferenceCategory\n        android:title=\"@string/prefsCategoryTweaks\"\n        app:iconSpaceReserved=\"true\"\n        app:allowDividerAbove=\"false\"\n        app:allowDividerBelow=\"false\">\n\n        <com.gustavoas.noti.preferences.SeekBarPreference\n            android:key=\"linearProgressBarMarginTop\"\n            android:title=\"@string/prefsProgressBarMarginTopTitle\"\n            android:summary=\"@string/prefsProgressBarMarginTopSummary\"\n            app:singleLineTitle=\"false\"\n            app:max_number=\"150\"\n            app:icon=\"@drawable/ic_margin_top\"/>\n\n        <com.gustavoas.noti.preferences.SeekBarPreference\n            android:key=\"linearProgressBarSize\"\n            android:title=\"@string/prefsProgressBarThicknessTitle\"\n            android:summary=\"@string/prefsProgressBarThicknessSummary\"\n            app:singleLineTitle=\"false\"\n            app:default_value=\"15\"\n            app:max_number=\"150\"\n            app:min_number=\"1\"\n            app:icon=\"@drawable/ic_height\"/>\n\n        <SwitchPreferenceCompat\n            android:key=\"showBelowNotch\"\n            android:title=\"@string/prefsShowBelowNotchTitle\"\n            android:summary=\"@string/prefsShowBelowNotchSummary\"\n            app:singleLineTitle=\"false\"\n            android:defaultValue=\"false\"\n            app:icon=\"@drawable/ic_notification_bar\"/>\n\n        <Preference\n            android:key=\"statusBarHeightCard\"\n            android:summary=\"@string/prefsStatusBarHeightInfo\"\n            app:singleLineTitle=\"false\"\n            android:selectable=\"false\"\n            app:icon=\"@drawable/ic_info\" />\n\n    </PreferenceCategory>\n</PreferenceScreen>"
  },
  {
    "path": "app/src/main/res/xml/preferences.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<PreferenceScreen\n    xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\">\n\n    <com.gustavoas.noti.preferences.BannerPreference\n        android:key=\"batteryOptimizations\"\n        android:title=\"@string/prefsBatteryBannerSummary\"\n        android:summary=\"@string/prefsBatteryBannerButton\">\n        <intent\n            android:action=\"android.intent.action.VIEW\"\n            android:data=\"https://dontkillmyapp.com\"/>\n    </com.gustavoas.noti.preferences.BannerPreference>\n\n    <PreferenceCategory\n        android:key=\"setup\"\n        android:title=\"@string/prefsCategorySetup\"\n        app:iconSpaceReserved=\"true\"\n        app:allowDividerAbove=\"false\"\n        app:allowDividerBelow=\"false\">\n\n        <Preference\n            android:key=\"notificationPermission\"\n            android:title=\"@string/prefsNotificationPermissionTitle\"\n            android:summary=\"@string/prefsNotificationPermissionSummary\"\n            app:singleLineTitle=\"false\"\n            app:icon=\"@drawable/ic_notification\"/>\n\n        <Preference\n            android:key=\"systemAlertWindowPermission\"\n            android:title=\"@string/prefsSAWPermissionTitle\"\n            android:summary=\"@string/prefsSAWPermissionSummary\"\n            app:singleLineTitle=\"false\"\n            app:icon=\"@drawable/ic_overlay\">\n            <intent\n                android:action=\"android.settings.action.MANAGE_OVERLAY_PERMISSION\"/>\n        </Preference>\n\n        <!--Dialog required for google to approve the app-->\n        <Preference\n            android:key=\"accessibilityPermission\"\n            android:title=\"@string/prefsAccessibilityPermissionTitle\"\n            android:summary=\"@string/prefsAccessibilityPermissionSummary\"\n            app:singleLineTitle=\"false\"\n            app:icon=\"@drawable/ic_accessibility\"/>\n\n    </PreferenceCategory>\n\n    <PreferenceCategory\n        android:title=\"@string/prefsCategoryGeneral\"\n        app:iconSpaceReserved=\"true\"\n        app:allowDividerAbove=\"false\"\n        app:allowDividerBelow=\"false\">\n\n        <com.gustavoas.noti.preferences.BarStylesListPreference\n            android:key=\"progressBarStyle\"\n            android:title=\"@string/prefsProgressBarStyleTitle\"\n            app:singleLineTitle=\"false\"\n            android:defaultValue=\"linear\"\n            app:entries=\"@array/progressBarStyle\"\n            app:entryValues=\"@array/progressBarStyleValues\"\n            app:icon=\"@drawable/ic_progress_bar_style\" />\n\n        <Preference\n            android:key=\"CircularBarFragment\"\n            android:title=\"@string/prefsCircularProgressBarTweaks\"\n            app:singleLineTitle=\"false\"\n            app:fragment=\"CircularBarFragment\"\n            app:icon=\"@drawable/ic_circular_progress_bar\"/>\n\n        <Preference\n            android:key=\"LinearBarFragment\"\n            android:title=\"@string/prefsLinearProgressBarTweaks\"\n            app:singleLineTitle=\"false\"\n            app:fragment=\"LinearBarFragment\"\n            app:icon=\"@drawable/ic_linear_progress_bar\"/>\n\n        <SwitchPreferenceCompat\n            android:key=\"showInLockScreen\"\n            android:title=\"@string/prefsShowInLockScreenTitle\"\n            android:summary=\"@string/prefsShowInLockScreenSummary\"\n            app:singleLineTitle=\"false\"\n            android:defaultValue=\"true\"\n            app:icon=\"@drawable/ic_lockscreen\"/>\n\n        <SwitchPreferenceCompat\n            android:key=\"disableInFullScreen\"\n            android:title=\"@string/prefsDisableInFullScreenTitle\"\n            android:summary=\"@string/prefsDisableInFullScreenSummary\"\n            app:singleLineTitle=\"false\"\n            android:defaultValue=\"true\"\n            app:icon=\"@drawable/ic_fullscreen\"/>\n\n    </PreferenceCategory>\n\n    <PreferenceCategory\n        android:title=\"@string/prefsCategoryCustomization\"\n        app:iconSpaceReserved=\"true\"\n        app:allowDividerAbove=\"false\"\n        app:allowDividerBelow=\"false\">\n\n        <Preference\n            android:key=\"PerAppSettingsFragment\"\n            android:title=\"@string/prefsPerAppSettingsTitle\"\n            android:summary=\"@string/prefsPerAppSettingsSummary\"\n            app:singleLineTitle=\"false\"\n            app:fragment=\"PerAppSettingsFragment\"\n            app:icon=\"@drawable/ic_apps\"/>\n\n        <SwitchPreferenceCompat\n            android:key=\"useNotificationColor\"\n            android:title=\"@string/prefsNotificationColorTitle\"\n            android:summary=\"@string/prefsNotificationColorSummary\"\n            app:singleLineTitle=\"false\"\n            android:defaultValue=\"false\"\n            app:icon=\"@drawable/ic_palette\"/>\n\n        <com.kizitonwose.colorpreferencecompat.ColorPreferenceCompat\n            android:key=\"progressBarColor\"\n            android:title=\"@string/prefsChangeColorTitle\"\n            android:defaultValue=\"@color/purple_500\"\n            app:colorChoices=\"@array/colorsArrayValues\"\n            app:icon=\"@drawable/ic_colors\"\n            app:showDialog=\"false\"/>\n\n        <SwitchPreferenceCompat\n            android:key=\"blackBackground\"\n            android:title=\"@string/prefsBlackBackgroundTitle\"\n            android:summary=\"@string/prefsBlackBackgroundSummary\"\n            app:singleLineTitle=\"false\"\n            android:defaultValue=\"false\"\n            app:icon=\"@drawable/ic_contrast\"/>\n\n        <SwitchPreferenceCompat\n            android:key=\"useRoundedCorners\"\n            android:title=\"@string/prefsRoundedCornersTitle\"\n            android:summary=\"@string/prefsRoundedCornersSummary\"\n            app:singleLineTitle=\"false\"\n            android:defaultValue=\"false\"\n            app:icon=\"@drawable/ic_rounded_corners\"/>\n\n    </PreferenceCategory>\n\n    <PreferenceCategory\n        android:title=\"@string/prefsCategoryMore\"\n        app:iconSpaceReserved=\"true\"\n        app:allowDividerAbove=\"false\"\n        app:allowDividerBelow=\"false\"\n        app:isPreferenceVisible=\"true\">\n\n        <Preference\n            android:key=\"selfPromo\"\n            android:summary=\"@string/prefsCalentileSummary\"\n            app:singleLineTitle=\"false\">\n        </Preference>\n\n    </PreferenceCategory>\n</PreferenceScreen>"
  },
  {
    "path": "build.gradle",
    "content": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\nplugins {\n    id 'com.android.application' version '8.9.2' apply false\n    id 'com.android.library' version '8.9.2' apply false\n    id 'org.jetbrains.kotlin.android' version '1.9.24' apply false\n    id 'com.google.gms.google-services' version '4.4.2' apply false\n}"
  },
  {
    "path": "gradle/wrapper/gradle-wrapper.properties",
    "content": "#Tue Jul 18 16:04:19 WEST 2023\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\ndistributionUrl=https\\://services.gradle.org/distributions/gradle-8.11.1-bin.zip\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dists\n"
  },
  {
    "path": "gradle.properties",
    "content": "# Project-wide Gradle settings.\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will override*\n# any settings specified in this file.\n# For more details on how to configure your build environment visit\n# http://www.gradle.org/docs/current/userguide/build_environment.html\n# Specifies the JVM arguments used for the daemon process.\n# The setting is particularly useful for tweaking memory settings.\norg.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8\n# When configured, Gradle will run in incubating parallel mode.\n# This option should only be used with decoupled projects. More details, visit\n# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects\n# org.gradle.parallel=true\n# AndroidX package structure to make it clearer which packages are bundled with the\n# Android operating system, and which are packaged with your app's APK\n# https://developer.android.com/topic/libraries/support-library/androidx-rn\nandroid.useAndroidX=true\n# Kotlin code style for this project: \"official\" or \"obsolete\":\nkotlin.code.style=official\n# Enables namespacing of each library's R class so that its R class includes only the\n# resources declared in the library itself and none from the library's dependencies,\n# thereby reducing the size of the R class for that library\nandroid.nonTransitiveRClass=true"
  },
  {
    "path": "gradlew",
    "content": "#!/usr/bin/env sh\n\n#\n# Copyright 2015 the original author or authors.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      https://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n##############################################################################\n##\n##  Gradle start up script for UN*X\n##\n##############################################################################\n\n# Attempt to set APP_HOME\n# Resolve links: $0 may be a link\nPRG=\"$0\"\n# Need this for relative symlinks.\nwhile [ -h \"$PRG\" ] ; do\n    ls=`ls -ld \"$PRG\"`\n    link=`expr \"$ls\" : '.*-> \\(.*\\)$'`\n    if expr \"$link\" : '/.*' > /dev/null; then\n        PRG=\"$link\"\n    else\n        PRG=`dirname \"$PRG\"`\"/$link\"\n    fi\ndone\nSAVED=\"`pwd`\"\ncd \"`dirname \\\"$PRG\\\"`/\" >/dev/null\nAPP_HOME=\"`pwd -P`\"\ncd \"$SAVED\" >/dev/null\n\nAPP_NAME=\"Gradle\"\nAPP_BASE_NAME=`basename \"$0\"`\n\n# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nDEFAULT_JVM_OPTS='\"-Xmx64m\" \"-Xms64m\"'\n\n# Use the maximum available, or set MAX_FD != -1 to use that value.\nMAX_FD=\"maximum\"\n\nwarn () {\n    echo \"$*\"\n}\n\ndie () {\n    echo\n    echo \"$*\"\n    echo\n    exit 1\n}\n\n# OS specific support (must be 'true' or 'false').\ncygwin=false\nmsys=false\ndarwin=false\nnonstop=false\ncase \"`uname`\" in\n  CYGWIN* )\n    cygwin=true\n    ;;\n  Darwin* )\n    darwin=true\n    ;;\n  MINGW* )\n    msys=true\n    ;;\n  NONSTOP* )\n    nonstop=true\n    ;;\nesac\n\nCLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar\n\n\n# Determine the Java command to use to start the JVM.\nif [ -n \"$JAVA_HOME\" ] ; then\n    if [ -x \"$JAVA_HOME/jre/sh/java\" ] ; then\n        # IBM's JDK on AIX uses strange locations for the executables\n        JAVACMD=\"$JAVA_HOME/jre/sh/java\"\n    else\n        JAVACMD=\"$JAVA_HOME/bin/java\"\n    fi\n    if [ ! -x \"$JAVACMD\" ] ; then\n        die \"ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\n    fi\nelse\n    JAVACMD=\"java\"\n    which java >/dev/null 2>&1 || die \"ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\n\nPlease set the JAVA_HOME variable in your environment to match the\nlocation of your Java installation.\"\nfi\n\n# Increase the maximum file descriptors if we can.\nif [ \"$cygwin\" = \"false\" -a \"$darwin\" = \"false\" -a \"$nonstop\" = \"false\" ] ; then\n    MAX_FD_LIMIT=`ulimit -H -n`\n    if [ $? -eq 0 ] ; then\n        if [ \"$MAX_FD\" = \"maximum\" -o \"$MAX_FD\" = \"max\" ] ; then\n            MAX_FD=\"$MAX_FD_LIMIT\"\n        fi\n        ulimit -n $MAX_FD\n        if [ $? -ne 0 ] ; then\n            warn \"Could not set maximum file descriptor limit: $MAX_FD\"\n        fi\n    else\n        warn \"Could not query maximum file descriptor limit: $MAX_FD_LIMIT\"\n    fi\nfi\n\n# For Darwin, add options to specify how the application appears in the dock\nif $darwin; then\n    GRADLE_OPTS=\"$GRADLE_OPTS \\\"-Xdock:name=$APP_NAME\\\" \\\"-Xdock:icon=$APP_HOME/media/gradle.icns\\\"\"\nfi\n\n# For Cygwin or MSYS, switch paths to Windows format before running java\nif [ \"$cygwin\" = \"true\" -o \"$msys\" = \"true\" ] ; then\n    APP_HOME=`cygpath --path --mixed \"$APP_HOME\"`\n    CLASSPATH=`cygpath --path --mixed \"$CLASSPATH\"`\n\n    JAVACMD=`cygpath --unix \"$JAVACMD\"`\n\n    # We build the pattern for arguments to be converted via cygpath\n    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`\n    SEP=\"\"\n    for dir in $ROOTDIRSRAW ; do\n        ROOTDIRS=\"$ROOTDIRS$SEP$dir\"\n        SEP=\"|\"\n    done\n    OURCYGPATTERN=\"(^($ROOTDIRS))\"\n    # Add a user-defined pattern to the cygpath arguments\n    if [ \"$GRADLE_CYGPATTERN\" != \"\" ] ; then\n        OURCYGPATTERN=\"$OURCYGPATTERN|($GRADLE_CYGPATTERN)\"\n    fi\n    # Now convert the arguments - kludge to limit ourselves to /bin/sh\n    i=0\n    for arg in \"$@\" ; do\n        CHECK=`echo \"$arg\"|egrep -c \"$OURCYGPATTERN\" -`\n        CHECK2=`echo \"$arg\"|egrep -c \"^-\"`                                 ### Determine if an option\n\n        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition\n            eval `echo args$i`=`cygpath --path --ignore --mixed \"$arg\"`\n        else\n            eval `echo args$i`=\"\\\"$arg\\\"\"\n        fi\n        i=`expr $i + 1`\n    done\n    case $i in\n        0) set -- ;;\n        1) set -- \"$args0\" ;;\n        2) set -- \"$args0\" \"$args1\" ;;\n        3) set -- \"$args0\" \"$args1\" \"$args2\" ;;\n        4) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" ;;\n        5) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" ;;\n        6) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" ;;\n        7) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" ;;\n        8) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" ;;\n        9) set -- \"$args0\" \"$args1\" \"$args2\" \"$args3\" \"$args4\" \"$args5\" \"$args6\" \"$args7\" \"$args8\" ;;\n    esac\nfi\n\n# Escape application args\nsave () {\n    for i do printf %s\\\\n \"$i\" | sed \"s/'/'\\\\\\\\''/g;1s/^/'/;\\$s/\\$/' \\\\\\\\/\" ; done\n    echo \" \"\n}\nAPP_ARGS=`save \"$@\"`\n\n# Collect all arguments for the java command, following the shell quoting and substitution rules\neval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS \"\\\"-Dorg.gradle.appname=$APP_BASE_NAME\\\"\" -classpath \"\\\"$CLASSPATH\\\"\" org.gradle.wrapper.GradleWrapperMain \"$APP_ARGS\"\n\nexec \"$JAVACMD\" \"$@\"\n"
  },
  {
    "path": "gradlew.bat",
    "content": "@rem\n@rem Copyright 2015 the original author or authors.\n@rem\n@rem Licensed under the Apache License, Version 2.0 (the \"License\");\n@rem you may not use this file except in compliance with the License.\n@rem You may obtain a copy of the License at\n@rem\n@rem      https://www.apache.org/licenses/LICENSE-2.0\n@rem\n@rem Unless required by applicable law or agreed to in writing, software\n@rem distributed under the License is distributed on an \"AS IS\" BASIS,\n@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n@rem See the License for the specific language governing permissions and\n@rem limitations under the License.\n@rem\n\n@if \"%DEBUG%\" == \"\" @echo off\n@rem ##########################################################################\n@rem\n@rem  Gradle startup script for Windows\n@rem\n@rem ##########################################################################\n\n@rem Set local scope for the variables with windows NT shell\nif \"%OS%\"==\"Windows_NT\" setlocal\n\nset DIRNAME=%~dp0\nif \"%DIRNAME%\" == \"\" set DIRNAME=.\nset APP_BASE_NAME=%~n0\nset APP_HOME=%DIRNAME%\n\n@rem Resolve any \".\" and \"..\" in APP_HOME to make it shorter.\nfor %%i in (\"%APP_HOME%\") do set APP_HOME=%%~fi\n\n@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.\nset DEFAULT_JVM_OPTS=\"-Xmx64m\" \"-Xms64m\"\n\n@rem Find java.exe\nif defined JAVA_HOME goto findJavaFromJavaHome\n\nset JAVA_EXE=java.exe\n%JAVA_EXE% -version >NUL 2>&1\nif \"%ERRORLEVEL%\" == \"0\" goto execute\n\necho.\necho ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.\necho.\necho Please set the JAVA_HOME variable in your environment to match the\necho location of your Java installation.\n\ngoto fail\n\n:findJavaFromJavaHome\nset JAVA_HOME=%JAVA_HOME:\"=%\nset JAVA_EXE=%JAVA_HOME%/bin/java.exe\n\nif exist \"%JAVA_EXE%\" goto execute\n\necho.\necho ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%\necho.\necho Please set the JAVA_HOME variable in your environment to match the\necho location of your Java installation.\n\ngoto fail\n\n:execute\n@rem Setup the command line\n\nset CLASSPATH=%APP_HOME%\\gradle\\wrapper\\gradle-wrapper.jar\n\n\n@rem Execute Gradle\n\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% \"-Dorg.gradle.appname=%APP_BASE_NAME%\" -classpath \"%CLASSPATH%\" org.gradle.wrapper.GradleWrapperMain %*\n\n:end\n@rem End local scope for the variables with windows NT shell\nif \"%ERRORLEVEL%\"==\"0\" goto mainEnd\n\n:fail\nrem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of\nrem the _cmd.exe /c_ return code!\nif  not \"\" == \"%GRADLE_EXIT_CONSOLE%\" exit 1\nexit /b 1\n\n:mainEnd\nif \"%OS%\"==\"Windows_NT\" endlocal\n\n:omega\n"
  },
  {
    "path": "renovate.json",
    "content": "{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\n    \"config:recommended\"\n  ]\n}\n"
  },
  {
    "path": "settings.gradle",
    "content": "pluginManagement {\n    repositories {\n        google()\n        mavenCentral()\n        gradlePluginPortal()\n    }\n}\ndependencyResolutionManagement {\n    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)\n    repositories {\n        google()\n        mavenCentral()\n        maven { url 'https://jitpack.io' }\n    }\n}\nrootProject.name = \"Noti Progress Bar\"\ninclude ':app'\n"
  }
]