Commit 3f3f282
Redesign Reader post detail header for adaptive layout (#22754)
* Start reader improvements feature branch
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove content-scanning fallbacks for Reader featured image
Only use editorial.image, featured_image, or featured_media.uri
as featured image sources instead of scanning post content for
suitable images or videos.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Move featured image above title and excerpt in Reader post cards
Reorder ConstraintLayout constraints so the visual hierarchy is:
blog header → featured image → title → excerpt → interactions → footer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix grammar in code comments
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fit portrait featured images in Reader instead of cropping
When a Reader post has a portrait featured image, the image is now
scaled to fit the container height and centered horizontally with a
gray background fill, instead of being center-cropped which often
cuts off heads and other important content.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix import ordering in ReaderPostNewViewHolder
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix import ordering and remove unnecessary @jvmoverloads in ImageManager
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Redesign Reader post detail header for adaptive layout
Move featured image from collapsing AppBar to inline in the header view
with adaptive aspect ratio. Restructure blog section so site name,
author, and date each appear on their own line with absolute date+time
format. Add reading time indicator and excerpt display to the header.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Simplify Reader post detail header and image transformation code
- Extract Regex and date format constants in header UI state builder
- Replace verbose null-check patterns with setTextOrHide helper
- Hoist Paint allocation to class property in PortraitAwareCropTransformation
- Remove unnecessary list allocation in applyInteractionSectionTheme
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix crash in Reader post detail caused by unresolvable Material3 attribute
Replace ?attr/colorOnSurfaceVariant (Material3-only) with compatible
alternatives since the reading preferences ContextThemeWrapper uses
Theme.MaterialComponents.DayNight which lacks this attribute.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Simplify Reader post detail: remove dead code and redundant scroll listener
- Remove unused postDetailsHeaderViewUiStateBuilder injection from fragment
- Replace per-scroll toolbar coloring with one-time setup in initAppBar
- Inline trivial buildPostDetailsHeaderUiState delegation
- Remove unnecessary default values in ReaderFeaturedImageUiState
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Use fastStripHtml for reading time and fix code quality issues
Replace HtmlCompat.fromHtml() with lighter HtmlUtils.fastStripHtml()
for word counting, fix detekt ReturnCount and checkstyle empty-line
violations.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix blog section spacing between avatar and text
Chain blog name and author vertically against the avatar, add
marginStart with goneMarginStart so text aligns flush when there
is no avatar.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Hide author name when blank or same as blog name
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Show blog description instead of post excerpt in detail header
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Reorder Reader post detail header layout
Move blog name to top, post title second, avatar with author and
date below title, then featured image, blog description (up to 3
lines), and reading time.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix blog section layout spacing and alignment
Anchor dateline start directly to avatar so it stays positioned
when author name is hidden. Add barrier below blog name and follow
button so the post title clears both.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Make subscribe button smaller and place it after blog name
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix featured image duplication after returning from comments
findPost() excludes the text column for performance, so
shouldAddFeaturedImage() couldn't detect the image was already
in the post body HTML. Fetch with text column included when
returning from comments to preserve deduplication.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Simplify Reader post detail header code
- Flatten ReaderPostDetailsHeaderViewUiState sealed class into
top-level data classes (only had one subclass)
- Inline trivial wrapper methods in the header UI state builder
- Inline single-line delegation methods in the header view
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix detekt LongMethod violation in mapPostToUiState
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix review issues: cache date formatter, move DB query off main thread, rename excerpt to blogDescription
- Cache SimpleDateFormat as a class property instead of allocating per call
- Wrap ReaderBlogTableWrapper.getBlogInfo() in withContext(Dispatchers.IO)
and propagate suspend through the call chain
- Rename excerpt/text_excerpt to blogDescription/text_blog_description
since the field shows blog description, not post excerpt
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove unused bg_rectangle_black_translucent_40 drawable
This drawable was only referenced by the collapsing toolbar featured
image FrameLayout which was removed in the header redesign.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Simplify Reader post detail header code
- Remove redundant likeCount/commentCount local variables
- Simplify featured image null handling with if/else
- Make ReaderFeaturedImageUiState.url and onFeaturedImageClicked
non-null since the state object is only created with valid values
- Rewrite buildReadingTime with early returns for readability
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix detekt ReturnCount violation in buildReadingTime
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Minor vm tweaks
* Fix review issues: threading, thread safety, and data class cleanup
- Move DB query off main thread in onUserNavigateFromComments
- Replace SimpleDateFormat with thread-safe DateTimeFormatter
- Reapply toolbar icon colors after menu visibility changes
- Hide blog name in blog section layout XML instead of at runtime
- Move featured image click lambda out of data class for proper equality
- Guard reading time word count against empty split results
- Revert formatting-only test changes to reduce diff noise
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix detekt ReturnCount violation in buildReadingTime
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add "View original" button to Reader post detail header
Adds a flat text button with a circled arrow icon on the right side of
the reading time row. Tapping it opens the post's original URL in the
browser. The button is only shown when the post has a URL.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Move tags from post detail header to below post content
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Move likes/comments counts from header to below tags
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove comment count from interaction section below post content
The comment count is already shown above the comment list, so it's
redundant in the likes area. Simplified to a single like count TextView.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix featured image flickering in Reader post detail
Preserve the featured image state across UI re-renders so it doesn't
disappear when fresh post text causes the URL deduplication heuristic
to produce a different result.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove time from publication date in Reader post detail
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Change "Visit site" to "View site" and open site in Reader
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Show liker avatars inline before like count in Reader post detail
Display up to 5 small circular liker avatars before the like count
text below post content. Ungates the liker data pipeline so avatar
URLs are fetched regardless of the likes enhancements feature flag.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fetch liker data on initial post load for inline avatars
onRefreshLikersData() was not called from updatePostDetailsUi(),
so the liker data pipeline was never triggered during the initial
post load. This meant the likesUiState observer never received
data and the avatar ImageViews stayed hidden.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove inline avatar ImageViews, keep existing faces train
Remove the 5 small inline avatar ImageViews from the like count
row and revert the layout to the original MaterialTextView. The
existing liker faces train (32dp RecyclerView avatars) is now
always shown since the data pipeline was ungated.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove duplicate like count text, use faces train only
The like count was shown twice: once as a standalone TextView below
the tags and again as a trailing label in the liker faces train.
Remove the standalone header_like_count TextView and let the faces
train be the sole display of like count and liker avatars.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Restyle Subscribe button as unfilled pill in post detail header
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove unused ReaderImageScanner.getLargestImage()
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix Subscribe pill clipping and soften border color
Use medium-emphasis color for pill stroke and text instead of black.
Adjust layout constraints so the pill drives row height and the blog
name centers vertically against it, preventing top clipping.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove redundant tagItemsVisibility and showViewOriginal fields
Derive tag visibility from tagItems.isNotEmpty() and view-original
visibility from onViewOriginalClicked != null. Also remove unused
lambda binding in onFeaturedImageClicked.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix detekt and lint issues: unused imports, long method, unused drawable
Extract buildInteractionSection and buildViewOriginalClicked helpers
to shorten mapPostToUiState. Remove unused OpenPost imports and
delete unused ic_arrow_circle_right_16dp drawable.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Show post excerpt instead of blog description in post detail header
Replace the blog description with the post excerpt in the reader post
detail header. Auto-generated excerpts (where WordPress truncates content
and appends […] or …) are detected and suppressed so only author-written
excerpts are displayed. The excerpt is capped at 5 lines with a "View
more" link to expand.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add thin divider below the post excerpt in detail header
Show a divider under the excerpt section (hidden when no excerpt is
present). Uses ?android:attr/listDivider for theme-consistent styling.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove dead code and simplify Reader post detail branch
Remove unused interactionSectionUiState and its class, deduplicate
dateLine (read from blogSectionUiState instead), drop unnecessary
suspend modifiers, and simplify modifyMoreMenu and buildExcerpt.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove dead LikesClicked/CommentsClicked header actions and redundant visibility attr
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix detekt and lint issues: ReturnCount, TrimLambda, missing null annotations
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Always show header divider and darken excerpt text and divider color
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Simplify title builder and move divider visibility to XML
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Improve auto-generated excerpt detection with suffix check and whitespace normalization
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add KDoc comments to mapPostToUiState and buildExcerpt
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix detekt ReturnCount in isAutoGeneratedExcerpt
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix flaky likers test by skipping onShowPost during init
The test sets viewModel.post manually and only needs to verify
the liking action path, so pass showPost=false to avoid triggering
handleGetLikesForPost from updatePostDetailsUi.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Address PR review feedback for post detail header
- Link site title to blog preview with ripple feedback
- Reduce site title line height (lineSpacingMultiplier + no font padding)
- Link author name to user profile bottom sheet
- Soften excerpt divider using wpColorOnSurfaceMedium
- Fix icon theming and add drawableTint for visual centering
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix review feedback: tighter title, softer divider, simpler author card
- Use android:lineHeight instead of lineSpacingMultiplier to actually
reduce the site title leading (overrides Material3 LabelLarge default)
- Use ?android:attr/listDivider for the excerpt separator (theme-aware
and visibly softer than the previous color)
- Replace UserProfileBottomSheetFragment with a simple BottomSheetDialog
that shows the avatar centered above the name, no site icon, and
opens the blog URL in an external browser
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix divider color to match iOS and restore title lineHeight
- Add reader_separator color matching iOS UIColor.separator
(light: rgba(60,60,67,0.29), dark: rgba(84,84,88,0.6))
- Restore lineHeight=16sp on blog section title style since the
title can wrap to multiple lines
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Reduce post title line spacing and fix icon vertical alignment
- Reduce lineSpacingMultiplier from 1.2 to 1.1 on the post title
style (ReaderTextView.PostDetail.Header.Title) — the correct style
for the multi-line post title (not BlogSection.Title)
- Revert ineffective lineHeight on BlogSection.Title (single-line
blog name view)
- Fix icon centering by adding includeFontPadding=false and replacing
baseline alignment with top/bottom constraints so the icons and text
center as a unit
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix detekt ReturnCount in buildAuthorClicked
Chain takeIf/takeUnless to reduce return statements from 3 to 2.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Removed lineSpacingMultiplier
* Extract author profile bottom sheet to Fragment with XML layout
Replace the programmatic BottomSheetDialog in ReaderPostDetailFragment
with a proper BottomSheetDialogFragment backed by an XML layout,
consistent with existing patterns (e.g. ReaderLoginRequiredBottomSheetFragment).
Also remove unused siteId field from ShowAuthorProfile nav event.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Cancel pending excerpt truncation check before posting new one
Stores the Runnable reference and calls removeCallbacks() to prevent
stale truncation checks from accumulating during rapid updatePost() calls.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix Visit/View site string resources for correct scoping
Revert reader_label_visit back to "Visit site" (used by post card
more-menu) and introduce reader_label_view ("View site") for the
post detail header, replacing the now-unused reader_view_original.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix review issues: Paint thread safety, data class lambdas, View Binding
- Allocate Paint per transform() call in PortraitAwareCropTransformation
to avoid thread-safety issues from concurrent Glide calls
- Move onFeaturedImageClicked, onViewOriginalClicked, onAuthorClicked
lambdas out of ReaderPostDetailsHeaderUiState data class so
equals()/hashCode() work correctly for LiveData diffing. The view now
dispatches actions via an onHeaderAction callback parameter.
- Replace findViewById with View Binding in
ReaderAuthorProfileBottomSheetFragment
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Simplify bottom sheet R import and ViewModel null handling
- Add R import and remove fully-qualified reference in
ReaderAuthorProfileBottomSheetFragment
- Use takeIf/let in onViewOriginalClicked
- Inline cast and rename lambda param in onUserNavigateFromComments
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix tiny text in author profile bottom sheet
Use MaterialComponents-compatible text appearances with explicit sizes
instead of Material3 attributes that don't resolve in the
MaterialComponents bottom sheet theme.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Migrate ReaderAuthorProfileBottomSheet to Compose
Replace XML layout + View Binding with ComposeView + AppThemeM3,
eliminating theme attribute resolution issues. Uses Coil AsyncImage
for the avatar and removes the ImageManager dependency.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Revert Compose migration for author profile bottom sheet
ComposeView inside BottomSheetDialogFragment causes the content
to briefly appear at the top of the screen before jumping to the
bottom. This is a known interop issue with no reliable fix, so
revert to the original XML layout.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix review issues: consistent feature gating, divider, crash safety
- Restore likesEnhancementsFeatureConfig gates that were inconsistently
removed in Fragment and ViewModel (6 locations)
- Change excerpt divider from 0.5dp to 1px for visibility on low-dpi
- Use context null-check instead of requireContext() in click listener
- Align showViewOriginal check with click handler null/blank logic
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Simplify author row linking and fix View original alignment
Make the entire blog section row link to the author profile (like iOS)
instead of having separate tap targets for the site and author name.
Fix View original vertical misalignment by removing extra top margin.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Changed "View site" to "View original"
* Make sure author profile shows a url when blog name is missing
* Use filled Subscribe button
* Fixed image resize
* Fall back to "featured_image" for FP posts
* Reverted adjustViewBounds change
* Align Reader post list horizontal margins with post detail
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>1 parent 5c1393c commit 3f3f282
37 files changed
Lines changed: 855 additions & 591 deletions
File tree
- WordPress/src
- main
- java/org/wordpress/android
- models
- ui/reader
- discover
- utils
- viewmodels
- views
- uistates
- res
- color
- drawable
- layout
- values-night
- values
- test/java/org/wordpress/android/ui/reader
- discover
- viewmodels
Lines changed: 3 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
136 | 136 | | |
137 | 137 | | |
138 | 138 | | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
139 | 142 | | |
140 | 143 | | |
141 | 144 | | |
| |||
Lines changed: 96 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
Lines changed: 66 additions & 79 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
28 | 27 | | |
29 | 28 | | |
30 | 29 | | |
| |||
37 | 36 | | |
38 | 37 | | |
39 | 38 | | |
| 39 | + | |
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
51 | | - | |
52 | 51 | | |
53 | 52 | | |
54 | 53 | | |
| |||
118 | 117 | | |
119 | 118 | | |
120 | 119 | | |
121 | | - | |
122 | 120 | | |
123 | 121 | | |
124 | 122 | | |
| |||
146 | 144 | | |
147 | 145 | | |
148 | 146 | | |
149 | | - | |
150 | 147 | | |
151 | 148 | | |
152 | 149 | | |
| |||
158 | 155 | | |
159 | 156 | | |
160 | 157 | | |
161 | | - | |
162 | 158 | | |
163 | 159 | | |
164 | 160 | | |
| |||
251 | 247 | | |
252 | 248 | | |
253 | 249 | | |
254 | | - | |
255 | | - | |
256 | | - | |
257 | 250 | | |
258 | 251 | | |
259 | 252 | | |
| |||
292 | 285 | | |
293 | 286 | | |
294 | 287 | | |
295 | | - | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
300 | | - | |
301 | | - | |
302 | | - | |
303 | | - | |
304 | | - | |
305 | | - | |
306 | | - | |
307 | | - | |
308 | | - | |
309 | | - | |
310 | | - | |
311 | | - | |
312 | | - | |
313 | | - | |
314 | | - | |
315 | | - | |
316 | | - | |
317 | | - | |
318 | | - | |
319 | | - | |
320 | | - | |
321 | | - | |
322 | | - | |
323 | | - | |
324 | | - | |
325 | 288 | | |
326 | 289 | | |
327 | 290 | | |
| |||
404 | 367 | | |
405 | 368 | | |
406 | 369 | | |
407 | | - | |
408 | | - | |
409 | 370 | | |
410 | 371 | | |
411 | 372 | | |
| |||
430 | 391 | | |
431 | 392 | | |
432 | 393 | | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
433 | 409 | | |
434 | 410 | | |
435 | 411 | | |
| |||
695 | 671 | | |
696 | 672 | | |
697 | 673 | | |
698 | | - | |
| 674 | + | |
| 675 | + | |
699 | 676 | | |
700 | 677 | | |
701 | 678 | | |
702 | 679 | | |
703 | 680 | | |
704 | 681 | | |
705 | 682 | | |
706 | | - | |
707 | | - | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
| 689 | + | |
| 690 | + | |
708 | 691 | | |
709 | 692 | | |
710 | | - | |
711 | | - | |
712 | | - | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
| 701 | + | |
713 | 702 | | |
714 | 703 | | |
715 | 704 | | |
716 | 705 | | |
717 | 706 | | |
718 | | - | |
719 | | - | |
720 | | - | |
721 | | - | |
| 707 | + | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
722 | 712 | | |
723 | 713 | | |
724 | 714 | | |
| |||
798 | 788 | | |
799 | 789 | | |
800 | 790 | | |
801 | | - | |
| 791 | + | |
| 792 | + | |
| 793 | + | |
| 794 | + | |
| 795 | + | |
| 796 | + | |
| 797 | + | |
| 798 | + | |
| 799 | + | |
| 800 | + | |
| 801 | + | |
802 | 802 | | |
803 | 803 | | |
804 | | - | |
805 | 804 | | |
806 | 805 | | |
807 | 806 | | |
| |||
921 | 920 | | |
922 | 921 | | |
923 | 922 | | |
| 923 | + | |
| 924 | + | |
924 | 925 | | |
925 | 926 | | |
926 | 927 | | |
927 | 928 | | |
928 | 929 | | |
929 | 930 | | |
930 | 931 | | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
931 | 941 | | |
932 | 942 | | |
933 | 943 | | |
934 | 944 | | |
935 | 945 | | |
936 | | - | |
937 | | - | |
938 | | - | |
939 | | - | |
940 | | - | |
941 | | - | |
942 | | - | |
943 | | - | |
944 | | - | |
945 | | - | |
946 | | - | |
947 | | - | |
948 | | - | |
949 | | - | |
950 | | - | |
951 | | - | |
952 | | - | |
953 | 946 | | |
954 | 947 | | |
955 | 948 | | |
| |||
993 | 986 | | |
994 | 987 | | |
995 | 988 | | |
996 | | - | |
997 | | - | |
998 | | - | |
999 | | - | |
1000 | | - | |
1001 | | - | |
1002 | | - | |
1003 | | - | |
1004 | | - | |
1005 | | - | |
| 989 | + | |
| 990 | + | |
1006 | 991 | | |
1007 | 992 | | |
1008 | 993 | | |
| |||
1080 | 1065 | | |
1081 | 1066 | | |
1082 | 1067 | | |
| 1068 | + | |
| 1069 | + | |
1083 | 1070 | | |
1084 | 1071 | | |
1085 | 1072 | | |
| |||
0 commit comments