[Sample] Reformat code and allow null Lottiefiles preview
diff --git a/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt b/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt
index 0b99e9c..aad2223 100644
--- a/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt
+++ b/sample/src/androidTest/java/com/airbnb/lottie/samples/LottieAnimationViewTest.kt
@@ -32,6 +32,7 @@
     @Test
     fun testCanSetAnAnimationAndChangeItBack() {
         class TestFragment : Fragment(R.layout.lottie_activity_main)
+
         val scenario = launchFragmentInContainer<TestFragment>()
         scenario.moveToState(Lifecycle.State.RESUMED)
         scenario.onFragment { fragment ->
@@ -49,6 +50,7 @@
     @Test
     fun testStopsPlayingWhenDrawableSwitched() {
         class TestFragment : Fragment(R.layout.lottie_activity_main)
+
         val scenario = launchFragmentInContainer<TestFragment>()
         scenario.moveToState(Lifecycle.State.RESUMED)
         scenario.onFragment { fragment ->
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/AnimatorListenerAdapter.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/AnimatorListenerAdapter.kt
index 17aa604..658df8f 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/AnimatorListenerAdapter.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/AnimatorListenerAdapter.kt
@@ -3,11 +3,11 @@
 import android.animation.Animator
 
 internal open class AnimatorListenerAdapter(
-        val onStart: ((Animator) -> Unit)? = null,
-        val onRepeat: ((Animator) -> Unit)? = null,
-        val onEnd: ((Animator) -> Unit)? = null,
-        val onCancel: ((Animator) -> Unit)? = null
-): Animator.AnimatorListener {
+    val onStart: ((Animator) -> Unit)? = null,
+    val onRepeat: ((Animator) -> Unit)? = null,
+    val onEnd: ((Animator) -> Unit)? = null,
+    val onCancel: ((Animator) -> Unit)? = null
+) : Animator.AnimatorListener {
 
     override fun onAnimationStart(animation: Animator) = onStart?.invoke(animation) ?: Unit
     override fun onAnimationRepeat(animation: Animator) = onRepeat?.invoke(animation) ?: Unit
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt
index 704e666..c0ce94e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicActivity.kt
@@ -70,8 +70,10 @@
         binding.animationView.addValueCallback(leftArm, LottieProperty.COLOR) { COLORS[colorIndex] }
         binding.animationView.addValueCallback(rightArm, LottieProperty.COLOR) { COLORS[colorIndex] }
         val point = PointF()
-        binding.animationView.addValueCallback(KeyPath("Body"),
-            LottieProperty.TRANSFORM_POSITION) { frameInfo ->
+        binding.animationView.addValueCallback(
+            KeyPath("Body"),
+            LottieProperty.TRANSFORM_POSITION
+        ) { frameInfo ->
             val startX = frameInfo.startValue.x
             var startY = frameInfo.startValue.y
             var endY = frameInfo.endValue.y
@@ -92,7 +94,7 @@
         binding.jumpHeight.text = "Extra jump height ${EXTRA_JUMP[extraJumpIndex]}"
     }
 
-    fun lerp(a: Float, b: Float, @FloatRange(from = 0.0, to = 1.0) percentage: Float) =  a + percentage * (b - a)
+    fun lerp(a: Float, b: Float, @FloatRange(from = 0.0, to = 1.0) percentage: Float) = a + percentage * (b - a)
 
     companion object {
         val TAG = DynamicActivity::class.simpleName
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt
index ae0ad19..43a6aed 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/DynamicTextActivity.kt
@@ -15,7 +15,7 @@
         super.onCreate(savedInstanceState)
 
         val textDelegate = TextDelegate(binding.dynamicTextView)
-        binding.nameEditText.addTextChangedListener(object: TextWatcher {
+        binding.nameEditText.addTextChangedListener(object : TextWatcher {
             override fun afterTextChanged(s: Editable?) {
                 textDelegate.setText("NAME", s.toString())
             }
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
index 0cc1cf1..269ae98 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieApplication.kt
@@ -15,21 +15,22 @@
     private val okHttpClient by lazy {
         OkHttpClient.Builder()
             .connectTimeout(30, TimeUnit.SECONDS)
-            .build() }
+            .build()
+    }
 
     private val gson by lazy {
         GsonBuilder()
-                .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
-                .create()
+            .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
+            .create()
     }
 
     private val retrofit by lazy {
         Retrofit.Builder()
-                .client(okHttpClient)
-                .baseUrl("https://api.lottiefiles.com/")
-                .addConverterFactory(GsonConverterFactory.create(gson))
-                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
-                .build()
+            .client(okHttpClient)
+            .baseUrl("https://api.lottiefiles.com/")
+            .addConverterFactory(GsonConverterFactory.create(gson))
+            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+            .build()
     }
 
     val lottiefilesService: LottiefilesApi by lazy { retrofit.create(LottiefilesApi::class.java) }
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieFontViewGroup.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieFontViewGroup.kt
index 3802308..3f3d394 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieFontViewGroup.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottieFontViewGroup.kt
@@ -14,10 +14,9 @@
 import com.airbnb.lottie.LottieComposition
 import com.airbnb.lottie.LottieCompositionFactory
 import com.airbnb.lottie.LottieDrawable
-import java.util.*
 
 class LottieFontViewGroup @JvmOverloads constructor(
-        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val views = ArrayList<View>()
 
@@ -26,16 +25,16 @@
     init {
         isFocusableInTouchMode = true
         LottieCompositionFactory.fromAsset(context, "Mobilo/BlinkingCursor.json")
-                .addListener {
-                    cursorView.layoutParams = LayoutParams(
-                            ViewGroup.LayoutParams.WRAP_CONTENT,
-                            ViewGroup.LayoutParams.WRAP_CONTENT
-                    )
-                    cursorView.setComposition(it)
-                    cursorView.repeatCount = LottieDrawable.INFINITE
-                    cursorView.playAnimation()
-                    addView(cursorView)
-                }
+            .addListener {
+                cursorView.layoutParams = LayoutParams(
+                    ViewGroup.LayoutParams.WRAP_CONTENT,
+                    ViewGroup.LayoutParams.WRAP_CONTENT
+                )
+                cursorView.setComposition(it)
+                cursorView.repeatCount = LottieDrawable.INFINITE
+                cursorView.playAnimation()
+                addView(cursorView)
+            }
     }
 
     private fun addSpace() {
@@ -100,8 +99,10 @@
                 currentX = paddingLeft
                 currentY += view.measuredHeight
             }
-            view.layout(currentX, currentY, currentX + view.measuredWidth,
-                    currentY + view.measuredHeight)
+            view.layout(
+                currentX, currentY, currentX + view.measuredWidth,
+                currentY + view.measuredHeight
+            )
             currentX += view.width
         }
     }
@@ -149,7 +150,7 @@
         // }
         val fileName = "Mobilo/$letter.json"
         LottieCompositionFactory.fromAsset(context, fileName)
-                .addListener { addComposition(it) }
+            .addListener { addComposition(it) }
 
         return true
     }
@@ -174,8 +175,8 @@
     private fun addComposition(composition: LottieComposition) {
         val lottieAnimationView = LottieAnimationView(context)
         lottieAnimationView.layoutParams = LayoutParams(
-                ViewGroup.LayoutParams.WRAP_CONTENT,
-                ViewGroup.LayoutParams.WRAP_CONTENT
+            ViewGroup.LayoutParams.WRAP_CONTENT,
+            ViewGroup.LayoutParams.WRAP_CONTENT
         )
         lottieAnimationView.setComposition(composition)
         lottieAnimationView.playAnimation()
@@ -190,8 +191,8 @@
     private fun createSpaceView(): View {
         val spaceView = View(context)
         spaceView.layoutParams = LayoutParams(
-                resources.getDimensionPixelSize(R.dimen.font_space_width),
-                ViewGroup.LayoutParams.WRAP_CONTENT
+            resources.getDimensionPixelSize(R.dimen.font_space_width),
+            ViewGroup.LayoutParams.WRAP_CONTENT
         )
         spaceView.tag = "Space"
         return spaceView
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
index 69013a5..9d747df 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/LottiefilesFragment.kt
@@ -7,7 +7,12 @@
 import androidx.core.view.isVisible
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.viewModelScope
-import androidx.paging.*
+import androidx.paging.Pager
+import androidx.paging.PagingConfig
+import androidx.paging.PagingDataAdapter
+import androidx.paging.PagingSource
+import androidx.paging.PagingState
+import androidx.paging.cachedIn
 import androidx.recyclerview.widget.DiffUtil
 import androidx.recyclerview.widget.RecyclerView
 import com.airbnb.lottie.samples.api.LottiefilesApi
@@ -19,15 +24,20 @@
 import com.airbnb.lottie.samples.utils.hideKeyboard
 import com.airbnb.lottie.samples.utils.viewBinding
 import com.airbnb.lottie.samples.views.AnimationItemView
-import com.airbnb.mvrx.*
+import com.airbnb.mvrx.BaseMvRxFragment
+import com.airbnb.mvrx.MvRxState
+import com.airbnb.mvrx.MvRxViewModelFactory
+import com.airbnb.mvrx.ViewModelContext
+import com.airbnb.mvrx.fragmentViewModel
+import com.airbnb.mvrx.withState
 import kotlinx.coroutines.flow.collectLatest
 import kotlinx.coroutines.flow.launchIn
 import kotlinx.coroutines.flow.onEach
 import kotlinx.coroutines.launch
 
 data class LottiefilesState(
-        val mode: LottiefilesMode = LottiefilesMode.Recent,
-        val query: String = ""
+    val mode: LottiefilesMode = LottiefilesMode.Recent,
+    val query: String = ""
 ) : MvRxState
 
 class LottiefilesViewModel(initialState: LottiefilesState, private val api: LottiefilesApi) : MvRxViewModel<LottiefilesState>(initialState) {
@@ -61,9 +71,9 @@
 }
 
 class LottiefilesDataSource(
-        private val api: LottiefilesApi,
-        val mode: LottiefilesMode,
-        private val query: String
+    private val api: LottiefilesApi,
+    val mode: LottiefilesMode,
+    private val query: String
 ) : PagingSource<Int, AnimationData>() {
 
     override suspend fun load(params: LoadParams<Int>): LoadResult<Int, AnimationData> {
@@ -82,9 +92,9 @@
             }
 
             LoadResult.Page(
-                    response.data,
-                    if (page == 1) null else page + 1,
-                    (page + 1).takeIf { page < response.lastPage }
+                response.data,
+                if (page == 1) null else page + 1,
+                (page + 1).takeIf { page < response.lastPage }
             )
         } catch (e: Exception) {
             LoadResult.Error(e)
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt
index 10dfe39..80a6a7f 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/OnPageChangeListenerAdapter.kt
@@ -3,16 +3,16 @@
 import androidx.viewpager.widget.ViewPager
 
 internal open class OnPageChangeListenerAdapter(
-        private val onPageScrollStateChanged: ((state: Int) -> Unit)? = null,
-        private val onPageScrolled:
-                ((position: Int, positionOffset: Float, positionOffsetPixels: Int) -> Unit)? = null,
-        private val onPageSelected: ((position: Int) -> Unit)? = null
-): ViewPager.OnPageChangeListener {
+    private val onPageScrollStateChanged: ((state: Int) -> Unit)? = null,
+    private val onPageScrolled:
+    ((position: Int, positionOffset: Float, positionOffsetPixels: Int) -> Unit)? = null,
+    private val onPageSelected: ((position: Int) -> Unit)? = null
+) : ViewPager.OnPageChangeListener {
     override fun onPageScrollStateChanged(state: Int) =
-            onPageScrollStateChanged?.invoke(state) ?: Unit
+        onPageScrollStateChanged?.invoke(state) ?: Unit
 
     override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) =
-            onPageScrolled?.invoke(position, positionOffset, positionOffsetPixels) ?: Unit
+        onPageScrolled?.invoke(position, positionOffset, positionOffsetPixels) ?: Unit
 
     override fun onPageSelected(position: Int) = onPageSelected?.invoke(position) ?: Unit
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/OnSeekBarChangeListenerAdapter.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/OnSeekBarChangeListenerAdapter.kt
index 523461a..24b16c1 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/OnSeekBarChangeListenerAdapter.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/OnSeekBarChangeListenerAdapter.kt
@@ -3,16 +3,16 @@
 import android.widget.SeekBar
 
 internal class OnSeekBarChangeListenerAdapter(
-        private val onProgressChanged: ((seekBar: SeekBar, progress: Int, fromUser: Boolean) -> Unit)? = null,
-        private val onStartTrackingTouch: ((seekBar: SeekBar) -> Unit)? = null,
-        private val onStopTrackingTouch: ((seekBar: SeekBar) -> Unit)? = null
+    private val onProgressChanged: ((seekBar: SeekBar, progress: Int, fromUser: Boolean) -> Unit)? = null,
+    private val onStartTrackingTouch: ((seekBar: SeekBar) -> Unit)? = null,
+    private val onStopTrackingTouch: ((seekBar: SeekBar) -> Unit)? = null
 ) : SeekBar.OnSeekBarChangeListener {
     override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) =
-            onProgressChanged?.invoke(seekBar, progress, fromUser) ?: Unit
+        onProgressChanged?.invoke(seekBar, progress, fromUser) ?: Unit
 
     override fun onStartTrackingTouch(seekBar: SeekBar) =
-            onStartTrackingTouch?.invoke(seekBar) ?: Unit
+        onStartTrackingTouch?.invoke(seekBar) ?: Unit
 
     override fun onStopTrackingTouch(seekBar: SeekBar) =
-            onStopTrackingTouch?.invoke(seekBar) ?: Unit
+        onStopTrackingTouch?.invoke(seekBar) ?: Unit
 }
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
index 99be680..3059b4c 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerActivity.kt
@@ -12,11 +12,10 @@
         super.onCreate(savedInstanceState)
 
         if (savedInstanceState == null) {
-            val args = intent.getParcelableExtra(PlayerFragment.EXTRA_ANIMATION_ARGS) ?:
-                    CompositionArgs(fileUri = intent.data)
+            val args = intent.getParcelableExtra(PlayerFragment.EXTRA_ANIMATION_ARGS) ?: CompositionArgs(fileUri = intent.data)
             supportFragmentManager.beginTransaction()
-                    .add(R.id.content, PlayerFragment.forAsset(args))
-                    .commit()
+                .add(R.id.content, PlayerFragment.forAsset(args))
+                .commit()
         }
     }
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
index 78ca26a..35cbe31 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerFragment.kt
@@ -22,7 +22,11 @@
 import androidx.transition.TransitionManager
 import com.airbnb.epoxy.EpoxyController
 import com.airbnb.epoxy.EpoxyRecyclerView
-import com.airbnb.lottie.*
+import com.airbnb.lottie.FontAssetDelegate
+import com.airbnb.lottie.L
+import com.airbnb.lottie.LottieAnimationView
+import com.airbnb.lottie.LottieComposition
+import com.airbnb.lottie.RenderMode
 import com.airbnb.lottie.model.KeyPath
 import com.airbnb.lottie.samples.databinding.PlayerFragmentBinding
 import com.airbnb.lottie.samples.model.CompositionArgs
@@ -77,19 +81,19 @@
     }
 
     private val animatorListener = AnimatorListenerAdapter(
-            onStart = { binding.controlBarPlayerControls.playButton.isActivated = true },
-            onEnd = {
-                binding.controlBarPlayerControls.playButton.isActivated = false
-                binding.animationView.performanceTracker?.logRenderTimes()
-                updateRenderTimesPerLayer()
-            },
-            onCancel = {
-                binding.controlBarPlayerControls.playButton.isActivated = false
-            },
-            onRepeat = {
-                binding.animationView.performanceTracker?.logRenderTimes()
-                updateRenderTimesPerLayer()
-            }
+        onStart = { binding.controlBarPlayerControls.playButton.isActivated = true },
+        onEnd = {
+            binding.controlBarPlayerControls.playButton.isActivated = false
+            binding.animationView.performanceTracker?.logRenderTimes()
+            updateRenderTimesPerLayer()
+        },
+        onCancel = {
+            binding.controlBarPlayerControls.playButton.isActivated = false
+        },
+        onRepeat = {
+            binding.animationView.performanceTracker?.logRenderTimes()
+            updateRenderTimesPerLayer()
+        }
     )
 
     @SuppressLint("SetTextI18n")
@@ -108,7 +112,7 @@
         })
 
         val args = arguments?.getParcelable<CompositionArgs>(EXTRA_ANIMATION_ARGS)
-                ?: throw IllegalArgumentException("No composition args specified")
+            ?: throw IllegalArgumentException("No composition args specified")
         args.animationData?.bgColorInt?.let {
             binding.controlBarBackgroundColor.backgroundButton1.setBackgroundColor(it)
             binding.animationContainer.setBackgroundColor(it)
@@ -145,8 +149,8 @@
         viewModel.selectSubscribe(PlayerState::borderVisible) {
             binding.controlBar.borderToggle.isActivated = it
             binding.controlBar.borderToggle.setImageResource(
-                    if (it) R.drawable.ic_border_on
-                    else R.drawable.ic_border_off
+                if (it) R.drawable.ic_border_on
+                else R.drawable.ic_border_off
             )
             binding.animationView.setBackgroundResource(if (it) R.drawable.outline else 0)
         }
@@ -221,24 +225,24 @@
         viewModel.selectSubscribe(PlayerState::speed) {
             binding.animationView.speed = it
             binding.controlBarSpeed.speedButtonsContainer
-                    .children
-                    .filterIsInstance<ControlBarItemToggleView>()
-                    .forEach { toggleView ->
-                        toggleView.isActivated = toggleView.getText().replace("x", "").toFloat() == binding.animationView.speed
-                    }
+                .children
+                .filterIsInstance<ControlBarItemToggleView>()
+                .forEach { toggleView ->
+                    toggleView.isActivated = toggleView.getText().replace("x", "").toFloat() == binding.animationView.speed
+                }
         }
         binding.controlBarSpeed.speedButtonsContainer
-                .children
-                .filterIsInstance(ControlBarItemToggleView::class.java)
-                .forEach { child ->
-                    child.setOnClickListener {
-                        val speed = (it as ControlBarItemToggleView)
-                                .getText()
-                                .replace("x", "")
-                                .toFloat()
-                        viewModel.setSpeed(speed)
-                    }
+            .children
+            .filterIsInstance(ControlBarItemToggleView::class.java)
+            .forEach { child ->
+                child.setOnClickListener {
+                    val speed = (it as ControlBarItemToggleView)
+                        .getText()
+                        .replace("x", "")
+                        .toFloat()
+                    viewModel.setSpeed(speed)
                 }
+            }
 
 
         binding.controlBarPlayerControls.loopButton.setOnClickListener { viewModel.toggleLoop() }
@@ -250,21 +254,22 @@
         binding.controlBarPlayerControls.playButton.isActivated = binding.animationView.isAnimating
 
         binding.controlBarPlayerControls.seekBar.setOnSeekBarChangeListener(OnSeekBarChangeListenerAdapter(
-                onProgressChanged = { _, progress, _ ->
-                    if (binding.controlBarPlayerControls.seekBar.isPressed && progress in 1..4) {
-                        binding.controlBarPlayerControls.seekBar.progress = 0
-                        return@OnSeekBarChangeListenerAdapter
-                    }
-                    if (binding.animationView.isAnimating) return@OnSeekBarChangeListenerAdapter
-                    binding.animationView.progress = progress / binding.controlBarPlayerControls.seekBar.max.toFloat()
+            onProgressChanged = { _, progress, _ ->
+                if (binding.controlBarPlayerControls.seekBar.isPressed && progress in 1..4) {
+                    binding.controlBarPlayerControls.seekBar.progress = 0
+                    return@OnSeekBarChangeListenerAdapter
                 }
+                if (binding.animationView.isAnimating) return@OnSeekBarChangeListenerAdapter
+                binding.animationView.progress = progress / binding.controlBarPlayerControls.seekBar.max.toFloat()
+            }
         ))
 
         binding.animationView.addAnimatorUpdateListener {
             binding.controlBarPlayerControls.currentFrameView.text = updateFramesAndDurationLabel(binding.animationView)
 
             if (binding.controlBarPlayerControls.seekBar.isPressed) return@addAnimatorUpdateListener
-            binding.controlBarPlayerControls.seekBar.progress = ((it.animatedValue as Float) * binding.controlBarPlayerControls.seekBar.max).roundToInt()
+            binding.controlBarPlayerControls.seekBar.progress =
+                ((it.animatedValue as Float) * binding.controlBarPlayerControls.seekBar.max).roundToInt()
         }
         binding.animationView.addAnimatorListener(animatorListener)
         binding.controlBarPlayerControls.playButton.setOnClickListener {
@@ -279,22 +284,22 @@
         }
 
         binding.controlBarScale.scaleSeekBar.setOnSeekBarChangeListener(OnSeekBarChangeListenerAdapter(
-                onProgressChanged = { _, progress, _ ->
-                    val minScale = minScale()
-                    val maxScale = maxScale()
-                    val scale = minScale + progress / 100f * (maxScale - minScale)
-                    binding.animationView.scale = scale
-                    binding.controlBarScale.scaleText.text = "%.0f%%".format(scale * 100)
-                }
+            onProgressChanged = { _, progress, _ ->
+                val minScale = minScale()
+                val maxScale = maxScale()
+                val scale = minScale + progress / 100f * (maxScale - minScale)
+                binding.animationView.scale = scale
+                binding.controlBarScale.scaleText.text = "%.0f%%".format(scale * 100)
+            }
         ))
 
         arrayOf(
-                binding.controlBarBackgroundColor.backgroundButton1,
-                binding.controlBarBackgroundColor.backgroundButton2,
-                binding.controlBarBackgroundColor.backgroundButton3,
-                binding.controlBarBackgroundColor.backgroundButton4,
-                binding.controlBarBackgroundColor.backgroundButton5,
-                binding.controlBarBackgroundColor.backgroundButton6
+            binding.controlBarBackgroundColor.backgroundButton1,
+            binding.controlBarBackgroundColor.backgroundButton2,
+            binding.controlBarBackgroundColor.backgroundButton3,
+            binding.controlBarBackgroundColor.backgroundButton4,
+            binding.controlBarBackgroundColor.backgroundButton5,
+            binding.controlBarBackgroundColor.backgroundButton6
         ).forEach { bb ->
             bb.setOnClickListener {
                 binding.animationContainer.setBackgroundColor(bb.getColor())
@@ -364,26 +369,26 @@
         val minFrameView = EditText(context)
         minFrameView.setText(binding.animationView.minFrame.toInt().toString())
         AlertDialog.Builder(context)
-                .setTitle(R.string.min_frame_dialog)
-                .setView(minFrameView)
-                .setPositiveButton("Load") { _, _ ->
-                    viewModel.setMinFrame(minFrameView.text.toString().toIntOrNull() ?: 0)
-                }
-                .setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
-                .show()
+            .setTitle(R.string.min_frame_dialog)
+            .setView(minFrameView)
+            .setPositiveButton("Load") { _, _ ->
+                viewModel.setMinFrame(minFrameView.text.toString().toIntOrNull() ?: 0)
+            }
+            .setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
+            .show()
     }
 
     private fun showMaxFrameDialog() {
         val maxFrameView = EditText(context)
         maxFrameView.setText(binding.animationView.maxFrame.toInt().toString())
         AlertDialog.Builder(context)
-                .setTitle(R.string.max_frame_dialog)
-                .setView(maxFrameView)
-                .setPositiveButton("Load") { _, _ ->
-                    viewModel.setMaxFrame(maxFrameView.text.toString().toIntOrNull() ?: 0)
-                }
-                .setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
-                .show()
+            .setTitle(R.string.max_frame_dialog)
+            .setView(maxFrameView)
+            .setPositiveButton("Load") { _, _ ->
+                viewModel.setMaxFrame(maxFrameView.text.toString().toIntOrNull() ?: 0)
+            }
+            .setNegativeButton("Cancel") { dialog, _ -> dialog.dismiss() }
+            .show()
     }
 
     private fun View.animateVisible(visible: Boolean) {
@@ -453,9 +458,9 @@
             override fun buildModels(controller: EpoxyController) {
                 binding.animationView.resolveKeyPath(KeyPath("**")).forEachIndexed { index, keyPath ->
                     BottomSheetItemViewModel_()
-                            .id(index)
-                            .text(keyPath.keysToString())
-                            .addTo(controller)
+                        .id(index)
+                        .text(keyPath.keysToString())
+                        .addTo(controller)
                 }
             }
         })
@@ -471,8 +476,8 @@
         binding.animationView.performanceTracker?.sortedRenderTimes?.forEach {
             val view = BottomSheetItemView(requireContext()).apply {
                 set(
-                        it.first!!.replace("__container", "Total"),
-                        "%.2f ms".format(it.second!!)
+                    it.first!!.replace("__container", "Total"),
+                    "%.2f ms".format(it.second!!)
                 )
             }
             binding.bottomSheetRenderTimes.renderTimesContainer.addView(view)
@@ -498,8 +503,8 @@
         val size = warnings.size
         binding.controlBar.warningsButton.setText(resources.getQuantityString(R.plurals.warnings, size, size))
         binding.controlBar.warningsButton.setImageResource(
-                if (warnings.isEmpty()) R.drawable.ic_sentiment_satisfied
-                else R.drawable.ic_sentiment_dissatisfied
+            if (warnings.isEmpty()) R.drawable.ic_sentiment_satisfied
+            else R.drawable.ic_sentiment_dissatisfied
         )
     }
 
@@ -510,8 +515,8 @@
         val screenHeight = resources.displayMetrics.heightPixels.toFloat()
         val bounds = state.composition()?.bounds
         return@withState min(
-                screenWidth / (bounds?.width()?.toFloat() ?: screenWidth),
-                screenHeight / (bounds?.height()?.toFloat() ?: screenHeight)
+            screenWidth / (bounds?.width()?.toFloat() ?: screenWidth),
+            screenHeight / (bounds?.height()?.toFloat() ?: screenHeight)
         ) * 2f
     }
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
index d404228..ec6e0e1 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PlayerViewModel.kt
@@ -8,32 +8,38 @@
 import com.airbnb.lottie.LottieTask
 import com.airbnb.lottie.samples.model.CompositionArgs
 import com.airbnb.lottie.samples.utils.MvRxViewModel
-import com.airbnb.mvrx.*
+import com.airbnb.mvrx.Async
+import com.airbnb.mvrx.Fail
+import com.airbnb.mvrx.MvRxState
+import com.airbnb.mvrx.MvRxViewModelFactory
+import com.airbnb.mvrx.Success
+import com.airbnb.mvrx.Uninitialized
+import com.airbnb.mvrx.ViewModelContext
 import java.io.FileInputStream
 import kotlin.math.max
 import kotlin.math.min
 
 data class PlayerState(
-        val composition: Async<LottieComposition> = Uninitialized,
-        val controlsVisible: Boolean = true,
-        val controlBarVisible: Boolean = true,
-        val renderGraphVisible: Boolean = false,
-        val outlineMasksAndMattes: Boolean = false,
-        val borderVisible: Boolean = false,
-        val backgroundColorVisible: Boolean = false,
-        val scaleVisible: Boolean = false,
-        val speedVisible: Boolean = false,
-        val trimVisible: Boolean = false,
-        val useMergePaths: Boolean = false,
-        val minFrame: Int = 0,
-        val maxFrame: Int = 0,
-        val speed: Float = 1f,
-        val repeatCount: Int = ValueAnimator.INFINITE
+    val composition: Async<LottieComposition> = Uninitialized,
+    val controlsVisible: Boolean = true,
+    val controlBarVisible: Boolean = true,
+    val renderGraphVisible: Boolean = false,
+    val outlineMasksAndMattes: Boolean = false,
+    val borderVisible: Boolean = false,
+    val backgroundColorVisible: Boolean = false,
+    val scaleVisible: Boolean = false,
+    val speedVisible: Boolean = false,
+    val trimVisible: Boolean = false,
+    val useMergePaths: Boolean = false,
+    val minFrame: Int = 0,
+    val maxFrame: Int = 0,
+    val speed: Float = 1f,
+    val repeatCount: Int = ValueAnimator.INFINITE
 ) : MvRxState
 
 class PlayerViewModel(
-        initialState: PlayerState,
-        private val application: Application
+    initialState: PlayerState,
+    private val application: Application
 ) : MvRxViewModel<PlayerState>(initialState) {
 
     fun fetchAnimation(args: CompositionArgs) {
@@ -45,12 +51,12 @@
             args.asset != null -> LottieCompositionFactory.fromAsset(application, args.asset, null)
             else -> error("Don't know how to fetch animation for $args")
         }
-                .addListener {
-                    setState {
-                        copy(composition = Success(it), minFrame = it.startFrame.toInt(), maxFrame = it.endFrame.toInt())
-                    }
+            .addListener {
+                setState {
+                    copy(composition = Success(it), minFrame = it.startFrame.toInt(), maxFrame = it.endFrame.toInt())
                 }
-                .addFailureListener { setState { copy(composition = Fail(it)) } }
+            }
+            .addFailureListener { setState { copy(composition = Fail(it)) } }
     }
 
     private fun taskForUri(uri: Uri): LottieTask<LottieComposition> {
@@ -101,14 +107,14 @@
 
     fun setDistractionFree(distractionFree: Boolean) = setState {
         copy(
-                controlsVisible = !distractionFree,
-                controlBarVisible = !distractionFree,
-                renderGraphVisible = false,
-                borderVisible = false,
-                backgroundColorVisible = false,
-                scaleVisible = false,
-                speedVisible = false,
-                trimVisible = false
+            controlsVisible = !distractionFree,
+            controlBarVisible = !distractionFree,
+            renderGraphVisible = false,
+            borderVisible = false,
+            backgroundColorVisible = false,
+            scaleVisible = false,
+            speedVisible = false,
+            trimVisible = false
         )
     }
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
index d6ad662..96b4f09 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewFragment.kt
@@ -6,7 +6,6 @@
 import android.content.ActivityNotFoundException
 import android.content.Intent
 import android.content.pm.PackageManager
-import com.google.android.material.snackbar.Snackbar
 import android.widget.ArrayAdapter
 import android.widget.EditText
 import android.widget.Toast
@@ -15,9 +14,11 @@
 import com.airbnb.lottie.samples.utils.BaseEpoxyFragment
 import com.airbnb.lottie.samples.utils.hasPermission
 import com.airbnb.lottie.samples.views.marquee
+import com.google.android.material.snackbar.Snackbar
 
 private const val RC_FILE = 1000
 private const val RC_CAMERA_PERMISSION = 1001
+
 class PreviewFragment : BaseEpoxyFragment() {
 
     override fun EpoxyController.buildModels() {
@@ -66,14 +67,14 @@
             clickListener { _ ->
                 val urlOrJsonView = EditText(context)
                 AlertDialog.Builder(context)
-                        .setTitle(R.string.preview_url)
-                        .setView(urlOrJsonView)
-                        .setPositiveButton(R.string.preview_load) { _, _ ->
-                            val args = CompositionArgs(url = urlOrJsonView.text.toString())
-                            startActivity(PlayerActivity.intent(requireContext(), args))
-                        }
-                        .setNegativeButton(R.string.preview_cancel) { dialog, _ -> dialog.dismiss() }
-                        .show()
+                    .setTitle(R.string.preview_url)
+                    .setView(urlOrJsonView)
+                    .setPositiveButton(R.string.preview_load) { _, _ ->
+                        val args = CompositionArgs(url = urlOrJsonView.text.toString())
+                        startActivity(PlayerActivity.intent(requireContext(), args))
+                    }
+                    .setNegativeButton(R.string.preview_cancel) { dialog, _ -> dialog.dismiss() }
+                    .show()
             }
         }
 
@@ -84,14 +85,14 @@
             clickListener { _ ->
                 val adapter = ArrayAdapter<String>(requireContext(), android.R.layout.select_dialog_item)
                 requireContext().assets.list("")?.asSequence()
-                        ?.filter { it.endsWith(".json") || it.endsWith(".zip") }
-                        ?.forEach { adapter.add(it) }
+                    ?.filter { it.endsWith(".json") || it.endsWith(".zip") }
+                    ?.forEach { adapter.add(it) }
                 AlertDialog.Builder(context)
-                        .setAdapter(adapter) { _, which ->
-                            val args = CompositionArgs(asset = adapter.getItem(which))
-                            startActivity(PlayerActivity.intent(requireContext(), args))
-                        }
-                        .show()
+                    .setAdapter(adapter) { _, which ->
+                        val args = CompositionArgs(asset = adapter.getItem(which))
+                        startActivity(PlayerActivity.intent(requireContext(), args))
+                    }
+                    .show()
             }
         }
     }
@@ -99,7 +100,7 @@
     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
         if (resultCode != Activity.RESULT_OK) return
         when (requestCode) {
-            RC_FILE-> startActivity(PlayerActivity.intent(requireContext(), CompositionArgs(fileUri = data?.data)))
+            RC_FILE -> startActivity(PlayerActivity.intent(requireContext(), CompositionArgs(fileUri = data?.data)))
         }
     }
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt
index 42e068f..154c1e4 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/PreviewItemView.kt
@@ -13,9 +13,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class PreviewItemView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : LinearLayout(context, attrs, defStyleAttr) {
     private val binding: ListItemPreviewBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
index 3379dd2..8b0a095 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/ShowcaseFragment.kt
@@ -12,7 +12,13 @@
 import com.airbnb.lottie.samples.views.loadingView
 import com.airbnb.lottie.samples.views.marquee
 import com.airbnb.lottie.samples.views.showcaseCarousel
-import com.airbnb.mvrx.*
+import com.airbnb.mvrx.Async
+import com.airbnb.mvrx.MvRxState
+import com.airbnb.mvrx.MvRxViewModelFactory
+import com.airbnb.mvrx.Uninitialized
+import com.airbnb.mvrx.ViewModelContext
+import com.airbnb.mvrx.fragmentViewModel
+import com.airbnb.mvrx.withState
 
 data class ShowcaseState(val response: Async<AnimationResponseV2> = Uninitialized) : MvRxState
 
@@ -34,21 +40,21 @@
 class ShowcaseFragment : BaseEpoxyFragment() {
 
     private val showcaseItems = listOf(
-            ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_dynamic_properties) {
-                startActivity(Intent(requireContext(), DynamicActivity::class.java))
-            },
-            ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_animated_text) {
-                startActivity(Intent(requireContext(), TypographyDemoActivity::class.java))
-            },
-            ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_dynamic_text) {
-                startActivity(Intent(requireContext(), DynamicTextActivity::class.java))
-            },
-            ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_bullseye) {
-                startActivity(Intent(requireContext(), BullseyeActivity::class.java))
-            },
-            ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_recycler_view) {
-                startActivity(Intent(requireContext(), WishListActivity::class.java))
-            }
+        ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_dynamic_properties) {
+            startActivity(Intent(requireContext(), DynamicActivity::class.java))
+        },
+        ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_animated_text) {
+            startActivity(Intent(requireContext(), TypographyDemoActivity::class.java))
+        },
+        ShowcaseItem(R.drawable.gilbert_animated, R.string.showcase_item_dynamic_text) {
+            startActivity(Intent(requireContext(), DynamicTextActivity::class.java))
+        },
+        ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_bullseye) {
+            startActivity(Intent(requireContext(), BullseyeActivity::class.java))
+        },
+        ShowcaseItem(R.drawable.showcase_preview_lottie, R.string.showcase_item_recycler_view) {
+            startActivity(Intent(requireContext(), WishListActivity::class.java))
+        }
     )
     private val viewModel: ShowcaseViewModel by fragmentViewModel()
 
@@ -73,7 +79,7 @@
                 animationItemView {
                     id(it.id)
                     title(it.title)
-                    previewUrl("https://assets9.lottiefiles.com/${it.preview}")
+                    if (it.preview != null) previewUrl("https://assets9.lottiefiles.com/${it.preview}")
                     previewBackgroundColor(it.bgColorInt)
                     onClickListener { _ -> startActivity(PlayerActivity.intent(requireContext(), CompositionArgs(animationDataV2 = it))) }
                 }
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/SimpleAnimationActivity.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/SimpleAnimationActivity.kt
index 4cd5fab..b2352d6 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/SimpleAnimationActivity.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/SimpleAnimationActivity.kt
@@ -23,7 +23,7 @@
             val assetName = intent.extras?.getString("animation") ?: ""
             val start = System.currentTimeMillis()
             composition = LottieCompositionFactory.fromAssetSync(this, assetName, null).value
-                    ?: throw IllegalArgumentException("Invalid composition $assetName")
+                ?: throw IllegalArgumentException("Invalid composition $assetName")
             Toast.makeText(this@SimpleAnimationActivity, "Done ${System.currentTimeMillis() - start}", Toast.LENGTH_SHORT).show()
         }
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt
index 9e7ce50..2275295 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/TrimView.kt
@@ -2,16 +2,16 @@
 
 import android.annotation.SuppressLint
 import android.content.Context
-import androidx.customview.widget.ViewDragHelper
 import android.util.AttributeSet
 import android.view.Gravity
 import android.view.MotionEvent
 import android.view.View
 import android.widget.FrameLayout
 import android.widget.ImageView
+import androidx.customview.widget.ViewDragHelper
 
 class TrimView @JvmOverloads constructor(
-        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
 
     private val leftAnchor by lazy {
@@ -26,7 +26,7 @@
     }
     private lateinit var callback: (Float, Float) -> Unit
 
-    private val dragHelper = ViewDragHelper.create(this, object: ViewDragHelper.Callback() {
+    private val dragHelper = ViewDragHelper.create(this, object : ViewDragHelper.Callback() {
         override fun tryCaptureView(child: View, pointerId: Int) = true
 
         override fun getViewHorizontalDragRange(child: View) = width
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt
index 6234362..07194de 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationData.kt
@@ -6,13 +6,13 @@
 
 @Parcelize
 data class AnimationData(
-        val id: Long,
-        val title: String,
-        val description: String?,
-        private val bgColor: String?,
-        val preview: String?,
-        val lottieLink: String,
-        val userInfo: UserInfo?
+    val id: Long,
+    val title: String,
+    val description: String?,
+    private val bgColor: String?,
+    val preview: String?,
+    val lottieLink: String,
+    val userInfo: UserInfo?
 ) : Parcelable {
     val bgColorInt get() = bgColor.toColorIntSafe()
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationDataV2.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationDataV2.kt
index 4f45257..fa81035 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationDataV2.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationDataV2.kt
@@ -7,11 +7,11 @@
 
 @Parcelize
 data class AnimationDataV2(
-        @SerializedName("bg_color") val bgColor: String,
-        @SerializedName("file") val file: String,
-        @SerializedName("id") val id: Int,
-        @SerializedName("preview") val preview: String,
-        @SerializedName("title") val title: String,
+    @SerializedName("bg_color") val bgColor: String = "",
+    @SerializedName("file") val file: String = "",
+    @SerializedName("id") val id: Int,
+    @SerializedName("preview") val preview: String? = "",
+    @SerializedName("title") val title: String = "",
 ) : Parcelable {
     val bgColorInt get() = bgColor.toColorIntSafe()
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponse.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponse.kt
index c5d3897..d23991e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponse.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponse.kt
@@ -7,14 +7,14 @@
 @SuppressWarnings("ParcelCreator")
 @Parcelize
 data class AnimationResponse(
-        val currentPage: Int,
-        val data: List<AnimationData>,
-        val from: String,
-        val lastPage: Int,
-        val nextPageUrl: String?,
-        val path: String,
-        val perPage: Int,
-        val prevPageUrl: String,
-        val to: Int,
-        val total: Int
+    val currentPage: Int,
+    val data: List<AnimationData>,
+    val from: String,
+    val lastPage: Int,
+    val nextPageUrl: String?,
+    val path: String,
+    val perPage: Int,
+    val prevPageUrl: String,
+    val to: Int,
+    val total: Int
 ) : Parcelable
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponseV2.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponseV2.kt
index ed31989..3a8381d 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponseV2.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/AnimationResponseV2.kt
@@ -1,5 +1,5 @@
 package com.airbnb.lottie.samples.model
 
 data class AnimationResponseV2(
-        val data: List<AnimationDataV2> = emptyList(),
+    val data: List<AnimationDataV2> = emptyList(),
 )
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
index 1544a35..61d461e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/CompositionArgs.kt
@@ -9,13 +9,13 @@
 @SuppressLint("ParcelCreator")
 @Parcelize
 data class CompositionArgs(
-        val assetName: String? = null,
-        val url: String? = null,
-        val fileUri: Uri? = null,
-        val asset: String? = null,
-        val animationData: AnimationData? = null,
-        val animationDataV2: AnimationDataV2? = null
+    val assetName: String? = null,
+    val url: String? = null,
+    val fileUri: Uri? = null,
+    val asset: String? = null,
+    val animationData: AnimationData? = null,
+    val animationDataV2: AnimationDataV2? = null
 ) : Parcelable {
-        @IgnoredOnParcel
-        val isJson = (url ?: animationData?.lottieLink ?: animationDataV2?.file)?.endsWith("json") == true
+    @IgnoredOnParcel
+    val isJson = (url ?: animationData?.lottieLink ?: animationDataV2?.file)?.endsWith("json") == true
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt
index 38c5d10..161211f 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/ShowcaseItem.kt
@@ -4,7 +4,7 @@
 import androidx.annotation.StringRes
 
 data class ShowcaseItem(
-        @DrawableRes val drawableRes: Int,
-        @StringRes val titleRes: Int,
-        val clickListener: () -> Unit
+    @DrawableRes val drawableRes: Int,
+    @StringRes val titleRes: Int,
+    val clickListener: () -> Unit
 )
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/UserInfo.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/UserInfo.kt
index 66c6a7d..c6ef912 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/model/UserInfo.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/model/UserInfo.kt
@@ -7,13 +7,13 @@
 @SuppressWarnings("ParcelCreator")
 @Parcelize
 data class UserInfo(
-        val id: Long,
-        val name: String,
-        val bio: String?,
-        val location: String?,
-        val city: String?,
-        val social_twitter: String?,
-        val social_dribbble: String?,
-        val social_behance: String?,
-        val url: String?
+    val id: Long,
+    val name: String,
+    val bio: String?,
+    val location: String?,
+    val city: String?,
+    val social_twitter: String?,
+    val social_dribbble: String?,
+    val social_behance: String?,
+    val url: String?
 ) : Parcelable
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ActivityViewBindingDelegate.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ActivityViewBindingDelegate.kt
index 3393702..e6248c2 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ActivityViewBindingDelegate.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ActivityViewBindingDelegate.kt
@@ -16,8 +16,8 @@
 inline fun <reified T : ViewBinding> Activity.viewBinding() = ActivityViewBindingDelegate(T::class.java, this)
 
 class ActivityViewBindingDelegate<T : ViewBinding>(
-        private val bindingClass: Class<T>,
-        val activity: Activity
+    private val bindingClass: Class<T>,
+    val activity: Activity
 ) : ReadOnlyProperty<Activity, T> {
     private var binding: T? = null
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt
index 04889ad..805cf4c 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/BaseEpoxyFragment.kt
@@ -10,7 +10,7 @@
 
 
 private class BaseEpoxyController(
-        private val buildModelsCallback: EpoxyController.() -> Unit
+    private val buildModelsCallback: EpoxyController.() -> Unit
 ) : AsyncEpoxyController() {
     override fun buildModels() {
         buildModelsCallback()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt
index bcc1883..bcda8a8 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/MvRxViewModel.kt
@@ -10,8 +10,8 @@
      * This uses [Dispatchers.Main.immediate] by default to mimic [viewModelScope].
      */
     fun <T : Any?> (suspend () -> T).execute(
-            dispatcher: CoroutineDispatcher = Dispatchers.Main.immediate,
-            reducer: S.(Async<T>) -> S
+        dispatcher: CoroutineDispatcher = Dispatchers.Main.immediate,
+        reducer: S.(Async<T>) -> S
     ): Job {
         setState { reducer(Loading()) }
         return viewModelScope.launch(dispatcher) {
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt
index cc5ec21..4c7a660 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/TypeExtensions.kt
@@ -10,13 +10,6 @@
 import android.os.VibrationEffect
 import android.os.Vibrator
 import android.util.Log
-import androidx.annotation.DrawableRes
-import androidx.annotation.LayoutRes
-import androidx.annotation.StringRes
-import com.google.android.material.snackbar.Snackbar
-import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
-import androidx.fragment.app.Fragment
-import androidx.core.content.ContextCompat
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
@@ -24,23 +17,30 @@
 import android.widget.ImageView
 import android.widget.TextView
 import androidx.annotation.ColorInt
+import androidx.annotation.DrawableRes
+import androidx.annotation.LayoutRes
+import androidx.annotation.StringRes
+import androidx.core.content.ContextCompat
 import androidx.core.content.getSystemService
 import androidx.core.graphics.toColorInt
+import androidx.fragment.app.Fragment
+import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
 import com.airbnb.lottie.L
 import com.bumptech.glide.Glide
+import com.google.android.material.snackbar.Snackbar
 
 fun Fragment.startActivity(cls: Class<*>) {
     startActivity(Intent(context, cls))
 }
 
 fun String.urlIntent(): Intent =
-        Intent(Intent.ACTION_VIEW).setData(Uri.parse(this))
+    Intent(Intent.ACTION_VIEW).setData(Uri.parse(this))
 
 fun ViewGroup.inflate(@LayoutRes layout: Int, attachToRoot: Boolean = true): View =
-        LayoutInflater.from(context).inflate(layout, this, attachToRoot)
+    LayoutInflater.from(context).inflate(layout, this, attachToRoot)
 
 fun String.hasPermission(context: Context): Boolean =
-        ContextCompat.checkSelfPermission(context, this) == PackageManager.PERMISSION_GRANTED
+    ContextCompat.checkSelfPermission(context, this) == PackageManager.PERMISSION_GRANTED
 
 fun TextView.setDrawableLeft(@DrawableRes drawableRes: Int, activity: Activity) {
     val drawable = VectorDrawableCompat.create(resources, drawableRes, activity.theme)
@@ -48,7 +48,7 @@
 }
 
 fun View.showSnackbarLong(@StringRes message: Int) =
-        showSnackbarLong(resources.getString(message))
+    showSnackbarLong(resources.getString(message))
 
 fun View.showSnackbarLong(message: String) =
     Snackbar.make(this, message, Snackbar.LENGTH_LONG).show()
@@ -90,15 +90,15 @@
         when (bgColor.length) {
             0 -> "#ffffff"
             4 -> "#%c%c%c%c%c%c".format(
-                    bgColor[1], bgColor[1],
-                    bgColor[2], bgColor[2],
-                    bgColor[3], bgColor[3]
+                bgColor[1], bgColor[1],
+                bgColor[2], bgColor[2],
+                bgColor[3], bgColor[3]
             )
             5 -> "#%c%c%c%c%c%c%c%c".format(
-                    bgColor[1], bgColor[1],
-                    bgColor[2], bgColor[2],
-                    bgColor[3], bgColor[3],
-                    bgColor[4], bgColor[4]
+                bgColor[1], bgColor[1],
+                bgColor[2], bgColor[2],
+                bgColor[3], bgColor[3],
+                bgColor[4], bgColor[4]
             )
             else -> bgColor
         }.toColorInt()
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ViewViewBindingDelegate.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ViewViewBindingDelegate.kt
index 49123a2..48a58c4 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ViewViewBindingDelegate.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/utils/ViewViewBindingDelegate.kt
@@ -16,8 +16,8 @@
 inline fun <reified T : ViewBinding> ViewGroup.viewBinding() = ViewBindingDelegate(T::class.java, this)
 
 class ViewBindingDelegate<T : ViewBinding>(
-        private val bindingClass: Class<T>,
-        val view: ViewGroup
+    private val bindingClass: Class<T>,
+    val view: ViewGroup
 ) : ReadOnlyProperty<ViewGroup, T> {
     private var binding: T? = null
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/AnimationItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/AnimationItemView.kt
index c372e09..9df8142 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/AnimationItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/AnimationItemView.kt
@@ -14,9 +14,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class AnimationItemView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val binding: ItemViewShowcaseAnimationBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt
index 3e0f11a..b95485d 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BackgroundColorView.kt
@@ -6,16 +6,16 @@
 import android.graphics.Color
 import android.graphics.Paint
 import android.graphics.drawable.ColorDrawable
-import androidx.annotation.ColorInt
-import androidx.core.content.ContextCompat
 import android.util.AttributeSet
 import android.view.View
+import androidx.annotation.ColorInt
+import androidx.core.content.ContextCompat
 import com.airbnb.lottie.samples.R
 
 class BackgroundColorView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleInt: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleInt: Int = 0
 ) : View(context, attrs, defStyleInt) {
 
     private val paint = Paint().apply {
@@ -32,7 +32,7 @@
         val r = cx.coerceAtMost(cy)
         if (getColor() == Color.WHITE) {
             paint.strokeWidth =
-                    resources.getDimensionPixelSize(R.dimen.background_color_view_stroke_width).toFloat()
+                resources.getDimensionPixelSize(R.dimen.background_color_view_stroke_width).toFloat()
             paint.style = Paint.Style.STROKE
             paint.color = ContextCompat.getColor(context, R.color.background_color1_stroke)
         } else {
@@ -42,5 +42,6 @@
         canvas.drawCircle(cx, cy, r - paint.strokeWidth, paint)
     }
 
-    @ColorInt fun getColor() = (background as ColorDrawable).color
+    @ColorInt
+    fun getColor() = (background as ColorDrawable).color
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt
index 4986ea1..0168ff9 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/BottomSheetItemView.kt
@@ -13,9 +13,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class BottomSheetItemView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val binding: ItemViewBottomSheetBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt
index 0b2d990..ee5be86 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ControlBarItemToggleView.kt
@@ -17,9 +17,9 @@
 import com.airbnb.lottie.samples.utils.viewBinding
 
 class ControlBarItemToggleView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : LinearLayout(context, attrs, defStyleAttr) {
     private val binding: ItemViewControlBarBinding by viewBinding()
 
@@ -50,8 +50,8 @@
         super.childDrawableStateChanged(child)
         if (child is ImageView && child.drawable != null) {
             val color =
-                    if (child.isActivated) Color.WHITE
-                    else ContextCompat.getColor(context, R.color.control_bar_content_unactivated)
+                if (child.isActivated) Color.WHITE
+                else ContextCompat.getColor(context, R.color.control_bar_content_unactivated)
             DrawableCompat.setTint(child.drawable.mutate(), color)
         }
     }
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
index edce66f..d078e4e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/InterceptingFrameLayout.kt
@@ -1,15 +1,15 @@
 package com.airbnb.lottie.samples.views
 
 import android.content.Context
-import androidx.customview.widget.ViewDragHelper
 import android.util.AttributeSet
 import android.view.MotionEvent
 import android.widget.FrameLayout
+import androidx.customview.widget.ViewDragHelper
 
 class InterceptingFrameLayout @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
 
     var viewDragHelper: ViewDragHelper? = null
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ListingCard.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ListingCard.kt
index 01fc7a8..8da9f1a 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ListingCard.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ListingCard.kt
@@ -12,9 +12,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class ListingCard @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val binding: ListingCardBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LoadingView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LoadingView.kt
index 37ee501..cf80401 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LoadingView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LoadingView.kt
@@ -9,9 +9,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class LoadingView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
 
     init {
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LottiefilesTabBar.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LottiefilesTabBar.kt
index 4fa8cd3..9daef53 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LottiefilesTabBar.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/LottiefilesTabBar.kt
@@ -11,9 +11,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class LottiefilesTabBar @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : LinearLayout(context, attrs, defStyleAttr) {
     private val binding: LottiefilesTabBarBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/Marquee.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/Marquee.kt
index 350c504..5d9da44 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/Marquee.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/Marquee.kt
@@ -13,9 +13,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class Marquee @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : LinearLayout(context, attrs, defStyleAttr) {
     private val binding: MarqueeBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt
index d384a60..b79971c 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SearchInputItemView.kt
@@ -10,9 +10,9 @@
 import kotlinx.coroutines.flow.StateFlow
 
 class SearchInputItemView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val binding: ItemViewSearchInputBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SectionHeaderView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SectionHeaderView.kt
index a9dc8fe..985e631 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SectionHeaderView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/SectionHeaderView.kt
@@ -11,9 +11,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class SectionHeaderView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val binding: SectionHeaderViewBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt
index b8097dc..5680dae 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseCarousel.kt
@@ -12,9 +12,9 @@
 
 @ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_WRAP_HEIGHT)
 class ShowcaseCarousel @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : EpoxyRecyclerView(context, attrs, defStyleAttr), EpoxyRecyclerView.ModelBuilderCallback {
 
     private var items: List<ShowcaseItem>? = null
@@ -35,9 +35,9 @@
     override fun buildModels(controller: EpoxyController) {
         items?.forEach {
             ShowcaseDemoItemViewModel_()
-                    .id(it.titleRes)
-                    .showcaseItem(it)
-                    .addTo(controller)
+                .id(it.titleRes)
+                .showcaseItem(it)
+                .addTo(controller)
         }
     }
 }
\ No newline at end of file
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseDemoItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseDemoItemView.kt
index 7f2b743..2ba801e 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseDemoItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/ShowcaseDemoItemView.kt
@@ -11,9 +11,9 @@
 
 @ModelView(autoLayout = ModelView.Size.WRAP_WIDTH_WRAP_HEIGHT)
 class ShowcaseDemoItemView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : FrameLayout(context, attrs, defStyleAttr) {
     private val binding: ItemViewShowcaseDemoBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/TabBarItemView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/TabBarItemView.kt
index 9151da6..766b947 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/TabBarItemView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/TabBarItemView.kt
@@ -9,9 +9,9 @@
 import com.airbnb.lottie.samples.utils.viewBinding
 
 class TabBarItemView @JvmOverloads constructor(
-        context: Context,
-        attrs: AttributeSet? = null,
-        defStyleAttr: Int = 0
+    context: Context,
+    attrs: AttributeSet? = null,
+    defStyleAttr: Int = 0
 ) : LinearLayout(context, attrs, defStyleAttr) {
     private val binding: TabItemBinding by viewBinding()
 
diff --git a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/WishListIconView.kt b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/WishListIconView.kt
index 1a78533..df7899d 100644
--- a/sample/src/main/kotlin/com/airbnb/lottie/samples/views/WishListIconView.kt
+++ b/sample/src/main/kotlin/com/airbnb/lottie/samples/views/WishListIconView.kt
@@ -5,7 +5,7 @@
 import com.airbnb.lottie.LottieAnimationView
 
 class WishListIconView @JvmOverloads constructor(
-        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
+    context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
 ) : LottieAnimationView(context, attrs, defStyleAttr) {
 
     fun toggleWishlisted() {