initial commit
74
composeApp/build.gradle.kts
Normal file
@@ -0,0 +1,74 @@
|
||||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.kotlinMultiplatform)
|
||||
alias(libs.plugins.androidKotlinMultiplatformLibrary)
|
||||
alias(libs.plugins.composeMultiplatform)
|
||||
alias(libs.plugins.composeCompiler)
|
||||
alias(libs.plugins.kotlinSerialization)
|
||||
}
|
||||
|
||||
kotlin {
|
||||
android {
|
||||
namespace = "top.zhushenwudi.llmp.composeapp"
|
||||
compileSdk = libs.versions.android.compileSdk.get().toInt()
|
||||
minSdk = libs.versions.android.minSdk.get().toInt()
|
||||
compilerOptions {
|
||||
jvmTarget.set(JvmTarget.JVM_11)
|
||||
}
|
||||
androidResources {
|
||||
enable = true
|
||||
}
|
||||
}
|
||||
|
||||
listOf(
|
||||
iosArm64(),
|
||||
iosSimulatorArm64(),
|
||||
).forEach { iosTarget ->
|
||||
iosTarget.binaries.framework {
|
||||
baseName = "ComposeApp"
|
||||
isStatic = true
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
androidMain.dependencies {
|
||||
implementation(libs.androidx.activity.compose)
|
||||
implementation(libs.androidx.palette)
|
||||
implementation(libs.ktor.client.okhttp)
|
||||
}
|
||||
iosMain.dependencies {
|
||||
implementation(libs.ktor.client.darwin)
|
||||
}
|
||||
commonMain.dependencies {
|
||||
implementation(projects.shared)
|
||||
implementation(libs.compose.runtime)
|
||||
implementation(libs.compose.foundation)
|
||||
implementation(libs.compose.material3)
|
||||
implementation(libs.compose.material.icons.extended)
|
||||
implementation(libs.compose.ui)
|
||||
implementation(libs.compose.components.resources)
|
||||
implementation(libs.compose.ui.tooling.preview)
|
||||
implementation(libs.androidx.lifecycle.viewmodel)
|
||||
implementation(libs.androidx.lifecycle.runtime.compose)
|
||||
implementation(libs.navigation.compose)
|
||||
implementation(libs.kotlinx.coroutines.core)
|
||||
implementation(libs.kotlinx.serialization.json)
|
||||
implementation(libs.ktor.client.core)
|
||||
implementation(libs.coil.compose)
|
||||
implementation(libs.coil.svg)
|
||||
implementation(libs.coil.network.ktor3)
|
||||
implementation(libs.haze)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
compose {
|
||||
resources {
|
||||
packageOfResClass = "top.zhushenwudi.llmp.generated.resources"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
androidRuntimeClasspath(libs.compose.ui.tooling)
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package top.zhushenwudi.llmp.platform
|
||||
|
||||
import androidx.activity.compose.BackHandler
|
||||
import androidx.compose.runtime.Composable
|
||||
|
||||
@Composable
|
||||
actual fun DetailBackHandler(enabled: Boolean, onBack: () -> Unit) {
|
||||
BackHandler(enabled = enabled, onBack = onBack)
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package top.zhushenwudi.llmp.ui.player
|
||||
|
||||
import android.graphics.BitmapFactory
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.palette.graphics.Palette
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.io.File
|
||||
|
||||
/**
|
||||
* Flutter color_thief getColorFromImage → Color.fromARGB(150, r, g, b).
|
||||
* Android Palette dominant is closest available substitute.
|
||||
*/
|
||||
actual suspend fun extractDominantColor(coverPath: String?): Color? =
|
||||
withContext(Dispatchers.Default) {
|
||||
if (coverPath.isNullOrBlank()) return@withContext null
|
||||
val file = File(coverPath)
|
||||
if (!file.isFile) return@withContext null
|
||||
val bitmap = BitmapFactory.decodeFile(file.absolutePath) ?: return@withContext null
|
||||
try {
|
||||
val dominant = Palette.from(bitmap).generate().getDominantColor(0xFFFFAE00.toInt())
|
||||
val r = android.graphics.Color.red(dominant)
|
||||
val g = android.graphics.Color.green(dominant)
|
||||
val b = android.graphics.Color.blue(dominant)
|
||||
Color(red = r / 255f, green = g / 255f, blue = b / 255f, alpha = FlutterPaletteAlpha)
|
||||
} finally {
|
||||
bitmap.recycle()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M20 3v14a4 4 0 1 1-2-3.465V5H9v12a4 4 0 1 1-2-3.465V3h13zM5 19a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm11 0a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 319 B |
@@ -0,0 +1,14 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<path d="m0 0h24v24h-24z" />
|
||||
<g stroke="#666" stroke-linejoin="round" stroke-width="2">
|
||||
<path
|
||||
d="m12 22.5c-5.7989925 0-10.5-4.7010075-10.5-10.5s4.7010075-10.5 10.5-10.5 10.5 4.7010075 10.5 10.5"
|
||||
stroke-linecap="round"/>
|
||||
<path
|
||||
d="m9.9 12v-3.637305l3.15 1.8186525 3.15 1.8186525-3.15 1.8186525-3.15 1.8186525z" />
|
||||
<path d="m18.85167 16.2v5.25" stroke-linecap="round" />
|
||||
<path d="m21.45 18.798593h-5.25" stroke-linecap="round" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 691 B |
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path d="M2 18h10v2H2v-2zm0-7h20v2H2v-2zm0-7h20v2H2V4zm16 14v-3h2v3h3v2h-3v3h-2v-3h-3v-2h3z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 268 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"
|
||||
fill="rgba(153,153,153,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 322 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M17 6h5v2h-2v13a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V8H2V6h5V3a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v3zm1 2H6v12h12V8zm-9 3h2v6H9v-6zm4 0h2v6h-2v-6zM9 4v2h6V4H9z"
|
||||
fill="rgba(90,90,90,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 337 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M16.757 3l-2 2H5v14h14V9.243l2-2V20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h12.757zm3.728-.9L21.9 3.516l-9.192 9.192-1.412.003-.002-1.417L20.485 2.1z"
|
||||
fill="rgba(90,90,90,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 346 B |
@@ -0,0 +1,9 @@
|
||||
<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" fill-rule="evenodd" stroke="#666" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path
|
||||
d="m6.15789474 2.84210526v-1.10526315c0-.40694685.32988421-.73684211.7368421-.73684211h7.36842106c.4069579 0 .7368421.32989526.7368421.73684211v8.10526315c0 .40695794-.3298842.73684214-.7368421.73684214h-1.4736842" />
|
||||
<rect height="8.842105" rx="1" width="8.842105" x="1" y="5.789474" />
|
||||
<path d="m5.421053 8.368421v3.684211" />
|
||||
<path d="m3.578947 10.210526h3.684211" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 621 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16zm0 2C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-8a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 2a4 4 0 1 1 0-8 4 4 0 0 1 0 8z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 368 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-2a8 8 0 1 0 0-16 8 8 0 0 0 0 16zM11 7h2v2h-2V7zm0 4h2v6h-2v-6z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 332 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M4.828 21l-.02.02-.021-.02H2.992A.993.993 0 0 1 2 20.007V3.993A1 1 0 0 1 2.992 3h18.016c.548 0 .992.445.992.993v16.014a1 1 0 0 1-.992.993H4.828zM20 15V5H4v14L14 9l6 6zm0 2.828l-6-6L6.828 19H20v-1.172zM8 11a2 2 0 1 1 0-4 2 2 0 0 1 0 4z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 428 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M5 5v3h14V5H5zM4 3h16a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1zm2 9h6a1 1 0 0 1 1 1v3h1v6h-4v-6h1v-2H5a1 1 0 0 1-1-1v-2h2v1zm11.732 1.732l1.768-1.768 1.768 1.768a2.5 2.5 0 1 1-3.536 0z"
|
||||
fill="rgba(102,102,102,1)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 398 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"
|
||||
fill="currentColor">
|
||||
<path
|
||||
d="M9 1V3H15V1H17V3H21C21.5523 3 22 3.44772 22 4V20C22 20.5523 21.5523 21 21 21H3C2.44772 21 2 20.5523 2 20V4C2 3.44772 2.44772 3 3 3H7V1H9ZM20 11H4V19H20V11ZM8 13V15H6V13H8ZM13 13V15H11V13H13ZM18 13V15H16V13H18ZM7 5H4V9H20V5H17V7H15V5H9V7H7V5Z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 416 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M19 20H5V21C5 21.5523 4.55228 22 4 22H3C2.44772 22 2 21.5523 2 21V12L4.51334 5.29775C4.80607 4.51715 5.55231 4 6.386 4H17.614C18.4477 4 19.1939 4.51715 19.4867 5.29775L22 12V21C22 21.5523 21.5523 22 21 22H20C19.4477 22 19 21.5523 19 21V20ZM4.136 12H19.864L17.614 6H6.386L4.136 12ZM6.5 17C7.32843 17 8 16.3284 8 15.5C8 14.6716 7.32843 14 6.5 14C5.67157 14 5 14.6716 5 15.5C5 16.3284 5.67157 17 6.5 17ZM17.5 17C18.3284 17 19 16.3284 19 15.5C19 14.6716 18.3284 14 17.5 14C16.6716 14 16 14.6716 16 15.5C16 16.3284 16.6716 17 17.5 17Z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 723 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M12 2c5.522 0 10 3.978 10 8.889a5.558 5.558 0 0 1-5.556 5.555h-1.966c-.922 0-1.667.745-1.667 1.667 0 .422.167.811.422 1.1.267.3.434.689.434 1.122C13.667 21.256 12.9 22 12 22 6.478 22 2 17.522 2 12S6.478 2 12 2zm-1.189 16.111a3.664 3.664 0 0 1 3.667-3.667h1.966A3.558 3.558 0 0 0 20 10.89C20 7.139 16.468 4 12 4a8 8 0 0 0-.676 15.972 3.648 3.648 0 0 1-.513-1.86zM7.5 12a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm9 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zM12 9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 682 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M13 13v5.585l1.828-1.828 1.415 1.415L12 22.414l-4.243-4.242 1.415-1.415L11 18.585V13h2zM12 2a7.001 7.001 0 0 1 6.954 6.194 5.5 5.5 0 0 1-.953 10.784v-2.014a3.5 3.5 0 1 0-1.112-6.91 5 5 0 1 0-9.777 0 3.5 3.5 0 0 0-1.292 6.88l.18.03v2.014a5.5 5.5 0 0 1-.954-10.784A7 7 0 0 1 12 2z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 472 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M16.05 12.05L21 17l-4.95 4.95-1.414-1.414 2.536-2.537L4 18v-2h13.172l-2.536-2.536 1.414-1.414zm-8.1-10l1.414 1.414L6.828 6 20 6v2H6.828l2.536 2.536L7.95 11.95 3 7l4.95-4.95z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 367 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 370 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M13 19.9a5.002 5.002 0 0 0 4-4.9v-3a4.98 4.98 0 0 0-.415-2h-9.17A4.98 4.98 0 0 0 7 12v3a5.002 5.002 0 0 0 4 4.9V14h2v5.9zm-7.464-2.21A6.979 6.979 0 0 1 5 15H2v-2h3v-1c0-.643.087-1.265.249-1.856L3.036 8.866l1-1.732L6.056 8.3a7.01 7.01 0 0 1 .199-.3h11.49c.069.098.135.199.199.3l2.02-1.166 1 1.732-2.213 1.278c.162.59.249 1.213.249 1.856v1h3v2h-3c0 .953-.19 1.862-.536 2.69l2.5 1.444-1 1.732-2.526-1.458A6.986 6.986 0 0 1 12 22a6.986 6.986 0 0 1-5.438-2.592l-2.526 1.458-1-1.732 2.5-1.443zM8 6a4 4 0 1 1 8 0H8z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 702 B |
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"
|
||||
fill="currentColor">
|
||||
<path
|
||||
d="M20.4668 8.69379L20.7134 8.12811C21.1529 7.11947 21.9445 6.31641 22.9323 5.87708L23.6919 5.53922C24.1027 5.35653 24.1027 4.75881 23.6919 4.57612L22.9748 4.25714C21.9616 3.80651 21.1558 2.97373 20.7238 1.93083L20.4706 1.31953C20.2942 0.893489 19.7058 0.893489 19.5293 1.31953L19.2761 1.93083C18.8442 2.97373 18.0384 3.80651 17.0252 4.25714L16.308 4.57612C15.8973 4.75881 15.8973 5.35653 16.308 5.53922L17.0677 5.87708C18.0555 6.31641 18.8471 7.11947 19.2866 8.12811L19.5331 8.69379C19.7136 9.10792 20.2864 9.10792 20.4668 8.69379ZM2 4C2 3.44772 2.44772 3 3 3H14V5H4V19H20V11H22V20C22 20.5523 21.5523 21 21 21H3C2.44772 21 2 20.5523 2 20V4ZM12 12.1707V6H16V8H14V15C14 16.6569 12.6569 18 11 18C9.34315 18 8 16.6569 8 15C8 13.3431 9.34315 12 11 12C11.3506 12 11.6872 12.0602 12 12.1707Z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 922 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M3.91762 8.0366C3.32984 9.23328 3 10.5792 3 11.9999C3 16.9704 7.02944 20.9999 12 20.9999C13.4216 20.9999 14.7684 20.6696 15.9657 20.081C16.8385 20.4544 17.6848 20.6991 18.4564 20.762C19.3582 20.8356 20.3 20.6665 20.9818 19.9847C21.7339 19.2325 21.8625 18.1689 21.7279 17.1727C21.6052 16.2638 21.2481 15.2537 20.726 14.2114C20.9051 13.503 21 12.7619 21 11.9999C21 7.02929 16.9706 2.99986 12 2.99986C11.2389 2.99986 10.4987 3.09454 9.79103 3.27318C8.7474 2.7498 7.73605 2.39172 6.8261 2.26834C5.82897 2.13315 4.76406 2.26128 4.01121 3.01413C3.3287 3.69664 3.16001 4.63956 3.2341 5.54233C3.29752 6.315 3.54313 7.16247 3.91762 8.0366ZM5.3224 5.96574C5.2734 5.75321 5.24204 5.55715 5.2274 5.37873C5.17928 4.79243 5.31727 4.53649 5.42543 4.42834C5.54452 4.30925 5.84797 4.15403 6.55739 4.25021C6.75482 4.27698 6.96951 4.32189 7.2 4.38547C6.50364 4.82527 5.87203 5.35784 5.3224 5.96574ZM19.6124 16.803C19.6751 17.0316 19.7195 17.2445 19.7459 17.4404C19.8416 18.1485 19.6865 18.4515 19.5676 18.5705C19.4595 18.6785 19.204 18.8163 18.6189 18.7686C18.4419 18.7542 18.2475 18.7233 18.0368 18.675C18.6427 18.1268 19.1736 17.4971 19.6124 16.803ZM15.8812 17.8264C14.2046 16.9482 12.2571 15.5026 10.3752 13.6207C8.4954 11.741 7.05092 9.79561 6.17241 8.12028C7.06357 6.78465 8.40124 5.77312 9.96933 5.29866C10.6108 5.10457 11.2923 4.99986 12 4.99986C15.866 4.99986 19 8.13386 19 11.9999C19 12.7083 18.8951 13.3904 18.7006 14.0325C18.2261 15.5991 17.2155 16.9356 15.8812 17.8264ZM13.6052 18.8152C13.0901 18.9359 12.5528 18.9999 12 18.9999C8.13401 18.9999 5 15.8658 5 11.9999C5 11.4476 5.06377 10.9109 5.18429 10.3963C6.14883 11.913 7.43475 13.5087 8.96096 15.0349C10.489 16.563 12.0868 17.8502 13.6052 18.8152Z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M18.031 16.617l4.283 4.282-1.415 1.415-4.282-4.283A8.96 8.96 0 0 1 11 20c-4.968 0-9-4.032-9-9s4.032-9 9-9 9 4.032 9 9a8.96 8.96 0 0 1-1.969 5.617zm-2.006-.742A6.977 6.977 0 0 0 18 11c0-3.868-3.133-7-7-7-3.868 0-7 3.132-7 7 0 3.867 3.132 7 7 7a6.977 6.977 0 0 0 4.875-1.975l.15-.15zm-3.847-8.699a2 2 0 1 0 2.646 2.646 4 4 0 1 1-2.646-2.646z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 533 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M4.929 2.929l1.414 1.414A7.975 7.975 0 0 0 4 10c0 2.21.895 4.21 2.343 5.657L4.93 17.07A9.969 9.969 0 0 1 2 10a9.969 9.969 0 0 1 2.929-7.071zm14.142 0A9.969 9.969 0 0 1 22 10a9.969 9.969 0 0 1-2.929 7.071l-1.414-1.414A7.975 7.975 0 0 0 20 10c0-2.21-.895-4.21-2.343-5.657L19.07 2.93zM7.757 5.757l1.415 1.415A3.987 3.987 0 0 0 8 10c0 1.105.448 2.105 1.172 2.828l-1.415 1.415A5.981 5.981 0 0 1 6 10c0-1.657.672-3.157 1.757-4.243zm8.486 0A5.981 5.981 0 0 1 18 10a5.981 5.981 0 0 1-1.757 4.243l-1.415-1.415A3.987 3.987 0 0 0 16 10a3.987 3.987 0 0 0-1.172-2.828l1.415-1.415zM12 12a2 2 0 1 1 0-4 2 2 0 0 1 0 4zm0 2c.58 0 1.077.413 1.184.983L14.5 22h-5l1.316-7.017c.107-.57.604-.983 1.184-.983z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 879 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 352 B |
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"
|
||||
fill="currentColor">
|
||||
<path
|
||||
d="M6 7.82843V20H18V4H9.82843L6 7.82843ZM4.29289 6.70711L9 2H19C19.5523 2 20 2.44772 20 3V21C20 21.5523 19.5523 22 19 22H5C4.44772 22 4 21.5523 4 21V7.41421C4 7.149 4.10536 6.89464 4.29289 6.70711ZM15 5H17V9H15V5ZM12 5H14V9H12V5ZM9 6H11V9H9V6Z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 384 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10-4.477 10-10 10zm0-2a8 8 0 1 0 0-16 8 8 0 0 0 0 16zM11 7h2v2h-2V7zm0 4h2v6h-2v-6z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 332 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M2 12c0-.865.11-1.703.316-2.504A3 3 0 0 0 4.99 4.867a9.99 9.99 0 0 1 4.335-2.505 3 3 0 0 0 5.348 0 9.99 9.99 0 0 1 4.335 2.505 3 3 0 0 0 2.675 4.63c.206.8.316 1.638.316 2.503 0 .865-.11 1.703-.316 2.504a3 3 0 0 0-2.675 4.629 9.99 9.99 0 0 1-4.335 2.505 3 3 0 0 0-5.348 0 9.99 9.99 0 0 1-4.335-2.505 3 3 0 0 0-2.675-4.63C2.11 13.704 2 12.866 2 12zm4.804 3c.63 1.091.81 2.346.564 3.524.408.29.842.541 1.297.75A4.993 4.993 0 0 1 12 18c1.26 0 2.438.471 3.335 1.274.455-.209.889-.46 1.297-.75A4.993 4.993 0 0 1 17.196 15a4.993 4.993 0 0 1 2.77-2.25 8.126 8.126 0 0 0 0-1.5A4.993 4.993 0 0 1 17.195 9a4.993 4.993 0 0 1-.564-3.524 7.989 7.989 0 0 0-1.297-.75A4.993 4.993 0 0 1 12 6a4.993 4.993 0 0 1-3.335-1.274 7.99 7.99 0 0 0-1.297.75A4.993 4.993 0 0 1 6.804 9a4.993 4.993 0 0 1-2.77 2.25 8.126 8.126 0 0 0 0 1.5A4.993 4.993 0 0 1 6.805 15zM12 15a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-2a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"
|
||||
fill="rgba(102,102,102,1)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M11 2.05v2.012A8.001 8.001 0 0 0 12 20a8.001 8.001 0 0 0 7.938-7h2.013c-.502 5.053-4.766 9-9.951 9-5.523 0-10-4.477-10-10 0-5.185 3.947-9.449 9-9.95zm7.707 4.657L12 13.414 10.586 12l6.707-6.707L14 2h8v8l-3.293-3.293z"
|
||||
fill="rgba(102,102,102,1)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 409 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M14.515 5l2.606-2.607a1 1 0 0 1 1.415 0l4.242 4.243a1 1 0 0 1 0 1.414L19 11.828V21a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1v-9.172L1.222 8.05a1 1 0 0 1 0-1.414l4.242-4.243a1 1 0 0 1 1.415 0L9.485 5h5.03zm.828 2H8.657L6.172 4.515 3.343 7.343 7 11v9h10v-9l3.657-3.657-2.829-2.828L15.343 7z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 470 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20ZM13 12H17V14H11V7H13V12Z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 444 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M12 12.586l4.243 4.242-1.415 1.415L13 16.415V22h-2v-5.587l-1.828 1.83-1.415-1.415L12 12.586zM12 2a7.001 7.001 0 0 1 6.954 6.194 5.5 5.5 0 0 1-.953 10.784v-2.014a3.5 3.5 0 1 0-1.112-6.91 5 5 0 1 0-9.777 0 3.5 3.5 0 0 0-1.292 6.88l.18.03v2.014a5.5 5.5 0 0 1-.954-10.784A7 7 0 0 1 12 2z"
|
||||
fill="rgba(102,102,102,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 477 B |
@@ -0,0 +1,35 @@
|
||||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 512">
|
||||
<path
|
||||
d="M265.71,312.6a9.62,9.62,0,0,1-8.6-5.31l-39.48-79L178.24,306a9.61,9.61,0,0,1-17.14-8.69l48-94.72a9.61,9.61,0,0,1,8.57-5.26h0a9.59,9.59,0,0,1,8.56,5.31l48,96a9.61,9.61,0,0,1-8.58,13.9Z"
|
||||
style="fill:#f15a24" />
|
||||
<path
|
||||
d="M702.49,312.6a9.61,9.61,0,0,1-8.6-5.31l-25.08-50.16-25,49.29a9.6,9.6,0,0,1-17.13-8.68l33.61-66.31a9.61,9.61,0,0,1,8.57-5.26h0a9.61,9.61,0,0,1,8.57,5.31l33.61,67.22a9.62,9.62,0,0,1-8.58,13.9Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M355.51,312.59a9.89,9.89,0,0,1-1.54-.12H304.21a9.8,9.8,0,0,1-1.54.12,9.59,9.59,0,0,1-9.6-9.6V235.77a9.6,9.6,0,1,1,19.2,0v57.5h43.39a9.6,9.6,0,0,1,5.88,17.19l-.15.12A9.56,9.56,0,0,1,355.51,312.59Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M437.31,312.59a10,10,0,0,1-1.54-.12H386a9.8,9.8,0,0,1-1.54.12,9.6,9.6,0,0,1-9.6-9.6V235.77a9.6,9.6,0,1,1,19.2,0v57.5h43.39a9.6,9.6,0,0,1,5.89,17.19l-.16.12A9.54,9.54,0,0,1,437.31,312.59Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M587.48,312.59a9.6,9.6,0,0,1-9.6-9.6V237.6a9.61,9.61,0,1,1,19.21,0V303A9.6,9.6,0,0,1,587.48,312.59Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M614.14,245.5a8.81,8.81,0,0,1-1.54-.13H562.69a9.8,9.8,0,0,1-1.54.13,9.61,9.61,0,0,1-9.61-9.61v-.12a9.6,9.6,0,0,1,9.61-9.6h53.14a9.6,9.6,0,0,1,5.86,17.21l-.16.12A9.55,9.55,0,0,1,614.14,245.5Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M249.4,294.5a14.67,14.67,0,0,1-2-.13H182.94a16.22,16.22,0,0,1-2,.13c-6.85,0-12.41-4.3-12.41-9.61v-.12c0-5.3,5.56-9.6,12.41-9.6h68.64c5.31,0,10,2.61,11.75,6.5s0,8.2-4.17,10.71l-.21.12A14.8,14.8,0,0,1,249.4,294.5Z"
|
||||
style="fill:#f15a24" />
|
||||
<path
|
||||
d="M500.36,314.64c-12.75,0-25.77-4-35.34-11.61a10.22,10.22,0,0,1-1.77-14,9.36,9.36,0,0,1,13.46-1.84c10.19,8.11,27.77,10,39.18,4.11,7.9-4,7.9-9.38,7.9-11.13,0-5.38-11.74-9.43-22.11-13-16.48-5.69-37-12.77-38.44-33.88-1-14.79,6.48-27.49,20.06-34C501,190.94,523.63,195,537.23,209a10.23,10.23,0,0,1,0,14.1,9.37,9.37,0,0,1-13.58.05c-8.78-9.06-23.37-10-32.39-5.72-6.36,3-9.36,7.87-8.91,14.41.5,7.26,10.82,11.37,25.34,16.38,15.71,5.42,35.26,12.17,35.26,31.93,0,12.38-6.78,22.95-18.61,29A53,53,0,0,1,500.36,314.64Z"
|
||||
style="fill:#f15a24" />
|
||||
<path
|
||||
d="M815.25,312.57c-9.58,0-19.35-2.89-26.53-8.4a9.6,9.6,0,0,1,11.68-15.24c6.89,5.28,18.18,5.55,24.4,2.48,3.93-1.94,3.93-4.11,3.93-4.93h0c-1.28-2-9.22-4.6-13.51-6-11.7-3.89-27.72-9.22-28.87-25.37-.8-11.23,5.07-20.85,15.71-25.73,13.4-6.15,30.64-3.16,41,7.11a9.61,9.61,0,1,1-13.54,13.63c-5.26-5.22-14-5.77-19.44-3.28-4.9,2.25-4.65,5.62-4.56,6.9.24,3.35,9.21,6.33,15.77,8.52,11.25,3.74,26.66,8.86,26.66,24.26,0,9.49-5.34,17.56-14.64,22.15A41.12,41.12,0,0,1,815.25,312.57Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M735,312.59a9.6,9.6,0,0,1-9.61-9.6V267a9.61,9.61,0,1,1,19.21,0V303A9.6,9.6,0,0,1,735,312.59Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M735,276.64a9.6,9.6,0,0,1-9.61-9.6,40.92,40.92,0,0,1,40.87-40.87,9.6,9.6,0,1,1,0,19.2A21.69,21.69,0,0,0,744.57,267,9.6,9.6,0,0,1,735,276.64Z"
|
||||
style="fill:#e4007f" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
@@ -0,0 +1,33 @@
|
||||
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 512">
|
||||
<path
|
||||
d="M750.1,313c-10.07,0-20.35-3-27.91-8.84a9.92,9.92,0,0,1,12.07-15.74c7.36,5.64,19.41,5.92,26,2.65,4.28-2.11,4.28-4.52,4.28-5.42v-.09c-1.2-2.12-9.81-5-14.44-6.52-12.31-4.1-29.16-9.7-30.37-26.62-.84-11.77,5.32-21.85,16.48-27,14.08-6.46,32.2-3.32,43.07,7.47a9.92,9.92,0,1,1-14,14.08c-5.64-5.6-15-6.19-20.82-3.52-5.33,2.44-5.06,6.13-5,7.52.26,3.7,9.45,6.76,16.84,9.22,11.82,3.93,28,9.32,28,25.43,0,9.94-5.6,18.4-15.35,23.21A43.19,43.19,0,0,1,750.1,313Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M670,313a9.92,9.92,0,0,1-9.92-9.91v-38a9.92,9.92,0,1,1,19.83,0v38A9.91,9.91,0,0,1,670,313Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M670,275a9.92,9.92,0,0,1-9.92-9.92,43,43,0,0,1,43-43A9.92,9.92,0,1,1,703,242,23.17,23.17,0,0,0,679.9,265.1,9.92,9.92,0,0,1,670,275Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M630.32,290.22a9.92,9.92,0,0,1-9.92-9.91V232a9.92,9.92,0,1,1,19.83,0v48.27A9.91,9.91,0,0,1,630.32,290.22Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M607.18,313a33.09,33.09,0,0,1-33-32.32c0-.14,0-.27,0-.4V232A9.92,9.92,0,1,1,594,232V280a13.23,13.23,0,0,0,26.45,0,9.92,9.92,0,1,1,19.83,0A33.09,33.09,0,0,1,607.18,313Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M514.45,313a45.46,45.46,0,1,1,45.45-45.45A45.51,45.51,0,0,1,514.45,313Zm0-71.07a25.62,25.62,0,1,0,25.62,25.62A25.65,25.65,0,0,0,514.45,242Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M408,313a45.46,45.46,0,1,1,45.46-45.45A45.5,45.5,0,0,1,408,313ZM408,242a25.62,25.62,0,1,0,25.62,25.62A25.65,25.65,0,0,0,408,242Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M443.54,330.55a9.92,9.92,0,0,1-9.92-9.91V269.07a9.92,9.92,0,1,1,19.84,0v51.57A9.92,9.92,0,0,1,443.54,330.55Z"
|
||||
style="fill:#e4007f" />
|
||||
<circle cx="443.54" cy="347.08" r="9.92" style="fill:#29abe2" />
|
||||
<path
|
||||
d="M346.69,314a9.92,9.92,0,0,1-8.88-5.49L298,229l-39.68,78.3a9.92,9.92,0,0,1-17.7-9l48.6-95.87a9.92,9.92,0,0,1,8.84-5.43h0a9.93,9.93,0,0,1,8.85,5.48l48.59,97.19A9.92,9.92,0,0,1,346.69,314Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M342,284c0,5.48-5.33,9.92-11.9,9.92H268.2c-6.57,0-11.9-4.44-11.9-9.92s5.33-9.92,11.9-9.92h61.9C336.67,274.08,342,278.52,342,284Z"
|
||||
style="fill:#e4007f" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,24 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 512">
|
||||
<path d="M221,240a32,32,0,1,1-32,32"
|
||||
style="fill:none;stroke:#007ebc;stroke-linecap:round;stroke-miterlimit:10;stroke-width:19px" />
|
||||
<line x1="189" y1="208" x2="189" y2="272"
|
||||
style="fill:none;stroke:#007ebc;stroke-linecap:round;stroke-miterlimit:10;stroke-width:19px" />
|
||||
<path d="M835,208v64a32,32,0,1,1-32-32"
|
||||
style="fill:none;stroke:#007ebc;stroke-linecap:round;stroke-miterlimit:10;stroke-width:19px" />
|
||||
<path d="M574.14,240a32,32,0,1,1-32,32"
|
||||
style="fill:none;stroke:#007ebc;stroke-linecap:round;stroke-miterlimit:10;stroke-width:19px" />
|
||||
<line x1="542.14" y1="208" x2="542.14" y2="272"
|
||||
style="fill:none;stroke:#007ebc;stroke-linecap:round;stroke-miterlimit:10;stroke-width:19px" />
|
||||
<path d="M289.29,208v64a32,32,0,0,0,32,32"
|
||||
style="fill:none;stroke:#007ebc;stroke-linecap:round;stroke-miterlimit:10;stroke-width:19px" />
|
||||
<path d="M643.43,240v32a32,32,0,0,0,32,32"
|
||||
style="fill:none;stroke:#007ebc;stroke-linecap:round;stroke-miterlimit:10;stroke-width:19px" />
|
||||
<path d="M711.71,304V272a32,32,0,0,1,32-32"
|
||||
style="fill:none;stroke:#007ebc;stroke-linecap:round;stroke-miterlimit:10;stroke-width:19px" />
|
||||
<path d="M412.57,240v32a32,32,0,0,1-64,0V240"
|
||||
style="fill:none;stroke:#007ebc;stroke-linecap:round;stroke-miterlimit:10;stroke-width:19px" />
|
||||
<path
|
||||
d="M496.93,247.13a32,32,0,1,0-7.48,54.26,32.8,32.8,0,0,0,12.14-9.17A37.69,37.69,0,0,0,510,274.35"
|
||||
style="fill:none;stroke:#007ebc;stroke-linecap:round;stroke-linejoin:round;stroke-width:19px" />
|
||||
<circle cx="478.5" cy="271.5" r="9" style="fill:aqua" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,20 @@
|
||||
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 512">
|
||||
<path
|
||||
d="M180.44,303.83q-5.4,7.44-10.32,3.24t1.56-10.68a30.77,30.77,0,0,1,8.76-5.76,2.47,2.47,0,0,0,1.56-2.4V268a.53.53,0,0,0-.6-.6h-3.48q-9,0-9-6t9-6h8.28q9,0,9,9v24.24a3.49,3.49,0,0,0,1.68,3.12l1.2.72q3.72,2.4,7.56,4.68,1.56,1,10,2.16a128.88,128.88,0,0,0,17.88,1q25.44,0,34.44-1.2t9.6,4.8q.48,6.12-8.64,6.36l-31.2.84q-4.56.12-9.12.12A88.17,88.17,0,0,1,214,310c-5.44-.89-8.76-1.68-10-2.4Q200,305.27,198,304t-5.88-4.08a5.91,5.91,0,0,0-3.48-1.2Q184.28,298.67,180.44,303.83Zm63.48-78.36q-7.08,0-7.08-6.48a.53.53,0,0,0-.6-.6H210a.53.53,0,0,0-.6.6q0,6.84-7.08,6.84T195.2,219a.53.53,0,0,0-.6-.6H178.88q-9,0-9-5.88t9-5.76H194.6a.53.53,0,0,0,.6-.6q0-5.64,7.08-5.64t7.08,5.64a.53.53,0,0,0,.6.6h26.28a.53.53,0,0,0,.6-.6q0-5.64,7.08-5.64t7.08,5.64a.53.53,0,0,0,.6.6h16.32q9,0,9,5.76t-9,5.88H251.6a.53.53,0,0,0-.6.6Q251,225.47,243.92,225.47Zm-53.28,18.6q-5.76,3.72-7.74.54a21.18,21.18,0,0,0-4.86-5.46q-7-5.52-3.24-10.32t10.92.24a34.36,34.36,0,0,1,8.1,7.62Q196.28,240.23,190.64,244.07Zm46.44,53.16q-6.6,0-6.6-5.4a.53.53,0,0,0-.6-.6h-21q-9,0-9-5t9-5h21a.53.53,0,0,0,.6-.6v-3.36a.53.53,0,0,0-.6-.6h-15.6q-9,0-9-9v-16.2q0-9,9-9h15.6a.53.53,0,0,0,.6-.6v-3.12a.53.53,0,0,0-.6-.6H210.8q-9,0-9-4.8t9-4.68h19.08a.53.53,0,0,0,.6-.6q0-4.68,6.6-4.68t6.6,4.68a.53.53,0,0,0,.6.6H264.8q9,0,9,4.68t-9,4.8H244.28a.53.53,0,0,0-.6.6v3.12a.53.53,0,0,0,.6.6H261q9,0,9,9v16.2q0,9-9,9H244.28a.53.53,0,0,0-.6.6v3.36a.53.53,0,0,0,.6.6h22.2q9,0,9,5t-9,5h-22.2a.53.53,0,0,0-.6.6Q243.68,297.23,237.08,297.23Zm-18.84-42.36a.53.53,0,0,0,.6.6h11a.53.53,0,0,0,.6-.6v-3.48a.53.53,0,0,0-.6-.6h-11a.53.53,0,0,0-.6.6Zm0,12.72a.53.53,0,0,0,.6.6h11a.53.53,0,0,0,.6-.6V264a.53.53,0,0,0-.6-.6h-11a.53.53,0,0,0-.6.6Zm25.44-12.72a.53.53,0,0,0,.6.6H255.8a.53.53,0,0,0,.6-.6v-3.48a.53.53,0,0,0-.6-.6H244.28a.53.53,0,0,0-.6.6Zm0,12.72a.53.53,0,0,0,.6.6H255.8a.53.53,0,0,0,.6-.6V264a.53.53,0,0,0-.6-.6H244.28a.53.53,0,0,0-.6.6Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M307.88,304.43q-8.4,3.48-11.52-4.92T300.8,287l10.56-5.64a82.8,82.8,0,0,0,7.2-4.44,84.07,84.07,0,0,0,16.26-15.66,100.63,100.63,0,0,0,14.46-24.78q5.64-13.32,6.48-17.4,1.68-9.12,10.56-6.6l.6.24q8.88,2.52,5.52,11.16-1.44,3.72-3,7.92-9.12,25-21,39.84A121.82,121.82,0,0,1,328.76,291Q316,301.19,307.88,304.43Z"
|
||||
style="fill:#be1400" />
|
||||
<path
|
||||
d="M395.48,243.23q-7.08,0-7.08-9V223q0-9,9-9h35.28q.6,0,.36-.6l-.24-.72q-3.48-8.28,3.72-11.28t10.92,5l2.64,6a2.47,2.47,0,0,0,2.4,1.56h31.68q9,0,9,9v9q0,9-7.32,9t-7.44-9v-4.44a.53.53,0,0,0-.6-.6H403a.53.53,0,0,0-.6.6v6.72Q402.44,243.23,395.48,243.23Zm8.4,22.44q0-6.36,9-6.36H469.4q9,0,9,6.36t-9,6.36H448.52a.53.53,0,0,0-.6.6V295a.53.53,0,0,0,.6.6h35.16q9,0,9,6.48t-9,6.48H398.36q-9,0-9-6.48t9-6.48h33.72a.53.53,0,0,0,.6-.6V272.63a.53.53,0,0,0-.6-.6h-19.2Q403.88,272,403.88,265.67Zm10-10.56-9,4.32q-8.4,3.84-11-3.12t6.12-9.6A69.05,69.05,0,0,0,420,236q7.2-5.28,11.16-.12t-3,10.68A74.29,74.29,0,0,1,413.84,255.11Zm73.68.36q-4,6.24-11.52,1.32Q470.12,253,455.48,246q-8-3.84-5.4-9.6t10.8-2.16q20.64,9.24,22.56,10.44Q491.36,249.23,487.52,255.47Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M608,305.63q-4.56,7.56-12.24,2.64-9.48-6.12-27.48-15.36a2.38,2.38,0,0,0-2.76.36q-7.92,6.36-21.48,11.16a132.76,132.76,0,0,1-24.36,6.48q-8.88,1.56-10-6.12t7.92-8.64a77.48,77.48,0,0,0,33-11.4q.48-.36-.12-.6-16.32-7.8-22.44-10.2-8.76-3.48-4.08-11.64,1.92-3.48,8.76-19.44.24-.6-.36-.6H516.68q-9,0-9-7.68t9-7.68h20.88a1.88,1.88,0,0,0,1.92-1.44q4.8-12.6,6.24-18.12,2.28-8.64,9.72-6.84t5.28,10.56a157.66,157.66,0,0,1-4.92,15.24q-.24.6.36.6h49.32q9,0,9,7.68t-9,7.68H595.16a1.23,1.23,0,0,0-1.32,1.08Q588.92,266,578.6,280q-.36.48.24.72,19.32,9.24,25.8,13Q612.56,298.19,608,305.63ZM562.4,273a1.67,1.67,0,0,0,2-.48q8.52-10.08,13.32-29.64.12-.6-.48-.6H551.36a1.88,1.88,0,0,0-1.92,1.44q-3.36,8.76-8.16,19.32a.57.57,0,0,0,.36.84Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M662.36,311.75q-8.16.24-8-6.72t4.5-6.6q4.5.24,6.54.12,4.68-.24,5.58-.24a2.58,2.58,0,0,0,1.56-.48,1.94,1.94,0,0,0,.66-1.68v-14.4a.53.53,0,0,0-.6-.6H636.44q-9,0-9-6.6t9-6.6h36.12a.53.53,0,0,0,.6-.6q0-6.84,3.06-8a78.31,78.31,0,0,0,10-5.4q.48-.36-.12-.36h-28.2q-9,0-9-6.24T657.8,241l44-1.2q7.56-.12,10,4.2t-3.6,10q-4.56,4.08-18.84,11a2.47,2.47,0,0,0-1.56,2.4.53.53,0,0,0,.6.6h37q9,0,9,6.6t-9,6.6h-37a.53.53,0,0,0-.6.6v14.76q0,5.64-1.62,8.58a10.13,10.13,0,0,1-5.64,4.44,25.87,25.87,0,0,1-5.46,1.62q-4.68.36-9.36.48Zm-26.64-66.12q-6.72,0-6.72-9v-8.28q0-9,9-9h8.76q.6,0,.36-.48a58.61,58.61,0,0,0-4.86-7.74q-2.34-3.06,2.58-7.14t10.8,2.52a27.76,27.76,0,0,1,5,7.26q1.5,3.42-2.46,5.34-.6.24,0,.24h40.32a3.78,3.78,0,0,0,3.24-1.68q5.28-7.92,5.76-8.88,3.84-8.52,10.2-4.8t.84,11.28l-2.64,3.6q-.36.48.24.48H724q9,0,9,9v8.28q0,9-7,9t-7.08-9v-4.08a.53.53,0,0,0-.6-.6H643a.53.53,0,0,0-.6.6v4.08Q642.44,245.63,635.72,245.63Zm49.32-26q-7.2,2.52-10.44-5.88l-.72-1.92q-3-8,2.28-11t10.44,4a25.7,25.7,0,0,1,2.76,3.84Q692.12,217.07,685,219.59Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M755.36,312.11q-6.24,0-6.24-9V214q0-8.88,8.88-9.36l16.56-.84q6.72-.36,9.72,2.4t.6,10.08l-7.68,23.16a3.73,3.73,0,0,0,.72,3.6q7.44,9.72,7.44,23.16,0,11.76-1.8,13.2-3.6,2.64-4.74,3.54t-5.7,1.74a27.29,27.29,0,0,1-6.12.3q-3.36-.18-3.24-6.18t3.12-6h1.56a2.68,2.68,0,0,0,1.62-.48q.66-.48,1.68-1.26t1-6.42q0-11.64-3.72-16.2a12.89,12.89,0,0,1-2.28-12.72q.24-.72,4.32-17.28.12-.6-.48-.6h-8.4a.53.53,0,0,0-.6.6v84.72Q761.6,312.11,755.36,312.11Zm36.48-2q-8.64,3-10.68-3.36t6.48-9.12q2.88-.84,8.52-8.52,4.56-6.36,5.76-18.12a.53.53,0,0,0-.6-.6h-4.8q-9,0-9-6.36t9-6.36h50.4q9,0,9,6.36t-9,6.36h-9.24a.53.53,0,0,0-.6.6v24a8.4,8.4,0,0,0,.36,3.18q.36.66,1.56.66h4.32q1.44,0,1.92-2.52a32.69,32.69,0,0,0,.66-6.06q.06-3.18,5.94-2.94t5.28,9.36a20.44,20.44,0,0,1-3.18,9.72c-1.88,2.95-4.94,4.44-9.18,4.44h-8.28q-7.68,0-10.32-3.42t-2.64-12.54V271a.53.53,0,0,0-.6-.6h-6.48a.87.87,0,0,0-1,.84q-1.32,15.84-7.08,24.72Q801.32,306.83,791.84,310.07Zm56.64-72q-6.84,0-6.84-9v-1.8a.53.53,0,0,0-.6-.6H801a.53.53,0,0,0-.6.6v1.8q0,9-6.6,9t-6.6-9v-5.64q0-9,9-9H814.4q.6,0,.36-.6a56.73,56.73,0,0,0-2.82-7.26q-1.14-2.22,4.74-5.58t10.56,4.32a41.62,41.62,0,0,1,2.88,7.92,1.58,1.58,0,0,0,1.68,1.2h14.52q9,0,9,9v5.64Q855.32,238.07,848.48,238.07Zm-43,10.68q-9,0-9-6.24t9-6.12h31.32q9,0,9,6.12t-9,6.24Z"
|
||||
style="fill:#e4007f" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 6.2 KiB |
@@ -0,0 +1,25 @@
|
||||
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 512">
|
||||
<circle cx="726.68" cy="303.29" r="10.35" style="fill:#939" />
|
||||
<path
|
||||
d="M726.68,286.72a10.36,10.36,0,0,1-10.36-10.36V208.71a10.36,10.36,0,0,1,20.71,0v67.65A10.36,10.36,0,0,1,726.68,286.72Z"
|
||||
style="fill:#e4007f" />
|
||||
<circle cx="406.27" cy="208.71" r="10.35" style="fill:#939" />
|
||||
<path
|
||||
d="M406.27,225.28a10.36,10.36,0,0,0-10.35,10.36v67.65a10.36,10.36,0,0,0,20.71,0V235.64A10.36,10.36,0,0,0,406.27,225.28Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M588.8,313.64a10.35,10.35,0,0,1-10.35-10.35V208.71a10.36,10.36,0,0,1,20.71,0v94.58A10.35,10.35,0,0,1,588.8,313.64Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M545.69,313.64a10.35,10.35,0,0,1-10.35-10.35V208.71a10.36,10.36,0,0,1,20.71,0v94.58A10.35,10.35,0,0,1,545.69,313.64Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M371.66,313.64a11,11,0,0,1-1.89-.17H299.22a10.83,10.83,0,0,1-1.9.17A10.35,10.35,0,0,1,287,303.29V208.71a10.36,10.36,0,0,1,20.71,0v84h64.2a10.35,10.35,0,0,1,6.34,18.54l-.22.17A10.33,10.33,0,0,1,371.66,313.64Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M692.42,313.64a9.77,9.77,0,0,1-8.81-5.3l-26.07-50.75L632.68,308a9.77,9.77,0,0,1-17.53-8.64l33.45-67.82a9.78,9.78,0,0,1,8.66-5.45h0a9.75,9.75,0,0,1,8.77,5.3l34.94,68a9.77,9.77,0,0,1-4.22,13.15A9.65,9.65,0,0,1,692.42,313.64Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M479.5,271.5l30.84-13.07a33.49,33.49,0,1,0-33.61,46.46,34.28,34.28,0,0,0,15.73-2.5A39.3,39.3,0,0,0,509,290"
|
||||
style="fill:none;stroke:#e4007f;stroke-linecap:round;stroke-linejoin:round;stroke-width:18px" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,32 @@
|
||||
<svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 512">
|
||||
<path d="M302.78,228H248.72a9.32,9.32,0,1,1,0-18.63h54.06a9.32,9.32,0,1,1,0,18.63Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M261.06,312a9.32,9.32,0,1,1,0-18.63c14.71,0,25.82-5.82,33-17.31a56.11,56.11,0,0,0,7.27-19.3H237a9.32,9.32,0,0,1,0-18.63H311.6a9.31,9.31,0,0,1,9.31,9.31c0,10.11-2.9,25.54-11,38.52C302.42,297.84,287.9,312,261.06,312Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M359.2,307.3a9.32,9.32,0,0,1,0-18.63c11.45,0,45.07,0,48.57-53.07h-65a9.32,9.32,0,1,1,0-18.63h74.63a9.32,9.32,0,0,1,9.32,9.32C426.7,278.53,402.73,307.3,359.2,307.3Z"
|
||||
style="fill:#e4007f" />
|
||||
<path d="M519.64,228H465.57a9.32,9.32,0,0,1,0-18.63h54.07a9.32,9.32,0,0,1,0,18.63Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M477.91,312a9.32,9.32,0,0,1,0-18.63c14.72,0,25.83-5.82,33-17.31a56.11,56.11,0,0,0,7.27-19.3H453.82a9.32,9.32,0,1,1,0-18.63h74.63a9.31,9.31,0,0,1,9.32,9.31c0,10.11-2.9,25.54-11,38.52C519.27,297.84,504.76,312,477.91,312Z"
|
||||
style="fill:#e4007f" />
|
||||
<circle cx="414.44" cy="204.91" r="9.31" style="fill:#ff0073" />
|
||||
<circle cx="436.32" cy="201.31" r="9.31" style="fill:#ff0073" />
|
||||
<path
|
||||
d="M680.08,307.3a9.32,9.32,0,1,1,0-18.63c11.45,0,45.07,0,48.57-53.07h-65a9.32,9.32,0,0,1,0-18.63h74.64a9.31,9.31,0,0,1,9.31,9.32C747.57,278.53,723.6,307.3,680.08,307.3Z"
|
||||
style="fill:#e4007f" />
|
||||
<circle cx="735.32" cy="204.91" r="9.31" style="fill:#ff0073" />
|
||||
<circle cx="757.2" cy="201.31" r="9.31" style="fill:#ff0073" />
|
||||
<circle cx="787.04" cy="298.48" r="9.31" style="fill:#ff0073" />
|
||||
<path
|
||||
d="M557.25,271.45a9.32,9.32,0,0,1,0-18.63c10.23,0,26-5.85,41.06-15.26,14.55-9.08,26-19.94,29-27.66a9.32,9.32,0,1,1,17.3,6.92C634.85,241.32,586.66,271.45,557.25,271.45Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M606,312a9.32,9.32,0,0,1-9.32-9.31v-57.6a9.32,9.32,0,0,1,18.63,0v57.6A9.31,9.31,0,0,1,606,312Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M787,285.55a9.31,9.31,0,0,1-9.32-9.31V218.65a9.32,9.32,0,1,1,18.63,0v57.59A9.31,9.31,0,0,1,787,285.55Z"
|
||||
style="fill:#e4007f" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
@@ -0,0 +1,58 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 512">
|
||||
<path
|
||||
d="M690.21,371.43a9.6,9.6,0,0,1-8.59-5.31L656.54,316l-25,49.29a9.6,9.6,0,1,1-17.13-8.68L648,290.26A9.61,9.61,0,0,1,656.6,285h0a9.59,9.59,0,0,1,8.56,5.31l33.62,67.22a9.62,9.62,0,0,1-8.59,13.9Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M775.51,371.43a8.81,8.81,0,0,1-1.54-.13H724.21a8.73,8.73,0,0,1-1.54.13,9.6,9.6,0,0,1-9.6-9.61V294.6a9.6,9.6,0,0,1,19.2,0v57.5h43.39a9.6,9.6,0,0,1,5.88,17.19l-.15.12A9.57,9.57,0,0,1,775.51,371.43Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M914.51,257.81a9.89,9.89,0,0,1-1.54-.12H863.21a9.8,9.8,0,0,1-1.54.12,9.6,9.6,0,0,1-9.6-9.6V181a9.6,9.6,0,0,1,19.2,0v57.5h43.39a9.6,9.6,0,0,1,5.88,17.19l-.15.13A9.62,9.62,0,0,1,914.51,257.81Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M606.51,257.81a9.89,9.89,0,0,1-1.54-.12H555.21a9.8,9.8,0,0,1-1.54.12,9.6,9.6,0,0,1-9.6-9.6V181a9.6,9.6,0,0,1,19.2,0v57.5h43.39a9.6,9.6,0,0,1,5.88,17.19l-.15.13A9.62,9.62,0,0,1,606.51,257.81Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M590.76,369.6a9.6,9.6,0,0,1-9.61-9.6V294.6a9.61,9.61,0,0,1,19.21,0V360A9.6,9.6,0,0,1,590.76,369.6Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M147.36,257.81c-12.75,0-25.77-4-35.34-11.62a10.21,10.21,0,0,1-1.77-14,9.37,9.37,0,0,1,13.46-1.85c10.19,8.12,27.77,10,39.18,4.12,7.9-4.05,7.9-9.38,7.9-11.13,0-5.38-11.74-9.44-22.11-13-16.48-5.68-37-12.76-38.44-33.87-1-14.8,6.48-27.49,20.06-34,17.65-8.4,40.33-4.32,53.93,9.7a10.22,10.22,0,0,1,.05,14.09,9.35,9.35,0,0,1-13.58,0c-8.78-9-23.37-10-32.39-5.72-6.36,3-9.36,7.88-8.91,14.42.5,7.25,10.82,11.36,25.34,16.38C170.45,196.85,190,203.6,190,223.36c0,12.38-6.78,22.95-18.61,29A53.09,53.09,0,0,1,147.36,257.81Z"
|
||||
style="fill:#f15a24" />
|
||||
<path
|
||||
d="M529.22,371.41c-9.58,0-19.35-2.9-26.53-8.4a9.6,9.6,0,0,1,11.68-15.25c6.89,5.29,18.18,5.55,24.4,2.48,3.93-1.93,3.93-4.11,3.93-4.92v0c-1.28-2-9.22-4.6-13.51-6-11.7-3.89-27.72-9.22-28.87-25.38-.8-11.22,5.07-20.84,15.71-25.72,13.41-6.15,30.64-3.16,41,7.11a9.61,9.61,0,1,1-13.54,13.63c-5.26-5.23-14-5.78-19.44-3.29-4.9,2.25-4.65,5.63-4.56,6.9.24,3.35,9.22,6.34,15.77,8.52,11.25,3.74,26.66,8.87,26.66,24.27,0,9.49-5.34,17.56-14.64,22.15A41.12,41.12,0,0,1,529.22,371.41Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M445.45,371a36,36,0,0,1-36-36V294.5a9.5,9.5,0,0,1,19,0V335a17,17,0,0,0,34,0V294.5a9.5,9.5,0,0,1,19,0V335A36,36,0,0,1,445.45,371Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M712,257.81H692.5a9.5,9.5,0,0,1-9.5-9.5v-67a9.5,9.5,0,0,1,9.5-9.5H712a43,43,0,0,1,0,86Zm-10-19h10a24,24,0,0,0,0-48H702Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M383.5,405a9.5,9.5,0,0,1-9.5-9.5v-82l-35.29,26.55a9.48,9.48,0,0,1-11.42,0L292,313.54v82a9.5,9.5,0,0,1-19,0v-101a9.5,9.5,0,0,1,15.21-7.59L333,320.61l44.79-33.7A9.5,9.5,0,0,1,393,294.5v101A9.5,9.5,0,0,1,383.5,405Z"
|
||||
style="fill:#f15a24" />
|
||||
<path
|
||||
d="M655.5,257.81a9.5,9.5,0,0,1-9.5-9.5v-101a9.5,9.5,0,1,1,19,0v101A9.5,9.5,0,0,1,655.5,257.81Z"
|
||||
style="fill:#f15a24" />
|
||||
<path
|
||||
d="M291.25,257.65a9.5,9.5,0,0,1-9.5-9.5v-67a9.5,9.5,0,1,1,19,0v67A9.5,9.5,0,0,1,291.25,257.65Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M344.25,257.65a9.5,9.5,0,0,1-9.5-9.5v-67a9.5,9.5,0,1,1,19,0v67A9.5,9.5,0,0,1,344.25,257.65Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M404,257.81a36,36,0,0,1-36-36v-14a36,36,0,1,1,72,0v14A36,36,0,0,1,404,257.81Zm0-67a17,17,0,0,0-17,17v14a17,17,0,0,0,34,0v-14A17,17,0,0,0,404,190.81Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M488,257.81a36,36,0,0,1-36-36v-14a36,36,0,1,1,72,0v14A36,36,0,0,1,488,257.81Zm0-67a17,17,0,0,0-17,17v14a17,17,0,0,0,34,0v-14A17,17,0,0,0,488,190.81Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M801,257.81a36,36,0,0,1-36-36v-14a36,36,0,1,1,72,0v14A36,36,0,0,1,801,257.81Zm0-67a17,17,0,0,0-17,17v14a17,17,0,0,0,34,0v-14A17,17,0,0,0,801,190.81Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M237.51,257.81c-21.23,0-38.51-16.15-38.51-36v-14c0-19.85,17.28-36,38.51-36a39.81,39.81,0,0,1,26.64,10A9.5,9.5,0,1,1,251.48,196a20.84,20.84,0,0,0-14-5.15c-10.76,0-19.51,7.63-19.51,17v14c0,9.37,8.75,17,19.51,17a20.93,20.93,0,0,0,14.42-5.57A9.5,9.5,0,1,1,265.07,247,39.59,39.59,0,0,1,237.51,257.81Z"
|
||||
style="fill:#e4007f" />
|
||||
<circle cx="317.5" cy="224.5" r="9.5" style="fill:#f15a24" />
|
||||
<circle cx="732.5" cy="317.5" r="9.5" style="fill:#f15a24" />
|
||||
<circle cx="646.5" cy="165.5" r="9.5" style="fill:#e4007f" />
|
||||
<circle cx="119.5" cy="150.5" r="9.5" style="fill:#e4007f" />
|
||||
<circle cx="273.5" cy="366.5" r="9.5" style="fill:#e4007f" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
@@ -0,0 +1,68 @@
|
||||
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 512">
|
||||
<path
|
||||
d="M158.59,233.92q-9,0-9-4.44,0-.6-.6-.36-4.92,1.56-5.76-3.36a.54.54,0,0,0-.72-.48L108.43,231q-8.88,1.56-10-5.4t7.92-8L118.27,216a1,1,0,0,0,1-1.08V195.88a.53.53,0,0,0-.6-.6h-5.52a.53.53,0,0,0-.6.6q0,4.08-5.64,4.08t-5.76-9v-32.4q0-9,9-9h8.64a.53.53,0,0,0,.6-.6V137.44q0-9,6.36-9t6.36,9V149a.53.53,0,0,0,.6.6h8q9,0,9,9v27.72q0,9-9,9h-8.16a.53.53,0,0,0-.6.6V213.4q0,.6.6.48l7-.84a.54.54,0,0,0,.48-.72l-.24-.6q-2.64-8.52,2.76-10.32t8.4,6.6q.48,1.32,2.88,11a1.34,1.34,0,0,0,1.44,1.2h16.32a.53.53,0,0,0,.6-.6v-67.2a.53.53,0,0,0-.6-.6H161q-9,0-9-6.84t9-6.84h36.84q9,0,9,6.84t-9,6.84h-10a.53.53,0,0,0-.6.6v67.2a.53.53,0,0,0,.6.6h12.36q9,0,9,6.84t-9,6.84ZM112.51,183a.53.53,0,0,0,.6.6H120a.53.53,0,0,0,.6-.6V161.8a.53.53,0,0,0-.6-.6h-6.84a.53.53,0,0,0-.6.6Zm18.24,0a.53.53,0,0,0,.6.6H138a.53.53,0,0,0,.6-.6V161.8a.53.53,0,0,0-.6-.6h-6.6a.53.53,0,0,0-.6.6Z"
|
||||
style="fill:#f7931e" />
|
||||
<path
|
||||
d="M228.31,218.2q-6.6,0-6.6-9V148.84q0-9,9-9h18.6q9,0,9,9v50.52q0,9-9,9H235.39a.53.53,0,0,0-.6.6Q234.79,218.2,228.31,218.2Zm6.48-23.64a.53.53,0,0,0,.6.6h8.88a.53.53,0,0,0,.6-.6v-41a.53.53,0,0,0-.6-.6h-8.88a.53.53,0,0,0-.6.6Zm91.08,39.6q-3,7-11.16,3-11.28-5.4-20.52-25.92-.24-.6-.48-.12a54.54,54.54,0,0,1-28.32,26.16q-8.4,3.48-10.92-3t6-9.48q18.6-7,23.4-28.68.12-.6-.48-.6h-14q-9,0-9-6.84t9-6.72h15.24a.53.53,0,0,0,.6-.6V167a.53.53,0,0,0-.6-.6h-13.8q-9,0-9-6.72t9-6.72h47q9,0,9,6.72t-9,6.72h-17.4a.53.53,0,0,0-.6.6v14.4a.53.53,0,0,0,.6.6h19.2q9,0,9,6.72t-9,6.84h-17.4q-.6,0-.36.6,8.4,24,18.48,27.84Q328.87,227.2,325.87,234.16ZM280,152.32q-6.6,1.92-9.36-6.6a12.27,12.27,0,0,0-1.32-3.12q-5-7.44.36-11.16t10.56,3.6q3.48,4.92,4,6.6Q286.75,150.28,280,152.32Zm35.64-4.44q-5,7.32-10.2,4t-.6-10.92a17.66,17.66,0,0,0,1.68-4q2.88-8.88,10-5.64T319,142.48A61.69,61.69,0,0,1,315.67,147.88Z"
|
||||
style="fill:#f7931e" />
|
||||
<path
|
||||
d="M375.19,239.44q-8.16.24-8-6.72t4.5-6.6q4.5.24,6.54.12,4.68-.24,5.58-.24a2.58,2.58,0,0,0,1.56-.48,1.94,1.94,0,0,0,.66-1.68v-14.4a.53.53,0,0,0-.6-.6H349.27q-9,0-9-6.6t9-6.6h36.12a.53.53,0,0,0,.6-.6q0-6.84,3.06-8a78.31,78.31,0,0,0,10-5.4q.48-.36-.12-.36h-28.2q-9,0-9-6.24t8.88-6.36l44-1.2q7.56-.12,10,4.2t-3.6,10q-4.56,4.08-18.84,11a2.47,2.47,0,0,0-1.56,2.4.53.53,0,0,0,.6.6h37q9,0,9,6.6t-9,6.6h-37a.53.53,0,0,0-.6.6V224.2q0,5.64-1.62,8.58a10.13,10.13,0,0,1-5.64,4.44,25.87,25.87,0,0,1-5.46,1.62q-4.68.36-9.36.48Zm-26.64-66.12q-6.72,0-6.72-9V156q0-9,9-9h8.76q.6,0,.36-.48a58.61,58.61,0,0,0-4.86-7.74q-2.34-3.06,2.58-7.14t10.8,2.52a27.76,27.76,0,0,1,5,7.26q1.5,3.42-2.46,5.34-.6.24,0,.24h40.32a3.78,3.78,0,0,0,3.24-1.68q5.28-7.92,5.76-8.88,3.84-8.52,10.2-4.8t.84,11.28l-2.64,3.6q-.36.48.24.48h7.92q9,0,9,9v8.28q0,9-7,9t-7.08-9v-4.08a.53.53,0,0,0-.6-.6H355.87a.53.53,0,0,0-.6.6v4.08Q355.27,173.32,348.55,173.32Zm49.32-26q-7.2,2.52-10.44-5.88l-.72-1.92q-3-8,2.28-11t10.44,4a25.7,25.7,0,0,1,2.76,3.84Q404.95,144.76,397.87,147.28Z"
|
||||
style="fill:#f7931e" />
|
||||
<path
|
||||
d="M469.63,240q-7.08,0-7.08-9v-88.8q0-9,9-9h84.36q9,0,9,9V231q0,9-7.44,9T550,235.72a.53.53,0,0,0-.6-.6H477.31a.53.53,0,0,0-.6.6Q476.71,240,469.63,240Zm7.08-18.84a.53.53,0,0,0,.6.6h72.12a.53.53,0,0,0,.6-.6v-74a.53.53,0,0,0-.6-.6H477.31a.53.53,0,0,0-.6.6Zm14.64-3.48q-8.52,3.24-10.56-2.64t1.8-7.14q4-1.38,8-7.26,3.48-5.16,4.44-14.52a.53.53,0,0,0-.6-.6H489q-9,0-9-5.88t9-5.76h48.48q9,0,9,5.76t-9,5.88h-8.64a.53.53,0,0,0-.6.6v16.68a8.23,8.23,0,0,0,.3,2.88q.3.6,1.62.6h4.56q1.44,0,1.92-2a20.82,20.82,0,0,0,.54-4.38q.06-2.4,5.46-2t4.8,9.24a13.66,13.66,0,0,1-2.88,6.66q-2.64,3.66-8.4,3.66H528q-7.32,0-9.72-3.06T515.83,203v-16.8a.53.53,0,0,0-.6-.6h-6.6a.87.87,0,0,0-1,.84q-1.08,13-5.64,20.52Q496.63,215.68,491.35,217.72Zm3.72-52.2q-9,0-9-5.64t9-5.52h37q9,0,9,5.52t-9,5.64Z"
|
||||
style="fill:#f7931e" />
|
||||
<path
|
||||
d="M135.19,383.44q-8.16.24-8-6.72t4.5-6.6q4.5.24,6.54.12,4.68-.24,5.58-.24a2.58,2.58,0,0,0,1.56-.48,1.94,1.94,0,0,0,.66-1.68v-14.4a.53.53,0,0,0-.6-.6H109.27q-9,0-9-6.6t9-6.6h36.12a.53.53,0,0,0,.6-.6q0-6.84,3.06-8a78.31,78.31,0,0,0,10-5.4q.48-.36-.12-.36h-28.2q-9,0-9-6.24t8.88-6.36l44-1.2q7.56-.12,10,4.2t-3.6,10q-4.56,4.08-18.84,11a2.47,2.47,0,0,0-1.56,2.4.53.53,0,0,0,.6.6h37q9,0,9,6.6t-9,6.6h-37a.53.53,0,0,0-.6.6V368.2q0,5.64-1.62,8.58a10.13,10.13,0,0,1-5.64,4.44,25.87,25.87,0,0,1-5.46,1.62q-4.68.36-9.36.48Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M108.55,317.32q-6.72,0-6.72-9V300q0-9,9-9h8.76q.6,0,.36-.48a58.61,58.61,0,0,0-4.86-7.74q-2.34-3.06,2.58-7.14t10.8,2.52a27.76,27.76,0,0,1,5,7.26c1,2.28.18,4.07-2.46,5.34q-.6.24,0,.24h40.32a3.78,3.78,0,0,0,3.24-1.68q5.28-7.92,5.76-8.88,3.84-8.52,10.2-4.8t.84,11.28l-2.64,3.6q-.36.48.24.48h7.92q9,0,9,9v8.28q0,9-7,9t-7.08-9v-4.08a.53.53,0,0,0-.6-.6H115.87a.53.53,0,0,0-.6.6v4.08Q115.27,317.32,108.55,317.32Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M157.87,291.28q-7.2,2.52-10.44-5.88l-.72-1.92q-3-8,2.28-11t10.44,4a25.7,25.7,0,0,1,2.76,3.84Q165,288.76,157.87,291.28Z"
|
||||
style="fill:#f7931e" />
|
||||
<path
|
||||
d="M229.63,384q-7.08,0-7.08-9v-88.8q0-9,9-9h84.36q9,0,9,9V375q0,9-7.44,9T310,379.72a.53.53,0,0,0-.6-.6H237.31a.53.53,0,0,0-.6.6Q236.71,384,229.63,384Zm7.08-18.84a.53.53,0,0,0,.6.6h72.12a.53.53,0,0,0,.6-.6v-74a.53.53,0,0,0-.6-.6H237.31a.53.53,0,0,0-.6.6Zm18.36-55.68q-9,0-9-5.64t9-5.52h37q9,0,9,5.52t-9,5.64Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M357.55,384q-6.84,0-6.84-9V324.4q0-.6-.36-.12-4.68,5.52-10.44.24t.6-11.76q3.48-3.48,10.68-15.54t8.64-16.38q2.88-8.52,9.6-6.12t3.36,10.8A126.61,126.61,0,0,1,366,299.68a12.66,12.66,0,0,0-1.56,6.12V375Q364.39,384,357.55,384Z"
|
||||
style="fill:#f7931e" />
|
||||
<path
|
||||
d="M429.67,384.4q-9-.12-8.88-6t9-5.64h3.12q1.2,0,1.2-1.92V343.12a.53.53,0,0,0-.6-.6h-16.8a.53.53,0,0,0-.6.6v10.32q0,.6.6.48l4.8-.48q.6-.12.36-.72-2.28-5,1.56-7t5.82,1.8a71.83,71.83,0,0,1,4.14,10q2.88,8.64-1.68,10t-5.88-3.12q-.12-.6-1-.48l-26.28,3.72q-9,1.32-9.72-4.8t8.28-6.84l5.64-.48a.87.87,0,0,0,.84-1v-11.4a.53.53,0,0,0-.6-.6H386.35a.53.53,0,0,0-.6.6v32q0,9-6.72,9t-6.72-9V339.64q0-9,9-9H403a.53.53,0,0,0,.6-.6v-5.88a.53.53,0,0,0-.6-.6H387.19q-9,0-9-9V286.24q0-9,9-9h46.56q9,0,9,9v28.32q0,9-9,9h-17a.53.53,0,0,0-.6.6V330a.53.53,0,0,0,.6.6h21.6q9,0,9,9V371a18,18,0,0,1-1.2,7.38,8.35,8.35,0,0,1-4.44,4A29,29,0,0,1,429.67,384.4Zm-38.28-89.52a.53.53,0,0,0,.6.6h11a.53.53,0,0,0,.6-.6v-6.36a.53.53,0,0,0-.6-.6H392a.53.53,0,0,0-.6.6Zm0,17.4a.53.53,0,0,0,.6.6h11a.53.53,0,0,0,.6-.6v-6.36a.53.53,0,0,0-.6-.6H392a.53.53,0,0,0-.6.6Zm24.72-17.4a.53.53,0,0,0,.6.6h11.64a.53.53,0,0,0,.6-.6v-6.36a.53.53,0,0,0-.6-.6H416.71a.53.53,0,0,0-.6.6Zm0,17.4a.53.53,0,0,0,.6.6h11.64a.53.53,0,0,0,.6-.6v-6.36a.53.53,0,0,0-.6-.6H416.71a.53.53,0,0,0-.6.6Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M484.51,301.24s7.12-14.12,7.68-15.72q2.88-8.52-3.72-10.8T479,281q-1.44,4.2-8.4,16.2t-10.44,15.6q-6.24,6.72-.36,11.76t10.2-.12q.36-.48.36.12v50.4q0,9,6.84,9t6.84-9l.12-72.48A4.34,4.34,0,0,1,484.51,301.24Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M562.27,361.36q-2.64-1.56-7.8-17.52a1,1,0,0,1,.6-1.44l.48-.24q8-4.44,4.8-9.72t-10.8.12q-1.44,1.08-13,7.32a.47.47,0,0,1-.72-.24,38.25,38.25,0,0,0-9.24-11.88.53.53,0,0,1-.12-.84,5.17,5.17,0,0,1,4-1.68h23q9,0,9-9V306.4q0-9-9-9H541.39q-.6,0-.24-.48l3.48-4.68c3.2-4.4-23.76-11.64-23.76-11.64-.39,0-24.36,27.94-24.36,28.32v7.32q0,9,9,9h5.28q.6,0,0,.24l-13.08,6.24q-7.8,3.6-6.36,8.52c1,3.29,4.32,4.08,10.08,2.4a54.14,54.14,0,0,0,15.84-7.92.9.9,0,0,1,1.32.24l1.56,1.68a.53.53,0,0,1-.12.84A53.67,53.67,0,0,1,510,344q-4,1.8-8,3.36l-2.4,1.08q-8.28,3.24-6.6,8.28t10.2,1.8q9.36-3.48,21.72-13.32.48-.36.72.24l.72,2a2.13,2.13,0,0,1-.48,2.52q-5.64,5-28.08,15-7.92,3.48-6.12,9.24t10.32,2.64q10.8-3.72,26.4-15.84.48-.36.48.24,0,6.12-1.08,7.38a16.39,16.39,0,0,0-1.8,2.52,2.6,2.6,0,0,1-2.46,1.26h-2.34q-4.8-.36-5.4,5.52t2.34,6.18a29,29,0,0,0,4.74.18q1.92-.12,6.36-.24a6,6,0,0,0,4.56-1.8q2.76-3.36,5.76-6.48.6-.72,1.62-9.12A43.61,43.61,0,0,0,540,350.08a.91.91,0,0,1,.6-1.2l2.64-1.08q.6-.24.72.36,5.88,20.05,11.16,24,7.44,5.4,11.28-.36T562.27,361.36Zm-27.84-46.92a37.21,37.21,0,0,0,1.44-5.88,1,1,0,0,1,1.08-1h11.88a.53.53,0,0,1,.6.6v6.24a.53.53,0,0,1-.6.6h-14Q534.19,315,534.43,314.44Zm-10.08-6.24a15.48,15.48,0,0,1-2,5.16,3.49,3.49,0,0,1-3.12,1.68h-9.6a.53.53,0,0,1-.6-.6V308.2a.53.53,0,0,1,.6-.6h14.28Q524.47,307.6,524.35,308.2Zm-.72-10.8H508.39q-.6,0-.24-.48l3.48-4.08a4.55,4.55,0,0,1,3.72-1.8h14.88q.6,0,.24.48l-3.24,4.08A4.23,4.23,0,0,1,523.63,297.4Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M662.35,384q-7.32.36-7.32-6.72t3.66-6.84q3.54.24,4.38.24,4.56-.36,6-.42t1.44-2.7V291.88a.53.53,0,0,0-.6-.6h-72.6a.53.53,0,0,0-.6.6v83.28q0,9-7,9t-7-9V286.72q0-9,9-9h83.76q9,0,9,9v81a22.73,22.73,0,0,1-1.38,8.82,10,10,0,0,1-4.68,4.92,22.47,22.47,0,0,1-4,1.86q-4.68.48-9.36.6Z"
|
||||
style="fill:#e4007f" />
|
||||
<path d="M612.55,311.68c-6,0-9-2-9-6s3-6,9-6h41.88q9,0,9,6c0,4-3,6-9,6Z" style="fill:#f7931e" />
|
||||
<path
|
||||
d="M615.79,368.92q-6.6,0-6.6-9v-30q0-9,9-9H649q9,0,9,9V352q0,9-9,9H623a.53.53,0,0,0-.6.6Q622.39,368.92,615.79,368.92Zm6.6-20.28a.53.53,0,0,0,.6.6h21.24a.53.53,0,0,0,.6-.6V333.28a.53.53,0,0,0-.6-.6H623a.53.53,0,0,0-.6.6Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M800.59,321.4h-14.4a.53.53,0,0,1-.6-.6v-5.88c0-.1,0-1.69,0-1.8l-14.73,1.5a16.3,16.3,0,0,0-.18,2.34v3.84a.53.53,0,0,1-.6.6H754.39q-9,0-9,6.72t9,6.84h15.72a.53.53,0,0,1,.6.6v32.88a2.36,2.36,0,0,1-.54,1.8,3.29,3.29,0,0,1-2.1.48h-3.48q-9-.12-9.12,6.6t9,7q8.64.12,10.32-.6,4.2-1.8,6.06-2.64a7.51,7.51,0,0,0,3.3-3.78q1.44-2.94,1.44-8.58V335.56a.53.53,0,0,1,.6-.6h14.4q9,0,9-6.84T800.59,321.4Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M736.27,350a1.54,1.54,0,0,1-.36-2A126.36,126.36,0,0,0,746.35,306q.72-8.64-3.6-9.6a41.42,41.42,0,0,0-9.6-.84l-10,.24q-.6,0-.48-.6L724.63,283q1.44-9-5.52-10t-8,8.16c-.16,1.84-.88,6.41-2.16,13.68-.08.65-.48,1-1.2,1h-1q-9,0-9,6.48t7.92,6.6q.6,0,.48.6-3.24,15.84-4.68,20.16-2.4,7.68,4.08,12.48,1.8,1.32,11.4,9.84a1,1,0,0,1,.24,1.44Q709,366,705.07,368.08q-8,4.08-4.68,10.2T711.55,380q7.32-4.32,16.2-17.16.36-.48.84,0a98.7,98.7,0,0,1,8,8.58q1.2,1.74,7.2-2.58t.48-11.64Q744,356.8,736.27,350Zm-4.2-40.44a108.08,108.08,0,0,1-7.56,29.64q-.24.6-.72.24l-8-6.24a2.32,2.32,0,0,1-.84-2.52q2.88-10.32,4.8-20.64a1.23,1.23,0,0,1,1.32-1.08h10.56Q732.19,308.92,732.07,309.52Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M833.71,319.48q-8.16,4.2-11.16-3T828,306q6.48-2.52,21.6-12.84t19-15.48q5.4-7.32,10.92-3t3,7.56a.66.66,0,0,0,.12,1,131.69,131.69,0,0,0,21.36,14.28q13.56,7.44,15,7.92,8.76,2.76,6.12,9.84t-10.92,3.84a69,69,0,0,1-9.66-5.16q-6.06-3.72-14.16-9a116.13,116.13,0,0,1-16-12.72.6.6,0,0,0-1,0,141.86,141.86,0,0,1-19.08,15.6q-.48.36.12.36h38.4q9,0,9,6.48t-9,6.6h-38q-9,0-9-7.32,0-.6-.48-.36Zm84.6,60.6q-6.48,3.6-7.38,1.86a46.76,46.76,0,0,0-3.54-5.34,3.58,3.58,0,0,0-3.24-1.44l-52.2,4q-4.32.36-8.52,1.08l-1.8.24q-8.52,1.44-10.68-5.76t4.8-11.76q1.8-1.2,5.28-3.84,2.4-1.8,12-13.44.36-.48-.24-.48H833.35q-9,0-9-7t9-6.84h81.24q9,0,9,6.84t-9,7H875.47a4.55,4.55,0,0,0-3.72,1.8,157.14,157.14,0,0,1-16.92,17.64q-.48.36.12.36l40.56-2.4q.6,0,.24-.48l-2.4-2.4q-6.12-6.36-1.68-11t11.16,1.08a141.23,141.23,0,0,1,10.56,11.34q7.44,8.58,9.48,12T918.31,380.08Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M287.79,329.12V347a8.15,8.15,0,0,0,.3,2.88c.2.41.74.61,1.62.61h4.56c1,0,1.6-.67,1.92-2a20.74,20.74,0,0,0,.54-4.38c0-1.59,1.86-2.28,5.46-2s5.28,3.24,4.8,9.24a13.68,13.68,0,0,1-2.88,6.67q-2.64,3.66-8.4,3.65h-8.16q-7.32,0-9.72-3.06c-1.6-2-2.4-5.85-2.4-11.46v-18Z"
|
||||
style="fill:#f7931e" />
|
||||
<path
|
||||
d="M251,361.92q-8.52,3.24-10.56-2.64c-1.44-3.84-.84-6.21,1.8-7.14s5.32-3.33,8-7.26q3.48-5.14,4.44-14.52a.53.53,0,0,0-.6-.6h-5.52c-6,0-9-1.95-9-5.88s3-5.76,9-5.76H297q9,0,9,5.76c0,3.93-3,5.88-9,5.88h-28.8a.88.88,0,0,0-1,.85q-1.08,12.94-5.64,20.51Q256.23,359.88,251,361.92Z"
|
||||
style="fill:#e4007f" />
|
||||
<path d="M514.05,278.62c.5.5-12,21-23,26"
|
||||
style="fill:none;stroke:#f7931e;stroke-linecap:round;stroke-miterlimit:10;stroke-width:12px" />
|
||||
<path d="M528.05,302.62c7.5-6.5,14-17,13.5-17.5s-30,.74-30,.74"
|
||||
style="fill:none;stroke:#f7931e;stroke-linecap:round;stroke-miterlimit:10;stroke-width:12px" />
|
||||
<path d="M755.55,285.12h44c0,6.16-20.8,28-23.5,29.5"
|
||||
style="fill:none;stroke:#f7931e;stroke-linecap:round;stroke-linejoin:round;stroke-width:13px" />
|
||||
<path d="M854.11,321.32c-6,0-9-2.19-9-6.6s3-6.6,9-6.6H896q9,0,9,6.6c0,4.41-3,6.6-9,6.6Z"
|
||||
style="fill:#f7931e" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,12 @@
|
||||
<svg id="Layer_3" data-name="Layer 3" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 512">
|
||||
<path
|
||||
d="M432,336a11.14,11.14,0,0,1-11.14-11.14V217.21a11.14,11.14,0,1,1,22.28,0V324.86A11.14,11.14,0,0,1,432,336Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M458,308.16A37.18,37.18,0,0,1,420.86,271a11.14,11.14,0,0,1,22.28,0,14.85,14.85,0,1,0,29.7,0V217.21a11.14,11.14,0,1,1,22.27,0v54.2c0,.15,0,.3,0,.45A37.17,37.17,0,0,1,458,308.16Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M564.59,308.13c-11.31,0-22.86-3.42-31.34-9.92a11.14,11.14,0,0,1,13.55-17.68c8.26,6.34,21.8,6.65,29.25,3,4.81-2.37,4.81-5.07,4.81-6.08v-.11c-1.35-2.37-11-5.59-16.22-7.32-13.82-4.59-32.74-10.89-34.1-29.89-.94-13.22,6-24.54,18.5-30.28,15.82-7.26,36.16-3.73,48.37,8.39A11.13,11.13,0,1,1,581.72,234c-6.33-6.28-16.86-6.94-23.39-3.95-6,2.74-5.68,6.89-5.57,8.45.3,4.16,10.62,7.59,18.91,10.35,13.28,4.41,31.47,10.46,31.47,28.56,0,11.16-6.28,20.66-17.23,26.06A48.6,48.6,0,0,1,564.59,308.13Z"
|
||||
style="fill:#e4007f" />
|
||||
<circle cx="516.45" cy="187.14" r="11.14" style="fill:#f7931e" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,19 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 512">
|
||||
<g id="Layer_4">
|
||||
<path
|
||||
d="M245.14,311.41q-7.63,1.48-8-.47a107.26,107.26,0,0,0-3.29-10.52,1.29,1.29,0,0,0-1.47-.94L203.06,305a80.6,80.6,0,0,0-9.25,2.15q-6,1.61-8.85-5.9t1.88-10.86a45.58,45.58,0,0,0,3.35-3.62l3.88-4.56q7.38-8.56,18.1-27.61c.18-.35,0-.49-.4-.4l-15.42,2.14q-9.24,1.35-12.19-6.16t3.21-13.67a72,72,0,0,0,5.5-6.3q.4-.54,6.16-11.8,6.84-13.27,7.38-15,3.34-9.65,11.39-6.57t4,12.47q-5,11.52-18.23,30.56c-.27.36-.18.53.27.53l14.34-.93a3.45,3.45,0,0,0,3.08-2,69.36,69.36,0,0,0,3.56-7.84c.75-2.09,3.82-2,9.18.34s6.39,6.52,3.35,12.6Q227.32,263,208,288c-.26.36-.18.49.27.4l19.17-2.82c.45-.08.58-.35.4-.8L226,280.59q-3.9-9.12,2.41-12.07t11,5.77q9.38,18.36,11,25.73Q252.65,310,245.14,311.41Zm20.91,3.76q-10.05-.54-9.51-8.31c.35-5.1,1.34-7.58,2.95-7.44s5.89.2,12.86.2c2.33,0,3.8-.4,4.43-1.21s1.4-1.76,2.34-2.88,1.9-7.44,2.88-19q1.35-16.21,2.28-54.82a.59.59,0,0,0-.67-.67H249q-10,0-10.05-7.64T249,205.79h41.42q10.05,0,9.78,10.05-.93,47.6-2.41,65.28-1.74,20.38-2.55,21.45c-2,2.68-3.37,4.64-4.22,5.9a8.66,8.66,0,0,1-2.81,2.74q-1.55.87-2.88,1.68a20.2,20.2,0,0,1-5.63,1.61A62.41,62.41,0,0,1,266.05,315.17Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M338.3,316.91q-8.31,0-8.31-10.05V211.42q0-10,10.05-10h73q10.07,0,10.06,10v95.17q0,10.05-8.58,10.05T406,308.87a.59.59,0,0,0-.67-.67H347.15a.59.59,0,0,0-.67.67Q346.48,316.91,338.3,316.91Zm8.18-71.31a.59.59,0,0,0,.67.67h58.17a.59.59,0,0,0,.67-.67V218.12a.59.59,0,0,0-.67-.67H347.15a.59.59,0,0,0-.67.67Zm0,45.84a.59.59,0,0,0,.67.67h58.17a.59.59,0,0,0,.67-.67V262.76a.59.59,0,0,0-.67-.67H347.15a.59.59,0,0,0-.67.67Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M615.29,228.85q3.88-9.39,11.39-6.17T630.17,235a80.11,80.11,0,0,1-5.5,9.38,11.13,11.13,0,0,0-1.88,6.3v57.78q0,10-7.77,10t-7.91-10V268.92c0-.44-.13-.49-.4-.13l-2.15,2q-7.09,7.38-12.73,1.07t2.28-12.73q1.33-1.06,10.12-12.87T615.29,228.85Zm-14.48-7.38q-10,0-10-7.5t10-7.37h42c.44,0,.58-.18.4-.54q-3.9-7.91,3-11.53t11.66,5.23l2.81,5.09a3.12,3.12,0,0,0,2.95,1.75h36.33q10.05,0,10,7.37t-10,7.5ZM653,228.85q3.62-9.53,11.13-6.3,7.5,3.07,4.29,10c-.18.45,0,.67.4.67l22.52-.4A26.48,26.48,0,0,1,702.81,235q5.1,2.42,2.69,11.53-5.64,22.11-24.13,42.22a.59.59,0,0,0,.13.94q13.95,9.92,19.3,11.39,9.8,2.69,7.38,10.59t-12.07,4.69q-11.39-3.75-25.73-15.41a1.29,1.29,0,0,0-1.88,0q-13.8,11-24.93,15-9.52,3.48-12.06-3.89t7-10.58q6.16-2,19.3-11.8a.6.6,0,0,0,.13-.94,114.17,114.17,0,0,1-13.8-19.84c-.18-.35-.41-.35-.67,0a78.39,78.39,0,0,1-6.3,6q-2.42,1.94-7.11-4.22t3.22-12.2q1.2-.95,9.92-13.4Q651.21,233.54,653,228.85ZM668.9,279q.4.54.81,0a81.65,81.65,0,0,0,18.9-31.1c.17-.45,0-.67-.41-.67H662.47a4.22,4.22,0,0,0-3.62,1.88l-4.29,6.56a3.36,3.36,0,0,0-.27,3.62A77.44,77.44,0,0,0,668.9,279Zm5.9-12.87q-4.69,4-10.45-3.08t-1.61-11q3.88-4,10.32,2.94T674.8,266.11Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M752.68,317.18q-10,0-9.92-7.91t4.55-7.51a66.57,66.57,0,0,0,7.11.14c3.48-.18,5.54-.27,6.16-.27a2.56,2.56,0,0,0,1.75-.74,3.46,3.46,0,0,0,.8-2.61V274.82c0-.44-.18-.58-.53-.4L735.92,289.3q-9,4.95-12.46-2.15T729,275.63l32.44-16.09a3.12,3.12,0,0,0,1.74-3V216.25a.59.59,0,0,0-.67-.67H735.65q-10,0-10-7.64t10-7.64H768.9q10.05,0,10.05,10v88.06q0,6.84-1.68,10.39a11.23,11.23,0,0,1-5.83,5.43Q765.14,317.17,752.68,317.18Zm-3.49-65.41q-6.71,4.15-9.25-.2a83.2,83.2,0,0,0-7.37-10.26q-6.3-7.63-.8-12.33T744,231.66q5.64,6.17,6.57,7.51Q755.9,247.75,749.19,251.77Zm63,65.68q-9.53.12-9.38-7.91t4.62-7.78c3,.18,5.7.23,8.11.14,3.49-.18,5.83-.27,7-.27s1.81-1.16,1.81-3.49V272.41c0-.45-.18-.58-.54-.4l-25.2,14.47q-9,5.1-12.6-2.28t5.23-11.79l31.37-15.55a2.76,2.76,0,0,0,1.74-2.68V216.25a.59.59,0,0,0-.67-.67H795.3q-10,0-10-7.64t10-7.64h35.39q10,0,10,10v88.06q0,7-1.74,10.59a12,12,0,0,1-6.17,5.63,19.58,19.58,0,0,1-5.9,2c-3.48.36-7,.58-10.45.67Zm-2.28-66.89q-6.7,4.29-12.06-4.29-.27-.53-4.83-5.63-6.71-7.5-1.47-12.33t12.33,2.28q6.3,6.57,6.84,7.24Q816.48,246.14,809.91,250.56Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M512,255.57l-37.07,15a40,40,0,1,1,67.59,10.85,40.93,40.93,0,0,1-15.39,11.16,46.88,46.88,0,0,1-24.42,3.5"
|
||||
style="fill:none;stroke:#4a4494;stroke-linecap:round;stroke-linejoin:round;stroke-width:18px" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
@@ -0,0 +1,19 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 512">
|
||||
<g id="Layer_4">
|
||||
<path
|
||||
d="M245.14,311.41q-7.63,1.48-8-.47a107.26,107.26,0,0,0-3.29-10.52,1.29,1.29,0,0,0-1.47-.94L203.06,305a80.6,80.6,0,0,0-9.25,2.15q-6,1.61-8.85-5.9t1.88-10.86a45.58,45.58,0,0,0,3.35-3.62l3.88-4.56q7.38-8.56,18.1-27.61c.18-.35,0-.49-.4-.4l-15.42,2.14q-9.24,1.35-12.19-6.16t3.21-13.67a72,72,0,0,0,5.5-6.3q.4-.54,6.16-11.8,6.84-13.27,7.38-15,3.34-9.65,11.39-6.57t4,12.47q-5,11.52-18.23,30.56c-.27.36-.18.53.27.53l14.34-.93a3.45,3.45,0,0,0,3.08-2,69.36,69.36,0,0,0,3.56-7.84c.75-2.09,3.82-2,9.18.34s6.39,6.52,3.35,12.6Q227.32,263,208,288c-.26.36-.18.49.27.4l19.17-2.82c.45-.08.58-.35.4-.8L226,280.59q-3.9-9.12,2.41-12.07t11,5.77q9.38,18.36,11,25.73Q252.65,310,245.14,311.41Zm20.91,3.76q-10.05-.54-9.51-8.31c.35-5.1,1.34-7.58,2.95-7.44s5.89.2,12.86.2c2.33,0,3.8-.4,4.43-1.21s1.4-1.76,2.34-2.88,1.9-7.44,2.88-19q1.35-16.21,2.28-54.82a.59.59,0,0,0-.67-.67H249q-10,0-10.05-7.64T249,205.79h41.42q10.05,0,9.78,10.05-.93,47.6-2.41,65.28-1.74,20.38-2.55,21.45c-2,2.68-3.37,4.64-4.22,5.9a8.66,8.66,0,0,1-2.81,2.74q-1.55.87-2.88,1.68a20.2,20.2,0,0,1-5.63,1.61A62.41,62.41,0,0,1,266.05,315.17Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M338.3,316.91q-8.31,0-8.31-10.05V211.42q0-10,10.05-10h73q10.07,0,10.06,10v95.17q0,10.05-8.58,10.05T406,308.87a.59.59,0,0,0-.67-.67H347.15a.59.59,0,0,0-.67.67Q346.48,316.91,338.3,316.91Zm8.18-71.31a.59.59,0,0,0,.67.67h58.17a.59.59,0,0,0,.67-.67V218.12a.59.59,0,0,0-.67-.67H347.15a.59.59,0,0,0-.67.67Zm0,45.84a.59.59,0,0,0,.67.67h58.17a.59.59,0,0,0,.67-.67V262.76a.59.59,0,0,0-.67-.67H347.15a.59.59,0,0,0-.67.67Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M615.29,228.85q3.88-9.39,11.39-6.17T630.17,235a80.11,80.11,0,0,1-5.5,9.38,11.13,11.13,0,0,0-1.88,6.3v57.78q0,10-7.77,10t-7.91-10V268.92c0-.44-.13-.49-.4-.13l-2.15,2q-7.09,7.38-12.73,1.07t2.28-12.73q1.33-1.06,10.12-12.87T615.29,228.85Zm-14.48-7.38q-10,0-10-7.5t10-7.37h42c.44,0,.58-.18.4-.54q-3.9-7.91,3-11.53t11.66,5.23l2.81,5.09a3.12,3.12,0,0,0,2.95,1.75h36.33q10.05,0,10,7.37t-10,7.5ZM653,228.85q3.62-9.53,11.13-6.3,7.5,3.07,4.29,10c-.18.45,0,.67.4.67l22.52-.4A26.48,26.48,0,0,1,702.81,235q5.1,2.42,2.69,11.53-5.64,22.11-24.13,42.22a.59.59,0,0,0,.13.94q13.95,9.92,19.3,11.39,9.8,2.69,7.38,10.59t-12.07,4.69q-11.39-3.75-25.73-15.41a1.29,1.29,0,0,0-1.88,0q-13.8,11-24.93,15-9.52,3.48-12.06-3.89t7-10.58q6.16-2,19.3-11.8a.6.6,0,0,0,.13-.94,114.17,114.17,0,0,1-13.8-19.84c-.18-.35-.41-.35-.67,0a78.39,78.39,0,0,1-6.3,6q-2.42,1.94-7.11-4.22t3.22-12.2q1.2-.95,9.92-13.4Q651.21,233.54,653,228.85ZM668.9,279q.4.54.81,0a81.65,81.65,0,0,0,18.9-31.1c.17-.45,0-.67-.41-.67H662.47a4.22,4.22,0,0,0-3.62,1.88l-4.29,6.56a3.36,3.36,0,0,0-.27,3.62A77.44,77.44,0,0,0,668.9,279Zm5.9-12.87q-4.69,4-10.45-3.08t-1.61-11q3.88-4,10.32,2.94T674.8,266.11Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M752.68,317.18q-10,0-9.92-7.91t4.55-7.51a66.57,66.57,0,0,0,7.11.14c3.48-.18,5.54-.27,6.16-.27a2.56,2.56,0,0,0,1.75-.74,3.46,3.46,0,0,0,.8-2.61V274.82c0-.44-.18-.58-.53-.4L735.92,289.3q-9,4.95-12.46-2.15T729,275.63l32.44-16.09a3.12,3.12,0,0,0,1.74-3V216.25a.59.59,0,0,0-.67-.67H735.65q-10,0-10-7.64t10-7.64H768.9q10.05,0,10.05,10v88.06q0,6.84-1.68,10.39a11.23,11.23,0,0,1-5.83,5.43Q765.14,317.17,752.68,317.18Zm-3.49-65.41q-6.71,4.15-9.25-.2a83.2,83.2,0,0,0-7.37-10.26q-6.3-7.63-.8-12.33T744,231.66q5.64,6.17,6.57,7.51Q755.9,247.75,749.19,251.77Zm63,65.68q-9.53.12-9.38-7.91t4.62-7.78c3,.18,5.7.23,8.11.14,3.49-.18,5.83-.27,7-.27s1.81-1.16,1.81-3.49V272.41c0-.45-.18-.58-.54-.4l-25.2,14.47q-9,5.1-12.6-2.28t5.23-11.79l31.37-15.55a2.76,2.76,0,0,0,1.74-2.68V216.25a.59.59,0,0,0-.67-.67H795.3q-10,0-10-7.64t10-7.64h35.39q10,0,10,10v88.06q0,7-1.74,10.59a12,12,0,0,1-6.17,5.63,19.58,19.58,0,0,1-5.9,2c-3.48.36-7,.58-10.45.67Zm-2.28-66.89q-6.7,4.29-12.06-4.29-.27-.53-4.83-5.63-6.71-7.5-1.47-12.33t12.33,2.28q6.3,6.57,6.84,7.24Q816.48,246.14,809.91,250.56Z"
|
||||
style="fill:#e4007f" />
|
||||
<path
|
||||
d="M512,255.57l-37.07,15a40,40,0,1,1,67.59,10.85,40.93,40.93,0,0,1-15.39,11.16,46.88,46.88,0,0,1-24.42,3.5"
|
||||
style="fill:none;stroke:#786eff;stroke-linecap:round;stroke-linejoin:round;stroke-width:18px" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="42px" height="42px" viewBox="0 0 42 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>编组 4</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="歌库-播放详情页-车载版-暗色备份" transform="translate(-60.000000, -548.000000)">
|
||||
<g id="编组-4" transform="translate(60.000000, 548.000000)">
|
||||
<rect id="矩形备份-6" x="0" y="0" width="42" height="42" rx="6"></rect>
|
||||
<g id="编组" transform="translate(7.016512, 9.508856)">
|
||||
<rect id="矩形" fill-opacity="0.01" fill="#FFFFFF" fill-rule="nonzero" x="3.48348783" y="0.99114375" width="21" height="21"></rect>
|
||||
<path d="M7.69091831,0 C3.44334299,0 0,3.44336396 0,7.69091831 C0,15.3818366 9.08926709,22.3735805 13.9834878,24 C18.8777086,22.3735805 27.9669757,15.3818366 27.9669757,7.69091831 C27.9669757,3.44336396 24.5236117,0 20.2760574,0 C17.6749189,0 15.3753343,1.29130518 13.9834878,3.26780127 C12.5916414,1.29130518 10.2920568,0 7.69091831,0 Z" id="路径" stroke="#FFFFFF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>编组</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="歌库-播放详情页-车载版-暗色" transform="translate(-44.000000, -719.000000)" fill="#FF5F5F" fill-rule="nonzero">
|
||||
<g id="编组-5备份" transform="translate(39.000000, 719.000000)">
|
||||
<g id="编组" transform="translate(5.000000, 0.000000)">
|
||||
<path d="M12,0 C5.38370036,0 0,5.38287096 0,12 C0,18.617129 5.38287096,24 12,24 C18.6162996,24 24,18.617129 24,12 C24,5.38287096 18.617129,0 12,0 Z M16.8951485,15.6960009 C17.2294354,16.0319926 17.2285599,16.573717 16.8934437,16.9080039 C16.7263233,17.0742949 16.5077352,17.1582928 16.2883176,17.1582928 C16.0680247,17.1582928 15.8486072,17.0742949 15.6814407,16.9062991 L11.9957149,13.2094227 L8.29800911,16.8677328 C8.13088872,17.032319 7.91312997,17.1154415 7.69541729,17.1154415 C7.47429493,17.1154415 7.25400198,17.0305681 7.08600611,16.8608674 C6.75342407,16.5240002 6.75600437,15.9822758 7.09287155,15.6488644 L10.7862922,11.9957148 L7.10655635,8.30399906 C6.77226948,7.96883673 6.77314495,7.42628293 7.10826118,7.09199606 C7.44342351,6.75683373 7.98510185,6.75858466 8.32026418,7.09370089 L12.0051145,10.7897018 L15.7028203,7.13143773 C16.038812,6.79802633 16.5822412,6.80143599 16.9148233,7.13830318 C17.2482347,7.47517034 17.244825,8.01772414 16.9079578,8.35030618 L13.2145833,12.0034097 L16.8951485,15.6960009 Z" id="形状"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="42px" height="42px" viewBox="0 0 42 42" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>编组 4</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="歌库-播放详情页-车载版-暗色" transform="translate(-60.000000, -548.000000)">
|
||||
<g id="编组-4" transform="translate(60.000000, 548.000000)">
|
||||
<rect id="矩形备份-6" x="0" y="0" width="42" height="42" rx="6"></rect>
|
||||
<g id="编组" transform="translate(7.016512, 9.508856)">
|
||||
<rect id="矩形" fill-opacity="0.01" fill="#FFFFFF" fill-rule="nonzero" x="3.48348783" y="0.99114375" width="21" height="21"></rect>
|
||||
<path d="M7.69091831,0 C3.44334299,0 0,3.44336396 0,7.69091831 C0,15.3818366 9.08926709,22.3735805 13.9834878,24 C18.8777086,22.3735805 27.9669757,15.3818366 27.9669757,7.69091831 C27.9669757,3.44336396 24.5236117,0 20.2760574,0 C17.6749189,0 15.3753343,1.29130518 13.9834878,3.26780127 C12.5916414,1.29130518 10.2920568,0 7.69091831,0 Z" id="路径" fill="#F940A7"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>编组 2</title>
|
||||
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="歌库-播放详情页-车载版-暗色" transform="translate(-176.000000, -719.000000)">
|
||||
<g id="编组-5" transform="translate(162.500000, 719.000000)">
|
||||
<g id="编组-2" transform="translate(13.500000, 0.000000)">
|
||||
<rect id="矩形" x="0" y="0" width="24" height="24"></rect>
|
||||
<g id="编组备份-19" transform="translate(0.000000, 1.000000)" fill="#F940A7">
|
||||
<path d="M17.4,0 C21.04506,0 24,3.15641696 24,7.05000845 C24,14.1000169 16.2,20.5091155 12,22 C7.8,20.5091155 0,14.1000169 0,7.05000845 C0,3.15641696 2.954922,0 6.6,0 C8.83218,0 10.80558,1.18369642 12,2.9954845 C13.19442,1.18369642 15.16782,0 17.4,0 Z M7.57894737,3.22323712 C5.29268874,4.20700076 3.46368183,6.05741333 2.52631579,8.39970771 L3.8523458,8.39970771 C4.60681115,6.71325575 5.93284115,5.35472501 7.57894737,4.58176786 Z" id="形状结合"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="#FFFFFF" fill-rule="evenodd"
|
||||
d="M16,10.5 C16,9.12 17.12,8.4 18.3,9.05 L37.2,22.05 C38.4,22.72 38.4,24.28 37.2,24.95 L18.3,37.95 C17.12,38.6 16,37.88 16,36.5 Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 336 B |
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
|
||||
<line x1="16" y1="10" x2="16" y2="38" stroke="#FFFFFF" stroke-width="6"/>
|
||||
<line x1="32" y1="10" x2="32" y2="38" stroke="#FFFFFF" stroke-width="6"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 408 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 9.17071C12.6872 9.06015 12.3506 9 12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12V2.4578C19.0571 3.73207 22 7.52236 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C12.3375 2 12.6711 2.01672 13 2.04938V9.17071Z" fill="rgba(2,252,137,1)"></path></svg>
|
||||
|
After Width: | Height: | Size: 396 B |
|
After Width: | Height: | Size: 724 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 48 KiB |
@@ -0,0 +1,17 @@
|
||||
<svg id="Layer_2" data-name="Layer 2"
|
||||
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
|
||||
<path
|
||||
d="M824.4,601.25c-18,20-59.5,127.5-52,183,4.5,8.5,58,12,76-4s49-110,46-134-41-45-49-63-2-37-2-90v-2c0-157.4-127.6-285-285-285s-285,127.6-285,285v2c0,53,6,72-2,90s-46,39-49,63,28,118,46,134,76,4,76,4"
|
||||
style="fill:none;stroke:#ff0073;stroke-linecap:round;stroke-linejoin:round;stroke-width:10px" />
|
||||
<path d="M748.07,767.29A285.47,285.47,0,0,1,468.79,825.2"
|
||||
style="fill:none;stroke:#f4c42d;stroke-linecap:round;stroke-linejoin:round;stroke-width:10px" />
|
||||
<path
|
||||
d="M297.4,626.25c19,71,55,180,155.5,214.5-38.5-43.5-72.5-106.5-79.5-163.5,19,43,46,63,82,76-72-102-81-267-11-383-9,100,20,218,72.5,275.5-19-69-18.5-125.5-4.5-174.5,6,77,28,150,77,186-22-52-27-127-18.5-153.5,8.5,51.5,44.5,98.5,80.5,109.5-28-58-37-228-17.5-247.5,52,0,128.5,43.5,148.5,72.5,10,116-20,199-122,295,39,0,70-11,92-31"
|
||||
style="fill:none;stroke:#f7931e;stroke-linecap:round;stroke-linejoin:round;stroke-width:10px" />
|
||||
<polyline
|
||||
points="271.4 401.25 242.4 379.25 289.4 350.25 242.4 297.25 336.4 271.25 374.4 159.25 428.4 217.25"
|
||||
style="fill:none;stroke:#f4c42d;stroke-linecap:round;stroke-linejoin:round;stroke-width:10px" />
|
||||
<path
|
||||
d="M332.4,203.25c-33-28-83-18-110,32s-11,156-18,217-47,109-75,135c24-4,50-18,66-38-21,67-24,176,28,236"
|
||||
style="fill:none;stroke:#f7931e;stroke-linecap:round;stroke-linejoin:round;stroke-width:10px" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
@@ -0,0 +1,12 @@
|
||||
<svg height="18" viewBox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" fill-rule="evenodd" stroke="#ccc" stroke-linejoin="round" stroke-width="1.4"
|
||||
transform="translate(1 1)">
|
||||
<path d="m8 16c-4.41828 0-8-3.58172-8-8s3.58172-8 8-8 8 3.58172 8 8"
|
||||
stroke-linecap="round" />
|
||||
<path d="m6.4 8v-2.77128l2.4 1.38564 2.4 1.38564-2.4 1.38564-2.4 1.38564z" />
|
||||
<g stroke-linecap="round">
|
||||
<path d="m13.22032 11.2v4" />
|
||||
<path d="m15.2 13.17988h-4" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 565 B |
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16"
|
||||
fill="rgba(255,255,255,1)">
|
||||
<path
|
||||
d="M8.5 7C9.32843 7 10 6.32843 10 5.5C10 4.67157 9.32843 4 8.5 4C7.67157 4 7 4.67157 7 5.5C7 6.32843 7.67157 7 8.5 7ZM8.5 13.5C9.32843 13.5 10 12.8284 10 12C10 11.1716 9.32843 10.5 8.5 10.5C7.67157 10.5 7 11.1716 7 12C7 12.8284 7.67157 13.5 8.5 13.5ZM10 18.5C10 19.3284 9.32843 20 8.5 20C7.67157 20 7 19.3284 7 18.5C7 17.6716 7.67157 17 8.5 17C9.32843 17 10 17.6716 10 18.5ZM15.5 7C16.3284 7 17 6.32843 17 5.5C17 4.67157 16.3284 4 15.5 4C14.6716 4 14 4.67157 14 5.5C14 6.32843 14.6716 7 15.5 7ZM17 12C17 12.8284 16.3284 13.5 15.5 13.5C14.6716 13.5 14 12.8284 14 12C14 11.1716 14.6716 10.5 15.5 10.5C16.3284 10.5 17 11.1716 17 12ZM15.5 20C16.3284 20 17 19.3284 17 18.5C17 17.6716 16.3284 17 15.5 17C14.6716 17 14 17.6716 14 18.5C14 19.3284 14.6716 20 15.5 20Z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 902 B |
|
After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<!-- <path fill="none" d="M0 0h24v24H0z" />-->
|
||||
<path
|
||||
d="M6.17 18a3.001 3.001 0 0 1 5.66 0H22v2H11.83a3.001 3.001 0 0 1-5.66 0H2v-2h4.17zm6-7a3.001 3.001 0 0 1 5.66 0H22v2h-4.17a3.001 3.001 0 0 1-5.66 0H2v-2h10.17zm-6-7a3.001 3.001 0 0 1 5.66 0H22v2H11.83a3.001 3.001 0 0 1-5.66 0H2V4h4.17zM9 6a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm6 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-6 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"
|
||||
fill="#fff" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 519 B |
@@ -0,0 +1,7 @@
|
||||
<svg height="16" viewBox="0 0 4 16" width="4" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="#ccc" transform="matrix(0 -1 1 0 0 16)">
|
||||
<circle cx="2" cy="2" r="1.5" />
|
||||
<circle cx="8" cy="2" r="1.5" />
|
||||
<circle cx="14" cy="2" r="1.5" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 275 B |
|
After Width: | Height: | Size: 2.7 KiB |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"
|
||||
fill="currentColor">
|
||||
<path
|
||||
d="M18.031 16.6168L22.3137 20.8995L20.8995 22.3137L16.6168 18.031C15.0769 19.263 13.124 20 11 20C6.032 20 2 15.968 2 11C2 6.032 6.032 2 11 2C15.968 2 20 6.032 20 11C20 13.124 19.263 15.0769 18.031 16.6168ZM16.0247 15.8748C17.2475 14.6146 18 12.8956 18 11C18 7.1325 14.8675 4 11 4C7.1325 4 4 7.1325 4 11C4 14.8675 7.1325 18 11 18C12.8956 18 14.6146 17.2475 15.8748 16.0247L16.0247 15.8748Z"
|
||||
fill="#fff" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 545 B |
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"
|
||||
fill="currentColor">
|
||||
<path d="M19 3L23 8H20V20H18V8H15L19 3ZM14 18V20H3V18H14ZM14 11V13H3V11H14ZM12 4V6H3V4H12Z"
|
||||
fill="#fff" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 233 B |
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"
|
||||
fill="currentColor">
|
||||
<path d="M20 4V16H23L19 21L15 16H18V4H20ZM12 18V20H3V18H12ZM14 11V13H3V11H14ZM14 4V6H3V4H14Z"
|
||||
fill="#fff" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 235 B |
@@ -0,0 +1,6 @@
|
||||
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg">
|
||||
<text fill="#333" fill-rule="evenodd" font-family="PingFangSC-Regular, PingFang SC"
|
||||
font-size="15">
|
||||
<tspan x="9" y="22">原</tspan>
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 254 B |
@@ -0,0 +1,8 @@
|
||||
<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<path d="m0 0h16v16h-16z" fill="#fff" fill-opacity=".01" fill-rule="nonzero" />
|
||||
<path
|
||||
d="m5 2.66666667c-2.02504333 0-3.66666667 1.64163333-3.66666667 3.66666666 0 3.66666667 4.33333334 6.99999997 6.66666667 7.77539997 2.3333333-.7754 6.6666667-4.1087333 6.6666667-7.77539997 0-2.02503333-1.6416334-3.66666666-3.6666667-3.66666666-1.2401 0-2.33643333.61563333-3 1.55793333-.66356667-.9423-1.7599-1.55793333-3-1.55793333z"
|
||||
stroke="#666" stroke-linecap="round" stroke-linejoin="round" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 664 B |
@@ -0,0 +1,4 @@
|
||||
<svg height="14" viewBox="0 0 16 14" width="16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="m13.7695312 0h.7421876c.6040624 0 1.09375.4896875 1.09375 1.09375v11.5820312c0 .6040625-.4896876 1.09375-1.09375 1.09375h-.7421876c-.6040624 0-1.09375-.4896875-1.09375-1.09375v-11.5820312c0-.6040625.4896876-1.09375 1.09375-1.09375zm-3.2946484 7.54279297-8.24812499 5.92578123c-.63074218.4531446-1.50941406.3091797-1.96257812-.3215625-.17177985-.2391048-.26417969-.5260941-.26417969-.8205078v-10.9190039c0-.77664062.62958984-1.40625 1.40625-1.40625.27772132 0 .54922472.08223197.78027344.23632813l8.25707026 5.50701171c.5025391.33515625.6382227 1.01425782.3030665 1.51679688-.0729441.10937328-.165009.20469996-.2717774.28140625z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 743 B |
@@ -0,0 +1,9 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<path d="m0 0h24v24h-24z" fill="#fff" fill-opacity=".01" fill-rule="nonzero" />
|
||||
<g stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3">
|
||||
<path d="m7 5v14" />
|
||||
<path d="m17 5v14" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 397 B |
@@ -0,0 +1,8 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<path d="m0 0h24v24h-24z" />
|
||||
<path
|
||||
d="m0 2.00005219.00668611-.1638145c.05329261-.6505004.42202581-1.23847486.99325156-1.56827504.61882789-.35728353 1.38127568-.35728353 2.00010357 0 .02380107.01374167.04725059.02793156.0703404.04255552l-.00039784-.00034307.03426759.02227559c.01572831.01041134.0312825.02102712.04665987.03184265l12.01900874 8.01529486c.4976699.36556725.823963.95633395.8299956 1.61988218.0060869.68168952-.3175786 1.28928242-.8266595 1.65138972l-.0733357.0484867-11.99797793 7.9687952c-.32036747.221617-.70171591.3458472-1.10195303.3306011-1.09999419-.0399971-1.99998944-.8999345-1.99998944-1.9998545z"
|
||||
fill="#000" fill-rule="nonzero" transform="translate(5 2)" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 861 B |
@@ -0,0 +1,14 @@
|
||||
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<g fill="none" fill-rule="evenodd" stroke="#333" stroke-linejoin="round" stroke-width="1.6"
|
||||
transform="translate(3 3)">
|
||||
<path d="m11.5 0v14.5" stroke-linecap="round" />
|
||||
<path
|
||||
d="m4.5 15.02c0-1.39175 1.12825-2.52 2.52-2.52h4.48v2.98c0 1.39175-1.12825 2.52-2.52 2.52h-1.96c-1.39175 0-2.52-1.12825-2.52-2.52z" />
|
||||
<g stroke-linecap="round">
|
||||
<path d="m11.5 4.0332 6.4417 1.52755v-4.054055l-6.4417-1.506695z" />
|
||||
<path d="m0 1h7" />
|
||||
<path d="m0 5h7" />
|
||||
<path d="m0 9h5" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 674 B |
@@ -0,0 +1,5 @@
|
||||
<svg height="14" viewBox="0 0 16 14" width="16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="m13.7695312 0h.7421876c.6040624 0 1.09375.4896875 1.09375 1.09375v11.5820312c0 .6040625-.4896876 1.09375-1.09375 1.09375h-.7421876c-.6040624 0-1.09375-.4896875-1.09375-1.09375v-11.5820312c0-.6040625.4896876-1.09375 1.09375-1.09375zm-3.2946484 7.54279297-8.24812499 5.92578123c-.63074218.4531446-1.50941406.3091797-1.96257812-.3215625-.17177985-.2391048-.26417969-.5260941-.26417969-.8205078v-10.9190039c0-.77664062.62958984-1.40625 1.40625-1.40625.27772132 0 .54922472.08223197.78027344.23632813l8.25707026 5.50701171c.5025391.33515625.6382227 1.01425782.3030665 1.51679688-.0729441.10937328-.165009.20469996-.2717774.28140625z"
|
||||
transform="matrix(-1 0 0 1 16 0)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 785 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M8 20v1.932a.5.5 0 0 1-.82.385l-4.12-3.433A.5.5 0 0 1 3.382 18H18a2 2 0 0 0 2-2V8h2v8a4 4 0 0 1-4 4H8zm8-16V2.068a.5.5 0 0 1 .82-.385l4.12 3.433a.5.5 0 0 1-.321.884H6a2 2 0 0 0-2 2v8H2V8a4 4 0 0 1 4-4h10z"
|
||||
fill="rgba(153,153,153,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 398 B |
@@ -0,0 +1,6 @@
|
||||
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg">
|
||||
<text fill="#333" fill-rule="evenodd" font-family="PingFangSC-Regular, PingFang SC"
|
||||
font-size="15">
|
||||
<tspan x="9" y="22">音</tspan>
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 254 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M18 17.883V16l5 3-5 3v-2.09a9 9 0 0 1-6.997-5.365L11 14.54l-.003.006A9 9 0 0 1 2.725 20H2v-2h.725a7 7 0 0 0 6.434-4.243L9.912 12l-.753-1.757A7 7 0 0 0 2.725 6H2V4h.725a9 9 0 0 1 8.272 5.455L11 9.46l.003-.006A9 9 0 0 1 18 4.09V2l5 3-5 3V6.117a7 7 0 0 0-5.159 4.126L12.088 12l.753 1.757A7 7 0 0 0 18 17.883z"
|
||||
fill="rgba(153,153,153,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 499 B |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="16" height="16">
|
||||
<path fill="none" d="M0 0h24v24H0z" />
|
||||
<path
|
||||
d="M8 20v1.932a.5.5 0 0 1-.82.385l-4.12-3.433A.5.5 0 0 1 3.382 18H18a2 2 0 0 0 2-2V8h2v8a4 4 0 0 1-4 4H8zm8-17.932a.5.5 0 0 1 .82-.385l4.12 3.433a.5.5 0 0 1-.321.884H6a2 2 0 0 0-2 2v8H2V8a4 4 0 0 1 4-4h10V2.068zM11 8h2v8h-2v-6H9V9l2-1z"
|
||||
fill="rgba(153,153,153,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 426 B |
@@ -0,0 +1,6 @@
|
||||
<svg height="32" viewBox="0 0 32 32" width="32" xmlns="http://www.w3.org/2000/svg">
|
||||
<text fill="#333" fill-rule="evenodd" font-family="PingFangSC-Regular, PingFang SC"
|
||||
font-size="15">
|
||||
<tspan x="9" y="22">译</tspan>
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 254 B |
@@ -0,0 +1,6 @@
|
||||
<svg class="icon" viewBox="0 0 1024 1024" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg" width="48" height="48">
|
||||
<path
|
||||
d="M825.002667 187.733333H256.853333c-56.490667 0-102.4 45.909333-102.4 102.4v315.733334c0 56.490667 45.909333 102.4 102.4 102.4h568.149334c56.490667 0 102.4-45.909333 102.4-102.4V290.133333c0-56.490667-45.909333-102.4-102.4-102.4z m34.133333 418.133334c0 18.773333-15.36 34.133333-34.133333 34.133333H256.853333c-18.773333 0-34.133333-15.36-34.133333-34.133333V290.133333c0-18.773333 15.36-34.133333 34.133333-34.133333h568.149334c18.773333 0 34.133333 15.36 34.133333 34.133333v315.733334zM724.48 785.066667h-366.933333c-18.773333 0-34.133333 15.36-34.133334 34.133333s15.36 34.133333 34.133334 34.133333h366.933333c18.773333 0 34.133333-15.36 34.133333-34.133333s-15.36-34.133333-34.133333-34.133333z"
|
||||
fill="#F940A7"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 873 B |
@@ -0,0 +1,51 @@
|
||||
<svg class="icon" viewBox="0 0 1024 1024" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg" width="263" height="263">
|
||||
<path d="M216.234667 864.085333H785.066667" fill="#FFFFFF"/>
|
||||
<path d="M609.792 709.973333h-218.453333l-27.306667 97.28h273.066667l-27.306667-97.28z"
|
||||
fill="#D8E3F0"/>
|
||||
<path
|
||||
d="M853.333333 220.672H341.333333v409.6H113.834667v56.832A22.698667 22.698667 0 0 0 136.533333 709.973333h568.832v-150.528a22.869333 22.869333 0 0 1 22.869334-22.869333H887.466667V254.805333a34.133333 34.133333 0 0 0-34.133334-34.133333zM753.834667 411.306667a57.002667 57.002667 0 1 1 56.832-57.002667 57.173333 57.173333 0 0 1-56.832 57.002667z"
|
||||
fill="#EDF4FF"/>
|
||||
<path
|
||||
d="M514.730667 630.272h190.634666v-70.826667a22.869333 22.869333 0 0 1 22.869334-22.869333H887.466667V254.805333a34.133333 34.133333 0 0 0-13.653334-27.136H622.592z m238.933333-332.8a57.002667 57.002667 0 1 1-57.002667 56.832 56.832 56.832 0 0 1 57.173334-56.832zM147.968 220.672H341.333333v409.6H113.834667v-375.466667a34.133333 34.133333 0 0 1 34.133333-34.133333z"
|
||||
fill="#D8E3F0"/>
|
||||
<path
|
||||
d="M705.365333 630.272H113.834667v56.832A22.698667 22.698667 0 0 0 136.533333 709.973333h568.832z"
|
||||
fill="#96DDFF"/>
|
||||
<path d="M705.365333 631.637333h-143.189333l-20.650667 76.970667v1.365333h163.84v-78.336z"
|
||||
fill="#69BAF9"/>
|
||||
<path
|
||||
d="M728.234667 864.085333H273.066667a56.832 56.832 0 0 1 56.832-56.832h341.333333a57.002667 57.002667 0 0 1 57.002667 56.832z"
|
||||
fill="#EDF4FF"/>
|
||||
<path d="M705.365333 536.576l227.498667 0 0 364.032-227.498667 0 0-364.032Z" fill="#EDF4FF"
|
||||
/>
|
||||
<path d="M780.458667 830.464l77.482666-288.768h66.901334v288.768h-144.384z" fill="#D8E3F0"
|
||||
/>
|
||||
<path
|
||||
d="M705.365333 836.266667h227.669334v40.96a22.698667 22.698667 0 0 1-22.698667 22.698666H728.234667a22.698667 22.698667 0 0 1-22.698667-22.698666V836.266667h-0.170667z"
|
||||
fill="#96DDFF"/>
|
||||
<path
|
||||
d="M802.133333 900.778667h107.52a22.869333 22.869333 0 0 0 22.869334-22.869334V836.266667H819.2z"
|
||||
fill="#69BAF9"/>
|
||||
<path
|
||||
d="M753.834667 354.304m-56.832 0a56.832 56.832 0 1 0 113.664 0 56.832 56.832 0 1 0-113.664 0Z"
|
||||
fill="#FFC670"/>
|
||||
<path
|
||||
d="M910.165333 519.509333H904.533333V254.805333a51.2 51.2 0 0 0-51.2-51.2H147.968a51.2 51.2 0 0 0-51.2 51.2v432.298667A39.765333 39.765333 0 0 0 136.533333 727.04h232.277334l-17.066667 63.146667h-21.845333a73.728 73.728 0 0 0-71.68 56.832h-41.984a17.066667 17.066667 0 0 0 0 34.133333h472.405333a39.765333 39.765333 0 0 0 39.594667 36.693333h181.930666a39.936 39.936 0 0 0 39.936-39.936V559.445333a39.936 39.936 0 0 0-39.936-39.936zM358.4 237.738667h494.933333a17.066667 17.066667 0 0 1 17.066667 17.066666v264.704h-142.165333a39.936 39.936 0 0 0-39.936 39.936v53.76H358.4z m329.898667 554.496a79.189333 79.189333 0 0 0-17.066667-2.048h-21.162667l-17.066666-63.146667h55.978666zM130.901333 254.805333a17.066667 17.066667 0 0 1 17.066667-17.066666H324.266667v375.466666H130.901333zM136.533333 692.906667a5.802667 5.802667 0 0 1-5.632-5.802667v-39.765333h557.397334v45.568z m477.866667 97.28H386.56l17.066667-63.146667H597.333333z m-284.672 34.133333h341.333333a38.570667 38.570667 0 0 1 17.066667 3.925333v18.773334H294.058667a39.765333 39.765333 0 0 1 35.84-22.698667z m586.069333 53.589333a5.802667 5.802667 0 0 1-5.802666 5.802667H728.234667a5.802667 5.802667 0 0 1-5.802667-5.802667V853.333333h193.536z m0-58.026666H722.432V559.445333a5.802667 5.802667 0 0 1 5.802667-5.802666h181.930666a5.802667 5.802667 0 0 1 5.802667 5.802666z"
|
||||
fill="#3D3D63"/>
|
||||
<path
|
||||
d="M853.333333 576.512h-68.266666a17.066667 17.066667 0 0 0 0 34.133333h68.266666a17.066667 17.066667 0 0 0 0-34.133333zM284.501333 291.84H238.933333a17.066667 17.066667 0 0 0 0 34.133333h45.568a17.066667 17.066667 0 0 0 0-34.133333z"
|
||||
fill="#3D3D63"/>
|
||||
<path
|
||||
d="M176.298667 308.906667m-17.066667 0a17.066667 17.066667 0 1 0 34.133333 0 17.066667 17.066667 0 1 0-34.133333 0Z"
|
||||
fill="#3D3D63"/>
|
||||
<path
|
||||
d="M284.501333 382.805333H238.933333a17.066667 17.066667 0 0 0 0 34.133334h45.568a17.066667 17.066667 0 0 0 0-34.133334zM284.501333 439.637333H238.933333a17.066667 17.066667 0 0 0 0 34.133334h45.568a17.066667 17.066667 0 0 0 0-34.133334z"
|
||||
fill="#3D3D63"/>
|
||||
<path
|
||||
d="M176.298667 399.872m-17.066667 0a17.066667 17.066667 0 1 0 34.133333 0 17.066667 17.066667 0 1 0-34.133333 0Z"
|
||||
fill="#3D3D63"/>
|
||||
<path
|
||||
d="M753.834667 428.373333a74.069333 74.069333 0 1 0-74.069334-74.069333 74.069333 74.069333 0 0 0 74.069334 74.069333z m0-113.834666a39.936 39.936 0 1 1-39.936 39.765333 39.936 39.936 0 0 1 39.936-39.765333zM423.765333 384h102.4a17.066667 17.066667 0 0 0 0-34.133333h-102.4a17.066667 17.066667 0 0 0 0 34.133333zM575.488 406.698667h-151.722667a17.066667 17.066667 0 0 0 0 34.133333h151.722667a17.066667 17.066667 0 0 0 0-34.133333zM626.688 291.84H423.765333a17.066667 17.066667 0 0 0 0 34.133333h202.922667a17.066667 17.066667 0 0 0 0-34.133333zM517.632 542.037333h-93.866667a17.066667 17.066667 0 0 0 0 34.133334h93.866667a17.066667 17.066667 0 1 0 0-34.133334zM423.765333 519.338667h39.936a17.066667 17.066667 0 0 0 0-34.133334h-39.936a17.066667 17.066667 0 0 0 0 34.133334z"
|
||||
fill="#3D3D63"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.2 KiB |
@@ -0,0 +1,9 @@
|
||||
<svg class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
||||
width="48" height="48">
|
||||
<path
|
||||
d="M647.499 60.657H375.167c-89.602 0-162.497 72.895-162.497 162.497v573.907c0 89.602 72.895 162.497 162.497 162.497h272.332c89.602 0 162.497-72.895 162.497-162.497V223.154c0.001-89.602-72.895-162.497-162.497-162.497z m108.332 736.404c0 59.733-48.598 108.331-108.331 108.331H375.167c-59.733 0-108.331-48.598-108.331-108.331V223.154c0-59.733 48.598-108.332 108.331-108.332h56.168c0.15 14.827 12.193 26.81 27.055 26.81h105.885c14.863 0 26.905-11.983 27.055-26.81h56.168c59.733 0 108.331 48.598 108.331 108.332v573.907z"
|
||||
fill="#F940A7" />
|
||||
<path
|
||||
d="M564.276 819.304H458.391c-14.956 0-27.083 12.126-27.083 27.083s12.126 27.083 27.083 27.083h105.885c14.956 0 27.083-12.126 27.083-27.083s-12.127-27.083-27.083-27.083z"
|
||||
fill="#F940A7" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 900 B |
@@ -0,0 +1,7 @@
|
||||
<svg class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
||||
width="48" height="48">
|
||||
<path
|
||||
d="M746.672 128H704a32 32 0 1 0 0 64h42.672A85.44 85.44 0 0 1 832 277.328V320a32 32 0 1 0 64 0v-42.672C896 194.992 829.008 128 746.672 128zM320 128h-42.672C194.992 128 128 194.992 128 277.328V320a32 32 0 1 0 64 0v-42.672A85.44 85.44 0 0 1 277.328 192H320a32 32 0 1 0 0-64zM320 832h-42.672A85.44 85.44 0 0 1 192 746.672V704a32 32 0 1 0-64 0v42.672C128 829.008 194.992 896 277.328 896H320a32 32 0 1 0 0-64zM864 672a32 32 0 0 0-32 32v42.672A85.44 85.44 0 0 1 746.672 832H704a32 32 0 1 0 0 64h42.672C829.008 896 896 829.008 896 746.672V704a32 32 0 0 0-32-32z"
|
||||
fill="#333333" />
|
||||
<path d="M704 480H320a32 32 0 1 0 0 64h384a32 32 0 1 0 0-64z" fill="#333333" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 809 B |
@@ -0,0 +1,5 @@
|
||||
<svg height="20" viewBox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="m12.7550466.4072205v9.6645963c0 1.5403726-1.2670808 2.8074534-2.80745343 2.8074534-1.54037267 0-2.80745342-1.2670808-2.80745342-2.8074534 0-1.5403727 1.26708075-2.80745345 2.80745342-2.80745345.49689443 0 .96894413.12422361 1.39130433.37267081v-7.52795031c-.4720497-.07453416-.9192546-.09937888-1.39130433-.09937888-5.49068323 0-9.9378882 4.44720497-9.9378882 9.9378882s4.44720497 9.93788823 9.9378882 9.93788823 9.93788823-4.447205 9.93788823-9.93788823c0-4.52173913-3.0062112-8.32298137-7.1304348-9.54037267zm-8.49689443 8.09937888h-1.44099378c1.01863354-2.48447205 3.00621118-4.44720497 5.49068322-5.49068323v1.44099379c-1.78881987.81987577-3.22981366 2.26086956-4.04968944 4.04968944zm7.20496893 8.62111802v-1.4409938c1.7142857-.8944099 3.1552795-2.3354037 4.0496895-4.0496894h1.4409937c-1.0434782 2.484472-3.0310559 4.4720497-5.4906832 5.4906832z"
|
||||
fill="#d1e0f3" fill-rule="evenodd" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1010 B |
@@ -0,0 +1,19 @@
|
||||
<svg height="17" viewBox="0 0 19 17" width="19" xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<path id="a"
|
||||
d="m13.775 0c2.8856725 0 5.225 2.43904947 5.225 5.4477338 0 5.4477338-6.175 10.4002191-9.5 11.5522662-3.325-1.1520471-9.5-6.1045324-9.5-11.5522662 0-3.00868433 2.33931325-5.4477338 5.225-5.4477338 1.7671425 0 3.3294175.91467451 4.275 2.31469257.9455825-1.40001806 2.5078575-2.31469257 4.275-2.31469257zm-7.775 2.49068323c-1.80995475.760181-3.25791855 2.19004525-4 4h1.04977376c.59728506-1.30316742 1.64705882-2.35294118 2.95022624-2.95022624z" />
|
||||
<filter id="b" height="135.3%" width="131.6%" x="-15.8%" y="-17.6%">
|
||||
<feGaussianBlur in="SourceAlpha" result="shadowBlurInner1" stdDeviation="2" />
|
||||
<feOffset dx="2" dy="2" in="shadowBlurInner1" result="shadowOffsetInner1" />
|
||||
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" k2="-1" k3="1"
|
||||
operator="arithmetic" result="shadowInnerInner1" />
|
||||
<feColorMatrix in="shadowInnerInner1" type="matrix"
|
||||
values="0 0 0 0 0.850980392 0 0 0 0 0.121568627 0 0 0 0 0.525490196 0 0 0 1 0" />
|
||||
</filter>
|
||||
</defs>
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<use fill="#f940a7" fill-rule="evenodd" xlink:href="#a" />
|
||||
<use fill="#000" filter="url(#b)" xlink:href="#a" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1,19 @@
|
||||
<svg height="20" viewBox="0 0 18 20" width="18" xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<path id="a"
|
||||
d="m17.9377597.59334913c0-.37179364-.3353552-.65176382-.6973235-.58223382l-10.682767 2.05332786c-.55413609.10644212-.95496248.59529924-.95496248 1.16442194v11.40214369c-.85501284-.3450918-1.97410006-.3475587-3.06116675.072271-1.86845245.7216364-2.93433599 2.4172639-2.38071384 3.7872151.55359981 1.3700425 2.5171083 1.8956519 4.38558311 1.1739926 1.57629028-.6087987 2.58135047-1.9107959 2.52472799-3.1256751v-10.42415528l9.39812497-1.8063867v7.96630168c-.8549905-.3471931-1.9753961-.3504595-3.0637141.0701924-1.8669553.7216365-2.9320121 2.417264-2.3788145 3.787238.5531752 1.3700425 2.5150749 1.8956062 4.3821196 1.1739926 1.547197-.5980402 2.5436096-1.8649984 2.5247056-3.0611702l.0042009-.0012792z" />
|
||||
<filter id="b" height="130%" width="133.5%" x="-16.7%" y="-15%">
|
||||
<feGaussianBlur in="SourceAlpha" result="shadowBlurInner1" stdDeviation="2" />
|
||||
<feOffset dx="2" dy="2" in="shadowBlurInner1" result="shadowOffsetInner1" />
|
||||
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" k2="-1" k3="1"
|
||||
operator="arithmetic" result="shadowInnerInner1" />
|
||||
<feColorMatrix in="shadowInnerInner1" type="matrix"
|
||||
values="0 0 0 0 0.850980392 0 0 0 0 0.121568627 0 0 0 0 0.525490196 0 0 0 1 0" />
|
||||
</filter>
|
||||
</defs>
|
||||
<g fill="none" fill-rule="evenodd">
|
||||
<use fill="#f940a7" fill-rule="evenodd" xlink:href="#a" />
|
||||
<use fill="#000" filter="url(#b)" xlink:href="#a" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
@@ -0,0 +1,5 @@
|
||||
<svg height="20" viewBox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="m17.3319825 3.29295049h-14.66396498c-.70898417 0-1.38881399.28217071-1.88939045.78422079-.50057647.50205008-.78072907 1.18268463-.77861519 1.89162697v11.35935375c-.0010499.7082501.27957262 1.3878557.78003363 1.8890397.50046101.5011841 1.17968252.7828083 1.88797201.7828083h14.66396498c.7082895 0 1.387511-.2816242 1.887972-.7828083.500461-.501184.7810835-1.1807896.7800336-1.8890397v-11.35935375c.0021139-.70894234-.2780387-1.38957689-.7786152-1.89162697-.5005764-.50205008-1.1804062-.78422079-1.8893904-.78422079zm-13.90396679 4.25175811c.01725819-.33271549.29909524-.58956564.63199848-.57596723h7.93998101c.3344313-.01586234.6187531.24162259.6359985.57596723v.05599681c-.0255763.3279752-.3074062.57611376-.6359985.55996815h-7.93998101c-.32782914.01605831-.60848136-.23260733-.63199848-.55996815zm6.29998493 7.8275547c-.01717701.2758804-.25180498.4873895-.52799873.4759729h-5.33598725c-.27923844.0159424-.51883501-.196822-.53599871-.4759729v-.2439861c.01926491-.2781231.25753263-.4897076.53599871-.475973h5.33598725c.27846608-.0137346.51673381.1978499.53599872.475973zm-5.77198621-3.5357989c-.31088183.0159446-.57667754-.2212963-.59599855-.5319697v-.1279927c.01932101-.3106734.28511672-.5479144.59599855-.5319698h6.79998377c.3108818-.0159446.5766776.2212964.5959986.5319698v.1279927c-.019321.3106734-.2851168.5479144-.5959986.5319697zm13.29596827-2.1558773c-.2655518.25688267-.6773874.28557456-.9759977.06799612l-.7999981-.55996815v5.12770833c.0162628 1.1938857-.8975383 2.195161-2.087995 2.2878698-1.1486792.0530819-2.1451347-.7858202-2.2885358-1.9266866s.6144493-2.2002518 1.7405371-2.4330654c.3894972-.0822106.794273-.0531016 1.1679972.0839952v-4.53574191c-.0056471-.0451549-.0056471-.09083737 0-.13599227.016262-.09797034.0545579-.19096966.1119998-.27198452v-.0279984c0-.02799842.0439999-.05599681.0679998-.07999546l.0519999-.03999771.0599998-.04799728.0599999-.03199818.0679998-.03599795.0639999-.01999887.0719998-.01999886h.3239992c.0802292.01913082.1561918.05304083.2239995.09999431l1.9999952 1.37192196c.1846353.11875259.3070099.31334993.3340492.53119762s-.0440482.43645497-.1940495.59673822zm-14.58396518-6.8396109h14.66396498c.34846.01821665.6465286-.24771034.6679984-.5959661-.0092805-.16770603-.0849442-.32481902-.2102806-.43664s-.2900336-.16915012-.4577178-.15932608h-14.66396498c-.16768418-.00982405-.33238145.04750509-.45771785.15932607-.12533639.11182099-.20100011.26893397-.21028056.43664001.02146977.34825577.31953841.61418276.66799841.5959661zm1.19599714-1.63990671h12.27197064c.1662308.01093535.3299329-.04504919.4546509-.15548624s.2000959-.26615638.2093475-.43248031v-.02799839c-.0235381-.34389329-.3198958-.60453104-.6639984-.58396679h-12.27197064c-.34410258-.02056425-.64046029.2400735-.66399841.58396679v.02799839c.00925163.16632393.08462954.32204326.20934756.43248031.12471803.11043705.28842011.16642159.45465085.15548624z"
|
||||
fill="#d1e0f3" fill-rule="evenodd" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
@@ -0,0 +1,5 @@
|
||||
<svg height="20" viewBox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="m311.000724 10.0000203c-2.65399-.00535426-5.200827 1.04656-7.077485 2.9232183-1.876659 1.8766583-2.928573 4.4234952-2.923219 7.0774853 0 5.5383074 4.514318 9.9992586 10.000704 9.9992586 2.65349.0049719 5.199736-1.0469142 7.07604-2.9232183s2.92819-4.4225502 2.923218-7.0760403c0-5.5383073-4.512872-10.0007036-9.999258-10.0007036zm6.511838 13.0251387c-.124847.2835962-.406969.4652441-.716807.4615816-.103843 0-.206244 0-.308645-.0505354l-5.897432-2.6667527c-.278621-.1313616-.457818-.4102369-.461526-.7182492v-5.5383073c0-.409604.360567-.7687286.770171-.7687286s.768729.3591246.768729.7687286v5.0767817l5.435906 2.4619507c.409604.1543226.563926.5639266.409604.9735306z"
|
||||
fill="#d1e0f3" transform="translate(-301 -10)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 837 B |
@@ -0,0 +1,5 @@
|
||||
<svg height="20" viewBox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="m12.8 8.20416666c1.0833333-.8375 1.7833333-2.14583332 1.7833333-3.62083332 0-2.52916666-2.0541666-4.58333334-4.5833333-4.58333334-2.52916668 0-4.58333334 2.05416666-4.58333334 4.58333334 0 1.46666666.69583334 2.775 1.775 3.6125-4.19583332.87083332-7.19166666 3.67083336-7.19166666 7.08333336 0 3.8791666 3.05833334 4.6916666 7.65416666 4.7208333h1.72083334v-2.5875c-.75833334-.2083333-1.875-.9083333-1.875-3.2333333 0-3.1833334 2.07083334-3.3458334 2.4875-3.3458334.4208333 0 2.5125.1625 2.5125 3.3333334 0 2.3083333-1.1083333 3.0208333-1.875 3.2375v2.5958333h1.6916667l.5208333-.0083333c3.7208333-.0791667 7.1625-.7041667 7.1625-4.7125 0-3.4041667-2.9958333-6.20000004-7.2-7.07500004z"
|
||||
fill="#d1e0f3" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 824 B |
BIN
composeApp/src/commonMain/composeResources/font/katong.ttf
Normal file
194
composeApp/src/commonMain/kotlin/top/zhushenwudi/llmp/App.kt
Normal file
@@ -0,0 +1,194 @@
|
||||
package top.zhushenwudi.llmp
|
||||
|
||||
import androidx.compose.animation.EnterTransition
|
||||
import androidx.compose.animation.ExitTransition
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.isSystemInDarkTheme
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.navigation.compose.NavHost
|
||||
import androidx.navigation.compose.composable
|
||||
import androidx.navigation.compose.rememberNavController
|
||||
import top.zhushenwudi.llmp.navigation.Routes
|
||||
import top.zhushenwudi.llmp.navigation.llmpSlideFadeEnter
|
||||
import top.zhushenwudi.llmp.navigation.llmpSlideFadeExit
|
||||
import top.zhushenwudi.llmp.navigation.llmpSlideFadePopEnter
|
||||
import top.zhushenwudi.llmp.navigation.llmpSlideFadePopExit
|
||||
import top.zhushenwudi.llmp.theme.ColorMs
|
||||
import top.zhushenwudi.llmp.theme.LlmpTheme
|
||||
import top.zhushenwudi.llmp.theme.LocalDarkTheme
|
||||
import top.zhushenwudi.llmp.ui.MainShell
|
||||
import top.zhushenwudi.llmp.ui.icons.InstallCoilSvg
|
||||
import top.zhushenwudi.llmp.ui.screens.DailyScreen
|
||||
import top.zhushenwudi.llmp.ui.screens.DataSyncScreen
|
||||
import top.zhushenwudi.llmp.ui.screens.DriveModeScreen
|
||||
import top.zhushenwudi.llmp.ui.screens.LogsScreen
|
||||
import top.zhushenwudi.llmp.ui.screens.MoegirlScreen
|
||||
import top.zhushenwudi.llmp.ui.screens.PermissionsScreen
|
||||
import top.zhushenwudi.llmp.ui.screens.ScanScreen
|
||||
import top.zhushenwudi.llmp.ui.screens.SdScreen
|
||||
import top.zhushenwudi.llmp.ui.screens.SettingsScreen
|
||||
import top.zhushenwudi.llmp.ui.screens.SplashScreen
|
||||
import top.zhushenwudi.llmp.ui.screens.TachieScreen
|
||||
import top.zhushenwudi.llmp.ui.screens.TransferScreen
|
||||
import top.zhushenwudi.llmp.ui.theme.LocalBgPhoto
|
||||
|
||||
@Composable
|
||||
fun App() {
|
||||
val settings = AppContainer.settings
|
||||
var followSystem by remember { mutableStateOf(settings.followSystemTheme) }
|
||||
var darkPref by remember { mutableStateOf(settings.isDark) }
|
||||
var bgPhoto by remember {
|
||||
mutableStateOf(
|
||||
if (settings.enableBackground) settings.backgroundPhoto else "",
|
||||
)
|
||||
}
|
||||
val systemDark = isSystemInDarkTheme()
|
||||
val darkTheme = if (followSystem) systemDark else darkPref
|
||||
// Flutter AppPage: hasAIPic ? /splash : /
|
||||
val startDestination = if (settings.aiPicture) Routes.SPLASH else Routes.MAIN
|
||||
|
||||
LlmpTheme(darkTheme = darkTheme) {
|
||||
InstallCoilSvg()
|
||||
val navController = rememberNavController()
|
||||
val dark = LocalDarkTheme.current
|
||||
val navBg = if (dark) ColorMs.NightPrimary else ColorMs.LightPrimary
|
||||
CompositionLocalProvider(LocalBgPhoto provides bgPhoto) {
|
||||
Box(
|
||||
Modifier
|
||||
.fillMaxSize()
|
||||
.background(navBg),
|
||||
) {
|
||||
NavHost(
|
||||
navController = navController,
|
||||
startDestination = startDestination,
|
||||
modifier = Modifier.fillMaxSize().background(navBg),
|
||||
enterTransition = { llmpSlideFadeEnter() },
|
||||
exitTransition = { llmpSlideFadeExit() },
|
||||
popEnterTransition = { llmpSlideFadePopEnter() },
|
||||
popExitTransition = { llmpSlideFadePopExit() },
|
||||
) {
|
||||
composable(
|
||||
Routes.SPLASH,
|
||||
enterTransition = { EnterTransition.None },
|
||||
exitTransition = { ExitTransition.None },
|
||||
popEnterTransition = { EnterTransition.None },
|
||||
popExitTransition = { ExitTransition.None },
|
||||
) {
|
||||
SplashScreen(
|
||||
onFinished = {
|
||||
navController.navigate(Routes.MAIN) {
|
||||
popUpTo(Routes.SPLASH) { inclusive = true }
|
||||
launchSingleTop = true
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
composable(Routes.MAIN) {
|
||||
MainShell(
|
||||
onOpenSettings = { navController.navigate(Routes.SETTINGS) },
|
||||
onOpenRoute = { route -> navController.navigate(route) },
|
||||
bgPhoto = bgPhoto,
|
||||
onBgPhotoChange = { bgPhoto = it },
|
||||
)
|
||||
}
|
||||
composable(
|
||||
Routes.PLAYER,
|
||||
enterTransition = { EnterTransition.None },
|
||||
exitTransition = { ExitTransition.None },
|
||||
popEnterTransition = { EnterTransition.None },
|
||||
popExitTransition = { ExitTransition.None },
|
||||
) {
|
||||
LaunchedEffect(Unit) {
|
||||
val popped = navController.popBackStack(Routes.MAIN, inclusive = false)
|
||||
if (!popped) {
|
||||
navController.navigate(Routes.MAIN) {
|
||||
launchSingleTop = true
|
||||
}
|
||||
}
|
||||
AppContainer.weSlide.show()
|
||||
}
|
||||
}
|
||||
composable(Routes.SETTINGS) {
|
||||
SettingsScreen(
|
||||
darkTheme = darkPref,
|
||||
followSystem = followSystem,
|
||||
onFollowSystemChange = {
|
||||
followSystem = it
|
||||
settings.followSystemTheme = it
|
||||
},
|
||||
onDarkThemeChange = {
|
||||
darkPref = it
|
||||
settings.isDark = it
|
||||
followSystem = false
|
||||
settings.followSystemTheme = false
|
||||
},
|
||||
onBack = { navController.popBackStack() },
|
||||
onOpenSd = { navController.navigate(Routes.SD) },
|
||||
onOpenLogs = { navController.navigate(Routes.LOGS) },
|
||||
onOpenPermissions = { navController.navigate(Routes.PERMISSIONS) },
|
||||
onBgPhotoChange = { path ->
|
||||
bgPhoto = path
|
||||
settings.backgroundPhoto = path
|
||||
},
|
||||
)
|
||||
}
|
||||
composable(Routes.SCAN) {
|
||||
val previous = navController.previousBackStackEntry?.destination?.route
|
||||
ScanScreen(
|
||||
onBack = { navController.popBackStack() },
|
||||
onConnectedHost = { host ->
|
||||
when (previous) {
|
||||
Routes.DATA_SYNC -> AppContainer.dataSync.connect(host)
|
||||
else -> AppContainer.musicTransfer.connect(host)
|
||||
}
|
||||
navController.popBackStack()
|
||||
},
|
||||
)
|
||||
}
|
||||
composable(Routes.TRANSFER) {
|
||||
TransferScreen(
|
||||
onBack = { navController.popBackStack() },
|
||||
onOpenScan = { navController.navigate(Routes.SCAN) },
|
||||
)
|
||||
}
|
||||
composable(Routes.DATA_SYNC) {
|
||||
DataSyncScreen(
|
||||
onBack = { navController.popBackStack() },
|
||||
onOpenScan = { navController.navigate(Routes.SCAN) },
|
||||
)
|
||||
}
|
||||
composable(Routes.DRIVE_MODE) {
|
||||
DriveModeScreen(onBack = { navController.popBackStack() })
|
||||
}
|
||||
composable(Routes.SD) {
|
||||
SdScreen(onBack = { navController.popBackStack() })
|
||||
}
|
||||
composable(Routes.PERMISSIONS) {
|
||||
PermissionsScreen(onBack = { navController.popBackStack() })
|
||||
}
|
||||
composable(Routes.MOEGIRL) {
|
||||
MoegirlScreen(onBack = { navController.popBackStack() })
|
||||
}
|
||||
composable(Routes.TACHIE) {
|
||||
TachieScreen(onBack = { navController.popBackStack() })
|
||||
}
|
||||
composable(Routes.DAILY) {
|
||||
DailyScreen(onBack = { navController.popBackStack() })
|
||||
}
|
||||
composable(Routes.LOGS) {
|
||||
LogsScreen(onBack = { navController.popBackStack() })
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,359 @@
|
||||
package top.zhushenwudi.llmp
|
||||
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.combine
|
||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.launch
|
||||
import top.zhushenwudi.llmp.data.DataImportService
|
||||
import top.zhushenwudi.llmp.db.LibraryRepository
|
||||
import top.zhushenwudi.llmp.db.LlmpDatabase
|
||||
import top.zhushenwudi.llmp.db.MusicRepository
|
||||
import top.zhushenwudi.llmp.domain.GroupKey
|
||||
import top.zhushenwudi.llmp.domain.Music
|
||||
import top.zhushenwudi.llmp.lyric.LoadedLyric
|
||||
import top.zhushenwudi.llmp.lyric.LrcParser
|
||||
import top.zhushenwudi.llmp.lyric.LyricService
|
||||
import top.zhushenwudi.llmp.network.OssApi
|
||||
import top.zhushenwudi.llmp.network.WsClient
|
||||
import top.zhushenwudi.llmp.network.createHttpClient
|
||||
import top.zhushenwudi.llmp.platform.CarPlayCatalog
|
||||
import top.zhushenwudi.llmp.platform.FileSystem
|
||||
import top.zhushenwudi.llmp.platform.PlatformServices
|
||||
import top.zhushenwudi.llmp.platform.createFileSystem
|
||||
import top.zhushenwudi.llmp.player.PlayerController
|
||||
import top.zhushenwudi.llmp.player.SleepTimer
|
||||
import top.zhushenwudi.llmp.settings.AppSettings
|
||||
import top.zhushenwudi.llmp.splash.SplashPhotoService
|
||||
import top.zhushenwudi.llmp.transfer.DataSyncService
|
||||
import top.zhushenwudi.llmp.transfer.MusicTransferService
|
||||
import top.zhushenwudi.llmp.update.UpdateChecker
|
||||
import top.zhushenwudi.llmp.ui.weslide.WeSlideController
|
||||
import top.zhushenwudi.llmp.util.PathResolver
|
||||
|
||||
object AppContainer {
|
||||
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.Default)
|
||||
private var lyricJob: Job? = null
|
||||
private var desktopLyricJob: Job? = null
|
||||
private var playQueueJob: Job? = null
|
||||
private var historyJob: Job? = null
|
||||
private val _playingLyric = MutableStateFlow(LoadedLyric())
|
||||
private val _historyRevision = MutableStateFlow(0L)
|
||||
private val _loveRevision = MutableStateFlow(0L)
|
||||
|
||||
/** Flutter LyricLogic.fullLrc — refreshed on each track change. */
|
||||
val playingLyric: StateFlow<LoadedLyric> = _playingLyric.asStateFlow()
|
||||
|
||||
/** Bumps when History is written (Flutter refreshMusicTimestamp → recentList). */
|
||||
val historyRevision: StateFlow<Long> = _historyRevision.asStateFlow()
|
||||
|
||||
/** Bumps when Love changes (Flutter toggleLove → findAllLoveListByGroup). */
|
||||
val loveRevision: StateFlow<Long> = _loveRevision.asStateFlow()
|
||||
|
||||
/** Home WeSlide panel controller (Flutter GlobalLogic.mobileWeSlideController). */
|
||||
val weSlide = WeSlideController()
|
||||
val weSlideFooter = WeSlideController(initial = true)
|
||||
|
||||
/** Flutter GlobalLogic.currentGroup — survives MainShell leave/recompose. */
|
||||
var currentGroup: GroupKey = GroupKey.GROUP_ALL
|
||||
|
||||
lateinit var settings: AppSettings
|
||||
private set
|
||||
lateinit var database: LlmpDatabase
|
||||
private set
|
||||
lateinit var musicRepository: MusicRepository
|
||||
private set
|
||||
lateinit var library: LibraryRepository
|
||||
private set
|
||||
lateinit var player: PlayerController
|
||||
private set
|
||||
lateinit var fileSystem: FileSystem
|
||||
private set
|
||||
lateinit var pathResolver: PathResolver
|
||||
private set
|
||||
lateinit var ossApi: OssApi
|
||||
private set
|
||||
lateinit var dataImport: DataImportService
|
||||
private set
|
||||
lateinit var lyricService: LyricService
|
||||
private set
|
||||
lateinit var musicTransfer: MusicTransferService
|
||||
private set
|
||||
lateinit var dataSync: DataSyncService
|
||||
private set
|
||||
lateinit var updateChecker: UpdateChecker
|
||||
private set
|
||||
lateinit var sleepTimer: SleepTimer
|
||||
private set
|
||||
lateinit var splashPhoto: SplashPhotoService
|
||||
private set
|
||||
|
||||
val platform get() = PlatformServices
|
||||
val carPlayCatalog: CarPlayCatalog get() = PlatformServices.carPlayCatalog
|
||||
|
||||
val isInitialized: Boolean
|
||||
get() = ::settings.isInitialized
|
||||
|
||||
fun init(
|
||||
settings: AppSettings,
|
||||
database: LlmpDatabase,
|
||||
player: PlayerController,
|
||||
fileSystem: FileSystem = createFileSystem(),
|
||||
) {
|
||||
this.settings = settings
|
||||
this.database = database
|
||||
this.musicRepository = MusicRepository(database)
|
||||
this.library = LibraryRepository(database)
|
||||
this.player = player
|
||||
this.fileSystem = fileSystem
|
||||
this.pathResolver = PathResolver(fileSystem, settings)
|
||||
// Keep Music.musicPath relative; resolve file/http URI only for the engine.
|
||||
player.resolvePlaybackUri = { pathResolver.playbackUri(it) }
|
||||
// Android notification artwork (file:// / https); iOS Now Playing prefers absolute path.
|
||||
player.resolveCoverUri = { music ->
|
||||
pathResolver.absoluteCoverPath(music)
|
||||
?.takeIf { fileSystem.exists(it) }
|
||||
?: pathResolver.coverDisplayUri(music)
|
||||
}
|
||||
|
||||
val http = createHttpClient()
|
||||
this.ossApi = OssApi(http)
|
||||
this.dataImport = DataImportService(ossApi, library, settings, pathResolver)
|
||||
this.lyricService = LyricService(ossApi, library)
|
||||
bindLyricLoader()
|
||||
bindDesktopLyric()
|
||||
this.musicTransfer = MusicTransferService(
|
||||
WsClient(http),
|
||||
ossApi,
|
||||
library,
|
||||
fileSystem,
|
||||
pathResolver,
|
||||
scope,
|
||||
)
|
||||
this.dataSync = DataSyncService(WsClient(http), library, scope)
|
||||
this.updateChecker = UpdateChecker(ossApi)
|
||||
this.sleepTimer = SleepTimer(scope) {
|
||||
player.pause()
|
||||
}
|
||||
this.splashPhoto = SplashPhotoService(fileSystem, ossApi, scope)
|
||||
|
||||
// Bind CarPlay catalog play → player; refresh from library snapshot.
|
||||
PlatformServices.carPlayCatalog.onPlay = { musicId, queue ->
|
||||
val items = queue.mapNotNull { library.getMusicById(it.musicId) }
|
||||
val idx = items.indexOfFirst { it.musicId == musicId }.coerceAtLeast(0)
|
||||
if (items.isNotEmpty()) {
|
||||
player.setQueue(items, idx)
|
||||
player.play()
|
||||
persistPlayQueue()
|
||||
}
|
||||
}
|
||||
refreshCarPlayCatalog()
|
||||
PlatformServices.desktopLyric.enabled = settings.enableDesktopLyric
|
||||
PlatformServices.carPlay.bind(PlatformServices.carPlayCatalog)
|
||||
|
||||
// Flutter DBLogic.findAllPlayListMusics(needPlay: false)
|
||||
restoreSavedPlayQueue(needPlay = false)
|
||||
bindPlayQueuePersistence()
|
||||
bindHistoryOnTrackChange()
|
||||
}
|
||||
|
||||
/** Flutter updatePlayingList / persistencePlayList (non-empty only). */
|
||||
fun persistPlayQueue(
|
||||
queue: List<Music> = player.state.value.queue,
|
||||
playingId: String? = player.state.value.current?.musicId,
|
||||
) {
|
||||
if (!isInitialized) return
|
||||
if (queue.isEmpty()) return
|
||||
library.savePlayList(queue, playingId)
|
||||
}
|
||||
|
||||
/** Flutter PlayerLogic.removeMusic + DB update. */
|
||||
fun removeFromPlayQueue(index: Int) {
|
||||
player.removeAt(index)
|
||||
val queue = player.state.value.queue
|
||||
if (queue.isEmpty()) library.clearPlayList() else persistPlayQueue()
|
||||
}
|
||||
|
||||
/** Flutter PlayerLogic.removeAllMusics. */
|
||||
fun clearPlayQueue() {
|
||||
player.clearQueue()
|
||||
library.clearPlayList()
|
||||
_playingLyric.value = LoadedLyric()
|
||||
}
|
||||
|
||||
/**
|
||||
* Flutter findAllPlayListMusics — restore queue into player without auto-play by default.
|
||||
*/
|
||||
fun restoreSavedPlayQueue(needPlay: Boolean = false) {
|
||||
if (!isInitialized) return
|
||||
val rows = library.loadPlayListRows()
|
||||
if (rows.isEmpty()) return
|
||||
val ids = rows.map { it.musicId }
|
||||
val playingId = rows.firstOrNull { it.isPlaying != 0L }?.musicId
|
||||
val musics = library.getMusicByIdsPreservingOrder(ids, settings.enableHttp)
|
||||
if (musics.isEmpty()) return
|
||||
val index = playingId
|
||||
?.let { pid -> musics.indexOfFirst { it.musicId == pid } }
|
||||
?.takeIf { it >= 0 }
|
||||
?: 0
|
||||
player.setQueue(musics, index)
|
||||
player.setLoopMode(settings.loopMode)
|
||||
if (needPlay) player.play()
|
||||
}
|
||||
|
||||
/** Persist on queue / current-track change (Flutter currentIndexStream + mutation sites). */
|
||||
private fun bindPlayQueuePersistence() {
|
||||
playQueueJob?.cancel()
|
||||
playQueueJob = scope.launch {
|
||||
player.state
|
||||
.map { st -> st.queue.map { it.musicId } to st.current?.musicId }
|
||||
.distinctUntilChanged()
|
||||
.collect {
|
||||
persistPlayQueue()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Flutter [DBLogic.refreshMusicTimestamp]: upsert History + notify recent UI.
|
||||
* Call on track change and when replaying the same song (id unchanged).
|
||||
*/
|
||||
fun recordPlayingHistory(musicId: String?) {
|
||||
if (!isInitialized || musicId.isNullOrBlank()) return
|
||||
library.addHistory(musicId)
|
||||
_historyRevision.value = _historyRevision.value + 1
|
||||
}
|
||||
|
||||
/**
|
||||
* Flutter [PlayerLogic.toggleLove]: write Love + refresh loveList observers.
|
||||
* @return new loved state
|
||||
*/
|
||||
fun toggleLove(musicId: String?): Boolean {
|
||||
if (!isInitialized || musicId.isNullOrBlank()) return false
|
||||
val loved = library.toggleLove(musicId)
|
||||
_loveRevision.value = _loveRevision.value + 1
|
||||
refreshCarPlayCatalog()
|
||||
return loved
|
||||
}
|
||||
|
||||
/**
|
||||
* Flutter `currentIndexStream` → refreshMusicTimestamp:
|
||||
* every actual track change updates History so「最近播放」follows play order.
|
||||
*/
|
||||
private fun bindHistoryOnTrackChange() {
|
||||
historyJob?.cancel()
|
||||
historyJob = scope.launch {
|
||||
player.state
|
||||
.map { it.current?.musicId }
|
||||
.distinctUntilChanged()
|
||||
.collect { musicId ->
|
||||
recordPlayingHistory(musicId)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun refreshCarPlayCatalog() {
|
||||
if (!isInitialized) return
|
||||
PlatformServices.carPlayCatalog.setLibrary(
|
||||
allMusic = library.getAllMusic(),
|
||||
albums = library.getAllAlbums(),
|
||||
love = library.getLovedMusic(),
|
||||
menuList = library.getAllMenus(),
|
||||
)
|
||||
PlatformServices.carPlay.refreshCatalog()
|
||||
}
|
||||
|
||||
/** Flutter `LyricLogic.getLrc(false)` on playingMusic change. */
|
||||
private fun bindLyricLoader() {
|
||||
lyricJob?.cancel()
|
||||
lyricJob = scope.launch {
|
||||
player.state
|
||||
.map { it.current?.musicId }
|
||||
.distinctUntilChanged()
|
||||
.collect { musicId ->
|
||||
if (musicId.isNullOrBlank()) {
|
||||
_playingLyric.value = LoadedLyric()
|
||||
return@collect
|
||||
}
|
||||
val music = library.getMusicById(musicId)
|
||||
?: player.state.value.current
|
||||
?: return@collect
|
||||
_playingLyric.value = runCatching {
|
||||
lyricService.getLrc(music, forceRefresh = false)
|
||||
}.getOrDefault(LoadedLyric())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Flutter [LyricLogic.postDesktopAndWidgetLyric]: keep floating lyric in sync
|
||||
* from player position + loaded LRC, even when FullPlayerScreen is not composed.
|
||||
*/
|
||||
private fun bindDesktopLyric() {
|
||||
desktopLyricJob?.cancel()
|
||||
desktopLyricJob = scope.launch {
|
||||
combine(
|
||||
player.state.map { it.positionMs to it.current?.musicId }.distinctUntilChanged(),
|
||||
_playingLyric,
|
||||
) { (positionMs, _), lyric ->
|
||||
positionMs to lyric
|
||||
}.collect { (positionMs, lyric) ->
|
||||
pushDesktopLyric(positionMs, lyric)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun pushDesktopLyric(positionMs: Long, lyric: LoadedLyric) {
|
||||
val lrcType = lyricService.lrcType
|
||||
val currentIdx = LrcParser.currentIndex(lyric.main, positionMs)
|
||||
val line1 = lyric.main.getOrNull(currentIdx)?.text
|
||||
?: lyric.main.getOrNull(0)?.text
|
||||
val line2 = when {
|
||||
lrcType > 0 -> lyric.translation.getOrNull(currentIdx)?.text
|
||||
?: lyric.main.getOrNull(currentIdx + 1)?.text
|
||||
else -> lyric.main.getOrNull(currentIdx + 1)?.text
|
||||
}
|
||||
val highlight = when {
|
||||
lyric.main.isEmpty() -> -1
|
||||
currentIdx < 0 -> -1
|
||||
else -> 1
|
||||
}
|
||||
val displayLine1 = if (highlight < 0) (line1 ?: "暂无歌词") else line1
|
||||
PlatformServices.desktopLyric.updateLines(displayLine1, line2, highlight)
|
||||
}
|
||||
|
||||
/** Flutter getLrc(forceRefresh) — network + DB cache. */
|
||||
suspend fun reloadPlayingLyric(forceRefresh: Boolean = false): LoadedLyric {
|
||||
val musicId = player.state.value.current?.musicId ?: return LoadedLyric().also {
|
||||
_playingLyric.value = it
|
||||
}
|
||||
val music = library.getMusicById(musicId) ?: player.state.value.current
|
||||
?: return LoadedLyric().also { _playingLyric.value = it }
|
||||
val loaded = runCatching {
|
||||
lyricService.getLrc(music, forceRefresh = forceRefresh)
|
||||
}.getOrDefault(LoadedLyric())
|
||||
_playingLyric.value = loaded
|
||||
return loaded
|
||||
}
|
||||
|
||||
/**
|
||||
* Fire-and-forget reload on app [scope].
|
||||
* Safe to call from dialogs that dismiss immediately (Compose UI scopes get cancelled).
|
||||
*/
|
||||
fun requestReloadPlayingLyric(forceRefresh: Boolean = false) {
|
||||
scope.launch { reloadPlayingLyric(forceRefresh = forceRefresh) }
|
||||
}
|
||||
|
||||
/** Flutter reloadLyricToController — re-parse cached fullLrc only. */
|
||||
fun applyLyricDisplayType(): LoadedLyric {
|
||||
val loaded = lyricService.toLoaded()
|
||||
_playingLyric.value = loaded
|
||||
return loaded
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
package top.zhushenwudi.llmp.navigation
|
||||
|
||||
object Routes {
|
||||
const val SPLASH = "splash"
|
||||
const val MAIN = "main"
|
||||
const val PLAYER = "player"
|
||||
const val SETTINGS = "settings"
|
||||
const val ALBUM_DETAIL = "album/{albumId}"
|
||||
const val ARTIST_DETAIL = "artist/{artistId}"
|
||||
const val MENU_DETAIL = "menu/{menuId}"
|
||||
const val SCAN = "scan"
|
||||
const val TRANSFER = "transfer"
|
||||
const val DATA_SYNC = "data_sync"
|
||||
const val DRIVE_MODE = "drive_mode"
|
||||
const val SD = "sd"
|
||||
const val PERMISSIONS = "permissions"
|
||||
const val MOEGIRL = "moegirl"
|
||||
const val TACHIE = "tachie"
|
||||
const val DAILY = "daily"
|
||||
const val LOGS = "logs"
|
||||
|
||||
fun albumDetail(albumId: String) = "album/$albumId"
|
||||
fun artistDetail(artistId: String) = "artist/$artistId"
|
||||
fun menuDetail(menuId: Long) = "menu/$menuId"
|
||||
|
||||
fun parseLibraryDetail(route: String): LibraryDetail? = when {
|
||||
route.startsWith("album/") ->
|
||||
route.removePrefix("album/").takeIf { it.isNotEmpty() }?.let(LibraryDetail::Album)
|
||||
route.startsWith("artist/") ->
|
||||
route.removePrefix("artist/").takeIf { it.isNotEmpty() }?.let(LibraryDetail::Artist)
|
||||
route.startsWith("menu/") ->
|
||||
route.removePrefix("menu/").toLongOrNull()?.let(LibraryDetail::Menu)
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Flutter nested Navigator detail destinations — hosted over home (home stays composed)
|
||||
* so Hero / shared-element pop does not rebuild the library lists.
|
||||
*/
|
||||
sealed class LibraryDetail {
|
||||
data class Album(val albumId: String) : LibraryDetail()
|
||||
data class Artist(val artistId: String) : LibraryDetail()
|
||||
data class Menu(val menuId: Long) : LibraryDetail()
|
||||
}
|
||||
|
||||
enum class TopSection(val title: String) {
|
||||
LIBRARY("歌库"),
|
||||
MINE("我的"),
|
||||
}
|
||||
|
||||
/** Bottom bar tabs for the current top section (3 icons). */
|
||||
enum class BottomTab(val title: String) {
|
||||
SONGS("歌曲"),
|
||||
ALBUMS("专辑"),
|
||||
ARTISTS("歌手"),
|
||||
LOVE("我喜欢"),
|
||||
MENUS("歌单"),
|
||||
RECENT("最近播放"),
|
||||
;
|
||||
|
||||
companion object {
|
||||
fun forSection(section: TopSection): List<BottomTab> = when (section) {
|
||||
TopSection.LIBRARY -> listOf(SONGS, ALBUMS, ARTISTS)
|
||||
TopSection.MINE -> listOf(LOVE, MENUS, RECENT)
|
||||
}
|
||||
|
||||
/** page = topTabIndex * 3 + bottomIndex */
|
||||
fun fromPage(page: Int): BottomTab = when (page.coerceIn(0, 5)) {
|
||||
0 -> SONGS
|
||||
1 -> ALBUMS
|
||||
2 -> ARTISTS
|
||||
3 -> LOVE
|
||||
4 -> MENUS
|
||||
else -> RECENT
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Full library content pages (6), driven by top*3 + bottom. */
|
||||
enum class LibraryTab(val title: String) {
|
||||
SONGS("歌曲"),
|
||||
ALBUMS("专辑"),
|
||||
ARTISTS("歌手"),
|
||||
LOVE("我喜欢"),
|
||||
MENUS("歌单"),
|
||||
RECENT("最近播放"),
|
||||
;
|
||||
|
||||
companion object {
|
||||
fun fromPage(page: Int): LibraryTab = entries[page.coerceIn(0, entries.lastIndex)]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,157 @@
|
||||
@file:OptIn(ExperimentalSharedTransitionApi::class)
|
||||
|
||||
package top.zhushenwudi.llmp.navigation
|
||||
|
||||
import androidx.compose.animation.AnimatedContentTransitionScope
|
||||
import androidx.compose.animation.AnimatedVisibility
|
||||
import androidx.compose.animation.AnimatedVisibilityScope
|
||||
import androidx.compose.animation.EnterTransition
|
||||
import androidx.compose.animation.ExitTransition
|
||||
import androidx.compose.animation.ExperimentalSharedTransitionApi
|
||||
import androidx.compose.animation.SharedTransitionScope
|
||||
import androidx.compose.animation.core.EaseOutQuad
|
||||
import androidx.compose.animation.core.tween
|
||||
import androidx.compose.animation.fadeIn
|
||||
import androidx.compose.animation.fadeOut
|
||||
import androidx.compose.animation.scaleIn
|
||||
import androidx.compose.animation.scaleOut
|
||||
import androidx.compose.animation.slideInHorizontally
|
||||
import androidx.compose.animation.slideOutHorizontally
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.shape.CircleShape
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.compositionLocalOf
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Shape
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.navigation.NavBackStackEntry
|
||||
|
||||
/** Flutter Hero tags: album{id} / singer{uid} / menu{id}. */
|
||||
object HeroKeys {
|
||||
fun album(albumId: String) = "album$albumId"
|
||||
fun singer(uid: String) = "singer$uid"
|
||||
fun menu(menuId: Long) = "menu$menuId"
|
||||
}
|
||||
|
||||
val LocalSharedTransitionScope = compositionLocalOf<SharedTransitionScope?> { null }
|
||||
val LocalNavAnimatedVisibilityScope = compositionLocalOf<AnimatedVisibilityScope?> { null }
|
||||
|
||||
/** Currently open library detail — list items hide their hero source when matched. */
|
||||
val LocalOpenLibraryDetail = compositionLocalOf<LibraryDetail?> { null }
|
||||
|
||||
/** Flutter GetX defaultTransitionDuration = 300ms. */
|
||||
const val LlmpTransitionMs = 300
|
||||
|
||||
val HeroRoundedClip: Shape = RoundedCornerShape(12.dp)
|
||||
val HeroCircleClip: Shape = CircleShape
|
||||
|
||||
/**
|
||||
* Flutter GetX [RightToLeftFadeTransition]:
|
||||
* - Incoming: slide from right + fadeIn
|
||||
* - Outgoing (secondary): slide left only — **no fadeOut** (avoids white flash through both layers)
|
||||
*/
|
||||
fun AnimatedContentTransitionScope<NavBackStackEntry>.llmpSlideFadeEnter(): EnterTransition =
|
||||
slideInHorizontally(
|
||||
animationSpec = tween(LlmpTransitionMs, easing = EaseOutQuad),
|
||||
initialOffsetX = { fullWidth -> fullWidth },
|
||||
) + fadeIn(animationSpec = tween(LlmpTransitionMs, easing = EaseOutQuad))
|
||||
|
||||
fun AnimatedContentTransitionScope<NavBackStackEntry>.llmpSlideFadeExit(): ExitTransition =
|
||||
slideOutHorizontally(
|
||||
animationSpec = tween(LlmpTransitionMs, easing = EaseOutQuad),
|
||||
targetOffsetX = { fullWidth -> -fullWidth },
|
||||
)
|
||||
|
||||
fun AnimatedContentTransitionScope<NavBackStackEntry>.llmpSlideFadePopEnter(): EnterTransition =
|
||||
slideInHorizontally(
|
||||
animationSpec = tween(LlmpTransitionMs, easing = EaseOutQuad),
|
||||
initialOffsetX = { fullWidth -> -fullWidth },
|
||||
)
|
||||
|
||||
fun AnimatedContentTransitionScope<NavBackStackEntry>.llmpSlideFadePopExit(): ExitTransition =
|
||||
slideOutHorizontally(
|
||||
animationSpec = tween(LlmpTransitionMs, easing = EaseOutQuad),
|
||||
targetOffsetX = { fullWidth -> fullWidth },
|
||||
) + fadeOut(animationSpec = tween(LlmpTransitionMs, easing = EaseOutQuad))
|
||||
|
||||
/**
|
||||
* Shared-element modifier for a cover already inside an [AnimatedVisibilityScope].
|
||||
* Place **after** size / aspectRatio; clip is applied via overlay clip (not parent clip).
|
||||
*/
|
||||
@Composable
|
||||
fun Modifier.llmpSharedElement(
|
||||
key: String,
|
||||
animatedVisibilityScope: AnimatedVisibilityScope,
|
||||
clipShape: Shape = HeroRoundedClip,
|
||||
): Modifier {
|
||||
val sharedScope = LocalSharedTransitionScope.current ?: return this
|
||||
if (key.isEmpty()) return this
|
||||
return with(sharedScope) {
|
||||
this@llmpSharedElement.sharedElement(
|
||||
sharedContentState = rememberSharedContentState(key = key),
|
||||
animatedVisibilityScope = animatedVisibilityScope,
|
||||
boundsTransform = { _, _ ->
|
||||
tween(durationMillis = LlmpTransitionMs, easing = EaseOutQuad)
|
||||
},
|
||||
clipInOverlayDuringTransition = OverlayClip(clipShape),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Detail-page cover: uses [LocalNavAnimatedVisibilityScope] from the detail overlay.
|
||||
*/
|
||||
@Composable
|
||||
fun Modifier.llmpDetailSharedElement(
|
||||
key: String,
|
||||
clipShape: Shape = HeroRoundedClip,
|
||||
): Modifier {
|
||||
val visibilityScope = LocalNavAnimatedVisibilityScope.current ?: return this
|
||||
return llmpSharedElement(key, visibilityScope, clipShape)
|
||||
}
|
||||
|
||||
/**
|
||||
* List-side hero source (Google snack pattern): hide when this item's detail is open so
|
||||
* only one end of the shared element is "visible" at a time — avoids flicker / small-icon flash.
|
||||
*
|
||||
* [slotModifier] should include size (e.g. fillMaxWidth + aspectRatio, or size(48.dp)).
|
||||
*/
|
||||
@Composable
|
||||
fun HeroCoverSlot(
|
||||
key: String,
|
||||
visible: Boolean,
|
||||
clipShape: Shape = HeroRoundedClip,
|
||||
slotModifier: Modifier = Modifier,
|
||||
content: @Composable (heroModifier: Modifier) -> Unit,
|
||||
) {
|
||||
val sharedScope = LocalSharedTransitionScope.current
|
||||
Box(slotModifier) {
|
||||
if (sharedScope == null || key.isEmpty()) {
|
||||
content(Modifier.fillMaxSize())
|
||||
return@Box
|
||||
}
|
||||
AnimatedVisibility(
|
||||
visible = visible,
|
||||
enter = fadeIn(tween(160)) + scaleIn(tween(160), initialScale = 0.92f),
|
||||
exit = fadeOut(tween(160)) + scaleOut(tween(160), targetScale = 0.92f),
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
) {
|
||||
content(
|
||||
Modifier
|
||||
.fillMaxSize()
|
||||
.llmpSharedElement(key, animatedVisibilityScope = this, clipShape = clipShape),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun LibraryDetail?.hidesAlbum(albumId: String): Boolean =
|
||||
this is LibraryDetail.Album && this.albumId == albumId
|
||||
|
||||
fun LibraryDetail?.hidesArtist(artistId: String): Boolean =
|
||||
this is LibraryDetail.Artist && this.artistId == artistId
|
||||
|
||||
fun LibraryDetail?.hidesMenu(menuId: Long): Boolean =
|
||||
this is LibraryDetail.Menu && this.menuId == menuId
|
||||
@@ -0,0 +1,7 @@
|
||||
package top.zhushenwudi.llmp.platform
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
|
||||
/** System back while library detail overlay is open. */
|
||||
@Composable
|
||||
expect fun DetailBackHandler(enabled: Boolean, onBack: () -> Unit)
|
||||