Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
d1ff7e0f
Commit
d1ff7e0f
authored
Jul 28, 2019
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move extensions to its own package
parent
42e7db8d
Hide whitespace changes
Inline
Side-by-side
Showing
59 changed files
with
91 additions
and
77 deletions
+91
-77
App.kt
app/src/main/java/com/topjohnwu/magisk/App.kt
+1
-1
Config.kt
app/src/main/java/com/topjohnwu/magisk/Config.kt
+5
-1
PolicyDao.kt
...main/java/com/topjohnwu/magisk/data/database/PolicyDao.kt
+1
-1
DBConfig.kt
...ain/java/com/topjohnwu/magisk/data/repository/DBConfig.kt
+1
-1
LogRepository.kt
...ava/com/topjohnwu/magisk/data/repository/LogRepository.kt
+1
-1
MagiskRepository.kt
.../com/topjohnwu/magisk/data/repository/MagiskRepository.kt
+2
-2
XAndroid.kt
...src/main/java/com/topjohnwu/magisk/extensions/XAndroid.kt
+2
-1
XBinding.kt
...src/main/java/com/topjohnwu/magisk/extensions/XBinding.kt
+1
-1
XJava.kt
app/src/main/java/com/topjohnwu/magisk/extensions/XJava.kt
+2
-2
XKoin.kt
app/src/main/java/com/topjohnwu/magisk/extensions/XKoin.kt
+1
-1
XList.kt
app/src/main/java/com/topjohnwu/magisk/extensions/XList.kt
+1
-1
XRx.kt
app/src/main/java/com/topjohnwu/magisk/extensions/XRx.kt
+1
-1
XSU.kt
app/src/main/java/com/topjohnwu/magisk/extensions/XSU.kt
+1
-1
XString.kt
app/src/main/java/com/topjohnwu/magisk/extensions/XString.kt
+1
-1
XTime.kt
app/src/main/java/com/topjohnwu/magisk/extensions/XTime.kt
+2
-1
XView.kt
app/src/main/java/com/topjohnwu/magisk/extensions/XView.kt
+1
-1
DownloadService.kt
...va/com/topjohnwu/magisk/model/download/DownloadService.kt
+2
-2
ModuleProcessor.kt
...va/com/topjohnwu/magisk/model/download/ModuleProcessor.kt
+1
-1
RemoteFileService.kt
.../com/topjohnwu/magisk/model/download/RemoteFileService.kt
+2
-2
HideAppInfo.kt
...ain/java/com/topjohnwu/magisk/model/entity/HideAppInfo.kt
+2
-2
MagiskLog.kt
.../main/java/com/topjohnwu/magisk/model/entity/MagiskLog.kt
+2
-2
DownloadSubject.kt
...topjohnwu/magisk/model/entity/internal/DownloadSubject.kt
+2
-2
Repo.kt
...ain/java/com/topjohnwu/magisk/model/entity/module/Repo.kt
+2
-2
HideRvItem.kt
.../com/topjohnwu/magisk/model/entity/recycler/HideRvItem.kt
+2
-2
LogRvItem.kt
...a/com/topjohnwu/magisk/model/entity/recycler/LogRvItem.kt
+3
-3
ModuleRvItem.kt
...om/topjohnwu/magisk/model/entity/recycler/ModuleRvItem.kt
+2
-2
PolicyRvItem.kt
...om/topjohnwu/magisk/model/entity/recycler/PolicyRvItem.kt
+2
-2
Flashing.kt
...rc/main/java/com/topjohnwu/magisk/model/flash/Flashing.kt
+1
-1
BooleanProperty.kt
.../com/topjohnwu/magisk/model/preference/BooleanProperty.kt
+1
-1
FloatProperty.kt
...va/com/topjohnwu/magisk/model/preference/FloatProperty.kt
+1
-1
IntProperty.kt
...java/com/topjohnwu/magisk/model/preference/IntProperty.kt
+1
-1
LongProperty.kt
...ava/com/topjohnwu/magisk/model/preference/LongProperty.kt
+1
-1
StringProperty.kt
...a/com/topjohnwu/magisk/model/preference/StringProperty.kt
+1
-1
StringSetProperty.kt
...om/topjohnwu/magisk/model/preference/StringSetProperty.kt
+1
-1
GeneralReceiver.kt
...va/com/topjohnwu/magisk/model/receiver/GeneralReceiver.kt
+2
-2
UpdateCheckService.kt
...a/com/topjohnwu/magisk/model/update/UpdateCheckService.kt
+1
-1
Zip.kt
app/src/main/java/com/topjohnwu/magisk/model/zip/Zip.kt
+2
-2
FlashZip.kt
app/src/main/java/com/topjohnwu/magisk/tasks/FlashZip.kt
+3
-3
InstallerHelper.kt
...c/main/java/com/topjohnwu/magisk/tasks/InstallerHelper.kt
+2
-2
MagiskActivity.kt
.../main/java/com/topjohnwu/magisk/ui/base/MagiskActivity.kt
+1
-1
FlashViewModel.kt
...main/java/com/topjohnwu/magisk/ui/flash/FlashViewModel.kt
+1
-1
HideViewModel.kt
...c/main/java/com/topjohnwu/magisk/ui/hide/HideViewModel.kt
+2
-2
HomeFragment.kt
...rc/main/java/com/topjohnwu/magisk/ui/home/HomeFragment.kt
+2
-2
HomeViewModel.kt
...c/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt
+3
-3
ModuleViewModel.kt
...in/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt
+2
-2
ModulesFragment.kt
...in/java/com/topjohnwu/magisk/ui/module/ModulesFragment.kt
+1
-1
ReposFragment.kt
...main/java/com/topjohnwu/magisk/ui/module/ReposFragment.kt
+1
-1
SuperuserViewModel.kt
...a/com/topjohnwu/magisk/ui/superuser/SuperuserViewModel.kt
+1
-1
SuRequestViewModel.kt
...a/com/topjohnwu/magisk/ui/surequest/SuRequestViewModel.kt
+1
-1
DataBindingAdapters.kt
...in/java/com/topjohnwu/magisk/utils/DataBindingAdapters.kt
+1
-0
FingerprintHelper.kt
...main/java/com/topjohnwu/magisk/utils/FingerprintHelper.kt
+2
-0
LocaleManager.kt
...src/main/java/com/topjohnwu/magisk/utils/LocaleManager.kt
+1
-0
RootUtils.kt
app/src/main/java/com/topjohnwu/magisk/utils/RootUtils.kt
+2
-0
SuLogger.kt
app/src/main/java/com/topjohnwu/magisk/utils/SuLogger.kt
+1
-0
Utils.kt
app/src/main/java/com/topjohnwu/magisk/utils/Utils.kt
+1
-0
MarkDownWindow.kt
...src/main/java/com/topjohnwu/magisk/view/MarkDownWindow.kt
+1
-1
SnackbarMaker.kt
app/src/main/java/com/topjohnwu/magisk/view/SnackbarMaker.kt
+1
-1
EnvFixDialog.kt
...in/java/com/topjohnwu/magisk/view/dialogs/EnvFixDialog.kt
+2
-2
fragment_magisk.xml
app/src/main/res/layout/fragment_magisk.xml
+1
-1
No files found.
app/src/main/java/com/topjohnwu/magisk/App.kt
View file @
d1ff7e0f
...
...
@@ -16,9 +16,9 @@ import androidx.work.impl.WorkDatabase_Impl
import
com.topjohnwu.magisk.data.database.RepoDatabase
import
com.topjohnwu.magisk.data.database.RepoDatabase_Impl
import
com.topjohnwu.magisk.di.koinModules
import
com.topjohnwu.magisk.extensions.inject
import
com.topjohnwu.magisk.utils.LocaleManager
import
com.topjohnwu.magisk.utils.RootUtils
import
com.topjohnwu.magisk.utils.inject
import
com.topjohnwu.net.Networking
import
com.topjohnwu.superuser.Shell
import
org.koin.android.ext.koin.androidContext
...
...
app/src/main/java/com/topjohnwu/magisk/Config.kt
View file @
d1ff7e0f
...
...
@@ -9,8 +9,12 @@ import com.topjohnwu.magisk.data.database.SettingsDao
import
com.topjohnwu.magisk.data.database.StringDao
import
com.topjohnwu.magisk.data.repository.DBConfig
import
com.topjohnwu.magisk.di.Protected
import
com.topjohnwu.magisk.extensions.get
import
com.topjohnwu.magisk.extensions.inject
import
com.topjohnwu.magisk.extensions.packageName
import
com.topjohnwu.magisk.model.preference.PreferenceModel
import
com.topjohnwu.magisk.utils.*
import
com.topjohnwu.magisk.utils.FingerprintHelper
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.io.SuFile
import
com.topjohnwu.superuser.io.SuFileInputStream
...
...
app/src/main/java/com/topjohnwu/magisk/data/database/PolicyDao.kt
View file @
d1ff7e0f
...
...
@@ -4,10 +4,10 @@ import android.content.Context
import
android.content.pm.PackageManager
import
com.topjohnwu.magisk.Const
import
com.topjohnwu.magisk.data.database.base.*
import
com.topjohnwu.magisk.extensions.now
import
com.topjohnwu.magisk.model.entity.MagiskPolicy
import
com.topjohnwu.magisk.model.entity.toMap
import
com.topjohnwu.magisk.model.entity.toPolicy
import
com.topjohnwu.magisk.utils.now
import
timber.log.Timber
import
java.util.concurrent.TimeUnit
...
...
app/src/main/java/com/topjohnwu/magisk/data/repository/DBConfig.kt
View file @
d1ff7e0f
...
...
@@ -2,7 +2,7 @@ package com.topjohnwu.magisk.data.repository
import
com.topjohnwu.magisk.data.database.SettingsDao
import
com.topjohnwu.magisk.data.database.StringDao
import
com.topjohnwu.magisk.
util
s.trimEmptyToNull
import
com.topjohnwu.magisk.
extension
s.trimEmptyToNull
import
io.reactivex.schedulers.Schedulers
import
kotlin.properties.ReadWriteProperty
import
kotlin.reflect.KProperty
...
...
app/src/main/java/com/topjohnwu/magisk/data/repository/LogRepository.kt
View file @
d1ff7e0f
...
...
@@ -3,9 +3,9 @@ package com.topjohnwu.magisk.data.repository
import
com.topjohnwu.magisk.Const
import
com.topjohnwu.magisk.data.database.LogDao
import
com.topjohnwu.magisk.data.database.base.suRaw
import
com.topjohnwu.magisk.extensions.toSingle
import
com.topjohnwu.magisk.model.entity.MagiskLog
import
com.topjohnwu.magisk.model.entity.WrappedMagiskLog
import
com.topjohnwu.magisk.utils.toSingle
import
com.topjohnwu.superuser.Shell
import
java.util.concurrent.TimeUnit
...
...
app/src/main/java/com/topjohnwu/magisk/data/repository/MagiskRepository.kt
View file @
d1ff7e0f
...
...
@@ -6,11 +6,11 @@ import com.topjohnwu.magisk.Config
import
com.topjohnwu.magisk.Info
import
com.topjohnwu.magisk.data.database.base.su
import
com.topjohnwu.magisk.data.network.GithubRawServices
import
com.topjohnwu.magisk.extensions.inject
import
com.topjohnwu.magisk.extensions.toSingle
import
com.topjohnwu.magisk.model.entity.HideAppInfo
import
com.topjohnwu.magisk.model.entity.HideTarget
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.magisk.utils.inject
import
com.topjohnwu.magisk.utils.toSingle
import
com.topjohnwu.superuser.Shell
import
io.reactivex.Single
...
...
app/src/main/java/com/topjohnwu/magisk/
util
s/XAndroid.kt
→
app/src/main/java/com/topjohnwu/magisk/
extension
s/XAndroid.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.
util
s
package
com.topjohnwu.magisk.
extension
s
import
android.content.Context
import
android.content.Intent
...
...
@@ -11,6 +11,7 @@ import android.database.Cursor
import
android.net.Uri
import
android.provider.OpenableColumns
import
com.topjohnwu.magisk.App
import
com.topjohnwu.magisk.utils.FileProvider
import
java.io.File
import
java.io.FileNotFoundException
...
...
app/src/main/java/com/topjohnwu/magisk/
util
s/XBinding.kt
→
app/src/main/java/com/topjohnwu/magisk/
extension
s/XBinding.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.
util
s
package
com.topjohnwu.magisk.
extension
s
import
com.skoumal.teanity.util.KObservableField
...
...
app/src/main/java/com/topjohnwu/magisk/
util
s/XJava.kt
→
app/src/main/java/com/topjohnwu/magisk/
extension
s/XJava.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.
util
s
package
com.topjohnwu.magisk.
extension
s
import
android.net.Uri
import
androidx.core.net.toFile
...
...
@@ -19,7 +19,7 @@ fun ZipInputStream.forEach(callback: (ZipEntry) -> Unit) {
fun
Uri
.
writeTo
(
file
:
File
)
=
toFile
().
copyTo
(
file
)
fun
InputStream
.
writeTo
(
file
:
File
)
=
withStreams
(
this
,
file
.
outputStream
())
{
reader
,
writer
->
reader
.
copyTo
(
writer
)
}
withStreams
(
this
,
file
.
outputStream
())
{
reader
,
writer
->
reader
.
copyTo
(
writer
)
}
inline
fun
<
In
:
InputStream
,
Out
:
OutputStream
>
withStreams
(
inStream
:
In
,
...
...
app/src/main/java/com/topjohnwu/magisk/
util
s/XKoin.kt
→
app/src/main/java/com/topjohnwu/magisk/
extension
s/XKoin.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.
util
s
package
com.topjohnwu.magisk.
extension
s
import
org.koin.core.context.GlobalContext
import
org.koin.core.parameter.ParametersDefinition
...
...
app/src/main/java/com/topjohnwu/magisk/
util
s/XList.kt
→
app/src/main/java/com/topjohnwu/magisk/
extension
s/XList.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.
util
s
package
com.topjohnwu.magisk.
extension
s
import
androidx.collection.SparseArrayCompat
import
androidx.databinding.ObservableList
...
...
app/src/main/java/com/topjohnwu/magisk/
util
s/XRx.kt
→
app/src/main/java/com/topjohnwu/magisk/
extension
s/XRx.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.
util
s
package
com.topjohnwu.magisk.
extension
s
import
io.reactivex.Single
import
io.reactivex.functions.BiFunction
...
...
app/src/main/java/com/topjohnwu/magisk/
util
s/XSU.kt
→
app/src/main/java/com/topjohnwu/magisk/
extension
s/XSU.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.
util
s
package
com.topjohnwu.magisk.
extension
s
import
com.topjohnwu.magisk.Info
import
com.topjohnwu.superuser.Shell
...
...
app/src/main/java/com/topjohnwu/magisk/
util
s/XString.kt
→
app/src/main/java/com/topjohnwu/magisk/
extension
s/XString.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.
util
s
package
com.topjohnwu.magisk.
extension
s
import
android.content.res.Resources
...
...
app/src/main/java/com/topjohnwu/magisk/
util
s/XTime.kt
→
app/src/main/java/com/topjohnwu/magisk/
extension
s/XTime.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.
util
s
package
com.topjohnwu.magisk.
extension
s
import
com.topjohnwu.magisk.utils.LocaleManager
import
java.text.DateFormat
import
java.text.ParseException
import
java.text.SimpleDateFormat
...
...
app/src/main/java/com/topjohnwu/magisk/
util
s/XView.kt
→
app/src/main/java/com/topjohnwu/magisk/
extension
s/XView.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.
util
s
package
com.topjohnwu.magisk.
extension
s
import
android.view.View
import
android.view.ViewTreeObserver
...
...
app/src/main/java/com/topjohnwu/magisk/model/download/DownloadService.kt
View file @
d1ff7e0f
...
...
@@ -9,14 +9,14 @@ import android.webkit.MimeTypeMap
import
androidx.core.app.NotificationCompat
import
com.topjohnwu.magisk.ClassMap
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.extensions.chooser
import
com.topjohnwu.magisk.extensions.provide
import
com.topjohnwu.magisk.model.entity.internal.Configuration.*
import
com.topjohnwu.magisk.model.entity.internal.Configuration.Flash.Secondary
import
com.topjohnwu.magisk.model.entity.internal.DownloadSubject
import
com.topjohnwu.magisk.model.entity.internal.DownloadSubject.Magisk
import
com.topjohnwu.magisk.model.entity.internal.DownloadSubject.Module
import
com.topjohnwu.magisk.ui.flash.FlashActivity
import
com.topjohnwu.magisk.utils.chooser
import
com.topjohnwu.magisk.utils.provide
import
java.io.File
import
kotlin.random.Random.Default.nextInt
...
...
app/src/main/java/com/topjohnwu/magisk/model/download/ModuleProcessor.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.model.download
import
com.topjohnwu.magisk.
util
s.withStreams
import
com.topjohnwu.magisk.
extension
s.withStreams
import
java.io.File
import
java.io.InputStream
import
java.util.zip.ZipEntry
...
...
app/src/main/java/com/topjohnwu/magisk/model/download/RemoteFileService.kt
View file @
d1ff7e0f
...
...
@@ -6,12 +6,12 @@ import com.skoumal.teanity.extensions.subscribeK
import
com.topjohnwu.magisk.Config
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.data.network.GithubRawServices
import
com.topjohnwu.magisk.extensions.firstMap
import
com.topjohnwu.magisk.extensions.writeTo
import
com.topjohnwu.magisk.model.entity.internal.DownloadSubject
import
com.topjohnwu.magisk.model.entity.internal.DownloadSubject.Magisk
import
com.topjohnwu.magisk.model.entity.internal.DownloadSubject.Module
import
com.topjohnwu.magisk.utils.ProgInputStream
import
com.topjohnwu.magisk.utils.firstMap
import
com.topjohnwu.magisk.utils.writeTo
import
com.topjohnwu.magisk.view.Notifications
import
com.topjohnwu.superuser.ShellUtils
import
io.reactivex.Single
...
...
app/src/main/java/com/topjohnwu/magisk/model/entity/HideAppInfo.kt
View file @
d1ff7e0f
...
...
@@ -2,8 +2,8 @@ package com.topjohnwu.magisk.model.entity
import
android.content.pm.ApplicationInfo
import
android.graphics.drawable.Drawable
import
com.topjohnwu.magisk.
util
s.packageInfo
import
com.topjohnwu.magisk.
util
s.processes
import
com.topjohnwu.magisk.
extension
s.packageInfo
import
com.topjohnwu.magisk.
extension
s.processes
class
HideAppInfo
(
val
info
:
ApplicationInfo
,
...
...
app/src/main/java/com/topjohnwu/magisk/model/entity/MagiskLog.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.model.entity
import
com.topjohnwu.magisk.extensions.timeFormatTime
import
com.topjohnwu.magisk.extensions.toTime
import
com.topjohnwu.magisk.model.entity.MagiskPolicy.Companion.ALLOW
import
com.topjohnwu.magisk.utils.timeFormatTime
import
com.topjohnwu.magisk.utils.toTime
import
java.util.*
data class
MagiskLog
(
...
...
app/src/main/java/com/topjohnwu/magisk/model/entity/internal/DownloadSubject.kt
View file @
d1ff7e0f
...
...
@@ -4,10 +4,10 @@ import android.content.Context
import
android.os.Parcelable
import
com.topjohnwu.magisk.Config
import
com.topjohnwu.magisk.Info
import
com.topjohnwu.magisk.extensions.cachedFile
import
com.topjohnwu.magisk.extensions.get
import
com.topjohnwu.magisk.model.entity.MagiskJson
import
com.topjohnwu.magisk.model.entity.module.Repo
import
com.topjohnwu.magisk.utils.cachedFile
import
com.topjohnwu.magisk.utils.get
import
kotlinx.android.parcel.IgnoredOnParcel
import
kotlinx.android.parcel.Parcelize
import
java.io.File
...
...
app/src/main/java/com/topjohnwu/magisk/model/entity/module/Repo.kt
View file @
d1ff7e0f
...
...
@@ -5,8 +5,8 @@ import androidx.room.Entity
import
androidx.room.PrimaryKey
import
com.topjohnwu.magisk.Const
import
com.topjohnwu.magisk.data.repository.StringRepository
import
com.topjohnwu.magisk.
util
s.get
import
com.topjohnwu.magisk.
util
s.legalFilename
import
com.topjohnwu.magisk.
extension
s.get
import
com.topjohnwu.magisk.
extension
s.legalFilename
import
kotlinx.android.parcel.Parcelize
import
java.text.DateFormat
import
java.util.*
...
...
app/src/main/java/com/topjohnwu/magisk/model/entity/recycler/HideRvItem.kt
View file @
d1ff7e0f
...
...
@@ -6,12 +6,12 @@ import com.skoumal.teanity.rxbus.RxBus
import
com.skoumal.teanity.util.DiffObservableList
import
com.skoumal.teanity.util.KObservableField
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.extensions.inject
import
com.topjohnwu.magisk.extensions.toggle
import
com.topjohnwu.magisk.model.entity.HideAppInfo
import
com.topjohnwu.magisk.model.entity.HideTarget
import
com.topjohnwu.magisk.model.entity.state.IndeterminateState
import
com.topjohnwu.magisk.model.events.HideProcessEvent
import
com.topjohnwu.magisk.utils.inject
import
com.topjohnwu.magisk.utils.toggle
class
HideRvItem
(
val
item
:
HideAppInfo
,
targets
:
List
<
HideTarget
>)
:
ComparableRvItem
<
HideRvItem
>()
{
...
...
app/src/main/java/com/topjohnwu/magisk/model/entity/recycler/LogRvItem.kt
View file @
d1ff7e0f
...
...
@@ -4,11 +4,11 @@ import com.skoumal.teanity.databinding.ComparableRvItem
import
com.skoumal.teanity.util.DiffObservableList
import
com.skoumal.teanity.util.KObservableField
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.extensions.timeFormatMedium
import
com.topjohnwu.magisk.extensions.toTime
import
com.topjohnwu.magisk.extensions.toggle
import
com.topjohnwu.magisk.model.entity.MagiskLog
import
com.topjohnwu.magisk.model.entity.WrappedMagiskLog
import
com.topjohnwu.magisk.utils.timeFormatMedium
import
com.topjohnwu.magisk.utils.toTime
import
com.topjohnwu.magisk.utils.toggle
class
LogRvItem
:
ComparableRvItem
<
LogRvItem
>()
{
override
val
layoutRes
:
Int
=
R
.
layout
.
item_page_log
...
...
app/src/main/java/com/topjohnwu/magisk/model/entity/recycler/ModuleRvItem.kt
View file @
d1ff7e0f
...
...
@@ -6,10 +6,10 @@ import com.skoumal.teanity.databinding.ComparableRvItem
import
com.skoumal.teanity.extensions.addOnPropertyChangedCallback
import
com.skoumal.teanity.util.KObservableField
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.extensions.get
import
com.topjohnwu.magisk.extensions.toggle
import
com.topjohnwu.magisk.model.entity.module.Module
import
com.topjohnwu.magisk.model.entity.module.Repo
import
com.topjohnwu.magisk.utils.get
import
com.topjohnwu.magisk.utils.toggle
class
ModuleRvItem
(
val
item
:
Module
)
:
ComparableRvItem
<
ModuleRvItem
>()
{
...
...
app/src/main/java/com/topjohnwu/magisk/model/entity/recycler/PolicyRvItem.kt
View file @
d1ff7e0f
...
...
@@ -6,12 +6,12 @@ import com.skoumal.teanity.extensions.addOnPropertyChangedCallback
import
com.skoumal.teanity.rxbus.RxBus
import
com.skoumal.teanity.util.KObservableField
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.extensions.inject
import
com.topjohnwu.magisk.extensions.toggle
import
com.topjohnwu.magisk.model.entity.MagiskPolicy
import
com.topjohnwu.magisk.model.entity.Policy
import
com.topjohnwu.magisk.model.events.PolicyEnableEvent
import
com.topjohnwu.magisk.model.events.PolicyUpdateEvent
import
com.topjohnwu.magisk.utils.inject
import
com.topjohnwu.magisk.utils.toggle
class
PolicyRvItem
(
val
item
:
MagiskPolicy
,
val
icon
:
Drawable
)
:
ComparableRvItem
<
PolicyRvItem
>()
{
...
...
app/src/main/java/com/topjohnwu/magisk/model/flash/Flashing.kt
View file @
d1ff7e0f
...
...
@@ -3,8 +3,8 @@ package com.topjohnwu.magisk.model.flash
import
android.content.Context
import
android.net.Uri
import
androidx.core.os.postDelayed
import
com.topjohnwu.magisk.extensions.inject
import
com.topjohnwu.magisk.tasks.FlashZip
import
com.topjohnwu.magisk.utils.inject
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.internal.UiThreadHandler
...
...
app/src/main/java/com/topjohnwu/magisk/model/preference/BooleanProperty.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.model.preference
import
androidx.core.content.edit
import
com.topjohnwu.magisk.
util
s.trimEmptyToNull
import
com.topjohnwu.magisk.
extension
s.trimEmptyToNull
import
kotlin.properties.ReadWriteProperty
import
kotlin.reflect.KProperty
...
...
app/src/main/java/com/topjohnwu/magisk/model/preference/FloatProperty.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.model.preference
import
androidx.core.content.edit
import
com.topjohnwu.magisk.
util
s.trimEmptyToNull
import
com.topjohnwu.magisk.
extension
s.trimEmptyToNull
import
kotlin.properties.ReadWriteProperty
import
kotlin.reflect.KProperty
...
...
app/src/main/java/com/topjohnwu/magisk/model/preference/IntProperty.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.model.preference
import
androidx.core.content.edit
import
com.topjohnwu.magisk.
util
s.trimEmptyToNull
import
com.topjohnwu.magisk.
extension
s.trimEmptyToNull
import
kotlin.properties.ReadWriteProperty
import
kotlin.reflect.KProperty
...
...
app/src/main/java/com/topjohnwu/magisk/model/preference/LongProperty.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.model.preference
import
androidx.core.content.edit
import
com.topjohnwu.magisk.
util
s.trimEmptyToNull
import
com.topjohnwu.magisk.
extension
s.trimEmptyToNull
import
kotlin.properties.ReadWriteProperty
import
kotlin.reflect.KProperty
...
...
app/src/main/java/com/topjohnwu/magisk/model/preference/StringProperty.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.model.preference
import
androidx.core.content.edit
import
com.topjohnwu.magisk.
util
s.trimEmptyToNull
import
com.topjohnwu.magisk.
extension
s.trimEmptyToNull
import
kotlin.properties.ReadWriteProperty
import
kotlin.reflect.KProperty
...
...
app/src/main/java/com/topjohnwu/magisk/model/preference/StringSetProperty.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.model.preference
import
androidx.core.content.edit
import
com.topjohnwu.magisk.
util
s.trimEmptyToNull
import
com.topjohnwu.magisk.
extension
s.trimEmptyToNull
import
kotlin.properties.ReadWriteProperty
import
kotlin.reflect.KProperty
...
...
app/src/main/java/com/topjohnwu/magisk/model/receiver/GeneralReceiver.kt
View file @
d1ff7e0f
...
...
@@ -9,11 +9,11 @@ import com.topjohnwu.magisk.Const
import
com.topjohnwu.magisk.Info
import
com.topjohnwu.magisk.data.database.base.su
import
com.topjohnwu.magisk.data.repository.AppRepository
import
com.topjohnwu.magisk.extensions.inject
import
com.topjohnwu.magisk.extensions.reboot
import
com.topjohnwu.magisk.ui.surequest.SuRequestActivity
import
com.topjohnwu.magisk.utils.DownloadApp
import
com.topjohnwu.magisk.utils.SuLogger
import
com.topjohnwu.magisk.utils.inject
import
com.topjohnwu.magisk.utils.reboot
import
com.topjohnwu.magisk.view.Notifications
import
com.topjohnwu.magisk.view.Shortcuts
import
com.topjohnwu.superuser.Shell
...
...
app/src/main/java/com/topjohnwu/magisk/model/update/UpdateCheckService.kt
View file @
d1ff7e0f
...
...
@@ -4,8 +4,8 @@ import androidx.work.ListenableWorker
import
com.topjohnwu.magisk.BuildConfig
import
com.topjohnwu.magisk.Info
import
com.topjohnwu.magisk.data.repository.MagiskRepository
import
com.topjohnwu.magisk.extensions.inject
import
com.topjohnwu.magisk.model.worker.DelegateWorker
import
com.topjohnwu.magisk.utils.inject
import
com.topjohnwu.magisk.view.Notifications
import
com.topjohnwu.superuser.Shell
...
...
app/src/main/java/com/topjohnwu/magisk/model/zip/Zip.kt
View file @
d1ff7e0f
package
com.topjohnwu.magisk.model.zip
import
com.topjohnwu.magisk.
util
s.forEach
import
com.topjohnwu.magisk.
util
s.withStreams
import
com.topjohnwu.magisk.
extension
s.forEach
import
com.topjohnwu.magisk.
extension
s.withStreams
import
com.topjohnwu.superuser.io.SuFile
import
java.io.File
import
java.util.zip.ZipInputStream
...
...
app/src/main/java/com/topjohnwu/magisk/tasks/FlashZip.kt
View file @
d1ff7e0f
...
...
@@ -4,9 +4,9 @@ import android.net.Uri
import
com.skoumal.teanity.extensions.subscribeK
import
com.topjohnwu.magisk.App
import
com.topjohnwu.magisk.Const
import
com.topjohnwu.magisk.
util
s.fileName
import
com.topjohnwu.magisk.
util
s.inject
import
com.topjohnwu.magisk.
util
s.readUri
import
com.topjohnwu.magisk.
extension
s.fileName
import
com.topjohnwu.magisk.
extension
s.inject
import
com.topjohnwu.magisk.
extension
s.readUri
import
com.topjohnwu.magisk.utils.unzip
import
com.topjohnwu.superuser.Shell
import
io.reactivex.Single
...
...
app/src/main/java/com/topjohnwu/magisk/tasks/InstallerHelper.kt
View file @
d1ff7e0f
...
...
@@ -2,8 +2,8 @@ package com.topjohnwu.magisk.tasks
import
android.content.Context
import
android.net.Uri
import
com.topjohnwu.magisk.
util
s.get
import
com.topjohnwu.magisk.
util
s.readUri
import
com.topjohnwu.magisk.
extension
s.get
import
com.topjohnwu.magisk.
extension
s.readUri
import
java.io.File
object
InstallerHelper
{
...
...
app/src/main/java/com/topjohnwu/magisk/ui/base/MagiskActivity.kt
View file @
d1ff7e0f
...
...
@@ -22,6 +22,7 @@ import com.ncapdevi.fragnav.FragNavTransactionOptions
import
com.skoumal.teanity.view.TeanityActivity
import
com.skoumal.teanity.viewevents.ViewEvent
import
com.topjohnwu.magisk.Config
import
com.topjohnwu.magisk.extensions.set
import
com.topjohnwu.magisk.model.events.BackPressEvent
import
com.topjohnwu.magisk.model.events.PermissionEvent
import
com.topjohnwu.magisk.model.events.ViewActionEvent
...
...
@@ -31,7 +32,6 @@ import com.topjohnwu.magisk.model.navigation.Navigator
import
com.topjohnwu.magisk.model.permissions.PermissionRequestBuilder
import
com.topjohnwu.magisk.utils.LocaleManager
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.magisk.utils.set
import
timber.log.Timber
import
kotlin.reflect.KClass
...
...
app/src/main/java/com/topjohnwu/magisk/ui/flash/FlashViewModel.kt
View file @
d1ff7e0f
...
...
@@ -15,12 +15,12 @@ import com.skoumal.teanity.viewevents.SnackbarEvent
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.Const
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.extensions.*
import
com.topjohnwu.magisk.model.entity.recycler.ConsoleRvItem
import
com.topjohnwu.magisk.model.flash.FlashResultListener
import
com.topjohnwu.magisk.model.flash.Flashing
import
com.topjohnwu.magisk.model.flash.Patching
import
com.topjohnwu.magisk.ui.base.MagiskViewModel
import
com.topjohnwu.magisk.utils.*
import
com.topjohnwu.superuser.Shell
import
me.tatarka.bindingcollectionadapter2.ItemBinding
import
java.io.File
...
...
app/src/main/java/com/topjohnwu/magisk/ui/hide/HideViewModel.kt
View file @
d1ff7e0f
...
...
@@ -9,13 +9,13 @@ import com.skoumal.teanity.util.DiffObservableList
import
com.skoumal.teanity.util.KObservableField
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.data.repository.MagiskRepository
import
com.topjohnwu.magisk.extensions.toSingle
import
com.topjohnwu.magisk.extensions.update
import
com.topjohnwu.magisk.model.entity.recycler.HideProcessRvItem
import
com.topjohnwu.magisk.model.entity.recycler.HideRvItem
import
com.topjohnwu.magisk.model.entity.state.IndeterminateState
import
com.topjohnwu.magisk.model.events.HideProcessEvent
import
com.topjohnwu.magisk.ui.base.MagiskViewModel
import
com.topjohnwu.magisk.utils.toSingle
import
com.topjohnwu.magisk.utils.update
import
me.tatarka.bindingcollectionadapter2.OnItemBind
import
timber.log.Timber
...
...
app/src/main/java/com/topjohnwu/magisk/ui/home/HomeFragment.kt
View file @
d1ff7e0f
...
...
@@ -7,12 +7,12 @@ import com.skoumal.teanity.viewevents.ViewEvent
import
com.topjohnwu.magisk.*
import
com.topjohnwu.magisk.data.repository.MagiskRepository
import
com.topjohnwu.magisk.databinding.FragmentMagiskBinding
import
com.topjohnwu.magisk.extensions.inject
import
com.topjohnwu.magisk.extensions.writeTo
import
com.topjohnwu.magisk.model.events.*
import
com.topjohnwu.magisk.ui.base.MagiskActivity
import
com.topjohnwu.magisk.ui.base.MagiskFragment
import
com.topjohnwu.magisk.utils.ISafetyNetHelper
import
com.topjohnwu.magisk.utils.writeTo
import
com.topjohnwu.magisk.utils.inject
import
com.topjohnwu.magisk.view.MarkDownWindow
import
com.topjohnwu.magisk.view.dialogs.*
import
com.topjohnwu.superuser.Shell
...
...
app/src/main/java/com/topjohnwu/magisk/ui/home/HomeViewModel.kt
View file @
d1ff7e0f
...
...
@@ -6,13 +6,13 @@ import com.skoumal.teanity.extensions.subscribeK
import
com.skoumal.teanity.util.KObservableField
import
com.topjohnwu.magisk.*
import
com.topjohnwu.magisk.data.repository.MagiskRepository
import
com.topjohnwu.magisk.extensions.packageName
import
com.topjohnwu.magisk.extensions.res
import
com.topjohnwu.magisk.extensions.toggle
import
com.topjohnwu.magisk.model.events.*
import
com.topjohnwu.magisk.model.observer.Observer
import
com.topjohnwu.magisk.ui.base.MagiskViewModel
import
com.topjohnwu.magisk.utils.ISafetyNetHelper
import
com.topjohnwu.magisk.utils.packageName
import
com.topjohnwu.magisk.utils.res
import
com.topjohnwu.magisk.utils.toggle
import
com.topjohnwu.superuser.Shell
...
...
app/src/main/java/com/topjohnwu/magisk/ui/module/ModuleViewModel.kt
View file @
d1ff7e0f
...
...
@@ -10,6 +10,8 @@ import com.skoumal.teanity.util.KObservableField
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.data.database.RepoDao
import
com.topjohnwu.magisk.extensions.toSingle
import
com.topjohnwu.magisk.extensions.update
import
com.topjohnwu.magisk.model.entity.module.Module
import
com.topjohnwu.magisk.model.entity.recycler.ModuleRvItem
import
com.topjohnwu.magisk.model.entity.recycler.RepoRvItem
...
...
@@ -19,8 +21,6 @@ import com.topjohnwu.magisk.model.events.OpenChangelogEvent
import
com.topjohnwu.magisk.model.events.OpenFilePickerEvent
import
com.topjohnwu.magisk.tasks.RepoUpdater
import
com.topjohnwu.magisk.ui.base.MagiskViewModel
import
com.topjohnwu.magisk.utils.toSingle
import
com.topjohnwu.magisk.utils.update
import
io.reactivex.Single
import
io.reactivex.disposables.Disposable
import
me.tatarka.bindingcollectionadapter2.OnItemBind
...
...
app/src/main/java/com/topjohnwu/magisk/ui/module/ModulesFragment.kt
View file @
d1ff7e0f
...
...
@@ -13,10 +13,10 @@ import com.topjohnwu.magisk.ClassMap
import
com.topjohnwu.magisk.Const
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.databinding.FragmentModulesBinding
import
com.topjohnwu.magisk.extensions.reboot
import
com.topjohnwu.magisk.model.events.OpenFilePickerEvent
import
com.topjohnwu.magisk.ui.base.MagiskFragment
import
com.topjohnwu.magisk.ui.flash.FlashActivity
import
com.topjohnwu.magisk.utils.reboot
import
com.topjohnwu.superuser.Shell
import
org.koin.androidx.viewmodel.ext.android.sharedViewModel
...
...
app/src/main/java/com/topjohnwu/magisk/ui/module/ReposFragment.kt
View file @
d1ff7e0f
...
...
@@ -11,9 +11,9 @@ import com.topjohnwu.magisk.Config
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.databinding.FragmentReposBinding
import
com.topjohnwu.magisk.model.download.DownloadService
import
com.topjohnwu.magisk.model.entity.module.Repo
import
com.topjohnwu.magisk.model.entity.internal.Configuration
import
com.topjohnwu.magisk.model.entity.internal.DownloadSubject
import
com.topjohnwu.magisk.model.entity.module.Repo
import
com.topjohnwu.magisk.model.events.InstallModuleEvent
import
com.topjohnwu.magisk.model.events.OpenChangelogEvent
import
com.topjohnwu.magisk.ui.base.MagiskFragment
...
...
app/src/main/java/com/topjohnwu/magisk/ui/superuser/SuperuserViewModel.kt
View file @
d1ff7e0f
...
...
@@ -11,6 +11,7 @@ import com.skoumal.teanity.viewevents.SnackbarEvent
import
com.topjohnwu.magisk.BR
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.data.repository.AppRepository
import
com.topjohnwu.magisk.extensions.toggle
import
com.topjohnwu.magisk.model.entity.MagiskPolicy
import
com.topjohnwu.magisk.model.entity.Policy
import
com.topjohnwu.magisk.model.entity.recycler.PolicyRvItem
...
...
@@ -18,7 +19,6 @@ import com.topjohnwu.magisk.model.events.PolicyEnableEvent
import
com.topjohnwu.magisk.model.events.PolicyUpdateEvent
import
com.topjohnwu.magisk.ui.base.MagiskViewModel
import
com.topjohnwu.magisk.utils.FingerprintHelper
import
com.topjohnwu.magisk.utils.toggle
import
com.topjohnwu.magisk.view.dialogs.CustomAlertDialog
import
com.topjohnwu.magisk.view.dialogs.FingerprintAuthDialog
import
io.reactivex.Single
...
...
app/src/main/java/com/topjohnwu/magisk/ui/surequest/SuRequestViewModel.kt
View file @
d1ff7e0f
...
...
@@ -17,6 +17,7 @@ import com.topjohnwu.magisk.BuildConfig
import
com.topjohnwu.magisk.Config
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.data.repository.AppRepository
import
com.topjohnwu.magisk.extensions.now
import
com.topjohnwu.magisk.model.entity.MagiskPolicy
import
com.topjohnwu.magisk.model.entity.Policy
import
com.topjohnwu.magisk.model.entity.recycler.SpinnerRvItem
...
...
@@ -25,7 +26,6 @@ import com.topjohnwu.magisk.model.events.DieEvent
import
com.topjohnwu.magisk.ui.base.MagiskViewModel
import
com.topjohnwu.magisk.utils.FingerprintHelper
import
com.topjohnwu.magisk.utils.SuConnector
import
com.topjohnwu.magisk.utils.now
import
me.tatarka.bindingcollectionadapter2.BindingListViewAdapter
import
me.tatarka.bindingcollectionadapter2.ItemBinding
import
timber.log.Timber
...
...
app/src/main/java/com/topjohnwu/magisk/utils/DataBindingAdapters.kt
View file @
d1ff7e0f
...
...
@@ -18,6 +18,7 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton
import
com.google.android.material.navigation.NavigationView
import
com.skoumal.teanity.extensions.subscribeK
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.extensions.replaceRandomWithSpecial
import
com.topjohnwu.magisk.model.entity.state.IndeterminateState
import
io.reactivex.Observable
import
io.reactivex.disposables.Disposable
...
...
app/src/main/java/com/topjohnwu/magisk/utils/FingerprintHelper.kt
View file @
d1ff7e0f
...
...
@@ -9,6 +9,8 @@ import android.os.CancellationSignal
import
android.security.keystore.KeyGenParameterSpec
import
android.security.keystore.KeyProperties
import
com.topjohnwu.magisk.Config
import
com.topjohnwu.magisk.extensions.get
import
com.topjohnwu.magisk.extensions.inject
import
java.security.KeyStore
import
javax.crypto.Cipher
import
javax.crypto.KeyGenerator
...
...
app/src/main/java/com/topjohnwu/magisk/utils/LocaleManager.kt
View file @
d1ff7e0f
...
...
@@ -9,6 +9,7 @@ import androidx.annotation.StringRes
import
com.topjohnwu.magisk.App
import
com.topjohnwu.magisk.Config
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.extensions.inject
import
com.topjohnwu.superuser.internal.InternalUtils
import
io.reactivex.Single
import
java.util.*
...
...
app/src/main/java/com/topjohnwu/magisk/utils/RootUtils.kt
View file @
d1ff7e0f
...
...
@@ -7,6 +7,8 @@ import android.net.Uri
import
com.topjohnwu.magisk.Const
import
com.topjohnwu.magisk.Info
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.extensions.rawResource
import
com.topjohnwu.magisk.extensions.toShellCmd
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.ShellUtils
import
com.topjohnwu.superuser.io.SuFile
...
...
app/src/main/java/com/topjohnwu/magisk/utils/SuLogger.kt
View file @
d1ff7e0f
...
...
@@ -9,6 +9,7 @@ import com.topjohnwu.magisk.Config
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.data.repository.AppRepository
import
com.topjohnwu.magisk.data.repository.LogRepository
import
com.topjohnwu.magisk.extensions.inject
import
com.topjohnwu.magisk.model.entity.MagiskPolicy
import
com.topjohnwu.magisk.model.entity.Policy
import
com.topjohnwu.magisk.model.entity.toLog
...
...
app/src/main/java/com/topjohnwu/magisk/utils/Utils.kt
View file @
d1ff7e0f
...
...
@@ -13,6 +13,7 @@ import android.widget.Toast
import
androidx.work.*
import
com.topjohnwu.magisk.*
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.extensions.get
import
com.topjohnwu.magisk.model.update.UpdateCheckService
import
com.topjohnwu.net.Networking
import
com.topjohnwu.superuser.Shell
...
...
app/src/main/java/com/topjohnwu/magisk/view/MarkDownWindow.kt
View file @
d1ff7e0f
...
...
@@ -7,7 +7,7 @@ import androidx.appcompat.app.AlertDialog
import
com.skoumal.teanity.extensions.subscribeK
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.data.repository.StringRepository
import
com.topjohnwu.magisk.
util
s.inject
import
com.topjohnwu.magisk.
extension
s.inject
import
io.reactivex.Single
import
ru.noties.markwon.Markwon
import
ru.noties.markwon.html.HtmlPlugin
...
...
app/src/main/java/com/topjohnwu/magisk/view/SnackbarMaker.kt
View file @
d1ff7e0f
...
...
@@ -7,7 +7,7 @@ import android.widget.TextView
import
androidx.annotation.StringRes
import
com.google.android.material.snackbar.Snackbar
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.
util
s.fileName
import
com.topjohnwu.magisk.
extension
s.fileName
object
SnackbarMaker
{
...
...
app/src/main/java/com/topjohnwu/magisk/view/dialogs/EnvFixDialog.kt
View file @
d1ff7e0f
...
...
@@ -6,10 +6,10 @@ import android.widget.Toast
import
androidx.core.net.toUri
import
com.topjohnwu.magisk.Info
import
com.topjohnwu.magisk.R
import
com.topjohnwu.magisk.extensions.cachedFile
import
com.topjohnwu.magisk.extensions.reboot
import
com.topjohnwu.magisk.tasks.MagiskInstaller
import
com.topjohnwu.magisk.utils.Utils
import
com.topjohnwu.magisk.utils.cachedFile
import
com.topjohnwu.magisk.utils.reboot
import
com.topjohnwu.net.Networking
import
com.topjohnwu.superuser.Shell
import
com.topjohnwu.superuser.ShellUtils
...
...
app/src/main/res/layout/fragment_magisk.xml
View file @
d1ff7e0f
...
...
@@ -15,7 +15,7 @@
<import
type=
"com.topjohnwu.magisk.R"
/>
<import
type=
"com.topjohnwu.magisk.
util
s.XStringKt"
/>
<import
type=
"com.topjohnwu.magisk.
extension
s.XStringKt"
/>
<variable
name=
"viewModel"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment