Merge pull request #1224 from vector-im/feature/bma/displayNameColor

Iterate on display name and avatar color
This commit is contained in:
Benoit Marty 2023-09-05 17:24:26 +02:00 committed by GitHub
commit 4e8ce6c091
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
249 changed files with 707 additions and 477 deletions

1
changelog.d/1224.feature Normal file
View file

@ -0,0 +1 @@
Set color on display name and default avatar in the timeline.

View file

@ -75,6 +75,7 @@ import io.element.android.features.messages.impl.timeline.model.event.TimelineIt
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemImageContent
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemPollContent
import io.element.android.features.messages.impl.timeline.model.event.aTimelineItemTextContent
import io.element.android.libraries.designsystem.colors.avatarColors
import io.element.android.libraries.designsystem.components.EqualWidthColumn
import io.element.android.libraries.designsystem.components.avatar.Avatar
import io.element.android.libraries.designsystem.components.avatar.AvatarData
@ -327,6 +328,7 @@ private fun MessageSenderInformation(
) {
val avatarStrokeColor = MaterialTheme.colorScheme.background
val avatarSize = senderAvatar.size.dp
val avatarColors = avatarColors(senderAvatar.id)
Box(
modifier = modifier
) {
@ -344,13 +346,13 @@ private fun MessageSenderInformation(
}
// Content
Row {
Avatar(senderAvatar)
Avatar(senderAvatar, initialAvatarColors = avatarColors)
Spacer(modifier = Modifier.width(4.dp))
Text(
text = sender,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
color = MaterialTheme.colorScheme.primary,
color = avatarColors.foreground,
style = ElementTheme.typography.fontBodyMdMedium,
)
}

View file

@ -0,0 +1,47 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.designsystem.colors
import androidx.compose.runtime.Composable
import androidx.compose.ui.graphics.Color
import io.element.android.libraries.theme.ElementTheme
import io.element.android.libraries.theme.colors.avatarColorsDark
import io.element.android.libraries.theme.colors.avatarColorsLight
data class AvatarColors(
val background: Color,
val foreground: Color,
)
@Composable
fun avatarColors(userId: String): AvatarColors {
val hash = userId.toHash()
val colors = if (ElementTheme.isLightTheme) {
avatarColorsLight[hash]
} else {
avatarColorsDark[hash]
}
return AvatarColors(
background = colors.first,
foreground = colors.second,
)
}
internal fun String.toHash(): Int {
return toList().sumOf { it.code } % avatarColorsLight.size
}

View file

@ -33,6 +33,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import coil.compose.AsyncImage
import io.element.android.libraries.designsystem.colors.AvatarColors
import io.element.android.libraries.designsystem.preview.ElementThemedPreview
import io.element.android.libraries.designsystem.preview.PreviewGroup
import io.element.android.libraries.designsystem.preview.debugPlaceholderAvatar
@ -45,6 +46,7 @@ import timber.log.Timber
fun Avatar(
avatarData: AvatarData,
modifier: Modifier = Modifier,
initialAvatarColors: AvatarColors? = null,
contentDescription: String? = null,
) {
val commonModifier = modifier
@ -53,6 +55,7 @@ fun Avatar(
if (avatarData.url.isNullOrBlank()) {
InitialsAvatar(
avatarData = avatarData,
avatarColors = initialAvatarColors,
modifier = commonModifier,
)
} else {
@ -85,22 +88,23 @@ private fun ImageAvatar(
@Composable
private fun InitialsAvatar(
avatarData: AvatarData,
avatarColors: AvatarColors?,
modifier: Modifier = Modifier,
) {
// Use temporary color for default avatar background
// Use temporary color for default avatar background, if avatarColors is not provided
val avatarColor = ElementTheme.colors.bgActionPrimaryDisabled
Box(
modifier.background(color = avatarColor),
modifier.background(color = avatarColors?.background ?: avatarColor)
) {
val fontSize = avatarData.size.dp.toSp() / 2
val originalFont = ElementTheme.typography.fontBodyMdRegular
val originalFont = ElementTheme.typography.fontHeadingMdBold
val ratio = fontSize.value / originalFont.fontSize.value
val lineHeight = originalFont.lineHeight * ratio
Text(
modifier = Modifier.align(Alignment.Center),
text = avatarData.initial,
style = originalFont.copy(fontSize = fontSize, lineHeight = lineHeight, letterSpacing = 0.sp),
color = Color.White,
color = avatarColors?.foreground ?: Color.White,
)
}
}

View file

@ -0,0 +1,51 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.designsystem.components.avatar
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import io.element.android.libraries.designsystem.colors.avatarColors
import io.element.android.libraries.designsystem.preview.DayNightPreviews
import io.element.android.libraries.designsystem.preview.ElementPreview
import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.theme.colors.avatarColorsLight
@DayNightPreviews
@Composable
internal fun UserAvatarPreview() = ElementPreview {
Column(
modifier = Modifier.padding(8.dp),
verticalArrangement = Arrangement.spacedBy(8.dp),
) {
repeat(avatarColorsLight.size) {
Row(
horizontalArrangement = Arrangement.spacedBy(8.dp),
verticalAlignment = Alignment.CenterVertically,
) {
// Note: it's OK, since the hash of "0" is 0, the hash of "1" is 1, etc.
Avatar(anAvatarData(), initialAvatarColors = avatarColors("$it"))
Text(text = "Color index $it")
}
}
}
}

View file

@ -0,0 +1,49 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.designsystem.colors
import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.theme.colors.avatarColorsDark
import io.element.android.libraries.theme.colors.avatarColorsLight
import org.junit.Test
class AvatarColorsTest {
@Test
fun `ensure the size of the avatar color are equal for light and dark theme`() {
assertThat(avatarColorsDark.size).isEqualTo(avatarColorsLight.size)
}
@Test
fun `compute string hash`() {
assertThat("@alice:domain.org".toHash()).isEqualTo(6)
assertThat("@bob:domain.org".toHash()).isEqualTo(3)
assertThat("@charlie:domain.org".toHash()).isEqualTo(0)
}
@Test
fun `compute string hash reverse`() {
assertThat("0".toHash()).isEqualTo(0)
assertThat("1".toHash()).isEqualTo(1)
assertThat("2".toHash()).isEqualTo(2)
assertThat("3".toHash()).isEqualTo(3)
assertThat("4".toHash()).isEqualTo(4)
assertThat("5".toHash()).isEqualTo(5)
assertThat("6".toHash()).isEqualTo(6)
assertThat("7".toHash()).isEqualTo(7)
}
}

View file

@ -0,0 +1,35 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.theme.colors
import io.element.android.libraries.theme.compound.generated.internal.DarkDesignTokens
/**
* Avatar colors are not yet part of SemanticColors, so create list here.
* DarkDesignTokens is internal to the module.
*/
val avatarColorsDark = listOf(
DarkDesignTokens.colorBlue300 to DarkDesignTokens.colorBlue1200,
DarkDesignTokens.colorFuchsia300 to DarkDesignTokens.colorFuchsia1200,
DarkDesignTokens.colorGreen300 to DarkDesignTokens.colorGreen1200,
DarkDesignTokens.colorPink300 to DarkDesignTokens.colorPink1200,
DarkDesignTokens.colorOrange300 to DarkDesignTokens.colorOrange1200,
DarkDesignTokens.colorCyan300 to DarkDesignTokens.colorCyan1200,
DarkDesignTokens.colorPurple300 to DarkDesignTokens.colorPurple1200,
DarkDesignTokens.colorLime300 to DarkDesignTokens.colorLime1200,
)

View file

@ -0,0 +1,35 @@
/*
* Copyright (c) 2023 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.element.android.libraries.theme.colors
import io.element.android.libraries.theme.compound.generated.internal.LightDesignTokens
/**
* Avatar colors are not yet part of SemanticColors, so create list here.
* LightDesignTokens is internal to the module.
*/
val avatarColorsLight = listOf(
LightDesignTokens.colorBlue300 to LightDesignTokens.colorBlue1200,
LightDesignTokens.colorFuchsia300 to LightDesignTokens.colorFuchsia1200,
LightDesignTokens.colorGreen300 to LightDesignTokens.colorGreen1200,
LightDesignTokens.colorPink300 to LightDesignTokens.colorPink1200,
LightDesignTokens.colorOrange300 to LightDesignTokens.colorOrange1200,
LightDesignTokens.colorCyan300 to LightDesignTokens.colorCyan1200,
LightDesignTokens.colorPurple300 to LightDesignTokens.colorPurple1200,
LightDesignTokens.colorLime300 to LightDesignTokens.colorLime1200,
)

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:208bb2b2743d33d15741f502329ac9ed67eb73c0556c14803edf33eafeadbc06
size 28586
oid sha256:ff5cb940c05656ed7debf230c7c2d780395e30f20c5d3da3abef136afb5359fe
size 28541

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:abc707d2ec2e23878e78126063ea31c5eaa93559d2803fba5cf453e4a02a01bb
size 29293
oid sha256:edf63c7ae4b058c94cd611948f2bb3c3304c2646af0200e08f7b480f1ba965d8
size 29245

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:013b3e67d39a895fb391b82a633d85bc5e372e2b209854dcda9a72db0c243812
size 86646
oid sha256:3fe351b3d0b78473fdab1d4bc806468485939734e46cb3fa6d9f9058513d4dba
size 86421

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1a72958cbdae4807f345d98501420e8f6ac1409ac534f8434341df4c3e53cd5e
size 45342
oid sha256:9dbfb671a112ae3bab099db959b30dcd4185d48bd365f63373da62971df51e00
size 45246

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f66d2db6c718056a13f463f0f0f62321250222039c234d267d788351a051ed4d
size 25777
oid sha256:137a71939d978e2f10d94d49faed208c54a5fa82b32d9ba2b47a3946641d361f
size 25688

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e688c0f31238dd9870c8634409f854b29cb5ab43ca251fb41466f959103627af
size 64149
oid sha256:eb84e5f7f23db39d8d2d162f0d55d8129ae88e984dcde816c86682981226bf4f
size 64074

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:421f94cb97db6395d5b53188e7084599c2adba2ae44d38004d3e088bcc0daad2
size 67968
oid sha256:eeeb724c3797679434f580261071602e2b8991b466e0e47806c7d7b0e4e4be2a
size 67838

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:44a6cda760e51d3710a951f38d14e1cc17a4fdcb91f281e8c002d424e53b82d6
size 25829
oid sha256:c2044763a0297a9d89c2a4ebb7fbd3ba967a5ac99a28375aeccf4766bc1a3be3
size 25762

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:251f0553c3b80a4ca7c1c21fbf776c74ec6f0c85233d0481e0a6859c5f7fa53b
size 65976
oid sha256:675584b016f10890e13008152ade861de50b3463de9a253353f0d1af4f57c200
size 65789

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:71639d6a2869732e57c682158360c1bf281a3c3ed3522007139200606794b3ec
size 69992
oid sha256:708d5201ded559e388a453d0df87d97aa7068f4892d6acb8a3bf50497a6754eb
size 69831

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:71255625dff4f333e8c8e0fe3cb77435dc552fdc756b8b517e2a783cf6c4677e
size 83540
oid sha256:7816a99e6460155c0d4c8f74fec6b2f09ec724f3442f5b1e77b45e98b5d43be1
size 83585

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0af148880e1609550dca835b9ca7d18ca277f19c056d5acc160d6877dc2192e0
size 87215
oid sha256:ec1b567e5175c9e83aee05623270f2f2d5497c901438042075a2b57a1284a368
size 87153

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e49f264556720e31a6974923f38765a4612f65a6be682dcb30cb65b4693c1171
size 20738
oid sha256:a59a7d481cdcc7b3fa216bc3ec4a20195730d27fe518a6610d9a61fb4a3b347f
size 20753

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fdc6810543c33b89da0d3ed0242d36ae4f33d3d16c73a6d4a6169abbbe28d8e3
size 27046
oid sha256:22ac66742c1e14c8f9ddf8f56f86fd155f6f8d3adfc90483772f4f78c71fe81c
size 27063

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:97dd59ac203eab2b727c3ceeb5191db5c4ad2d75eb1bc6676694ed06db7081ff
size 23810
oid sha256:fd1cce3d0a456d3501f0f5c5160821210fd1060c24a66f1cacb65f9f95b44bb8
size 23792

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5288dbf84bb4f976917d7be59c469306397d97cc42065ad085dbe10ee75aa20f
size 31185
oid sha256:2f26d62e7ca9b98ca9314305b0659f7919b58f5d7805684832e91d5f3cb6ece4
size 31162

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e13873cff0df39c7aec90c64041d8eb557bd2cd65935a34fb7122951b7cc0b87
size 28452
oid sha256:5740c7f4d76a786612c5a1cb9e58c29c87778f3e8d11878f310cfda3da1bed8a
size 28445

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6128ba7f2b0b5389be5310bf3778c093ea30a92fa3f78173e7d3aafce834b14d
size 32920
oid sha256:fbb6813f970b0fcfa9489d06b28b2e17d6d0fc97d2f0494553a629df930af48c
size 32919

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5cb2252cfbd249fdb47c17881410f44fbdc8cbc0f8a8e79b8c973a311f77f3a9
size 33053
oid sha256:633165e86d70889024469309db5a4f44eaa00456f0452e6c1447ed7e24b7bc4b
size 33059

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5c57803651c508e3d041a1a99cb3454935f2d7ae36ef82f8d0099c00089c96af
size 14041
oid sha256:6fb2d663532efdd393063f3a1a53ad0da2bad91033dec2d6bad971f681a56a45
size 14016

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9a3693f62c718cb061106b0c33e162d4eb82efc766aa81d164dc860ec4394a17
size 28611
oid sha256:1e030b3d98c9d4e6a37a983b180e664b45697705a966bc9348ea432e123a3b6d
size 28604

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cb11c46a91a1fe4e2227a6de21d418e698bb70ce68afafaefc5280a979a86bf3
size 29114
oid sha256:d75bae2ae2ee8a407d2b4652d699e664e619cffa5a7888cdf6169395abb97c6a
size 29142

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2229208fd03717884b2af74aebdce70411f50c0b69a47093a6e8346dd9766610
size 34892
oid sha256:13fa1f840184a20cea94d1cd9d76480eda1c458225b4514e37213080c936d3fd
size 34888

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:02fd7d1c9b3f982c2fbfad109c55bd444ef183855800490cf9117606b493c314
size 35018
oid sha256:5abcb5badc21e715c6f7c4330e5721b0275fdcc678ca3920ce64ae5d34829250
size 35005

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:18589707589516bd02024a4989b47bb57204bdc77b882ebbcfc0b79be6314c9d
size 14173
oid sha256:772d4d50bbed5bc5cebc8f636ce952fdc4951b714e4d621030a87db7a1df9c01
size 14162

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:aaaa719eafbd61ad499b9dbc7d1ce1afa3d1b3dfc8e3a170b2f785a51684802a
size 29424
oid sha256:e3cd5c467381c74c579e62405bc6016da1b9b050365d04a335845a19d1ae2c41
size 29448

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4bef80d54bce17851bbc1d003055743e1c7e95b0ee069261aa5e2732e7b722e6
size 52319
oid sha256:2aad1e4a3ba3691a37c9a2df872609ce7b7cbfb326deca6e5a81e6a0a50fb19b
size 52305

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6814fb800186b8c0e6d2c4c07f2f959a5962a94fbbfd1c15d83d2a789457d930
size 49646
oid sha256:bb5f62cf093e48c40732d801cb27c51005c82f84aaf96ce86e5dc50c54ff27cb
size 49589

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:09b31e87abee30225e796c3232b84c4670d57feb19c056de4238f60329e036d9
size 50315
oid sha256:d4954c0ae06d16a0058b88eb9b648911eb0c8b36eba19e40031bcf5ec6c262ff
size 50257

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:90ff5065ec23e1c835ac395015e0f5491d44722262951f72a19a184d9e3a47da
size 40245
oid sha256:0623f68ed17b1d7e39b2737255a2f3d5448a984bcef00ee58558a7581af84074
size 40173

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:90ff5065ec23e1c835ac395015e0f5491d44722262951f72a19a184d9e3a47da
size 40245
oid sha256:0623f68ed17b1d7e39b2737255a2f3d5448a984bcef00ee58558a7581af84074
size 40173

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7a348097d43335133ff83958b0b1dc24de2e4aae0fa2be6d000a7ca78516964b
size 55172
oid sha256:9357fbad1987326b891699fb5e176e4458d1b7dbe660df95d20c079d8f38bc52
size 55154

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a0aa744f1d069c68202a087789328c1ac46c45d6fb9bae8b5593bc477c182dde
size 54182
oid sha256:840b7a0a23d458680f59f328d2a8b756e80ab76e368d749a511e7352d31d0f4f
size 54196

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b7edbfc8e9e8bdcea6897860d1872fb8fabce139ec8610ec6180b28ca9ce9007
size 54976
oid sha256:062f857b2b2339f54543b70a864786b1463747cb7e45db54f76b1831938dd98f
size 54984

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:380ae6ad1fa6f00427eb7267a338964b6f77a4d5f8c45c25f535502481e34cc6
size 44834
oid sha256:63070cf809fe17adedc37b9df0b9a421c453d09e8edd95869fb62f4b1b066a16
size 44827

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:380ae6ad1fa6f00427eb7267a338964b6f77a4d5f8c45c25f535502481e34cc6
size 44834
oid sha256:63070cf809fe17adedc37b9df0b9a421c453d09e8edd95869fb62f4b1b066a16
size 44827

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:830ead63e3965435fc6fff2c8aa0c83d2654dd151972d8d88ad025dab2ff2902
size 38536
oid sha256:b64a7ad8a711dcb67a5b130bac5f3083421ff79b4476060fa5f54f3b14dac173
size 38511

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3598515dc84276014c2f3827f533c808a2683191a67e7a68191501bb848b8293
size 28326
oid sha256:4e335de03505f63e0b02ef98b916a1fd979b32a58f3c91bf0dc6194d6b66d671
size 28302

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e433bf7d2f96067dc0743e262d8907a45f0e404cfb307a018fe671dcee9d5f02
size 37054
oid sha256:5366117e506df73eb6073bfcdc76738a89262c4ff83182a381c50b98230c71c2
size 37051

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d00152b1ff92d93564af11537dcb8d77116e943cfa2b45dee2c66260284b8807
size 26875
oid sha256:286f4ed93711fe203aace6e629971b6681ed74cb2a9cd7cb8544125144d4fb17
size 26867

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d5e4d1ba12c6372c7d53e3d6a8a4d11e2882a16d1dad0899248b5663557bc359
size 26999
oid sha256:98bfdfa99e207e5f50aa6a6aa08914b8f2be407d5547f39984a0a3e05d41bab7
size 26932

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7e10d7e07f854017d9fe902649d66dd30b39624a0667023962004236986c30b2
size 26540
oid sha256:05e62d2584c3eda7e22068731de56223393e869c8e91ac547a148a7f84e870dc
size 26485

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:57776151ae74ec98a498b59ee05841cfa50c6cb657c2706e54a7deba058a2a0a
size 26530
oid sha256:e72e276a8a0fefafe36314ec82f6ea1ca8f9bcb077afecc49f65ba977a59595f
size 26473

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:57776151ae74ec98a498b59ee05841cfa50c6cb657c2706e54a7deba058a2a0a
size 26530
oid sha256:e72e276a8a0fefafe36314ec82f6ea1ca8f9bcb077afecc49f65ba977a59595f
size 26473

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:57776151ae74ec98a498b59ee05841cfa50c6cb657c2706e54a7deba058a2a0a
size 26530
oid sha256:e72e276a8a0fefafe36314ec82f6ea1ca8f9bcb077afecc49f65ba977a59595f
size 26473

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5e1503c710bf466e643720c73387d92b38c34aed007b34153dc5170066688dee
size 28759
oid sha256:080d58220454a98725f418f931c6e18c4af11821076d8cd446525098a52db6d2
size 28739

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a104e7f7fa15a31d9d6ebf30e6a8e59ba6cdc3155cc7e7274ef63ab6bc884473
size 28164
oid sha256:7da900d8aab1134bbcc472104a876c390f156a9531f1f3f7d57e2e9211be5ba6
size 28146

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:da0a285163516046676b6a0f5d2660f03be7a9c08209e7198d2d5726df2cafa3
size 28230
oid sha256:3f70d7796f416ec68599128d2da46304150b57d83262aa706e70fcf85d3b80a3
size 28198

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:da0a285163516046676b6a0f5d2660f03be7a9c08209e7198d2d5726df2cafa3
size 28230
oid sha256:3f70d7796f416ec68599128d2da46304150b57d83262aa706e70fcf85d3b80a3
size 28198

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:da0a285163516046676b6a0f5d2660f03be7a9c08209e7198d2d5726df2cafa3
size 28230
oid sha256:3f70d7796f416ec68599128d2da46304150b57d83262aa706e70fcf85d3b80a3
size 28198

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d0c32a81b2e3c751a7eb8c60ba71ed4b53e73fee920f02aab63d35fa492be87a
size 25266
oid sha256:094a0f5436527308d2a37b52f6e0c5f12e267f214b79fae980e409da116a07ec
size 25277

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c47835cf1fc4cf11f183ee7e658d2a4d16a83b17b6a03750f16e660867442b51
size 24948
oid sha256:f0a29a48138febe8b13b1e1099fbeab2280f1b0567233614187d97117df05de0
size 24943

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ad2c0bb00b406a7fc3497117a89be7422390c7be16aa1f078c5be3791f8fcfd8
size 151481
oid sha256:f0ad6895582183b697732ef032f89a6a0cad32106c9bbf30925c390dcab65ee6
size 151752

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cb32728cfcad251e3bd2ddee2a40456f329e8e3a910d145b58a3323322c8a721
size 156825
oid sha256:676b62ab782652c45a7267aac5df12943fd181bea48964d28dce664884ae4182
size 156619

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cb071f845598b35931253304f4c9f4c865b5fe9f57662c03c88a0c94a7835d83
size 18615
oid sha256:82459b6a9a3882bcdba78e89f8938f3749d6fabb4673bd0a4cc953d2b7f069d9
size 18215

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:860bc20fb4c847183290adcf1f76d1a382b0dad4d3f11a987924a816e6b5609a
size 62000
oid sha256:c196f9cb2da2366e4e67d59012f61c5f50a5775475230c3a0cbc8d823ba53dcd
size 63317

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:70f4e9bff2565317041fd037c2a0d9bf596b0c67d04927e64e89f7674f4a9966
size 64038
oid sha256:59773d8a5435a37b3d47bf0c41412299b0b277af4be7a1a25ccb33b4b60a32db
size 65397

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:474628a1247dc41f3b17dfaa0174fd47b4468f075fc728d14419b7299d7952a1
size 68584
oid sha256:ee692fa3f3dbe4500cff084526a4537fef6444440c78f63a03d990a6a027f794
size 69844

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d30f7b8de3ba0b44350eff2ebb8cd0d2572b435208673edbaf6c9914cf79a703
size 70541
oid sha256:0b8155faa2599615048193667f540664c7185ac7b6a9159afdc14dfb6286d62e
size 71826

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:705c1bdcd680cd85759b9644f266eb0c1d343f76001bea1ac667b21ca9b9e390
size 63441
oid sha256:771343ea6a9d83160284b3a9248f744c68ab25c2ad64817269c3628a5ca67972
size 62319

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8307f0003cea667faf6d8fd57b4b650a00c6728d7bebebed22d7991a0c2f158a
size 65924
oid sha256:4663107c550f193aa9bb23b6bccf9229aed5ad30c380ce6b9a326e6a3fe5def7
size 64854

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b519caf1e062d1fd9f3f6b0b122efcbe77775508fe272283cda71cc76eff9b8a
size 70408
oid sha256:ca51c27cb553709458343bf16d8402a55eb1b7187b4b85191c3318f5b88c29db
size 69312

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e15b3ac5a03ddcd0bdd72528541a8f95e4fd40ccfa3bad2269b878890dc4aeac
size 73123
oid sha256:b0a825d8090414c617780bf2d7332b8e80e5e4de066cd117c53f5e90cae8d4f6
size 72112

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a5edcd092587b8c006f32f5da93b2658ca0ab6f0fecb17f617b93cd1fb5f4b03
size 81123
oid sha256:21f0f4844935aec3102efc6bda98be54f48e8dedbdc539907199e5f4edc3a9b9
size 81343

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:40fee515ef4e1bbc3cda0ccedf7b9c6fa48e040db79de5c9c40bdae6461cd018
size 84907
oid sha256:155baab65e9a3431f7afc8320e0b9ff12454a5faaef6c34701e50e7b0d1c3c0f
size 84763

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fe770a92f211c69118868e0fa8c451680ee30f64c9ddc99c426c13690a4b8c8e
size 127240
oid sha256:b991a34a137d82ff4dedf48316a05ebbc008233984b11af70e64889a5fb5eda8
size 127438

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:fe1687609b8da30cea710072927512219d628e40b74ca53751c0560b5c72a9d6
size 132412
oid sha256:43b6514716d18382c8962520928d9d2ff6d0f665b2471e8a24e5d2e44a25c88c
size 132295

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f689d80043e7d5121d072b928c866a3bde0358b5d5df06e1d4f0ceeb9a11dfef
size 56344
oid sha256:fe0a95b6c94668709c75052feec2953d310b8bcfda42758b2898e28b384ce193
size 56189

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:af68664850a3604c8df21d0395a0ea06ad7286a5ca6889c4a2814e61003f14a2
size 52312
oid sha256:e40acbd30f8d9f815161b6a3ed1646733568015f03ffb0f24efaf6ec7fcdad6e
size 52145

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1dbc2fec7de4e8ec1cddce4f2c8522b74c3ff4c8688170f8188412ca7dc7b561
size 64049
oid sha256:fd2166469e00817c11b429c3e4c8508f56aba93696bb182310a277873e8ef080
size 63847

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9329845bb7ddd9cbdf6756061a442d5a227b0acfffc4d372570245422ed2766e
size 50300
oid sha256:53c5d2bce5d3502d5b09610faefeb68d20514076ba4a8189f7fc8f41c8e3174c
size 50150

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:aa69e3166a92a13a1b263f4040fc2431a33d52a6542bc809fc026e5a7dad3cbd
size 67359
oid sha256:1223ea8bca4d42e8f5a6cace4a530055df5f6f0eea02c62e9b35104aff7408ad
size 67145

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5ef257207d4497ea056fa37bff1ce9bff7793517d1ed83bda82fdaf2792147ce
size 57441
oid sha256:48784809032f7474179742d8cf83986a366c62e1678a2d2f4a94e09856ff6302
size 57274

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b03bb08a6cebdc1adece3deaecc07964d29f893d151ab693b490af1c9b4078d1
size 72362
oid sha256:ed11b0598ea4b2a991bbf6188372c33f35a3a661785ffdaefe4ef5257576e460
size 72181

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:160f3917d6918f0f5be4bc39d537528dd654c8e26ac6e3d5b8020bb2ef132ac5
size 87912
oid sha256:5c1d4fa3e1f403c0e5cd7583f9204759a0cba7dc63b4d1bb5d6a889cfcd10ab8
size 87675

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e0725e61bc775166de6d82f5730e223ff9d10f6ffa3e7598a17fd3cc4c2af434
size 53848
oid sha256:edcc8b013786ec7b316161deb347278085fa196520b2d4acee74b5e2b426efc6
size 53677

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1bc72ead6dc9f348f5bf2dd1cba24e2903c990a85414f6f155437bc0237e7ddf
size 66060
oid sha256:d9ee29be03d3e25834cfa50194ae8280b09fcac2dbf8fc79416638b36ffd07eb
size 65852

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e28eec0e60cef1d1234ccae1031413105e2291f1367537b9eb36b038402dd29e
size 50314
oid sha256:bdd5697196181f91a5d36f8ec4170d5d8668052f67478d22f0c2f1d39ed3cf37
size 50397

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ef4295d36c3fc110ba5b04032e4fa71f39879d05e368f6eb88fadba7ffd501a5
size 61306
oid sha256:b029a486993477abddf2cd602c5b935dd1fa4b22d1df5ef918c428f5714ca6bf
size 61327

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:23703da549937fc871388f12a07f0aca70095273cd90f0eb21bce9e89500bf81
size 48528
oid sha256:d9c28c48732089f547388c779922c3cf3dfe1c41d5d38df93366ab6c0a546327
size 48617

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:015afae65070b8df055542730915e029dcf36493ed491f23a801861547cb7314
size 64378
oid sha256:56e14c49836bd57eec889ac66bf0016da7e0c5bcdc9c51309e680ef77adc12ba
size 64406

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dc3691993fab8d245c72ab1d3318f73c36f02709f4a7fa3abb664209947bb257
size 54972
oid sha256:cb26b5d108b12720d523d2912b4f71a7799322565bda95087fc8cf52a6bfd2b9
size 55070

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:33ae97a6acd31df8419b2066b86d97628151a3aed0464abdec5fbcb4028e3f9d
size 69435
oid sha256:27d7a635a477aa1b2a4d0ae657333ecf55eafb9a84f29e5494526a64e7c085a0
size 69525

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:74637c58a18194e1d3af5d3be5755cda81107216732cf8064c49a3dda346c487
size 82836
oid sha256:8776d4f031fbb8c934081ac29b6b6bd5746bdd67edac0904e1468b76727ef541
size 82893

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:354d3112e77e3839dfa894f5baffc68c61795592d3f17a3401595dd47a1c63b7
size 51648
oid sha256:60858ea74ed5fe4ef865ccd3f0290edd32bf87ad010f5f7691153491c163c42a
size 51734

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6b988dd6ede4b8e7fd4d488677bf1cb2ab46c2a50f30551268d1573b1466633c
size 63282
oid sha256:4745bb37c991a9a90996a9ce8975639cf5fcb2d8981d0147d6a3445650d63620
size 63304

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4ebcbfc34ae17c122d3372d3cf5676c95d1c82db8c23bec467490b1787e267bc
size 51288
oid sha256:39b527075df2b3f7afa4f3ecfca1ac93a180855b20d2bd64cb763fb98b0a7b69
size 51340

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:83d62d8eb4aadd86e7aa07076df9ea615f2f18b6520086bcaf44e9ae086c870f
size 52540
oid sha256:81f196dc08f4de31f4257f6ba89c52ea41a97b107e7c5c04261188e6c572d4d0
size 52594

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:937c9762afb8aa96715acb5239364f42ed0bc2afba764a2f15eadb5782803286
size 51523
oid sha256:a648d286a3b0536fc97801c3281bb8df432c7ffa28efff66f67cd6cf4c546c10
size 51579

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:87770ae87e7d8a74e04842c47d55c3554c348997e2c03fc65b67add3db7980c0
size 53931
oid sha256:7225f3510289f07d4c273e3bb179d05df0ac9f1a2ec868f061a2622c6f9d0b84
size 54030

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8737e6006d60b361b5039c0989fd142554b09ce9847dc649139cb7ef9f901d9a
size 50597
oid sha256:34f9eacfd61965cfde4f420fe6a0fc0d637a21aca0d4b12c6a6f1642bd44556d
size 50586

View file

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1d71dea06589fdd8b62843d6898a74eff256ed0206ed8ad1ddc689f69d145a72
size 48869
oid sha256:c336a9cbc803eb314aa9333719d813ae64994a75344aa363b25aee8d52551b21
size 48928

Some files were not shown because too many files have changed in this diff Show more