diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..13372ae
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..1d9e086
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Thu Aug 09 10:54:29 CST 2018
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
\ No newline at end of file
diff --git a/modules/module_base.gradle b/modules/module_base.gradle
new file mode 100644
index 0000000..9062e29
--- /dev/null
+++ b/modules/module_base.gradle
@@ -0,0 +1,53 @@
+/*
+ * 文件说明:module的基础配置
+ */
+apply plugin: "com.android.library"
+apply plugin: "org.jetbrains.kotlin.android"
+apply plugin: "kotlin-android"
+apply plugin: "kotlin-kapt"
+apply plugin: "com.alibaba.arouter"
+
+android {
+ compileSdkVersion COMPILE_SDK_VERSION.toInteger()
+ defaultConfig {
+ minSdkVersion MIN_SDK_VERSION.toInteger()
+ targetSdkVersion TARGET_SDK_VERSION.toInteger()
+ versionCode 1
+ versionName "1.0.0"
+ consumerProguardFiles 'proguard-rules.pro'
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled true
+ zipAlignEnabled true
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ debug {
+ debuggable true
+ minifyEnabled false
+ }
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_11
+ targetCompatibility JavaVersion.VERSION_11
+ }
+
+ kotlinOptions {
+ jvmTarget = '11'
+ }
+
+}
+
+dependencies {
+ implementation 'com.google.android.material:material:1.6.1'
+ implementation 'androidx.core:core-ktx:1.9.0'
+ implementation 'androidx.appcompat:appcompat:1.6.1'
+
+ // aRouter
+ api 'com.alibaba:arouter-api:1.4.0'
+ api 'com.alibaba:arouter-annotation:1.0.6'
+ kapt 'com.alibaba:arouter-compiler:1.5.2'
+}
+
diff --git a/modules/module_base/.gitignore b/modules/module_base/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/modules/module_base/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/modules/module_base/build.gradle b/modules/module_base/build.gradle
new file mode 100644
index 0000000..fdc2b1d
--- /dev/null
+++ b/modules/module_base/build.gradle
@@ -0,0 +1,11 @@
+apply from: "../module_base.gradle"
+
+android {
+ namespace 'com.example.module_base'
+}
+
+kapt {
+ arguments {
+ arg("AROUTER_MODULE_NAME", project.getName())
+ }
+}
\ No newline at end of file
diff --git a/modules/module_base/consumer-rules.pro b/modules/module_base/consumer-rules.pro
new file mode 100644
index 0000000..e69de29
diff --git a/modules/module_base/proguard-rules.pro b/modules/module_base/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/modules/module_base/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/modules/module_base/src/main/AndroidManifest.xml b/modules/module_base/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..a5918e6
--- /dev/null
+++ b/modules/module_base/src/main/AndroidManifest.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/config/RouterPath.kt b/modules/module_base/src/main/java/com/example/module_base/config/RouterPath.kt
new file mode 100644
index 0000000..0730832
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/config/RouterPath.kt
@@ -0,0 +1,9 @@
+package com.example.module_base.config
+
+/**
+ * Created by Max on 2023/11/22 16:01
+ * Desc:
+ **/
+object RouterPath {
+ const val GOOGLE_SERVICE = "/google/service"
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/billing/IAccountIdentifiers.kt b/modules/module_base/src/main/java/com/example/module_base/support/billing/IAccountIdentifiers.kt
new file mode 100644
index 0000000..21de13f
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/billing/IAccountIdentifiers.kt
@@ -0,0 +1,12 @@
+package com.example.module_base.support.billing
+
+/**
+ * Created by Max on 2023/11/22 20:55
+ * Desc:
+ **/
+interface IAccountIdentifiers {
+
+ fun getObfuscatedAccountId(): String?
+
+ fun getObfuscatedProfileId(): String?
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/billing/IBillingResult.kt b/modules/module_base/src/main/java/com/example/module_base/support/billing/IBillingResult.kt
new file mode 100644
index 0000000..3598e3a
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/billing/IBillingResult.kt
@@ -0,0 +1,12 @@
+package com.example.module_base.support.billing
+
+
+/**
+ * Created by Max on 2023/11/22 20:20
+ * Desc:
+ **/
+interface IBillingResult {
+ fun getResponseCode(): Int
+
+ fun isResponseOk(): Boolean
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/billing/IBillingService.kt b/modules/module_base/src/main/java/com/example/module_base/support/billing/IBillingService.kt
new file mode 100644
index 0000000..7d5d143
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/billing/IBillingService.kt
@@ -0,0 +1,34 @@
+package com.example.module_base.support.billing
+
+/**
+ * Created by Max on 2023/11/22 17:44
+ * Desc:支付
+ **/
+@Deprecated("逐步迁移到IBillingService2")
+interface IBillingService {
+ fun setLogEnabled(enabled: Boolean)
+
+ fun isServiceConnected(): Boolean
+
+ fun onQueryPurchases()
+
+ fun querySkuDetailsAsync(
+ productIdList: List,
+ listener: IBillingService.ProductDetailsResponseListener
+ )
+
+ fun consumeAsync(purchaseToken: String)
+
+ fun initiatePurchaseFlow(productDetails: IProductDetails, recordId: String)
+
+ fun destroy()
+
+ interface Listener {
+ fun onBillingClientSetupFinished()
+ fun onPurchasesUpdated(purchases: List)
+ fun onConsumeFinished(token: String?, result: Int)
+ fun onFailedHandle(result: Int)
+ }
+
+ interface ProductDetailsResponseListener : OnProductDetailsResponseListener
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/billing/IBillingService2.kt b/modules/module_base/src/main/java/com/example/module_base/support/billing/IBillingService2.kt
new file mode 100644
index 0000000..851b5a5
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/billing/IBillingService2.kt
@@ -0,0 +1,31 @@
+package com.example.module_base.support.billing
+
+/**
+ * Created by Max on 2023/11/22 17:44
+ * Desc:支付
+ **/
+interface IBillingService2 {
+
+ fun setLogEnabled(enabled: Boolean)
+
+ fun startConnection(listener: OnBillingClientStateListener)
+
+ fun isServiceConnected(): Boolean
+
+ fun queryPurchases(listener: OnPurchasesResponseListener)
+
+ fun querySkuDetailsAsync(
+ productIdList: List,
+ listener: OnProductDetailsResponseListener
+ )
+
+ fun consumeAsync(purchaseToken: String, listener: OnConsumeResponseListener)
+
+ fun launchBillingFlow(productDetails: IProductDetails, recordId: String)
+
+ fun destroy()
+
+ interface Listener {
+ fun onPurchasesUpdated(billingResult: IBillingResult, purchases: List?)
+ }
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/billing/IOneTimePurchaseOfferDetails.kt b/modules/module_base/src/main/java/com/example/module_base/support/billing/IOneTimePurchaseOfferDetails.kt
new file mode 100644
index 0000000..8c87fd7
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/billing/IOneTimePurchaseOfferDetails.kt
@@ -0,0 +1,13 @@
+package com.example.module_base.support.billing
+
+/**
+ * Created by Max on 2023/11/22 21:06
+ * Desc:
+ **/
+interface IOneTimePurchaseOfferDetails {
+ fun getPriceAmountMicros(): Long
+
+ fun getFormattedPrice(): String
+
+ fun getPriceCurrencyCode(): String
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/billing/IProductDetails.kt b/modules/module_base/src/main/java/com/example/module_base/support/billing/IProductDetails.kt
new file mode 100644
index 0000000..d119dc5
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/billing/IProductDetails.kt
@@ -0,0 +1,14 @@
+package com.example.module_base.support.billing
+
+/**
+ * Created by Max on 2023/11/22 20:17
+ * Desc:
+ **/
+interface IProductDetails {
+
+ fun getData(): Any
+
+ fun getProductId(): String
+
+ fun getOneTimePurchaseOfferDetails(): IOneTimePurchaseOfferDetails?
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/billing/IPurchase.kt b/modules/module_base/src/main/java/com/example/module_base/support/billing/IPurchase.kt
new file mode 100644
index 0000000..1cca64a
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/billing/IPurchase.kt
@@ -0,0 +1,23 @@
+package com.example.module_base.support.billing
+
+/**
+ * Created by Max on 2023/11/22 19:22
+ * Desc:
+ **/
+interface IPurchase {
+
+ fun getData(): Any
+
+ fun getPurchaseState(): Int
+
+ fun isPurchasedState(): Boolean
+
+ fun getAccountIdentifiers(): IAccountIdentifiers?
+ fun getProducts(): List
+
+ fun getPackageName(): String
+
+ fun getPurchaseToken(): String
+
+ fun getOrderId(): String?
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/billing/OnBillingClientStateListener.kt b/modules/module_base/src/main/java/com/example/module_base/support/billing/OnBillingClientStateListener.kt
new file mode 100644
index 0000000..95e6600
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/billing/OnBillingClientStateListener.kt
@@ -0,0 +1,5 @@
+package com.example.module_base.support.billing
+
+interface OnBillingClientStateListener {
+ fun onBillingSetupFinished(billingResult: IBillingResult)
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/billing/OnConsumeResponseListener.kt b/modules/module_base/src/main/java/com/example/module_base/support/billing/OnConsumeResponseListener.kt
new file mode 100644
index 0000000..03dc9df
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/billing/OnConsumeResponseListener.kt
@@ -0,0 +1,8 @@
+package com.example.module_base.support.billing
+
+interface OnConsumeResponseListener {
+ fun onConsumeResponse(
+ billingResult: IBillingResult,
+ purchaseToken: String
+ )
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/billing/OnProductDetailsResponseListener.kt b/modules/module_base/src/main/java/com/example/module_base/support/billing/OnProductDetailsResponseListener.kt
new file mode 100644
index 0000000..3ff4584
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/billing/OnProductDetailsResponseListener.kt
@@ -0,0 +1,8 @@
+package com.example.module_base.support.billing
+
+interface OnProductDetailsResponseListener {
+ fun onProductDetailsResponse(
+ billingResult: IBillingResult,
+ productDetails: List
+ )
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/billing/OnPurchasesResponseListener.kt b/modules/module_base/src/main/java/com/example/module_base/support/billing/OnPurchasesResponseListener.kt
new file mode 100644
index 0000000..0ddd334
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/billing/OnPurchasesResponseListener.kt
@@ -0,0 +1,5 @@
+package com.example.module_base.support.billing
+
+interface OnPurchasesResponseListener {
+ fun onQueryPurchasesResponse(billingResult: IBillingResult, purchases: List)
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/google/IGoogleService.kt b/modules/module_base/src/main/java/com/example/module_base/support/google/IGoogleService.kt
new file mode 100644
index 0000000..c9ff25e
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/google/IGoogleService.kt
@@ -0,0 +1,50 @@
+package com.example.module_base.support.google
+
+import android.app.Activity
+import com.alibaba.android.arouter.facade.template.IProvider
+import com.alibaba.android.arouter.launcher.ARouter
+import com.example.module_base.support.billing.IBillingService
+import com.example.module_base.support.billing.IBillingService2
+import com.example.module_base.support.login.ILoginService
+
+/**
+ * Created by Max on 2023/11/22 15:30
+ * Desc:google服务
+ **/
+interface IGoogleService : IProvider {
+ companion object {
+ val instance: IGoogleService? by lazy {
+ ARouter.getInstance().navigation(IGoogleService::class.java)
+ }
+
+ fun newLoginService(): ILoginService? {
+ return instance?.newLoginService()
+ }
+
+ fun newBillingService(
+ activity: Activity,
+ listener: IBillingService.Listener
+ ): IBillingService? {
+ return instance?.newBillingService(activity, listener)
+ }
+
+ fun newBillingService2(
+ activity: Activity,
+ listener: IBillingService2.Listener
+ ): IBillingService2? {
+ return instance?.newBillingService2(activity, listener)
+ }
+ }
+
+ fun newLoginService(): ILoginService
+
+ fun newBillingService(
+ activity: Activity,
+ listener: IBillingService.Listener
+ ): IBillingService
+
+ fun newBillingService2(
+ activity: Activity,
+ listener: IBillingService2.Listener
+ ): IBillingService2
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/login/ILoginService.kt b/modules/module_base/src/main/java/com/example/module_base/support/login/ILoginService.kt
new file mode 100644
index 0000000..40377c6
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/login/ILoginService.kt
@@ -0,0 +1,22 @@
+package com.example.module_base.support.login
+
+import android.app.Activity
+import android.content.Intent
+
+/**
+ * Created by Max on 2023/11/22 15:52
+ * Desc:登录服务
+ **/
+interface ILoginService {
+
+ fun login(activity: Activity, listener: Listener)
+
+ fun logout()
+
+ fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
+
+ interface Listener {
+ fun onSuccess(platformInfo: PlatformInfo)
+ fun onFailure(exception: LoginSDKException)
+ }
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/login/LoginSDKException.kt b/modules/module_base/src/main/java/com/example/module_base/support/login/LoginSDKException.kt
new file mode 100644
index 0000000..da315d4
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/login/LoginSDKException.kt
@@ -0,0 +1,21 @@
+package com.example.module_base.support.login
+
+/**
+ * Created by Max on 2023/11/22 17:06
+ * Desc:登录SDK-异常
+ **/
+class LoginSDKException : Exception {
+ private var code: Int = -1
+
+ fun getCode(): Int {
+ return code
+ }
+
+ constructor(code: Int) : super() {
+ this.code = code
+ }
+
+ constructor(code: Int, cause: Throwable?) : super(cause) {
+ this.code = code
+ }
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/java/com/example/module_base/support/login/PlatformInfo.kt b/modules/module_base/src/main/java/com/example/module_base/support/login/PlatformInfo.kt
new file mode 100644
index 0000000..d255bae
--- /dev/null
+++ b/modules/module_base/src/main/java/com/example/module_base/support/login/PlatformInfo.kt
@@ -0,0 +1,8 @@
+package com.example.module_base.support.login
+
+/**
+ * Created by Max on 2023/11/22 15:45
+ * Desc:第三方平台信息
+ **/
+data class PlatformInfo(val id: String, var name: String?, var gender: Int?, var avatar: String?) {
+}
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/color/base_selector_color_theme_btn.xml b/modules/module_base/src/main/res/color/base_selector_color_theme_btn.xml
new file mode 100644
index 0000000..8249e40
--- /dev/null
+++ b/modules/module_base/src/main/res/color/base_selector_color_theme_btn.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_arrow_right_1e1e1f.xml b/modules/module_base/src/main/res/drawable/base_arrow_right_1e1e1f.xml
new file mode 100644
index 0000000..1259010
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_arrow_right_1e1e1f.xml
@@ -0,0 +1,13 @@
+
+
+
diff --git a/modules/module_base/src/main/res/drawable/base_arrow_right_f1f1fa.xml b/modules/module_base/src/main/res/drawable/base_arrow_right_f1f1fa.xml
new file mode 100644
index 0000000..92bdfca
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_arrow_right_f1f1fa.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/modules/module_base/src/main/res/drawable/base_e29030_fcc974_draw.xml b/modules/module_base/src/main/res/drawable/base_e29030_fcc974_draw.xml
new file mode 100644
index 0000000..eacd670
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_e29030_fcc974_draw.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_e29030_fcc974_t30_draw.xml b/modules/module_base/src/main/res/drawable/base_e29030_fcc974_t30_draw.xml
new file mode 100644
index 0000000..7b07831
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_e29030_fcc974_t30_draw.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_selector_theme_15dp.xml b/modules/module_base/src/main/res/drawable/base_selector_theme_15dp.xml
new file mode 100644
index 0000000..0e6e297
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_selector_theme_15dp.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_selector_theme_24dp.xml b/modules/module_base/src/main/res/drawable/base_selector_theme_24dp.xml
new file mode 100644
index 0000000..d81bb23
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_selector_theme_24dp.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_selector_theme_26dp.xml b/modules/module_base/src/main/res/drawable/base_selector_theme_26dp.xml
new file mode 100644
index 0000000..b21d31a
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_selector_theme_26dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_selector_theme_30dp.xml b/modules/module_base/src/main/res/drawable/base_selector_theme_30dp.xml
new file mode 100644
index 0000000..a6c5878
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_selector_theme_30dp.xml
@@ -0,0 +1,31 @@
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_00757b_8dp.xml b/modules/module_base/src/main/res/drawable/base_shape_00757b_8dp.xml
new file mode 100644
index 0000000..5f0e5ba
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_00757b_8dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_190b032d_14dp.xml b/modules/module_base/src/main/res/drawable/base_shape_190b032d_14dp.xml
new file mode 100644
index 0000000..e4dff57
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_190b032d_14dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_1e1e1f_8dp.xml b/modules/module_base/src/main/res/drawable/base_shape_1e1e1f_8dp.xml
new file mode 100644
index 0000000..442c14a
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_1e1e1f_8dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_2d1e4d_top_12dp.xml b/modules/module_base/src/main/res/drawable/base_shape_2d1e4d_top_12dp.xml
new file mode 100644
index 0000000..ae750e4
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_2d1e4d_top_12dp.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_33ffffff_9dp.xml b/modules/module_base/src/main/res/drawable/base_shape_33ffffff_9dp.xml
new file mode 100644
index 0000000..74d461d
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_33ffffff_9dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_4dcdcdcd_9dp.xml b/modules/module_base/src/main/res/drawable/base_shape_4dcdcdcd_9dp.xml
new file mode 100644
index 0000000..4f8e2ad
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_4dcdcdcd_9dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_66ffffff_13o5dp.xml b/modules/module_base/src/main/res/drawable/base_shape_66ffffff_13o5dp.xml
new file mode 100644
index 0000000..b43da36
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_66ffffff_13o5dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_border_theme_23dp.xml b/modules/module_base/src/main/res/drawable/base_shape_border_theme_23dp.xml
new file mode 100644
index 0000000..c1c85e0
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_border_theme_23dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_cbff00_23dp.xml b/modules/module_base/src/main/res/drawable/base_shape_cbff00_23dp.xml
new file mode 100644
index 0000000..d75f7a7
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_cbff00_23dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_ccffffff_100dp.xml b/modules/module_base/src/main/res/drawable/base_shape_ccffffff_100dp.xml
new file mode 100644
index 0000000..20c2474
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_ccffffff_100dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_e6e6e6_15dp.xml b/modules/module_base/src/main/res/drawable/base_shape_e6e6e6_15dp.xml
new file mode 100644
index 0000000..00328db
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_e6e6e6_15dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_e6e6e6_26dp.xml b/modules/module_base/src/main/res/drawable/base_shape_e6e6e6_26dp.xml
new file mode 100644
index 0000000..013b7b8
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_e6e6e6_26dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_e6e6e6_30dp.xml b/modules/module_base/src/main/res/drawable/base_shape_e6e6e6_30dp.xml
new file mode 100644
index 0000000..5f3b28b
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_e6e6e6_30dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_f3f5fa_26dp.xml b/modules/module_base/src/main/res/drawable/base_shape_f3f5fa_26dp.xml
new file mode 100644
index 0000000..c380513
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_f3f5fa_26dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_f7f7f7_10dp.xml b/modules/module_base/src/main/res/drawable/base_shape_f7f7f7_10dp.xml
new file mode 100644
index 0000000..481b571
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_f7f7f7_10dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_f7f7f7_25dp.xml b/modules/module_base/src/main/res/drawable/base_shape_f7f7f7_25dp.xml
new file mode 100644
index 0000000..b18ae7e
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_f7f7f7_25dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_f7f7f7_8dp.xml b/modules/module_base/src/main/res/drawable/base_shape_f7f7f7_8dp.xml
new file mode 100644
index 0000000..d983cff
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_f7f7f7_8dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_f7f7f7_b_1e1e1f_w1dp_8dp.xml b/modules/module_base/src/main/res/drawable/base_shape_f7f7f7_b_1e1e1f_w1dp_8dp.xml
new file mode 100644
index 0000000..22fbd6d
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_f7f7f7_b_1e1e1f_w1dp_8dp.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_ffee00_23dp.xml b/modules/module_base/src/main/res/drawable/base_shape_ffee00_23dp.xml
new file mode 100644
index 0000000..f109b04
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_ffee00_23dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_fffdaa_23dp.xml b/modules/module_base/src/main/res/drawable/base_shape_fffdaa_23dp.xml
new file mode 100644
index 0000000..9d71fde
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_fffdaa_23dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_ffffff_12dp.xml b/modules/module_base/src/main/res/drawable/base_shape_ffffff_12dp.xml
new file mode 100644
index 0000000..5ee5faa
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_ffffff_12dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_ffffff_15o5dp.xml b/modules/module_base/src/main/res/drawable/base_shape_ffffff_15o5dp.xml
new file mode 100644
index 0000000..ffcdae0
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_ffffff_15o5dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_ffffff_16dp.xml b/modules/module_base/src/main/res/drawable/base_shape_ffffff_16dp.xml
new file mode 100644
index 0000000..ef061da
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_ffffff_16dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_ffffff_26dp.xml b/modules/module_base/src/main/res/drawable/base_shape_ffffff_26dp.xml
new file mode 100644
index 0000000..8952546
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_ffffff_26dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_ffffff_b_1e1e1f_w1dp_22dp.xml b/modules/module_base/src/main/res/drawable/base_shape_ffffff_b_1e1e1f_w1dp_22dp.xml
new file mode 100644
index 0000000..6f9bfd8
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_ffffff_b_1e1e1f_w1dp_22dp.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_ffffff_top_12dp.xml b/modules/module_base/src/main/res/drawable/base_shape_ffffff_top_12dp.xml
new file mode 100644
index 0000000..5ee5faa
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_ffffff_top_12dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_ffffff_top_16dp.xml b/modules/module_base/src/main/res/drawable/base_shape_ffffff_top_16dp.xml
new file mode 100644
index 0000000..6476b21
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_ffffff_top_16dp.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_negative_15dp.xml b/modules/module_base/src/main/res/drawable/base_shape_negative_15dp.xml
new file mode 100644
index 0000000..e7116f8
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_negative_15dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_negative_26dp.xml b/modules/module_base/src/main/res/drawable/base_shape_negative_26dp.xml
new file mode 100644
index 0000000..53dba37
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_negative_26dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_negative_30dp.xml b/modules/module_base/src/main/res/drawable/base_shape_negative_30dp.xml
new file mode 100644
index 0000000..e7116f8
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_negative_30dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_negative_5dp.xml b/modules/module_base/src/main/res/drawable/base_shape_negative_5dp.xml
new file mode 100644
index 0000000..da01b66
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_negative_5dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_positive_15dp.xml b/modules/module_base/src/main/res/drawable/base_shape_positive_15dp.xml
new file mode 100644
index 0000000..e3efd5a
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_positive_15dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_positive_19dp.xml b/modules/module_base/src/main/res/drawable/base_shape_positive_19dp.xml
new file mode 100644
index 0000000..0736aae
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_positive_19dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_positive_26dp.xml b/modules/module_base/src/main/res/drawable/base_shape_positive_26dp.xml
new file mode 100644
index 0000000..5c28e60
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_positive_26dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_positive_30dp.xml b/modules/module_base/src/main/res/drawable/base_shape_positive_30dp.xml
new file mode 100644
index 0000000..36658b4
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_positive_30dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_positive_5dp.xml b/modules/module_base/src/main/res/drawable/base_shape_positive_5dp.xml
new file mode 100644
index 0000000..2f09f8a
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_positive_5dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_theme_13dp.xml b/modules/module_base/src/main/res/drawable/base_shape_theme_13dp.xml
new file mode 100644
index 0000000..c30a91f
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_theme_13dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_theme_15dp.xml b/modules/module_base/src/main/res/drawable/base_shape_theme_15dp.xml
new file mode 100644
index 0000000..e3efd5a
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_theme_15dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_theme_19dp.xml b/modules/module_base/src/main/res/drawable/base_shape_theme_19dp.xml
new file mode 100644
index 0000000..0736aae
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_theme_19dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_theme_20dp.xml b/modules/module_base/src/main/res/drawable/base_shape_theme_20dp.xml
new file mode 100644
index 0000000..8df0017
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_theme_20dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_theme_23dp.xml b/modules/module_base/src/main/res/drawable/base_shape_theme_23dp.xml
new file mode 100644
index 0000000..9e1572e
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_theme_23dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_theme_24dp.xml b/modules/module_base/src/main/res/drawable/base_shape_theme_24dp.xml
new file mode 100644
index 0000000..445fd54
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_theme_24dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_theme_26dp.xml b/modules/module_base/src/main/res/drawable/base_shape_theme_26dp.xml
new file mode 100644
index 0000000..5c28e60
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_theme_26dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_theme_30dp.xml b/modules/module_base/src/main/res/drawable/base_shape_theme_30dp.xml
new file mode 100644
index 0000000..36658b4
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_theme_30dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_theme_8dp.xml b/modules/module_base/src/main/res/drawable/base_shape_theme_8dp.xml
new file mode 100644
index 0000000..8fe540f
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_theme_8dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_theme_unselected_24dp.xml b/modules/module_base/src/main/res/drawable/base_shape_theme_unselected_24dp.xml
new file mode 100644
index 0000000..7795c45
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_theme_unselected_24dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/base_shape_theme_unselected_26dp.xml b/modules/module_base/src/main/res/drawable/base_shape_theme_unselected_26dp.xml
new file mode 100644
index 0000000..da3c6e9
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/base_shape_theme_unselected_26dp.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/user_info_follow_ed.xml b/modules/module_base/src/main/res/drawable/user_info_follow_ed.xml
new file mode 100644
index 0000000..1d64d9b
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/user_info_follow_ed.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/drawable/user_info_follow_n.xml b/modules/module_base/src/main/res/drawable/user_info_follow_n.xml
new file mode 100644
index 0000000..9e1572e
--- /dev/null
+++ b/modules/module_base/src/main/res/drawable/user_info_follow_n.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/module_base/src/main/res/values/colors.xml b/modules/module_base/src/main/res/values/colors.xml
new file mode 100644
index 0000000..176c732
--- /dev/null
+++ b/modules/module_base/src/main/res/values/colors.xml
@@ -0,0 +1,17 @@
+
+
+
+ #718CFF
+
+
+ #FFFFFF
+
+
+ #FFFFFF
+
+
+ #FFFFFF
+
+
+ #D2D4D6
+