From 127fa062eda7e22d136f70bd4ca435bdd65c3772 Mon Sep 17 00:00:00 2001 From: Thiru-tenext Date: Wed, 9 Sep 2026 12:55:23 +0530 Subject: [PATCH] miler map --- BOTTOM_SHEETS.md | 330 -------- DESIGN_SYSTEM.md | 263 ------- MILER_FOR_STITCH.md | 227 ------ analysis_options.yaml | 8 + .../drawable-hdpi/ic_launcher_foreground.png | Bin 0 -> 10837 bytes .../drawable-mdpi/ic_launcher_foreground.png | Bin 0 -> 6293 bytes .../drawable-xhdpi/ic_launcher_foreground.png | Bin 0 -> 14030 bytes .../ic_launcher_foreground.png | Bin 0 -> 22316 bytes .../ic_launcher_foreground.png | Bin 0 -> 32880 bytes .../res/mipmap-anydpi-v26/ic_launcher.xml | 9 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3516 -> 3629 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2063 -> 2106 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4946 -> 4819 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 7668 -> 8231 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 10759 -> 11436 bytes android/app/src/main/res/values/colors.xml | 4 + .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/settings.gradle.kts | 4 +- ios/Podfile.lock | 2 +- .../xcshareddata/swiftpm/Package.resolved | 28 +- .../Icon-App-1024x1024@1x.png | Bin 76428 -> 121327 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 506 -> 667 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1306 -> 1609 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 2218 -> 2641 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 938 -> 1024 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 2209 -> 2538 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 3561 -> 4101 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1306 -> 1609 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 3126 -> 3821 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 5070 -> 6063 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 1762 -> 2098 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 4113 -> 4807 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 2073 -> 2546 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 4747 -> 5710 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 5070 -> 6063 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 7973 -> 10033 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 2807 -> 3424 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 6180 -> 7827 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 2905 -> 3749 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 6580 -> 8764 bytes .../Icon-App-83.5x83.5@2x.png | Bin 7413 -> 9641 bytes launcher_icon/doormile_icon_foreground.png | Bin 0 -> 102753 bytes launcher_icon/doormile_icon_legacy.png | Bin 0 -> 128360 bytes lib/Models/stop_status.dart | 29 +- lib/data/accepted_store.dart | 85 ++ lib/data/api_config.dart | 53 ++ lib/data/lifecycle.dart | 59 ++ lib/data/miler_api.dart | 71 ++ lib/data/milk_run.dart | 43 + lib/data/next_leg.dart | 521 ++++++++++++ lib/data/pickup_locations.dart | 116 ++- lib/data/service_profile.dart | 46 +- lib/data/work_domain.dart | 78 +- .../notifications/notificationservce.dart | 2 +- .../pickuplog/pickuplog_provider.dart | 39 +- .../Dashboard/activity/activity_page.dart | 28 +- .../activity/delivery_details_page.dart | 46 +- lib/views/Dashboard/home/accepted_pill.dart | 4 +- lib/views/Dashboard/home/duty_sheet.dart | 8 +- lib/views/Dashboard/home/home_header.dart | 10 +- lib/views/Dashboard/home/homepage.dart | 370 ++++++--- lib/views/Dashboard/home/homepage_banner.dart | 6 +- .../Dashboard/home/pickup_preview_sheet.dart | 13 +- lib/views/Dashboard/home/route_brief.dart | 4 +- lib/views/Dashboard/home/route_timeline.dart | 136 +++- lib/views/Dashboard/home/selection_bar.dart | 2 +- .../Dashboard/home/stop_action_sheet.dart | 70 +- lib/views/Dashboard/home/stop_card.dart | 20 +- .../Dashboard/home/stop_detail_sheet.dart | 244 +++--- lib/views/Dashboard/home/trip.dart | 15 +- .../Dashboard/home/trip_brief_strip.dart | 210 +++-- lib/views/Dashboard/home/trip_card.dart | 112 ++- .../Dashboard/home/trip_empty_state.dart | 2 +- .../Dashboard/home/trip_progress_rail.dart | 8 +- lib/views/Dashboard/home/trip_tabs.dart | 741 +++++++----------- .../Dashboard/orders/orderstaus_button.dart | 4 +- lib/views/Dashboard/pickups/card.dart | 116 ++- .../Dashboard/pickups/collect_payment.dart | 56 +- .../Dashboard/pickups/delivery_actions.dart | 39 +- .../pickups/delivery_proof_page.dart | 17 +- lib/views/Dashboard/pickups/done.dart | 32 +- lib/views/Dashboard/pickups/map.dart | 12 +- lib/views/Dashboard/pickups/multi_map.dart | 16 +- .../Dashboard/pickups/payment_screen.dart | 24 +- .../Dashboard/pickups/pickup_verify.dart | 24 +- lib/views/Dashboard/pickups/pickups.dart | 22 +- lib/views/Dashboard/pickups/pip.dart | 6 +- lib/views/Dashboard/pickups/sheet.dart | 20 +- .../Dashboard/pickups/shipment_capture.dart | 48 +- .../Dashboard/pickups/shipment_review.dart | 46 +- lib/views/Dashboard/pickups/skip_sheet.dart | 4 +- lib/views/Dashboard/pickups/stop_type.dart | 24 + lib/views/Dashboard/pickups/stop_verify.dart | 142 ++-- lib/views/Dashboard/profile/Profilepage.dart | 4 +- .../Dashboard/profile/informations/faq.dart | 8 +- .../profile/informations/help_center.dart | 8 +- .../informations/notifications_page.dart | 12 +- .../informations/order_alert_sound.dart | 2 +- .../profile/informations/profile.dart | 8 +- .../informations/rider_rewards_page.dart | 40 +- .../profile/informations/saved_address.dart | 10 +- lib/views/Dashboard/summary/summary.dart | 28 +- .../helpers/constants/Colorconstants.dart | 13 + .../helpers/constants/Font_constant.dart | 53 +- lib/views/helpers/constants/app_theme.dart | 17 +- lib/views/helpers/constants/miler_type.dart | 26 +- lib/views/helpers/widgets/app_widgets.dart | 72 +- .../helpers/widgets/load_state_view.dart | 6 +- lib/views/helpers/widgets/miler_app_bar.dart | 2 +- lib/views/helpers/widgets/miler_map.dart | 102 ++- .../helpers/widgets/miler_sheet_kit.dart | 8 +- lib/views/helpers/widgets/slide_action.dart | 2 +- lib/views/introscreens/introscreen.dart | 4 +- lib/views/onboardscreens/Creat_mpin.dart | 2 +- lib/views/onboardscreens/Sign_in.dart | 14 +- lib/views/onboardscreens/auth_scaffold.dart | 18 +- lib/views/onboardscreens/otp_page.dart | 2 +- lib/views/updatescreen/UpdateScreen.dart | 2 +- lib/widget/Bottom_page.dart | 2 +- pubspec.lock | 26 +- pubspec.yaml | 69 +- test/activity_page_test.dart | 12 +- test/card_density_test.dart | 31 +- test/home_grid_test.dart | 9 +- test/hub_handover_contract_test.dart | 291 +++++++ test/hub_pickup_group_test.dart | 269 +++++++ test/lifecycle_boundary_test.dart | 16 +- test/next_leg_test.dart | 290 +++++++ test/no_hub_in_rider_copy_test.dart | 35 +- test/one_counter_one_dropdown_test.dart | 36 +- test/pickup_delivery_boundary_test.dart | 30 +- test/stop_card_neutral_test.dart | 31 +- test/stop_row_alignment_test.dart | 54 +- test/stop_verify_chrome_test.dart | 24 +- test/support/golden_fonts.dart | 29 +- test/trip_tabs_pinned_test.dart | 26 + test/trip_unassigned_brief_test.dart | 109 +++ test/two_lines_test.dart | 34 +- web/favicon.png | Bin 452 -> 539 bytes web/icons/Icon-192.png | Bin 10759 -> 11436 bytes web/icons/Icon-512.png | Bin 33220 -> 45049 bytes web/icons/Icon-maskable-192.png | Bin 10759 -> 11436 bytes web/icons/Icon-maskable-512.png | Bin 33220 -> 45049 bytes 143 files changed, 4315 insertions(+), 2291 deletions(-) delete mode 100644 BOTTOM_SHEETS.md delete mode 100644 DESIGN_SYSTEM.md delete mode 100644 MILER_FOR_STITCH.md create mode 100644 android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 android/app/src/main/res/values/colors.xml create mode 100644 launcher_icon/doormile_icon_foreground.png create mode 100644 launcher_icon/doormile_icon_legacy.png create mode 100644 lib/data/next_leg.dart create mode 100644 test/hub_handover_contract_test.dart create mode 100644 test/hub_pickup_group_test.dart create mode 100644 test/next_leg_test.dart create mode 100644 test/trip_unassigned_brief_test.dart diff --git a/BOTTOM_SHEETS.md b/BOTTOM_SHEETS.md deleted file mode 100644 index 0fa436f..0000000 --- a/BOTTOM_SHEETS.md +++ /dev/null @@ -1,330 +0,0 @@ -# Miler — Bottom Sheets - -Every modal surface that rises from the bottom of the Miler rider app: what it -is, when it appears, what it looks like, and the rules it must obey. - -**Scope.** `lib/` only. `lib/xpress` is the ported Xpress-rider lane and keeps -its own surfaces; it is not covered here and must not be used as a reference. - ---- - -## 1. The one presenter - -Every sheet in this app is opened through **`showMilerSheet()`** -(`lib/views/helpers/widgets/miler_sheet_kit.dart`). No screen calls -`showModalBottomSheet` and configures a route itself. - -```dart -showMilerSheet( - context, - builder: (ctx) => MilerSheetScaffold(child: …), - large: false, // slower entrance for sheets covering most of the screen - isDismissible: true, - enableDrag: true, -); -``` - -It fixes four things so no caller can get them wrong: - -| Setting | Value | Why | -|---|---|---| -| `backgroundColor` | `transparent` | The scaffold paints the glass. An opaque route background shows as a square white corner behind the rounded one. | -| `isScrollControlled` | `true`, always | A sheet that cannot grow past half height is a sheet whose text field the keyboard covers. | -| `sheetAnimationStyle` | `kMilerSheetStyle` / `kMilerLargeSheetStyle` | One entrance curve, two durations. | -| Shape | Owned by `milerGlassSheet` | No caller re-declares a radius. | - -### What this replaced - -An audit found **six** presentation styles for one kind of surface: frosted -glass at radius 28; opaque `pureSurface` at 24; default white at 16 with **no** -`isScrollControlled` (so the keyboard covered the reason field); an ad-hoc -`Container` with its own shadow and a 50pt top margin; `Get.bottomSheet` flat at -16; and a floating card with margins. Five of them drew their own drag handle — -four at 40×4 in `borderSubtle`, which on frosted glass is close to invisible — -and each applied `SafeArea` its own way. - -A rider crossing one shift met most of these. That is what makes an app feel -assembled rather than designed: the same gesture arriving on different-looking -surfaces. - ---- - -## 2. The structure inside - -**`MilerSheetScaffold`** owns the fabric, the handle, the content padding and -the bottom inset. A sheet author writes content and nothing else. - -``` -┌───────────────────────────────────┐ -│ ▬▬▬▬ │ MilerSheetHandle — 40×4, borderStrong -│ │ 10 top / 14 bottom margin -│ ◐ Title │ MilerSheetHeader — 18sp/w700 -│ One supporting line. │ subtitle 13.5sp/w600, badge tinted 21sp -│ │ -│ ───────────────────────────── │ content — the sheet's own -│ │ -│ [ Primary action ] │ -└───────────────────────────────────┘ - 20dp gutter, matching the page beneath -``` - -### The inset rule — one line, and it has bitten this app before - -```dart -bottomInset = max(viewInsets.bottom, viewPadding.bottom) -``` - -The keyboard **replaces** the gesture bar; whichever is up pays the inset. -**Summing them is the double-SafeArea bug** — it floats the CTA a gesture bar's -height above the keyboard. Never add a `SafeArea` inside a sheet. - -The padding is animated (`DesignConstants.motionState`, `easeOutCubic`) because -a sheet that jumps its full keyboard height in one frame reads as a glitch -rather than a response. - -### The handle - -`borderStrong`, **not** `borderSubtle`. At 7% glass over a dimmed page, subtle -grey measures under 1.15:1 against its own ground — so the sheets most worth -flicking away looked least like they could be. - -Hide it (`handle: false`) only for a sheet that must not be casually dismissed. - -### The header badge - -Optional, **tinted, never filled** — a filled disc at this size outweighs the -title it introduces. Pass the accent the subject already wears elsewhere (duty -green, brand red, a stop-kind accent) so the sheet is visibly about the thing -that opened it. - -### `MilerSheetChoiceRow` - -The standard row for a list of answers: label, optional icon, accent, selected -state, optional rule beneath. Label 14.5sp. Used wherever a sheet asks the rider -to pick one of several things. - ---- - -## 3. The sheets - -### Home - -#### Duty — `duty_sheet.dart` -**Opens:** tapping the duty control in the app bar. -**Asks:** `Go on duty?` / `Go off duty?` -**Body:** one sentence of consequence — on duty, the hub can add you to the next -slot and live tracking runs; off duty, the hub stops assigning and tracking -pauses, and any booking you are holding has to be finished first. -**Commits with:** a button. - -> **Why not a slide.** This had accumulated a handle, an icon disc, a title, a -> subtitle, a *drawn diagram of the switch moving*, three icon-and-text -> consequence rows and a slide-to-confirm — eight blocks for a question with two -> answers. The slide was borrowed from the payment flows, and this app's rule is -> that **slides are reserved for money and for custody**. Ending a shift is -> neither. - -#### Stop detail — `stop_detail_sheet.dart` -**Opens:** tapping a stop on the trip card, or a queue row on Deliveries. -**Type:** `DraggableScrollableSheet` — `0.78` initial, `0.5` min, `0.95` max. -**Answers:** *where actually is this* (a small non-interactive map with the hub, -the stop and the leg between them) and *what exactly is here* (full address, -contact, parcel counts, cash, notes, OTP). - -**Layout:** number chip + customer + status → map → `620 m away · 1 min ride` → -`DELIVER TO` + address → `WHAT TO DO HERE` + the task and its requirement → -a two-up **fact grid** (From / Bag / Order / Contact) on one white surface cut -by hairlines → Call and Navigate. - -> The fact grid was a `label ── value` table with a fixed 110pt label column. The -> values — the half a rider needs — sat in a ragged right column and a long one -> wrapped under a wide empty label, putting a hole in the middle of the block. -> Stacked two to a row, the whole set is scanned in a couple of saccades. - -This sheet is **why the card above it can afford to truncate**. The list is for -scanning; everything it drops lives here, one tap away. - -#### Pickup preview — `pickup_preview_sheet.dart` -**Opens:** the `i` / details control on a kitchen, and the kitchen card's own tap. -**Answers:** *where am I going, and what am I collecting there* — the leg drawn -from where the rider is standing, plus the load waiting at the counter. -**Primary action:** `Start navigation` — and **only then** does Miler hand off to -Google Maps. - -> Handing off means the rider leaves Miler: his route, bag counts and manifest -> all go behind another app. Committing to that on the strength of a kitchen's -> name and a straight-line distance is one tap too few. - -#### Rung sheet — `stop_action_sheet.dart` -**Opens:** advancing a stop from Home. -**Asks:** `Arrived at Vidhya Kitchen` / the collection equivalent, with the count -of orders at that counter and the **named manifest**. -**Commits with:** `Slide to confirm arrival` / `Slide to confirm pickup`. - -> Arriving and collecting are claims about the physical world — *I am at this -> counter*, *this bag is in my box*. They are written to the hub, they move food -> and money, and a stray thumb on a moving bike must not be able to make them. - -#### Reject reasons — `homepage.dart` -**Opens:** rejecting one or more assigned stops. -**Asks:** `Why are you rejecting this stop?` (or `…these N stops?`) -**Subtitle:** *The hub needs a reason to re-route it to someone else.* -**Body:** a `MilerSheetChoiceRow` list — too far from my route; shop/customer -closed today; parcel too large for my box; not enough time left in my shift; -address looks wrong. - -#### Turn on location — `homepage.dart` -**Opens:** when a permission or a fix is missing. -**Asks:** `Turn on location` -**Subtitle:** *Bookings and live tracking need your position. Nothing is assigned -to a rider the hub cannot see.* - -#### Product details — `homepage.dart` -**Opens:** from an order row. -**Title:** `Product details`, with an inventory badge. -**Body:** a plain ruled list of whatever the payload actually carries. An empty -payload is **one quiet sentence**, not a padded red box. - ---- - -### Deliveries and the live map - -#### Live stop sheet — `map.dart` -**Type:** `DraggableScrollableSheet`, and the **only** persistent (non-modal) -sheet in the app. Three snap points, no more: - -| Name | Extent | Purpose | -|---|---|---| -| Glance | `0.35` | Map-dominant; ETA still readable | -| **Working** | **`0.45`** | Default. ETA, identity, address and the action, without scrolling | -| Detail | `0.75` | Everything, map still legible | - -**Hierarchy — how long → where → who → what action:** - -``` - ▬▬▬▬ - 6 min ← the dominant operational figure - 1.8 km away · arrive ~10:42 - ───────────────────────── ← one hairline, the sheet's only rule - Joe Mathew ☎ ← identity + Call - 12 SNS Colony, Peelamedu - Bag 8 - [ Navigate ] [ I've arrived ] pickup leg - ⟶ Slide to finish stop delivery leg -``` - -One continuous surface. **No cards inside it** — the hierarchy is typography, -whitespace and that single hairline. - -> The camera's bottom padding is derived from `_sheetWorking` and the real safe -> areas, not from a remembered pixel value. A hardcoded `300.h` agreed with 45% -> only on the device it was measured on: on a 320×568 phone it framed the route -> into a sliver, and at large text the stop pin ended up under the sheet. - -**Call** uses `StopContact.forLeg()` — the kitchen's number on a pickup leg, the -customer's on a delivery leg, and a label that says which. It is omitted -entirely when there is no number rather than offered dead. - -#### How did this stop end? — `map.dart` -**Opens:** *only* after the rider completes the slide on the live sheet. **The -slide itself commits nothing.** -**Title:** `How did this stop end?` -**Subtitle:** *This is recorded with the office straight away.* -**Choices — deliberately unequal:** - -| Choice | Weight | -|---|---| -| **Delivered** | Filled primary — the forward/success path | -| Skipped | Warning/amber — an exception | -| Cancelled | Destructive | - -The slider carries `Semantics(button, label: 'Finish this stop', hint: 'Slide, -or double tap, to choose how the stop ended', onTap: …)` — a drag-only control -is unusable with a screen reader, and with gloves on a cold morning. The -accessible path opens the **same** question, so deliberateness is preserved. - -#### Skip — `skip_sheet.dart` -**Opens:** choosing Skip. -**Body:** the reason list — customer unreachable; customer not at the location; -wrong address; access problem; customer refused; delivery paused; quantity -issue; other. Renders through `MilerSheetChoiceRow`. -**Guard:** at the limit it shows `Skip Limit Reached` — *You have exceeded the -limit of 2 skips within 3 hours.* - -#### Stop brief — `sheet.dart` (`_StopBrief`) -Not a sheet itself: the shared **identity block** used by the map sheet, Update -Status and Skip, so all three name the stop the same way. Before it, the skip -sheet asked "Skip this pickup" without ever saying *which* pickup. - ---- - -### Bookings / orders - -#### Reject booking — `orderstaus_button.dart` -**Title:** `Reject booking` · **Subtitle:** *The hub re-routes it once it knows why.* - -#### Cancel this booking? — `orderstaus_button.dart` -**Title:** `Cancel this booking?` · **Subtitle:** *It returns to pending and the -hub reassigns it.* - -#### Payment confirm — `collect_payment.dart` -A confirm sheet before money is taken. **Slide**, per the money rule. - ---- - -## 4. Rules for a new sheet - -1. **Open it with `showMilerSheet`.** Never configure `showModalBottomSheet` - yourself. -2. **Wrap the content in `MilerSheetScaffold`.** It is the handle, the gutter and - the inset. -3. **No `SafeArea` inside a sheet.** The scaffold already paid the inset. Adding - one is the double-inset bug. -4. **No card inside a sheet.** The sheet *is* the surface. A bordered white panel - on frosted white is a line the rider reads past to reach what he came for. -5. **One header idiom** — `MilerSheetHeader`, badge tinted not filled. -6. **No close button.** The handle and the barrier dismiss. An `X` duplicates - both, and this app had exactly one sheet with one. -7. **Slide is reserved** for custody and money — arrival, collection, delivery - outcome, payment. Everything else commits with a button. -8. **A drag-only control needs `Semantics` with an `onTap` alternative** that - reaches the same confirmation. -9. **Unequal choices look unequal.** Forward path filled, exception amber, - destructive distinct. Never three identical buttons. -10. **Absent, not empty.** A row with no value is not drawn. A group with nothing - in it is not offered. - ---- - -## 5. Known gaps - -**Every modal sheet in `lib/` now goes through `showMilerSheet` + -`MilerSheetScaffold`.** The four direct callers listed in the first version of -this document have been migrated: - -| File | Was | Now | -|---|---|---| -| `skip_sheet.dart` | own `SafeArea` **wrapping** a hand-rolled glass + gutter + handle, plus a ✕ | kit presenter + scaffold + `MilerSheetHeader` | -| `collect_payment.dart` | right route flags written by hand | kit presenter (content already used the scaffold) | -| `multi_map.dart` | own radius 20, **no glass**, `SafeArea` **plus** `viewInsets` padding, 24 gutter, 22sp red title, ✕ | kit presenter + scaffold + header | -| `map.dart` `_PickupBottomSheet` | a `shape: …circular(24)` that clipped nothing behind a transparent route | kit presenter | - -### What remains - -- **`auth.dart` uses `Get.bottomSheet`** for its eight error notices. It is a - controller with no `BuildContext`, which is why it was left; migrating it - means giving the controller a navigator key or moving the notices to the - screens. Until then, auth errors are the one surface that does not speak the - system's language. -- **The empty-state artwork cannot be verified in a test.** `Image.asset` - resolves against a bundle the test binding does not carry, so no finder sees - it. The Activity empty state is asserted by its remaining control instead; - the picture itself needs a device check. -- **The live map sheet has not been visually QA'd** across the device and - text-scale matrix. `_PickupMapScreen` is private and needs Get, - SharedPreferences, Geolocator and a live map to pump; that harness does not - exist yet. -- **`milerGlassSheet`'s blur has not been profiled** on a mid-range Android with - the route animating. Readability and GPU cost outrank glassmorphism on an - outdoor screen; if it measures badly, a high-opacity surface is the answer. - **No profiling was run, so no blur change was made.** diff --git a/DESIGN_SYSTEM.md b/DESIGN_SYSTEM.md deleted file mode 100644 index ca4b030..0000000 --- a/DESIGN_SYSTEM.md +++ /dev/null @@ -1,263 +0,0 @@ -# Miler — Surface & Elevation System - -Why the app looked flat, what replaced it, and the rules that keep it fixed. - -**Scope.** `lib/` only. `lib/xpress` is the ported Xpress-rider lane and is not -part of this system. - ---- - -## 1. The diagnosis, with numbers - -The app did not look flat because it lacked decoration. It looked flat because -**the ground did nothing**, and every screen compensated privately. - -Measured against the page ground: - -| Token | Hex | Contrast vs canvas | Verdict | -|---|---|---|---| -| `neutralLight` | `#F2F4F8` | **1.021 : 1** | indistinguishable | -| `cardSurface` | `#EDEFF4` | **1.023 : 1** | indistinguishable | -| `surface` | `#FCF9F8` | **1.073 : 1** | invisible, and *warm* unlike everything else | -| `pureSurface` | `#FFFFFF` | **1.124 : 1** | the one that mattered — and too close | - -A tonal difference does not begin to read as a *different surface* until roughly -**1.25 : 1**, and on the budget LCD this app ships to it needs the top of that -band. So a white card on a white page was not a card; it was a rectangle you had -to be told about. Every screen that wanted its content to separate therefore grew -its own border or its own shadow — and once one screen does that, they all do, -each in its own way. That is the mechanism that turns one product into a -collection of independently-built Flutter screens. - -Five near-identical light tokens were also five names for about two decisions. - -### The second half of the diagnosis - -`MilerSheet` — the shared body under Home, Deliveries and Activity — painted -**white**. The `daylightSurface` canvas token existed but only two pages used it. -So the app's three main screens were a white page carrying white surfaces: a -1.0 : 1 step, which is not a step at all. - ---- - -## 2. The fix: four layers - -``` - 0 canvas the page itself. Never white. - 1 working a region the rider reads or works in. White, no border. - 2 raised something that acts. Same fill, plus lift. - 3 floating over everything, with a scrim: sheets, dialogs. -``` - -Declared once in `lib/views/helpers/constants/miler_surface.dart` as -`MilerSurface`. Read that ladder when choosing a ground — not the raw colour -constants, which is what let five of them drift into meaning the same thing. - -### Canvas — `#EEF2F7` → `#DEE3EA` - -White now separates at **1.290 : 1** instead of 1.124. Surfaces separate on -their own, so the borders and shadows screens grew to compensate can come off -rather than being piled higher. - -Nothing was traded for it: body text still clears **13.8 : 1**, and every -operational ink clears AA body on both grounds (see §4). - -### Which screen stands on which rung - -The rung is chosen by **what the screen actually draws**, not by preference: - -| Screen | Ground | Because | -|---|---|---| -| Home | working (white) | rows on a spine — **no cards by design** | -| Activity | working (white) | same — a ruled record, not a stack of objects | -| Deliveries | **canvas** | its content genuinely *is* raised objects: the NOW card is a layer-2 command surface and needs a ground to sit on | -| Record / details | canvas | one white sheet plus folded groups | -| All modal sheets | floating | scrim + glass | - -> **The trap, recorded because it was walked into.** Painting Home with the -> canvas produced a uniformly grey screen — it has nothing white on it to -> separate *from*, so the same flatness came back in a different colour. A -> darker ground only helps where something white actually stands on it. - ---- - -## 3. Elevation - -| Layer | Fill | Lift | -|---|---|---| -| working | `pureSurface` | none — the canvas step does the work | -| raised | `pureSurface` | `MilerSurface.raisedShadow` (`shadowSm`) | -| floating | `glassCard` | `MilerSurface.floatingShadow` + **scrim** | - -`MilerSurface.scrim` (`0x66000000`) replaced Flutter's default `black54` on -every sheet. **The scrim is the separation; the shadow is not.** A sheet that -needs a heavier shadow to be legible is a sheet whose scrim is too weak — the -scrim is the knob. - -### The one nesting the system allows - -`MilerSurface.inset` — a quiet tonal block *inside* layer 1, for a fact grid or -a folded group. Only when the block is a different **kind** of thing from what -surrounds it. **Never for grouping**: grouping is whitespace, type and the -timeline, which is why a route reads as a route without a box around each stop. - ---- - -## 4. Colour corrections that fell out of the canvas move - -Two state inks landed in "AA large only" on the deeper ground and were darkened -by ~2% — the hue is indistinguishable at this distance, the arithmetic is not: - -| Token | Was | Now | On canvas | On white | -|---|---|---|---|---| -| `acceptGreen` | `#047857` | `#047354` | 4.25 → **4.54** | 5.86 | -| `warning` | `#AE5008` | `#A44B08` | 4.12 → **4.54** | 5.85 | - -Every operational ink now clears **AA body (4.5:1)** on both grounds. Pinned in -`test/surface_system_test.dart` — a contrast rule that lives only in a comment -is a rule the next hex nudge undoes. - -### What the colours mean - -| Colour | Means | -|---|---| -| Brand red `#960019` | identity, navigation, primary action — **not** error | -| Green | confirmed success, completion | -| Amber | genuine attention/exception only — **never** normal pending | -| Error red | failure, and semantically distinct from brand red | -| Neutral secondary | pending, waiting, metadata | - -> Pending was amber once. On a fresh morning every kitchen is pending, so the -> screen opened in warning and left nothing to say with when a stop actually -> went wrong. - ---- - -## 5. Rules - -1. **Choose a ground from the ladder**, not from the colour constants. -2. **A container is justified when it is a layer** — a modal sheet, a floating - command bar, a grouped operational workspace. Not because the content inside - it is a group. -3. **No card inside a card**, and no white card on a white surface. -4. **If a surface needs a border to be seen, the ground is wrong** — fix the - ground, not the surface. -5. **Never introduce a one-off colour, radius, shadow or spacing number in a - page.** Five near-duplicate tokens is how this started. -6. **Measure.** Any new surface pair needs ≥1.25 : 1 to read as two surfaces, - and any ink needs ≥4.5 : 1 on the darkest ground it can land on. - ---- - -## 6. The second pass: the ladder made visible - -The foundation pass fixed the ground; a device screenshot showed the result -still *read* flat — the silhouette of every page was unchanged. The second -pass gave the system its visible vocabulary, applied identically on Home, -Deliveries, Activity, Account and the sheets: - -- **Hero heads.** A screen's key figure is a numeral (28sp w800, tabular), - captioned small — never a sentence in body type. Home: `15 · stops left` - with a 6pt determinate progress bar (canvas track, brand fill, green when - done) and `9 of 24 done · ≈4h · 38.9 km` under it. Activity: `4 · delivered - today`. Figures clamp at 1.3× text scale; captions ellipsise, numerals never. -- **Wells.** Anything that opens — Home's kitchens, Activity's trips — opens - into a canvas-toned inset (`radiusLg`, small padding). The well is the - ladder's one permitted nesting, and it is the *canvas* tone because that is - the only grey that stands on white (1.290:1). -- **Tags.** A label a rider matches against the physical world (`Bag 3`) is a - small filled tag: white on a well or tinted panel, canvas on white, brand - 10% when selected, error 8% for `Missing`. Same shape everywhere — Home - rows, the pickup sheet, the confirm sheet, the Deliveries queue. -- **Placeholders recede.** An unassigned trip tab drops to `disabledFill` and - w600 and says `None yet`; empty slots never compete with real work. -- **Account joined the ladder**: canvas ground, the identity + day-figures as - one panel, each settings group a panel, labels on the canvas between them — - scoped to the Account tab so the eight other `settings_ui` screens are - untouched. -- **`neutralLight` is not a fill on white.** It measures 1.02:1 there; every - such use found on these pages now takes the canvas tone. The token keeps - its other jobs. - -Pinned by: `home_gutter_test` (hero and route share an edge), -`stop_row_alignment_test` (the well's indent is bounded), -`home_structure_test` (one well, tags under 120pt, no borders or shadows in a -group), `activity_list_test` (a sheet is `working` or `canvas`, never the -warm off-white). - -## 6b. The third pass: the glass came out, and forms became bands - -Two changes, made together because the second one is only possible once the -first is done. - -### The glass is gone - -Nothing in `lib/` is translucent any more. What was removed, and why each one -was not worth what it cost: - -| Was | Now | Why | -|---|---|---| -| `milerGlassSurface()` — `BackdropFilter` at sigma 18 on every bar | **deleted** | a full-width blur re-samples everything behind it every frame, on the mid-range Android this ships to, over a map that repaints as it pans. It was already rationed to sigma 18, which is the tell that it was tolerated rather than enjoyed. | -| `glassCard` `#EBFFFFFF` (92% white) | `#FFFFFF` | a translucent card takes its contrast from whatever happens to be behind it — the same address is crisp over the canvas and grey over a map. | -| `glassSheet` `#E0FDFDFE` (88%) | `#FFFFFF` | every point of transparency was contrast taken off an address read one-handed at a doorstep in sun. | -| `glassCardLive` `#0D960019` laid *over* the card | `#FAF2F3`, the same tint flattened | with an opaque surface the overlay would cover the content rather than warm it. A live card is a card with a different fill. | -| `glassRim` `#8CFFFFFF` — a specular highlight | `#E5E7EB`, a hairline | the highlight only read as an edge because the surface under it was see-through. | -| `glassRed` | **deleted** | its only caller was the blur. | - -`ColorConstants.tint(accent, amount, {on})` replaces the -`accent.withValues(alpha: …)` idiom wherever it was painting a *surface*. -It resolves the composite once against a named ground and returns an ordinary -opaque colour. Same appearance where the old code was already over white; -predictable everywhere else. Borders and scrims keep their alpha — those are -lines and dims, not surfaces. - -### Forms are bands, not cards - -`MilerBand` (`app_widgets.dart`). A card is right for a screen showing a *list -of objects* — a stop, a job, a booking — because the margin is what says these -are separate things. It is wrong for a screen that is one long thing: a form, a -review, a receipt. There the page margin buys nothing and costs twice. - -- **Width.** 32–40pt off a 390pt phone, spent on two strips of empty ground - beside text that is mostly addresses. On the verification screen that is the - difference between an address on two lines and one on three. -- **A second boundary.** The gap between two cards already separates them; the - outline says it again. - -So a band runs edge to edge, the page's ground showing between one band and the -next is the only separator, and the margin moves *inside* as padding — air -around words rather than air around a box. `MilerBand.pad` (20) and -`MilerBand.gap` (10) are the two numbers, declared once, so every band's left -edge lines up down the whole flow. - -A band cannot carry state in an outline it does not have, so state goes in the -**fill**, and a finished band adds `rail` — a 3pt accent stripe down its -leading edge. That is the one mark that survives a phone at arm's length in -sun. - -**Which screens took it.** The whole first-mile flow, which is where forms live: -`stop_verify` (collect · hand over · confirm), `shipment_capture`, -`shipment_review`, `collect_payment`, `delivery_proof_page`. Each is now a grey -page (`daylightSurface`) carrying full-bleed white bands — the inverse of the -white-page/tinted-panel arrangement §6 landed on, and taken for the width -rather than for the tone. - -Home, Bookings and Deliveries are **unchanged**. They are lists of objects and -the card is still the right shape there. - -## 7. Known gaps - -This was a foundation pass. It is not a completed product-wide redesign. - -- ~~**`GlassCard` still carries three separation mechanisms.**~~ Closed by §6b: - the fill is opaque, and the hairline stays — it is the documented fix for - shadows crushing on a budget LCD, reported twice from a device, and nothing - about going opaque changes that. Still worth a look **on a device**. -- **No typography or spacing consolidation.** Arbitrary `.sp` values still exist - across pages; `MilerType` was not rationalised into a smaller scale. -- **Icon families are still mixed.** Lucide was adopted for Activity and the - status vocabulary; Material rounded remains widespread elsewhere. -- **Account/Profile was not audited or migrated.** -- **No device or text-scale QA** of the new ground. The blur question is moot: - §6b removed every `BackdropFilter` in `lib/`, so there is nothing left to - profile. diff --git a/MILER_FOR_STITCH.md b/MILER_FOR_STITCH.md deleted file mode 100644 index da519db..0000000 --- a/MILER_FOR_STITCH.md +++ /dev/null @@ -1,227 +0,0 @@ -# Miler — a design brief - -A one-page description of the app, for handing to a design tool. Everything here -is what the app *is*; the long engineering document is `ABOUT_MILER.md`. - ---- - -## 1. What it is - -**Miler** is the rider app for **Doormile**, a delivery company in Coimbatore, -India. The office assigns work; this is what the person on the motorbike holds. - -One rider, one phone, one shift: sign in, go on duty, collect parcels or meals, -ride to doors, hand them over, and report each step as it happens. - -**Who uses it:** a delivery rider, one-handed, outdoors, in direct sun, often -wearing gloves, often in a hurry, phone clamped to a handlebar. Nothing on any -screen should need to be studied. Every screen answers one question, big. - -**The one rule the whole app hangs off:** *one order = one bag.* Five orders from -a kitchen means five bags means five deliveries. Counts are always stated the -same way — `5 orders · 5 bags` — because a rider can check that against a shelf. - -**Two kinds of work, one app.** Which one a rider sees is decided at login. - -| | Meals ("milk run") | Parcels (logistics) | -|---|---|---| -| The job | load at a kitchen, then a round of drops | collect from a customer, take it to the depot | -| Work tab is called | Deliveries | Bookings | -| Cash at the door | never | sometimes | -| Ends the day | at the last customer's door | back at the hub | - ---- - -## 2. Brand - -**Deep burgundy `#800020`.** Used sparingly and always meaningfully: the app -bar, the primary action, the selected state, and the one figure a screen is -answering with. Never as decoration. - -*(The shipping app currently uses `#960019`, a hair brighter. Design with -`#800020`.)* - -### Palette - -| Role | Hex | -|---|---| -| **Brand** — bars, primary buttons, selected state | `#800020` | -| Brand tint — selection wash, icon backgrounds | `#800020` at 10% | -| **Success** — delivered, collected, done, money | `#00472C` | -| Success tint — status chips | `#00472C` at 10% | -| **Attention** — skipped, late, needs a second visit | `#8E5A00` | -| **Danger** — cancelled, destructive | `#BA1A1A` | -| Page background | `#F8F9FA` | -| Card | `#FFFFFF` | -| Card border | `#E5E7EB` (1px) | -| Tonal block *inside* a card | `#F3F4F5` | -| Heading / figure text | `#191C1D` | -| Body / supporting text | `#584141` | -| Labels, timestamps, captions | `#6B6B6B` | -| Text on burgundy or green | `#FFFFFF` | - -**Colour is never the only signal.** Every state carries a word *and* an icon -*and* a tint. A rider reading a scratched screen in sunlight must not have to -tell two greens apart. - -### Type - -**Inter**, or Poppins. Headings 600–700 with slightly tight letter spacing; -body 400–500; small labels 500 with wide letter spacing. Numbers a screen is -about (minutes away, parcels, money) are set at heading weight and size. - -| Use | Size | -|---|---| -| The screen's answer (a count, an ETA) | 30–40 | -| Screen title | 22–28 | -| Card heading (a customer's name) | 16–18 | -| Body | 14–16 | -| Caption / timestamp | 12–13 | -| Eyebrow label (`DELIVER TO`) | 9–10, uppercase, letter-spaced | - -### Shape, depth, spacing - -- **Big corners.** Cards 24–28. Blocks inside a card 16–18. Chips, buttons and - avatars fully rounded. Never a square corner. -- **Flat depth.** A card is white, a 1px `#E5E7EB` border, and a very soft - shadow (0 4 20, 4% black). No heavy shadows, no glass, no blur, no gradients. -- **Rhythm.** 8 / 16 / 32. 14–16 margin down each side of the page, 16 padding - inside a card. Nothing interactive touches the screen edge. -- **Buttons** are 56 tall, full width, fully rounded, white text on burgundy. -- **Icon containers** are circles or soft squares in a 10% tint of the icon's - own colour. -- **Status chips** are a light tint of the status colour with darker text of the - same hue. - ---- - -## 3. The flow - -``` - sign in → go on duty - │ - ▼ - HOME ── today's route, accept the work ──┐ - │ │ - ▼ │ - MAP ── ride there, hand over ────────────┤ - │ │ - ▼ │ - DELIVERIES ── what is still in his hands ──┘ - │ - ▼ - ACTIVITY ── what he did today ── DELIVERY DETAILS (one record) - - ACCOUNT ── earnings, profile, help -``` - -Four tabs at the bottom, always: **Home · Deliveries · Activity · Account.** - -A stop's life, in order: - -``` -assigned → accepted → arrived → picked up → out for delivery → delivered -└──────────── HOME ────────────┘ └────── DELIVERIES ──────────┘ -``` - ---- - -## 4. The screens - -### Sign in -Phone number, then a 4-digit PIN. Brand-filled screen, logo, one big button. - -### Home — *"what am I doing today?"* -The rider's route for the day. - -- App bar: **Home**, and an on-duty switch. -- A summary line: how many stops are left, how far, how long. -- **Trip 1 · Trip 2 · Trip 3** — a segmented control; a rider gets up to three - runs a day and each shows its own progress (`Done`, `Active`, `40%`). -- The route: stops grouped under the kitchen or pickup point they belong to, - each with a number, a name, an area, and a bag label. -- The rider ticks the stops he accepts; a bar at the bottom commits them. -- Tapping a stop opens the **stop detail sheet**. - -### Stop detail sheet (bottom sheet) -Everything about one stop. - -- A numbered disc, the customer's name, `Stop 3 of 8`. -- A small map of the leg, with `2.0 km away · 6 min ride` written across the - bottom of it. -- Two figures side by side: **DISTANCE** and **EST. ARRIVAL** (the arrival in - burgundy, large). -- `DELIVER TO` + the full address in a tonal block. -- `TASK DETAILS` — a card: *Deliver 1 parcel · Photo of the parcel*, with a call - button on the right. -- Tonal tiles: order id, contact, bag, weight, booked slot. - -### Map screen — *"get me there, then let me close it"* -A full-screen map with the route drawn on it, and a sheet over the bottom 45%. - -- Big: **6 min**, then `2.0 km away · Arrive by 3:05 PM`, and a green - **Picked up** chip. -- A three-step rail: **Collected → On the way → Delivered**, in burgundy. -- The customer: initials avatar, name, order reference, a green call button. -- `DELIVER TO` and the address. -- One control, and it is a **slide**, not a button: - *slide to start delivery* → sets off and opens Google Maps; - then *slide to deliver* → photo (optional) → done. - -### Deliveries — *"what is in my hands right now?"* -The queue of parcels already collected. - -- A route rail across the top: `Trip 1 · 0 of 21 done`. -- **NOW** — one big card: the stop being worked, with the only button on screen. -- **UP NEXT** — the next stop, quieter. -- **LATER** — one line each. -- **SKIPPED** sits above them all, with a way back in. -- A bar at the foot: `4 orders in hand · Start round`. - -### Activity — *"what did I do today?"* -The shift log. - -- A white pill floating over the burgundy bar: **28** *delivered today*. -- A segmented filter: **All · Active · Completed · Cancelled**, with a sliding - white pill. -- Grouped by trip: a green tick disc, `Trip 1`, `28 delivered`. -- Each stop is a card: an icon tile, the customer's name, the time on the right, - the route line, and `Delivered · Gandhipuram · 1h 44m` — *Delivered* in green. -- Tapping one opens the record. - -### Delivery details — *"prove what happened"* -One finished stop. - -- App bar: **Delivery details**, with the order reference on the right. -- Hero card: a green disc, **Delivered**, *To dharaneesh*; on the right the ETA, - the actual time, and the day. -- Tonal tiles: **TOTAL DELIVERY TIME**, **PARCELS**, and — parcels only — - **ARRIVED AT HUB**. -- **Journey**: a horizontal timeline — Assigned → Arrived → Out → Delivered, - each with an icon and a time, the line green behind the rider and grey ahead. - A **View full log** link opens the detailed vertical version. -- Under it, a tonal card: *Delivered to customer*, the address, `3m at the door`. -- **Proof of Delivery**: the photograph, full width, with a *View full* button. -- Three folded rows at the bottom: Delivery details · Payment · Order details. - -### Account -Profile photo and name, a strip of figures (rewards, bookings, help), then -grouped cards: **Money** (earnings), **Account** (edit profile, documents), -**Support** (help, about, sign out). - ---- - -## 5. Rules to design by - -1. **One question per screen, answered big.** The count, the ETA, the outcome. -2. **One primary action visible at a time.** Never two buttons of equal weight. -3. **Irreversible actions slide; everything else taps.** Handing over a parcel - and setting off under your own name are slides. -4. **The exception is the only thing that gets colour.** A day of 25 delivered - stops must not be 25 green words with nothing left for the one that failed. -5. **Never invent data.** A missing time, distance or photo is simply absent — - never a zero, never a placeholder, never a greyed-out "pending". -6. **Empty states explain, they do not apologise.** "No work assigned yet" with - a way to refresh. -7. **Legible at arm's length, in sun, at 2× system text size.** Text can wrap or - shrink; it can never be clipped. diff --git a/analysis_options.yaml b/analysis_options.yaml index b79e1e0..742a501 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -11,6 +11,14 @@ analyzer: errors: file_names: ignore unused_field: ignore + exclude: + - build/** + - android/** + - ios/** + - web/** + - windows/** + - macos/** + - linux/** include: package:flutter_lints/flutter.yaml linter: diff --git a/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..1923f3dafc9a0b1d13d406646943c049175ee785 GIT binary patch literal 10837 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..a4108d2f1822374501f5eaa72c25ad3e1d60f03a GIT binary patch literal 6293 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 A>;M1& literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png b/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6094e5abfa723665005c6d7afcce34ceee5801 GIT binary patch literal 32880 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 Ik}?hXA4Go_KL7v# literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..c0be12a --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,9 @@ + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index 9d5fb4432e87a22cc2ee743c85163f647b597ec9..3ce4b9129d18b7145ce76c84a28508445dc507ab 100644 GIT binary patch delta 3628 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 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 3a7ce1626abb72aefc4308717ad4b55b453c544c..9d67f0a99dba39ae70a2a485bd78eedc32dbfcd2 100644 GIT binary patch delta 2094 zcmV+}2+{YC5V{bMBYy}1Nklf;lT1!BxtN5UWHEq5JkWAIvJ1iT zT0B+`4^U)X3Xk$Ymt7P}cL9Z^YDF}CNoJ$ zCX<=T+xmJALNfP6vsTenQ+Y4*=5>Gn>%Y6d@5LyJqTm;7F@GZ+K(uxWz)0IE03&U~ z4uD0?+1&$MV>29{$o1^t}TyMF|OMyc89>Q z9W|o)s1Z#szkh+)%yeYWzaF`ZZiY5>)XximtJ}2YO&nRa8cs`x{7)0FL)s<3L0b96 zNIq*4bOm|PBqqprOsU?wW9T|?5bYm)g!XqoguS&5#aq)FrDlYf2lEZEH!G*oVZ>8VX{w3%^e z(Gs-3zXv6cuaJfK$pFytS92EP`2Mft+;G!%82iWr(5C6ba;nv*qG0hN$5M!*Mw*O9@653 z1b`dXlk;5pfx-9NY_PYPg9ob7K%1Ekm0Iodd){;0+K2JIdw->sm%%V=M)Uxf_eYjJ zCdbTqrp-XJRPV#VnSTiCNSx_Yk$uZ-6#VH9Xn%A=Q^YWDCM+L+hL+d1pNjh^9GOnEN_j|?RK*!z#u^;8#WF)RP$#L>orC|k5hs|5xLe2e;K$Db!%xkZZZfm&l_c(3c3P7!fu74;W z)}!_4HU5D3g4`kZNS-`V{xSw-En~A5&Zy9srUN&q%ECgWgy0tRBan_?P^SWwQI5 zLx@RB#rTTV-r#AhHZ*7Fao>S)&wsho#zTz40uYIDr5QXe_m25!dg*mIk9VVR$z6!e z$~fs-rN7^Gpbpem6c@7yaEV_4q=9hPZ|;X+9kH*m1vP(OA;(Fj6J)hHVrY^RrGpQ- zzPW{u%rBX7baYDmiVDyMsDOR}ki*I&R1_g2oaOzRMgwb|5&b<@IZZz241YAfxK)nz zQ!f%OJkYrMU0;4J_m3Z2;PaMjZc=$vD#RMH!UsU78&{Y&WC20~K=dTw zSr6CB`QQ{$`W5N2w9Kn6^?zI6&AUI5zp1~T5^(+sxQVGAkbnz^HCu#94K}ql21=jZ z9i4)rrT3umrPsXx9LG;o8P;=7w&p#1Wf~oG+gzW1>C3!pk8EMa5Xb@pC@&NBfRDRj zQxyvCzkSFxabpayH8i>62aq^n9GqQU-tXJ~y$c=H`=HqElJ^cvhkq26!iVmW-}*B0 z<^EoqR4&Rd5d%=iYDM~>dSI%klp$;IMC$Ce%F4q-S~Ak0(ww-h^++8Qr}IQDR}^F~ zxDmOx&-dw*m5XGbmh;ECLA9fxeSo?Rr4OnHB;e$*19Orq<>}OHTpSY;N{Z3_?f2em zI5yafKga-Qm^TaQmw!$5nb&NDHB0^`B~)w3MDD_Q!NLm;fSZuI4W$pxGbG^I1L`_U z=6UzJiK` zwf*?^E*xIEN`lXvH3M1KTprTzLIS{mC^}KMq4YuZfCQWzHh)^NmTAM4XYlO$DHoh8 zzCyik$g>c28j4QTZ76+EJs<%mhxH6*;TktAbG~KU4hfjSmu}e*mO2;KFh>qc(MhDm zt=mOCAOR01Ee;8s(&DBnschV^DtFra=7KH>(^F5KkZ^+QpuA~ zhc17N7Z8KwY=6V?fE|`iiq(szHDsZ9>6xRtn)0Dp;Vh;1>pU0QljWKls*Q(-~djH@rrw@Jn02Td6_iIXl+;s z4RsqT2mHt@rXDN$np$9I_f@&rRh%K~|MwNsKx2R;;3xh#>~Pzux0EAorvQw!{o(=q Y4`bR?*%M6I`2YX_07*qoM6N<$f)KwFkpKVy delta 2050 zcmV+d2>tiE5RVX$BYy|hNkl*ECTVM;qiH%#($qvjE83tbXp;bf zpf;omEWZn^ySJQ=3j!{<=n|$gyfZs{clW#B{oe1Md(Qiw4S&!yjsIr^jPwGo7o!A5 z8lwb88lwb88vZ0;0~Q0Bzzkpl5CIqf2T%ok0^|dK0WSLEqW&O|2y6uI0fID-2j`iy zI4i4h)zzy3W^05kWYX8=m0~a&R{`z7ZXgFZIZ^~dI@k7e=T5HGG|lWde2khu?W68* z2XNKat8MQMsekuoTLjkm8APvG7G%vxTWK&D?gL)xB(wo&{VEA00DC%L$@TyECl#BX zrRjKyTC^!F6kBFGA@P$i+ifafFr|6Kz9B;x3kTD^4pK#IB*zqq@5|h*o=Mg0t|-! zfzua8vl;vCw_*EMCbjQ>MA>7TsoA*;XIUlF{*Y%02n&^mJ019ZI0#70@9}iFdKN!6 zHHB~Ne1DOksBuG>21PXTj(J$VnZl_D*U@nJ7$x_vVfvom*i6B}Zv&}7qrVBr1Djl) zozt`U>3e>QX-vqF7T+6YyOrcOU#8@)hiE7)qWq^@Nqp{SlGSp7HU1R^PF8uj@ zf`4LTFqn)~Y|bTS)qTW2`=m;})_J$8ELHo#K_YLzZ5dz(YOj}o$b%p$QUXbp17#cQ zoLh+7^w^a@Xc{e_m7%#k)E_*;nP*-ga`6Hzx6ESvqYw4W7n8L@5vcj&ULgKOpymtVO5b@IM;_$E~DksGAf_>C4aT=eyE6qr%c1;Xk={KOsU8OgoXBuwavQ~ zQ+SvnAvMEjHZSl8ff=H0L>|a(9;it5hvs%um77QP^S{PACk;cOnel70nDC>AIWkp3 zrGVHq-|2IX%q`iiZhrwSr4@uHC3=s?ArhG2JX5V?g2)43aH+Y4PgnmyEkt%&o`0X% zH4iXx!#Wi%au-@YD_3`fe&HB8Wis{q3uvo4D+DI`gFu9<)}aoRwz=Bko0=(JzM7_@ zVvJ)#Xe=zkk~Wh`*+1-w^}wicG#ovy1YZBA$sE~r4be}XYBg9dpw80#zE)l)vX%zs=g3#h@R*2t_(b|ppd2$ zC)LhdGt;Ta-ljq*EGeRj|8wQoxz7VJqGa@@8l6b(0EMt|C z5f}mjIQzm5bu2`B$GO|-r13-v*173d#J`}m^t9Uj;0fd9W98Kr=L>;P#D7VN84*3N zr#G(z+N#efX>AG}qryiJ92?VTT+M5{@wBvJ_mYlfZh1CDqJ$<+mak6ugFwF6K#6HF zBa)*<)AWa?dDMI04Ur_jxr3sNC0*aUT-^gyHmcb29067fLHqncK)MIJ#lwmXtS=~3W<>OSH>60pE_6wjz;Skr zL6?hN>*+JNn_KWW+tj$Y?Da&gSa!ul>JJ^I?t^^BOpPb<4t0n30)H3$K|qir23$O> z*g$boVn#$oDrgY5<#BZwnix+=+{B*G>LQkKHAbXDP)zg{lV56Rr1bkwsN=Y&ek>_g z(>=je;VS`YeY_+FTs*AUKygxHMnuocj*owMRi6|3e;x>KXB(%!`zUQy=ZIRl9Q*t^ z==$ele-c1%eJm6M?td(=q~Xvp<)p-n^xTOdLUvvj?C!Qz9L0u94K0KIRs zNV*4Nz{Nd@4HPFOW<>P7#Q9)t6-kxncf3yB-}6<$ie9-~?SH(!c*(sbLs`(Z^o68v zlP=u@G2r51%QtRS^+8^u=S32Ws_YhKA`hg(N|BO0F9?|$&*Y~b$38y;J#3Z^b@A6q z0KIP`t&dzW;Ij_wHHr-sCnY3AMvElw4cTp}uu`NX&r7P*v(2k|%=;WR{vd$fw~^Mz zb}``MVZ{bYn0vIAR^Y5UtHhtC3p3F+A`kQm+o9+ATwk-za1iK5vEDrp1HMFTU|3S( z&0$?;Bv>EQt_!mhx;)tDOOf&g{``NSRu6~X9yUbR^VigQ_65WJ56ys1%3m1$i)o}W gN?@chN?@e%KcRcz|LO>KUH||907*qoM6N<$f{$+Yt^fc4 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png index 41bc88547ead2c5718ca47d2b94757a7729f5ec9..ab303cf1c0790b2cafd0d1b51f51a2a4072c3c4b 100644 GIT binary patch literal 4819 zcmV;^5-jbBP)Zo6TnUAsG}>ci?{=egY(hp8$#BCqQEO36L0m0wji?0EyuzKw|g_kQjafB!-^= ziQy+eVsv-{thPdv!GMOJieM-%L1Rf78tdy}tf&TLfLs#+Wmp)LF;NJNk3n#^E(lO6 z+3#dBnZzS#9UYPY5_(-;J}M8NK-KXq)Smef`n&?bXavzAWB=Iy2r$c0LWCvp9=wb1R}2Xj+Xi+sfplI0#m zXu*OdD13VbwBznZ*Jq!EW@xJ9L`X&e30`;b81mm*hPte?w)VEfLBAuR$pV!K2nu3* zk4bNUxv|l9%@x>{#wO@??q#3w;kTj3A7?{5X1HWTNJ2ov^^h&F;bH6((z_?3?!B{FdomhPopl!F|JaYx?R(I0rO@ep%D3%C<$)teT=)t)PoL7R ztD)TpxK&n;i!WrLV$Xi(UyuhNX2Ljherh_@!_puN2=MB8Oo$2v)aj}0lQ?${D!)I0 zqSfnAwtF8Vhx26^E31+B{9IJ*JA~wA3!zj;c=ddD(JlnkT`55JLr=p{_>M z=lqut(l^OxvyTXk95Wo6(Zf)G=`!+Odj}Q&KJ4(kvaNein|&TB8~%*YUI{+w3l}~m zfVP3EQ>XFc%-LuvEqA!C>d_TR@6U(!p3&{L?CCk7$w?UWx78@${T(i6EQX#lF{m52 zt`y?*12Zsi!=IrZGSH{}@fiUm{PKN=aBkLfFzaveFUn--^7ITO&U=x)Or-!35qEU=U(~w51{6eueC*Pq8zF6*QKd$Dc*&?ysQ?4-@s7q7p#+KB=1a+Kw_R zvcn7CiqO8jF?h$9I6Zzk8q0OIcCss7cp(D=S1%WJ>lBp$I%L`F`LyQ`So?qfFNAMJ zNUsD8So;aiOnL(5TLxRZZu=e--7^|pW=s|BS)vg@<^?+8@*tC;@2BsxrQI6zSFgiR zQYKbcAP)~^`#IT)gw9s#bDt#(aPhgjf%Kr?C>y8iY_MBY705D{^YO=docn;W*-+Kg2-$bV}& z`hEPaC|i*z1n3SPb=Z1n1}0?u-n~xxAV8jc0u}oYvrpt*BhhEsn^1M{>d`%@?@8~? zL)Fn!yu(`QrXA?=>&Hboq$cCGcAoK6Y^ev2Wfv_=k+S^ngHG56R68P!)w$2d@LgG8SU+@ zMMaaYk_j497GfriN6du#5ZEcsL8vqq&DaslVroV0@hnsvJ^}5h zVP5siD*~8#`SW%BM!6h4-+bAtnZX<_a^cocIy}Ki;t!FKGxK*y+q($?A;HXtpwwzm zeeyK>T%PwHv&8mWwFE((<88mAu_V0mJDlbaK)C+-Iz*04_iC(O5uh)=3EiH3yf&Ie zA$@vzb6ccrS_SpUbiuzT0;)5!QT*j5ly2R{+QJ6)M@Vun_P)9J{9M$Kqrc!9pD2?F z5kphiDzHaHdK!C~SM2-V)PRy9&^x4$bZT3^peRs%qonG`M z+xMXRZ)OSZt6&01*c83M?JMoAw1lMw3A23f0k#5k`wjs{6aPAZpx9`{PMd(ZM<(Fv ziqBA+eU5ECGP&I4eaV+VW7OwgWq;Gy%XaQXw`XPwo-l$5ptv0tI>G_D5xw}U! z-dMi{*FO539qyb#85_;~4^36oNO<)*wpt>F4nfcPFG8t}Z1w&$HX7sAr7LZ1H7BxQ zDAyqU`y~OrG#5dLevpe?grP3Kl_^bAjpP zbYdkTT0}Xj;N1^dzv*h(&VM$qS`W65u)+PIP)D#81WQ0b#ld5U zn>1d~HY9ijP`Dr$>JdYk3ff*U);F-2qU)cnW3!qDADonk_{S!raOp~z>KoYi!fzXl z0bhK;)XLC)eNeFYBilVHNUbF2yuy7k&^v;*EZx5j+S+RD&Ox3)5CJAbBlMRGcx@4B zgWAW#Wj3S!askdg`2yuSJip%#E%qA0ZUtWl!H5(k_b?eSwVjnB$1=)Yi2QH&6 z?1d-94?&@kyf{=dSk8hF2qS!vn?rRlp#@6Us(YiF0= zp}+vH`fRMJ^|((;wVK}`v&cjM1QEb8Q#c^Eqc2{+%+&qXawdE(l+jwKdUSKpK4K=0 zL+sQCTfL_|SjF2uO^uBn_lqL4WdSmtAA>?0g+Q1Z>L6|LJt`#pn;W;|+KN?n&z3Qh zLGf3cc?8fTNP7FVHZ?J`omoOO%}wBK1Q9?vSzMTI8Q?5y$QzJtCilfR9NIh0n#Q)g z(rvqV?eR0FI<;cj!&qC(6MBG3<#FH4hDMl8{9FWknYar<1SrYV#gRC5h-~W$kz!_y zdOa?^^d?NV_<>y{;KccVz?q3p@E0A0I{s#sTeJC=ovA{hRlEGID>QNfw;0S|NrFNk zjDVPE-gKw!g48fk2#^P$Wb?OZ$i2dArf2kA@G^6p)SkV-dm)qB$@OxzhWgz6mY1;E zjG%bWqZ`sE6MM-9HaFy+-as=0dasJu|d_vRn7BIB=Aw_fx#8(!;zkdLAhVT&R+h zY>DBXLa;TIlAyT+R2|QR*=S_$JwcGMBX6@U#{&}SJU&Q}v}l&ovM=4Z-8SQ!DyrD_piUR&k_;O%5H*yp>fs7fMylQV4Vll& zcYSC3n+S<}c!I~zqohBpF94PkkoK;T?eCJ*I0?rn|Hr=t6F}i1wLj!IvJq{Ui!lVUIYYLZz=WFQ&7ew7vvw%j2`aseXI~n0M%Zg^nb2jm{LJ0 z8&Qy7*yQ{)O_2>@{gYv;*E^kMbpB}dwuVMrc=i?4oX+8GH=ej5tstWyjggD+^i%|D zJU>fVA(#M`Rr2U0mi})Y2Ib*aet(?hU3r4QXf2CQbAZ{5h}(y-ZGz%&oYjtKEU#d3 zK;&HK|J2O-bLoW)7Td}F6`dK#bLJ^1CWxDBOj9OivM^Vq6<);!#Xmfe)n2fwqtub2 z)$7@k^rTav1Cvp>WToQ;nG7Mx&CU`QdF||;)>&zB#E{?{%XFwZc8bM>n(Z7%gkEpG zih#gC4@TO2-)kSO=8cOYuwy5V^XNYI@QMJ6t)apfRCmD&iZrOdn8z|r+yx24?8GWb zgSOi5U0N+I@ku0X8(Ja1^RFI*R=|0MPT;h8V zl+CN%UIoS)=leLlO9Eq?kN7UtTZ)7r_16W7T*O#vLU_FQlUaPxQipaLyX4W)l)f1@ zER97ATcO*3m?c3|9X^eHSfrM1X6 zSD>*}9X`o>b_8YJi;%kNH37|$!?Tey{jCRZ&h?+be3jq5W@w{dRVp|iooDG z?#*VzK0Xx@RK-OEh(Z8M<#}f=D)%4ex#o($`i6y>QxbG*=rrqL_HlJ@LLjBOZdv0| zpS(r!ny;I~+qsUHNHu!Sbu;zK4TzQ{NyUz+-VT*~;eyitNt0t!VF3TUrKgP1=+e+M)1ZJS>WEOH}JnJBQMNAY1eDNXVD$ip-+k#K3 zrBJ1*fnR@$vr~S_O1@Y@cAM-;PoVdb1uO}=Bb2Lw)mN})1M)K7<&`EN$kpL&EWW6e z0$I4C|5H3aol3=uq!0?q6DEUQ$<|#C6M}?4XzLfEshrN> z(~@OWX)0yw8mA@8C`*N`l#~P=*^VX4tY8(rI3>&MpHJHkl`Qk6@ZoC$nCEP0Dl2wG z(F_gea(M?S8aO3SYsTJzgjb(u<^*38!6GA$XCeRX6}GGz-gV0hcfemiL`Vi2YJK2w%DP+$lld{#S>5ObrHItVv zfLuVtoDj5I-B7ADMa7P&-j20!t3Al1Oy`J}!mW2T=bg1txYZe23b$r6S7~d7TgkjY zC*1$)!mY5(I4X7&b@wQi(OCM;PMafz`yI-|rA$QnP}Bo$O<{xjvGgLUctSx?3XK{8 zfz6>H6dKuBS;bUc3Yw}rpNrbF=UMau*U;xwumJ&xoB0qDU!NoD3D;dnQaf7JDGvQU zS&S~v%wz^Ts^RPkBtXi?;^t)8G9fJ?;?6Q7-9h;1Vd%BsW%i=|pDNxBi?FEPPU^R7 zQE}u1%XV}qU*F1a8O(Nnw*j-ov7;UDFJEs12|zn?7$QfcGsipCUMTx^FKUiwu~>d@ z#bdUFj!^UhnX6+bjAKCnQVZS+$qBH61VU9usPF~VUNDqbpn@uK9XiJL@`j6-fu<%m z{|gf(g8L>REHwq%J4Y}-0)>ur6rpp`VF=)Y1Vt~z_$dz{&Qbz^;(Ho?y6*fx@li)W z86L{Q=KcSPkI1kJP#zSBuwIEkFV9m!J2E;v0srmr6Cg4C1V{`&0TRPcfW+_@QKZ*HTPEVW{W64z-p7;?dlvO7-4v^!wu5n^eafP}&v7QTVoxBg(ik z#w3KGjl#~O+ewMNQ$Fa~n2&%e%(&aBC3y%*GC17qv-TWYwHle5lqmXIwg7Ehi8?*? zSgxLuIyJ4>LRUd^63!PA*XifzSKf=krZdTn+=n%mM`gY^BSYQf>iG$#t-T3wm4U8T zyV6eRKq|A+srg1TrV7(zj&TmvZqja*Zz?w%!K!R4#2>j-je?|QSDhqah^HjBw=&Z% z2u^-~Rp-5+PP>}r1gzd`>RQHX*lpuVT(Bdr+FKeh^*g=`+3+G8>6w;B1=fjY zK%?!ufNlXc{(TfU?`$@>-?oWGg7vG|ar{AinUx7xIp}^HclSYxSC%Fb+Q5Ea+zu8N zt#ZzZ*FER`EO3n`5?H=qsgM%SJyN}!%^!j-Ht+77PQU1>zGa(!uvMMiYlbj(7PcK{ zqN^t*n7%^9DIfw$m{|;!V{1$Lcp)F5qHgn?{?@0!uEV=JOLGOPy%*>jBMtHF`06tb z^@Y@qwZXh4qt_yEHJAU)7L@5KrG_fVb}4Y%%qvlJs(QtmHhc$Dcg_GUlW!`j9zT-1 zAfMj6rwv_g)so(r#l(%{wHDY9z7nj6V?U~J;SRw9O4m|iUu{xz^%5g&d~O&Hw^o@d88h~G^u{TPr`0h3`pIkKd1VJCM*+6RO5RK8yNZ zGvN8J3O=F%B%Q*>=pQojAD$fE@bM0+*H7s8qsWdFZ$oiCy=%*vLBrqqraxqIdrsa5 zK~Dvd!LOMN_#F>i0sL66SYfi`HBH8;Go7U(@()g!tLQX4&~is!3n=q#n3^KV{$D^j z&1m?oi{O$4!Y1;(Wz6n)UCAi;VE{>anF1hfwBp0rRW+ww(R>%LnMu__+I&&^Dj13g z_eP4)b>Iv?r4*8@!%McTLS)&){^`HjY>c9GWi&+l`6jY)85r%mO09miTh|}rSf{bH z+rFFS(wp+cB6jhyyr)O_qV*6+CaW~o9mi^iK%4JO?}Y!8QT!Iij(v^31IDPNFUv3P^&g*k)s(OhM#8^x`rS>lw;1r}8&L|A#~1YYI3vNpJ@$ zP7V*IDcZAvp0#!TnA1UMVC&;u2nC=4jz?TL@i5&-o2oygv((M z=<+Um?>9k1?$xLMYftiz>jkud|H$U+IWIY}|JKzlqM`yDuuOo-BoxL4UuopG(@G=b zhR#D-FM9E*oX;0Lra!!|3rW{`_vCsCJ?_(C(gUFf-_2IOaQITgA2ktITWH9M+#tI2 z8iRS#Jdj`311QxAi4rY738OR6sSjv}{3DI&qG7zGXD8FvOIyF3<;)OoZ)S{XRdHQn z$WPUI7FjG#ldI5yuk9$_rZlX((qd=mH(ft1WFvjP>AiiQJDk>ye7q(AlE*!)2J2|V zB;E&Rhcq_G2W1dpPTHNC+Zkp$Tz_>{^_I2cNSDm<*PNFPOlhsVN;{{g3jzlhlajJ6 zxgE+`2{BM&LJ!G0_Rx;|vQ z24qA5{LI zt}ju%=A7JxkhI)w9M$KvC;%7y{zcY%5$cQ~A)27!q=YGV?O>b_b4A4n9*Mtj(XrXu z4tm46&cT*4AL&SjvOoUrr=i3tIiswsh-WWD*9@ATJjn%6+SFVc+4_)+4cqYS z-k=m>xlSi^`fcjFmgCc>I9yJ@FMMI?4N5WaaLHI^*%tF8_oYSs3iW;eStR^3B`Zk8 zy<$cp=NMmnFQWxczm|%ldOpu&f5?=~y27a9WwCjW@MzzkgQJf=M4ylOxoA);*4l&6 zc8YxzMop+2WDk4{W`c>ihq%kPL1P;CzI;;N@?K5OK!>I6^HY`L*5t-Ft(Q-V91q_b z2H?+%s@HO_no6ZSC7F4BSEc5K(wE}Nds%&HjRa_6)M5nEtmW^XK8B6QDWskKa2Zfe zfM_W~$pwjyvi6T|);gL5%q!q$F#%0t)QMca^DGw^Tj(K^^OUx=68(Q7ROBK%T4}Gu z0hc4>c9w`cjI zERS1H2X~Q-c;%^Cng8}*H*R)f{bhZn+>wZQdIgDZHCVAT z*@o1fJP7LfP^j*=`b4s{?-rv_e~7}r^51pQR16ezYR0Vj>9lu(m|eFB&|+Y^ucT_T z=f_-n@5&9vGVV{|@C&@zqaBwgOj`#vK91S=E^yjA!N*b}RR*8ldZKq_sBR$+Ju29|v-T{%E!)cl-g zXe_`Iv_NYW5k;T#yd<9EZ3Gf#ZZ1mf=6jl^>>A%=rdsqwOR4^R#&)&NuvQ#-YI(B7 zB|ka4$!*sG1N7>Zb5`q;IXJo0ZIBI)d9w()s7Mn}Jv9}YwlKG5hnRiPtU$4RL*10u zi8RF~sS@zugTGoG)?DipKdzF$qH3eM4cX`^MIMePKMl75-rs;e%meRA85TBVC+o6~ zSje^wB|x5DQ`D!gkJ~nk2Au9rxH;v3Wcgfjoth47%Vpxhtzrv4f0_rPmy?%xTE7p6 zn6?EaGkMpu_=1hbgvZOtSPS}6>}TRkX|+&f3}#=9e4>@c1=_Q`^~3F2PW7CHjT%an zJcV60jo;&c2?&KLq_W|u^O}^PG2Chu24OsN8Kl0@Uq9Cux|=u!c)IhQ+J5l z^7@Eqisw=$H<{0WvI?qHm-7So(isg8-IWuvKQZ}HVuz0{GkEMuI#AqJ@1azw=kE1s zatN<0yvWAJGQI;i+ntHpWLZ$-WU&~2wLj92(pWmyaV!uDE=CKu{#~Lg(Px`tpEz@g zGsIUxT(vqzpT7th$WE~R!!1mF4<=)Ul|>CQSffA*MS`)p?ee^j7Zk)$4e@}@K0|Kr zGwK0lp&~k8-K!nMN=2R=Q46`i)~2HA?bzvFIkjBaZ-csAZ5b=+LCGNfu#t|wJcHjEHg+3A7ffvDA6ox$7q+qDzoACp zB7JwQh@tmXP1wbsjc?tla}uz)HE@D!RWiMG9%spRTUNWI(j6oGFCY{AT9tB#Snh&ibEz z*DdylOk`)h(udwXGF12Ws6nVp|>i;fMMy3bTVKx&71)ip)Yo!40R0#xGrOZ?3Rq5cHS%Z!XHQpdSmVoQDnDR$rpY z`hvEtTM^Eh!C#q7dzlV!;bD`*X!_PYtLUErG_~)mob1(om`v<}e{GSs_kh$aowb>Q zPu_QZ%oNl1ag-9|qt_#W_|H|>wHZ=CjCm3x1sjcL|08N6S)03awI-=DFatrrf~&L5 z`evp~mMtAe|1B@|)C1SgC{w#4@iwvcK{p3>K?87Ul7cRi6U%d>Xc`O?!hS=bq47QFadmHWj8C1Rg8Nv2}`GjzFZm!`;V)t=$-7L?Ut znFu1Al@NXM!&m0<*Hjszj)=b#&R%q99troK6G}FBthNLyUY^ zjFj%MD(gIY+wgHv{iy5kY0N&l`V&KzJ4@L>znZ?m14{jj{&IAg!zrSh(TmD%RPo5m zc73&jX6V_tY$3>Q?b*nTE?RU2Y(CmPJoij{>)uXXbbl@YJx*($#a*H2E?RwJH)t+z zJLsvZ#R-FP@!Ru?M;dH=MiEfkJf|^Jbh?(eh*?PtXaYdQ!<9RiACd9|5YYFhlA4}=ztb0(i0qxCxP t$eYQHn7s%Y-sS;f*7;!e|2Mp&l%uN(e^&hp@$Xj#(19ChRIAxV{ts2RKV<*_ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 7f1ba86aef4827a1335076eb09007b77c29d9b47..28f944ee75639faf443bdcf343bf60a07cc1b2ba 100644 GIT binary patch literal 8231 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 o&-kIzK$)MBh5zrC_=6wji>{M@4Z&5bTdnvl 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 wU?;J-G96&Oi7r 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 hr~Ln_k1_KD;%_}b;2tly?6biWAS + + #FFFFFF + \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index dcc7e10..db3f453 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-all.zip diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts index 5643f9c..f6e47cf 100644 --- a/android/settings.gradle.kts +++ b/android/settings.gradle.kts @@ -19,8 +19,8 @@ pluginManagement { plugins { id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.9.1" apply false - id("org.jetbrains.kotlin.android") version "2.1.0" apply false + id("com.android.application") version "8.11.1" apply false + id("org.jetbrains.kotlin.android") version "2.2.20" apply false id("com.google.gms.google-services") version "4.4.2" apply false } diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 2b38540..61f636e 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -34,7 +34,7 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/vibration/ios" SPEC CHECKSUMS: - Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 + Flutter: 71a624a5bc0c04062bf19101d501e466baf2fb47 flutter_foreground_task: a159d2c2173b33699ddb3e6c2a067045d7cebb89 flutter_tts: b88dbc8655d3dc961bc4a796e4e16a4cc1795833 permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index fa05c1b..b8e21bc 100644 --- a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -14,8 +14,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/app-check.git", "state" : { - "revision" : "bb4002485ff867768dec13bf904a2ddb050bd1b1", - "version" : "11.3.0" + "revision" : "3e33dd27dd4c69bd81c7c81fe61d8ccf58846902", + "version" : "11.3.1" } }, { @@ -23,8 +23,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/firebase/firebase-ios-sdk", "state" : { - "revision" : "8d5b4189f1f482df8d5c58c9985ea70491ef5382", - "version" : "12.14.0" + "revision" : "346daa9f46316aa372b35b317e18224acc2e9063", + "version" : "12.18.0" } }, { @@ -41,8 +41,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/googleads/google-ads-on-device-conversion-ios-sdk", "state" : { - "revision" : "9bfcc6cf435b2e7c5562c1900b8680c594fa9a64", - "version" : "3.6.0" + "revision" : "dc39082d8881109d35b94b1c122164c0e8d08a55", + "version" : "3.6.1" } }, { @@ -50,8 +50,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleAppMeasurement.git", "state" : { - "revision" : "219e564a8510e983e675c94f77f7f7c50049f22d", - "version" : "12.14.0" + "revision" : "f04760d460296cc0fa430935a7be212e5bd67fc5", + "version" : "12.18.0" } }, { @@ -59,8 +59,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleDataTransport.git", "state" : { - "revision" : "617af071af9aa1d6a091d59a202910ac482128f9", - "version" : "10.1.0" + "revision" : "ba3358d3c3dbae8ef230b58a46b97ad65e84e974", + "version" : "10.1.1" } }, { @@ -68,8 +68,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleUtilities.git", "state" : { - "revision" : "c46e5f8b7c23265f17c24ca7f9fa1b13ded7a822", - "version" : "8.1.1" + "revision" : "92c8f6dc3ac375d6febdfcb3db68bc3d10633db3", + "version" : "8.1.3" } }, { @@ -86,8 +86,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/gtm-session-fetcher.git", "state" : { - "revision" : "c0ac7575d70050c2973ba2318bd5af47f8e8153a", - "version" : "5.3.0" + "revision" : "724a52eea6329b7e12d3ad8300d76ca9f3895fcc", + "version" : "5.3.1" } }, { diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png index 679455f2d8ddbb043439a172477ef0790c89e85a..44d5d69a5cfdff30f260b8c707cee16a51a1d023 100644 GIT binary patch literal 121327 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≦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

{%2rJ$m8S(hEO!_j_K1ysF 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ℜ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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png index eb64b4da2dcb59cabe8615f689e26a84a4ec3258..316c401b8e97db35ac309eaafc7e27be714d0c81 100644 GIT binary patch delta 643 zcmV-}0(|}Y1DgeqBYy&7NklO+JbtgPi_gqZrL__wh(+`5%GSRhKO62`!Nkf67k^}AW)^a?5wJDCnO$+G zx?Q!S28-tRM^1h|bJ1|;3Wk6G&$)y!FhE_%CMl-eSjHwPu0EyxoLl(&BPRuI%+WPJ zo-{|XrjUu1_3w`#f4~1wZY+a{zuK_Af${O= zxvR0+%)C7M8y9{&b?)1(d%~{vjLgg&@-jc4JmXSPL~=H29Q=O&@oHQSm%56Ot38LD z^vC087@3e1z!XC@vr9|vwSPmr?l&?n90DvAnfJ@j!^6?Y@dQkuX002ovPDHLkV1jmtP-p-E delta 481 zcmV<70UrLF1^NS!BYy$GNkl3-y33|Bb8|5;F#P@Y{l&7i7X#w8=Js<)OXAf0 z@8_>;$ptFy)$B4-KcBsT2(n8{N~gr|n;TzGE!JPZfQg+AyMN|qi&lvSc=8(P+;8cB zfA|D52L}TK!|(SW6={NK-Cx+`bhE^A_!6o)7v5ZWNX$apKihLN33 zIz5g}Oa!|cG=I&EEX;queP`z4Waj4j{qDn`PhWTqb-v!b!_37A33f(iW}KQuyj)%^ zTPvLs^Z(Bu0ej2$`;OequK4@)o6b^DK)hJ7Uc|>0r)J6c@QVTQ{N~2e>2d%6{`>#y z*Z+V2ScL_dSXsYZyZLJMX1(Eo)megWa+$-uzC#Lgy@9)}#CxWJ&wlEec5 Xww0~o%CFf300000NkvXXu0mjf4P^Z( diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png index e0b9c327760e01bf7b46e7746ea1905e6ff13e59..f01f613808ceaf451e5ff6717beb93e669c43f2a 100644 GIT binary patch delta 1593 zcmV-92FCfC3dszRBYy@ENklJXU=P`$ZdbBTvkyoivlrYB#<^Tpj+j^^a zM}_{@Z5V?8K>mthv?M4%B zGNT+8C4ZPJ*jL(}yR~;mh4}Zg?uIjfHS#8d;&y;!0V{2}%Mv3_=pQd~`DjzA$9}y$ z`tt=cmyMe(4=QUyKgo?OFJiAs^-qe^H7hjoCZ<&49XxX8JOn|!^=sY33|#tdMDeFC z=`pl-;})yt+Kv7_-*PfnVha;OH?JdXc^h)Zn|~D}XU=;EJ8meM9HCNJsY~2rauGx4 z-M+FajqDF188($BAYK&oK?cc}PAITammpM%MkWUUxcm)Quw`)AHmV9(81JD39q~<0 zKKQz3aQ_iZDuGd-H$LAOw&mkSL6YWrW5~LXrqxJv8bd79HMUxY9?`-=Jb}&q4yj`prfYfA<$pHxI{W?+xC{34di`M9-PgT76k=XzwEV`TEC;R1H@#X%bx! z`FBW;K22t`Tn-W8ig4=*Op6GIAjovD*PV(6V#Eo6AZW1W2S;^DCDWKmjn3G4my@~D z#for64G;4IriO)}T$WzZVK|T<)IRSAWG=d^D=z&Ct$Y+E`M9> zY+^T=^@i{4%ob)=(^fAX@+A@Cnks_tA3LW zRMnD$IGl|4oGnxhGTdV2WTnsP$_!eQ@%U7|@^Bqzb=tH6LPl|`1LOOaz^*qCA0Hh* zJ97FL+nCyP-;vL#$`TUoX_5c{%74RkghO}A3}9?g0z(u#-l9-lyuwaTnaTu;+Ek8` zK-o-$LMA?128QfILTpjOoWL*)^Y<3Fr)BpPmH8)% zrWzE01XZPu3n40k78N1*W*4DMV)()^f+b5_O5gf;w5PBPMiBn);u(9|%zt%^C5U;O za+S45JG1kNK>#76A-Nw;D>(mlmr1>$E2qFVrsn16VTm&|V^0@IWXU$;o%`CWH#)NN zqE8&41am!*oW=Thv@54TuecqUB8@EBHk;b4USDOp!+aSbyVT(DZa=lIXP9(}#%hwkvmQfMfx0{aTOX?Fn7WEf_&~ z`Fa0pynXV&(J03(v7&cp#duTO_{}ziMq!AB?gKq;u>uHUh=u&UFJhpFo}6+lK`g#> zcIpWulj|B=b&ajgDkz7=$x46GPnan>%#=!)Qi-D(3_Y?83{E}T0x~h`n_<+@c`xhH r<{SYnEX1X&KZpE(-p8-O&ntfclY)dDAR6*m00000NkvXXu0mjfEdcpr delta 1288 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 Y032kH62riBU;qFB07*qoM6N<$f>m}5j{pDw delta 916 zcmV;F18e+%2&xB=B!6*9L_t(|obA<1OcOyE2k@QU>0{gO77(Ge1yMnSv=l^)kDxJ% z7pz9HF-TFw5Hy~8(M01TQG-SgV2HsY#3&CD zyJK`sRcx&IxcMEwZ}QvxXJ&UHLJ0c@1^)&5-<_U|5DGZnhJP40q$r_cCIH}1UAOg- zy}oI@t2^|bA*2%4j0p%54MXrvBnx+Sa;= zbYyqv;ECXvQ-62;B0-V?=euwp003iXKoH_2m9FE0bz|AHeaF(PkN%SDwmy2(+`j0J z1yVB4)1jWFh2Ktvii8aFX-Rr2E)-@q*7PhZRFo9S^RlD6_WCAesUaMnoR^YbTlHmz zkiEX?sp$|ocQ!dEIkoD5a!0Y+aQRK(_Ophd;aQeXP2tN zh+&vCb3W$}e0V)d&Q|}-4KZ#)D#77*{oym`M;co=pI^PZOs35Ux!fU_n;!ujhcp#p z+)?%cQhzem}#>%F}P7 zax{F0_4#nIXyW!=DmM!k2oOSJS8v3wTFy_swm~3(V)d*jE&w2|V1=XI!n=foWGB6f zl1;9=4?-@+dGppp_dTZ9y5Q_de!ZiuGj>h>lz&5ue9u%BM(c*{>dI~6Bo$&g&hHl~ z6EPfkpA6b|?-eN(+SWQgxPR0!($K8AV*U|{;L;1T5)A7H%1yeC3*uzeO6Ow?fMiqU z*F>McXROaRu+tR3t{`Sf?k~9*hNV><=r69cZY;}etP!h~JooJa|EObNrwI^v+UX+^ zg@4E{E)r^6>z?g9*0ZcoSzesDSuf3;4{#iDoYyw!XtRtow8ZPzrky%Wkm6~$pJ`Eg z^-)Dhk==Z$PjBS>0Z3CUGYJGRc1^zKiaBEZ=q_LKyli=1He%TiuSY-qFKC%qJ?qEQ qpSH^vAc!fi>ECgGqyD>meFU?qP-Ev4q74oJ0000k diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png index a0ef890e031c42322930546457d14b9d983c3c2d..3171156f4f60c0db6e788c4f7317c441ab037729 100644 GIT binary patch delta 2529 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 delta 2198 zcmV;H2x<4~6QL21BYy~JNklx;L3kJpk4Om>LJYFFZFi{D zUDH~Iu~@C6Gxf3TXf3{&4l<){$Kq~vRalk^I<(^h>1eGeRxPw@J0r}h)F&8Jv=9Oj zNP;mhE+)A*zn#lfHbz!LNxIWnzWL`q&bjAv?>)csJHHzYLVpN;JHr0g0AtexZXh** z8%Ryy22vBafzG)FBAx(3hJcTS2mkhxkh7col|e@udVAp`JLqbJ--z>&tpZCD-o zcGk1u5dfH>LeZ=Y(X5OYiZ&QeozZSD$M1FAFW+amaDPR9po}Al3OFv_(b@8LuA{pL z!LZm5-iys&iL%+FdLbAVIWH?bTcz85p!4s$?AKbZsot4ZvyYdY7(iTy@d3@s;Bn>E z6`?a<9+NxDWX7&vA^bzSdhsfkzQ1LDZra(Soaiw;<1yg63F206KFvDq*j_<;>X=xE zC7dx`d4Hm+IcK@c(BHajZED>i2HV#>9s{nnc#rkMWdy_I)fL06gnhtqzwf`fASlX? z7Bhl^ypHoyrYgRwY@WN+enZ`{rC9dqCO_li?Va7Fl>mU)58m_40dvE})+KA6}MH?^y-}AU2T`B!2zvJWWJ)c*L7tP}qYEwQboL(n z+I;a!>dAww$Z+GSGwjJ?ewqS7km!|5^oMH)Zr$zNQLd=2@Efi}Z!{kN761@exMsvU zAefOFk@MyVtORMhe$#mJd*CKDTmQ+HL>X)A@V0j8#&vN8c?gC{H?C`4vc^>ZBd+NR zo_`YSA6&zUdgvmUVWP-+StA;7lMEgJzBLTl4C(q=bbywX=)!YAzIJ)l}j-8ek!0QkuEpl3jgAkgoJ};VI<+MFBzLcYoUj zsVU>e)%79(Fa$hI6gn!aws^O8dpUrRo08P`WetCNO7h-Px}D%ACz=~B4Qjf)a8Wjk zC5~|R=pDLVFn(OZY@zHzgvfKvAcUH~{-e9>3&3D7IP3xSZ3ds0eBd+2llRLMiH5pL ztCu5!Aj}Y&O8-X6;{|>bansrW;S7(Q$`+ zZ8+2ujwq+0|6bu106>r|9ux4LdLzPOPF}vq%Vy{qhdcub35$(>fquYcOQIkEq}4{4 zEzD5wV3bgFP@^SncB+o5GW)))q57CtW-!A%avef@%Ps1D;^Vw=oi0b8VSgyl=u4x~ zaf75Wj3ADC@R99?S~M$T1cUfkyse$y*6rR;Z}3y)o;HqNz4h8n29L{qropwVZv&D9 z43zs~f*){E4CALOEsag4a}6Wnf+s1*O_@sC?2oiMdO7r;^AKvbmI0Csdt(;L^qy!; z=Nc$qMKZ<>_5&_m$t{gd#(&!S_@Y9uRXECKxd$K7+bW_RwWhGe{ySW<*MUB#f=t=U!v00^BulPin&8!pv47UcDx z{2ss8q1$sHcHN5M8&XPAu6XEB=H& zg$(@wiXtOT4R-aN_RTv10OF+!g}?JolJVjK0OB{Tw_LbvzuKZ+yh?eZikC8#?f?-K z9kxLjC<4&uUWO9>v*zZ)7488%I7yc9=|c5{LCchPh2XAlM~a<9&KH=mRfUvyj_2|R=RP0*qm9ODKP>l zgb#mc)NCuG$A4CEl1zTEe5|a$@EaK?Ix4m9P)AX5&*#+xx9+wsSn8Eyd7V4TP4z!I zy6<d)yhyRV0PY&Wv1;?c-b!C|p{>Q(~nBdD4PB0w2WhwmWpa)VhHB z*e_&D#M~DXeCb_$lt2HQz=DIQwc%*%t#O42+@%Ad3EV(x0ymJFzzw7(a098|81BCT Y#r15NKMzshh5!Hn07*qoM6N<$g3IMn_W%F@ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png index 8f92d1cb438d0be09c14bba7134d499be4de7834..5dd8e63d5c93b4e23272ce83dca4f4b317d947dc 100644 GIT binary patch literal 4101 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 DeDwik delta 3560 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index e0b9c327760e01bf7b46e7746ea1905e6ff13e59..f01f613808ceaf451e5ff6717beb93e669c43f2a 100644 GIT binary patch delta 1593 zcmV-92FCfC3dszRBYy@ENklJXU=P`$ZdbBTvkyoivlrYB#<^Tpj+j^^a zM}_{@Z5V?8K>mthv?M4%B zGNT+8C4ZPJ*jL(}yR~;mh4}Zg?uIjfHS#8d;&y;!0V{2}%Mv3_=pQd~`DjzA$9}y$ z`tt=cmyMe(4=QUyKgo?OFJiAs^-qe^H7hjoCZ<&49XxX8JOn|!^=sY33|#tdMDeFC z=`pl-;})yt+Kv7_-*PfnVha;OH?JdXc^h)Zn|~D}XU=;EJ8meM9HCNJsY~2rauGx4 z-M+FajqDF188($BAYK&oK?cc}PAITammpM%MkWUUxcm)Quw`)AHmV9(81JD39q~<0 zKKQz3aQ_iZDuGd-H$LAOw&mkSL6YWrW5~LXrqxJv8bd79HMUxY9?`-=Jb}&q4yj`prfYfA<$pHxI{W?+xC{34di`M9-PgT76k=XzwEV`TEC;R1H@#X%bx! z`FBW;K22t`Tn-W8ig4=*Op6GIAjovD*PV(6V#Eo6AZW1W2S;^DCDWKmjn3G4my@~D z#for64G;4IriO)}T$WzZVK|T<)IRSAWG=d^D=z&Ct$Y+E`M9> zY+^T=^@i{4%ob)=(^fAX@+A@Cnks_tA3LW zRMnD$IGl|4oGnxhGTdV2WTnsP$_!eQ@%U7|@^Bqzb=tH6LPl|`1LOOaz^*qCA0Hh* zJ97FL+nCyP-;vL#$`TUoX_5c{%74RkghO}A3}9?g0z(u#-l9-lyuwaTnaTu;+Ek8` zK-o-$LMA?128QfILTpjOoWL*)^Y<3Fr)BpPmH8)% zrWzE01XZPu3n40k78N1*W*4DMV)()^f+b5_O5gf;w5PBPMiBn);u(9|%zt%^C5U;O za+S45JG1kNK>#76A-Nw;D>(mlmr1>$E2qFVrsn16VTm&|V^0@IWXU$;o%`CWH#)NN zqE8&41am!*oW=Thv@54TuecqUB8@EBHk;b4USDOp!+aSbyVT(DZa=lIXP9(}#%hwkvmQfMfx0{aTOX?Fn7WEf_&~ z`Fa0pynXV&(J03(v7&cp#duTO_{}ziMq!AB?gKq;u>uHUh=u&UFJhpFo}6+lK`g#> zcIpWulj|B=b&ajgDkz7=$x46GPnan>%#=!)Qi-D(3_Y?83{E}T0x~h`n_<+@c`xhH r<{SYnEX1X&KZpE(-p8-O&ntfclY)dDAR6*m00000NkvXXu0mjfEdcpr delta 1288 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 delta 3122 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png index 0a8d6adb34c1831077cf73026969fc995c645621..afaef053a04aa1f890d1554f8d4a0a6fe455f6f5 100644 GIT binary patch literal 6063 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 IRkDftKR}<;ApigX literal 5070 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png index be12c5b87c6944a80df4fecd3f8bf59c1559f229..3e922d4ab5046fdf659f88f5ac75346bd01f7f36 100644 GIT binary patch delta 2086 zcmV+>2-)}I4YClBBYy|^Nkl#QrvZQWoAcfGLAboGX0)*h8a*O0%buVX(D1V z2xtsYNJ3to1e2HCoyWs$8eT}k(yp`P`762a+;e~T>)dk=6MsSoo<3pzuL0=g8CEFr z3@a2_8Z7VYj3CH=Z*cKg4)c_`xee>;#ry9%jAO(U1`xm$3fS?nytEX-x-3zCE?X4& zBVj?e+jRB1QK_=Dv;)HB^VKzlJsvUGI&Y3DRe;He%FBr_E{fi?9zoF`3=2Z5TBk2N zj;nQ41HxkR<$oEx)#;o>2~#Kl01#7{{k{SJrq8C186fEW z4HnDoB!*6$F`QKZw;MtzTq}>;Unt&|&lK=!27{2m@X3a2qZhAOyVbZ_r+KMRQd*q! z&KoEzs1buwa$>f=eWlj6E&u>0St_fkh|0@Z=x8GdQ-8>hEqoa9g$S$njGIt8_N-c07^c3gYgZ#NX> zNE1XGa~Tm_U$TEEUlgP!GB?W+3~E#dVl`RFP7=*bzH535Xx$f z1b@ao;xw6W7r&8q{x8dS@0k3u$@=w;WxHMytd*1JtfoR+a1dAPOjoaqw`>Rvi&_ui zT6t97i?j+W-uzAUw*2|+(B;N;{YK>nD2ruOswTc@w5fHE4Wlz7hV*~d0RW=%a)fK; z*nbU;QKvY!iBJy;%ysg6==mZ^Vq1k{NSv@Ibi|- zuw$09(`A#oO`+Sbt3DB+Siiu?0JW#lpIJ0RVh?22;SJRqz!E zr#ia7{e6XV(#%Ooa!!~c*Z=H!JIQ3Jqh6@^Yr{=xv%?K3D)jcz>(Y zv2HcqKR|1f1`9&yFpiPW-wH`UCbz@c|LeCVzi1>KR(ROB>Jz~ldD?|jD4Puc;HJs| z05cCB&hN-cB#k?a;~w`B0E>!G$ZwH?08CEecJU!oLo*V_Mp-QT;4m7&O+9y#Vj{g) z6nUIowny{(dIBL@%YGb0P;U$z`hU}3O%2Tu0O^~*HT>fu06_A)0~~3>e>B|gS!)Z# z8uZQdSWKb7HH8sY`l(Q2{a4TUmCq^PMqoC=iXklKbFc38)}gK>?W)ghh>(6mXs{3j zVaLZj9x>QQ4E~sykwQz$*I+iYh~Aoa|MWSM@8@gS(IRg(Tt_~g-s|TP`+t4XI6FR; z)-Tep7B6j;t+NOJrjHz$t{ZDvwEgZq>i5v`Q`8T>{CidT_NwZ=a9*fI7UODqzs`KgZq z0>f>y34vf;RtQ+4{9M3fKz}DO+0YzY_=?Zh@I;Ayae z`^Adhw4Nu=z|}f^`McR)ed--@IVVkXo%y`kBxmmM%{&~9_=#+KV34|%DYaD*^G>vD z+O99JMi7K2&xqc%K7V8^1Vv@Fm71-E_QBzMM{8xZRi3Sk`_&%N=3h`RE*a*ZsBlco zfifbv?wOhJ#Dp-qn-3wpceK_%I1Er!_Fm-zsrEv#yf7Ain}V=6V7v! zrQBqxM=c^XB_fsnp8GHvFI=XgOG#;oFxzh+A2{<#di#*ASAT15>(ZB3lLv0G$q&Uu z84>2LOM2(f!ukQQP!==&Qk`~p3Er#Kmsd{@42G1xQsSDnQ|T+|KeIB^FVzK1`2%Ow zECE0BV+ED$lZBerPFc;7sJs`0SvClvrKMe8{w{f*X4h%SlKnZd4;55t#6CEzEhu?X z8revOuk@u6+ka$3GgTTPCxD`o*GrP#KD3mj5o$M+EB_$gzFB{mEF@t!G+4K0fc>P9 zv_e9K34|51k31_)Mn zsCdf;@se~d5TK9-m)Yp-tvE4mmgnpd4?5=Jf&Fw2IsbZB8eC8 QPyhe`07*qoM6N<$f@Z}PApigX delta 1747 zcmV;^1}yoq5aJDxBYy^|NklyfFjXMBx-zZ8u9&v7&Sg)LIO;tVoZ!;gmqEmF$J8G4VgLwEl?>`;L=hk_T9Ub z8%q%eePFgMeE+)n{mwb}({q14=iG~67zX}(LjG-l;Wdush=0bh9ML$IBO1qYM9yQG zO(s=kwW7RIUHeKal^K*OOE?z8jqgVfo6Md+hc!2nKy)&`Gj1l0wlz1uHS4Ng-j1(e z7zV*G0Klm1)-|`N9zBs=$|dr+zNyK+X(=W@I=; z7=W-C7A#e-Mt{=WQ(c3KAF8UVn={V0=Hv@c9^fro{JF3&v$^raIoXA5fB|;QT*09q zXkP>a2(q;yvKYjOP)0(*~qr6vnA_Tm{GODxQ6uHSL6J^waL zqfR<=gtzJ&XfV*Hf*`6$7;^10T2$Py<6v9%bpxsh&VM>hKpKg?2!|DP>d=^Bp%2Ps7qVd*b%1H)DQ$2f-Gc(d?&j6R zCCPJdFlSHqN?0-mSSF43&F-TB!zP_MY|WFRw4#37{$cH5cM2x03jqm3Xw}88BF?#QQ%jF*f(zm&UWj2{wv#tUF1c!GGJ>$L`*D_{I{bbSD)BFBL zfl;MuJaURW!Mn4t7=obbm4zfvkAMR^(W2tEoPT`&&NP@zb{!$|>gO+YGC5~av`_L%&cgX5PY=tZ44lZ0o}(n!I0AWQKP&wkAj7;7)E8cQPoQvE@AS# zo9f!X5GI{5a~fJyOr0FW{BovsSJ!44dx#$FLBGUcG^zU#F2^M-H@>f~xkV#sCVxhR zezHaK@lwC2vy^ojRhIP=0Du!SZ=kkeSof1^h(w|U_}hAEnxp{3-1xpOVbQ}vRF8h^ zsjguR!6J}JX06VWmDcz83PmtL@ZoKfs1AzWS~E0ET(5S@}soR9s>S8$H`4EY{peB9E)8 zs_v_oP=kfmbrO$@_eA=%DQ3L^UsRS?85P~ep5Bf-KkH<2dPFEMAk zb7G=g!Xgln38~4_jPp$=&W2pOY&|+=jTXNk`+8d!dw;L(5a(oYw#T)}H0Dk~4ez7Vwxh?y8ZNj>+yLs-D1on8@Fv?xRJ;?C3e%rLoMJ;grCM5Qzx&_ZCf)wC7n3DlSo!JO(Bc!e$AM z@9|DtZfBkx#=_;5u*4%as^#*Pww&wuoC*5-F-)Uc1}}A=^`!`A(0$e?^0#fU=Zw3G zW$~fY0@AngcW%VzOiY_kBN)Qvxbc1Ip&{((*_@cDQR~xKV&Q_xWNuu{$g{80`rm!u p`m7qqazx`;j%Xaq5&cK8{ss_yoA&N#xBLJA002ovPDHLkV1jgbadiLy diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png index 38d8a9e2d868fdde5cfe8803873c8f7c9ff7006f..687410b7f6f545890a9ce26764ac86a9b953e0b0 100644 GIT binary patch literal 4807 zcmZ`-Rag{Uw4EVj=#cJ|2I+3b5s(-fX+cUFVTKxzkdRJ6S{jiYWa#eh?og0U$;Hf{#Ou0{{T{-LHM{d9^g0yM#prCl_S?D>7)OUJnyDvLQ^%Bc}Cxd+Sg=9!hF zo8gA056wr7hD3^8=nfV#c0h#YaU2+(zS^!$i5wr^mj@&?5?*8a@=V%#JTQ!h`hQ(Y zD_i5&7GMFEU`98+!K}E7c7L_(T~a-hllG59zfyl2;&rkqA1T#k0a!+Y9r=M$ZL!a3 zyHW?6dZR8QW4Bei2;&;D=>4~yoml6k`O2DoR_H8Y&$bnKuo5)9}bI~*3IW$p$scPkQj%;t%YJz9!t z>po-ae+~>5_>u6up26BkeWy?d6aR=oRCi`gLW%Y@K;g&UNXlk5lJ+r*f{v=e=U+JZ zjMA~rINvj9oefuUP9L6Yb4IVEH@uejTA4OLF2%5K&5bxb=hb&`fdI1BNY{ZKiI*%g z&F|s}KXTow^F&bDcS?T8r!gYh+oRz!U(J>Ebqm~$+hixxR3m@EcGDG0+@)LX zayj?J2}9(|`ufNUCu;!N*qJ5rr+b`(FF<3owb)ZG0xSrp2jN~q$nlyF91_XAK zvav-bkg$lBA8<5jwaS^_58?~H*K#SoU*y}qlIz(y*m=#SjTcLSXrV_jV8%HDOAT%QCxb#R>&GyHpj@t5ro_77dU;GCp?reAsBp3R4;l4UA#5L=v z{dmqD@1pl1lA=6ZDvLc!dYl)nK8$C3yUafg$5%wH1tB6DN+<^a1VQ7m&F^ZQuY50V zPs9Dn3d`W@k@bmT`6Vh!kC8Nedps3f{$8H^g@EvtRvEkbpxdTc^f!ff!>QiYYXcd> zuSe@>r)gBPO*370=Eim_aueR~X{GQC*OmS~Bef8OFwD^%Z!KX}Z(;&4c#YfE&bX^* zmCDFQYfFXM)M|Pu5FPQ6VW+1|@tDwBo)7*NNWws@KHXRl<61uo6qHo)7IMySm6<2} z!L+0IpVD~iXXTWQF$h<+EN0x(!x?yVmV@T56)$cEM81W;xtLdrB$UN5{%4zNzAtIC zAPHU`x!=mDL>i$F>o}iG=U&jPZ9rP64>I8NAr;G^DL)2lrKMejhb}(cLO$Z$finu&R3~79MQ>bp~ZkHW^Qk-c{#OxBF zZ#nAp61sBJ7W?H%%5O#m`y1%e^HCZr&+dXos-UJ&WkMSerbPY>K$L!Aa>i~>bPIVZ z$H|hQxc9if5vig^L|~c~IY&)JO4K%TeeMdM`SbMK7Ki1Kv+Of#Cd2ghu@rq#`iHNa z=a=7vCLc9pRSMaKdDLL$MsI;S!A+;EoVMZ18B)g;h~X;=`cHP?Y7=V zk_xClk4Yt)D?OXn(M=p*YRca@fT(Py6iUsK$eChstxFIG^C8aC;T4?g_uIf z3re3-JX6dW_th(TjCA7#2iSJrTe?E;gq0qAI)Te;g~HT86FLAY3i4{^=_42LUWpl!3VPt*~=a0OR5BRg?nIpIc3+ z@N8SKbNQL{yj$T|g9|sWFSSf{Qffs)x#7c^%_^1_ z`u&94!Kre?YbTN;W=RzR{p?IXSFZriIs+bP!G~DziM&HyvzEQo6jf6aA8SuP-z*Cp z#oto4FUt2m0-1!TI2~38oMi6Ff)vASGjaf}ayE8qTyJIX1%+?<0Sd1URyb6$_pAeN zM>Hw|u83qwK9x&!g2}zeeI5kkx2{z}H#bWRiZF+&SI6M6qfa}Dm}BqU{P5)064-eT z26_l%H>qx8lr^dqY&VvNyQ$3R#$#4F zLBA#T$F;$#%*s_Op?&Vs6Te~PHzw{Bd_F=zN4|2<6Wm^UN$~TA=6w|I+v6$+X#1hh;5u;&xg1? zPd1X%%fupRkFEvuGjnYw12*Ld#aKBW%o!5WI(7xKcqnJTX(jg0O?43B(w!UgBqR9bG@ECmV;<5wkGR*v!;7SFo6*( z&8HIN@H%OPNcz=`I=xgtom+dJTm_@ln;0A_&D2#Nkh` z_&nmBs7NOkL8&zmAl~j}&!dV2Pxcp1hBdZZR2Gn&ex_Zl9~zE(s*ZRR=zJif+d|^` z=-imyq1L)-EZe!I&b|@3I{Umz@^e~Y9vXWDoS*lVfmt+)Zz2S~$8xZmb;N>M<8VMe zTmiO5u?ZE5AE8RQXTwj;1fU>fqKK)4iu$KG&E7TDV4kCT%2VlSBVE;09uSjG+b=JB zy3<9R7Ppt;N+2xBP8J-F)*2eV=FML5n=OLCkv#2NHNbHUjk+m<+S)t%OZUR0Rru_k zJ9=*QID5OViKBswxY=N^`ysw^zS(uixLQ5*3-b;(J3P=yAjy`|(t1o$;6|Jxc3hGVFuhd7p59!^ zM1I*%y)Am?gqE5~qp1|?;S1)W=oZMcA!apO>oKX|RGUJPoq&*5dcfGju*9Ah3NfZZ}mlQ~E%jT-Ck6Gq9kh?BhS`Bv;{(ms|hXNEeqLE@0L&&P3Dsgumn2 zp6EHrKf~!vc=g5kEHRA-2Q~cbiWz~9REX9&s80FoAyS-F6jodrTq?^lzO({u68`3= z%=9LUBhTg`m}9}gSjDwcSy5$xm5b~^&o0@yXRo*MtnRp`!hOA?*LO9|1fUa@r zV8%DV)j=;(h#?Wk5GkqS!EGDjA0s9zip-QK>$`88vbH6!G=jP~<;;~!;_$}>3;OMj z>5DX1CDvHN%`6keo3FleL#g+a4!Khf5Ae2Gb7)y&t9$6K%lK4UrW-kz>- z{HyWK)FRv3r__TE&2_HlvoArKqq)F}?z3On>p2yr7m;++YU?imxwG|i0t|;mzpV** zXVRTq61@ri-B7r79}Vtmg2;ziAa5PMa8sYgg#0u+%%?CEHhs#6T)X91Lt@|#^vMkbuAw|H!sx0zP3IGS916?t zd2Qc}WHC{aNoXY_M*XN{T448F`v5?h#_0LUi`nG-f!t?c<+%Fekq-wD2u5>4^U!yq0^)RLhF@7v-3S zLpf|`NHW-0KUsbrhX&-vc^fbs$mQ-98@qp>hy>MtB}~6mJ`;#Ekor((3fmWYo}(aP?EAw69DMBVinW z2Im{Rgqxn^!FOj~gyR>^#ZXJy67j>iPsSdp3+SDWh^}I@NBJHW*&D7|=NCsmzrM3v zszO&HO!HD|%GDeyu434wkVAHq{xRBQ`e9O|Vhp82x$%19PLF+}juMet{a1b^-A(#0 z>Rx=6w|(L;!kUbot%q)u+pHdq4SaT&0@L;UvpW~;izxu@T<(6^I(fQRt+(Izfnh}V zZWj`wp;=tg=>*)~=zqScLFW$Qm?ckrlsxNS$K~h+^6K;C_!;mSWmgNZ(fSImn!Z6L z^6(JJvT?4LSrHhJ$$u}g*H%BqhysQ?dEHTvzz;0yjo?D7yj_pamD#i34#6D z$v>$pz)#EV_xFa(=AQ;YfZflPru%cQ#S5+)|J@P-A;33ekAK?@^9v zzRB)Q@CGQW*}@5_+km+@}`PdCDMA0kstQd~EPyx68vWURAY7j^!QF8y@8zvJ$JePtteLvu7x zoX==&s0eXzsyX+{-Gj|+Mn^_1Jv5m2oUiUCYl#8?cS4hXw)rbkdSk~cmXHCT&OB|Y zR<1I0i`3}mdTG0HX^J4;KO2app&pAGr4&98;wA!7QRM+7su{iuGqVaqe@Qtp#cJ=6 z;JK>5h#5hlyBjdINx`apY}WDJr>f?xmek&6A>bM_0^=)fjQQJA^S4~&Ip1~dzYH{} zazBmwwgxVr!+d(X;n82VRUflWn^ge&oZ8s@yqK|W$0mEK=!Arv=<7_(`|Dxd4FQ{bTojJY?J^10I2y=&EW30{m-Kyx~sP#M8p69 z&9tVPvXNi*Uba7iVdLR@xmyeqL47~Ly#*uilmo{}>Fp0B>N3Udvn?M~tA@?N{)g~R#Slm=iJUXf3 zl*4EvSHr}l_Jg~oH)F3Q0HvPiYntbKH4x4EbH-2=E_%o%H(!C?D{c?R8JHXAHvS#B ztw5|C5JwCMv1D2IWT7UrZUT^m=DS-Gpee{0$36F_q8A9VOONUZO&k9sW{xJpJ^qZR~8jipltWwj5O%~^_kkz`_I-)G#W z+MfaTZHN))x4qGRFRV+Loj+)>-3MTrA1`|&X6KaB!M7-MNwumFNvvQ3jakF<6v=z* zo-J-r5OqD4w+XSz{!k!GD)Jt{y58x_##G>m_6l~V)7}LY&0TJD`_p_BHJ?`YQDUaT z`;Zq5c#a*-jvJYwzB&#fuSF0uwI6kt`<{neSibxISwk5#Z2xyE9okUvqsvZSV9?j~ z&Z(Gzc*O>%cUTmBdofTRIbrf~t?DoT$FEzk26ZCp-bZsA3V@zqGvsQMWa!hvxsuf~ z?ih9kP%c4vT;2mZ^I^vC@EM^v0AG;)^Lx(&+j?YRKRjRFpOneEo>@%WUEw{cM)x1u z2!~1gbxbs=TtWv z`wu?G>c^FD{!OB@GKfD~N)=n!A&kX-zoaB&=i`+bN&u|+yutytwq)MxiY!0sMANFxK3{<70 zC+VRz{kdCJa#@6#K8H2qWB4VMp@DQTV?DB=@`()5TdMYF8sE#pdJ(V z1pOGYSvxMNk7%#v>v8=xF4nXV=wA)P#SkLAfk`s<>i7ZPe{6IM$>3i8b_)e7ZZd!f z^cTF-KI9dgonZP>@}@-o)=l7(h$|hnngXF1F>dsckH>VvxIdr%D`DBBwl~=8DQueI zUR{2T^Kzhys#T%*%`LwwOAYZ za-PsCnx%83e=C{GISwJMhwZJDT@IrO5q8apcZ;{|Em0Q=P6oW0lh5u?CtuQ+2G3k( zV(Mn)IG7IXAdeaq%Jg#DcyC9jvDe0fuk%iAZ9syLI*Fk6c#oii@k;mA!QwViI$=a# zH{G>spBVIk=k(|R6~OX*EWFN}iyg1z3K?#eLF8EtZr;f6kD0oby;24hLxW)w!Rb^k z)V)hFeOQ-jWDMNJ*7+Sfn5^hx<0l~;W)Nj@)kiIm zYGfLQwG+SxSt3KEg-SZ!ycx`Mq2cl%U>E?PhSh}rN~3a$ZN}Hs)j^=$!`Y&!+j9u6GlwiGqS_KDia6ffdDx2B&c~t;vByv6#wIs z_UR+y@Gj8JB|2t=J^PAnLZkD(5yE-<$B4c6>#?oEWg%PfXkexE2GN;LvE>X$T9>OP zI5`+kcMmYh30=~nR3HCM@-e8JC(o@S)=x<)RmVgR6f+R?^Jf*|SX!X_h|KVb?Yksx)0a0jvdD&meA*f5== zoDZ%Ea2oJRS>HZO`c=HNCA2<9m%w!;O172-EOB)S+0>MYqIKff93+5{CUl zZ?eOddnM2*UNAKxbs`XK7R~-@=IOw{|D53k+M-~ zcrs0DD&mtv1?ZfGR%4_ZzA*_ST>a;M-3#OPa#Q3%h-VZ*-?MfwCb0A6NR;h{$NI%s z6Do7zS#VfUqdrP;?Hhz2fn)1+?c%N1-1YA7UY28=G%{aef4H`Ux;{{Tg4WGeMMkM9 zEHnT;-~hnZYm4@E16Q4{3@Jn5dB=eg0XJZW#>HZS<53T6RH(Fr?^oM?aV7bKn<9BV^Jy;;+ zo0gRINHR#kM^UhI!ezJAu1WTJN*2dGN0G15i}wrp7MR8&Uv}NWCtQxhvR0ghI6TObdqF!&0mbCFZT(ey zRp^+QRRfep@kaxD{Orz!yS7Op+JSsS*Gb0CZ-%J$+RBd4zTf`j;zYV*xHRk{e^_BU+3Of$n1 zvx3_t(aU~oEc0J(Vcd2;WT|-jJ@fbHUl+#XUsKU92lA28SG^Y0f8)+l=XpPXZ9PQK z>%ejRr}}j$kD~eu@I#Jt{kaECr(4r2+!QLqOf9vf9o|7qwE{4OC4nh)owIkE{Mk}- zL9mHRjmbg`5rV)MjVjfie1?>#O}!Y18n)6nJ(Vmn-G=3;Ok3017j84SPiz^}(Y9-0 z@31)dI&)LAd?=X~pqJZDe4L|}AzNf^Ys68ax3VKHyB4^&#y&kh=eP9fa&G8|^Mzqn zL3lEWwFJ+Dxms-MyErE>m`RuIOPdcB4Xt1z)tDI`(tBf~dD|20eEYV$%rCfP6&b>Y z=ypV3pZJSJGqVzhaSC`GvCEg6iUsMbAjwOsPSZ+lfBN;>ZZjBzSl8u|6unkOq8clG z2V_xx1`b(Wh;N>XP}w*Kt@N)u^_+1}Zz~THTpBW}ZQA-uex!l_PL#uRR6w#^*BNGp zg+73y-J;RBT?9i0pso!Y$REG50ZA|2*`+WP=k(r%O6u)rtY#y5|Sp4qzgd}aU zlqHwa)W3f(xuIgd^-v2cc85{sC+6s(mW0~cayArG^@on95Ct1Wndi!yqVR-j1sn2j zxt_Bs7rnqFx%3sFf%&xvwVTCv&p~PT>bWyU&d-C2Uof70wrlwCMdRK_OIhv^=_$@< z=9z6Y7DYBGBYEiI(fro4rK9DqRQ1M#l?f@mZ|@{&C1}6-U}oB^cCEgAH?S_#kb%k` zMNiND;CoSfY*4n-)W)KdthbK$I&ZsbUoXQ&bnvBBr^|8c#?>6NMcrVj?hzMc`>+p; zJDl(fR@PdNGTdO($q6S#{`e|E=wK6wN71T9dNDjDqi%+=xEfK)kj_w$hQUl>3DRx%q*ef( zf4r{S;GH~Q6HeGuA^41Vj1>-HqYs4 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png index 4f0a12085c69d28fbbc54f0a147ba5932a32a5a0..4cb5cc9fae39a82f01391265d503a856b2cd6daa 100644 GIT binary patch delta 2537 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 delta 2061 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 OiDe~~B+A5$g8l>eM^w`Q literal 4747 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 IRkDftKR}<;ApigX literal 5070 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index e429636a8c037793187a8adc0f27fd9082713f8e..5709b015224e2657d73965e6bf6ae9f89b6d4a0c 100644 GIT binary patch literal 10033 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 XBxSiNDw7Exg##!nYADpmnTP%totHi= literal 7973 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 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png index eb24f9f9830d5c8dbdf0803495ecb6e29aa1efb6..3300d96419aca35f6472b96b60f43a91f07c359d 100644 GIT binary patch delta 3422 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

lp6o=MgY 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 P00000NkvXXu0mjfIxHun delta 2899 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 S4Z)6J0TkubWGkgDzWxX1a_x!$ literal 7413 zcmcgxWm{WKw+^%vDOSN9ife%qAh=W9DO!rVLvac`K=GnQi%W1xfe?bbOK^waTHH_G zKXE?ny|0-M`E%?W2J4v=n!VJf!K+Uve_*|oQ_I#ImJN@x(@aw#Ew)t<$o8z zl?7G0_x6Z*ii6V7SbD5}e1_1&t(=oh^62%Im(u9Kj-?&bQ}}g`pPT7*jNkG7BODit zPHNqZ$H*8BheV?6_@_G9k3M-n2dfCmEcO2}jFd0MrP>XZZonDb5{C5ZGrX|l z+^X4?G8LGO=-sSi{N}43oHiFPSI`WFbB@-R2}k8e#ZX$>g$sXDN>438{)iX{T-E&>#7j~} zdsAp)KGgOT;2sf7D^Y+b+_9N-AHJW0wKfI#VwuK}#8VIA5issqH;9ad?1u~MAP1&W zFoU#=ps!SleLX3D-Io21mqn2G+_FcV>*45CU;o@=OV6Su112&Mf0C~>R%F+u`b2Ke zWyHD~1iKomXM*%rB=LO)`toXff*78?tdx{~E)xdRj(<(~)64>L|ETr>*W}b-mx7N>Osp^qCS)4`RvI%IG`%g_ zb~4dQ36Ia<$ejR$N^aJmh2pEQfDw|RX!(R_Sb!^HY{G7BuRSrqP0Sa?n7i*$Ork;QV8uUK?o1eu-P zrDe)O1Y-uKEI5X;XN2F_wMN9%6o4zdo>+Whx{Ml%0-x7%# zmvTH;KFZzTOB_slw^28&w;f((Kn}NYI-e=@aWzHIMQv9v8o;dhzJaDV*;#1$T_wja zu!BeJCdzREUvK^`!o(OXR>~*el|&~tf_dEu%dKT5^5YW`-Y4FlpCUV4r{qCE9b@Lo z(Lnd+hoCfvqjp;o^1GRbU`1?xfim{uVAZq_xYt2GHkW^_qv21guIwZG%S?~R-)y2K z2XUTDalb5d$5fXzJdv%i3&nFh0>|Ne+lKLO46~C~MRVSPs`)m6u!_h&<3vB5Wy{r0 zrGYf%30jB^ubUG=<`S|`#Yu3uC3`*YU0u!|s!12EV68xpc}#qJ2D}`qc5j6(;KGF3))#TitR?e*rCIn(~&RI-uohh`6Q7EAl``Z+mN- z%S6&Bz#J>UP@_*ZEEZ3>Gn7@iits13U^40K4gFS)4FUbf)bg4N=_O%v1~Mn!K} zy=CKnZsx~r>KZ7D5ZAi?)U5&8=Or$`iWo2|R7bW%G z5%_fMk%L0)wIc|(;m<-7vYqU_u&#^`Ant~$2B{REMn*8RTC)axhfwN8V5ljUiqYDz zCK@1jq;np!Q$3xd)ZsYj_srKe)HY$f?tDUyC?7S^C0s3;u*nt(IF@@|#Zn>UUb{Uk z`+Qa)><@|BV|S?_J>B(woI0^AFtW9s-6nc}vPAON#fwj;5xYqO)vOZ!Trf^h-#we` zT<=K+2INFt^eZBdE}U8fTndC2`7Q{}Fh4H@U7B4zG;-eK2GhzO{C%ZNI`S(r69QN3 z!vLopfs`*?kYN$wt@Y!`A(Fr2Vk}V6Z+6pTi(%X%&a5I~>Rz|xKrmmI-nc#zEg^*twc&rCrRT-v~L+C`_#sMXS@1kL``1@P5m!X0zc>K4f_^bcBYm;Va>e5v@&I zY%MQpz1vE^z;?$t3wV$xAd2_>$@<3dx*DCm+HS{RV(3McBMIKW8U?CjJanA*(rzpsPWyC(f1|@8dc|h}f7S z6YTI0Pu5-piRO59W3DO9Z3;!IoOWfIpc}8plgHa2%ssH)gIkOZu8NU_d3`nqnG_3| z_*+4eSb#=pnl7Tqk^+fSuA*zGt@#_q_%8`rs#`J$Ems~%etskfJ3Sj^Nj7aQYf2f7 zJ(kj@0uVl}P?N{tRUVNhf?B4>RkV`i;9D{pgR` ztCuZk{P#ZiBp4nnSKjJUv=)u0?)<&395UJ-bTOVVYdx1Sj|Px>0%^HEs)qVX>ARi^ z1|dMIy32tII>x@c-b+0I58v?^MJGYe2tuiXpS>32K4KX50+QJ)GfsyR*g&Y#2pI={ zG{scq`3xjBo_8*WTf(8VqK^MFLAFhsTUk<9(qlpiw7Bkb;2zs33%O7j5er=<{uO|( zq9sWK{@ipiN8@V?sRSi%Z*o$9{D9iw_4e zC%R}t-N3~CvX}+#UH|kxGoi#6@l$Ku#%`{*qg~I`^-nlHowiZy?b}JI>Bn(Z-QZ`fF?0Y{mH>5$uvb9b^DQpe#Qh29_$}{C zf7Bu-*~YPcugp4$-h2x^ocuJdz`w=Nfm&1Y;amYb>owK*tn+TPzJFo7_qAyoif_#M z2&4WDEH*T@D=wyIYf(ux{4mVj*w2`a1fx&y<8u796gn`c;@&kyVZ2Jd{ za=m*my4S^el!7LIul3HI>V{@xKk*hTU;)`MDD-3uOr)&+4s2J9DT3Lj>RrC%(uTnw?-Ja-=m|R)+*!Rzs>jpx z#A+vPHZ-1p89ywt=;@O)h$%Ra%ET1CcflytyrIY_9VqB( zW|FK%&w`|S8-D+bX^dVSjXwWPXs6zX?SRu}9|3CtKNRjiy1r{vin#OTm6cj;GC}2b zpP+K6zrzV#E{U7rZ}4h8Nc9rh;NZsOVS(cG+RGzdWX;Ph2_mJ^1s{Vhp&QQL>-#fa zXG`s@o0CkVQ)xQWivdut!$1$9(xG)TAE4d)YgW-dQ;I=ATYFz#B(al+UKYkonKq;4 zl0XN3^2~>Rbz?2|7oKcc_62$}g4iWhed_E(8QClh9Pc28zgWn{SUeAvr4jGcbX8l% zk0XNG6`fukdw5${S^d+2O{ z&#OJFR8Gg`$Q@ND-T$4Zr&z)Jq$DogY(9Ae5R5wDdUftJPPuyt4|#f^OjdIgj}GmF zWceL%{6Wt^?@Cj<{wMV*gIPz4u(AO>5t@O?s|`d9o^l)8@NXRKq)HfSCyJR-Yy1l; z|M5rvr83oyxR;DMb4YQ2*FJ!p?ztxK>Wl4xgsj8C z1+i#>B$Jw-CD+F~LLM>{^yUrtsn=W?E;*9$yVtea|L0+Zq#}T!-{ceK{>|>Mxur$= zWQShcg)sR)rEZI4Py7}#ccr2W!Iw;^xhDQ8hYNoLe9J7s|!GMO!nc5c^9oASo>847^c z3@sWO-rfV4x(r#1Tsb>am0HIwL7^`8!7sy2)oYJXHYQ*oE)YHSTn`!y_mLb$_S1jaz zv*9=J!abzL4EnE3^*;&@+K`%~(+)Rk&ECs3fI(L}7XWo;Ivdydk4Zb~nbHoItSw)p zzA|IX9tphZ!q<+Vk)QwZHt>WgOq)%s-o^Y!*GaS|BXVw|%F-5Kmbd}>9KLTtFWzrO zhiA>zUFe{iO;4|^XAoy#xIuVvz(Dzc4hAMaeGhKZ5o{8d($A~M*fyEv2}YCJof_zP zXwQIQHc?l)ko?EfZX zf-I=hFIGzzy;_zuyR6Qb-zO(N$Y}m&<>V^#K{5=l1{OTJQC6uNWniLRRu;O_Ufi zlbbCUGtw%0o|JMm*}|%tv`y(OfqgvN_nqeiz+;a!3Gz(K=Tcm{3PBgj*^j4Gqb9LZ zJt`slDy|Kluj&?j9e^8+C?o+b|ONBSrnZ*n!=xq5;q16>=+BIRM)X9p*7RQ6t$jrMw2 zO7Q!E!qWPN2_G?Zc`fjCj!MTLazFz*q3h%$K zI~Dr^vhiy#X&J8QmouRJEp0>j^u)J}8=4ZvB^Y zgBRIXR>hvi_SDSqedR2E)#txP$mL6{H-(F8nJCe$!gd+k^hxP^B;h>21@LEtYo*a#l2Jl`!x zGf8+f6=M{?icd(0@L66&ft`&C$5Ip`{dBdKa57m>mEwFyiQriWXNtn_(F43W9DBqUP zilV|jJM~g@26@#>VGUs&$aZ8?2Q(u`(osTnv4g&?%U`Ygdxes1#X`kP1^GTo)4Z`8)_lp`P(OpCO77vvGnl?6O za!}UrhonL<7a1`BD>AJ~y)%)@PkOu6?)jazs8}|Aq5N}0Gek-LoQ7#J$7b9@({jgG zR^%+Qr|yl;=M>-+_(@R9ef#Ydo^_{&M~>Q-^$-c!WO_z{2tz8*QY_ z;#0I~rA%$=clWG{n>l4Or^nNITz&F_evxlw0&JLe%f{{ z=FZmV_{Shvit6jEtTp`~_|kv(ak*8;ANG1oo$C0}0Z}u~M6skxg|8PP3qaEC(!23J zPD^S^reAvS>kf?n$GDfT{103b`LWCWtf7j^r%7e1_m;4xQklwZW5nmub-eP&Za~^=}C5lE4yy*VZTz`q`cSPm~DK zmoZNs%|W+2N+x2+gOsFnbj!6%_rr?m1-$4DAfeH&(nbAQ?%S}-+GM3+h%Cv2-*wH0 zr>5^Rlse3+7-Q+Wbw~0WOouv$?h{Ai&%vvpne@EbQuS>Pqd1BQx{#NxVqJa5tBWyB zOl0cgTVa#geh6>!LMw?+3t7OlzNf!^qomkLu}E)sO5?{>WmB=`#i5yRar0&*K1a6IhK=t0ly5EM827}1aJ~NW>ZW|T$mq61qUL?a`MuY7 z8{x(@QC4F?Eq$h#umRtrIX6;dRLm@Kda|b===5s;u=`!^d6T9m@t;|*tBbtskqv!$6qOdXk4xbfB$Rw8iL(b;gQNE^NoRwyf&LRlm&+o1-14rE*=z?Z z*}tlLpK7ZS*v^_|Q%s{;MlG^S-F|TSolBY)5wp4j9ZZ17=O=}fUzLhu9gdU4V#1bJ;uys+4*v==H2s}&_`RHyPw+#{X0yzZ@Fea#_WYbF=K z{d_g9XdHCY3xor2_gIcFq%I#rP>Hj1qtRcct`$(^=ZU+p`_gBu-Dl|p% zTjRU5&i|~NBV8`X^KFMou_QBb!cOpJ(29yOy;xy7_Opl2;ukH2>NJ%l1y6@&$2r<2 zd+E``#>h_T0@jl*2!y1{W8svQU2q)vF5fq15DFuJ*Ff*Am>#B(X3oR(jhbp5t=fG? zxZwoFk9C~(z26k{tuO&7SEhL)NV#u|;IS{>t@(6&%yY%~0$xSh*84;%Ec(qc(GcRs z=Tss*gJ_$p?kfvL`Dveou77rBydONoI7vPdrMw!Y2)S9|nxH-}8Xo0*xC0GSb%j^s zGmN*Pv~fP#F>k8jMjY6D43fQgEfT=vH-Py`9($BIKEe2*<*Jit^=T}E+ms{nKsM)! zaK>_(U3o?G^1e*YzaC}ldn~s8c(+!}j^_jx*5z|PDWy6%2g$szew^9I2LOBqFQ+G} z&-{AAU>}uG)@b|JhO7rdSo>)xpJ$1&r=x;0s-V`fV)9(=hpws(WY9B{5NiriTlJM(bG!mN@cA(@Fp&MU*W#7?P_Bm6P<;(|#4e z(u z5tOsnr1Aq;)poA@CgL&kSih?z5~q@a2!mRj>%&Ur%GtRPM8LoC%Q|`Yv1AKQvh+au z3T*ji%t~cXKFT1C5^mk_wtK6d^(3PE_zf7BA-S%MetU9QyCU}1eJzlrQqz;qLELQj zVK48zg#BcNdo@V;?f^Szz^BA)ZATE9 zI(^R-Vrk!oxn*2UGhE-xxdgjNWPLw$nP~s+{r%GlhsbMiCK`VR3%rp94h&P*(xp>s zu2LS+F0z^_vX(BwX~FnffQ>_4Bni-G(<26g>%BclOdOJFt4M&nFi4{V{aD=oB>(^m zeNj8MBzCvWdWF|9=@y{z6J8<3Tq$L5;S1?iXUDX|>$I8(Ll;O>+H{{sd#aGYX8+L7 zT!AN4_GHx0S1OEu$Tv?XiN$*R#qjkQeE+=+3qthGXHT^-&ETAgV0Xsj!!T9U-0oj@+8-F-RE_V<2cXb{_spslkwWkYXAU%QCkc08~~sseWe7@ zQja}I(AdLj)P z+V9;Oqsm6`rnx?(_oMK9e&LILBY(2^n;@@GruyKkF0_{nR67Da?b+WMdrtZxCY>B0 zARquuL2$F^1#$Fr%C)A9?a;7$;i!UX?c2LTBvHHZ<;5HnaBCcPaf&dz@Y+!jdNP3F z^}^-ZIXVXK%fEy`>@N)f4@n;!gFTx}YegA%pa(NFfY!Z61^4~9HlW|8#g(`Jg+CN} z+f}KdoFcoevXyCJ1rxlZ)UG)r{UaX_;sMn@^_^wG`fWi`CeJiTYZd=JSyzKViq-~y z9y|ZV4e$B7pfQUS%1O4^2lhC> zu~%pFKqX%8k4mWqlyttQ-f^?_H$JB!f#(5EIVkIYR`*QG{@hPamS>6^Gq8{{}#cJXZcz!J2BXf4z_xus` zXyG~#xFeT26CJHJEegF5)Po;+FD5T?`|1OK~z-PxX4^&Gz9b{a`ZeN3=SXHx(tx=Tcl< z)qf+^+s$Jvu6{iDC7T5MYaNq6wOM+faycOnO9~uB_`jpp%s0YdSXGbxlQd{GIHG{x z>{_;3bx4>1?XN`@lp>E=(G%ZO^VVyAcjoiv;j*=NbsVWF0gm;@?@~x>VCnw((7NhN zj9)#+1H&<3DC=A%_EPoVb z_V}C_|7%82=CdJXPc~1utr59v$gkmCz`O?wAn@LYra*&y!rHbXrBHW zl&?r@0}eW1it!#qzyFX%bonj$c7I6JG7;@>reR>U7StXUnwjAqZqepT+IjAO539X# z8YFibSdG}HQwE&V^>hkmUy5$z-PDI*V2FU$I;#|Y>U+|)W_S6_|Lk~L2#W{^xMx;< zh#vObC;*4>#9WjE0z!kAuSV>gecUw|{pz{LJCIr}F7* zX(*V}m?4lO{Us8S!^k2a@UrfB*N4`Rx@vT|;x+hNOAYAvApn?^p-o2m&()9GB{@X~ zVvH*HiC6JCs$GrkJ$`O0VJ+eQ3kboIZhqGb(mvS^fBt9h{7Z)Wy+mq=QmB3N={Y7z)g=N2lBnsFh-?6aDNCJZVR$q<`D1o`wQRwqWb%5jhZ- zzc8FUDr*3N_;UQa%Hq@aP-t z9Uj*lQdsQ%v&oL_#>-%x*6|@!A{mn6qz3;VScIL}JXrZ8J460@LtZHejjO27!A0J- zX7DS{$XN>Bs<`APrQdrugViC;&lG_TXP9gRmJ9|kdUk?FgOKPSSAUlF?_pAQF9%Lr zQ5T6z&_k!(Ex+WC!lH|As~ErBl%Lm+#7pi=>v`LTZElN{S9@i4b;T{!hx*um`mp<| z1H!t$+au@p1zVX0)DyA~Sy95zYtXL8r~jtmjg-jNN512(x4ws`*^eqwG_c|eA4+AJ zbd|ltl}_&dfx$kkMoZCFNp(won~n~+$-=3|vWWQrP1Em$FFOfi|8v6K2zzGFtmrA? znUxXWX&(eM;(rJ!!a2XV0o;)>oOp{0y4_<-eBj%HalMO?*tguU{oG;<$}p)mM)ibE ziVjsdapgL#n!Ia87z<@!bid}KHigXE|Joby&Opih>dbM*MPw_od3_cMFI%?c>iv}1j` z?t1o5MA*B9jr@3HZNKq4aF?Zg#o%saeUjVUqvIIY?N%EJ`qc;ixTR{_#6=20dh+L> zaRnh}is6!b>q9*O$cam_C70@b4=!D#`UD1zk^ z>?+QuWcYokFF>s$6xaD@ID|X2gp7N5ulVR%M`{fj30sD1Xake(Eo1J3Tt9nAer-hV ze);xosdaRSCkR@i>_pa)@bnqY-H_j>yNBFU*W(fy@7a*nqyQr z!LFq;?V$a}$ylcP@IB;di^AQNSA@l?0>-x<8K$xas)qb_2VsnAG|iQN@T6_ z#|ON*IPMYJ!YBDnq`rm8mheuOo?~BfQ{x(XvZ#>SLL+K>p z-IhoF)hpkM`+$#TT>P{Qk{~*95gG1PA>or2THj9yTzL{OS@!mQ3TTbL_qPAw+RSm) z<88iMLbT+WFv;S>kgn}Ka3XDC^)WcJSp9j#XW}bQ+%V$>LP1K;!2V>q-6(`FYxXWQ zkyIozbKLSt>8JWlwkavS!Z4PFB1hBWL;}+?*}v@gt$+ybM;(fbu`hAHiiMt^7q7U- zxzA|1?#lHNe5C8{H+*DHtnu#(&>*}OJ>9JoycQ4xI#OY5DN*Bnzr0M{q@;-K3Jn}O zUTrHyI}_cDexTHGMMx|1DE~}PL9Z@Rj7f(}{ z;~&g^q4}j?4}V=tvtuEZ=T8x?L^#%d{)g3>L-J2jDE!YK)or)s>mV4P4)r|?E;0du z$wC8tNYNwTMKy11qCxg4{LRJ3yXwtt>_livniF^iC&GdJUSUq;ibnE}iYRem?wbYFkh+^{EXk9uLI%cr z+gk}=Mb%8ri)ozM(4WrY0SdhD*9~5nt3(?-y&m@JNv=~-`759__pNT~%jh!`jisZn zCy~IlMCD9}v4H<-JN^2cO>^~w{So12JnO#CW73S2SPm?#%QITZeD~%_@lY%K{X_JN z5QO}&TPJFXUiq3IdJUlnQojc0Os3LUB$zr>H=kMWm@>S2u0+u#8XU!I>>triOEx5szm!&42K{jzntIy36E%_2)1(+ zZooB;-q(dd9{vL>3Eof;2#RG5#Xdh7@xRFPy&~$FMMXAVNTx~s3}BocgAXkXRhBqZ zofg;mC0~C}#@_QR_TWgU8Rq{vH!XG`$Kzod#*n}i+e{9KCw#pNS zKW*AwAm}*t+<2dGLtkvHA0+&?q-3$Z@Z*>F-laTm0W0B5Yav^z;Z(8g=u1~oYah+I zpjk>OhL*`;56NvLiV1pqWO)CQ(Lcez-Z;|W^S*}$luVnwlyN*^7$ zc2djZn3%mUO2COhSSKkty@e;z(By@~fQT$$W6D;~hv2o-B3KxcGkfo+@vo z9~+CKV(SPcH@8#Q7o7A#bRn0*m36A>5oZA*_!4XWQw7AY>qXE1OuA$I4|3nxx_h|7 z6MOUHf7}lt>&QX_EfTkrdbeUlz>6$5usL0^#t@*r?B}kMmmSa<^pdh{gjK*DZllVT z;##EcThxC6Z!E{G3!`3nYBql-z3y1PgqD9`-*|i(mCa+V`u-lLLp4@ zt|{`9gJdw1H`Y?a^Soo&o#VPsUdzje^7J2{Qp;&8t_{Gqa(j@_BE zc#N|~&tzb#V^8POuXlmZ>CoJQN2U;VO-R#(mduf?jqUDT)1dI-fW?WKT>@4Rd=xw! z+@Hko6RbEkP185k;#XOERfa zE2eHyVoXn-el@wcH8MmMq=Qq%?y$wD~0tX;%)UX5{Qup;Z;SVQbCEyl*>`yR>rtp_FS#QHffr1EscUk#VdK!uMf5 zyCI*)D#^oD;p{3j7){TE;Nb_G9pZkQZBlIwd;pI-ERmqPS0RQA*PlregKr=BfDm6% z4ZamFB+}6r$8GUH>+l-x9Vn5KHQj+Vsa+z&y>RHH55`!&Sd|=8+-kqiLHKZ3i|p#I z`=M3YlInxk2)MlLcLkQ4GA2jxzmx`Np6H!Y&P#De7S926lm(kFll+oMac_h`| z^^rxeU#6yfUTc_h#>3+;Oi~cOGBJZS>61~485)~Ee0M)w2mM%5x>oSvI}-53lyb>u zl2DA<0%~{|g%7j_RxztP?1pgF?=Gb_c~A1)v)_(t%O|wvr6k5n|8!xE*I@1jHgRD# zssR>ZBB0OV9JtwZDs|}&p|7)UG9De|M~l1~d6&-YU}DA|l-T8TG$bTRj18G=FL(6S zLF}X5CP;91f`Qi%0wDyWQNmCUs}(5kvrTj|h?SjSS+Ot#><%rOT~FS}M<>;ee%Y5y zTQli3{-HhdjUzVatiTH5J3!GT@|=+3m=dbsD3DMcrTQ_~NjU=t-gSX^wXAiI1Qpv; z>!8gf0R+B~jIV>FxV*p(M;knbtmkGnuf13_z`t8Ij$xZT8}v2BmSPfgP0r;fK5e@1 zHmwS`<-hyeM;oa@Cy{@H#?PA4#DMY{1fwcBhTpOYxkGo_(*Ir`wmTC`h!6h<$x&jaI*}ciq$G#dq$fq->%j`RWEGpjht-(2PXhPf znI0?WiEqPv9y1k{R94R1l%%IImBOcdoLR&M-%y}3HnVK|?nWxuh=1+C{u~h~&O3&u z1WQKzO<OOFGP~JQ7@FrAjj2*-O)=q6(e&^xR{O4 z6d*%!#n_uV;t}Ng9rr)c(gCEMuT#hI_yTB<>rE#re{IB#tMv^YfX4<N=~Kx{E?X zkK%j6Q}09>F>(27+;{0pZJ8Q``x!=RMIwqbvZDLhFuaCEALUT^R<!%5`4C1a z*FpU~L7{-E46*lC1Bqj;zdCz#j;4wTrw~$MJQD9Z%H|)dJK!iK#}=Gvu&_kluB(S{FoQYrc$des;q9_hO2#@I#qGMN|IGqY%S072GJ|F|(m}jaz zIDi>D#SZ(D0!P@l*vJgsMjRrvFhm%n3&o>&-u86@XeyNUv2KL(t$_+t?c>YIKfCW* z+7eT@B1RyB@3rK;ge!X@476mG2haUdkl|S2z+X1vfyZLAxL=QBq8t<{^(0jg7uiS!lH^zG|aas0)N@7#IWuc;$)H)*pGKdC%ii)$o#O z)&8f9CugTg@_&mklrE8qjT&@Gn6(~0|6A8hLgM2=52QO*Z{TDOBZz%h)5wURS7jo6 zyAyR<%YRg_ARwi3)HJllKtLczP68H43Z5T99zPLn?^pjTJ>wZSpviid*SwOs+lVgn zV9kBUBxu%PtM-sZ-9BWa`H`7@^C3Tf_kby#8ryGq1+AkiJCl=6xZOo44%+OG{pvdh z2V6yE1bsto{l6`WNP#)5fZ=_{cKH;ApKW&vebCeNd&j#J^(m+IRyrrwiew31{vxgI zsfU=2kk2Fex7Y&O{Ae9lUQ+MpW79-lmzIP;@SvUI0eGqRN*(rQ|Ge1f)kB1S9w4(_ zY)uv2SA}_n z(#lV+tNY!uHL=t=`HDkL+M+S{HZdm`%PFNB;~T>VQtioc0m)J_P<9I8*3hoJ!xyi; z9Xb4uG3tE^LF8mrt(EZRj38#;TdbssPngT(57M3)zIU8S?N9~4xvF~1_K6l2+IM`5 z{_!nNleVOnZI_H)#8bLeSEGqrdxG-e%0^pORF(uQSm=F+FQ?dh%`L5-P|3x6^eS(N zB}WL$7H&?%ifH|URBHwrT4AMGdFZ#%*GiP5m-yzu~*<~V&bUrR<;)u8xR+DTib$>L}#Y?n) z%fH%L*3Qp9LU+rmdyqLWrnhO!4km6bFh<8Z;-O^wS74^BF{<^-LigVHqg$RWtRkld6i6bxE(0rGj(wOrRr?pK;&+m0pCE7w;HMpi4fTAW_`DtvQ z!n(F=4SMm(fox7-Zqtp@b>phmW{)?>~NBFue9phn60(~TsT z5!7S;dzI&~>pgYPBw_}vruVO4xg76t1<`jscbm4VF}q8Jr}2Ex5(Rp3urISh!*9*$ zf1nCm(;35TSLO*53}Yaz=gLC^6O>~z{e$YQv+IY9P~m8SFpcp1hA8K%ysEauso~)x|>pm$n7Iw8T zsm@i}*hk{D!XV>=md1j6O9byE6hE{^q5JQuudN?%ee~1&<>o^6&T6JfE7PQj)p8HXN=Z7lJnNAotG?;FOBj{3 zO`%+qC-dL?ouOoZVd6#g&Z>tkirwB@*Co@R&P+W1v!pNe>!~t~{dbvKXGd^YF7@w+ zV72n8rhUHtyLbCF`?R7W2eNccx#c)QLq^O7NDWJUS#3G@;<{kgfvIvKZn=q;cR`2M zuO2PFz5&j14BHZA*P!%@n{=g&f55J8D8o0`5qf42bwoT_KpNGB>zlM{j4;eAcYBW8 z&(2#8wa4ZTjE6II&s6X4yk!z1@enwucE3HrE{Ze>Ele_m6n{Mn8p9CSmTlU(MKKX_ z&B|!_-wNVoJhw6Sy@$-%n$<_biX_B)Ydns@_0G)6_jQzsq3@~i#CZvF$@@s?PM&kJ zys+o>u>2@Lf_Z^r?KcS#LYbtc&e-D9Xsq!=yUMTK;dsiRR!BHS&po(@40>ulBdTQmq`sYr>(U`Vyd5)jEJj*5J~4$cG5HPmZEoJXJlrL9 z81`Ndtjg-X}9aIMPPbgR)`){_m$zW%gP$Mb1;euIG^*LGKy zHt^O*SaIv>{jN@y*ckPM60TgKb?ulEu62`Y7G{dq^z6TCZMjr%_X?dZWM0RfX}Iz zf0aNT@g6yqzu0ZQJbs>=0<+EWQ_W^vR^Hx+Ta5DK=7@yD`>rmFe%{r~%oO4x?73=e zwqE8_N+MwbN`Ia_d$_##+pt7Vd9Z(50iPJ8K+y+I3@4(k=rZJH0eV1M+EB)J`jNdY zbam0c#!C~_#hxw6#i7I&zEog*B_I00VqvQZR$ayX_?1OlGGj?l+|=0U`y_+1%0za( znI}J&o8;4N476C(NwE^2kQ5)k=C3z1!M}&Tv%UKj+7`4u3+KCJR*5Fycywf)*blR3 zyN@?n&Q39xuKMNUV3QkpXvCajO3y8XB_d?`&;I1lweT5xX*EO&Kuu2O$%CKqKD%<6 zyKfx!nqS6QB4Sp+R)gJhSp%AV0~&n;y?xap{ChjMw|6=UXvYTm<13n5wiX6nOM9_& z*1NBJI~jui(y}8DDbIptet#_X@_f{wAlO@DtjPk ztva!i*(UQD&gnEs1McZAY3n{ub??EL6-JhDsbLxePT=OS6~=Y#N2+pqnQ_-OR8IB~ z*}daEvZ<1V*!&l zbC@teSvdQJGm9Rp8+0CWPfG_LZp4v*Gb?GPaaC;Qj0&W8@s1F|+}Ydhd0jWK8V2>h zQLrFgA_CxiPdO4{U!Xl!rWUZ|LykkDm$=&BSaBCB)%C^2w;K-cJ({FsN!lseg}DHM zPfihwdKIW zpnv_Q4dgN(SG|4$tr`O|Z~IJOB+%7%(W{y5u{M3x8jvD0m)8OU7Ue3py|H)N@3W=U zQ!6bVFIWs($kO!IyRQ|bENNbS^`>17ab#gLx^(Gyi~Xd8OW_{&*UJ?;hp={jtRfY% zGyYbZGV8OhMB9UH!JSzsi7bnge028E^|MkxlTz^mC^5kaI$Nq>1N2$(ZHsbqi?i=? z>@`~Io?0R%Nwg{E9qztLPWb2FYMIyn#AY(E8!PQw1oZqt5M%t(XH*{vKbUsw#!W7R!Q}kOhBsm7h?3|jCUvD z>BrH9r4puo2uZ`D_*xbBHW-Ht=rIEM$i--ud>~TSjWBY-U~%rGA=#E${nFKW@h8)m zOjtk=EcM|<(>3Y^MkY)8>Q@@sPH~yldr$f7E>ege0&eL$diuBoh2-=le|2EtC$-uQ z7l}WdF?5bv4Um16SdRN9l=MO0nBrGCYpnKI^*rg5=97oXu1qtV<97srco)?kwudsG0t-> zF?iH{UpWV9CNK2>%5GCz+UcMq#^KBUo+YA3FNjp~&DKZQ*){*LOXNH4*g6v13Q46R z>NjHPTELk}Gv0MQ!O0})C6Lne*9aSC<9=wudorDY>zr*i5_Z$(V^d33-M=n4q>)F| znGNN_`p-K9a`G+1MgCK*9RANBC(44woEiwA{DAGJdEC+(x{Gh zV}mt33Zo8lZ~i{-PPnn|)O@5|-2-HgSRc7NJELIFMR{9A?5x&b2VJ; z;mkb0^U1PHOvxPO;^(pwJ-f02<67;diM(zy4>->;lM3yvqn2%4^D{jlB`0;Rvm@Ls zQJd#YT690Ecs4QGhYBj6KRv90!gDU)BGuT4vfYY{W1*ha=-=WFBMr#0RBTY#)zOct zud&*hbT*l*sHUgB`>#2GpsrO;kRVD}IeVdqZrNc9~@OkqEG2pRE5y;2PLN{-v zUzv~9^G(!Q_wiUIY5ON^srtJVzF)C_6)jBn7~Y)zd#J+Z*kjCTo{#v%8&7?d^n3Nc zegaaUP)K*^2P2~S0M**NpuHAtS{_+x@zm!WpN^}Tu0Giz>R7R*Y5J_{$shA2J*Ui; z2k6V!9-~^BISsuY0(Yoyet{Gn4fcQ?>WER~OO$5?--Z`n#=@advR$jubw6Ht?c!7i zX0X9AUqwxJ3O7zl8M;jQW?TJE=PBzAJ1q?;nHa)jFEAEqh;v4 zOriN*@^5~5SFMBUfw-17_228>BC|5x-GA>hSolb11s}OaN;buP$eOwikzQGTcxXIG zo@^qwmIu=Se)&p*>0E-9eJ3ht?O_;cGzmUg7I3~EiSiTT|Jvxad3RaS(YND|*Y`pR zQqiZkm|lzNAC~z#vvh5lZCT429^;*EQ5Uq{Walt<@pb7!Rgh0P{A670!{%u5=dFlx z2!enyX0!2vsQwn<>gcUT7%pRa~MN2(>cg9Iivgq=?Y4lGgJgVXnk#hJ@i_93-r9_ zX?^kK3_om97}T@WyW(z6>`igOuPVDuygHi2ua87Xjn$nqKPEM-`M8B=>*JmC^DZr) z8hh@gq!Ww!*kTF(-VI>Y5zoP90LnktxH--Bg z4Lo+H+({$42t0n><=W0LvU6f#pfiL&fljmcFhJ+Lti*GsPtQRr2HHqn7pub)TS3Ol zxNt2!W9KhBu(YUR*G1jl(Gx0WNZ10T0ftD;m_ayHf-sar+$99iJ+4$ta))1V*AXmh zM96Qjh_N3yuCuZh2^PwpnRf2k@ea3?sD?Hr26NV399K0e@BFSYD@1x-@x^HCi3eFs!`V`)W8=z0&2jF4Qin z;o--fvX<2Gpg!5Nz=DDP&(l>GPHm1|%)uS?ZRSs&B@PMRJ4CC(i@iYPAWpuLYG>f= zu2na%QZ-kD^PMYyzKVuB`I&UB4HX%rD5kjrdLwCP1VsTFLbc`ze6C4c<$Q=eF*3Yc z$vx$<{8v6Z8ozC1->Tx5Yj-g`%-}AWpgcCvCww3-mmZ(Aws+?e2E=2QoCO?Yqp-| z4K0Ubz!x(EgS#Y2-h^7}3YuH=NmrWXXt~ve95?*JthdsNkx8vERDHuc_%1d1aR1uJ z%T4!nW`$2we1RNdgr%ek{>9fi3Mn=psWa64QrVpsd8dLOT2T~}1XbuM~Q=}6= z30ED=2#?P|_tA;+yS*sYB!m;k7`ocksCp-@%?1yJ57);MVuZQa`yx~rs|tMknKZ2& zLzEdxOSp8$GLCy$6}BaadW8*6H6CaI((gbA)*!P<-n9n{_eiRlOyk)8pZ6UO;Zg@; z*7`A>Pb{h#_b}?FaL%{Kb<^GxQDEI&dMDOB>BOI(tzA?>0rO{_;26>^^Kti?(fwYS zW#Gm0v$w4`4ddaOtRp#$Y+PjQk*Iov@Y_Vc+{dZ zo4b21)+#DJhas{#ilKlgZRbqxTby`zyR zEx*9aU-w(TMeFEeEJ3xY2)=7qEHhEIt8DM;9iWL@{=bu`$)<_xX=MS^xb4=xn}LZ` z_T_g|FXDDw%GtvoH@kD{8wOxadb9hKv;Fl08IE($Il}_V`)Rcd#c4lnN`f*;lyi&H z%Y5$~Hk#^9Y%jM`iqZuW83){Vzq}H>x!p%D=uzJ+A^ewbZ8=oUgSn&GETeHrZ4YO) zZ`~%W!bF-+y}5R?m@RZ~vfXfGFXk+Ln&hPY405O_Ah5JbG?w@{WS^XdjE-gL!s*rH z+zm>bb_LHaP4LhN-?9e1&kw7;ipTBxSjMK*?_ER)z#a?5f4u zT2WWm38pQKYRvB%O!?S~Q+ZX&xkOS)J+yY`3IuE_SvVB$3e8v600j=*C zNa@M2`0(3pftMSY+v+mAmhJi>kGG3^;K?lA(qcqkuHD7M;F`R=rwSfS8C%Agy2o@) z9MJSE64ywHPZ&3@|D-+!djPwdH{5O`eo3EQuW(e-;unA>A|7XkQW?LnANohRBKPqT zX2?J}!88l?nI+Acc@f^cq6ysnsS0`)%JV7rb0UoP>EbE%E9E1b^>TK#a7|1}*;@ zu=c~lz6%TQ9dXL-nK}JI3k#qPfE@_g1VB~Ur~qr}p7U~n`(MS+m$h%5toP}k4OkSY zOj*z<-U$Ka&)KxUU+s;cq(PbO4t!UXf_zsD zUa3jF(z%Z5`p2_S&eie=A7}3P4On#_D6cbD(qAqJSD9Ysh%t#Y0hpf0F2ELqad~HY z#PdP!#*H$MT1@OxK@;XxL5C{s~XiF$%^-c+tGsYWgEqTd56rg@@jmoB6 zZX&LB;S9}}tpAht<~wnw*w05kOi${=dAbDuSm7Trsp5qk?*}xC(*EMb)dOG|v)@RQ zs~Uulx+LjH|F0$ng{u`ti22H5ff&j&FuOCvNO>?(c@n<{%M-&`_$6#rB1T zlz99w?5fb1z*lLrOcr$`(QEJpT;fXI7oi+=Wc)B!D9-#Xm3;6?ts7y(pA76FkxC4%v=gvA6$TjduK6t;W*Xm= z=&ulKc_q%yi?h!cf3|7yj=7=#=Y~JB%hhW_GI(fCKR9=Uh*eS^p{2n|(I2>EmD<~% zMt7`8M<)8S&}0+tvGaMs#j&;#rNJZs!OlcMlQ~O*IJKlXRFX^CkxF5-Po=055l6-W zI2O69{Mk~aenQLJdV{3c8Jy1RZ;|M7`=Qyb9jV`yJJD&|AjQW`Gq$6&{_redHnYh)IN9Q-Bei5}#bqQfOJ%qYzEbGFi;`&QFb64l2PQ!iK5 zQ(ofBVc*?ihmCWKQ;a<7<=oacLC8)CEBrlHd6W)|I%SZ`M@M!3{7d>Z#K^62k$koG z{(jn_u`B+eT%w0;V^AtY-GMFiFpDH-H3I08P}e$ADkuOBEM*R+Q;?vca5=!W8OpBeED)x4{a3<9*k6+dkcS?J`@+6ZF%q4p-j3(A@;lja_U5d zTOloM#1W(h|&8ghOJ5%tjJ|S*-;7G=Mb>O0#?vLquG80Y~ zo1c-IGsmAAs?Xm^+WD4C&o&sD!{V-TGgMktB7K_;1Z40!dAU}Q|43-lamoj47otxd zWw3W;4BWY9?fLmu z?SWO^Gv%VsY|uo_&v{a@{X7Ta;S1FYoweDzVBCHApuhBPidbf2YY0iEkzyZkgU;tb zioZR&p2+|{F*J+)M6}i;ovzQwSTBjrQ}N&?NU2RF^?zAoL?=zOJo-fhVtTl21EWdi zL;*9@dHo+E(@mdYdeM(nKKE!TV(C(P?X*!VDbMjUK_a2wjE*EcW4PtZ5}ODogDLNG z{b3)@QRZ`-ToPqXLUeT;qbql(+_@XkS>WZ(v7paMLzP0g^33!U%0nIVn!gcwX-0R> zWLayRi1b5x0jy8c(36a6B&6Cz?U$Ni@rTz?i3GGVG>SF#B?Ue&W0EqyVhDg3Z{koW zWwg?4h0>Z!j5^Tu-X&v5J2T(MIj?uF_+0S=Y;PH@!4guvEqX%-r|3 z2ZV=SpVQyl$Y+1Pk<^y5rC7xEO00P`Nvy&Km0{(8=CYy&6@;p`AIN5@g1Y!aeno2t zr~55`*~50E%;LTY3gfP>xh7_iSU2g7wmCajrz}zi>G9dwR4?i(HpfEwNjOmSBl+hX z7yncnn|@sm{QDmXa8~?}>EsjaN;zfLJz)ZhL@omZ!+hqYYIy^M#1@Yo9l@(#DB~~J zBdibvfe95L!w0WLB zUD8_8-PMA@278Dnq;7dlsmM{oy2F@LQfa)Lc0s;Y653}T!?XSj#ZMKFM6|X#B(=MI^v5uHQIh11j(ew*`c+sk z_{&`Q%P%U$52`pkV`~5;EzovYus-Db>%k^s+<*J$4NWN-UR_Xlx5QZRor~<*^-bdk zj1?DRW2c*}YktX~t!iecCBwzuWndHsYoIw50b)Ph!a)8hs5|xep8X^|INE)S$VF;x z8c06hM5u7LcNB)S$6F7*Vh=h7?Hv!7Tu(KzvEY}leRlf4&0`kzAm95?cA%#V_|W$K zkVU=|HQ_?>cFI%W2NzNji6my*@y>wjH?oI`- z9+%-y(zF^FS;sQoZ~6PjJ7e|ksE8!!sSDbPpAYYdgE6yz#@P}dm1P>PXRne3Nx8O; zZO>R9lHSkyyodT{EESpBKd3y~Y{ru+6~Hr5CgbGs7{OQY!(F#PG(yYu)D|kdzj~>S zF*Xku|5E25R-2$4wjqp6qSE&dJY4zNvSiwdh+cS%VKRwS2LiZ*Pv~E@;==!pdwyGk z*){ycMBi}iJm;k}PGzmj942>Vd>89aTiobY`vzMcZG)?Pcj=Y+0q`iE2Q8T>}- zLcaH+1Y;}+cA@%Y-lD#O1x#|TX)!;EaYe1i#LE<|0+ukAaZIitRb9H9+pY0zm0Yas zS@3+@1cHeC=%7$+0S7i=>*xWIx9z6OZAYS1yCkesv+@lD_gp?UG+&7Xu&Lz&OStG& zeXk8A!sNU%S8a?Z*8rkDel1+*&}AGO6*&SH!kUD71X2e!AznL9kta}YQs{nfJ|D{w ziZRAddep9*3a3ojDl^>PS=9cX0qm9@NWI;OR6Qdez!VPbO2$b?*LMBNQcn(%vZX>3Uqz6-*x5GsK{w)Lu(eXwW)ul65f-@$q@N(L0HXAoS++Z_^ z>o^V-9I9@bn!Wo$t6_U}(G=pFCVGRI=zzn(b7D?!tJlG`$n7SLkORH{oand6b44@l zX}xC>wC(wIUi99)Ub13~*n5tA-a-$(Qq;_w6yl!`iNo zKR1Ctugqks^XhYWKayZjbWFe@~}dCQaK%+S{^bvF|`3BsI?G-4RHU z=^U03fnz1H=%5#k1n+BQ%DZN6fgA9TXQ#^%#+k2v)usVOB=HUVSxHrcS@ME*FhZL?2gV*q7ek-*< z(*D+4z{Gi}a%~*J9*ML6I_@uw8}vS?+sk`meZAT=0bnQCApDL|4p-F?_mab!*rLYV z^wV5Nl-WV$g8QIGZ?q$G)jndWGdZmd5L>Xy9{%=7LSP(dS=497@=@Nb40knce6h%! z;*QezvlNwKNl8+AJ?Om}3l6z47Nl|dAL`9C@A~s)y7qkl8)*QkR4`i@y_byO zR_Ckc@TBMwD#RmSdkM?iosxP$?vjBL1AAmgvV#51-UK_F=n}4-16q6(Z+~c>a{Mea zI3S9yAzJH(A4Xk#JZ_|opfXMDb73H!UMI;8s@o6Bl)|h0Ij=)*A5PhvDeSWD9mm0M zdse<)o*W{QTPu39E;~-;06Bq8`Y!CE0#G5@+FJ@OS1={OGYN>yy z_G08Iq}S}@uJo#R7p*rdGV`JRWp|w+e%hL&35Gh;jhNU206 z6-q+C&m~B&t@e{d4UB#_4|Ms-R!8f%&*mogJ+9XB8Zk?H{Cc1xAv6+1WMaPw0q$&; z|49?K&4adm?vV^&UsuFz2Y`V)H*+0&)@2x)PItGej?g7CUPJCAxY?D$Hdgb!`1jIn zW^xi(ju$vn!qti^U3R=ghJICX1k;>b`m5(h_ZMOQhN`ctZeiYmTm!r=yzcC?k4}8z zk7>Lpi2eU)`s%1Czo=_s2!C{kJ! zP(uyOd=KyUzH6}-|1iVz+&K4~efHkB}0rt=d0qKUIa1y2O0ne{Lcp(%TRWJsXn?>=sn zvZsf^wH}}?hcP`Ud9;-NBTaxdoaDhsFHAd$^huCYzV z)}z#FW+<%mu0zB>>gODjs>1*QH>qmJ^x{K9rgbmdjQ`2h(nT2`=|9T~(*cu8*x@0N zr#8OrPmoLv?YwYJ=UL2VU@vv*zI-Yu(ID0D-6{Z{^c?~Ov`bRY(UNJFr+M1%ICURD zMCzJnpK5pR^9oO!%2jp=*HkiiQJ67SXQz)O$Bj;5BK50C&HP3exwqZ?@vY9Uc))es zwuZcHn%V$nH+S`~ss8T0^Hb->lUf0us&~or?*ZsPS5S7-*`OZyQfsvZa1BPa={;Qu z?XV{2z~!G>Q+eB$fX)~c&5hPx+v9|nk8u4vXArbfTdu1OK?rfEt)7$`7uYQULH)3kB{ zm#i-nrR9y56`SEEkhT6&K0=%qc@((q3Bh2;V#lP@TV!<^7;T1C)VG{&I~NPsy)0 zVGWs4ye39oI}!8f@bOWHQrcZv;k^c z41{SAfJ9dKq8#?}1ha+U`MKy9em$W<9>e-OQm20z+;)^od5yJne-WpJJp&7-*a5-o zr&C89x26w4cHphUhFCr8c#Q7t0dKzdAM7WDulgGuZEoiCw!5v+zHUc9GB0V-Zi2{n ze#8^|icy0wgO(K)K&lU8!pLfi=IytIuJSvCyeLl-)X>P>UQTNI*SW(tuF^rxcHhC^ z(Z7FmT4D9!(}H#^rt1=;97bqOnt<)tQQYeX#H|)p+@M#1r&U0ExQdx$Ynzp|4O<~9 z_z}4jbCFMzWib?qW?19xUJQ2qR#FhRkR|bYbMxJ8yTPO%ESzxq)yBwvI#7MH`X;~P zwm1bkL7gR?x%S_x=luR|n8{l!*$hF%g+_jOcjbASUE}^1kYm{V;Qj8sGqDN-e|gr6 z%hG}t^z68~zNRKs!i%2+cT>S6m?k3?$@~9--BwHARX+t^<-V9?#tQ9bGpF1;v@a-j z2@_jRJ+Jo^v{zpi89qx(h(JN^^NasKz`?BF^z zXt5#fhVK{=91Rl5K|SKZe?%`Vxu4DwlyZ4F(Ps0Q0nGqI*G}0#rThJMnr-R07Q$3R zG&s_Fp#7e#1@9--vlpS6SsC7#5PW;>+FXbxIZt%+?WSFF&W&e3-e>#)wpOcCxG4{6 zfSrYK{_3Z9&DEl5C=M&^e`dn_7r+CHj@#>4y`|T`o0VWC92{V;5j}|B#Bfp+mF~Hg zCHaH)k1Ll6WTRHnBQ(Fz8o`vdwk-o@QBaL$^ zCTA5<#q4*Jsz-!`g1w=M;d#EycrwRkYy-{zeHh2=#FLyI`O4^&5P8IwmUS017%;s2 zT5!0%R5caDwPf*MIuO@r>&}+Wn{QTEReTl|Cs{bg!o4sFu+H=eM&{rb6h@zax%#Y_ z-bLg(K_it70QGV8TOuQ*jM@5aQ{I0tP=m2v`QfT5DJdIoT}MXUEKn78DlI|WD#{Z< zk)tCE?qM1t%D}c;NGH$2T$19TK|{WkV!iv`2hkt}E%^_NI|Z(?n^1`L?2qs z`9hxN3S&%5@U^H><8G-C;9a7-{{WS+C=Ulkd8?Ryfxhya$wfWtAH~NiUqA%0y2Q5SnT=6#)yuJfui~EX%PDLzuLI~v6hId4 z;2=0Q2yY4PSs2glI}w3|jnW-`?US)kUU3Y5jD+lMy*Ta?ZTkU~D1#j=_}z@-=V1Jk z?yD2`UTf!*@<1nM8H5daM6u;}(3sqtElt@P<~BLs|uKU0iCPBu}$ z3#CP>WWBk)fxd7%g;zbiZa|-7UEcfKp-n^A+bBcQ#5hgT-)TQ8AQHr&4~l|>wCe8q zP#^Kbs;2(;;rK=T}zfL$q1g!gDDw}!`SNNk!+&P(T~i^T=2p%V@_)^ zWam{SPe5PHiPyo01~ykfFsL&>`}u3#1r?v=>Q!e$X=7fYA*FuB(5MC>t#dM8%=w;02VC51X%pNQ?bw383tAWa@C6J z>C?Xak5>abiSchpVJ(SqB>}1B5QyCAz3#4lP^9IU3+QBg``xQ1tVngiX&9%%7F@gd z&<2K5UV9`xW@zjqn^rYi$NVha5KmIjyt~sqNsk7KD)@b@@ zM-<)COEJ_UUt9pZcno0SG^J*3%UMI>LTGdUee7k~8ch8uZ0fW9FWJaBj`zRL@xATK`f>zgE$s(z!x+3K%*o<^N7H?^+6R&74VnjtBv znJ=$F=f-FurIob;h|)d6Dkxw`OyOA_J`lIR(^U)#y`@Guv?ABLC4yYP&8*vE+Dt

(aE^|!0j-ALRg>h`D0U975F6Uwi)UeUGM=st~++gFTI_v zxa+da&|>4em`GjqHs`S~N-cLS)#jU;kT;UfFQK;6(&QM1QpGEa0~OT)A)!oXYkvgl zu@>AT5#3h7+!%uOL-L&RTg*C9Op5X_VQgTNKjJ#Mb)vanOn>J1dGSN+ve#qZuX=u` znziMrK=r;Vhjg9TMFSLNlDc;>5VEBI>Nr9q*%|gW*ZBOyf|1OxT0Kn+F6N=u>PwB# zb&>XnxZcGYmeL{DpdicVwTYHatl%m60UCU;+jz4kG=CNQnlVu;?H9yIG2Q0fX{&b< z8u6l{1g~5pdh=M!kP;xxzBTEj!GoZl{JSy?vJ(qCc&;GN#f^W$Q_|>yiI;a{@o_jE z_$z(%=WfY}71IaG;o*wQix!EQPRqt~dP?``)wd%8#baXfg=!xZxnB^aa{A(FFKwDc z&3Zx$x8DA?vGY&5Fp*(9I;aR-sfS#WNA#mKqw%nO5X5NzguCL$#1jyhtTZnuUi3xAaT@8!MFP#SJV@s)1?lzjt%Qf7!}T1&O?N-p#QGr__luq<)=s>_TY+^|LH(RtubsQD z0@iWQ>AXl~np*y_rK~H>1naJ=T>RjqrsO{%!Ftv(YXrUH%CA8snSn}&S@PdxP@7yQ z;AQ{A3)C4C{sF0aB@aslHq!gC5%M(ySyih4{93Ji$M({B9Z_?;Cut6YNWa>jD~Kcl%gUBpVKDp@&Nkr`Q2P+7U#z3uR>JBSQDxzVxia5 z+%1To34*OQ-02cqY4+8?00-(ljBpGm2Fqm8((+Qr4va6qxvFIIt#3)`ZC<~CL*N;A zqyMRip%j~QF;%4cQHTTx^GnjF`61Kl08T&jfJ66iUl;Ji;N_BK$gY@Q$0-$0zzu=Uk6-{T=E3T86W}1X3c( zzWB6TKJesr9ihmR`Q~tLGZfoP^wF%myWM8xM<>hd*ZKre*_@46P=>oo!7RTulwJ$H zi(9;f?F=;3qxlW^jAYNp84QNVcqagDny7A4J;S>;D_E@4$}cLobnZnpNaXq~_3bgJ zGWBOuu-RuSgH8bWby^4!)8oi@pmdL8^_Hp43DrHv15heeOpK)Gn=k=$7)pAL(wv&= z&yGrOVs@Z6W+gK^*?eD{)>;2$+{&*+N5`Doe1(eZ@ut7^{(Jz86YW=^Aio8x%%@&~RL|oT zV5NqxVIllu!n-4V@V&wZZqh^K{F3`Ih(EM2ZDMMww^bx(WTw2jcjSk58%t59pJY`| zjP7{^2iRNr;cYhn7o=>Ls|0L3OgbtKR0N$0)D^Kio`2Oi8r#Qep*<>?p1JP(#cpiF zpfgfo{Knu+C|vZ1V`B)QLB_TPy$vhjj4?eS1Ug1Obx*mg=F9E7nAtctU6oh+dEedN z)GPm(nu)Z8xhA$j+H+F=i7#`IwIBf#vHj=4K&k2Wt-ANqe2=HhHRruuV9L(jyu8($ zc6y4mMM32zVu7pE1j{b;XFMp)JOLF)%~L=rl*W?T&S;)@)gFF>KGQ5*R1{zSA+co( zd<-xO{f>ro{&~|S(KYpE!HBsA_=olwRQq76-0v}iWB=Q6;XhG~7HS{M>u{%CZVi_? zLXy&3g!!%PQ!m%DusmieLI>ixUeDW2&e_pHZPMOgSAx6;-G$x_I@O=+e2O41X}mxF zflF63xe$Q*{k7rUZ8e|e#n(f8Byu>g>MNGHN6$N^(}BE65eNN}?5T7uYi$4DBP&bL z0uKNZbek2=6XyYYmj$d=wTGdIIA^XTt|l6M2W_(vnJ%x{BMwc zxt!^AJ=I_xY zYaZrU_8!e|&HI1Ephj9tI&yfjx|eHy9OpN`Ha8@lToC^q%q)}EVS2M+NmH6j&efDb zBhwTm>_BH0Kp|J~#o*YRdny?R(?XMkS_vfO8SWS#msHkVzB1K!6)lM;bGDvhk4~k&^>*?(juPru9Q-KEGc3Mbu_)O4 zE7RkgI-LnEnclwT+c)+d@Kxd(cMD9}-%R&nA0$U`R?$ zfKtq@X_6Ci2=Yk?|3~xuTce9~TtNC;v!6jOE1=*JsTcYlK4kg7pkDFdiUJx~h^iIy5}_F_sc ze*luK&QHU_U*aq7k%RA}hnLX>K{VRI%MgHKCu)lr7%zkud&W*%hWuReEhqN|08*a7&u)KytAP zWcuY~|15!mWnn{VPs$vp19|)!-GijyTM1nW$j~usW!G^?@%>8G)5SmWmpO|8JH+_6 zG~AcFH^Z#=M1h84lnwwDf6UGniB<9!Uj0a`KwZ#?-65*GryOVJ`P($r1=xLAPjm!L z_FKTq=P=yt}2R_~yHNdmvx*6Zm{RL@!e0hUKy z)T50X_j!2Nipr;zrQy6ew-|2oQXH_369QRPPB zzYFc*NnP)w?8K;P8x;H|{3iapB@quo^^(}m^v37c&XWH^nX>#|{*%qiLnzVVldK^a zDhcE{(#S5fJnAww10Y+I3(*5Em@!R zse_aofU{Wpta^#a(vu{>CXs#%32gfo}K@_V*Y$+-`T&-zEBIZBdYJq66ayVoPgiHRu_G?QO68241tapSX$W+D>tYJoP@ zR%=sdQz?!XH9^JX`L8<50mxBf+|q5ZrU0CPxrh(%&`~PrGH0u-TMUMJVczf`RAQN1$bpK?iKa&4+G~Yz+tbtW z-qDG7Tg-Z<9mRtGv~gexl|f#kNo9Sgp<7_9V~?EZ$J8F`3w|C&IHIO~f4kcX`urms z@!b*_2^e{@*S0Fxmoef#(ou>oCj6eo&c6igl>nwi)S1Xk!201o8s6XM{BIJ__UXUb@+6kfSfVRi&<^J)(dWU-6l-{GRS2Vjyp zCq_F>OsF1UMoT)Hg(JG6s?z9WwV43K{cMM-_S4W&R(qqDzI`y4mGtPl1OY4q^@}S_r`Fm zKXdMI$#`51e4Vcx!XhnW3vW^QF&gxmBma;wH_q57*KaeUt8Wg@_Z#o_^v46*|9Wy= zAfyNLGT_Pt&}^DXs)$PokSA#jGHQ}bssPN3qhr>u!pd6J0*!9MO+X&_4)tr+Wnaf^ z@Y5=aY=4H8hcJ5O(&8)o=ZLngO2WfKtGhdy+Vw@5 z{*jt78M8RcDmVNz?*E>Gbv`KaXv^8|z?d*+wR4bg`$i4FtGj;gD$8MS$SdbcxdSn| zf!)Uv0^A2=)^uuS_uw5F#3O~p0_Czpuwc%vuWLb&1RyVTCXq8Ef!a9UZu`Ew*_d_R z*GbsyPY6ukxs6*C#26aE%EAQj!52H|;Y~yTC3gTDJh{|MrXp{iaw{2l)fl+xx8yTD zO&Z=eosmoRcEqU4^Gdl54W0)49F%cd{P20OZ_Bz5|Bcu`dsJYCWJ1jj+anO9joR(T z?qD8#fMXzt1SVnrFrIJqL+hEQe4_*3-mpT40+|Jb4`|#0I;7M?^d{x=fFXhwMENQ! z^W#NRBzT+(KXa!zo(f2rLAH$N=76OSSBBgUt_63|{Os$%zt0FE$9_NSD!5#ugDhcn z6*+gr9&?`e|SHnw@Opa5-zZ1ij29+iRX_NntuG)+f5@9uk9>Aztt9QF9(ox@yL ztOT#mo__E2A<@sd)c6=flN6_^3+D*J9Hl-Dxv980%4pg4rrD6I=@7NGGr_H?`=95s zx8>1hg*m~P+K|0Lry5Oo-aLeK%#Szw-2+D|6hjN6CCqL6me*8=aA2CFCoE znYdiSHE=7C+s<_8jrpx}TRG#7Ul0)H%^Yogf>`u3K8S^Ym`J&Ca!91dqwyD#<59cg zJqMlu50UD*-zB#pa-MH$q4`k^SaLL#i2n^8r2%#^oto*T>w56xNmZ)qn1NMT7O)<1@$`Pf*d>WE_DG zz`Z};`Kvm~rAxo^)_2xh(wi8G+BGRV7U=Tvo}Ls|C_MDx4#oh~tLByn`YOMBm3KGE zB6ZtWkl!1ngSht3a-E8o@OTJ&SiTB(cftc6H{hHD4eJ9N%q@-bv*2#YtM;R3Q0^KS`pXrx+|<Did5>m_(@ONT z<(a;AI8MgWFb^T?Fd&fTPw%)%v#zvF(>@}=l}qNIiQKw4caddgl7I?a=iWL?aiFB#Thjm6-^gZ0|Ic@ z1n_cu)HiAaE_`#_2}d%Xuj7qV(i(N2!ZegHiVfe7eF6+8g>f!ibH`kqzP-OB+RKX$y8sd2sk+?abNFbP=GRz~Z| zyabFy^Z(R|bcD>4K==Uw>0?2px(W1Y=Ht@}qu6Sr-iB&Fn%VZt+`hL#AK&${T@{~s ziyxLgF+4llRE~&XCEWAK3FH!a;#j19@sbt|^grX`JX=+ctuXGpdxym0<1qnGOW-tT z-1)!KjRZqnLOHz+*Pwmh`c{M_2{fIx_S1+mnIwV#dJV5;>w1@l3e7#IL6%iKaw5sD zsgvIscqX~KgBFV!&U42qn0*%!{yhX^N*#&61kfL1jYy=D0UD`(Z2<;G3te2&Ta^D$ zM6|a@Bj9qJvx5mkow`-&99oCU%L5f87yb~YD`#JW7~`hRHu`b3naat4+6ROX{$%tU z%g`4@v$@-FA4VYb_05~)0>N*&ELQBZk&h5Pt@%9(q{n7l6#AV2U3brx9L-C*%}fbu zmN*UZJ@Pv6=}1lA516hq{M&Y%j3)6*wm4 zV5TAf#NN?86~s2tLVgJot=Z8rE3Ea6toYb=00X(k&Gf%HLj0f+1XdiVRNwU#S(fjT z>v-8{cJCZu3U+x!VR&^@O%nrAn#Y)u_bbf0A1s*P6dRaas7qt1(tAFbf`b|NoovSc zAV%RBI@ZXSpSdVWB!d4teO~ijMSKhgk)v)&&wZwO@NqG|*c6_F~m$~OH zAe&ye_a68t3^b)Ln7#1TOm8fC;$xy3fN9jmgxUZK#=^%Aes7@C#u73*Hio2Nm%_FxPy(zNXdADtB9Y z#PG$*Wc>CDlKk_$N#{4Edk$dgneNU!jYYaoI+~*({w>zu4%SI>!ou=Bv<&T=PPSIj za`#_8T8d^eRkD0Y9hV;QAyX`|8{0{!YNUB6Xvvnm|C=7|zPA87RZ8 ziDH>=TnFPP7Uw#xGoJBqqsmoJnxaR#V;B(%;{o&lZPp%;2jVZx%IeEQB`iou?@zV$ z?_qZv2TNnN2n9;_T)Z^*JawQv$pz{pWxFt0TuCyYz#A{6aa76M-(S!uo~Fvq;BThA zTtb*X`JX<1T+(RHG;9iyL?{rj3^&otlarN^3j(4WfXfgp=XAHm-U9msf42NGHXKt| zh@$&f&7Q$jtfWfxq29Jv^s0qMyE&7ZsV_rA`1xQzd-Rn-Sj%f#z&nfnCFDrGf6pEl z0~oDX%dzv{XP<~Rz>HeCP*v+M0)lw@ZwW&fQvmf8Y29UrOfu?}{Pw`JZmjsfm3TkE zI-DR6MY$unu?HAvO}5L)bBzG*4I{CD5zGwqM);vqo*WlTBhlyU8B&2UKgjW#29*X> z=(VC;FKF{gof`&I3a2=?(x%3CG9QL~ZH_%DE;b#(B)(jC4B#+bc{AIyHJ9kICy}qt z#_YaXcmDu9Y`~0w#oeIO4h%D~4T&9erIkZ}G-xDRB04TgM*FzyG@#$9nGAm1$0a1t z01O>tN$nN+gBAl&7DeCaO*?UrlFb{@fx5rHbS6F=yQ81&*p~81UV|D~zFmG!oRRRR zW~Y~VeZwkm^ugKW;p}3YS&p9m2y&IonqD)~2k~*GKARy6wvYv)bhSZOSSPkYVnTwI zer{RAwwP~$#^)*VFOUm0HVy|`k17@6=&}L7Au%n}u_$?Kk;xbh>nlOQ;b7A>dzPZt z)e4$`a?kK;RxR_oH*f!wkaB%IoY>J0*BAFgfBvpaC?J|1NTJLh%S{JN4BJu(?3SW- zM%N$0;(VGNs zb$?3K{5d3&8Wu-Md8kvatEi&yiEYO>^GH6#+xZq%6~C!Zg(`-guD<_03TY|C$MAsR ztI7)OiqY@!?!KD7v4|QW{i+aiqzGfmG}?jTVVGgF1;sB#90EPsLC}Qct{vbOKlN2u zmj7=d*Jf>2QhclcGPA(&>>z_uLT}*)U`^?mGTT`w3po>)%bakA1P7)AOaY&j8=Qh& zF}ceAwIn62yn3aiA?UUvvRA=T3Xb)WU}ws(F%#%O^xpyM!B8cspoKeMz~OlD9Gu-V zVqUyFVi^SB*<-a!mksb2ZhZ}5q4#NJ=jKKllT$2h8}$8E7P1i z(q`^g?3wco+e@YA`}|M%fZ2#>KvP5DOxQ=HIz4b)D}PptArig5cx8Yxn-yr7*cHI?^CN*O(wb&#JyQ z5+lkac1}cJ%-o^p0L4E`<*A`1d{WUuBgFz!yL0qC)I`4uu+f(A{x{CCBR#yoHa!3q z%mN~I+XG1kgAqzkr|=AVG)qHj>MynlU|vtlhjwHz=C4K1na*7jji6Nzf2cQHGDsfw~f%?*NYzo)@5ZZoJpXzKWCh+ zmyPVso9vjzp8#P+0^rKLm!(4w5ZqMx)Ojl z>@Y2=Yn2Rr>HU+QD1?g&4X`$BQ(6-Ip1Lz%m2NneX`>aa#a#zJKYnPkl>@r%{wkxW z>5cq}eJ9)Pq;kMKs56v=Isc-y7X;;fCsdSr*nC9p8~w0p`6mLJfKF~zV*&g1hNEbuWxL!z7!a;a7^w< zn&&JI4KV%HL*Mu&<33)z`vCcRyhrpzfCrlE;q2J@*=|R)T0C%{Mc2+Tz|yCo>)blq zKoW+W=?8Bh5kiZBy5F)}>hBn<3mVN$$wta1uG0X+jCvZEQKMDM#akkU8I|2Sj0NGu zKwMyPJq4_?9~M{Kh$FteXCqN!OZ_$;Wo2$^FZnB89 z$6C`_vVgI*U-ZST56to9-I`s+=kW;OtWr)}T~=85m7jME7+8J2G>K0TscrK+RHc*6 zd^gxe@$Vzx`=({`GjXRCQE~svp!qV6-F3c;aa@nRJ*y!PMgAJn9BI9|112SwM6{M@h(K(9yC?BR?*U2G(Z*&Om`PTww!%Y?>Mn;-T;o`iD!LJKGw+8Tl*~K%@hBpzrU1sCDg|Gv%-y2^)C?6 z1Cn0%1z5DDA~9s= zN-2n*NATEK9`nXlb|$@%xe@+*Bxfsg#DSX-$N~i7#2&omyqYGvGc}*&S4QZ*)*^hz zmN_&3rTS)si44p9&+rH94wZp=OrGHn(>XmXI}6o0qahK@Z_sPzC4$EvVW{V8p|&%B z0ZMMxD>@*A$r)kP;N&cvHe#5dy`BYh-AY-7282}>p2t8kdGb@^;_A1G#tY!z?xSBl zDt1x@JQFnQH|`+muDwX<{uu(a_E98!=fY7_5CFwGUlX&G_VqcTI!-<7WBnZoor`|g z+r2eu4*FKogSLZrZXPucg(jfKva(E?9Hz^kT{$_%y7m-jk$;9Kf|Oqogqgl#`TkTE zt8k)Mjeu8oN?jd}`}oQU@%+&hGu@NR_qYpSowuE!tO%>#BQRny{kb5B-p<9>(Sw}ud|vC1JAw8E?>WFN4{RVuISphEdg93;b=a^s%yH@Q4@hatVUAL{#UoA znT|>Uf6wz&UH8eCJbG#Bj)P3T7IKz}4vkU+IN{;b8#^|9Et;eRJNIXm*X92#iZL;Y zh-FgrnggC|bv8LmFC|B*92s;D=xTdNLHUVyq(P>sd91@(6#t(Q zDGNP=`Ncq&`Js}`p zJA%jJ>s}7Lavgp023dROtA(BJ-YZYAWJEqYy)-xoGf*je@^!2#?IX5TEVkE<6mgKu z-6G_#o^zs?>blGw3?eD5am?^Px{e0v5 zTeQ+yxhce4o`0rh&sVdc*^RSmW$&9;V~FVYIY+lC5)>c2XJjsGG%Zy-A`2HIRXkR{ z&^%T}eruqct2=3P=w%eemX6tXBmCN9C&310Hhh=357b>JbgBBh}pKsY#+RF;iM-NH@1CL$|L%W&B40M={VE=PwVMs*75zL@L)U*w8M##iYyk@K5YkF0Se?g!{gFcV*#d1|BW#6I#W> zPt17>?X2{OO{G~J5YTrYv$LTTjziTJn3^zUvKQ1?hVJW!sUkv62kcQ z54dtofdw}ZKL=DO>$DEpWzfk(i$4ptH5Z5|Z9SK(ooQ-S4Zlf%0O@J@U6_i2zmmx2 z_^YcNcig|pI1_RMdjHnh%(0jL3GM#|o$iTFeq7%G88|1tq%TC^k`Dw9i2o;G0SaF2 zxs=!&GZ=@5;mib+cCTSS7TmpmAMMZw+9o%Vxxx87CLQ{WFR)6Jd)04u@lnW8;$}ywN&PE_w(SPpo1olA4fVIuUc#Z8KB$35Ssb)&1)CeSi>yfSQ7=<=Sk%B}hHyHpoZj+u3udIFuUWj4&3`3^ zkNcCib>3jpXE%{wda;f^y*gssWN@X_Zn?B|YC9vzaa+I1O|%e58qGap2-Q{+%C+J4 zq_s|S%#D=9Fw}tBp%q-ZFRT4y&bEXQ9AVAaSQsI zJ-afh8|oQp6a}1GfgfE>aoF?Kze|mw3vo>^JQs8SIlmvCbFR*>wV>Gl{Zu8H^wPsB z8b?{18Gn$w!?)V~lJ;(ct8J{sHpRn#2~S>4Aw)I&?1zm%kV6-uj+rt-fHiu!MkR|BPt0W)m*p>6KookZz&~L{3Vd4At6ri=RDxG+{o)o6h zVv;}xa=c*73^aJwC{*Zctm)n@A?Am zjb&$pW^4$c1k+m4X&PUkj#L$0GYbXDkK%+25o~|+aR{YhWOJ5eANu^pa()z;yu=iq z-|`(hzAFp;Is1!aF}zc4UEGS}xskl7NXCxUdhw6LC!P!~o{04WLxY5O|Rv25cQ)^s*Yn+hxF&iDzv#1h$^{j8& zYh!id#lp4 zR{qqo-@8Lfq~e!XTXXu;KY^y}WIB_suC>2E=e(D>d)5oD5bS#QhuhHh)V-+w#Jz-l zeOEiqi$uQcN$$f)s>ceHMOK8~!A>?9`e|nZju#6Ty{;+eiN!T}r#yG0HXmI;uVkO9 z!0YOZ{#CTi@aZUpxA7^%&!|aR-rV~_$ndeb2AE!N&sov>-xUEH(&nP1%X055?**!y z`-9W6+=O1Am!AL5TW)Ddf*i-D)i74J|9T#M=vdc5*2^kd{CRb&;m0p!2USE|Q0$8# z38Q1E&AGSz?zpoTyF6Y(iYd-VEk}l45i^?M+zg>D<2?uuij5;kfDv2?$gj*R%y zgB#YdoH|>PznddS=kr@3HNi;EcT|9qhOc?ijI}b;$0v0k@i?>nQjx8?GpWCo=%0vV zaf{94F)>Ho?l9`d3R+wi1xLcl+GbbZroS?d=deoKgQKcLYjzl`t^Nu^*A7WXJOVO@ z>olkuwaiay6U?tfIyD#UNht|hX3I|4Wy8v%1a=^s5l^d84!`dDDc5$@6UKJ5GNP32 zV^z-R6SbAVL>L^Nd*QMaJ|Gv#&fGVPG7it*)B^p>E)-*&#HvwpCkFh$ny}65# zIfDCb=C)T5C-@0R(V3u$TpkZ?VlfM8>M-FuH|c=g+|gfl(n+~yC~6>d27F!g);8qd zqcOX(t4&Gc=w7Jkh01AvZ}5v0`lMylo&&|pRX|*%&^GV&=xP|gwm`A0%dRe?e#}&{ z7CX0u?t20wbMTq1ss-AgUfCQ)|L6Bp!x-L-M*zt4DV;clm!nVY-IML-1N1vv=QDj3T}O>E|jne$#51hw5wf7`RNXWF5PCy(il;;g+n2e*k+&c@Ao|e@cqY zn^y*|li1_X+}A&|aLDhL_Q|@Nf-EmHwGT-DVgvyZiq=YAzA#vYg87toBD*WMzHwk`QM^)qRa(;3Zi6_ka_3SZhFfdzo>Nm`hL;&p?l%bwD~ai8cYBfdPXE-8;>kUU{h&nfMPRO|?9o{S+bIX!vxmYBFGEKX4s_!se_tQkhuxY?3)V@B~hJ z0A1vx?Yv_b68ZGK#XZu;2OtJ@YMIlLr$*Ov!Z#+Rc+s$znXeI8o)}ijYz`i|o?H$q z2)18Pr>7eJMBz{3YS+S05xJV<^LG5G#d3kSb`0(`PblT>S305ZH?4T~_7Uz;mv-jz z*DX^H3f2TCMpC%n{(biZnZ8dOO8Wzz>5yecamX%~d`vFR8*Xe6hO z$a4HogVy?q?5MP?%dL(r_7NOBOXR_F3%RZ(DnJ z%O{psrK9zeVPk)L9Y zQ)&|e6@3lHEHyiMEAr!FcDFdYNh?HbCR%*{GZb@xI#a7{UEk3__zEM)HH3gy{f$5X zf=CF8R#%k^iZow<DGzq?f&G`KEQVgGqXwin8$N3g9#;Q$Lm6xEy0<^C9yFb z=6!dKmqxv{ex!de3Vkyu^GVmgVcj>wR2?yA6~82;S)^;1Z8RZjM(=s*o~QayU|v?j zE%w?B%vBZgg9BB|(*@B{881$1BDADV4MRR|KZnGXi$p5*(;@+vFJLXlntAe$jxI*A z_u~)ig;a4_c+(^o`ceBZdN6Q{7^xYj{O7Q8Pfaa_{G%k_)`e{mfp- zxjag{A4J}P6(x{LppabdY>qtkb{UCczn4$3HkZ=OtyfuPX4RC& zR-xwo<80{@vSj1j@Nplkdm5=dC%wJ*1uE`SFWIWwl9IRsdj>Tj3RZ_Nm2oOqOZ7Q; zO^;%*i-}bVpHy|_ve7Zx^c|Y^pBZ$4TsLUYN-BzT>ffwR^JKE$n<1Zn=tzRFGi=7- zm4qku@9+vaw^NCofrprJXBH|CGR+4^csaStF&Q&s<;qbPe^K zzYptlkM`lX*Y8AackYA;DCr5zWw|4y?D8~b#q9Wjdm3&Wo7)pG3*&8Tm3(Zsg62;>$g|0Dx13)^2CGSzVw(4@6a~IxEV`**{i3n-WhtjVz z{$UQT(+qUFtfWr=fh@{i&8_YdWEV#{kBg-2$mmGAR1L?c+=O#>KI!SvZ6vEnBd-K_ z11HDrG#bCfd178=YcJn#WSw(RxOVJw&HOW~FgTSAt8^Qu6V;IAkmMGLW{ju4WfI zqQ|5Fx9Fvmb3u)dg;(d@-uw+(r{DONPds6WlU=Lp6K}Du4+VJfS6zKP~avV#V!zE%2zI`)~PJ+4dNf7U4;8oX%KVUdAIOx z%GbtIIzTC+osU{^9ILo;E7B#l^{OXRr?fcfyZhKwX)`O*HGW-PRp^B@{<`R8{+~jK zB_=>#rFK#YaS)2H$VGL~h4NA*>8raB5XUx9Qje6N+wu6(wHbBW6nQ0H%W-qi=Xs|t zEa*ToM^phm;%!-o`)q0hjyh&V1Q7eZ!4>`%Y?=vxh1#*rZR3QE5{8J_-@X=uj zdgFY*YfloF*_*S-N?(hX!F&%XV|jMqfR7!cM$AHC(jCV7p*-B7j{!L|%MbrcqOfs2 z=zQgk5sME>?@^M8twbZ}0D#hwResW+KL>_a0f^r$~ z6-i5pA7BPe_jPIiAd>fw?n1O71SK+GuOi8w$lT%pK_eP~T(UmN*>O{a{6C`JGAzpP z3l|=`1qA5^5kyM5Ly!(p0SQTIL8N}<5F#DYjY^3~clRLDT@q45cQbJ||Mz;&`QS&K zf&DyduXWer`XsEJ)$DkA%FCnn=H#RT=f4E~eZZ$&|U} zb=7q3SJb3=mrZhjJQoP!XW$y5;#oR+n$mV9v65wmU{))KBa8IpAAxV zdXlqIK{f#a@~~>niTUUS}^mRD^L$l2MeOkDCuz^Y3h`j zKG`xKo9%QnXz=5LMAxef`668I0WQFufD}I}=k}FThXgdg{)Ge+E%euXqO zWr{C29UglU<!VFm1=*!|;Nn9bF-K$WYEA z%DoD$q$IH)zw6mc#xU!8qg4m+PUjMb|aIm&?^=tdJ1s zM!8A)^y-s}5coF+?Z2knB>8(j@~)R;C^z4C#H23o`cx2hV;HrlBbGYq^^%LRI(SX) zO#2T{3Y+UwV_$_uQ$YHzBrehcD8@|!eZr=oxnwyK>n%AhvIFO|E_ z-=`e(_$b}zwJ*@NQNQ_5=|1VH5Z+zfWL0Nq%%ju2Zx`jx)r^_2Skp=9rOJ0p)p(9; zJ`@JUryh28V(AmhKaTovNveWLaz$)4M%?sLHfGW|z2<9CPru{Ly_@9$Rn9^dV*JPN zx*Tv47hm%pLRm6J1Lk$IEwjDhgvB{W-`bB-SGJcfbyJXx5P5;up!Rz zEWWU31M{32nQ=4C2tbI&A{-mAVW~9W9%YQ+b*q3nBgWnP*2%NNgN6%r3*utHoXrMS zhPqatV_84@Rc3#o69O5n$ynu`tng>+_t+UOC}1BL!}lJXu@eIUDUGjWWH6 zDmgc3nqp8_f^v`8;%DBBW==ht5R6r$m26#M$y8_8!HJB8>-qiYqg8&4+ z3HkhdpqaJaHY;i&FZnvJ!Ks)Zm0GZyadAne4>n^bH0}A++5VHe?xUwcjq%gm45J0T zhe#T3gcV%)LzRi*#h)j*kBA(pnp{Q6(^&peUQL@Ge(@c}gqwS0M<+cH1=r4>Z^+YNy{X7Q z>^kM*H&%1}?^A_Q=f1yt!J?9Y8fNlSdML^<<*grv=rUXP7eSlHBN$vB9HZd(yPSB- z2wBR$G+Z4MTqjz#maLl9k6t&Dm@V4mOniAJx2M=NB90^HJEQhhZ>J-iLNyU2k_ATa zpns2&26UB``-jal?h4>5)J9d5y<3J(+kjaAJUNBS@FS3FPrc5*9^ zBy=p6*qIbZ7i-}QiIg)=_h0?NL;s!Iwa<&U8}oxc_vgf93FfAXP=Reppc!KQ50`H< z_^)fDGZQ&>OcYnx=d+9)EA+5_`^!;!$S;BE$ycQ5<_-6=`60-1;jQ{&>6e??yu7?x5BRby;lW- zw6T-*F0~V|$wOk;OiFq|{7(M`zh4ZHRcTqR*=Um8KX5!jGYDPHGX#Oj0!K$g1h+o6?fguPR_l?u)%)%3O6YEW%PIP|2MdQd7hlcT>A@*J z>3X>BL=7>1LKYYIQsUT9`(~?M*Q839sBMW9M#JIpsa57o?hNxY^ysBYUUIF)V7W>G zxhf%sztu}kZB5-j5|F@Lw^oru1ul`)yY@MRg$+Xhn|M!s}_Pam_%)YG@4f*vj zJL`Lc`&iCt(Q3!m#&hmkQa03&QO(zAaht1KIjaSD+n+5kd`SyOa#P{^_y|k~QkYct zzW8FAR513)YE3mk;KTOAC%*lsTfVwHh+7rezTyG zT_Z>`;CnWHCQFTMCOYOu7HnvcAKPzp5~}TzIK5h#y=+SdW$b%&s~b)tnGP1}8D?lrY4gdlM#zHt3+slOt#%N7|C+ntz@|_(ytcY^H;f-muz+4prM;eW z3Gahdgs$!>8e~07*pu}7#E*y(!N)ZyU)#~T;R8q?6sd^IbWKJWa%$6F-snv))rQdW z^k2KxeCx{|PWDQj63%Psv-q5|48gwfdVsX8z(n7G)u;**Qr^E(XdEvYi#}?m@f&1k zQLC9A==@#v_)m$!nE$l>F-i+xo#!xNYH@2gM~5F~ZB%IxmQ=5T)5;{r;EqCU-}C79$N z5&Of#oIsdtdJ~E>;aE-c8`$L&(mAMKA@`Ujr1EpkQiq5U;01<$inU~2>-Y#;9Ok@2 zTU$ml=H5OwmP5TMoOyp%IsK7<0=HT$&)qWe-yu32N5`K5JILi54TFh8fZ;yd-nO!l z;PDnmU(5D`C)ZK7w>4-M@l`CLu*6D?@kjz+-@B(`?tJL*8G}_9S-&7efQS6K=f2HS z@U?f0d>|9~b*bQHr;uA^3vS+|$sO}|Q1s-c1@q*MuZF()_65Ix2$yzv2xJ0-0(-{c z#oN||G9m2?QW_b&pGkiPP4c2Uv8iU9o+4VAtIsKNtp})lZM_-?_zJ{Oty>co~ z53SaSD56W!fAX&LB`P|(9Eua_?O(l|qCGu(etuYS&7Ny<(v*o$NM2_c%+mazU|1zT z5C7M@y+0-CZB~p^iLs}Q_wVTmk7~G%VHO_Fc8pWYWj=86>s>^X?4X2jiQVN^+#i=1 z=q)#-vn>C)g*0$+L|QptU+R4L*SsVth1Va1qi=@`DySLCfU;oo$1f~-nR*QC?X=Qm zGYxL7Z)De^iW2ubMCjbJeeN&XX6MxA-d!jvGUUrte9cVxi6Wo*z;lXPPNli+FDFmE ze|B+Yy8i2t&jGjAKFihDFu?}l&MD(r%bxFW>Gap-z7kW3akq?RR^2ve<+lCLyK@Xr%HakM+7oy8 z#0x49Dsl-Xt__iUR!^)b)_%X=RjtM}YJ7^@V?ji2T9o?<45i{1&ARHvc?sfS;&9(E zyw5eFL$f0R-G!vkgvw=8Wl7T_0hf*$%rpXXCS^AtiqLR3j#~SUQRs2Vn`1BN5NL%n zNOGENqAJZ0u`$e7_-pOWku~~{GL{d$ZW7&>qbkzNo|ICpwYMa!m%o)4r?+lI6N%9) z5Bi>U8y+=ifN13prBwQH-i(sdY_5v4GtU6X_w)oRH$u3*X^aO6dc|-6TcF9LDJpNi zTtW~2d--S6+_9GNtKQ`u|J8Iz2umvr_ailoELU2Xet(cY*<1>3NjX?#*Gy&8OmM@H zxB4(aLP$gnzVS6m@I6++)!hF`jfWOxUM#TtZ}8el9>+9$B(oM`cC$USP~^QOi^^KI4+A8SGmOJ1H2rJ;SCR2UGC)6^q(l$6_x8t z5mP)%5+8_GNQ+dzOt79Q4z@7wg|s->tB@c_C#fvgrr z-DL01p{~oT&L_<7SgN~~ss+&;+~ZD+M~f zAclkZow9#%ndOgLkgQ?9KO0e;hDfw>f~a*}Wz(;Gqh5nEHZmZ|{G>X<^B&u(7C(Ci zy0%3x7|q1}FG+hf4#v4MneHMJ*q3=`FI;K`6w=U)qY@nWTQX>d;E%Lw2_d@@rAZkt zIkapihA}=v5k#H=|LBRKXcb{E5{ip+U6UHJ83)!dj(#=shn%b3X&^Fk`NI-Ig+)^NKG8f<5@F=VNWQN%?bglr6Q)S02f55X- z93c0x``4K}=QY1{{^98~o0_^V_XIi~?@o5m*6X~qrp|CK+=<#U5Js;yQbrH)kXZ*# z(oopaLez_I*BI!B2i$78NHE^h`7I&xb_+#cKf>U}6E zN_dBrFVgDmaIqC*r4CQurZxT3_w+-RIH6DK?VOj@4EbJ|R6!yrO!8dac@drbs3;s& zhT|iy(Cbsf3s`FPI)BbH*W<1^7y8CkxD#s2mbP)#R+WK*gxH+ew~FK7P{W2;lrX*J z#;4H5OvQCf@!m~O4IgTuW9H(n%N9k?6n#)rBvWq0#mo}NCq8w4GjP?zL3DGA{L*uA z&uWvVqjJta5+7_l{rdPHCT==UZ`?8x5Z^(#PN9`so<`Z7y=I)nXzCBJaDbB7_kb+CdZ}m`nNP z{?|JUF#fKZxY+2|HurD;O;=+y9GDbqQ}MSGgW=Nj*CTT=?CQ28E}bGZsILiv>OSf1 z{1$PWmLrT%c|Lbudsw-_j@H^Qlo9|=g@u?(7#@D?bZDU<4gDw`-M5yHv^+rKL?w+p zR>G3y3U+h49W*0=9YG18|6^aVM!}b?F6jOkzN~=F}FwH-CT#H z7~h;k)55N5LQo~nh59b$CCMfeXhGPa9u5Y$+ad`tO-e$?{*0f7e6bIP%s73~)Db{O#95rnwWNUlFawF)UO2Eu zHp~7#a50N@?ESR32*!S!%(So*5g}Z)`%VReXQhsJmv?IjmUq5$$!!-6hwH3m(4YQ3 z_PH;CEejZg03zK&uMOp2Wh6)lZb?2bzEzeJS07>(lG>$E(`=pM*ot>c8;|7XHP!@* z08I1fI`qq(aJJQQxoOM5h?25*r(v?4qn80nMlNKp9;ba=2?^?dkrm-c4B(q%g03Yd z{q|FjC%3!Q78<>Czaqfs4|TdadSvgsq;6PDc9G)87)!p@!S8=Yij8bK^zjh(#YdfLbu+Yjei_+aeX0{kU{@q%bQjebFVtO?;mx z*Sxm`{ilA2;+u%@pO}$rM`z!m1vO6+@{6-8r-*#h@=SC5v@0aD8tjp*#qVK}KXT%3R5JT5h!Ry_coI2Fm?UNv`8lys^(j{%tu+7T4B$?(rSBdc05_WB2hEYPJ_`H@OAub#4_~9A^O+U|ayy~D|pT$1pDmY+P zTXZrdweO8aTp9d58chATu-q1UlTGjU4(eDSosV5sC^2qGwR^W6=?b|N^-h1iQM8bY{+#qviRnnNpCqh z)h6^g-!9UIXuY%(CbRlD!rAZZTsUcx$4pajFG~<6{xzj9G3qLEq51jqAMgJv(tL97 z5Qe1YV^0wRZkY6nB~;JhfSf%4ffZ&H0cN3dOS06`k+$=Hf1+rvkNF9Hz79U%%l+(E zbI3p+62Uh994pXeX0!`51w`NfBK?}bos*|4RBEKW1>L#^efQ$ajrPSX^RDo* zTm&6;9~~qO%jTdMN$O4Z!c2^Bs2%nh%c=7BB&>9AsdWLb(ZpFO!AMkWLabU3Pt|ru zoiXr9Q&#xzxsG(}%l5ih)~K5})Q!54qu71V*YPcn{^6?XJ?<<2CIA)i)jaG}9}-C@ zjF;48Wuv8iHvsmQk&OIDKre?7#DBKjr0plzm?t@)g8i%aIeGsUmqP8I9jG7HBj}D9 zcezO{2LUXjxmKa}1^)2ZY2d`R#HA+3aPiw<{5lgGFj%nCGLA4gq6H@X;}>5NMN#R= zILGi;rJt(kDup-k^oT7FAAmkvlg|V4B!JJ;MpR5gm_oi7E03A7;GU*+v|1n>i~7qm z4EZWXj?XHBFGb84xB!8yY@)v03x~@A5YPWnuw!o;OUEY+b^}CK=34}vGrGCGsM12H zpjX4c30gAM7I`cbig$^cA^@r-eApz{>&P~yO7pql?~nFiiHnyvz@*DkB`sw+IBty^2WE{MyPybOOv%D zDiCh#R>Kt+#3eFg2Ves%AvZ62483^5t0G#N^n_xr zMe05%M`=9~W@J=sJG-JE;q=SBTF_&MJ2iQ58DH=clSv*%Sxl&mvOp+ionB{(#;gO5 z@#Br$Hyi-TiPzVBDmnZeE|dIH_A-~)#3w?hpfC4)nVI5BG$I6gfgc$~&E{RBL21?z z!|`q})!@dl?rpu48I|9z|B*zSh&dkOcaPC{1b3m>`(E0RTFy8NT11wUwT4+KZo9u`&9$#MP`YLzF+zD1Kjhi@t5l z9}3~7RP8IO=nWS+44@c5ZH9u&Nwp+2<~x>e_OGBx@(Xt%G)R8w#*+njGn_a7n_ZOQ4LpTXlpFihj_9Av%y2hoF-am%OZnS@plZ=n3Sh0_@8t9XY;#$%*|afx0N5K~i;FxW`%E`sL*3gZRP^awwUf z{yh?14xtCt+V9|E?P`?7Y(3Y+oS7jsR(6`2qjZ@^R)d?5-&6jBTbEOOiRnmH;uzck z*ZPHm?XLQwlvOmjIT;O$RKoH!hPB%gY{+YLwt|*gIZb-xy-^egfkkm<8O8Lv*u8?u z)(q1Mx@Y@MnGGmz=rE&;pBQ-60ZUqGu|oY-;z`+BrCRWTb1bq$O8nF~*Xo~8u9EjT zp;KjGjAEVt0S_>WKsmK6p`NX#-PKe*&)Pi~^7J9xd*QTscuBN`uOL?{1YBKsAr$c`^3F59`rpGzpZw!tTR zb^Kw{G(%#HQ2jq}c}67u3jFaf`)4Im$jk;QhsHZDvvBefF)mo<7GpUIObdWn?l0oIf$Qxu5(@~g70lw=<0WR=l#5oP zR^CKqma*Ia0n(OF6YUrF0E(n`y$6E&P2XooEuZQ9@?Y>3v{2RMtGCVKlsc4?RS+NT zi(rPzIij{ne5v4JcJ))(7;K7{=|$uI^AP}h(9B$DQr{6se)@7|S<`C36P@OXwPnYd zS(Tc?S6JgjZl5=HaXDlPV-F6`(+yWGDg=6!YAiQe5?uVM#tglkxBt5n;tP_stj#t* zLNn>;EbRvL@i93()-yJ2{LssPc3#h|Gb~Ez{lp4)Ym-&gf8_$qJKg6xNHKG{jmx;iHP@b`8}dv-aBgPU_#CpS9Q?Uo)Lp@l{fd|zU6 zVm(0@b`Kgx5j;y66a3T1)ZL$ZV?ZUd+u!zj`Pk(`_uPJew+h-Th{**MGx~lu<>z!QXVwe;`-?S{c_0P z-}|+dsIaIZ_i_nFWs7qW)8&m{j?K&>Uh&Kd54rrb;Z5k7RZrise`N6;fBi^j6rANF zwct*J$=sF;PG{7>%!h@N<>!u0!Cfuhs#!Jf1d&CW-vWW`yU5{g%_3-~nQh0abEEV5 zG|Z^*pA{bd?HGch9O}SQxlgVB)$k2cp5st_!OuXn+ZHtpuPF~m2vT{w`f{y%<>*OO zRlD0!CF!LyBy+!f(>YopgBKW7_V;FfcGGq$v2LtQn`^vd#{SKHs}0GNG-(`MpPCtO zITl6J?~ia09Jy5!fnRk(6H;(-N9pgI0jp4uMqoQz*gc4ldS>0r#kLq5)~-Unc5H}M zyuPAg@u=Hoaa)nQ_Olo2|3;2S@<-}3oY07whJUpDHZx#a1&c>@xmJv>8RBX~!)ruI zU==4K{2P-aNGZ^>9yOz6TOtXb0U1|%=G!xMPcu&m3$t9b7~_F?DE=oZS4C-Q7@|)u zG7-HT1_)N{{HYW8D(OV1r%k1)#I|^owv=G|;$H#tokC+b4R(XenD7z(ZSRh4?5UqF zbM_xI{?H4ksaL@0}=O^I~&&4Hs!dmj?i=@r&k7BlBjExvwColsaEg`Vg2x;ww&((?a=fbyP;&uGO9 zIZ=ab9+);KBtQO56WWOZbcb@4o2@RrDFgBO<|L~K=S@Hab@D>5={U<;KHH52%h+Fr zC0@Z(gdb-AsstOW{`JJQ#*LpmRAsOt4DG%}%#Cz^Vr`|)jdSdMU!KPX%7gVuoY>7p z94-mAdqcYKdq6y6Pd&Z=sJd6$jWtl5?IkSTNr)wPJFs(PtkBKdvtX0v4w5r};_W{4 zn^310CLkgB?@>&`n%a=l_+xu@`)j@6GKY)*-eT$PY(0#~MPzbWUINLG)`&mtg50?r zjbp@(k86yLELJs@lYEQsC*ZXBmjvQ~f$qGpT!tmsnn;TR7k~z-joZpljr~ny?m+-J z4qZG!b(76Re|etx+QsK#A9`1c>j}+S6#9pj+S@nswdn6|$W^&8qUOq!&EZ8LzP}g! z9;$-xv21-g|FuLNNd75_ArmkbcV}A{w(DCWb14R zmORr42~0PW#qCBN)Hhp}4?Lc8)LHiXdH%Q&QGQBbQ68s?gc&syjUL1*aD@&p~- z!>#R3k%bSM3LQ$|=M)n@y#{e>B}*3$U1dK>f7Cc0x2Nt9^u3h1{_n55Ov%nt;iF;9 z!EvXjs9Q&bmBeJY?qznV{tt$F$&&U&7wos=l*W9ONYWYIg;uGBAHRWoBO8!7kp1Pc zR}Qg)u<-C`_{sX5mT>EP-t$9L_z$B_PBp$~7&dvx1aUCMEKOt@N2zd6F%9R&h=qnn z$e9dey97{MwIgKeUa@Q)D%?+9wjDR(&{m}<(MK$5NNj3BcS{hq%{xFd%)&yOyB;fs zrdR+w;xvH_#o&v$EMhHl?%GB8%OnUVXbUL-RxdO6qI(o|-s(xn=&qmuaHGT>@0Jz( zomq>Mud#n&i>YA*?4eu&4zAQ6S$@)dYHsNCbYbPk?^bh>RB!4DHb+L> zG}q>`c>f3e-%-T3ENoP&%Ig>%@MC40d#9bFzBUdM*w5I1cZHJGH-^rb;#yX@<)!Sn zmIUoF6yNzs_H3v|pPTPKk_CQ8zqIMtZ0to-8pkgTj8lhz=Le}EE9-YCB!+8g{X z7s*2J>v&04-+IEkhgd$mf9`1&ymDl46Sg-9ReJiGeP2hN^sDdg47X2f;-BVk6v#-Hf1`$S<8OOlc5mtuLqPijjz)to z<;#J6`~VC&mD`qZX{v_jO1}i3zcfl}!UJ{0L9R;mBaR`yu)SN^;$WAg^Sfp%iIM*3 z%KR8yKvQz_nI;{YCrKJvKRDJR8=V&!yzy$w-3O9)OJWO`k+=J2Cl-qwRR-d3n)L${6xwJn`5&Qa*{LG@ki(wpiFZg zQ55UzJibQ_#+BoS4- zrj`W}&L;*jJcvNg8%~{jnV3RT_*9t5P6vf9mZ05q1a;()!Fy^^2p3OtkBLp`#HHSr zc-#(rK=jx88M&m>_$0~i??mJ@$pkJ+mR-9O(OCeody*8@#;H2Y-2q68M~+EUyz4dm z{?XSu0nz2A3A|;dJJjg4_QuFevnxUv)Z?LoPJR1_8vDL+N+J%5#3U-dl^XtlNq&^A zL-Bgs#J*X`i69SG`5T3&ue(2yzi-~aCo@bqb_K4un=oPjro5pRt31@($P$B<9f_&i z*{Bt2%G!wjUlj7rYvhP5E$&+8|JC{R$ywN_=F88Ah8i?fuHM>%RjBTS9?DdHV6RPQ z%ma1{isR;+=~W}%I^-pY;iTn%x4PpPu{qK$o@&-v=j7^wsUa<@a6Y*van8eBgiatr zl%X~2??0LqFu%f++bE=NyEC*=4DDV*+jyhUPH?Du)@oI6*3~xYxYwAsFX4U9;B-ky z>mu;iq4+uzJqd#2H!l_^om(D2T)huDN|1k+?g$Ma!2i;aUW+;CqI!>uN_`Kp20l|i zCln&J9#Zd-co*FcIPJT(V37M%a56Go6xi9T8_0uVrc}MHgf0Dwgj9wH^zK_uhGYfosWN!2mPc@Q_~jHpggDhYf&7$*%`KjQ?5UzecWP;fFee-td=m%*iAyh$rdc z-2wLdDxRNzA^pG2?&^bFvWVg*UAb$6gGL-`1m7Qr_7WkjBpxsVt!fVEt|N` zKB$3N#9=Pm)=zUnoc5~`$K#9`A|UN~cNEb!WVVr(+%^uSVHrL&j|$RazQL|00S%w}Kau~y<+sH@5qwB|{zq9F^_ z{BG&w5fpzlgUY4h)qJAIG*90k@IqBu zP{Fm|Qu}7TeH=*Z8uX(hx`ta!-i18oHB$t0OMbF-AJ_aVc8ri(jPn?J0KT#k&%exi zu_));8WE*I^@3)rTf|rb4B#b~AbALb@bbCtXy{{Vs20Qpy!EWNgh7qzjBYTnGEqO75b!L;hYwicNqX zyK6<7Blh(D5GSTZctg_k0c%Rj)|;#==EH9d|FPbGl%}{&9nF>|V7_*Xj`BGCPfnpW zIHK!<7gf!oEcqg@##- z0Z!w>;2h!QIu$UOgw6NljVdt0)L1&@ya{HL)%f5P`QLm!=HR~xs()|?mw`=ZI&57B z<~xu?)|!0%y5sa%#Cbj~F`~SIG}>h$mXVH~!0lk(o|n%VP^o~r+mxazh^1sxt&ZTP zv~ynkU-!4Wd}@LHY;q#TvG#=N+wwKFisWmn4d66zJw)RXhF}F8GlvEoA2QrGoNfh6 z8KLlY;P}*}xmi(erb53^lH4#xW}l=(i_om3iW!0+IU&GafV`{haWX|*?-gO>dtV1D z0J%&LGjeq2p%i4607NtL%A(Vc@D%>egZ(6PoSuBO1(I*GkbmI)*;YWoK#Q;F5cJTlQ1xxIAuLyi?+F9P&hC&W$0=>3o(eWO zbhF9O8rV~9_l=jkXMudq)58MO3@LYM>Sz@Yy40-Iw00;j&+^sBWjE>LDD+$~)Z+I% z2u&b4yv4Whn!>}KZ@MCNJ+}u)!v7ve-+zs7JQc&TuiGENu4aUYxy#=MjTBJ{>@SRo zOebiHgopWKh;?plw5|~VUGTpaCXV;l^4i+bZuvpqGP)+4Nb=X4y3=-Bw2B+$g}{5& z{x=eW87`jCuhu2NGLs+*FiZ<4RlpQFH72crOBHjlW}FDiGhk!k?^&?H(~E_Ya35a* z*pBkyz@*@F@$2`el!-!)-I z;V+$7zgPVCO=tf>zek@!aihAPShK+56+gP4m)~Eebn%%I5^&*58<%brhCKzULYoax zZ~BrY#N+m_RDQ|-!8_=BjHcT*WSp*6`YNXgIq{KK3!=jvc-(ZnvHr^ohF8&jxA4On z2lOR)Z62iZ7FOAajKlUw`-fc;3v253k4Wj(m<<^13sv*Em6G)Nx+x=Nx89v(PDi=n zk7i_@V8|D|>KkW=sCx*cO43g%qIs#fON|a56&8n>-_xo{-hqI%^AFRr zEEmDUlM)Aw{i@eX71j1fZoSRxT`(l|sux{}Mo^`+?>t0_RsF(Idx@5r@Hp@r@SQ!W z9Jv9H(&$oedu_a=Np-&<6it`Xj_94cf-fz>2IHjZwu&k~kl8=n_h-gN+0M*1kx)N! zI}wrIvBt=-`{$?GiMOPgv|O_UG1PGUc;6LV^FI@}AG|F_4#0&H-nZlraRRg}zQZzW zplGKJ0$WMIe)&Y#s7c({#2E6}qr+zS7B2+`X-4gdEv0G-tAwDoI+p^ zubqg*MeedseXm@E8KN(5?eEF>OyzcWF3VP#Wk?4e&O#4%5VQ9C$UEUs$GWJhl~YLO#eue`chGuFfeb-xxD5&(*P?yYEySt}#F3aH>OqyXL17 zF+CbiYQCW{Bc{F|79bBE_%Z2R>6|hOmw9zM?73G0aRlju2UiPQ?dn6YZ~sYSSBZM^uqA>XC06N4MZ^Et4)QjsP;I@u@A0zq+OGIsrCu#K+P*ra1qHwLWZg=i6P}$U-1h~#wI=ynTV#Gn8 z(E$CM8fW3ze={cWrea-f&YG2h9QLt6^qt}HpIL`855GzXN}PUp`!TzjduscCWi?zC zTRKB#BJZLb`OEo@#`w?~I9Hgs!q>s{b3k4b%oUv+;wao-jsd#8>zQ})omB)!W!3UA+-|40Hcl)sO+ ziyf|_LaX`hb)ED#`Dm5#O-HD zqW=MKn-UVitBd@twX-2v?A*$Oq(u1?iQezYKV5B4z>nO-3npbo*#g0}j%BodCE<$6 zZGNInPKEIZctqH@c243p4Bs0TYyVFZA!6)=sE@1qXNIC!`}DOaQh34OAM)*+5Xau6 z6n>lY1+zYoP)M@k+}m>}YurU2FVoy~#&JDKJ8XVX;|ta@_E=E>es8UT6h*P|U?5%` zrld0c+{|K3v8#>Agn`0nx8#`lVCGE+E=JiH8!cn5zov)4?qR2bPAVxx6>suA8S4X9 zt&imxqg^Ba_bAMQ7+l!YN^sKr4!2>0bu7_7w?M!Cp0r>x;7Zv(yhP0Kwhjv3;{ZZq zZmWTfx;if@7EBHT&`uNh`~-?ebVV;Fh_k~Ku76+TIk69*D)czeaoC|)5;(#g54H0u zfl-K!j$x$%>i=lbHtXX$FDgc%2Q*6TbX%v%lMAo$MkOj_%^$=?k4XRQeJhm}PUiVK zeDj>W;t^Nsgp3h3@#luQ!Hw%nz2Cl|a6Sbn%+xmqU3#W2niCB)o*c$dj;xXR)KbbDJX&F4)M~sklQW0q){?R%6bWVLTHBD1g(&Y{j z6!zL<%g*Y$3pTHpJ3P!Evh^id#h$VIu;;sUm+D4nUndaCZg(u#O~4t+#cLW#z;2Rp zlf5MRWJ{AKK2~RRzCZ=CiJ6E4*PC#tEy7uVo7ys%EM0B){iR&D;#0xi$aa4M4b+K*?=ZsaXxAHhg_A9B4kRRj zB+pbC3K@6rk{?X|a?s{*e+{s1ZBxlgA7)UH7l!7@RkE%g&PkA{DUp2@bcPQ~vPjZM2|NYaToR05_`@`XbwB?Kb%7px>7K9AY zdfx+75MWrmv}j0b>G$#tz771{6T3>w4ZW>k}B6S|9R#)&+M=a=_oCXg-t zGn-)dIF{paY?KracGQ|Kh z2y!g^A385ew4#57PW~(0Ww;E2ny*+;zbii<7zxQ(Cg539 zs8yO=Sl$#*7=eU8;ta2rgwSDZeYpF08SKTWzvXf;g8PP#yPRtqv;-n8i5rZ_Uc zNiED4T7J+;NtkAtf-x$H_3~${&2V34N7XLR^6F-4TZ;R~$cl2Ekrt*WR-|h1l?xN z{=LSkoJHXDRC#10sfxpb@C#pYFftdlIN+2lU*mqq2|=_VRG)8(;~p#MoY^+_rwd*(oYr+0-80Tfen` z0P{@lY>d5*D7c>Dd-@?&B1>;a=Z>E8_w~I%Hx9~Yo=e8cCGG_&PGu(Fgt6C#3T^TGVg$)wk6x6EpWX!kiZ(Sm>=U@0 z^z(MXj@j$asT3EUR-oTd(V0TO!Cn3{BtJV5N*-T#?s-{D1#~xJ#+|0@5XPZ28AcUC z)_rv<39=y{nM2ks9HV0Y|KYJIju`2%b;|exCb+)}b?0*h(VSuN3=lo`XcdZsu^@+j zeWx$!6QRSN+8b<_w7Uac6?BU$ZuZLys%#!4aF8*DMnR9}$lmZ@RumBlS{t9f|IfK| zgm8jVYy$U)YoH@7$_7(Op?JN0*iFDj=Nz3bp&46)|5fkyPTeT^>aWv!`=#ZelaZZn z>9BMfJUq!EF8v~Ny6SXbc{SDmDKj2T@H2Vt%-tjYm$DKFZWwrbp@_?TscOQ&oGpd+ z`d5zNjJ}Y>94p%`!?02-y8I(QfP9{RG14yfJqLg!?n*Pn7_0aCEnlfG-U+jJbQ3e{ zzo6}9{VaY6u>H_KVT#au&pv#a!+djqc3mi0Qm1<~`;oRN3jGWQ>0hVxCzXhMUG6{U zR3UiSt8q}33P0jJVfw7+z%03@{w)dc?4sG1 zWRTopTS8U~Gybn`ZXWB2;xO!#e*@4zy!-*Y_V4M8xmkfvj+EBXwKVNVQRZux01*Wp z>a7DbxaY|y4)Vxw1wLE*4MOeT-^0N7FdO`v7~+6K@u}^z(lGW9QWCffG3Yq&p5}Y+ zz5`b#eTXwwah_s=`Sq*#|8@I@wj9B3pq*^s*dO$c zDraz%6<{S@%=)zWeICS|XNKSSoW2QU?9?QS*VG<6{fbv{a?XD$HOQFI^!LTVIA(>+ zB}Pd4KK6bzcv>+PW zBZp*@{bc{5ao>sZMe}=JvDPh+7||3{(LQ64ZxHspZZuW+;ode#|3c-Blm)g%E*7V2 zIO%d*MTLsiVSGxL4*}G;+Ry49pnPkeEh8)(#lQ%ptuEzA*2{j*zYjj_Yx|=^*1gKh zbrbmZ4nF(bD%58m*V+5nF%8izg6-cLfRTTX5lB!~pFV|+r?$rD;N=w0J-D@q43!aq z%(oUg`d(sqjM`M;NLeFYs#bFJex82vCY9&*82MXf0c9SM%5bR?+>+L14B}AhFfsx# zEEvAJW?fM7uAP1+CCQhg7yCV%2XZZ9CGQ_pC3oxuqQG;JlsW z>oKi3MI5&&O;#}3_P+yv-MWLz5Zv!}-;Q{dLBS9_$hJ&_F4F3Z>cv=AU-bWnqIDY} zy7*CR4eUPlhf%y#i1h39MK_^SIn=KPjqz9>BfIDzVQ~1r0{V8j%1!PKUq3$m9~^e? zQ@b|K)ML?TRijFD%Z9L*0Gs%yKg`a*H?Hq|ZD1Jk;93Y*+m7F;t4;f^zooB22Jg5^ zf$lD$Wb2@tJfHk!R5NVaXUKC~nxEoY5g*TrmyI3aw1Y$j1C-}I3TzOa2Gqcs7%!B* z>V5^`Wg2ED(wj0D_@nR z^JA?)M$+e8q^^kG;&^6kHbpo^D`SuQgiMuR^E8b}D^sKKeglb^!cw>HPQaK%v|hFb z_|t++Q@R9>Gy&@?&<9Po2gm^FwdGh5%4=nw83HUL69A&II+rrL0}nVn(#%H!dkJ7h zbs&CR)5L=pJaRn}wnE|N>NrNtpSOTupGtQB_zh=>`<})kc~$63Nx_KBGRF!f?t)3y z0r7P`r(kHX8N%zaRYw6C?k_*&z>ge1>9Pk_zm8RCu~q#A zTaV>Tx<3Od?yKIgC+gJHCR2c;bOwlH4Nnr_FHGua)bz~0YVIdm_o6u>q@)DECpc)| z9iVzKdycg|eCWMYF@N%=-cdy4pA7Mfsr7H0sRj= z>;J;tX61_*E+Yi5A7Z#GlBq3V_ z*MY=st`JD~9sAngE;wLzZRzywYcl%q&R(0pSi%LJ5qyCiw7)kJ(L`ilC&^jTzXBIf zFCNbKvMP|AJj2rIwmi|w8}MW>y`MPkAVj(;##C@G31S}^!3GPsmYQxo#R@bhd|^wC zr0ArK>anr{PB&rwwvE>TY8Q`YFw|aZQa%L<0W_%22cUg%@A@lOa>DNlMpW61vX|ON zp=e1~A&au#e3jeoSTjx*0`C_VA3(^10k1B;y%BKlchmDphX#(}0B1lM_0T-|JTFnS zA&OftiTdA(JUqQQbX{FW1zB5-Mtse9#-YYSY!5=p_RD?oVup-?Q;lW&s257ZR!Uyo=pEDR_c9wY`2q%z@sW z&06KJ;}E49e42XDs;N7@Dx{v-Ir9W;00t z(UF5QNQc2r`OiH|YWc(&_*-*;kA#_W%Niz6lMo$SwO7Dzxm1vPb%5jhB|W>9#e5eE zjfhw_dp5fm)6imz^lk77xsHR@xV%Z@FkD2oyVyL1?0Dp2m}?$5N=|iN1h~16eu;5+ zXFFuQ(*oXA&6wB};vVGQV6M9&EsuoOu>Kit|wcO#vGAR;A5r+_p_Nk~eUh?I19mvl&j zG}4mN-7s`WcQ^C?_@8su`iW_vQS z8O!6YkYQPCBupKB7Xo9`hc(ZmV%V@DXgwr zRMJ=yha4jnjsxTPKOw@rOSWHJ`b{^$=CIxrJ!y!JM1OcZ>E+!9*q9anMl!qpNC{1{ zUBZ4_ww$#`RO&xu0OPo@Sl$`}73G@~rFH+W2Hpwfo@i~0J>`dsdZknoJB?9VHC7L{ zNe8UprDH8f8LgF#9qphNnBnlP`B`4%H&^G6#o`HDI8NP5VQ-~VVyE2|e6dsXU)BVn zYRUnfbGoeu4j5d#*grV2n56u37KO?XDjg{Ggsl1axTt^EvzSRZOwjHRSGHtuXV&`8 ze&&mB#-a69E5f6Pp)~*7uC*oUEoy~o<-Naz{K1fIpe-8N86 zu2*sfBIzvTAfG(+QoFLp`>BfKp+-2zJ~PL zW#{bPh>YovKD|K4^I<$NW+H&h%_6k%b;u@Xsr6IscwZ&*(}1EFaLZ}TeKI!W&i<>W z|GT$dsrBC|HCOc&%Bie{6eXkBQ^u+|$K48_i6`m~Z^G_veOsugf2SaXeXs-h^-sK) zBv_}EkG*qw3LE_N=t5-}%hO~Mj^N+?p4(9+^mEL2>v+i#FaCt7Ux(AR9~M!3+45)2 zW2Y^JNk;PpeBh*!KCv1OY&27;rL!=@YyP^)5s$vBX@?kAildV<=N;QTl#{iLv6; zk?rq$B>mn!C3LUbcV9b>aXdT!z2yPjuH)d1HbEeG^^U;azEyL9!QXb?hw%t2^-L1%(7C-QYF!-fTFLRoSx=e0FBU546Th;1< zm$3ekZf8*y_JSFG1`I|^sUHMCS1-a8%`IN~qOky)^h2VK=oMeVa$azHBXyPBFRSic z)d`Z^2+p^D_K|?`T@r6btx7rAXYJjqFw;I8**C^KNJZCYiwbJvBE>vsi@eJN>T1}? zh9}uGIZaXi6{jzyFG^?ZhJNU~JG3QDjwybX2}MJw^*pb}^njs*Syd8-08A^znSasX zk%0Pd_LeYGBB+w?;Y#N>)wl9SL>^5ZXs^^^(T}_WXv8mPHIe+D z1Pc>yOCwG*{xVJV@o&lgRNLyS@ebz@K2ha2KsF7hO)ra4G)af>8=|OCrgsv{aQc{> zNeK_lmY37-mp$L1a8V)?=hrnm9--=6+Y+G@kn*|;sWNU4->KPy-sF`NoI5$H*&q=3 z(;LM(WZLsTM7e{-nY3BB%`kp4R!JvaPW?wB63h8d^E5KDqw2KVyWwP9yLyAu;pS`F zrI8K7s0+=hGIthuqW}B)d}+iofh@m^n|h|Os11fZC$s)A*T|BZ$r!0v#1a$0Q>-|M z)9)li*D45asJv53!*y`1+_fohmss6rg)JJ3)eccV5|;kNv&LO|aQkNL>-`%5D)4ZC z#}b&-7iQ+A(tM>G&+>(qP;J@iPkhhVF zXW1j>@u&PZt;p9jcJKO(ZkOUkBx)eTSRgIc<1_qHzA#ew2?3f7oX@Gk=V0_|=liY5 zNPF!d5y+bHqM|ByOUtuePfzZ2W@XlhJ%N&YaP-Q{KZJjqHyRbtG#D5_%hz?^qq`gR z*8CPGHh*_8I$Mh%vqmxZ3SF!ye#$i&LF_G(w-r~6=_4t`!hnfO)u~)Bl*y7=CXYYi zzeD3jM~f5*6g^xb{&N7HPct%BZ()u-CGRJd|Mpp9^bf%P>zgyPBiMYk*Tm(BM?!bt(CoLOoXABIaxms{NcY4CtnhRft{DzWQe&sp z#W{|DO+uRU8JXasMG)0|uFVBI7RltNH}w?!xEEgKvw~t0fyI!52hM(t4%QY zeB4+?B?2t$uY>cj$ii}Bs1%2YjJva6(cYKOK+IgH@%9oMFR=c-UzUm?xISfgM-!i! zOhVek26jIIUqbf}mSDLDzFltJyB9JX8_&l?y*_0qQNlw%(UE4-lsdl06W#M)^A)51 zqay1_|KRXy>Ssxf1B;O5>_*)eY1!R=vC_W7sK5`-b6%6 zhP3B|tKUjVSLg@b7R+Byqq-lS{0X}Td5?M`NCS4?(%(*YK~4@0VFm&issPhadC7X@ zW*2Eg4HGnKZH%obCnoOUi#&vc7+@f+joGzWUFQ-b@Z%eG z^isoi;zv?0EY`{rM%^CyKm#>^-nFB)HhL_wW&Azf;TyVD&gC6lSf!@GuZfjSOg21#G40Sy#U;rW%1_dimZ5p7kp!0!$Y zwdihcPsbWsQ_p*ORI|SaRzgO5J;HLM6IexiX_6-`!GN{@TaR(Otm-s^t>BL<(i$Sc z!r7Kqns?29<9^VjZ4<$#*SAOp1?~R^+I2q|*BJ|+BV|&<2 zwP}Yp@MD2qfzU6?L*iq(0d)dwg0LhH;Ag~_8{lU`D-By}L>}Ye7Jjom&H%E*<6N{? z`4OF8FwP|^SFJT2DP<4vu&Aw#l%24KpcTJB_wx&a@lDYhK0Tx3!lQ1==heBsWv;{F zcD$pl<1qgJ+x-?Tnwcg|+(5*;U4kV=C<$=J#wi-7Lw-xf^J7{Q;^AObp69V;xt`h? zu*{2Gy$x*fLIR>je6VpUl_8e|w9WXaPeWCS&ES>v{EqjIEt(~trK#0}FHS?(@1WS> zQi+rJB2bL}U1B)VXc2d)>6 zlj>V-aXQcL*fSlma9SEzx8!w0YMEX99LmGjmo>KQZ5YSDB61g%zJLs%)J2)F3eqiS zOoMWG{Zic~@JzfCESvoK+?PdyK2Fsk{oC^a*lqwoPXQFb?0qIIf+gW(%a9-DVHPeH zi)hCrr+1AB-rfiyaUMrM3YZvBfherKY=D(9!pNF-xA5G{2y@&TZ;0GrWtDg+B=c`t zZ2FdBf#vVo!?xK9kMhcz6_t`2!cDeLiJv&a8vuYcw|m_1m+$a!W4Vb=l%&2N~0`FD^paeEo;~QXaD3f3K7Y zilZf9E)m9xsdmw*EJ$6G>A}lIi`9_Jx0V8(&A4@Jc*KE=PLcQvRB6V1lJEZ{F$Fh& z8el#VFq>L$ggPu|GJL($hc$I_WVl8Ls#;y)0@__XgG4ZoPUa;kfa2I{V*hsf3YZ*G z2cG37I1S%2Gvk_t|AfV!Jt&7y?z~<3&`)$Xl-^`svK$=oe6GgzO*aiMDnh6nk;ze0 zn$<`l!sf1{4(BB$9DR9PgvfKkT&A(mJc)#F*hckX?wem^hwz@ZYp`zsMvP7iJRjlS znsJMt?P+|m=yY-rMrTGuGFL$d}FxbH{oaYF(mE z+xi^RAA|He!B}KYqi?xqjk?V^^C!TC4fSq_yeRxw)nQ9{j>Fx8MQ7OC)$=Si(FE5d zO#)7)f0kz2O~fDbnCE$yPiPZIb|VDz#l;n!mH{|CdGi=vhNT8(@-#*4sh=P)B|XXD zxG(DGk*_`6>}}=96MQa7=qkuKDJ!i-W%P?4Ln=!mP<1_CvMHFG2#)^ zm@*S^nA{o=js2iq6}?;3vn7;7HzIE*jR(k{cam{$Z6e@8?EQsw;}c(JP{!?kokm$r zC9hjaQIH?)Zp6D1J(kjv^$^mu!75ghnoufKp&Uen3jntA`^@zlVLTM&V6IdU3L&{R zTM)5JuS`i#APH*EcqQH+8(wEy051Pj@od7bxyne5I?}B47l^wH)>&NuflPRhOaI!| z3**L`*!DK^V*h@(?%~jDE`$X;;P+VeR{Pcmy_$|Fj>%nEP``Y8^Ykbx_*dcW*H;Ru zRuDpDV%+nKYZR`goScwe>&h`eUa0?wsXUrd8*^t+()HP$;a$cBD$oqciu?p(U`WHW z*h(>P%I%!7&`K9mINtUYNMbivtqol%kHD6DRZ3I1*f^q$Dv`(?)00UxmfrgAoEXfo z-p#6KZ~`+5mPNDJ2*QXl;G7;Zu1z0$F)ovQjXVKNqn%Gjogb@#xbi(B0hufHIV3YB zBlix+y7104Kjm%|wIwYS6Ut_V@wrUjmIpT)0ve9>lQ% zY0XB;dDtn30tP5Y0BW!EJGV?;{byb`%zFD6MSMX}eKPCXJ@Tl?%5~=D z=Y_^L*a8t8(#-k4-I*3~co#(ox6NQ5Qe57WgX|r^dnF7znD0v;;=%>0><=W{XCtL> z8N)vuv1PiuEeD_KanBVKjn5CyMFYYdiFjKG(~L{1ioMU%E)@ljqwUMe+4YF5 zTivEaMO)jhI=$anuu9NBJ|=tYPcO&kgx*7t{r7J^l{(BTsL$4ZlF1!sl=rwMHyLIpH?v>_^N+zimy&sV6o< z=ub0%`g`@0q}c;G5I^^OtG!|O?w^ssDA}k8NF&`(#SwtZcr%O_ zPS6o>#&mH3*FaC-dEGGARMn8GR|w7u*r3!8+7Q7=urBgY@bYk(bE>*Rf@oA3E=69EZ**Qtg0p~)H%a;JdXgA@V}Vb?g3mS|@!IO*14=4}39dQ-QqpDu28VI^ZQ%!cAPkTR zw%>nTdgjTousC&zH2Uz|7fl>s#{-ZsG|v|bdn@xKQ^m8_<+tU;td8?CCNC{J zQa+D0L#cxEW@KIpfdmC$5J-Y2=1}Q8^kTzyT^miT5+W0Ob$po4fg1pngRebK&Yryf z703k0Nd~Z1Yr=QcU1cCmszO_Gt)5dvZdx==MXx$^yx#=O8!5JQez5$@|5Bf@If`wa zhiH+y3W<^^s(^bf*27V?YmsM~U{(oIn+St&8HVjt(CTT# z?_urnUIzeca{in^MFxLO;LDSBp=QjY>`sP3zsW1%-aR& zEsT)8PkI``eGHPvOrmOzcBa}vpp&A<#K(@MjQgg1Fs{7Y0lxuv*>wM=cquI!NMh39a6z=J7cg;iXTCTiGXi}NJ= z7$lKaeeZdWAzv9ScUr|OH9IdkQ^aT{KAve;ka|Npb*LGYJM5LdRWm^bj0%1T(lxO& zFSW1v=FY15K1Kgm*=GGUqmkWU3!}f<1Xj+7C5q~_<5(1<@eg< zcfQK@cB}bw%wYEj=72(BNJ_4+Ax*7rNFd))YE=DT_SH3t#6Qpbez(y(T3;;qaaX{N zR(g>lvO+!6wMv^fxf}j)>YPN=%Q(R77$2ppFgvq80^1v@uQt&FJNI1AJAQeCYFDuv ztiAx+T5g3KyC@o7!w4_-)+^=m!$)SvBQRc{Z0?=w`&Z51_xx@O=}gOgSgYPO2SJ+) zjbz}Qa?h@2C#@%Y6Fu%3$)}TIVj~c%*c1f4JsC0VD6CdpjrurE^ZO<60T36sfISaB zAIfw2`$sa6wscbx&0W{Z<^A-c&gjm-wA2+CLh8FlB+$?es)TEJ90X~VYh(&U>8@|4 zGM1ool6*2XNPwQGXr?PmNrLjbnFl(UUF2_Q(C#Z_|NGAu+cgvezvvx-nK(rgIN+Tt z_P_%&x=y2Cyhpyp$%9R_}Zh-9vsiwPrO=>+c3{o<)~-}q9=uGju^;AEoP*|F_y%bqNRnFSqKVt zbRLzTM2Wc(D|D}<(QWVj{9|gujr>62)R>&9Y&7vvr!*4lZwZotVjR3to91VW&!t^t zaWfk_$M(M$LU94ZcbihT=s`}B9^#4YPN8qi@MQ}^-&9$r$Q!s>*`s336~o@kfzf7& zj%QKY-AP@31qZkIR^R}DlH+(ZXw+-W#q$bQHIV#gR~ry{=oQZw?1CzNK++9h zT{E%iuTf9Z4E>DDH85D)-78xBjsYrt;&y8~BNkvQ1c@hL=IwsTF$Kk>QA`33z1Ul> zeB8||DB)M1yxGtq7Oi(iU2E>$0A~WCVGhioX*Srz3Cg?26Tg~O?qbqkRCgyGw3VM^ zCSNXTRu#j#R28%C_Bksr_*pA%Of31^5oybm3qWvXtM^2Tz-|U2T-h^mT=pXl9B@xW zfoJm5%#pn-d$~b{vKIvsih*3Y@h1BKhE0j5UynrsyEp=cB!^h4z?(4dn)>(YyG)F@ z7gx2-kKT=$;eef8ME<2+Va5Y1A+0P2`Ky?Bk-~)Aque zj-c2S0cDLNq^h_|2%6Y1=+FG%an6!-#ArDkyO*qUBIbR2t5CmFLf~DtF_~E*2H1hh zLWd-`)Zc_j{+7WWurEOQPK42*pflxZ+~aPIt0HWQRExV-Fb<|1g!E0G0GkZ*3DB(@ zFw2Hg6QEG9j$pv1yUTPbPUfX#`!xn8rSj$TD+p2zrklp?C0r(7p(>5YC}(87gXDEm z0^ryTp6+e9*rz{`T%#uv&!v%Q-=70S^)Ooe4G@Z{)vnP6@W6*Jm%f=JLoEN!9h zR8m-ogkYoqGYby^Xl7lVlwH>d_???Pbi`W~3Fr|lp9+^<&AzOENFUIY(=J!l zuJL^g5}eI^fDPj$gP^+ByK?6KVPi}nn0e;|;-*Z?MRrH$9s_I#FCAj;SIUaYjT5nsSv1?2Ge~uKktqG$X$L$p1rVXlMtV7B za`^YXKk=3aSz5jglg2CRh>uzWh52liBBbveF|KYQW0_ZNtLg_RW}fnx06zr`N`Nbc z2bezG2RKW4mtw*>Xt2qV35f>>+<2vaaCK?Qc^n`Ew5ubPS>DyT4Z%+kM+Vf5g7dXS zcZR#Q0y1QAN$i6cBng^+5k?@oNtOSG7p8f){GM|tM#}rAby+?SF(4j+UZ;_`I|(s3 zoI@W`SQI-QBG1joe17p^cjtsDhp$d4j*Axam%N@mos5mPbMz#Ym^au)ffLlus1wSP zkaT^Z9u7OSv@Y6SuH~296XX;amkDJdLc6=Y|9ca;8_ZEH(75i!mQ&-_OI_Y;L}3xi zMEK-G34eQgmQDv8!!=~8GYb+VA3YWW{}|ij;{BYQ7yns46IJ=(lbehUq3+!@SLQZT z1tzB9*(dtoXCKQ9qeARqzjnBBR}5x`nWa`BYqCt9bL5HLr@D-?Dz11g$B|Js;jvkC zo(^Im6-Zmwh&!7CD`HG7oL;Z3vAgo* z>36aC9|z7e+=!wFvK1CJpm+3?q-QK@O|KdO^8s$*)=+sD zLTW@Y`aJ5fYFcCNU~lJz;DH3$M^uSZW<=B#L~=>4+5=9Fbx+YJ; z(~d_y5KvluH=j5{ML8y_%y`yCo)d6ZnWu6Y&5DcjLrz8Bfb^y{lf&g80x|C!Ys@nv zObh0G*V{gcFrr#7$nIkwYx0B@4}i~LslNO-*Qgv$i~G|s;5a;PdvE6gF2wx}oN89W z&=_zM|GpQLF1(^OQY=Nh0&mBg5*TuNTpZ~@4~ z)3pfSw*9O%tHDL?Q1aI#+_%WJY@}*Z$nFa8F#>t!)a=6|jE;(`Yx5Z@##2e*Bc&70 zLi}Llx_IagjcKja*9{5jh^&t!13hE0+7H(5&=HFM)pYu6K4{xu#heIY-X_)4!_VL| z9-7YxLM!5PP$3&YjM)7UM%4oZCtz>ZD7b%z!*;J4q9j2QUNmnz$=^0Q)}Qt6OrT?& zy@)u9ncPi!7jHH8%F&>cFLZ$Tj_P7}1(;#TfTVQb+P3UelD*W%%?`;3GZzi8k3EPp z0BG<*aQH4qH|Jcw-T>~$9e5;7Tj=?K6C zCJ^un&eQDpf%foz{kHnR9V%1<3_Wu;RPic-IrUCp%Y5ib}j?!XMC z=hAZT7B~TiWis=Cg2P^k@&Rfqoe#i)(PzQ;YqT;1#mtG71_pXRZW88WKj%ZTT7H5% z_vu#@?iFZ!y~h6hL)l8n1uUJDKvTyiC4{;B1m~Y-lJv&QJxn|&b<*$uUVt95W`5?4 zd)G*1zz1itEqKle?a2?l#jbKFI!2qX@iOyFFq>LDNmc6>-p@`%bn+Q9p#T9()@Z9Y z*im))i~UH?${dJHTvY7=xI3P=2T_oJ@|YxvDvFdJPjT+Igm_df%bt=juXMw>3t%Hv zKA9Clx1W6z2JT4(Q|&1sqB{M+!4f-7p47IRz54Qno&4-aS1_~w9M-kK z7`zK1S%#x2{85>=Ht5%YZNW;g)dmLMt;tWJnCDUx(crY zgiCO10RvMFxviv5tnC%GI|^h%*5F2kEKzTt4evk+mdP=ZF2m$V{okoH4z~!E9wRy9 zX}jwCiMujL+SCP3+0uqw41HfKHpC!I5*&zSH*P#-7xY$wByG$b*0gJHg{H2Z&_FJEmsM3lo_gog6D zDa?FTMwEz7Bc4rjW>g9)b{)QxQXgRr?XCLx%WUN8Ov}V=f>UT}#6H7e_{%swb1Bc| z)vvx2}YfXszLqE7EXaUS0T_o2!2#kz)0`T>2N zfKg3D7$PBkXqAM~=9h{4YZ&O(D{tmSx)Wr18EyLfXbrumck3+!eg-W?W&KK-vSw>r zt8B1Oxk_J8)K~CW>@JCwO=XHMR$)op!N@7;4-k^;b|3_Yvw0|EuG&F5RkD3>+$XhK z{496zj`v1LMJx&ACvz#pjMjK0cI-Vrvl^4x2?#dXPr`G zJZ{)4^PY^jqOy2@iFG859vJ9*eTnQ1qG{S@EC*dC{eqG2ipuBPjx%9_5_ozZw2DPZ zP47Nr;-5RL%H}!o>y{LwHEk%CZ6M?@+xhJ6L;)L-O)%z|ojFSyRD>s~CbvdpH{}VI zhWCGdYGUx>=CR+?20_bd=dndEFiH?H@m1MSdzxz$2FTcbbGj9F+Lnj_6S^2NmpXi9?YhhsMXn_V+dGVo9 z>|7%@_fQYDc^oA)Z>D(|35Y$uj?lU0aZg**8NIZ8rAWc54nElbv1MuJU+i6SY?mJM znda+3BhLT(Ifd1yg7;rNK4vaSJ8frC_}8N>2U!;R2Ohv)hS{6Pvfmek0h+4T&U5Am z?rIq);|29sm`gBWkRd@uWwNK_1xP_r3@!GIWW@qU->6Z;NL*yTE2#RGp{sn+h1;IA zU3n~k6az@-!s#$hcF}Vm!WD`5aj#pUqSxBdxiKg?ffRT|m)FyWI7u9o1rN<39O+UL^vI?YwcEUR+n42<=!U2*4_623 z&qChq{+i)*+DW*v?&#hi9pZE61li+nuEubX)Sd1hmB18Tm9hZu6?@az6@wWjFeK2 zU2jC8w>kQzdBeV0EH6ebH9g(HLX4i23QQ2_f&Z3=EIJ=LL+=|eE1j37@M9ove=83k zKM?v^OsZd`oU%2#5>|AD%iGP?no^S~9F(Q=1$M^f+s)L>NF}%2tk^$i9tRta77_UC z)fm0G$>PE{b?M1E#pmlfc%4Q|w6yMjKl$O)AxxlZc260cfQ97<_WX%}gD>73>F*`f z)Fmaps7$#w&HdaZ-QMe=wC8Ov#-cxn+&iVjpzaCRbw%pyB{B5UC+c8xCAK=w5P540n^}0TU*Kl~9>OF{% z0p>@oS&i>YbcVs@JWp?5ch2sM`ggBiB0cY29RSBWa@&8oL0!DXq51N8?PrU@FI6#Z zNlh~9Nap(SnM!5Zc_{0CpXGlee%-(an=B)c!n-YUA;EP*`G?N(@x>NRWQZx&nDcH3 zWdC}Ix~N<`mD1zz_nYYAdKC#l!S^GTQs4gZQ5Q5?bDTu3mW0n4M>x3SPXY~l?mB^a zY;?F1K2V@C796WO#`XbCldaKt_CS>t$8cH4phHToG-1`_z_RhRvsX754?NsxAlh&h zQ8k9QOdLU{Ym*jpilnlmPne$yMDni*{f}%s4pM)5P~h@Z6?;9GmXMY#sr*Qd4w0W; zH(&ad;7i~(#{vb+OLLs1S}yZ+JcgaWM!df(hl7-e#EV-VqtdBysK z1L)ZA5l$-;PxN_}lc*y$S4dDVEFJ5F65Q0o=bqxLq;>qKVBGC~3<8`AO%ED2{6{_E zj~lj7v){NeO;8Q4KBp-uwi^K};hU~~MCm5-7rx)4q6mg_}*BVnS)f5cNqdE zYyDP5i;baKzkUs2_1AN~U`^z^B~?P4`*z>jgCz*>w7gBb+aueTQ&GDjzvNN>8MV#M0lz-0mQHr??(x+}iw-$+wgy zbXfYg40khQc$n7Bgdf;B@AP%ANmv#H%IMUn1WPI{hcgW&50wOo;IgoYYFe zSz>ntaI!0H0pa?dZ)-k%8SqtBtB_72`Jv>-4l(k^bs2>cTMy*L( zy}eZu3h6)1gIbCGc<{QF!ri~e3xq})m^ngdF;@2Wc(RAyo4t59sPsx2H&$MLHMR7Q z_9e7gyhzF;)RtT8;t}@w?&vY9qJW&KO#-WpC&hu<3ALKa6}DgIL|D@#vsrembr?U_ zuO9w*F}^PmVg-Bf!lJ-~A8~*8X+B2obasHm{=bsJO;kdq>YKNXF72DfRF6LzA0DpAjSHuCF^#dc0heqK0eRMj|%LTj#&Hd!1$Hw-gsy zz-9KaHmRmbAm1mesGz|D1C?-v{rXGt<8aa8Yt+%QZo=eODGc@BLKL@y$h_h(zL4g||=4qr`Kmmt1pYe?JNw1J+$oYh3f8ELc1N(@?r3kjYQOZiK{Y#GPU3e|e0u+qKR!qSMW159lU} zy;rQT)(+_E*>~H1u|W@W%4bG-zc?F(GRwrMgv4O5uGU_8Qs~>#hy^nseZNFb>gLIz$;U0oAPyC^k?F_(2tTN_Yzi~3pY>#9@Ju^o{322299a4j()oWA~WEgu=T zcd}u6jC9JKvnCp*O-o49?;7T{8OazJipn%)uatvK%8yLj7G3|OeyTG~K*)aC$~7-0 zP+lBtf9*;TabS5sImQ+6GPlK*lBab;XmZAeo??51(c<6>WiZCEs_LN2{a@h6+6P(z zWu*8M=5mw$BMrPur#g>Qw&H6Q35~TFGZ7zigDe}HptqAyj@sR;qwt{X@0#G|o9=zMrO0R1I{P$4xU$wPp?u4W2Ruu<@ z&oC*Rq-(P#mjdpCUq5{dpW!fYCUDiCRV~6ePZKX;KlFu93R%;nF50gcir>okK`hSx ziLWPBfE!0dzw;j!j|tnHlbRVpq6wjrQ1caU;CP7`LwRH5ZDYiZe;oo6G$GJDD|0EX z`qZn`z`gFDnB5;o@{@n;VuUp!E;EZXE&(X|<#kO=U9lRznioHns#h0|aEGY;xh$@X z%~R?jB7Bl2eeHu@OA{5twVVoz-F$7XmL$aV{?`r4s; z&RaQgW=CJF=Uc4sABM9-g9rK{-9tMw*yc^{55I)3Ek1f|b4rL;pT6-%Y6J%CA%<$u zh3E#c4(RQ+5%8hVPrb&oXzu$#{eZ7;WgJ32?+!1D_b$Lrft2^=yKI82TWVax;Nc@V za9lXBn;vZ==g(c1yS;!AE$kUv+MB5=s<_W?=42KJ6X+0D9x%4jE^#j`T_y=JJipeC z$jFJx-Rl*HORC>wxL3oP35mms+0nf{%)!p#f*l@x4H4Z`eFPnkB9a;?^kQVBu6B zczFg{Emqr}U5!e?C758u037Iub5q;LB>RaH>_gcv4 zrDv`J*H8w+MaI1FHPaW@2{+VVy3(3|jPpS)zfJ%iQgk~4kK5C~Y;58h_Oz8Iu1!Eb zUIl4U{0Elq9ef29ko}8yv9ST0o5!|Af# zzyIikk^#Z3Di2}LZM2rTT%%IsJg(s%8k$GVt`I+hKv3~{$*g!bLykguRu^ZuWU6E? z)FRY@>GR9oNR-LNtS($RI}#k|Zw0+rF*2^yatSvyKFuw%+iQfNwu~81@OTANlLMDY z)*=+<)5d2>H?MhrUoa+glyx8aVV>%>6p<0B(WUQj*lajcmLTmA>aj-Es8y>iXc-XO zN?wFnT&md>BPIEvlJS6uMACInp(v-xtEcYezQ8v4)|<*IaQY91y^uAtr3fiZd$ z@LDiydgrs(`-`$T%i`V4X`aJY$ixCwyn>w7Mae%C+}gXceJb2ezLfc(6UkS0b>%Km zO87cV*`Vm;Y1tLggyq@dW1pMdP=;Q*|60oq1|!q{ald3(3FB)2M!E}yywnFfny0vH zqi<8M!1ckUIM?!hJ16+7gYV;(Af zB*}xkl^Jz^C*(S|Tz}b6Zg>{uDG4gJ%RNcKN_uRrPYx+pgN&ojBLp9g=9d;z7qdc9 zJOAcb-$89d8eOZHWo#k`C7+>DM%)sHMe(KhED0aC==Q)qxg=~t4_i6hqMpuK;%`NG z2%b%fQyqTgPKea1BCn51PRM(tq%@bPUmueiH{S=s-0e6JEbSQ)Gdt@GB}Pu9=)^>A zHf*?fY$dfxe+ekG7%=4FPi@FmAqEvKHK*6zuWyiJ#R35Dy>^p`y>pN$8sx=S5N4XB z2ifkNpma{?hQ@fI!E@hVIsf;y&a+$bur70ihhpJ~q9x$^IuUgTez0GKL=6L@!>65A z#hm`$Og7W|DrQvIMp^|6Gk6r`7ZLCJYmmS73mr33r*;wASmDVMsX~Xrw~C1%?B1u; z1EVVRl{nE5ZZ!mRB(G{kVIP+(K1vb6(5N|gESi~DsWpcK%Y$x>F^O{g{61mXk-DQNGO}EwQWq5)ZNn;_O)M~@lOHze$ry$j==i+jV;t_yaD#2` z--@B?xm=Qfy;1tBVRg#P?u>j%0SwhTe*WAisclWgcz2hAx+^3slYDpHGvRT*3Z1D! znb8>Z%)hCAQE}4R>L>BSJ@$8#I>emtCmjK1`Zt_gFpAQ8=UppL{JBbVH?HlOOZZf> zUjzq|(bE_X>8Ag8a4+{t-ESs5n&;n-c8H|Db~8;94dzkwn1Aq&YJ8;7?!iW2L{-!D)@|ziiWjwTu{MQV&yIoT&ppdiHs+Wp8-4(kavwgfZ8epnOxvXW zEK|{9Nrx-4-3cZj*J9qdv$y<$id3=#K5bH!26a?B;*jp+sN-Cp7R|(xqyn7j{DYU# zWf^wl5-6teWO}QnJgL8vL&s{s<=1=2JtDIIp(8FbZ`vA{D3|qjs5lTz$F@$)R&WRi ze+h$h{ZI;>DsZ4|q|jhhZQ7aMznkgjUn-J#$)+8>3|&4$@^)~*Ok?iQo~MeT5hYgu zUnN_{R~jVm}#6hbNb)r6!xq#0o^F z-mg&<6!xUSJI+O1TvYq<8Zpah&vMs_n`T4Bj3Jnyk3rE;6x?dR^%mA!xk)Jp7}F@P zGk*W;S@+<~_uSjvXZ>Tj_4>Tf_e!9gcq1+msLvwwVN@EzCrBmkdr+=A9D<7rTEicL z%!9SP^Tx>B4<3XK>HpuO%5%}&i2eyuRe9&VI{rObsCp$R%tSMYb9cj?d5enQNNl1 zYrkGDXCR|!OOS&;7gKI6^NLSYytqKd&^v!^Ds&EK&e@%S{?%b&!6d~M^<8WXUhU(y z7w&I%b#X*mQqnxv5dz-rzNn$@y~{LK3x!81?=iuAOBlKFAf`%q30?Of?(^6}OD&1V zPwK>QM1{V(3LHN{eT)kildeMd~mopm+l z2ze#@ZYQe&>_+Ip4qla6LyRPATuk6EOtksAvZ%?<+I@nMKAf~w&1Z^@Me$vsGQzQi z7QgRz*xBummyAghJFq^6hf-CvwJ(W(l-K>g_plpzwT6P0+;HH^vwxE17Z56cO?ZQk z?BX?HC?U;Qu+4WVP1LeYsukedR$SyjaUqRcby3i2cwX)$Rh-~dXPy!~dY++$vBl9; zj$^}JO<#VeFaPoOXx-(tdaWvWQ0hK4Axn%mp%?CRyp*GDw8d(fS8A>!Fy@oS2y;SX zA0zT2R~==4MKO+Zd=Ja&q>#jrKl4u;Gr)EU=I#3-i2#8XuC zxH3^uh7bX;a)7 z$C`~mlC}%^(;5Lh51+YJ6mmkd8RV#I`j84ewI8m=_6 z(asM)QXU%^@M-a-J~Vb6_(Ed+#g+Jyt%3rR>NmK7F3v^-C7Sv$PNfr!D5}<-y-bIV zsQJ@L`Ut~Zqj1M+K9d&W+b)WE3^iImpDx1Sc4-(qjg_1T!Mu8(A+T)j;92+z%3-2W zIy(C&q>udLo9nhaZ)w9~;m%KW6SMWnV4y9(SQS_)$7Z&6`m3lED*8q+G&>#{xsX*S zl$$JIWFK}U{Y1m4TtON!c;w88-ms|X^XeI+m&}e{718ay&eNdDD`dwA3>}rmchz{k ze(bi45sNsJaZ>+`c~OE$oUbaWpQM^t>$lCI-Vc3*!rd-$HRn#vQl^9PAipeU{APfx(J;viNOJdh)R8>K{} z9BnduBnl5j^LDYfo7ycaKa5e#G*?tb+Bz2gSj3{yCmmQo=qkzg+aDsA%|5NiBw*K0PVR zs_V^b4-FQKY!i&yuS{ zx-CA<{z0N+Vz8Y0$kHV$Q41>4EZ>U6EJosa(LTn}4 zco9=PA@PrxLVso{km3wY@NP5dgQVJB>V!I6{-Zv*aT zs_mA3_vLa%l!H3#fqG6!4e=twd`a+!;7uhM7h6~@v$mZI27<{50+9uIwJnzqQ0$pf^`qKFDAIyL?O z-p))cR3!J0cl|$-t}-mD@9PfT-H4PlNJvY=Al;0JB8Wo@5`utq{^;&Tx)D%98fEAb zDM{%@x@X?Q|NYFvy?5?C=j^@LUTbYtQbD)%BEy@MWzdWJ=zP4U$Yck-;(5P`Wl$*{KS<;oN!Fr@E%?4|OyB@jd#8w6>x9dKU-!v*H~a ztDn*2x6W`2mAOCTv{|@7^GQpwc}F|!-JN(9@-Tt_ESR2+u%K-OBDeNzts~ZSRcsV{`PwEv0D%797t_Wqb9!!{EkzB#-r}4MNYvd zV_%wbEh4aA`yKe6T#%!GxMv?9IP3jBe@E`6n3z=R=|hDnm;KF-;)dhrfr~lzLKToDZ6b^TZnjW3ieWNhnCLXrEi|ORr&T_c-c<9bQPm6F_Rc>XU~jnH@=I&F#&&YB z8p^f82lsl6me=lp0R~7_n>_QePB9paY2-}W7%rA})IR^y{&Zlm|2V==pGW9=Qv*`U zCzWR7gllHEH>4w^Ug)5Vf1mx`7u39f5PCsdXz-_q@dW_}ol zMx?x^(8*IbYBI;V`Jq{JTgEYuSM3OEprJ<1jq1&6qi-Le1#JlY!7RwG!(3CJSrYd# zY6m^gqcyH-ef}ZhsfEwB>NC^8eJMM2^PPKS#Gs@~t1U0w$W%kOYRvuks7aqLI&r&T z*y=D&AKD5J2B^2>8vO9Hh#x&ZO8nyL#w^2+6!^N)bBc)DAM8DG|3ogTWsv{5YcH*3zk0E`^Y1RvGl5&) z(qEt(8vGh260^VabCDAB(lZel6l_Z^sV=GYT5<~J%hYI_|6w2eTnmnfx3}eBwwG6A zJtU7bI41mEvRC^yY~Mj^P{HkDDedlutPNt%i-(o*l3Lf!9bS$z%;Gyjv6WdG|6HSI zrXSYH3(k`Vqc?bo(@Sa7?|9|sh@IB4T*CjuR7kVYUuFjtS$puX} z^T%TI{cuCtmaQkGpQR6(zZ1Xy51~eu5Hd{oX=TFoLqd?*iQFJ9|DgiI zH`wmXzamG{bJqeax>0Cy)60BodwkSa74q}5h8DHBo@Yw~aCRxA^^mMpL8Q=4T3BH@ z59{%hJawtY1sGmI*rVJlws-5~0Zo;QZY^rQ_<0qI@H=cVpViR32(T93LouPH{KlHw zd9!SAxX6^FV);Yg+a)iPB2D&=Ddx97mb3MHBvtkszOfa+K^~}eD5KM-&ggb*8<$V2 z5a@5=n$@i1O^MTS-6Q25UWM9yF*{RaFMZ*4&jhM|nYD`AVPJO_!S0^n&`mshX$%{NcTh-a^Ns;2Av&!aS=DN;|0XgPRssFZt#*g^!(kpCZWFVoJ%G`Wv{&6`Y8i(VH z{_C2Y(B1M4m?(kZh$s7F71wC3Cs)fif==^#%2&7@N-zypeSh)(wDi&YfTRO0TtnQELWVFNd4AG!I>efYCFZe!f@2^ zP{iH7H~G;Rv1yWC+=pcq;vx$CRRzy$AD@)KTXn+F#2;FK(edyg_H8JNvW zZRR-kafaoT(F?QxrvyKt)Ws*8N6y4cHsmApE2RQ{fuJ4!ERoVW5k;JuZSkPvmR`*7 z&>Gq%a~Y_KWHE!Jz0;LKs$%Orjgc?JWm?i_d;m`4#6ajBV#vFkr&Hpe)A3jLeVb4T zoU#(f0|sKhk%`i1`<`a>{gpCSJyn-ovFASjCPMJCh;0C>>iCoFoZGgGR#LSd8$pUZh!Hnzif_h`jVSN5z~dmlHqw1b-=%=3sa>azT0Y{ZCYxp zD~wP!4ij}ZYtL-IrpWCTr=MN%M6;TC96*ppJ3B-s;7jd;Gd#?r^|dBLh4=5$kANfT zXCOtx5&J`1&$LeGAi&l^HdF0ZDo=`eI)6j?u9r!vjBYj3HEG%lAgv8|=dt#8{WW!o zXyNNv?`W7fMW)`%2YQFLB$o9mvy6|)pP#fze9G=W`@@cF>##U*xo(6u=67hoEs&=2 zR5t#hvA`Hx$(Tt>Xt$2`hpo`1p4JjMM!*3ev}Y;$@r_4(?{XhiyV|(9I?$t@wi6Vm z-=^)2@Y(hm^T7+uTL^bc=A-^D7#kfWbQ69Le&())LmmoZWj#B;vK!29+@q8q$a+Mw z8n!8u=;47wPGy7U&nKCZn`ZH2x;+u=xw2ZmD|7#n<9o5PnuRni{ikzsfH5E`OLo?vsu0u}=w?N;lne-XC8(N`@9kfD6sGEDq%xb&&R5Kh3;# zmpCMIzVyr%&As92pMg%9QHMce5Pe*{j2AXmk6$MoA{*b+kFiAtXk!!`P8y@j!_S%S zd!2HF8uL*T8)3#|=w#}#K7#XyA_Eknzx1Jc|Gj~+Zyi`&#`>9qMnv3W+@H=ZnIFMi zQ})^RM-_y+aht0L`pg+pnLbBHyhOx#*+}d=UVaVcr{|3w6Z2n_ZAM7jIJ5nsMSNYx zH!)=H0K53d2&Pot$~anW8`t#vex9KDO$d=y>%`0KxG@0aF7&{6-xjp~sCB8JO}-2| z{Rziq^q@xz*#dK$8|(ZKdw!q@*Yx_?$>X*dFn9P9kB$3;#CT*Z=s>A$oS6{aTW`e! zhO6W)Y_(r9`WcKB;Kv_lvvnUNmZ0wy5wjm~|B6p4cJMi`<^kF4u9?~xEHBSbzyMZg z!m;>0=&ziqf0&@tAGKhNwo5B}%iV+ENLKHJWjoQ7w%usHtJrBxBa7N>)JW>Sm;8mNgngg06nX@!=AGK*w8x zs`JM6yNUS&k-oRN*5Q3xpENBb!4VxBL9zY7WqC%Frn5(0wS@3LKQ!|hzACx&7LeWJxiF=$zL<$lIX)Yge&yIuaJkUS6(j986Qtg=V!<;y>In;e_qU{ zkRR8-YgD)WN-kKC%cShLAZ~j3blLok1@-(Y=I=-c4zTcFuHE4uy=weG&L|;K{%n~y!WO}@gY5VRQD>u2(iiodjrYCNav)s20 z&gNk{`qVO8zDY5XS^eSRZ$A>^2a=w;)}MiVtd~hZzWa-=!j$G@#%}MN8}s5L%8KH% z19FI7cR>4Xa@)lcoM~_U%{G(HxSXV3wnX zeM1uCZZfl5376bc8*kweYHa&sIk-*2!W|Rxq{sehd^Da5TKHmVsZ)~U0a3Ss&YN-D zk`NkAAqOLj;n^cGjauO0Fwb^1x*L3JA{l{(yr zjnK)wFJ=i9{%2qg7YB#->8h(qQL9VnjeHX4X`*0W^Lrd6>#PyIP2Ut_l6EHg-X_5> z&~V|fVs6ZsjpC}xyWf%`jSie!JTnI!pv$_PXQ`2Xf=DIfc#rbtu&5nr1RKDgj~YZG zYhl(b;o^z4GY1T^W}+s-Fq>6$e*z2uqnYJDwmFO1Zt{LKq~ld*mUonSLX(ig8Ki(U7trMauaUmeUA&5!~1or1N-TgL;<-DCyHLe)oPj6_-^(srBj{lF!wm=%ApgB$p6FEnDwh zuI7egJ5TT#EB$Ev?`Px4JD-7tgrT#hCF1P;M=vW=HLzPl|mq%3or) z6J-%3*;=bHY~sSwZi6g)8H6|oa4NON$(AKV772iyZ(i-zQH9rMbM;V1fr!}aUuL*Zo zB9=X~j_Z8_-buf1gX%Dy6?C(FfA3LM1*aN_FAiJ__&zct#AVisJZYou!T__V1y9R2 zt&N)gwBS-D_DF1^FO9%+8`fl>AZ7qU^?u^z6?ME;=d-$5*ql}U3Pbro9X!VBIG&`C zSI_%J-lGau8{pp~(swC3U4K4d)+0`DybQ~GotmyJFLM+V&$s=y!tE2M!Gbjb1OQ`u zFV*!p&~6lw`>D(pD-i%!Y^8FJnT`GQ!W3p}QQZ{_(p%MA^4? z`(pw_&3kLo)BW-?WHz0Lt_6_d6w@YPFmj3f~AK&YNd5q5pv7?sdpIT#L{-^F!n#*3}sgQH~b>AH|XdyJxV)%`f6-QCUT+{p> zGu+=)F2t+Ec(-pKw$`<~LKT{)<0E3;W?Y)!4=H5iPF5}9Xg+IWdbIdm#_mEh$Msv# z!TiyMb0DU0kx9Mw^xGx7Btzaoii zm|oHP8eJYq7iC5CzQJ!7vu!$_Ps?pD7&wlMU(nxzVN7a;*BYmh`3pGur-PzpIX%+YS+?Lyu#8=#` z2sO>@eR^M1i`9=0q`g&ziDDwrHRCqt9IS)BfB#0a4E0#0haa@Ty zZU*GdPi|{d+Gu+pZL8uJtf~8R`n0pBB||-94F_)c=u!*^g6pwafPvX+gJapo3BKi^ zj&DfKrAmV%sKbX{N3pHB@Yj zHx%D-8!gI&Vy)I6sVJnjF)?I+91{Epe%iMBaVSTsasM&v10fFojy0hX!X1XFZ4oXiP5Xwpf+ql=PV-s z{^KM{$P{KgfkYlX;uiXI>01^}nJw4vJ3{T0 zRJgr;MKo|`oUT{b{BS)FqC3AV6jpnQcnqahOGE(sgwu5XsAtqELdt&F*Vt2V zaPi19M)D9W^^Z5pYlnq zj}-6X<%jPi87=h@8eVu~xxFI%vCdIKSZ_f2K&g?zlq)d3E}fN*}5< zRY@`PEY=#qdOjM_A@8m#Q9GYzM+&CX1z*3^(m(=e{YFMw-FM7nUoPYG=%b^w z2&S&1-9Y=K2~YHc}cVN~(I$oy`fv7zmlI6eUDDW0rD8`^=Eo ztV5r=AC>aGQh)k1L+dL+ogGhrQojG!Mdn4JC^7m|hUP#jCQlqr6w`w`;A7gv6C zT*YZDkuf_tp7M_{3t2jng_SujN{ig_K`~$o)-$@w5#Q{EN*D5+3^hr*fJaIE-R;<#(psRdzb~UB~@u3 z#!06LAt<8&fMFni^}1Qq;>=~vcSDy-T|xd(IM-il9dp0{paH7mQ>T+&fdR75P{-m^ zzQ-C;W^$w)=3cL4kH$S^T2S^BpQR>wylF=0nHjbOOj7>&@M}3w;{O1oZVDrlNGQum z&KZ;^a$}X#?#4~OZV<{8znw^vQGEG~!mJ`uQ!~G;1obuX#Sya6d7h+W;0Sf1MJ;{E z4WucvxhKBYo}FlCZNd|VA3a6whD%1x*HHYdd;8g@lsx!)sv0as{q!Gx)w;^<;u*)} zyp8&p!{=rUzd%NF7q`7804P6AX?d7xet9U`1OH$#UsHCcxI#YJ9o%QRN0<%myFZek zs?a#rhgiDGCjJ%AXa1cXK5^>s61o{D>F0pQ!&tt*dU>|@D!@_*eQ2R^clwLKTH;7v zOQg++z4yF)Af2wHxwtAVxg(R+u=VKQJ^|mXoJS<(J^qfHk0l^3ndhx%C70=BB=5ly~QD zL>fzZ$mq>E6HJwyEn)^J*S{Q`n1wRScQe1jd`v1p8UZgiwmzU>>R%~{4HkLaec;FY zT#_%={AUd6fr0crVp7ZP^l{&(&Q)*w!fVAPz*^ zmPlZf`)U-4`C6s&zOVe1wo9)!p1CubS5?wXe)~6Gl?&H$zRi+P1Q@+%oFm2QHJXoW z#Q&oIi;o(nrzfo>swT?JnaGFpVedSrT*_m)ORV9lAHjDrHr~_M1j_Y`Ix;&{dc$s~ zZKH1Rwo#6M8F!87faRDRM02kK7>KYu&2~k{xR41s_+d1UJRFJrph2pcJ1_XGO$9LG zh8sWZw#YquDyA*+JJ#`M$RHYvURadQ*vDLh^t;v)t6UP>n~6$`exyUbQz~Y(P)i*a z1dgu?G;Y~p_WF~(=)3`Hc`fhXe;{V+9eVY}e}B{mf3CWTdRkRAn^`%NQVgE|84bbT zoCRaLCRFi8DydRhC1TI5x7ZyY+Dbot23)>O#psR&5o8a53eeKS7lS*o-YJhdZk;`2r4m3N4YSdA1zs49_BH+Z@Q_$dOlZ^v zN0rpV{qhH7lOah1=*?`M;s)x1%J{N$08ieKS|A@Vzqciibxpq2ozx6=EbUM^za;&u#jC*VbVLc=GY$i}NTYieL2Gyp%D z=?Pb@JWIb%Q>>WIttZ zHq7)$VN-tV(qg_RH(*wj$Du-`dtk4minQ3XGh~T#Um|0q0Afv!J@Yn~B(9gg2cIxX zXd+^=f)4Ib@(s*}QR`3uw8Zn&4uw?cWsTWXJhu)Qw}e(;E@7c!Yb z8@c!VEBf+l!e!|^VngIG(_G_wb$vF%rX2&b!t<`tC+h|#FFR{Zsf_sJ31i2-2Esx1 z?gHLy^4-fW^p>|1>9whk{0G{Zu3ie8m|L|vw(K&|$h3|wp10^zJEvaoY2>AK{V*O;{sV3SYB4Lgq_!7^!WC^!EuuL|#XRMmu{K{Wz zuv%LG$Cz7*;*_?+0c=S1R^!g@9T&2>}5mAD~+5xU)|>hsCBW*N?hvkSsLx4yB9 zvDpM-bsC}&_<7R16q8@Qc;aoyhxQVi(m*3F5!;q>#8+nP z)nk!6=7@p9tHdIoyAv;-`QvNbN9(eA%nM;NkP6QnBg=>y#DS; zK(XI_HA3u2572vm?HN}}ZAyQSl}S(*@RKdHZLqUR440Zlt`=qYF4oW0U;Lnq-f>;& zI5U%qJu{PxwfVxNwYqJ`rJO&)vUBu$f$wf;_B3TcxvVcCVIOIh*~?{_dHcY?+s$eu zZDh=F^2tA{L=^( zA8EE;ZZljrseElwL)nnONbY45^QWIsxW64SE9DfoRA2 zIkNXg7XjgZv=~fgsBpi zhP6_8a0;p`5DPskv);xSW%gVPdb9AXl)Bh(Ty9*X=OfJ4ex`2#1b@KtZxVzio->sS zf}iScldzm02PjnY$JMc8Gfmus*Jfk=a^<>@SEs8APPamx{`u%U;?sVW%(vlT%@}0E zm`DqMs>+f=4kEh_tb$eFAUnsL_dQaxLWhjz%PJzX8EGq^VC2ZgABs6l`PjzsQBjyh zFA&6@%f~$3qzJCZDXGDug#-AZO3n9)*vOfHH^!XbnOFB`H17fhGNm^lkwnvb#PPyc zP{sFx0sA?hQk#m&+{IoooRBR3IpMDjF`&l&ui=6Nk=9aGUCs{NBcoZN!u;}yNsB*7 ziVn{N3g~*1vK~D~)b{ul<2x&g%#1dmuFM>~P@L`u_*AEBfnZ?)_4Ip_;7O({!dHIh zcHQl=-opHS>CJN#%pVoi7@QNvP>9rt`nSen9N+woNsKA%I!{h!3KlocY2gROil1NnU@H$8_Fh)N;dFi;qqer${#pfPyQECK!+LX^#CRk|# zmQs(ab|47w3NvV38V8yPP{kzVoU++6v5@)eVm)gu2yKL`=V z{7=dcedPa{UcCK|gQK?@@ynDwQiw6DmjRJReBVEFZHGdAN#=8JDb2kyF~~75CCnG| zl}}s$_6Uloj@jh*;94M!+i{l%jMoE`9c42AE@kIFwxZ;`O1OXL1s^SZFK;88*B>$k z3U(%Uztur1*lNQ3>Vhu4&@l;Mtq!oIjqj-_9B?kBf0KOt^VPd3p^cG3 zMm%%`|CQ8q#~P7H!vS;Y^D&9XduvScP}P!R+?;cp7@sQw+yqLRZynu^BZ)oK;v2R9 z2^IgKY7`ei%v)aNRd%-d6Z9vX8240JS}rG|ATz@=u`3v;cQ!Dq=)eaXER;@Aoe;z4eH?I{?|8yQ07Oru>=HiV%Yz zGIom~f4jCG^0M~lc4vK({{bBNIMOOQ-53$@*aE|C4#&1Xac}rwzu=-{QE5G| zS=Dga03xYH-W?zd_zE$*W|!E%!qsdRm_!k@23#3zq!Pc5)T;fC9;7#!v;UPhJG!w) zqrrB4oYq?z+b)xN>t&YI-@zHl-VoPAjYy;G2H_wb?U?ElC+jqX1kC}Rp3aKSU~6P?!4VF=C5CWFlt(shmB}M6F(@wugIoP~!dQKIEW-4+TIcD1ij+FIlzU zcIM3at{f@xd4a7^{oUa}>Z8C~=Tj|#zoiog$y&%r=U+pKJ*47jB>iv#>lPGZh%jW! z5(pBsq581Lk$tdEoPKo-vAKCZW;0CP^+KaoQdAhun5e8WJ!X$UeQGf@$jAPAakOch z=#Y($PC4(gMIAxw03-f3oz8+kF+mGIkAT9Imc{B!Ac|<(X!33knK5IoS9-%^pC<7i z9+}IJ^Ws$)fx<-0=SJoJs9ZVG{Ppr51pKGfllSWhYBG&&n{fN<5uLFAup@Kf&sc~s zc*+Y^m=J%>khIAk%D8%wERl4oKj;XHYp(8lH7)kvJmz0RC z+4{7*cy~eL8j56%Le?HrOkHLFFD;owW_MzCvd9qo3o>%^!yJwrmU$Sa!rvO}GXGOoGKU$&UcKoLvJ06iRW%fIB-Qu6 zx1lI-_og;2(8+rrvJJ2_uh??zPul+Loy`{OXlVF}fgS0^CPzEDTbqE*I;fcmg5_C^k^X~vlB-4LEiem1ZJBXjXtDj+zQRXI{58sRe7&1 z^W&WdKsDLxyK|RRpveC7eOmwx#wb<%t5>y9sRx!(vp0NiMXj(0I8m=zKky1FiX90I zJ^$vZ!;Smma>Gcl_APhv%X>yeB|HuVn9zCp&k}<(m#%$55-`tao2dGC4&+-8wWy$^ zn=eoyF3nd}hboD|dHM(b{T(YBEPyK!PNk8CDo)jl>CVq)KC!6nR+YUvtn2R(5>5n% zwy?|O@v4^qW;He|ejP6J$Yh%1ZU zH117W4jbP_(2SkkmLw3zvYMyupHjZgSQ%jd%`M(>1sW$S{L^R=A1lEQdzyG56?^A* zWa8j^;-y#8^a1Z_5xxdx{tx)6?7k46=aCE8wmlD4F<AsT%a(q5;gZ%eY1XIA(R1(PL(hi`wou>*1j}$O^y0?A&xt{9lf{FukMH zW|fE%UW$b9^H>(WkW!!|kI~M%kVNf)X;3db6}b{rx!DrM}W ztv}q;r<3m=xQ6aK7)0tAn2J&OV)<5<-xo+O%U?iHCT3>+MH)2b&I_moL`WyA8X8#zvW)x^DZILeglqW z0I}-j^a_Rof@5297shbD6}q}A@rsh4Sce+JTML@Q#TxA<4&E`!RoC@>)T}`{kHtsd z8~^=Iwy}k&XZwn1E5V+WPV2ji#Aa8-1{glU2H#jYw7x5mhXALIUrCmZK17kIRnZAc z5&~)nJzUe=CV`p1vjoph_Ez$_&ssfmU`5I}G1nOmb2-}r?E8Pc%gQ>Nmpa*6>_?>k zDHAlkf}{A}5UM^t$`!&PmO^_ogvQ3SEHk^Z6xxUG-~IcVst(T;_P39uJ!m87Kx^qI zr8DIi_vdhgTFU3A_|5x4VE%!4d!&Uc-yqf)cdrpR%KX%2Rv3UXmUrov(cxySgoV&4 zSszCW$wJKF12+(1a&?TkU6v{>XYR?oo$f;*N#coG7CFE-e}O;633jz8EP3ipO*s=f zGH8$MO<5JuTu3=9tG#i3N<}W}r6+UCEcpS* zN_F{ALrFnInh(Fg8BJ`A^9h)=jBo^pObHI2l1PkHK3^q7ZEMTHlSAie2E6^8dxNpn z#*>dXZt4ZfoJ^9yfr)|^PD~iGlMKq<(DJ8lzQ`q&2HZH^LS;zqK5kXV#?xw_+mr1F znS~pjq7x%q&4wkske@#u4fzbfC3gmyfO*OYx+(DRK%`-07Bd0^wx4X%ZKqoHcZ;LA zq1XzdgE+dC{U;9%{(UZBjd7M%L0(HSc&|85z+VK21dv_|{u{X!r6QBcuo^-u)|CNV zeN-RL?eqTJSKM#Rm`4IG_@phk?d;-Y!~x%;QDS+@ zdymBa*l{SJEUpdQc8MasxID$*rC%E@$^Y%JdNu}(*z307#d)&M80|y$y+Wubt4(_% z6%p~5J0rj4Ivly^@eb4fFcnM>2DDA-!Coq#J@8nj?buVV_E;010ftpzXq|jUe)&W2 z2)IAuuD7@bN3Sqdq|c6wb4^?O{nW(}9V8M)fX4gF-US5Z_xeqYKtP3BL-UX5Yw?do zCt`MRtZ>lj*S;0-Juoo-hpcy+bIS`DME^;gA=OBY_D+1M``f6mXaUVFm95Xi_MmoB zcvN$X_f$co3n2=rV{-R36+oLrP$i}8k38!A)E*e2a}7aQhjNiUqdq)}ETKhd_Vy?n z*{KRGWVGa$do}`&1X(x?@Dr@jY0$`wW&IUN$$oqBln?oxMRK(v*$sEKL=YDjE>Az{wAX=);HtBHce#2|l2^ zr>VR#+=#0mW%b!u4Wo~)gc^Q+TjlpCcPmt80SKMv|3wHJpN)^Mt^#VLcW6=zI2ITF zCSu}Yco%eK#QNntFui*Y6j9wdIk)Y8Ew4PL%K+^ljGpM1wQP*ih-_q6X_n=!z|=VE zb??8(6QTC{=P$vIfZ}{?2AfL_rbMP@c=piZ0+XP(gqzs>E@N{3U+c7f+aCQ&JEM); z%zyv!=<|Gz#+KEVxP%G3Im$FsvmN34O7}=_M$i3Cw9p1|S-x5Xlm+yVjL*7sYJtd| zjVrlM_KVWM?SeKpD}833+b$}uVBwY@3Yr2|lF{;B!l`5Hdd zp2S2_S+SED;EpCkS(*FK7SJW9Zr5w({~Zf&8@I$;H3zdjq@FId`dDqC^W;f)Rb*hts0s6~6m4j1(L`yXmrZt*clW8Yyy z4kR4}N>gSZB&Ve}sZJf}KGR9E?SF}QRzB;{!LvPs30(XJSx}!ilt^STK%@-fH+^FZ zfHQurdg)IJo&T5w-mDulS?onrgkxV9>tMOQ#4Haep!7m)g5i(iNG1XuNoP+!o;(g+ zax&ZK?R|$hp<)SpuYOt=sjIaPOzCX&QGTNqWr8ZcN z$>l@d*!b6KR4-rCv;_d?EG}M(Fm@afge$d{Oc=95C!)qLcGvV48&T5~VN=TF{U<%q zZ_~+KwW@I-e$)5Akdmx0L`e2+uLb;K;^c#$*p)b9UOV(-7b5LW0d^9N;luh*snehn zO9>F4abH}dcGMj!==2bsTJ{%z6}%#Fj|^tz7A@rC?S+Oi+ zjPQ?o=CiLFMSuqkInYk*#`^Y)j(Px%h*OtqXIZ<)5;`b5HQI7>ZevZHgp6eVV%c9E z)i|wxu+~8aL5%RjIqZf|2dOWP(^M=tX(J@BjNA~XM(c2Q>-HnCEvw_&(u9idj^RP* zl^Bfj4J~;VDuj{Bm^gfZIh6i!q&Ez~iK{sMNfPZt2B&ZoHqQMdy=q^?pz+034KNf~ zVIydg`o~ozWQDD#+&22;x`caI7PVw@R!AfK=}sLOi#z?QP4xR1!|VzL7CBEh;rAD= z_is+){31O&lNA>|xeJlHc8t18#h*>2gM(fV2ALY{%-rG%^1VMWTJf9-@5}N0;g`F0 z>-bYcy}(N78MmA*OxJV&Nrx<2Ow`_0F8zFO?H71v zc1NsG6qS^}H!T%!RfG&qa>_?k3V4T6jrw?^9ky%PMfW6HTp;}>=1=n&{Dyawwc2ou3!34q=kADn>`V*|3ss?$ zIAi3KyWsOZa8!W2yp1Yv~WYr`q5-W-O_;;SC?I{4ljHUrhqqC?}tj+)uQbEYfS{lTq_ToINgn4K7`nx-M zC>oTEEjyjk7&gwvLchbAowiae-WD0oTWtx>bcJd2K^Cog3Su|*PGHeuyF*6Ft$Z&p zs*t+{XxwHmsYHH&ulM}llMyb(UrB;$=_h3uwWpFgEb8PUxDijUbo#XazQ^Dn?%lBR z%Cv~urVQDej1ubks$tt1im`-IZgHpjSO0*Q*;!E-oJ6W>7YhW!? zafjGsB*bWs`Rv8>p+*}8H-$*BK!>tI=k-wDB<+NnNQEY=`BabNO^;(UfDE5pHx6=x zB!u*{bA7?h12DHuMxnkdYqT}jQow_wNTR?aZ|-PU%_p*=+4?aFY#L^TzwPV*cl=y7I*^dU3Vix&&pXnG%y`%?--&-Y9q9#LVp4Wb;4&9A|A^!pZvX$|aK z_|WG`Bs$KXVC@+gQmM%d3%;3b^y_R$%~F#di>wiMdf19R=GpkV8Tv#voP#^adOnif z(U)C`q}?oqg87V;`oIamgUc`1Z`g2YktfRcR=mQVT}w`r_zF5kIqt#e=a=r;G{E*? zyicOO!l-M=$g*|&i{uYdw;YC&*FU)!U)EXIgGMlChD_3HJY0h0;x1YP zL-iCLHbT{2&KID#t2-Co9Gm$P|D{82ur|TXH$;*O(Dt2rah1$&*m!fUELdwwDaHPp z4N^LpkzKV|-hx>4I^^RxA2H9ZK?mxptI+nA~deWfxj2SHk7UA<+q@ z|4YX_XT_y$PM1Ef#UWsojAfCG$yPJ>9-Qi`ZKE-5Qs%eE6-{T^Oy<3Z0`jb(6^8YM zsOYdvegs4^p2Lf0CGSykJ(06=Ni;*qU`D4~#|a^f_SO7>j? zd?t17FV}v)KmKgCVl!bHZ`?|xlO?Y1iTHD7XXK06g<%PNqQ>b!vIB9tF^6M6x;H!u z4YZ342pMeKy1t_>M5mC`sX%a~KK5EU(COLUbpgH}?vAtCK-bbGp$6mGm$xL()2GtP zJG(lcfq19cfJk%O_4gg6HLw8M!~F8^q)ljBEEU`HO^5rlXTvlZN}&4;(|`O26bk3`zyo#SS0YFg|BvU%gN&!{P4*ex#4rvotz1` z;=uaeh3j>--0V=gAajJwaL$uZ?^PE*+115;hpE@&^ctN0kDwMlc0=!7S^&^AlrIM# zVl;qpvYNtD(fzPC5-fT69k8Dsc1cc|exMU?-y$+Ja%A4F&L8&JaE(G=Vc4Ew>yj7H zFhxC~ZoM>y)`$AHwx+r?kiG!`t*F!ilf{Ay(3eg5>@ZCEtiJ;04#2B%sP1Nz6d%YX zvMPm|JQGmYf|A1FHiJ|OaLQvhO1i`iFZ!<9HoOx(&gJ80QC zgaA0@*D}zJ6YQLR5OurF>fm$OOV|8QAG85Yz6FZW3tQ>wk`+>tX=y&GbtO~rU8i91 z9#EU`@eBBd82Q*4q`da5<-##)_LbE$62~ZROduR))0?F5XTs13pbh&oTP-y)kkE0R zpkaKKa-n~9^NnqRN>y}@C4;5zjgcCHQz2Qo#)FZ-?AHE!tSkdF?=BVgY&Zly6qUcI zl)xv{%++_|F+2H^QXZ0c0|0+=BR7J#|ONxfyw&= zI$1MS5$1;}jb?*hBqqMAeI?R^h4v_#{(>i$fVKn3oB_3JG_M62hxJu$EA00;1Cuq}LZ z_vK5v^~UKfB27^bhLaRf(0`1^$2Rwu%ayWt@zIDL&Xo7bO{M4dtF7(*&(%4CM_ZaZ zqM|xT8qCWwdRetnKGVKiYnkv60YCmC$@(tdor(MPissi(()3#iw#R-^NN!$c}rZ)9}Xk@z@uD z2B!I#Z=50#Y2C9$(!eT>^$oQ#tXNS6ULFy)9FQz`E!o(%rbYO!(}N9qMEDA`PmMIM zyfD$gCPUEU5BHECazbLuHueXMx3LCGHi&~5;o2&7Y431*c=%WYXk z%}tCnH7H9A`ZYb?9FCXdnt`=TADk%$Zf$1jl*7lkM4ZLJ%3C#`3*dSl?;4w^ZTpra zoGg-g+|z_qD+k9xB+=xaY#D`^i7&f&_L;AzKxp3)jAw3?bnhPZHLN#Ch=f*dKHtW!!H6qW`i={L(_;%zxt}oDi3y zbd9jn%yMH5^<9xOb{f(Po3;<;My_>;QpaF~M)p19y|9j&oyK1hriVXW;^##342YKh zzxLkqkp2cb?sQ%a>3hE?V_sY>Qa{4U#=pBOXpoheyE%R2^}}hZ?~i75{?Q80?+Ywq z5eL^~+*E+gqkX&{q;021HZK-Cw`MUfUKz3N;u2Z?bD4#D|t&TkSl#wrPs4&_2 zib0piXx@D=Q##>cX=EYzsg$H*$ac>-%ONCk;8u29f=G}UZOEnI(!uL2JCc+~#Ty_b z{*tc+^r=CMZ>$CcWo1_?Pe_3*PTgic{b56B!7RdorS9-^j^mb{HCRs#CiuZqW?O|A z^7Xn~Anpw>V;D5cn&WBm zph>Cd;(Avnt!Iu6R%wamWcjWL;b9J%+Bz8<+J(G9l%~>b$*HwGipCGM0OalcSdQ|i z0%&{pr9fX0+XCo3=ryx6Uv-tGzbWRfpjVqDx@)+$iPsbt`>mWe#?HQds;Y+*h(}_` z{h$~?^1*Z;LzX(?s8KVoSY?e@f? zdjS+E3lQ~*25|t+O0mzJPR)Ja?tzp&ok`wid_SZz&TkdquSL;*IKR_9?p`xBO1QyQ zLo8GVU{JM=%Y;a>T9Q&68vIX&k(3l{JyLAQu|xJ~Fy`h3cGekfKv_+7h3WSGG}_~rXUEK};CbKnacPx~y5;ak z7|WLey8FOsAUSTlv3)Nt19WG=#zSr4B215nuxQXfKt>+Wug|B3MgH~f{X9PLK+U7h zQKl+*eV8Rv@=p{BYfq*;{y<&rxl`b|*UkI>Q`-v5bqqk~)Sx1JJ>4rss~q zGNf47g&L1908e|~^`Nyc%_5NNiMwQ(*<`);Zzaz4HDNaEli~&9F$tbQ)^yi%&CBra z99gFZ-Zj3`ud8O$Z?Ab7BDr1vr9~Vcgj8Js7L)!z?DOf+=Wr3`N5Ag@fi-<5GF;qd z7w{o&dk@W!RgogSe0X){5^&iweUY&4%zUJl`th|!xGAp^%fsJb0QGGy zc76{i3dJ3sAxGXGVVBxU(H-5ZB2~@QY&8?Q{iNWvdlyM<106k3F`gte-s76AjyYS{UoB^LEB^0R%sPM0dYUFi9zUe?#- zq><2iM7qeIvby+Fdgjt;_EoofY1C)ucR@L;&!VR@q$kjH^BO=h>Al5<2{6g~N(#KP z+*9NU<&E!o#&+sO#nV@C^Hk-v6Upf5(vpB54}cuGk&?OfnUfDx%M^Du0f_>RlXGpF za58Wswg6qXSk^F(Zn0a~L4MhXMm?uN>`WKk%m}aI!m<~XtUDyl^!_~WK5hctDJ^EQ zeG?Q1_%Ku}1LWa>;5fTf+UO%G@)KSNP@K^A6eC)E4W!(G9Cp1Qn$_Hxy&`D4k2qiT z7fG`HClKmRiYPV)=;^0f$0$PUyzd1xPhL>|Zt%iwTx&kB@7dpF>(0nFV*m#4^)=8> zNGus7X-&6Y^TJ&|QfNPOuVd#E5RFkOnm{9&6n-_Inym7II(=!kP~2^Qlq^J_OSuvK znV-FmWo}fWLN^w~^zxf=UlI5rQ)t1TC_wE43W)Th0UcL*AG*vtGT3gdVYmv{C2NKE zl`{|9Le|iZ72eZnC%+|3>+qKuFhR?iJ;L>ly`A|U!wp?v-%D!ov2E7dr*95*`jE!& znc0o-OlM#7`iF)~YkE$G z{}z)R0fU#cy1x*RMc(^|{GS5Fdst#lTwqJ|f1i-;!R@Vn=*Lq}qP+O!lk@MbuHWD+Wfe zSC51ah?*rDWOKk6N|X@G|AVcrtaE2>FFbSqfnNzpDYEdwVJe6B4|G;fX1({8^-7)L zz0$8Pr&GnQ36x5g_N)RByz}LuVxTp`{l8*tTsK+O`P^7&XYcsA-l&nFOWs2!_?ICo zU4!zj;bk|i&MNUCSXx$@gJSHU`hdVTz?POJf8_;^kgztj|Ml$6`7C_jITpPq)#@Dw zLn+BVMeTzz3RS?|Y!!t=!)a+e<1tiaK}2&=gMPsBUb$7gPB9-~JX0=Ob*owLVs0NH z$?#)avS9V){~*_9OTU)U^b>neeDO9qv;Z1&pmmhHnM zxQw}X$P*34xe|BH<~MmfPP69<7=jIFeePIlkqW6cQ?l9GB(*r8n169Asgm?1eKql& zJr{G90!&Ia;%3pwqA{K@`X!gl-+yYd{%X))mTJ&WeLhc*Ic(T{p*C5k<8at_Y2$nR z71(oqy?*}z&mHuhD-W)NbBw?_;+f-&NM6OWmN4n_CD{H0vfdTV1_8->!~>(tV+oys zEg}(Z+tyn?qu0WL#^HNW>5-k}SX$#?#o$)Y}As&cCOR@DW3$Z2(SM=g4Y^yl+d-vR%MzhV%8lJ4vK z_ogURzfvZQW1npH6sF5BO4jy!&nJvNGwB{AB&NE{3Ce2NCS8bfW0zo?62Dgat-WMV zzDLlGULCuP0uG86pQu0V(sti)44^yTK25%J)#VQR7e|3IW1L4L z#KzAgOwU^GR-0IVFAS}!suMbNK}+KJVjCVGzKOSnqjp_9m;lmH*lEp5EHlS{oOqSb zNvB)wPkoPH5)f`}0{G*aT`8YEnQec+Rbg2bH1YRRw zwQlKj0?bJ5@;<-R>y;CZkM1zvO+MED^o9U-oQ$KtzP!$W5{yi)N1y9=mFJxOq0iFN zYj1N+TQE`p;H&{kKo$sI0E49f>J8l4p30LQ!ukw?*xH{wqaMgJkakVm^8%Lc%bRpR z(|yqs`C{vYQAO;?#G5{(R1if>sq0?c>(jn69^CbLs?(kVA>vF9AP-T|! z2S8Y35P}7zPXm{Sp4q?7mtxO|B;r-BJ$Q4@~>^GJylfi<(tb;4T5Hmc~$Zloe zmLMG;Er{FkTDoN->$~i-Az18f$CDw<8>rDP>-4kA;MDsZd(K7a zM$B)nwHH84sa>S66b<#eBZobDJxgsv8LMv3HlOcloMz`^9iy#)TNToCciHcWgO#64 z3_VDe2{=@v;QI=FE`N<&!f2{6Vux{VVzpf}ZjN=vXF1Cm-%dO=uZ{)!fwptUc&V*| z=)%&8yMW}Hx<26dRAvz=)t!Al=MyZf;YW7Xgn)LJLqlzxj1roMBXs)qISn9Z+}pXE z`5`NCPNXvX5n+u^(tTL=JVq1cmI6>!lVevR0IEdFT=;8@gZ0`XUGE>$3dHP>mXiDU1#S+q8GM^Wy$p!=DOE@%D|?23~*+Umjx+OHup#9Iy;XZ#G=_ z?7;GstK{VNX6B|QTXwBZwo(Ta(gCHYJD*dm2!p-~vRh=X!cx=M@-xQ)K`)Ap-Kd%0 zwwOn&JUa%JEHZ!3+RnU0{QY9m6yDlq!dFohx9oB9lEgIy^GXdny@E>qZb9PLr+~!F zQ={|D%YHObz#zU|=sqmKFZlU?zmsOOS$pA%Le6~fyCH?J(A zowsh^pC2)>uFW1Vk~;wym=OzfEcjNosAJV@DtRBCfUF9kc3S7Ufswe-_kq*~v3b>q zXRnj@qtL>-=idH093CZ>X#pJ0?8RSGqk?v3PmQ*gKwJcUX4bneCq|ssZXbj`W6SsB z_9k$s!}d!>1ll=wTljO;Gg4F0lGfb6J_TsvW-_G5zdYar%nJE^eEWSDuL7=iKJ07W zH-{WJ1bT$7EiN_CNJ$8ZB=mn=i`{_r(D?iqss1_puT_mTK=))JxpdIYv}aT^Mdmm~ zH?@IsZXiJ#Q)p%!^Vy(XlYi#Vj$R*x=AZQ@o;|jbx<4wQ!FZdwHB~z>G?Ef(t*oMO zAIV*aHOf>{%{h)1J(6wrsf=AsijmHD7zx)iLa@?L>|ohYm(dGnrfa&&ZD^(<;HDLq zC1*cXQ`{rhPnE%2gg0+KEM48*hi0jZet28Z^jsL2pF^yx#pWGtJoqA9`5utZtaD*A zdAH_qpQwE2O5^dxG5H<(L8arREP9Tsm^%6()^B(79pYKY^?YC!18YKR0rZar@y9oT zmhdY;O%^ajDxIWB0V=9o>_BLc@=u6l=K=h9J5b?_8N#ClYt;_bFJSh2p4sbKD?_Rv~FS)*4Qq5V~$}>%h5QzQQV9#_9!3(Gn zmKo5=c!XS+j7F$%R@Nh;xyJgRtbW|}93Ol+Uf*iQ&iAwGoG<#oCw)wu3RtMKgX%uiOM^jfgW%T{oZC1!2#8;n{ogZ-!{D z+oV5wdFL`Cc{ug!DWElD;Yy{&NXx=Hr~?4G@YerTpGPbtpqxMTL63tPSoAIza00BQ z&p)dP+0und)L*K#V?8{46RPw3z0>`T$*{n*yPSY7!bbH4=Ti2!fQAt3q>+VxQs<|a zJJ~*}ldtc5Uaoj>1JD^${0+#1Jo-%x?LgN$j_~FB;zNRrY{;KldSASfoer*FRts_< zvo=+O1`dN5KS$E__4(aJAb>d_V9N+-DFFhg?D@u1?SN$F--3KV$66cd`=h=@)!P5O z1otKkUd=KDGVJ68di(!3YoD$ryh-Ey(u)R+y?k&msF2X;_ z5fJBhAFU3@ecTmpSa}-GYFczGSGac3QEMLo&C)o*z)|_#$Dc=iI6a zO!ga?NyUA^$9a4}ljS1O2YokXEOV^3t0RUZ!;i=UtgGoBt1^Wqe)?+#3>6X~<;vZx zD_iBfuZ|qwmyf_6bvV0D{&Q-(@XrMPTN-f147yvk0iU+B+XOpo&uTW(RZRJ0!i`Q0 z^`2kM^+|^T(wM-&{m0~ZuZK`|!c!b}{NyT*zXeKW7iLI2K-r42b+dIAEC-Ah`KO}EDc6_!9Z9?m1%TYn-@2_XG z;i7VCVkzre3UiOPMbVOUlwpQ6;3Y>`WF_n?hIzdUaE&}1_x+JkYhaDbK5Rb)R?&Ly zI(ZN1Pd1@ArbhU#S=2`sCsx56kyo!W{D+Q?aT|;oq`ZIh&6|vH*p*PfG{rQB*JE;6|Y` z8=)UKA9jb+%Y850jqp|Y^J`QA-Mu6k5)<+DLf9S%ZWO8It<2Rt7VVSLNUQL^zhcH% zuUux?)vCD>|KlJ1@ki42TnoU37Z`j6P6(g`4=7s$)cG4d*_u$~36nbldsKb^!S8hV zr1YT9E3E>59vBRLT=;GKGCPfUF-d_8=>qpZN(u|0Hq=E=_#-G?(C z6R(6Q#g%goeFcm_gk!($Yi5eT=tYcGj}IC-S8m;NS2&$S-wh4mhq_^65&HNNP*oc7ubcC>Hm;hI14WqV^<$Z8{sCv{e{<0$YL?tJB`pQZE^K%FMA@Y1=xLxP@G+>Y)(rP$DcTv?p#asFAOaZ5PrF?IcHL2#`KII zHZcLUdq3vy`V=UV_~=)arbV_>%zd*}vh#%ragK2ay^7Vy=z0o`q1nfla=JI8>&(08 zS+w#zYA?!CY_d@}i?qvwRv$CkRl&{&#uY87Os9*QAt!NE;hdC+r$e_9_XMw%9y4F7 z`;tgL3F7?jT1hK!W?h%6Vq?Uj3jFx4FJ0oJNz3xqq{_bpbUf>~Z0B=D|(Jtgw?fH8mBi3A^m4#upP* z8gGR?8eo#Vjj05Fw@WxM$FcITgnie$Aux(TN)OWF#`;MSfUcQ^`*(zfM z*rN{_Kd;3zKL(LKiV`~@Z+R{6uTNODZM{~F&#teka=Hay_iBF4)4#MW!utn&ZDb+= z4OG$g?K=y==!wafA_4v!1{LT%e)SfXyZ&XNdQek4qCM8OjQ+PzNaM(GXGQQMzvlBZ zS11}QP3gU&M8G;Wj3%Kz#aIihAUinn0nM==;!iM-*H`nm8qRyp=w|CWdxV3wig+6F zi-sPh&Gfg|w(RO?sWt%q87VYWd=W4l{#eB0ao`+Yz+??BrdilR?y#?5!0-rEhP>x& zqlVt`Hi<~oOZDJ;WB-VNgRi_#qYOHjC>T5mGO#T=bG0w@v>1*S^E5cvFPo8S%6ZN_ zH0bhkkfcDudXdYCfPZKK50rt&1;!7|zjzcLf8*Xm=9`M$ zw;#8QUD16yC^V9uS2n+RyW>gnyX%WymwdIzyt_F<)>58)tebL6-0ygJ+0I_Q+H~zI z7@Uud4>K9UQCALT|4jH68(hA>xVBVw7&2T`RutTaqwe4e_LT6XsiRtdy=9&a?d~A7 zODRL0(3hWaF?}V`naR9v^}0ycBz{*#sOfL1QrMjK_@*N6uM`%X=X-}+1&&JJ88BKe zM`hqRc(}DbPhmN?08gjYTy8u)(5$n3i zq;66@{F7o3p^-4Bi){i=9{!G6ove~AA5QN!+M&{kFO zTdy4pMSji#+(dexVhP``v<>85Qpp|~8oI4|z)7*(&b8Qb$KNv1V00Dyq>bl_tDs^T z-6gB^&tSBn&H=&nBEIK{tzy;BzL*zSSCh!HYPu_i5$`tj9P3uPcsXx4U0Jw5$VVx5 z0$BZeGM<#$PYRRTZ4-gxNBWkg)SNqJq1V|e|Av?Z;}UH(qS`ttl`l91Ov(wVlMh$W zKSvgd&W8lPf-Q~Tpimn+=_-9@4bB$PFuJ$+{A+9sN~Oh3j0q%FFs!U?a>b*1_;4Jo zp^ig7ie=XxC~Z?0F5rG`s_RAOaO>=JXIQNrV)5FHb@kN0n!!~yO_>CH%s`E0R(RGJ z^2GT>1LSx<43!SWS+R?m$S8S116#elH@Vz?O{L(#)*CNJe8;-_6|2R?aajsg&MwU{ zVV2_aa@E5xeO}VFChDv~fv>`mk~xpN8y5vr@8;i?IJA9-(YdK zGJS51_fIB)5$fa?+BGq7RP65*$oMQ{b;)tieW0WyU(dy57RpREE0jaQ#(%!N{Y|ci zP@Sn7;%=O?`7&_aze%ReJ;1Xp;JcBf5rY6mVI0ZqbVAU?u{X@^R^IVe$tltTjahNM z&WlAc=78&$*>WHFAOS3fx$RI;lT)3Kntoz4>%Tn(qs2(0V=Dq(s_7sOw;ObEQ;Y71|a1M3lQqx*`+14a|e7+p41yU4nDQ)xd))9k+0Vkvn;HJAhK*CWIhS!;0 zFh?4`k7C0%l0%NsIJqwL9;4C+_&*lk6i_NK*=*Nsp0?f*9u9HQ`o&*wGc7JH>~rO0 z6dW(R_h^o&-#HRFN_Czl_nxHmnbsoo(nN|FZ~Pw zq-f`YPm!UxxZf^|kukICT~x8oF2DnoPSDJ3l{Lk@Ca%~vhsh(0!Jy>5oc(n++3a%O<9@15D}kG7i` zTU~|t0~Jcne{e~H3wE&eN>A>pu;KCpwL2B2#N5@S#2QCM7uiD8I4xM_`0ILKwPfIv zbHbsf=MIT~?BFg-`oaquvZP*pOp_d;wi`}V9@1j*2vVWDGI>CHV%Sr6j~NaavOe04 zct@zNYN)~XYVNCa;BG8pzQK9}AvKUOzXUoeNzxi{F;VaoGXYKbOsPXzQ zl8y>(N$lVurcqbCk2t}*@oRNl_GC+%6zS+Gl6C|hL9D0eW(ZdVcfUGBL?v;we?FeQ zNJ?MWbtf#LYRQWo?p+^-cX(D16Uz>mbeS|CLpDG6@HPnp7x=_--d_5S!GK+2+kWW`>vjQOtW|h2_UM-&YzQ&UTk_c#AD`EDi88qX_OMFtg`wooH zn0rOBEQY-rb3nP3$~hxt(sH>uV3=UUrM`~}v@jn0GR|2e1gRgkZ)e)D?$H?$UD@z0 zzCnH|`OH(r_^c0!-=e~T{&!6d2&<iC|C}$K|)c9N10s>g$ ziMh^xcGK3_l04mX2q75L^exeAqy#nDY{@dJIRbV~HeViJ4N?8aM=`NuEjZzAkHJ4HK14na6z=jHO9H)QKw(+E*qL>b@uFep#)S4xm4d~ICo-5>q>XEWA+ei3-metZyuXXm2V9>7fU&A%qZKUcREU`MJ(I20_GvR0+h5s};pV2Kk@$bo~Dtf{nxA_~F}kZs+d> zD|wBHQY?=Wcgh=N5R7ItR#!qLAYCl_R#9oscx95$t~&Zl;?~6~6@}WDpv+Kx6VQaK zAHM~X_7z;-b0{??-&pr}`uc9m-?sW~cT!GU&b~bay%lTWMeL|D#&D?nK3WRM3?t@p zzbcHP@5Gc5En0kjwEE0N$j-639SUWeNq_R$UT=)YLy)tBn>S`*88VCH7Q6E93JBGj zI=5qW9Jzx2KD(XjWSPTK#T*tQ(N1}F&<8N_^AooWnZv?Y$y@Bxs*jPDxARH{&8#!# zZec@y?vz#gpmuE<_g3#eA)A~{HPhW{p;5`rD(ju0ct1Oysh!Od{q}mQT`k1_PZktb zPARB$Lg?UOtGhC=lrxJioP&vkxk19fRus8lY$rAy$V&{psTl?X$O5^m5R_I&Y~JNK zA`qp7si~I&R+3Du{_FmT%udzCFPnQ&l1%1Wex|sl#u*kA!vzNz74HW^xvOe7$}z{9 zK+;+z?{?&OD*PccXu9cZ;p1sZNWBc9E8o97|Dq1^VT+UDau6*XQzkV%2qyd`+^EG< zP^O35)VUw_nX|Q%37cYW2(=(p?Da=7dIKUnL@4fCTi7srl*HBF!_ZmJ&H&8Xj#4mF zZ~ZPO)cFWE7^dN@lb*;8!R{Cj57c1aj|^8P=hnJgSNbcp6{w3JmDQ>G_8BZiXXi-n zldThUQ>bp4?!=nOH}PYtVL6*^()v_#wG@rk16#Y1cYOC#i%84C57SfAss_kaF-nqw zaRHuTfQf=xDNWkTS)RTd6aLy+Ugiq6MuoB)RA4NqjcHs{OKe*YMUOwA&i_E=bnfT# z7W_F%E4c)OuL-xltpq!vog?w6dk|eN(~CUVZjEuIvu0w5>1E+h5MBD#SHBchg40Yad!; zb}p#VavEU`)97>iq|~{`;`2w?+~J0JdjlOIcR+5X;%(KXmcZu?!hUJGtWC;ZKQRFEBp3Y5VRrL+4Z2A$&+VeXbak6{+YxE|_< zAu~z%mK>~EZSul6P>X1q(*p}p6Fu8yFhiXIQmTn5Oh&)wYcRmrJ96**E~b%HgYw?l z`1>bx`;OAV5juG)GzX>w!w+*GMsZWuR$s*`h*mqxNWitC@|RoP8WT?Bp|Cai?PRAqUJ%w;n;i>F=LP$f=U59H&X3ZN57WD8WZzjFqwv(8SZRG zrp2acU$(oCPN9uk^{ibdAflDfB{hd0H*K4}oeWCTa8rpc$ zkid;R;P~sMLy%EnT3k_?OBdXcF6NE7cUModI&AUj=H@KR9#9-r5_7X~CO8O+=)>q6 zvp59Psy$zQh8@nrbV>_R84$T*f=p++CGgR4H$x*1gH1#mRh7gI@3&S(XV1e^_~1KbU4lL{7MMwyo?E zW6BhvW<76<%eptli)EX325zt6Z?uI58}O|3O^K;pO;Oz};!ZwK+~I)14uKqdz@~2Z zo*LyexH@-&OgW8yx0iL+_izYYuSQVF&sb&@Qf}nQbsaHT2xf{hNk~->=O@Z!Ia*2T znuIUgnM(dh`j0@*{8FtSwc21M9TpAx1_8h74ahkD?nVV=p9!ztdmO2kwWY-~TG_gdvaj+01`3e_7fqlBuZY2lm=Y#rT{ z>91A>j;W?k1Ddkt76n97wsJchD9(u9sSb+-ph~Io*^J;me{NuzI?(vsI+;iPW*hBj zfScVp2(ClarR)y$IrEG<&*b&$Y%4I+yzRX&0;t3ixHvB{7}!;Q(0O(zL^#)PALw1+ zLRx`sErJyakP}V>&~=vH>M_2ZZq3IzqW_g|h4Rc>D%^rr zF;*DD%oVZbeJ(@bHuXAwSXmMOvp`jv2HZU%W3AkKt6d(>;?coWds|QGwx4-W93<-R zhYWLTozCy~)9=+jyHA9gL%4f)f;)udNW>hUduX^93WL6xcL~wZqG6e!fun=Y3pyEv zbB#jz;}5tt&6c+@P2!dbW%Y7>C6_#`(n6m#uIjnEb{;(Up72n#Oz2NZF_@BT^eo-dM0}nD3rH4NtLUC# zuJ8u1%9U%?!?q1WEWqK#fi>di0%2ClwPP*~A6t9*J^mI^@(;Tuc@G<5Q%Q5@b;YsH z)7AjEHSskHlo>3s2J-tzdC3U4z-ob+TgH@t58i?ix+8Xq=Jy|Gf$BWE7pMvpt(_1> z0s>;Hw^d`%Nh8i#qvfxi2%mfaylzUm1Vt`&omO0Jg`MNVG$}3Xp6ERpVS1mh*E)lt z&np&aib13pxTT?>m)W3|i6Sj)U?xyS7d)Cx9tH$YgnO_7W*!_&JSD^~!QH3pb(`?k zptJPf+MGRbJxgU7odknGiVo@AH!_m>nyvwnm43rga`sp|+*I<@HfLt2IStoChgf6g zXnBc^`lvsrcFQBfK#mp_OdD5-6edy2jmHJGmWgFwMtLEDz70x0fzqJou*q(^JAG(2 z)v^{oFtoCt2FAzR|EHsbai!IAfnF-!i?kr@LDxY zSZ&e=BQYvICb-h#R+TKVxb77ChM^&PK=av^3u{XBGWWW<;l7Zv!W#bQJ~Jp>HXlf3 zz!0nz@#dQ?PrSrb(T85thIew z5*VGGYpql7={M_h5-y_6ErD*LGi)ls?fEVxpRK$6 z?b>mB+J;AL;h6M6Bv?crW6-Hqko{qqk`u%ITvyz;Sd1y$yOr%Uh@9kn{|Zb-GPoh`un3KUs734a<4|0JYFBV!?GCw?MAv zfrXM#+*T_gL}{G_?j#f?veByHU^G}k?WZE|8YSt>=oln$;}?)1pWVZj~gvnm*ky$A)+}d_dPsj<{|@k*3z=YLr)jDhNQJYdB>lBQ(G5 zPR&sig*x_ib0RNM!8PF1YsDJS^!?fI?BSOk#&uPG1wCo4zEg9M8G#O=+f}yf^1cv&0pvQ zUSg8moGvl8y_}bb{#B`x|a$S!Ap+nu}*pQ5Oe8+>Xq*f5R}jy1ByEOnIp8aNPGnG90L+xwxQjSX!OsD_|NHrWEAanT;Qzk@E#wsjOESyqldAmJ R_5c0|)6{=hcHbuQ{{xke43+=@ literal 0 HcmV?d00001 diff --git a/launcher_icon/doormile_icon_legacy.png b/launcher_icon/doormile_icon_legacy.png new file mode 100644 index 0000000000000000000000000000000000000000..d761ab8b8e7070e1785200010e098ef4a62a8149 GIT binary patch literal 128360 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

!t9 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 migrateLegacyStores() async { _kArrivedOrderIdsKeyBase, _kCollectedOrderIdsKeyBase, _kConsignmentIdsKeyBase, + _kPivotNextActionKeyBase, _kOutForDeliveryKeyBase, _kNotLoadedKeyBase, _kOrderLabelsKeyBase, @@ -115,6 +116,7 @@ Future clearScopedStores() async { _kArrivedOrderIdsKeyBase, _kCollectedOrderIdsKeyBase, _kConsignmentIdsKeyBase, + _kPivotNextActionKeyBase, _kOutForDeliveryKeyBase, _kNotLoadedKeyBase, _kOrderLabelsKeyBase, @@ -714,6 +716,89 @@ Future forgetConsignmentIds(List orderIds) async { ); } +// ───────────────────────────────────────────────────────────────────────── +// THE PIVOT'S ROUTING ANSWER — which way this parcel went at pickup-complete +// +// `next_action` is the server naming the next leg: `start_delivery` for a +// parcel this rider delivers himself, `inward_at_hub` for one that enters the +// network. It is returned **once**, by the pivot, and it was being logged and +// thrown away — the only trace of it was `lastPivotNextAction`, a single +// in-memory string on a controller, which is not per order and does not +// survive a rebuild. +// +// So a hub-routed parcel was indistinguishable from a hyperlocal one on the +// very next poll, and `NextLegResolver` had nothing to fall back on when the +// consignment read `Created` — the state that cannot decide anything by itself. +// +// ── This is continuity, not authority ── +// +// It is rung 4 of four, below every live server reading, deliberately: it says +// what the server decided *at the pickup*, and if the server has since said +// something different the server wins. See [NextLegResolver] for the full +// precedence table. +// +// ── It should not have to exist ── +// +// The right home for this fact is the queue row. `GET /miler/bookings` does not +// carry `next_action`, which is the logged backend gap this store works around. +// When that field lands, `NextLegResolver` prefers it automatically and this +// becomes a cache nothing reads. +const String _kPivotNextActionKeyBase = 'pivot_next_action_by_order'; + +/// Records the `next_action` the pivot returned for [orderId]. +/// +/// Ignores an empty action rather than storing a blank: an absent instruction +/// and a recorded "no instruction" are different facts, and only the first is +/// true when the server said nothing. +Future rememberPivotNextAction(String orderId, String action) async { + final id = orderId.trim(); + final value = action.trim().toLowerCase(); + if (id.isEmpty || value.isEmpty) return; + final prefs = await SharedPreferences.getInstance(); + final map = await getPivotNextActions(); + map[id] = value; + await prefs.setString( + await _scopedKey(_kPivotNextActionKeyBase), + jsonEncode(map), + ); + debugPrint('[NEXTLEG] recorded $id → $value'); +} + +/// Every pivot instruction this device recorded, by order id. +Future> getPivotNextActions() async { + final prefs = await SharedPreferences.getInstance(); + final raw = prefs.getString(await _scopedKey(_kPivotNextActionKeyBase)); + if (raw == null || raw.isEmpty) return {}; + try { + final decoded = jsonDecode(raw); + if (decoded is! Map) return {}; + return { + for (final e in decoded.entries) + e.key.toString(): (e.value?.toString() ?? '').toLowerCase(), + }..removeWhere((_, v) => v.isEmpty); + } catch (_) { + return {}; + } +} + +/// Drops instructions for orders that are finished, so the map does not grow +/// for the life of the install. +Future forgetPivotNextActions(List orderIds) async { + if (orderIds.isEmpty) return; + final prefs = await SharedPreferences.getInstance(); + final map = await getPivotNextActions(); + var changed = false; + for (final id in orderIds) { + if (map.remove(id) != null) changed = true; + } + if (changed) { + await prefs.setString( + await _scopedKey(_kPivotNextActionKeyBase), + jsonEncode(map), + ); + } +} + /// Clears ids once they are delivered — or once a short pick says they were /// never in the box to begin with. Without this the set grows for the life of /// the install and yesterday's run keeps today's cards off Home. diff --git a/lib/data/api_config.dart b/lib/data/api_config.dart index 1119eb1..ccce2b4 100644 --- a/lib/data/api_config.dart +++ b/lib/data/api_config.dart @@ -444,6 +444,59 @@ class ApiConfig { pick(['consignmentid', 'consignmentId', 'consignment_id']), ), + // ── Where this parcel goes next, in the server's own word ── + // + // Shipped with request 27. Until it existed, `next_action` was returned + // **once** — by `pickup-complete` — and the app had to keep the pivot's + // answer on the handset to survive a poll, because `Created` is both the + // state a hub-routed parcel settles on *and* the state one holds while + // the pivot is still routing it. That cache is now the fallback rather + // than the source: [NextLegResolver] prefers this field over it, so a + // reinstall, a second device or a routing the office changed mid-day all + // read the live answer. + // + // Values: `pickup`, `start_delivery`, `inward_at_hub`, `deliver`, + // `handed_to_hub`, `none`. Carried verbatim — the resolver owns the + // reading of them, and an unrecognised word must reach it intact so it + // can fall through rather than being flattened here. + 'next_action': s( + pick(['next_action', 'nextaction', 'nextAction']), + ), + + // ── The base this parcel is to be handed in at ── + // + // A nested object, carried whole: id, name, address, pincode, latitude, + // longitude. Null on a hyperlocal parcel, which has no base leg. See + // [HandoverHub], which is the only thing that reads it. + // + // This is the field that makes a handover navigable. Before it the app + // knew a parcel was hub-routed and had no idea which building — every + // `hubLat`/`hubLng` in the codebase was the rider's own position standing + // in for one. + 'next_hub': booking['next_hub'] ?? booking['nexthub'], + + // ── What kind of place this is collected FROM ── + // + // Shipped with request 28. `hub` / `customer` / `merchant` / `store`, on + // the row rather than against a location master — a customer-door pickup + // has no location id at all, so a type held against locations could never + // classify one. + // + // Home titled every logistics pickup group with the rider's own base name + // before this, because the per-booking source was unreliable and a + // constant was the safer wrong answer. This is what retires that. + 'pickup_source_type': s( + pick(['pickup_source_type', 'pickupsourcetype', 'pickupSourceType']), + ), + + // The counter's own name, as the hub holds it. Distinct from + // `sourcename`, which the backend fills from `providercompany` / + // `providerlocation` and which is a contact person on some rows — that is + // how the biggest type on Home once read `Sudharsan`. + 'pickup_source_name': s( + pick(['pickup_source_name', 'pickupsourcename', 'pickupSourceName']), + ), + // ── The hub's solved position in the route ── // // Verified live 21 Aug 2026: `GET /miler/bookings` carries `step` on diff --git a/lib/data/lifecycle.dart b/lib/data/lifecycle.dart index 30f6e2b..f4188b1 100644 --- a/lib/data/lifecycle.dart +++ b/lib/data/lifecycle.dart @@ -279,6 +279,65 @@ abstract final class MilerLifecycle { ); } + /// `POST /miler/consignments/:id/inward-at-hub`. + /// + /// Confirmed when the response says the parcel is now the base's — + /// `Inwarded_at_Hub`, or `already_inwarded: true` for a retry whose first + /// attempt landed and whose answer was lost. + /// + /// ── Why `already_inwarded` is a success and not an error ── + /// + /// A rider hands a parcel over at a loading bay, the reply is dropped, and he + /// presses again. The server has already done the work; refusing the second + /// press would tell him the hand-over failed for a parcel now sitting on the + /// base's counter, and he has no way to prove otherwise from where he is + /// standing. So the second answer confirms the first — which is exactly what + /// the backend's 200-with-a-flag shape is for, and the app must not turn it + /// back into a failure. + static StateTransition inwardAtHub(ApiResult res) { + if (!res.ok) { + return StateTransition( + outcome: TransitionOutcome.refused, + bookingStatus: BookingStatus.unknown, + consignmentState: ConsignmentState.unknown, + code: res.code, + message: res.message, + evidence: 'HTTP ${res.status} ${res.code} ${res.message}', + ); + } + + final raw = _str(res.data, const [ + 'consignmentstatus', + 'consignment_status', + 'status', + ]); + final state = consignmentStateFromRaw(raw); + final stamp = _str(res.data, const ['inwardedat', 'inwarded_at']); + final next = _str(res.data, const ['next_action', 'nextaction']).toLowerCase(); + + // `_str` skips `false`-ish values by design, so the flag is read straight. + final already = + res.data['already_inwarded'] == true || + res.data['alreadyInwarded'] == true; + + final confirmed = + state == ConsignmentState.inwardedAtHub || + already || + next == 'handed_to_hub'; + + return StateTransition( + outcome: confirmed + ? TransitionOutcome.confirmed + : TransitionOutcome.unconfirmed, + bookingStatus: BookingStatus.unknown, + consignmentState: state, + nextAction: next, + evidence: + 'consignment="$raw" inwardedat="$stamp" next="$next" ' + 'already=$already', + ); + } + /// One line, in the shape a backend ticket wants. static void report(String verb, StateTransition t) { switch (t.outcome) { diff --git a/lib/data/miler_api.dart b/lib/data/miler_api.dart index 5d43151..cb5d245 100644 --- a/lib/data/miler_api.dart +++ b/lib/data/miler_api.dart @@ -719,6 +719,77 @@ class MilerApi { ), ); + // ═══════════════════════════════════════════════════════════════════════ + // THE HANDOVER — the rider gives a hub-routed parcel to a base + // ═══════════════════════════════════════════════════════════════════════ + + /// Hands a `Created` consignment in at a base, ending this rider's part. + /// + /// ── The leg that had no route ── + /// + /// A parcel bound for another district is collected at a customer's door and + /// carried to a base; the network takes it from there. The rider could do the + /// first half and had no way to record the second, so an intercity parcel sat + /// in his queue until somebody inwarded it in the console — and every one of + /// those jobs reported zero distance and zero value on `/miler/earnings`, + /// because the assignment was never closed against him. + /// + /// ── The body is optional, all of it ── + /// + /// Sent with nothing, the parcel is handed into the base it was already + /// routed to. [hubId] is worth sending when the app has one — it is what the + /// server reconciles against — and the coordinates are stamped onto the + /// history row as evidence of where the hand-over happened. + /// + /// ── Idempotent twice over ── + /// + /// The shared `Idempotency-Key` middleware covers a retry after a dropped + /// response, and a parcel already inwarded answers **200 with + /// `already_inwarded: true`** rather than a 4xx — so a rider on bad signal at + /// a loading bay who presses again is confirmed, not refused. Read the result + /// through [MilerLifecycle.inwardAtHub], which treats that reply as the + /// success it is. + /// + /// Refusals carry their own reason: `CONSIGNMENT_NOT_FOUND`, + /// `CONSIGNMENT_NOT_ASSIGNED`, `HUB_REQUIRED`, `HUB_NOT_FOUND`, + /// `INVALID_STATE` for a parcel already past this leg. + static Future inwardAtHub( + Object consignmentId, { + Object? hubId, + double? lat, + double? lon, + }) => _guarded( + 'inward-at-hub:$consignmentId', + () => _send( + 'POST', + '/miler/consignments/$consignmentId/inward-at-hub', + idempotencyKey: _idempotencyKey('inward-at-hub', consignmentId), + body: { + if (hubId != null) 'hub_id': hubId, + if (lat != null) 'latitude': lat, + if (lon != null) 'longitude': lon, + }, + ), + ); + + /// The bases this rider may hand a parcel in at. + /// + /// ── Why this is not the tenant locations route ── + /// + /// `GET /admin/tenants/:id/locations` is a **different dataset** — a client's + /// own sites, not bases — and `/admin/*` requires roles 1/3/4 while a rider is + /// role 5. The 401 this app has been logging as a gap on that route was by + /// design, not an oversight. This is the rider-readable one. + /// + /// Returns `{id, name, address, pincode, latitude, longitude}` per base, plus + /// `distance_km` and nearest-first ordering once the rider has reported a + /// position. + static Future bases({String status = 'Active'}) => _send( + 'GET', + '/miler/bases', + query: {if (status.isNotEmpty) 'status': status}, + ); + /// The consignment's current state and what may be done to it. /// /// Returns `status` plus the backend's own derived flags — `collected`, diff --git a/lib/data/milk_run.dart b/lib/data/milk_run.dart index 26b008e..4b9c9ba 100644 --- a/lib/data/milk_run.dart +++ b/lib/data/milk_run.dart @@ -1,6 +1,7 @@ import 'package:miler/Models/stop_status.dart'; import 'package:miler/views/Dashboard/pickups/stop_type.dart'; import 'package:miler/data/pickup_locations.dart'; +import 'package:miler/data/next_leg.dart'; import 'package:miler/data/service_profile.dart'; /// ───────────────────────────────────────────────────────────────────────── @@ -227,6 +228,20 @@ class MilkRun { ); if (resolved.isNotEmpty) return resolved; + // ── The counter's own name, ahead of the account's ── + // + // `pickup_source_name` ships with request 28 and is what the hub holds for + // the place. `sourcename` is filled from `providercompany` / + // `providerlocation`, and what lands there is whoever is on the account + // rather than the counter — which is how the biggest type on Home once read + // `Sudharsan`, a person, above a distance and an ETA to a place that name + // does not identify. + // + // Below the locations table, which is still the canonical name for a base, + // and above every legacy spelling, which are guesses by comparison. + final named = (stop['pickup_source_name'] ?? '').toString().trim(); + if (named.isNotEmpty) return named; + return (stop['sourcename'] ?? stop['SourceName'] ?? stop['kitchenname'] ?? @@ -281,7 +296,35 @@ class MilkRun { static bool navigatesToCustomer( Map stop, { Set collectedIds = const {}, + + /// `next_action` per order, from the pivot. See [NextLegResolver]. + Map pivotActions = const {}, }) { + // ── The order's own routing outranks the line's shape ── + // + // The two lines below are the whole logistics fix, and they are checked + // first because a per-order fact must not be overruled by a per-line one. + // + // • **hub** is the safety case. A Gandhipuram → Chennai parcel is in this + // rider's hands and its receiver is 500km away; pointing a Navigate + // button at that address sends a Coimbatore rider down a national + // highway. He is going to a hub, and the customer is context, not a + // destination. + // • **customer** is the case the line-level test could never reach. + // `deliversToCustomer` is false on logistics, so a hyperlocal parcel the + // pivot had already released into this rider's own hands could not get a + // customer destination out of this function at all. + final leg = NextLegResolver.resolve( + stop, + pivotAction: pivotActions[idOf(stop)] ?? '', + ); + if (leg.isHub) return false; + if (leg.isCustomer) return true; + + // No per-order answer — [NextLeg.unknown], or a stop that has not been + // collected yet. Fall back to the line's own shape, which is exactly what + // this function did before and is still right for a milk run, whose rows + // often carry no consignment state at all. if (!ServiceProfile.active.deliversToCustomer) return false; if (collectedIds.contains(idOf(stop))) return true; final status = stopStatusOf(stop); diff --git a/lib/data/next_leg.dart b/lib/data/next_leg.dart new file mode 100644 index 0000000..45e3659 --- /dev/null +++ b/lib/data/next_leg.dart @@ -0,0 +1,521 @@ +import 'package:miler/Models/stop_status.dart'; +import 'package:miler/data/consignment_state.dart'; +import 'package:miler/data/milk_run.dart'; + +/// ───────────────────────────────────────────────────────────────────────── +/// WHERE THIS PARCEL GOES NEXT — asked of the order, never of the line +/// +/// Once a booking has been collected, exactly one question decides what the +/// rider does with it: **carry it to the receiver, or carry it to a hub?** +/// +/// ── Why this is not [ServiceProfile.endsAtHub] ── +/// +/// It used to be. `endsAtHub` is a property of the *line* — one constant for +/// every order a logistics rider will ever touch — and it was wired straight +/// into ownership: `work_domain.dart` closed a stop the moment it read +/// `isPicked && endsAtHub`. On the parcel line that is always true, so **every +/// collected parcel was closed at the pickup**. +/// +/// That is right for one of the two routings and wrong for the other, and the +/// backend has always known which is which: +/// +/// ``` +/// hyperlocal pickup-complete → Out_for_Delivery (compatibility mode) +/// → Collected_By_Miler (flag on) +/// hub-routed pickup-complete → Created + next_action: inward_at_hub +/// ``` +/// +/// So a Gandhipuram → Hopes parcel — collected, released by the pivot, sitting +/// in the rider's own bag with the server calling it `Out_for_Delivery` — was +/// dropped from his screen into Activity before he left the sender's door. He +/// was carrying a parcel the app had already filed as finished. +/// +/// A line-level constant cannot answer a per-order question. This can. +/// +/// ── The one rule for using this ── +/// +/// **The routing decision is the backend's.** Nothing in this file compares +/// pincodes, districts or city names, and nothing may be added that does. +/// Coimbatore-vs-Chennai is a question about a tariff zone and a line-haul +/// schedule, and the app knows neither. It reads the answer and executes it. +/// ───────────────────────────────────────────────────────────────────────── +enum NextLeg { + /// Carry it to the receiver. The rider releases it with **Start delivery** + /// and finishes at a customer's door. + customer, + + /// Carry it to a hub and hand it over. The network takes it from there — + /// line-haul, then somebody else's last mile. + hub, + + /// Nothing left for this rider: delivered, cancelled, withdrawn, or already + /// taken into hub custody by somebody else. + closed, + + /// Collected, and the server has not said where it goes. + /// + /// ── Why this is a state and not a default ── + /// + /// It would be convenient to fold this into [customer] (the common case) or + /// [closed] (the old behaviour). Both are unsafe, and in opposite directions: + /// + /// • As [customer], a Chennai parcel offers **Start delivery** and a + /// Navigate button pointed at a receiver 500km away. + /// • As [closed], a parcel in the rider's bag disappears from his screen — + /// the exact bug this file exists to fix. + /// + /// So it is neither. The parcel stays in the rider's custody, on Deliveries, + /// with no destination offered and an escalation route instead. That is an + /// honest screen: he is holding something, and the app does not yet know + /// where it goes. + unknown, +} + +/// One order's next leg, and the evidence it was decided on. +/// +/// The evidence is carried rather than discarded because "why is this parcel +/// showing hub handover?" is a question the office will ask, and answering it +/// from a log line beats re-deriving it from four sources by hand. +class NextLegDecision { + const NextLegDecision(this.leg, {required this.source, this.evidence = ''}); + + final NextLeg leg; + + /// Which rung of [NextLegResolver]'s precedence answered. See that class. + final String source; + + /// What was actually read, in the server's own words. + final String evidence; + + bool get isCustomer => leg == NextLeg.customer; + bool get isHub => leg == NextLeg.hub; + bool get isClosed => leg == NextLeg.closed; + bool get isUnknown => leg == NextLeg.unknown; + + /// True while the parcel is physically the rider's: he is holding it and + /// owes it a journey, whether or not the destination is known yet. + /// + /// This is what puts a row on Deliveries. [NextLeg.unknown] is deliberately + /// in it — see the note on that value. + bool get isInCustody => leg == NextLeg.customer || leg == NextLeg.hub || leg == NextLeg.unknown; + + @override + String toString() => 'NextLeg.${leg.name} (via $source: $evidence)'; +} + +/// The server's own instruction words, exactly as the pivot sends them. +/// +/// Not an enum: these are the backend's vocabulary, they are compared against +/// raw response text, and a word this app has not been told about must fall +/// through to [NextLeg.unknown] rather than fail to parse into something. +abstract final class NextActionWord { + /// Nothing collected yet — the rider is still going to fetch it. + static const String pickup = 'pickup'; + + /// The rider releases it and delivers it himself. + static const String startDelivery = 'start_delivery'; + + /// Released already; he is carrying it to the receiver. + static const String deliver = 'deliver'; + + /// The rider carries it to a hub and hands it in. + static const String inwardAtHub = 'inward_at_hub'; + + /// The hub has taken it in. Off this rider's hands. + static const String handedToHub = 'handed_to_hub'; + + /// Nothing further for anyone — the row is terminal. + static const String none = 'none'; +} + +/// Resolves [NextLeg] for one order. +/// +/// ── PRECEDENCE ── +/// +/// Four sources can speak, they disagree, and which one wins is the whole +/// contract of this file. In order: +/// +/// **1. A terminal consignment state on the row.** `Delivered`, `Cancelled`, +/// `Returned_to_Sender` — and `Inwarded_at_Hub` / `Tripsheet_Loaded` / +/// `In_Transit`, which mean the parcel is in the network's hands and out of +/// this rider's. Nothing outranks the parcel being gone. +/// +/// **2. Live `next_action` on the row.** The server naming the leg on the row +/// itself is the most direct answer there is. **The backend does not send +/// this on `GET /miler/bookings` today** — it is read here so that the day +/// it does, this resolver already prefers it over everything below. See the +/// backend gap note in [rowNextAction]. +/// +/// **3. Live `consignmentstatus` on the row, where it is unambiguous.** +/// `Out_for_Delivery` and `Collected_By_Miler` can only mean the rider is +/// carrying it to a customer. **`Created` cannot decide anything** — see +/// below. +/// +/// **4. The persisted pivot result.** What `next_action` said at +/// `pickup-complete`, recorded per order. Continuity only: it is what keeps +/// a hub-routed parcel labelled correctly across a rebuild, a poll and a +/// cold start. It is deliberately *below* every live server reading, because +/// a local record must never outrank the server changing its mind. +/// +/// Nothing answers → [NextLeg.unknown]. +/// +/// ── Why `Created` is not allowed to mean "hub" ── +/// +/// It is tempting: the documented contract says a hub-routed pivot lands on +/// `Created`, so `Created` looks like a hub signal. It is not, because it is +/// also the state a consignment holds **while the pivot is still routing it** +/// — `delivery_actions.dart` already carries that finding and re-reads the +/// consignment because of it. A freshly-collected hyperlocal parcel and a +/// settled hub-routed one can both read `Created` on the same poll. +/// +/// So `Created` is treated as *no answer* and falls through to the persisted +/// pivot result, which knows which of the two actually happened. If there is no +/// record either, the honest answer is [NextLeg.unknown] — not a guess in +/// whichever direction is cheaper to render. +abstract final class NextLegResolver { + /// `next_action` as it appears on a queue row, or `''`. + /// + /// ── BACKEND GAP ── + /// + /// `GET /miler/bookings` does not carry this. `next_action` is returned + /// **once**, by `POST /miler/bookings/:id/pickup-complete`, and the booking + /// adapter in `ApiConfig.pickupFromBooking` has no key for it — so a poll or + /// a restart cannot re-read the leg from the server at all, and rung 4 (the + /// persisted pivot) is doing work that a server field should be doing. + /// + /// This reader exists anyway. It costs one map lookup, and on the day the + /// field is added the resolver starts preferring the live answer over the + /// local record with no further change. + static String rowNextAction(Map row) { + for (final k in const [ + 'next_action', + 'nextaction', + 'nextAction', + 'next_leg', + 'nextleg', + ]) { + final v = row[k]; + if (v == null) continue; + final s = v.toString().trim().toLowerCase(); + if (s.isNotEmpty && s != 'null') return s; + } + return ''; + } + + /// Maps one of the server's instruction words to a leg, or null when the + /// word is absent or not one this app has been told about. + /// ── Every word the server sends, mapped on purpose ── + /// + /// Four of these used to fall through to `null` and land on the right answer + /// by accident: `deliver` was caught by `Out_for_Delivery` at rung 3, + /// `handed_to_hub` by `Inwarded_at_Hub` at rung 1. That worked, and it worked + /// for reasons that had nothing to do with the word — so a state field that + /// went missing took the correct answer with it. + /// + /// Two stay deliberately unmapped: + /// + /// • **`pickup`** is *not yet collected*, which is not a leg. There is + /// nothing in this rider's hands to route. [WorkBoundary.domainOf] gates + /// on the collection having happened for the same reason. + /// • **`none`** means the row is terminal — and rung 1 reads that off the + /// consignment's own state, which is the stronger evidence. Letting a bare + /// word close a parcel whose state does not agree is how a stop in + /// somebody's hands gets written off; the word alone is not enough. + static NextLeg? _fromWord(String word) => switch (word) { + NextActionWord.startDelivery || NextActionWord.deliver => NextLeg.customer, + NextActionWord.inwardAtHub => NextLeg.hub, + NextActionWord.handedToHub => NextLeg.closed, + _ => null, + }; + + /// Resolves the leg for [row]. + /// + /// [pivotAction] is the persisted `next_action` recorded for this order at + /// `pickup-complete` — rung 4. Pass `''` when there is none. + /// + /// This is a pure function of its arguments: no I/O, no profile read, no + /// clock. Everything it needs is handed to it, which is what makes the whole + /// precedence table testable in one file. + static NextLegDecision resolve( + Map row, { + String pivotAction = '', + }) { + final consignment = consignmentStateFromRaw(row['consignmentstatus']); + final status = stopStatusOf(row); + + // ── 1. Terminal, from either vocabulary ── + if (consignment.isClosed || status == StopStatus.delivered || status.isCancelled) { + return NextLegDecision( + NextLeg.closed, + source: 'terminal', + evidence: 'consignment="${consignment.name}" status="${status.name}"', + ); + } + // The network has it. `awaitsHub` is exactly the set of states that mean + // hub custody — inwarded, loaded onto a tripsheet, in transit — and none of + // them are this rider's problem any more. This is also the **only** way a + // hub-routed parcel currently leaves his queue: hub staff inward it in + // their console and the next poll retires it here. See the backend gap on + // the missing rider-side handover mutation. + if (consignment.awaitsHub) { + return NextLegDecision( + NextLeg.closed, + source: 'network-custody', + evidence: 'consignment="${consignment.name}"', + ); + } + + // ── 2. Live next_action on the row (not sent today; see rowNextAction) ── + final live = rowNextAction(row); + final fromLive = _fromWord(live); + if (fromLive != null) { + return NextLegDecision( + fromLive, + source: 'row.next_action', + evidence: 'next_action="$live"', + ); + } + + // ── 3. Live consignmentstatus, where it is unambiguous ── + // + // Both of these mean the parcel is in the rider's hands bound for a + // customer: `Collected_By_Miler` awaits his Start delivery, + // `Out_for_Delivery` is the same journey already released (compatibility + // mode releases it inside the pivot). `Created` is NOT here — see the class + // note. + if (consignment == ConsignmentState.outForDelivery || + consignment == ConsignmentState.collectedByMiler) { + return NextLegDecision( + NextLeg.customer, + source: 'row.consignmentstatus', + evidence: 'consignment="${consignment.name}"', + ); + } + + // ── 4. The persisted pivot result — continuity only ── + final fromPivot = _fromWord(pivotAction.trim().toLowerCase()); + if (fromPivot != null) { + return NextLegDecision( + fromPivot, + source: 'persisted-pivot', + evidence: + 'pivot next_action="$pivotAction" ' + '(consignment="${consignment.name}")', + ); + } + + // ── Nothing answered ── + return NextLegDecision( + NextLeg.unknown, + source: 'none', + evidence: + 'consignment="${consignment.name}" status="${status.name}" ' + 'row.next_action="$live" pivot="$pivotAction"', + ); + } + + /// Convenience: the leg for a row whose pivot record is already in hand as a + /// map of order id → action, which is the shape the store returns. + static NextLegDecision forStop( + Map row, { + Map pivotActions = const {}, + }) => resolve(row, pivotAction: pivotActions[MilkRun.idOf(row)] ?? ''); +} + +/// ───────────────────────────────────────────────────────────────────────── +/// HOW THE LEG IS WORDED, IN ONE PLACE +/// +/// Four surfaces have to say what the rider does next — the Deliveries row, the +/// map sheet, the stop detail sheet and Activity's record — and the last time a +/// lifecycle vocabulary was left to the widgets they invented three of them for +/// one state (see [StopStatusX.label]). A hub handover worded as a delivery is +/// worse than untidy: "Order delivered" over a parcel handed across a warehouse +/// counter is a false record of custody. +/// +/// So the words live next to the decision that produces them. +/// ───────────────────────────────────────────────────────────────────────── +extension NextLegPresentation on NextLeg { + /// The eyebrow above the destination — what kind of journey this is. + String get eyebrow => switch (this) { + NextLeg.customer => 'CUSTOMER DELIVERY', + NextLeg.hub => 'BASE HANDOVER', + NextLeg.unknown => 'AWAITING ROUTING', + NextLeg.closed => '', + }; + + /// The act, in the rider's own words, for a completed record on Activity. + /// + /// Deliberately different verbs: he *delivered* to a person and he *handed + /// over* to a building, and Activity is the one place those two must not read + /// the same. + String get completionVerb => switch (this) { + NextLeg.customer => 'Delivered to customer', + NextLeg.hub => 'Handed over at base', + NextLeg.unknown => 'Collected', + NextLeg.closed => 'Closed', + }; + + /// Whether the rider may release this parcel into a customer round. + /// + /// **The one gate that matters.** `Start delivery` on a hub-routed parcel + /// would move a Chennai consignment to `Out_for_Delivery` against a receiver + /// this rider is never going to reach, and there is no way back from that + /// state on the handset. + bool get allowsCustomerDelivery => this == NextLeg.customer; + + /// Whether this leg needs the rider to go to a hub. + bool get needsHubHandover => this == NextLeg.hub; +} + +/// ───────────────────────────────────────────────────────────────────────── +/// THE BASE A PARCEL IS TO BE HANDED IN AT +/// +/// `next_hub` on the booking row and on the `pickup-complete` response, read +/// once here so no screen picks its own key spellings. +/// +/// ── Why the coordinates are the point ── +/// +/// The app knew a parcel was hub-routed long before it knew where the base +/// was, and "hand this in somewhere" is not an instruction a rider can follow. +/// Every `hubLat`/`hubLng` in the codebase was the rider's own position +/// standing in for a building, which is fine for anchoring a route estimate and +/// useless for navigating to a gate. This is the real one. +/// ───────────────────────────────────────────────────────────────────────── +class HandoverHub { + const HandoverHub({ + required this.id, + required this.name, + this.address = '', + this.pincode = '', + this.latitude = 0, + this.longitude = 0, + }); + + final String id; + final String name; + final String address; + final String pincode; + final double latitude; + final double longitude; + + /// True when this base can actually be navigated to. + /// + /// A base with a name and no coordinates is a caption, not a destination — + /// and the screen has to say so rather than opening a map on `0, 0` in the + /// Gulf of Guinea. + bool get isNavigable => latitude != 0 && longitude != 0; + + /// Reads `next_hub` off a row, or null when there is no base leg. + /// + /// Tolerant of key spellings for the same reason the booking adapter is: a + /// naming mismatch here is a rider with no destination, and the cost of + /// accepting three spellings is three map lookups. + static HandoverHub? from(dynamic raw) { + if (raw is! Map) return null; + final m = raw.map((k, v) => MapEntry(k.toString(), v)); + + String str(List keys) { + for (final k in keys) { + final v = m[k]; + if (v == null) continue; + final s = v.toString().trim(); + if (s.isNotEmpty && s != 'null') return s; + } + return ''; + } + + double num_(List keys) { + for (final k in keys) { + final v = m[k]; + if (v == null) continue; + final d = v is num ? v.toDouble() : double.tryParse(v.toString()); + if (d != null && d != 0) return d; + } + return 0; + } + + final id = str(const ['id', 'hubid', 'hub_id']); + final name = str(const ['name', 'hubname', 'hub_name']); + // Neither an id nor a name is not a base — it is an empty object, and + // returning a blank one would put an untitled destination on the card. + if (id.isEmpty && name.isEmpty) return null; + + return HandoverHub( + id: id, + name: name, + address: str(const ['address', 'hubaddress', 'hub_address']), + pincode: str(const ['pincode', 'hubpincode', 'hub_pincode']), + latitude: num_(const ['latitude', 'lat', 'hublatitude']), + longitude: num_(const ['longitude', 'lon', 'lng', 'hublongitude']), + ); + } +} + +/// What kind of place a stop is collected from — request 28's `pickup_source_type`. +/// +/// ── Why this is read and never inferred ── +/// +/// The app has no way to work it out. A base and a shop are both just names in +/// the same field, and a missing `pickuplocationid` means either "collected at +/// a person's front door" or "the field was not filled in" — two facts one +/// absence cannot tell apart. So this is the server's word or it is +/// [PickupSource.unknown], and Home draws a plain pickup for the latter rather +/// than guessing a kind and putting the wrong noun on the biggest type on the +/// screen. +enum PickupSource { + hub, + customer, + merchant, + store, + unknown; + + /// Parses `pickup_source_type` off a row. + /// + /// ── The value names match the wire, so the wire is not spelled twice ── + /// + /// Each case's own [name] *is* the word the backend sends, so the primary + /// match is a name comparison rather than a table of string literals that + /// could drift from the enum beside it. The switch below holds only the + /// aliases, which are the spellings that genuinely differ. + static PickupSource of(Map row) { + final raw = (row['pickup_source_type'] ?? '') + .toString() + .trim() + .toLowerCase(); + if (raw.isEmpty) return PickupSource.unknown; + + for (final value in PickupSource.values) { + if (value != PickupSource.unknown && value.name == raw) return value; + } + + return switch (raw) { + 'base' => PickupSource.hub, + 'sender' => PickupSource.customer, + 'kitchen' => PickupSource.merchant, + 'shop' => PickupSource.store, + // A word this build has not been told about is a generic pickup, never a + // failure and never a guess. New types can ship server-side without + // waiting on an app release. + _ => PickupSource.unknown, + }; + } + + /// The eyebrow over the place's name on Home. + /// + /// "BASE", never "HUB" — hub is internal vocabulary and no rider-facing + /// string may carry it. See `no_hub_in_rider_copy_test.dart`. + String get eyebrow => switch (this) { + PickupSource.hub => 'BASE PICKUP', + PickupSource.customer => 'CUSTOMER PICKUP', + PickupSource.merchant => 'MERCHANT PICKUP', + PickupSource.store => 'STORE PICKUP', + PickupSource.unknown => 'PICKUP', + }; + + /// True where the rider collects a stack at one counter, rather than one + /// parcel from one person. Drives the bulk-collect control. + bool get isCounter => + this == PickupSource.hub || + this == PickupSource.merchant || + this == PickupSource.store; +} diff --git a/lib/data/pickup_locations.dart b/lib/data/pickup_locations.dart index 6db1c64..29225d1 100644 --- a/lib/data/pickup_locations.dart +++ b/lib/data/pickup_locations.dart @@ -3,6 +3,7 @@ import 'package:shared_preferences/shared_preferences.dart'; import 'package:miler/data/api_config.dart'; import 'package:miler/data/miler_api.dart'; +import 'package:miler/data/next_leg.dart'; import 'package:miler/data/service_profile.dart'; /// ───────────────────────────────────────────────────────────────────────── @@ -49,6 +50,21 @@ abstract final class PickupLocations { /// [ensureLoaded] has run and the backend has answered. static Map _byId = const {}; + /// The full base record by id — name, address and the coordinates a hand-over + /// is navigated to. Empty until [ensureLoaded] has answered. + static Map _bases = const {}; + + /// The base for an id, or null when this build has none. + /// + /// Read by the hand-over card: a base it cannot resolve is drawn with the + /// name the server put on `next_hub` and no Navigate button, which is honest. + /// Guessing a nearby base would be worse than saying nothing. + static HandoverHub? baseFor(Object? id) { + final key = id?.toString().trim() ?? ''; + if (key.isEmpty || key == '0') return null; + return _bases[key]; + } + /// In-flight load, so a screen rebuilding mid-fetch joins the request that /// is already running instead of starting a second one. static Future? _loading; @@ -68,6 +84,18 @@ abstract final class PickupLocations { return _byId[id] ?? ''; } + /// Fills the table directly, for tests and for nothing else. + /// + /// The real load goes through `/admin/tenant/:id/locations`, which a test has + /// no business standing up. Marked settled so [ensureLoaded] does not then + /// overwrite the seed with a live answer. + @visibleForTesting + static void seedForTest(Map byId) { + _byId = Map.from(byId); + _settled = byId.isNotEmpty; + _loading = null; + } + /// True when the table holds anything at all. static bool get isLoaded => _byId.isNotEmpty; @@ -96,23 +124,31 @@ abstract final class PickupLocations { return; } - final res = await MilerApi.tenantLocations(tenantId); + // ── The rider-readable route, at last ── + // + // This called `GET /admin/tenants/:id/locations` and logged a gap every + // time it came back 401. The backend team settled it: that route is a + // **different dataset** — a client's own sites, not bases — and `/admin/*` + // requires roles 1/3/4 while a rider is role 5. The refusal was by design + // and the gap report was wrong. + // + // `GET /miler/bases` is the one a rider may read, and it carries the + // address and coordinates the old route never did. Naming a base is no + // longer the whole job: a hand-over has to be navigated to. + final res = await MilerApi.bases(); if (!res.ok) { - // The expected outcome if riders are not admitted to `/admin`. Logged - // as a gap rather than an error: it is a question for the backend, and - // the app is already correct without it. ApiConfig.logGap( - 'admin/tenants/:id/locations', - 'tenant $tenantId locations came back ${res.status} ${res.message}. ' - 'Pickup headings will use the booking row\'s own `sourcename`, ' - 'which is a contact person on some rows. If riders are meant to ' - 'read this route, it needs to accept a miler token.', + 'miler/bases', + 'bases came back ${res.status} ${res.message}. Pickup headings will ' + 'fall back to the booking row\'s own name, and a base hand-over ' + 'will have no coordinates to navigate to.', ); _settled = true; return; } final table = {}; + final bases = {}; for (final row in res.list) { if (row is! Map) continue; final m = row.map((k, v) => MapEntry(k.toString(), v)); @@ -124,6 +160,10 @@ abstract final class PickupLocations { 'location_id', 'id', ]); + // The whole base, kept beside the name — [HandoverHub] is what the + // hand-over card and its Navigate button read. + final base = HandoverHub.from(m); + if (base != null && id.isNotEmpty) bases[id] = base; final name = _first(m, const [ 'locationname', 'locationName', @@ -142,6 +182,7 @@ abstract final class PickupLocations { } _byId = table; + _bases = bases; _settled = true; debugPrint('[LOCATIONS] tenant $tenantId → ${table.length} named'); if (table.isEmpty && kDebugMode) { @@ -172,6 +213,7 @@ abstract final class PickupLocations { @visibleForTesting static void reset() { _byId = const {}; + _bases = const {}; _settled = false; _loading = null; } @@ -183,3 +225,59 @@ abstract final class PickupLocations { _settled = true; } } + +/// ───────────────────────────────────────────────────────────────────────── +/// THE RIDER'S OWN HUB +/// +/// A logistics day starts and ends at one building. The hub assigns the day's +/// bookings — collections, drops and both — hands the rider the route, and he +/// accepts the lot before he leaves. So on Home the whole run belongs to that +/// building, and the card at the head of it is named after it. +/// +/// ── Why this is not read off a booking ── +/// +/// The obvious source is the stop's own `pickuplocationid`, and it is right for +/// exactly half the run. A **drop** is loaded at the hub, so its pickup +/// location *is* the hub; a **collection** is picked up at the customer's door, +/// so its pickup location is the customer. Naming the head card from the +/// bookings therefore titled it with whichever address happened to sort first — +/// a customer's street on a run that starts at a depot. +/// +/// The hub is a fact about the **rider**, not about any one booking. It is his +/// `locationid`, written at login from `applocationid` falling back to `hubid`, +/// and resolved to something he can read off a sign through [PickupLocations]. +/// +/// ── Everything here degrades to a name, never to a blocked screen ── +/// +/// The id may be missing, the locations table may be empty or refused, and the +/// name may simply not be in it. Each of those yields `''`, and the caller +/// falls back to what it drew before. Nothing on this path may stop a rider +/// working — the same rule [PickupLocations] is built on. +abstract final class RiderHub { + static int _id = 0; + + /// The hub's location id, or 0 before login has landed. + static int get id => _id; + + /// The name a rider can read off the building, or `''` when this build has + /// none. Synchronous: it is read from `build`. + static String get name => PickupLocations.nameFor(_id); + + /// Reads the id the login persisted. Cheap, and safe on every queue fetch. + static Future ensureLoaded() async { + if (_id > 0) return; + try { + final prefs = await SharedPreferences.getInstance(); + // `locationid` is written as `applocationid ?? hubid` — see + // `auth_provider.dart`. Both name the building this rider works out of. + _id = prefs.getInt('locationid') ?? 0; + } catch (_) { + // A device that cannot read its own prefs is a device with no hub name, + // which is a caption, not a capability. + _id = 0; + } + } + + /// For tests, and for a rider who changes hub without reinstalling. + static void resetForTest([int id = 0]) => _id = id; +} diff --git a/lib/data/service_profile.dart b/lib/data/service_profile.dart index 763e026..e34dc19 100644 --- a/lib/data/service_profile.dart +++ b/lib/data/service_profile.dart @@ -659,6 +659,38 @@ class TenantController extends GetxController { /// /// **If tenant 13 is not the milk-run client**, this line is the whole fix: /// remove the 13 and a rider on it goes back to logistics. + /// ══ THE APP IS PINNED TO THE MILK MAN LINE ══ + /// + /// **This is a temporary operating decision, not a permanent one.** While it + /// is `true`, [resolveServiceProfile] returns [ServiceProfile.milkMan] before + /// it consults the rider's tenant, the token claim or the build flag — so + /// every signed-in rider works the milk round and the logistics + /// customer-pickup flow is unreachable from the UI. + /// + /// ── Why it is a pin and not a deletion ── + /// + /// The logistics screens are not removed, and nothing about them is edited. + /// The whole line is gated behind [ServiceProfile.handsOffAtCollection] and + /// its siblings already, so pinning the profile is enough to take it off the + /// screen — and turning it back on is this one word. Deleting the code would + /// have been a one-way door for a decision described as "as of now". + /// + /// ── What it fixes today ── + /// + /// Tenant resolution is name-first, and the milk-run rider's tenant is + /// spelled `Doormile` — which [logisticsTenantNames] maps, correctly and + /// deliberately, to **logistics**. So a genuine milk-man rider resolved to + /// the parcel line, and every symptom followed from that one answer: accept + /// handed off immediately and jumped him to the work tab, the Bookings page + /// offered **Start Pickup** for orders that belong on Home, and the leg the + /// distance measured to was the kitchen rather than the door. + /// + /// ── Turning it off ── + /// + /// Set to `false` and the app resolves per rider again, exactly as before. + /// Do that before shipping any build a logistics rider will sign in to. + static const bool pinToMilkManLine = true; + static const Set milkManTenantIds = {13}; /// The old name for [milkManTenantIds]. @@ -800,7 +832,19 @@ class TenantController extends GetxController { /// seeing a payment prompt he can dismiss; the other direction takes the /// cash-collection screen away from a live logistics rider at a door. Future load() async { - final resolved = await resolveServiceProfile(); + // ── The pin sits here, not inside the resolver ── + // + // `resolveServiceProfile()` is a pure function over the rider's account and + // it is what the tenant tests exercise directly; short-circuiting *it* made + // 24 of them assert against a function that no longer answered the question + // they were asking. This method is the app's only caller and the single + // place the answer is published, so pinning here takes the whole app onto + // the milk round while leaving the resolution rules intact and testable. + // + // See [pinToMilkManLine] for what this is for and how to lift it. + final resolved = pinToMilkManLine + ? ServiceProfile.milkMan + : await resolveServiceProfile(); ServiceProfile.setActive(resolved); profile.value = resolved; debugPrint('[TENANT] resolved ${resolved.label}'); diff --git a/lib/data/work_domain.dart b/lib/data/work_domain.dart index 6f9fdab..2f22b36 100644 --- a/lib/data/work_domain.dart +++ b/lib/data/work_domain.dart @@ -1,5 +1,6 @@ import 'package:miler/Models/stop_status.dart'; import 'package:miler/data/milk_run.dart'; +import 'package:miler/data/next_leg.dart'; import 'package:miler/data/service_profile.dart'; /// ───────────────────────────────────────────────────────────────────────── @@ -91,10 +92,10 @@ abstract final class WorkBoundary { /// True when this order is finished or withdrawn, whatever screen it was on. /// - /// [StopStatus.picked] is terminal on a line that ends at the hub and is the - /// middle of the morning on one that does not — so it is asked of the line, - /// through the same knob everything else here reads. See - /// [ServiceProfile.endsAtHub]. + /// [StopStatus.picked] is terminal for some orders and the middle of the + /// morning for others, and **which one is a property of the order, not of the + /// line**. It is asked of [NextLegResolver], which reads the backend's own + /// routing answer. See the note on the picked branch below. /// /// ── Skipped closes, and why it has to close *here* ── /// @@ -128,6 +129,9 @@ abstract final class WorkBoundary { static bool isClosed( Map stop, { Set closedIds = const {}, + + /// `next_action` recorded at each order's pivot — see [NextLegResolver]. + Map pivotActions = const {}, }) { if (closedIds.isNotEmpty && closedIds.contains(MilkRun.idOf(stop))) { return true; @@ -138,7 +142,31 @@ abstract final class WorkBoundary { // rider walked away from and one the office called off are different // records, and Activity slices them apart. if (status.isSkipped) return true; - return status.isPicked && ServiceProfile.active.endsAtHub; + + // ── After the pickup, ownership is a question about the ORDER ── + // + // This read `status.isPicked && ServiceProfile.active.endsAtHub`, and that + // is a line-level constant deciding a per-order fact. On logistics + // `endsAtHub` is always true, so **every collected parcel was closed at the + // pickup** — including the hyperlocal ones the pivot had just released + // `Out_for_Delivery` into this rider's own hands. He walked away from the + // sender's door carrying a parcel his app had already filed as finished. + // + // The backend decides where a parcel goes next and always has; the app now + // asks. [NextLeg.closed] is the only answer that retires the stop — + // `customer` and `hub` are both journeys the rider still owes, and + // `unknown` is a parcel in his bag whose destination has not been named, + // which must never be silently written off. See [NextLegResolver] for the + // precedence between the pivot, the row and the local record. + // + // [ServiceProfile.endsAtHub] survives as a line-level capability hint — it + // still tells the route card whether the day ends at a depot — but it no + // longer decides whether one order is finished. + if (!status.isPicked && !status.isDeliveryLeg) return false; + return NextLegResolver.resolve( + stop, + pivotAction: pivotActions[MilkRun.idOf(stop)] ?? '', + ).isClosed; } /// Which screen owns this order. @@ -154,8 +182,42 @@ abstract final class WorkBoundary { /// Orders written off today — delivered, cancelled or skipped — read back /// from the completed and skipped stores. See [isClosed]. Set closedIds = const {}, + + /// `next_action` recorded at each order's pivot — see [NextLegResolver]. + Map pivotActions = const {}, }) { - if (isClosed(stop, closedIds: closedIds)) return WorkDomain.closed; + if (isClosed(stop, closedIds: closedIds, pivotActions: pivotActions)) { + return WorkDomain.closed; + } + + // ── A collected parcel is the work tab's, whatever the line says ── + // + // Below [isClosed] and above the handoff knob, deliberately. Once the + // backend confirms the collection the parcel is physically the rider's, and + // "in my hands, still owed a journey" is the definition of the delivery + // domain on every line. Reading it here rather than from the per-line + // handoff point is what lets a hyperlocal logistics parcel reach Deliveries + // at all — its own line hands off at *acceptance*, which says nothing about + // custody. + // + // ── Gated on the collection having happened ── + // + // [NextLegResolver] answers [NextLeg.unknown] for any row it cannot place, + // and an uncollected booking is one of those: a pending assignment carries + // no consignment state and no pivot record, exactly like a collected parcel + // the server has not routed yet. Asking without this gate handed every + // pending stop to Deliveries — the dual-ownership failure in reverse. + // + // "Is it in his hands?" is [pickupComplete]'s question and it has a real + // answer: the backend's own status, or the collected record written after + // the pivot came back OK. Only then is there a leg to resolve. + if (pickupComplete(stop, collectedIds: collectedIds) && + NextLegResolver.resolve( + stop, + pivotAction: pivotActions[MilkRun.idOf(stop)] ?? '', + ).isInCustody) { + return WorkDomain.delivery; + } final handedOver = switch (ServiceProfile.active.handoffAt) { HandoffPoint.collected => pickupComplete( @@ -184,6 +246,7 @@ abstract final class WorkBoundary { Set collectedIds = const {}, Set acceptedIds = const {}, Set closedIds = const {}, + Map pivotActions = const {}, }) => [ for (final stop in day) if (domainOf( @@ -191,6 +254,7 @@ abstract final class WorkBoundary { collectedIds: collectedIds, acceptedIds: acceptedIds, closedIds: closedIds, + pivotActions: pivotActions, ) == WorkDomain.delivery) stop, @@ -202,6 +266,7 @@ abstract final class WorkBoundary { Set collectedIds = const {}, Set acceptedIds = const {}, Set closedIds = const {}, + Map pivotActions = const {}, }) => [ for (final stop in day) if (domainOf( @@ -209,6 +274,7 @@ abstract final class WorkBoundary { collectedIds: collectedIds, acceptedIds: acceptedIds, closedIds: closedIds, + pivotActions: pivotActions, ) == WorkDomain.pickup) stop, diff --git a/lib/providers/notifications/notificationservce.dart b/lib/providers/notifications/notificationservce.dart index 4527359..1a934b0 100644 --- a/lib/providers/notifications/notificationservce.dart +++ b/lib/providers/notifications/notificationservce.dart @@ -368,7 +368,7 @@ class NotificationServce { Text( title, style: const TextStyle( - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, ), ), diff --git a/lib/providers/pickuplog/pickuplog_provider.dart b/lib/providers/pickuplog/pickuplog_provider.dart index 652ae2c..98988da 100644 --- a/lib/providers/pickuplog/pickuplog_provider.dart +++ b/lib/providers/pickuplog/pickuplog_provider.dart @@ -281,18 +281,37 @@ class UpdatePickupProvider { } if (picked.ok) { final newId = _consignmentIdFrom(picked); + final orderKey = (data['orderid'] ?? id ?? '').toString().trim(); + + // ── What the pivot said about what happens next, RECORDED ── + // + // Since 21 Aug 2026 the response carries `status` and `next_action`: + // a hyperlocal booking lands on `Collected_By_Miler` with + // `start_delivery`, and a hub-routed one on `Created` with + // `inward_at_hub`. + // + // This used to be logged and dropped, on the reasoning that the + // states it produces are read back from the consignment itself. That + // holds for the *release*, and not for the **routing**: the pivot is + // the only place the server ever names the leg, `GET /miler/bookings` + // does not carry `next_action`, and `Created` — the state a + // hub-routed parcel sits on — is also the state a consignment holds + // while the pivot is still routing it. So on the next poll the two + // routings are indistinguishable, and the app either strands a + // hyperlocal parcel or offers a customer delivery for a parcel bound + // for Chennai. + // + // Recorded per order, and read as the **lowest** rung of + // [NextLegResolver]'s precedence — continuity across a rebuild, never + // an override of live server state. + // + // Written outside the `newId` branch on purpose: the routing answer + // is worth keeping even on a response that named no consignment, + // which is a real shape (see the gap logged below). + await rememberPivotNextAction(orderKey, pivot.nextAction); + if (newId.isNotEmpty) { - final orderKey = (data['orderid'] ?? id ?? '').toString().trim(); await rememberConsignmentId(orderKey, newId); - // ── What the pivot now says about what happens next ── - // - // Since 21 Aug 2026 the response also carries `status` and - // `next_action`: a hyperlocal booking lands on - // `Collected_By_Miler` with `start_delivery`, and a hub-routed one - // on `Created` with `inward_at_hub`. Logged rather than acted on — - // the release is the rider's press, and the states it produces are - // read back from the consignment itself, never remembered from - // here. See `MyPickups.startRound`. debugPrint( '[PICKUP] booking $orderKey → consignment $newId ' '(${_field(picked, 'status')}, next: ' diff --git a/lib/views/Dashboard/activity/activity_page.dart b/lib/views/Dashboard/activity/activity_page.dart index d75c528..fa3bca5 100644 --- a/lib/views/Dashboard/activity/activity_page.dart +++ b/lib/views/Dashboard/activity/activity_page.dart @@ -734,7 +734,7 @@ class _ActivityPageState extends State 'Today', style: MilerType.body.copyWith( fontSize: 19.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.4, ), ), @@ -799,7 +799,7 @@ class _ActivityPageState extends State // The brief's `display-lg`, which is what a figure the page is // answering with is meant to be set at. fontSize: 30.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: -1, height: 1.0, fontFeatures: const [FontFeature.tabularFigures()], @@ -816,7 +816,7 @@ class _ActivityPageState extends State style: TextStyle( fontSize: 13.sp, height: 1.0, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: Narrative.inkSoft, fontFamily: FontConstants.fontFamily, ), @@ -925,7 +925,7 @@ class _ActivityPageState extends State ), style: MilerType.body.copyWith( fontSize: 13.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ), ], @@ -1042,7 +1042,7 @@ class _ActivityPageState extends State // a pill is as wide as its own label, so `Cancelled` no // longer has to fit the width `All` was given. fontSize: 13.5.sp, - fontWeight: selected ? FontWeight.w700 : FontWeight.w600, + fontWeight: selected ? FontWeight.w800 : FontWeight.w700, letterSpacing: -0.1, color: selected ? Colors.white : Narrative.inkMuted, ), @@ -1060,7 +1060,7 @@ class _ActivityPageState extends State '$_attentionCount', style: MilerType.body.copyWith( fontSize: 13.5.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, color: selected ? Colors.white : Narrative.amber, ), ), @@ -1279,7 +1279,7 @@ class _ActivityPageState extends State 'Trip ${trip.tripNumber == 0 ? slot + 1 : trip.tripNumber}', style: MilerType.body.copyWith( fontSize: 16.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, ), ), @@ -1381,7 +1381,7 @@ class _ActivityPageState extends State Widget _dotted(List<(String, Color)> parts, {double size = 13}) { final style = MilerType.micro.copyWith( fontSize: size.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, ); return Wrap( crossAxisAlignment: WrapCrossAlignment.center, @@ -1419,7 +1419,7 @@ class _ActivityPageState extends State textAlign: TextAlign.center, style: MilerType.body.copyWith( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, ), ), @@ -1778,7 +1778,7 @@ class _ActivityPageState extends State style: MilerType.body.copyWith( // `title-lg`: the card's own heading. fontSize: 16.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.2, color: Narrative.ink, ), @@ -1815,7 +1815,7 @@ class _ActivityPageState extends State color: ColorConstants.moneyGreen, ).copyWith( - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, ), ), ], @@ -1829,7 +1829,7 @@ class _ActivityPageState extends State 12.5, color: Narrative.inkMuted, ).copyWith( - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ), ], @@ -1886,7 +1886,7 @@ class _ActivityPageState extends State overflow: TextOverflow.ellipsis, style: MilerType.micro.copyWith( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.warning, ), ), @@ -1962,7 +1962,7 @@ class _ActivityPageState extends State 'Resume stop', style: MilerType.body.copyWith( fontSize: 13.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.primary, ), ), diff --git a/lib/views/Dashboard/activity/delivery_details_page.dart b/lib/views/Dashboard/activity/delivery_details_page.dart index c257920..84d5af1 100644 --- a/lib/views/Dashboard/activity/delivery_details_page.dart +++ b/lib/views/Dashboard/activity/delivery_details_page.dart @@ -117,7 +117,7 @@ class DeliveryDetailsPage extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.2, color: ColorConstants.onAccent.withValues(alpha: 0.72), fontFamily: FontConstants.fontFamily, @@ -254,7 +254,7 @@ class DeliveryDetailsPage extends StatelessWidget { overflow: TextOverflow.ellipsis, style: MilerType.body.copyWith( fontSize: 23.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.6, height: 1.15, color: mark, @@ -274,7 +274,7 @@ class DeliveryDetailsPage extends StatelessWidget { overflow: TextOverflow.ellipsis, style: MilerType.micro.copyWith( fontSize: 13.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, ), ), ], @@ -321,7 +321,7 @@ class DeliveryDetailsPage extends StatelessWidget { style: MilerType.figure( 13.sp, color: ColorConstants.slateText, - ).copyWith(fontWeight: FontWeight.w700), + ).copyWith(fontWeight: FontWeight.w800), ), SizedBox(height: 2.h), Text( @@ -382,7 +382,7 @@ class DeliveryDetailsPage extends StatelessWidget { note ?? 'Arrived later than planned', style: MilerType.micro.copyWith( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: late ? ColorConstants.warning : ColorConstants.secondaryText, @@ -536,7 +536,7 @@ class DeliveryDetailsPage extends StatelessWidget { style: MilerType.figure( 13.5, color: ColorConstants.slateText, - ).copyWith(fontWeight: FontWeight.w700), + ).copyWith(fontWeight: FontWeight.w800), ), ), ), @@ -577,7 +577,7 @@ class DeliveryDetailsPage extends StatelessWidget { style: MilerType.figure( 18, color: tint ?? ColorConstants.slateText, - ).copyWith(fontWeight: FontWeight.w700, letterSpacing: -0.4), + ).copyWith(fontWeight: FontWeight.w800, letterSpacing: -0.4), ), ), ], @@ -662,7 +662,7 @@ class DeliveryDetailsPage extends StatelessWidget { 'Proof of delivery', style: MilerType.body.copyWith( fontSize: 16.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, ), ), @@ -717,7 +717,7 @@ class DeliveryDetailsPage extends StatelessWidget { 'View full', style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.onAccent, fontFamily: FontConstants.fontFamily, ), @@ -748,7 +748,7 @@ class DeliveryDetailsPage extends StatelessWidget { overflow: TextOverflow.ellipsis, style: MilerType.micro.copyWith( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, ), ), ), @@ -1259,7 +1259,7 @@ class DeliveryDetailsPage extends StatelessWidget { overflow: TextOverflow.ellipsis, style: MilerType.micro.copyWith( fontSize: 14.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.slateText, ), ), @@ -1461,8 +1461,8 @@ class _InfoRow extends StatelessWidget { // ETA or a missed one. Those keep the weight; the // ordinary rows are medium. fontWeight: good == null - ? FontWeight.w500 - : FontWeight.w600, + ? FontWeight.w600 + : FontWeight.w700, color: valueColor, ), ), @@ -1582,7 +1582,7 @@ class _DisclosureRowState extends State<_DisclosureRow> { widget.title, style: MilerType.body.copyWith( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.2, ), ), @@ -1680,7 +1680,7 @@ class _JourneyPanelState extends State<_JourneyPanel> { overflow: TextOverflow.ellipsis, style: MilerType.body.copyWith( fontSize: 16.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, ), ), @@ -1744,7 +1744,7 @@ class _JourneyPanelState extends State<_JourneyPanel> { maxLines: 1, style: MilerType.body.copyWith( fontSize: 12.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.1, color: ColorConstants.primary, ), @@ -1836,7 +1836,7 @@ class _JourneyPanelState extends State<_JourneyPanel> { overflow: TextOverflow.ellipsis, style: MilerType.body.copyWith( fontSize: 14.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, ), ), @@ -1869,7 +1869,7 @@ class _JourneyPanelState extends State<_JourneyPanel> { overflow: TextOverflow.ellipsis, style: MilerType.micro.copyWith( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: Narrative.emerald, ), ), @@ -1921,7 +1921,7 @@ class _JourneyPanelState extends State<_JourneyPanel> { ? ColorConstants.slateText : ColorConstants.secondaryText, ).copyWith( - fontWeight: lead ? FontWeight.w700 : FontWeight.w600, + fontWeight: lead ? FontWeight.w800 : FontWeight.w700, letterSpacing: 0, ), ), @@ -2030,7 +2030,7 @@ class _JourneyPanelState extends State<_JourneyPanel> { overflow: TextOverflow.ellipsis, style: MilerType.body.copyWith( fontSize: 16.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.3, ), ), @@ -2061,8 +2061,8 @@ class _JourneyPanelState extends State<_JourneyPanel> { ? 14.sp : (lead ? 16.sp : 15.sp), fontWeight: point.place != null - ? FontWeight.w500 - : FontWeight.w600, + ? FontWeight.w600 + : FontWeight.w700, letterSpacing: -0.2, color: reached ? (point.place != null @@ -2222,7 +2222,7 @@ class _Stepper extends StatelessWidget { color: lead ? ColorConstants.slateText : ColorConstants.secondaryText, - ).copyWith(fontWeight: lead ? FontWeight.w700 : FontWeight.w600), + ).copyWith(fontWeight: lead ? FontWeight.w800 : FontWeight.w700), ), ], ); diff --git a/lib/views/Dashboard/home/accepted_pill.dart b/lib/views/Dashboard/home/accepted_pill.dart index 45707ad..84c6b50 100644 --- a/lib/views/Dashboard/home/accepted_pill.dart +++ b/lib/views/Dashboard/home/accepted_pill.dart @@ -128,7 +128,7 @@ class AcceptedPill extends StatelessWidget { '$count', style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, height: 1, letterSpacing: -0.3, color: ColorConstants.onAccent, @@ -152,7 +152,7 @@ class AcceptedPill extends StatelessWidget { _waiting(profile, count), style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.1, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, diff --git a/lib/views/Dashboard/home/duty_sheet.dart b/lib/views/Dashboard/home/duty_sheet.dart index b81b956..b17cc8d 100644 --- a/lib/views/Dashboard/home/duty_sheet.dart +++ b/lib/views/Dashboard/home/duty_sheet.dart @@ -96,7 +96,7 @@ class DutySheet extends StatelessWidget { goingOnline ? 'Go on duty?' : 'Go off duty?', style: TextStyle( fontSize: 21.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.5, height: 1.2, fontFamily: FontConstants.fontFamily, @@ -123,7 +123,7 @@ class DutySheet extends StatelessWidget { style: TextStyle( fontSize: 14.5.sp, height: 1.45, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, fontFamily: FontConstants.fontFamily, color: ColorConstants.secondaryText, ), @@ -161,7 +161,7 @@ class DutySheet extends StatelessWidget { goingOnline ? 'Go on duty' : 'Go off duty', style: TextStyle( fontSize: 16.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, fontFamily: FontConstants.fontFamily, color: ColorConstants.onAccent, @@ -189,7 +189,7 @@ class DutySheet extends StatelessWidget { goingOnline ? 'Not yet' : 'Stay on duty', style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, color: ColorConstants.secondaryText, ), diff --git a/lib/views/Dashboard/home/home_header.dart b/lib/views/Dashboard/home/home_header.dart index ecc7842..8f25690 100644 --- a/lib/views/Dashboard/home/home_header.dart +++ b/lib/views/Dashboard/home/home_header.dart @@ -226,7 +226,7 @@ class HomeHeaderDelegate extends SliverPersistentHeaderDelegate { gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, - colors: [Color(0xFFA51C1C), Color(0xFF8B1A1A)], + colors: [ColorConstants.brandBarTop, ColorConstants.brandBarBottom], ), ), child: MediaQuery.withClampedTextScaling( @@ -370,7 +370,7 @@ class _ExpandedBody extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: 1.6, color: Colors.white.withValues(alpha: 0.72), fontFamily: FontConstants.fontFamily, @@ -400,7 +400,7 @@ class _ExpandedBody extends StatelessWidget { style: TextStyle( fontSize: 24.sp, height: 1.15, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.6, color: Colors.white, fontFamily: FontConstants.fontFamily, @@ -463,7 +463,7 @@ class _CollapsedRow extends StatelessWidget { maxLines: 1, style: TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.2, color: Colors.white, fontFamily: FontConstants.fontFamily, @@ -598,7 +598,7 @@ class DutyPill extends StatelessWidget { maxLines: 1, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: 0.8, color: Colors.white, fontFamily: FontConstants.fontFamily, diff --git a/lib/views/Dashboard/home/homepage.dart b/lib/views/Dashboard/home/homepage.dart index a7a5d5a..d7677e3 100644 --- a/lib/views/Dashboard/home/homepage.dart +++ b/lib/views/Dashboard/home/homepage.dart @@ -63,7 +63,6 @@ import 'package:miler/data/consignment_state.dart'; import 'package:miler/views/Dashboard/pickups/collect_payment.dart'; import 'package:miler/views/Dashboard/pickups/stop_type.dart'; import 'package:miler/widget/Bottom_page.dart'; -import 'package:miler/data/meal_run_mock.dart'; import 'package:miler/data/order_manifest.dart'; import 'package:miler/data/milk_run.dart'; import 'package:miler/data/order_events.dart'; @@ -233,6 +232,11 @@ class _HomepageState extends State /// "picked", and `picked` is the delivery. See the collected store. Set _collectedIds = {}; + /// `next_action` per order, as the pivot returned it. Home reads it only to + /// count what is waiting on the other tab — the two screens must hand + /// [WorkBoundary] the same arguments or their counts drift apart. + Map _pivotActions = {}; + /// Orders the rider has written off today — delivered, cancelled or skipped. /// /// The union of the completed and skipped stores, both of which record a @@ -291,6 +295,9 @@ class _HomepageState extends State // booking already carries. One request, cached, and every failure resolves // to "use the row's own name" — see [PickupLocations]. unawaited(PickupLocations.ensureLoaded()); + // The building the logistics run is headed by — see [RiderHub]. Read from + // prefs the login wrote, so it costs nothing and cannot fail the fetch. + unawaited(RiderHub.ensureLoaded()); BottomPage.currentTab.addListener(_onTabChanged); WidgetsBinding.instance.addPostFrameCallback((_) { _fetchQueues(); @@ -677,7 +684,7 @@ class _HomepageState extends State 'Not at Pickup Location', style: TextStyle( fontSize: FontConstants.xLarge(context), - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, color: _textPrimary, ), @@ -704,7 +711,7 @@ class _HomepageState extends State 'OK', style: TextStyle( fontSize: FontConstants.regular(context), - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, ), ), @@ -764,7 +771,7 @@ class _HomepageState extends State style: TextStyle( fontFamily: FontConstants.fontFamily, color: _textPrimary, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, ), ), content: Text( @@ -1180,6 +1187,7 @@ class _HomepageState extends State final acceptedIds = await getAcceptedOrderIds(); final rejectedIds = await getRejectedOrderIds(); final collectedIds = await getCollectedOrderIds(); + final pivotActions = await getPivotNextActions(); // Stops parked for a return visit. They are Activity's now — see the // stamping loop below and `TripCard._showsOnHome`. final skippedIds = await getSkippedOrderIds(); @@ -1330,6 +1338,7 @@ class _HomepageState extends State _acceptedIds = acceptedIds; _rejectedIds = rejectedIds; _collectedIds = collectedIds; + _pivotActions = pivotActions; _ordersMap = newOrdersMap; _orderIds = newOrderIds; _selectedOrders = newSelection; @@ -1670,14 +1679,6 @@ class _HomepageState extends State } if (base == null) return; - // A telemetry log about a booking the backend has never issued is a row - // nobody can join to anything. The meal line's stops exist only on this - // phone until the endpoints land — see [MealRunMock]. - if (MealRunMock.active) { - debugPrint('[MEAL_MOCK] pickup log not posted for $orderId'); - return; - } - final coords = await _getValidCoordinates(); final now = DateTime.now(); final logdate = @@ -1719,7 +1720,7 @@ class _HomepageState extends State if (selectedOrderIds.isEmpty) return "Accept Bookings"; final statuses = selectedOrderIds - .map((id) => _getStatusFromOrder(_ordersMap[id] ?? {})) + .map((id) => _getStatusFromOrder(_bulkStopFor(id) ?? const {})) .toSet(); if (statuses.length == 1 && statuses.first == 'ACCEPT') { @@ -1794,6 +1795,7 @@ class _HomepageState extends State _tripStops, collectedIds: _collectedIds, acceptedIds: _acceptedIds, + pivotActions: _pivotActions, // ── The set the other screen was passing and this one was not ── // // Both screens call [WorkBoundary.deliveryQueue], which was supposed to be @@ -1911,17 +1913,29 @@ class _HomepageState extends State /// The middle ground between one-at-a-time and all-at-once: on a long trip /// he can scan the list, tick the four addresses he knows are open, and take /// them in a single action instead of eight taps. + /// ── Both filters here were keyed on the undecided list ── + /// + /// `_ordersMap.containsKey` dropped every already-accepted id before the + /// action ran, and `_selectedOrders` was then rebuilt over `_orderIds` — + /// also undecided-only — so an accepted id could not survive into + /// [_handleBulkAction] by either route. The selection bar could accept and + /// nothing else, whatever its label said. + /// + /// Both now resolve through [_bulkStopFor], so a ticked set that has already + /// been accepted arrives intact and the action advances it to arrived, and + /// then to picked. Which rung it is remains [_handleBulkAction]'s decision, + /// read off the stops themselves. Future _acceptSelectedStops(List orderIds) async { - final ids = orderIds.where((id) => _ordersMap.containsKey(id)).toList(); + final ids = orderIds.where((id) => _bulkStopFor(id) != null).toList(); if (ids.isEmpty || _acceptingTripId != null) return; setState(() { _acceptingTripId = 'selection'; - _selectedOrders = {for (final id in _orderIds) id: ids.contains(id)}; + _selectedOrders = {for (final id in ids) id: true}; }); try { - await _handleBulkAction(navigateToBookings: false); + await _handleBulkAction(); } finally { if (mounted) { setState(() { @@ -2331,6 +2345,24 @@ class _HomepageState extends State return null; } + /// The stop a bulk selection refers to, wherever it currently lives. + /// + /// ── Why [_ordersMap] on its own could only ever accept ── + /// + /// `_ordersMap` is built from `validOrders`, which is deliberately the + /// *undecided* stops only — so a stop leaves it the moment it is accepted. + /// Every rung past ACCEPT looked its stop up there, got null and `continue`d, + /// and the label is derived from the same map: a selection of accepted stops + /// read back as `ACCEPT`, so the button said **Accept Bookings** and posted + /// another accept. `Move to Arrived` and `Move to Picked` were unreachable + /// from the selection bar even though [_handleBulkAction] implements both. + /// + /// [_allTripStops] keeps every stop in every state, which is exactly what the + /// rungs past acceptance need. On a milk run the order stays on Home to be + /// walked accepted → arrived → picked — see [MilkRun]. + Map? _bulkStopFor(String orderId) => + _ordersMap[orderId] ?? _stopById(orderId); + /// Walks every ticked stop up one rung, in one gesture. /// /// This is the shape of the job at a kitchen: five parcels come off one @@ -2794,7 +2826,7 @@ class _HomepageState extends State style: TextStyle( fontFamily: FontConstants.fontFamily, fontSize: 14.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: Colors.white, ), ), @@ -2835,7 +2867,7 @@ class _HomepageState extends State actionLabel, style: TextStyle( fontFamily: FontConstants.fontFamily, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: Colors.white, ), ), @@ -2854,7 +2886,27 @@ class _HomepageState extends State /// checks each stop is still accepted before touching it. List> _lastAcceptedBatch = const []; - Future _handleBulkAction({bool navigateToBookings = true}) async { + /// Walks the ticked stops up one rung: ACCEPT → ACCEPTED → ARRIVED → PICKED. + /// + /// ── Where the rider ends up is the line's decision, not the caller's ── + /// + /// This took a `navigateToBookings` flag, defaulted to `true`, and the two + /// branches it selected disagreed about the thing [ServiceProfile] already + /// answers. The tick-based path passed `false` and got the profile-aware + /// branch; the bulk action button passed nothing, got the default, and hit an + /// unconditional `Get.offAll(BottomPage(initialIndex: 1))`. + /// + /// On a **milk run** that is the wrong move and it broke the whole ladder. + /// The rider accepts at a kitchen, and the order has to stay on Home to be + /// walked to arrived and then picked — see [MilkRun]. Throwing him at the + /// work tab on accept sent him to a tab that was correctly empty, made the + /// accept look like it had filed his order somewhere else, and left the two + /// rungs that follow it unreachable from where he was standing. + /// + /// So the flag is gone. `handsOffAtCollection` is the one rule and it is read + /// in one place: the line that hands off at *acceptance* (logistics) moves + /// him, the line that hands off at *collection* (milk man) keeps him on Home. + Future _handleBulkAction() async { final selectedOrderIds = _selectedOrders.entries .where((e) => e.value) .map((e) => e.key) @@ -2863,7 +2915,7 @@ class _HomepageState extends State if (selectedOrderIds.isEmpty) return; final statuses = selectedOrderIds - .map((id) => _getStatusFromOrder(_ordersMap[id] ?? {})) + .map((id) => _getStatusFromOrder(_bulkStopFor(id) ?? const {})) .toSet(); String targetStatus; @@ -2984,8 +3036,15 @@ class _HomepageState extends State final List> acceptedBookings = []; + /// Orders this batch confirmed as collected, mirrored into [_collectedIds] + /// once the loop is done so the cards re-read their leg immediately rather + /// than at the next poll. + final Set bulkCollected = {}; + for (final orderId in selectedOrderIds) { - final Booking = _ordersMap[orderId]; + // Not `_ordersMap` — a stop past ACCEPT is no longer in it, and every + // rung after the first was silently skipped here. See [_bulkStopFor]. + final Booking = _bulkStopFor(orderId); if (Booking == null) continue; final pickupId = int.tryParse('${Booking['pickupid'] ?? 0}') ?? 0; @@ -3071,12 +3130,45 @@ class _HomepageState extends State if (success) { _startPickupPosting(Booking); _hiddenOrderIds.add(orderId); - // Picked → remove from the accepted store so it stops counting as - // an open booking on the Bookings tab, and record it as finished - // so it lands on Activity. Both stores, or the stop falls out of - // the app entirely. - await removeAcceptedBookings([orderId]); - await addCompletedBookings([Booking]); + + // ── The write that says the load is in his hands ── + // + // `_advanceStop` records this rung in the collected store and + // this branch did not, so a bag picked from the **selection bar** + // was never marked as carried. That one omission is what put + // **Start Pickup** on a delivery: [MilkRun.workingKind] reads + // exactly this set to decide which leg a stop is on, and the + // booking adapter stamps `type: pickup` on every row, so with an + // empty set a bag already in the box still described itself as a + // collection. The same answer feeds `toDrop` on the queue's + // distance, so the card also measured to the kitchen he had just + // left instead of to the customer's door — which is the "km and + // time are wrong" half of it. + // + // Recorded only after the backend confirmed, same rule as accept. + await addCollectedOrderIds([orderId]); + bulkCollected.add(orderId); + // One copy of the day, and it is now stale — Deliveries must not + // render this order from a response that predates the hand-over. + unawaited(WorkRepository.instance.invalidate()); + + // ── Picked is a hand-over on one line and a finish on the other ── + // + // This branch closed the booking outright. That is right for + // **logistics**, where what he collects goes to the hub and the + // booking's own story ends at the counter. + // + // On a **milk run** it is wrong and it loses the order: collection + // is the *middle* of the day — every bag is followed by a round of + // drops he makes himself — so filing it as completed sent it to + // Activity instead of to Deliveries, and the delivery leg had + // nothing to work. See [ServiceProfile.handsOffAtCollection]. + if (ServiceProfile.active.handsOffAtCollection) { + await addAcceptedBookings([Booking]); + } else { + await removeAcceptedBookings([orderId]); + await addCompletedBookings([Booking]); + } // Off the arrived rung — it has been collected. await removeArrivedOrderIds([orderId]); } @@ -3093,6 +3185,12 @@ class _HomepageState extends State } } + // The leg every card reads is derived from this set, so it has to land + // before the next build — not at the next poll three seconds later. + if (bulkCollected.isNotEmpty && mounted) { + setState(() => _collectedIds = {..._collectedIds, ...bulkCollected}); + } + // Persist accepted bookings so the Bookings tab can show them and Home // keeps them filtered out. if (acceptedBookings.isNotEmpty) { @@ -3183,7 +3281,7 @@ class _HomepageState extends State // the spot rather than at the next tick of its poller, and the switch is an // IndexedStack index change — the same ScaffoldMessenger, so the UNDO // snackbar below travels with him and is still there to be pressed. - if (bulkSucceeded && targetStatus == 'ACCEPTED' && !navigateToBookings) { + if (bulkSucceeded && targetStatus == 'ACCEPTED') { final taken = _lastAcceptedBatch; final n = taken.length; @@ -3234,12 +3332,6 @@ class _HomepageState extends State return; } - if (bulkSucceeded && targetStatus == 'ACCEPTED' && navigateToBookings) { - AppFeedback.successGlobal( - 'Moved to your ${ServiceProfile.active.workTabLabel}', - ); - Get.offAll(() => const BottomPage(initialIndex: 1)); - } } /// The whole route in one object: load, distance, time windows, shift. @@ -3256,6 +3348,20 @@ class _HomepageState extends State riderLng: _lastGeocodedPosition?.longitude ?? _riderLng, ); + /// A trip with nothing in it, for a slot the hub has not filled. + /// + /// Every figure the brief draws is derived from the stops, so an empty list + /// gives `0 stops left`, a progress track at zero and an em dash under + /// duration, distance and payment on its own — there is no "empty" variant of + /// the brief to keep in step with the real one, because this *is* the real + /// one with nothing in it. + Trip _unassignedTrip() => Trip.fromStops( + id: 'unassigned-$_selectedTripIndex', + stops: const [], + hubLat: _lastGeocodedPosition?.latitude ?? _riderLat, + hubLng: _lastGeocodedPosition?.longitude ?? _riderLng, + ); + /// One configured [TripCard] for the selected trip. /// /// Home does not render the card as a single widget any more: its summary, its @@ -3556,7 +3662,7 @@ class _HomepageState extends State textAlign: TextAlign.center, style: TextStyle( fontSize: 18.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.4, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -3564,13 +3670,13 @@ class _HomepageState extends State ), SizedBox(height: 6.h), Text( - 'Stay on duty — new orders appear here the moment ' - 'your office assigns them.', + 'Stay on duty new bookings appear here the moment ' + 'your office assigns you.', textAlign: TextAlign.center, style: TextStyle( fontSize: 13.5.sp, height: 1.45, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -3601,7 +3707,7 @@ class _HomepageState extends State textAlign: TextAlign.center, style: TextStyle( fontSize: 18.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, color: _textPrimary, ), @@ -3624,7 +3730,7 @@ class _HomepageState extends State "Go Online", style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, ), ), @@ -3717,7 +3823,7 @@ class _HomepageState extends State '${_getBulkButtonLabel()} (${selectedCount})', style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, color: Colors.white, letterSpacing: 0.3, @@ -3763,7 +3869,7 @@ class _HomepageState extends State style: TextStyle( fontFamily: FontConstants.fontFamily, color: _textPrimary, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, ), ), content: Text( @@ -3868,32 +3974,9 @@ class _HomepageState extends State // when it collapses, which is what a rider scrolling needs; // three tabs held permanently would be the same information // twice, in the space the work is supposed to be in. - if (trips.isNotEmpty) - SliverToBoxAdapter( - child: Padding( - padding: EdgeInsets.fromLTRB(20.w, 14.h, 20.w, 2.h), - child: TripSelector( - trips: trips, - selectedIndex: _selectedTripIndex, - acceptedIds: _acceptedIds, - rejectedIds: _rejectedIds, - // Selection is per-trip, so the ticks do not travel - // with the rider between trips — a tick made on - // Trip 1 must not be counted by the bar while Trip 2 - // is on screen. See [_selectedPendingIds]. - onSelect: (index) { - // His choice from here on, even if it is an empty - // slot — see [_settleTripTab]. - _tripTabChosen = true; - if (index == _selectedTripIndex) return; - setState(() { - _selectedTripIndex = index; - _selectedStopIds.clear(); - }); - }, - ), - ), - ), + // The tabs are no longer a sliver of their own. They are + // the head of the panel that holds the trip, and that panel + // is built with the work below — see the `else` branch. // ══════════════════════════════════════════════════════════ // READING ORDER @@ -3989,15 +4072,119 @@ class _HomepageState extends State ), ), ) - else + // ── The panel is the page ── + // + // Tabs and trip used to be two slivers: a control in one + // box, the work it governs in the next, with nothing but + // adjacency to say they were related. The panel encloses + // the run now — the selected tab is the top edge of the + // brand surface the brief, the route and the action bar all + // sit inside, so which trip is on screen is said once, by + // the shape holding it. + // + // Still not pinned. The header keeps + // `Trip 1 · 17 left · 33/50` when it collapses, which is + // what a rider scrolling needs; a tab strip held + // permanently would be the same information twice, in the + // space the work is supposed to be in. + // ── The tabs are attached to the trip's figures ── + // + // Tabs and brief used to be two boxes: a control in one + // sliver, the figures it governs in the next, with nothing + // but adjacency to say they were related. They are one + // panel now — the selected tab is the top edge of the glass + // the brief sits on, so which trip is on screen is said + // once, by the shape holding it. + // + // The route and the action bar stay outside it, on the + // canvas with their own white panel. A version of this put + // the whole page inside the panel and it was too much: the + // ground a rider reads a route off should be the quietest + // thing on the screen, not the loudest. + // + // Still not pinned. The header keeps + // `Trip 1 · 17 left · 33/50` when it collapses, which is + // what a rider scrolling needs; a tab strip held + // permanently would be the same information twice, in the + // space the work is supposed to be in. + else ...[ + SliverToBoxAdapter( + // Air above, and the panel takes the same gutter as + // every other layer-1 surface on Home. The inset inside + // it is [TripSelector.contentInset], so the brief's copy + // lands on the same vertical as `TODAY'S RUN` below. + child: Padding( + padding: EdgeInsets.fromLTRB( + MilerSurface.panelGutter, + 12.h, + MilerSurface.panelGutter, + 0, + ), + child: TripSelector( + trips: trips, + selectedIndex: _selectedTripIndex, + acceptedIds: _acceptedIds, + rejectedIds: _rejectedIds, + // Selection is per-trip, so the ticks do not travel + // with the rider between trips — a tick made on + // Trip 1 must not be counted by the bar while Trip 2 + // is on screen. See [_selectedPendingIds]. + onSelect: (index) { + // His choice from here on, even if it is an empty + // slot — see [_settleTripTab]. + _tripTabChosen = true; + if (index == _selectedTripIndex) return; + setState(() { + _selectedTripIndex = index; + _selectedStopIds.clear(); + }); + }, + // ── An unfilled slot gets the same panel ── + // + // It used to get a different one: a line of its own + // reading `Not assigned yet`, which made the panel + // a 32pt stub under a tab twice its height, and + // changed the shape of the screen depending on + // whether the hub had got to this slot yet. + // + // The brief of an empty slot is a real brief — it + // is just all zeroes. `0 stops left`, an empty + // track, and an em dash under every figure that has + // nothing to report. So the panel is the same panel + // at the same height, and when the hub assigns the + // trip the figures fill in where the dashes were + // instead of the page changing shape around the + // rider. + body: SmoothSwap( + child: Reveal( + // Keyed on the trip, so switching tabs plays + // the entrance once and the 5s poll never + // replays it. The empty slot keys on its own + // index for the same reason. + key: ValueKey( + 'brief_${trip?.id ?? 'unassigned-$_selectedTripIndex'}', + ), + // The panel above is the surface and it is the + // brand bar's red, so the brief drops its own + // card and inverts its ink. + child: _tripCardFor( + trip ?? _unassignedTrip(), + ).buildSummary(onBrand: true), + ), + ), + ), + ), + ), + + // The route and the action bar, on the canvas. SliverToBoxAdapter( child: SmoothSwap( // ── A slot the hub has not filled ── // - // The day has work, just not on this tab. Says so - // by name rather than reusing the whole-day empty - // state, which would claim he has nothing to do - // while another trip is running. + // The day has work, just not on this tab. Says so by + // name rather than reusing the whole-day empty state, + // which would claim he has nothing to do while another + // trip is running. child: trip == null ? KeyedSubtree( key: ValueKey( @@ -4008,37 +4195,21 @@ class _HomepageState extends State ), ) : Reveal( - // Keyed on the trip, so switching tabs plays - // the entrance once and the 5s poll never - // replays it. key: ValueKey('reveal_${trip.id}'), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - // The brief sits UNDER the tabs, not above. - // - // It describes one trip, and the tabs are what - // choose that trip — so above them it was - // answering a question the rider had not been - // asked yet, and switching tabs changed a - // panel he had already scrolled past. Below - // them it reads as the selected tab's own - // content, which is what it is, and it lands - // inside the per-trip [Reveal] so it swaps - // with the route it belongs to. - _tripCardFor(trip).buildSummary(), // The "one thing to do now" head that // used to sit here is gone. It drew the // current place, its load and a - // full-width **Navigate to pickup** — - // all of which the timeline's own group - // node below already carries, button - // included. Two identical red buttons - // for one destination was the single - // largest thing on this screen; the - // node that owns the journey owns the - // action. + // full-width **Navigate to pickup** — all + // of which the timeline's own group node + // below already carries, button included. + // Two identical red buttons for one + // destination was the single largest + // thing on this screen; the node that owns + // the journey owns the action. _tripCardFor(trip).buildStops(), _tripCardFor(trip).buildActionBar(), ], @@ -4046,6 +4217,7 @@ class _HomepageState extends State ), ), ), + ], // ── Room for everything that floats over this list ── // @@ -4238,7 +4410,7 @@ Widget _buildDetailRow(String label, String value) { label, style: TextStyle( color: ColorConstants.onSurfaceVariant, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, fontSize: 14.sp, fontFamily: FontConstants.fontFamily, ), @@ -4258,7 +4430,7 @@ Widget _buildDetailRow(String label, String value) { value.contains('Accepted') ? primaryRed : ColorConstants.onSurface, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, fontSize: 14.sp, fontFamily: FontConstants.fontFamily, height: 1.35, @@ -4336,7 +4508,7 @@ void _showProductDetailsSheet( textAlign: TextAlign.center, style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/home/homepage_banner.dart b/lib/views/Dashboard/home/homepage_banner.dart index 972bc5e..ada5848 100644 --- a/lib/views/Dashboard/home/homepage_banner.dart +++ b/lib/views/Dashboard/home/homepage_banner.dart @@ -203,7 +203,7 @@ class _Card extends StatelessWidget { style: TextStyle( color: Colors.white, fontSize: 15.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, fontFamily: FontConstants.fontFamily, ), @@ -232,7 +232,7 @@ class _Card extends StatelessWidget { style: TextStyle( color: Colors.white.withValues(alpha: 0.82), fontSize: 12.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, fontFamily: FontConstants.fontFamily, ), ), @@ -323,7 +323,7 @@ class _LiveChip extends StatelessWidget { style: TextStyle( color: Colors.white, fontSize: 9.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.7, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/home/pickup_preview_sheet.dart b/lib/views/Dashboard/home/pickup_preview_sheet.dart index c5099d6..6477592 100644 --- a/lib/views/Dashboard/home/pickup_preview_sheet.dart +++ b/lib/views/Dashboard/home/pickup_preview_sheet.dart @@ -153,8 +153,7 @@ class PickupPreviewSheet extends StatelessWidget { /// route card behind this sheet — the card had no address at all while this /// one did, and a counter that is named on the sheet and anonymous on the /// card is the same payload answering two different questions. - String get _address => - lines.isEmpty ? '' : pickupAddressOf(lines.first.stop); + String get _address => lines.isEmpty ? '' : pickupAddressOf(lines.first.stop); static double _d(dynamic v) { if (v == null) return 0; @@ -228,7 +227,7 @@ class PickupPreviewSheet extends StatelessWidget { overflow: TextOverflow.ellipsis, style: MilerType.body.copyWith( fontSize: 19.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.5, height: 1.15, color: Narrative.ink, @@ -340,7 +339,7 @@ class PickupPreviewSheet extends StatelessWidget { overflow: TextOverflow.ellipsis, style: MilerType.body.copyWith( fontSize: 12.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: Narrative.ink, ), ), @@ -427,7 +426,7 @@ class PickupPreviewSheet extends StatelessWidget { overflow: TextOverflow.ellipsis, style: MilerType.body.copyWith( fontSize: 15.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurfaceVariant, ), ), @@ -457,7 +456,7 @@ class PickupPreviewSheet extends StatelessWidget { maxLines: 1, style: MilerType.label.copyWith( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, ), ), @@ -476,7 +475,7 @@ class PickupPreviewSheet extends StatelessWidget { OrderManifest.countLabel(lines.length), style: MilerType.micro.copyWith( fontSize: 12.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: Narrative.inkMuted, ), ), diff --git a/lib/views/Dashboard/home/route_brief.dart b/lib/views/Dashboard/home/route_brief.dart index 2e56461..2cc877c 100644 --- a/lib/views/Dashboard/home/route_brief.dart +++ b/lib/views/Dashboard/home/route_brief.dart @@ -363,7 +363,7 @@ class ShiftBanner extends StatelessWidget { style: TextStyle( color: ColorConstants.slateText, fontSize: 12.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, ), ), @@ -378,7 +378,7 @@ class ShiftBanner extends StatelessWidget { ? ColorConstants.warning : ColorConstants.secondaryText), fontSize: 11.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, ), ), diff --git a/lib/views/Dashboard/home/route_timeline.dart b/lib/views/Dashboard/home/route_timeline.dart index 25defe3..a1c7f96 100644 --- a/lib/views/Dashboard/home/route_timeline.dart +++ b/lib/views/Dashboard/home/route_timeline.dart @@ -8,6 +8,7 @@ import 'package:miler/data/service_profile.dart'; import 'package:miler/data/stop_area.dart'; import 'package:miler/views/Dashboard/home/stop_card.dart' show LiveMark; import 'package:miler/views/Dashboard/home/trip.dart'; +import 'package:miler/views/Dashboard/pickups/stop_type.dart'; import 'package:miler/views/Dashboard/pickups/route_metrics.dart'; import 'package:miler/views/helpers/constants/Colorconstants.dart'; import 'package:miler/views/helpers/constants/design_constants.dart'; @@ -209,9 +210,7 @@ class RouteGroup { if (allStopStates.length != allStops.length) { return allStops.isNotEmpty ? allStops.length : stops.length; } - final carried = allStopStates - .where((s) => s == StopState.collected) - .length; + final carried = allStopStates.where((s) => s == StopState.collected).length; return stops.length + carried; } @@ -495,14 +494,32 @@ class _RouteTimelineState extends State { } /// Every order on the run the rider may tick right now, across the flat - /// groups — a parcel route, where each stop is its own place. + /// groups — the stops that are their own place. /// /// One rung only, and only when there are at least two: with one stop its own /// row already is the select-all. + /// + /// ── Why this is not "every group is flat" ── + /// + /// It was, and the guard was right while a route was one shape or the other: + /// a parcel run of single-stop nodes got a run-level select-all, a kitchen + /// run got one per counter, and neither had the other's. + /// + /// A logistics route is now **both** — its drops gather under the hub they + /// were loaded at, its collections stay their own doors — and `every` made + /// the whole control vanish the moment one group was not flat. The rider lost + /// the only way to take his collections in one go, on exactly the routes that + /// have the most of them. + /// + /// So it gathers from the flat groups and ignores the rest. A grouped place + /// already carries its own select-all *inside* it, over its own orders, which + /// is the control that belongs to it; this one is for the stops that have no + /// place above them to hold it. A run with no flat groups at all — a milk + /// round — still gets nothing here, exactly as before. List get _flatSelectIds { - if (!widget.groups.every((g) => g.flat)) return const []; final ids = []; for (final g in widget.groups) { + if (!g.flat) continue; if (g.state != StopState.pending) continue; for (final (i, s) in g.stops.indexed) { if (g.stopStates[i] != StopState.pending) continue; @@ -783,7 +800,7 @@ class SelectAllAction extends StatelessWidget { overflow: TextOverflow.ellipsis, textAlign: scoped ? TextAlign.right : TextAlign.left, style: MilerType.label.copyWith( - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: accent, ), ), @@ -1006,7 +1023,7 @@ class PickupTimelineGroup extends StatelessWidget { maxLines: 1, overflow: TextOverflow.ellipsis, style: MilerType.label.copyWith( - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.primary, ), ), @@ -1488,7 +1505,7 @@ class PickupTimelineGroup extends StatelessWidget { ? MilerType.cardTitle : MilerType.body) .copyWith( - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: group.isDone || rejected ? ColorConstants.secondaryText : ColorConstants.slateText, @@ -1571,7 +1588,7 @@ class PickupTimelineGroup extends StatelessWidget { // pale grey reserved for things nobody has // to act on. style: MilerType.label.copyWith( - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: chosen > 0 ? ColorConstants.primary : ColorConstants.onSurfaceVariant, @@ -1608,7 +1625,18 @@ class PickupTimelineGroup extends StatelessWidget { // the distances line up on one right edge, so "which is // nearest" is answered by looking down a column rather // than reading five blocks. + // ── And on a flat stop, which has no rail under it ── + // + // A place with one order draws no list, so there is no + // rung for [_KindTag] to sit on — and a logistics route + // is mostly flat stops, which is exactly where "am I + // collecting or dropping here" is asked. The tag goes on + // the header instead, in the same corner and at the same + // size, so the answer is in one place whichever shape the + // route happens to take. if (group.flat) ...[ + if (group.stops.isNotEmpty) + _KindTag(kind: stopKindOf(group.stops.first)), SizedBox(width: 4.w), Icon( LucideIcons.chevronRight, @@ -2151,8 +2179,8 @@ class PickupTimelineStep extends StatelessWidget { style: MilerType.body.copyWith( fontSize: 15.sp, fontWeight: selected || accepted - ? FontWeight.w600 - : FontWeight.w500, + ? FontWeight.w700 + : FontWeight.w600, color: rejected ? ColorConstants.secondaryText : selected || accepted @@ -2190,6 +2218,11 @@ class PickupTimelineStep extends StatelessWidget { // [OrderManifest.labelFor]. label: rejected ? 'Rejected' : line.label, orderId: line.orderId, + // What the rider is doing at this door — see + // [_KindTag]. Read from the stop itself, so a route + // that mixes collections and drops says which is which + // on every rung. + kind: stopKindOf(line.stop), selected: selected, onTap: canOpen ? onOpen : null, ), @@ -2228,12 +2261,17 @@ class _OrderOpenBlock extends StatelessWidget { final String label; final String orderId; + + /// Collection, drop, or both — stamped beside the chevron. + final StopKind kind; + final bool selected; final VoidCallback? onTap; const _OrderOpenBlock({ required this.label, required this.orderId, + required this.kind, required this.selected, required this.onTap, }); @@ -2310,8 +2348,8 @@ class _OrderOpenBlock extends StatelessWidget { style: MilerType.label.copyWith( fontSize: 12.sp, fontWeight: selected - ? FontWeight.w700 - : FontWeight.w600, + ? FontWeight.w800 + : FontWeight.w700, color: selected ? ColorConstants.primary : ColorConstants.secondaryText, @@ -2327,12 +2365,22 @@ class _OrderOpenBlock extends StatelessWidget { // the list. The id is on the detail sheet this block opens, and // on the Activity record — both places the rare question is // actually asked. - if (onTap != null) + // ── What he is doing here, in one or two characters ── + // + // A mixed route runs collections and drops down the same rail, + // and until now the only way to tell one rung from another was + // to open it. The tag sits inside the block the chevron closes, + // so the row reads `name · area · P ›` — identity, place, job, + // and the way in. + _KindTag(kind: kind), + if (onTap != null) ...[ + SizedBox(width: 4.w), Icon( LucideIcons.chevronRight, size: 18.sp, color: ColorConstants.borderStrong, ), + ], ], ), ), @@ -2342,6 +2390,60 @@ class _OrderOpenBlock extends StatelessWidget { } } +/// `P`, `D` or `P&D` on a rail rung. +/// +/// ── A mark, not a word ── +/// +/// The full names are [StopKindUi.badgeLabel], and they are what the stop's own +/// card and sheet carry — there is room there, and the rider is reading one +/// stop. The rail is a *column*: he runs down it deciding which doors are +/// collections and which are drops, and `PICKUP & DELIVERY` at a size that fits +/// beside a chevron is a word he has to read on every rung. One or two +/// characters is a mark he recognises. See [StopKindUi.shortLabel]. +/// +/// ── And it is grey ── +/// +/// The obvious version tints it with the kind's own accent — collections one +/// colour, drops another. `stop_card_neutral_test.dart` forbids exactly that, +/// and the reason survives this tag: the route carries **one** accent, the +/// brand, on the live node and the journey action, and a per-stop hue down the +/// rail competes with the one mark that says *where you are*. Three hues on +/// every rung is a second colour system on the screen that most needs one. +/// +/// What was asked for here is the *information* — which of these is a +/// collection and which is a drop — and a letter carries that on its own. So +/// the tag is the same quiet grey as the metric tiles, and the accents stay +/// where that test put them: on the stop's own sheet, one tap away, where the +/// rider is reading one stop instead of scanning forty. +class _KindTag extends StatelessWidget { + final StopKind kind; + + const _KindTag({required this.kind}); + + @override + Widget build(BuildContext context) { + return Container( + margin: EdgeInsets.only(left: 6.w), + padding: EdgeInsets.symmetric(horizontal: 6.w, vertical: 2.h), + decoration: BoxDecoration( + color: ColorConstants.tint(ColorConstants.slateText, 0.055), + borderRadius: BorderRadius.circular(DesignConstants.radiusFull), + ), + child: Text( + kind.shortLabel, + maxLines: 1, + style: MilerType.label.copyWith( + fontSize: 10.5.sp, + fontWeight: FontWeight.w900, + letterSpacing: 0.2, + height: 1.1, + color: ColorConstants.secondaryText, + ), + ), + ); + } +} + /// The order id, as every screen reads it. String stopIdOf(Map stop) => (stop['orderid'] ?? '').toString(); @@ -2893,7 +2995,7 @@ class _JourneyColumn extends StatelessWidget { // it: same column, one step down in size and weight. style: MilerType.label.copyWith( fontSize: prominent ? 13.sp : 12.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, ), ), @@ -2981,7 +3083,7 @@ class _StateWord extends StatelessWidget { overflow: TextOverflow.ellipsis, style: MilerType.label.copyWith( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: color, ), ), @@ -3182,7 +3284,7 @@ class _TextAction extends StatelessWidget { Text( label, style: MilerType.label.copyWith( - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.primary, ), ), diff --git a/lib/views/Dashboard/home/selection_bar.dart b/lib/views/Dashboard/home/selection_bar.dart index 6ad69e2..713255a 100644 --- a/lib/views/Dashboard/home/selection_bar.dart +++ b/lib/views/Dashboard/home/selection_bar.dart @@ -245,7 +245,7 @@ class SelectionBar extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, diff --git a/lib/views/Dashboard/home/stop_action_sheet.dart b/lib/views/Dashboard/home/stop_action_sheet.dart index a2cc3b8..8447d51 100644 --- a/lib/views/Dashboard/home/stop_action_sheet.dart +++ b/lib/views/Dashboard/home/stop_action_sheet.dart @@ -219,7 +219,10 @@ class _StopActionSheetState extends State { (String, bool)? get _instruction { if (_isArrival || widget.lines.isEmpty) return null; if (!_canSlide) { - return ('Nothing was handed over — call your office before you leave.', true); + return ( + 'Nothing was handed over — call your office before you leave.', + true, + ); } if (_missing.isEmpty) { return ( @@ -317,7 +320,7 @@ class _StopActionSheetState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 19.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: -0.5, height: 1.2, color: ColorConstants.slateText, @@ -329,7 +332,7 @@ class _StopActionSheetState extends State { _subtitle, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -345,7 +348,7 @@ class _StopActionSheetState extends State { text, style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, height: 1.35, color: exceptional ? ColorConstants.warning @@ -429,7 +432,7 @@ class _StopActionSheetState extends State { 'Report a missing order', style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.errorRed, fontFamily: FontConstants.fontFamily, ), @@ -447,7 +450,7 @@ class _StopActionSheetState extends State { : '${_missing.length} marked missing', style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -464,7 +467,7 @@ class _StopActionSheetState extends State { 'Cancel', style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -559,7 +562,7 @@ class _StopActionSheetState extends State { '${i + 1}', style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -575,7 +578,7 @@ class _StopActionSheetState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: gone ? ColorConstants.secondaryText @@ -598,30 +601,33 @@ class _StopActionSheetState extends State { // only on the exception, which is the one time it carries a // fact the row does not already state. if (gone || line.label.isNotEmpty) - Container( - padding: EdgeInsets.symmetric(horizontal: 7.w, vertical: 3.h), - decoration: BoxDecoration( - color: gone - ? ColorConstants.errorRed.withValues(alpha: 0.08) - : MilerSurface.working, - borderRadius: BorderRadius.circular( - DesignConstants.radiusLg, + Container( + padding: EdgeInsets.symmetric( + horizontal: 7.w, + vertical: 3.h, ), - ), - child: Text( - gone ? 'Missing' : line.label, - maxLines: 1, - style: TextStyle( - fontSize: 12.5.sp, - fontWeight: FontWeight.w600, - letterSpacing: -0.1, + decoration: BoxDecoration( color: gone - ? ColorConstants.errorRed - : ColorConstants.secondaryText, - fontFamily: FontConstants.fontFamily, + ? ColorConstants.errorRed.withValues(alpha: 0.08) + : MilerSurface.working, + borderRadius: BorderRadius.circular( + DesignConstants.radiusLg, + ), + ), + child: Text( + gone ? 'Missing' : line.label, + maxLines: 1, + style: TextStyle( + fontSize: 12.5.sp, + fontWeight: FontWeight.w700, + letterSpacing: -0.1, + color: gone + ? ColorConstants.errorRed + : ColorConstants.secondaryText, + fontFamily: FontConstants.fontFamily, + ), ), ), - ), ], ), ); @@ -668,7 +674,7 @@ class _StopActionSheetState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -783,7 +789,7 @@ class _CratePhotoRow extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.1, fontFamily: FontConstants.fontFamily, color: taken @@ -800,7 +806,7 @@ class _CratePhotoRow extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, fontFamily: FontConstants.fontFamily, color: ColorConstants.secondaryText, ), diff --git a/lib/views/Dashboard/home/stop_card.dart b/lib/views/Dashboard/home/stop_card.dart index 28c970c..8e48cce 100644 --- a/lib/views/Dashboard/home/stop_card.dart +++ b/lib/views/Dashboard/home/stop_card.dart @@ -208,7 +208,7 @@ class StopCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 21.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, height: 1.12, letterSpacing: -0.6, color: ColorConstants.slateText, @@ -227,7 +227,7 @@ class StopCard extends StatelessWidget { style: TextStyle( fontSize: 15.sp, height: 1.4, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -290,7 +290,7 @@ class StopCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: 1.0, // A mark, in the type's own colour — never a fill and never a // border. See `stop_card_neutral_test`, which pins exactly that. @@ -336,7 +336,7 @@ class StopCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 15.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -387,7 +387,7 @@ class StopCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.2, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -518,7 +518,7 @@ class StopCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.primary, fontFamily: FontConstants.fontFamily, ), @@ -629,7 +629,7 @@ class _LabelChip extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.1, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -819,7 +819,7 @@ class _LiveMarkState extends State overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: 0.2, color: accent, fontFamily: FontConstants.fontFamily, @@ -896,7 +896,7 @@ class StopStateChip extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: filled ? 12.5.sp : 11.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: 0.3, color: look.color, fontFamily: FontConstants.fontFamily, @@ -953,7 +953,7 @@ class _MetaLine extends StatelessWidget { Widget build(BuildContext context) { TextStyle style(Color c) => TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: c, fontFamily: FontConstants.fontFamily, diff --git a/lib/views/Dashboard/home/stop_detail_sheet.dart b/lib/views/Dashboard/home/stop_detail_sheet.dart index 723ad03..678b72a 100644 --- a/lib/views/Dashboard/home/stop_detail_sheet.dart +++ b/lib/views/Dashboard/home/stop_detail_sheet.dart @@ -202,8 +202,12 @@ class StopDetailSheet extends StatelessWidget { // What the distance is measured to, and what the map is centred on. final drop = pinIsDrop; - final lat = pinIsDrop ? dropLat : _d(stop['pickuplat'] ?? stop['PickupLat']); - final lng = pinIsDrop ? dropLng : _d(stop['pickuplon'] ?? stop['PickupLon']); + final lat = pinIsDrop + ? dropLat + : _d(stop['pickuplat'] ?? stop['PickupLat']); + final lng = pinIsDrop + ? dropLng + : _d(stop['pickuplon'] ?? stop['PickupLon']); final hasLocation = lat != 0 && lng != 0; final name = _s(['pickupcustomer', 'tenantname']); @@ -266,114 +270,114 @@ class StopDetailSheet extends StatelessWidget { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - _header(kind, name), - SizedBox(height: 14.h), - if (hasLocation) ...[ - // ── The leg is stated once ── - // - // It was stated twice, twenty points apart: a strip across - // the foot of the map, and a DISTANCE / EST. ARRIVAL pair - // under it. Two readings of one fact, and the second cost - // ~70pt on a sheet a rider already has to scroll — which is - // the whole reason it felt long. - // - // The strip stays, because it is written on the picture of - // the leg it describes, and it carries both halves: how far - // and how long. - _map(lat, lng, kind, meters), - SizedBox(height: 18.h), - ], - if (address.isNotEmpty) ...[ - _sectionLabel(addressLabel), - SizedBox(height: 8.h), - // ── The address is a block, not a paragraph ── - // - // It was loose text on the sheet's own white, at the same - // weight as everything around it, and a full Indian address - // is five lines long — so the thing a rider came here to - // read had nothing holding it. On a tonal block it is one - // object the eye can land on, and it is plainly the answer - // to the label above it. - Container( - width: double.infinity, - padding: EdgeInsets.symmetric( - horizontal: 14.w, - vertical: 13.h, - ), - decoration: BoxDecoration( - color: Narrative.inset, - borderRadius: BorderRadius.circular( - DesignConstants.radiusLg, - ), - ), - // The full address, unabridged. The card above compresses - // it to two lines; this is where the rest lives. - child: SelectableText( - address, - style: TextStyle( - fontSize: 14.sp, - height: 1.5, - fontWeight: FontWeight.w500, - color: Narrative.ink, - fontFamily: FontConstants.fontFamily, - ), - ), + _header(kind, name), + SizedBox(height: 14.h), + if (hasLocation) ...[ + // ── The leg is stated once ── + // + // It was stated twice, twenty points apart: a strip across + // the foot of the map, and a DISTANCE / EST. ARRIVAL pair + // under it. Two readings of one fact, and the second cost + // ~70pt on a sheet a rider already has to scroll — which is + // the whole reason it felt long. + // + // The strip stays, because it is written on the picture of + // the leg it describes, and it carries both halves: how far + // and how long. + _map(lat, lng, kind, meters), + SizedBox(height: 18.h), + ], + if (address.isNotEmpty) ...[ + _sectionLabel(addressLabel), + SizedBox(height: 8.h), + // ── The address is a block, not a paragraph ── + // + // It was loose text on the sheet's own white, at the same + // weight as everything around it, and a full Indian address + // is five lines long — so the thing a rider came here to + // read had nothing holding it. On a tonal block it is one + // object the eye can land on, and it is plainly the answer + // to the label above it. + Container( + width: double.infinity, + padding: EdgeInsets.symmetric( + horizontal: 14.w, + vertical: 13.h, + ), + decoration: BoxDecoration( + color: Narrative.inset, + borderRadius: BorderRadius.circular( + DesignConstants.radiusLg, ), - SizedBox(height: 18.h), - ], - _sectionLabel('TASK DETAILS'), - SizedBox(height: 8.h), - // ── The call sits on the job, not at the foot of the sheet ── + ), + // The full address, unabridged. The card above compresses + // it to two lines; this is where the rest lives. + child: SelectableText( + address, + style: TextStyle( + fontSize: 14.sp, + height: 1.5, + fontWeight: FontWeight.w600, + color: Narrative.ink, + fontFamily: FontConstants.fontFamily, + ), + ), + ), + SizedBox(height: 18.h), + ], + _sectionLabel('TASK DETAILS'), + SizedBox(height: 8.h), + // ── The call sits on the job, not at the foot of the sheet ── + // + // Ringing the customer is not a step of the hand-over, it is + // what you do *about* the hand-over — a wrong door, a gate + // code, "I'm outside". As a full-width labelled button at the + // bottom it took a third of the sheet's action area and read + // as an alternative to delivering. As a disc on the row that + // names the job it is exactly what it is: one tap, beside the + // person it calls. + if (kind.hasDelivery) + _actionRow( + icon: LucideIcons.truck, + color: Narrative.burgundy, + title: _countLabel('Deliver', deliver), + // ── No OTP is asked for at the door ── // - // Ringing the customer is not a step of the hand-over, it is - // what you do *about* the hand-over — a wrong door, a gate - // code, "I'm outside". As a full-width labelled button at the - // bottom it took a third of the sheet's action area and read - // as an alternative to delivering. As a disc on the row that - // names the job it is exactly what it is: one tap, beside the - // person it calls. - if (kind.hasDelivery) - _actionRow( - icon: LucideIcons.truck, - color: Narrative.burgundy, - title: _countLabel('Deliver', deliver), - // ── No OTP is asked for at the door ── - // - // Nothing issues a delivery code on this backend — the - // `deliver` endpoint has no OTP column and cannot check - // one (see [MilerApi.deliver]) — so the sheet was - // instructing riders to collect a number that does not - // exist and that nobody would verify. The proof is the - // photo of the parcel, and now that is all it says. - detail: 'Photo of the parcel', - trailing: phone.isEmpty - ? null - : _CallDisc(onTap: () => _dial(phone)), - ), - if (kind.hasPickup) - _actionRow( - icon: LucideIcons.package, - color: Narrative.burgundy, - title: _countLabel('Collect', collect), - detail: cash > 0 ? 'Collect ₹${cash.round()}' : 'Photo', - trailing: (phone.isEmpty || kind.hasDelivery) - ? null - : _CallDisc(onTap: () => _dial(phone)), - ), - SizedBox(height: 6.h), - _detailGrid(), - if (notes.isNotEmpty) ...[ - SizedBox(height: 16.h), - _noteBox(notes), - ], - // ── The sheet has no action bar ── - // - // It closed with **Call** beside **Navigate to customer**, - // and neither belonged. This is the *reference* surface — - // what is at this stop, where exactly, what it weighs, who - // to ring — opened from a card that already carries the - // stop's own action. Navigation is the map screen's whole - // job, and calling is now a disc on the row above. + // Nothing issues a delivery code on this backend — the + // `deliver` endpoint has no OTP column and cannot check + // one (see [MilerApi.deliver]) — so the sheet was + // instructing riders to collect a number that does not + // exist and that nobody would verify. The proof is the + // photo of the parcel, and now that is all it says. + detail: 'Photo of the parcel', + trailing: phone.isEmpty + ? null + : _CallDisc(onTap: () => _dial(phone)), + ), + if (kind.hasPickup) + _actionRow( + icon: LucideIcons.package, + color: Narrative.burgundy, + title: _countLabel('Collect', collect), + detail: cash > 0 ? 'Collect ₹${cash.round()}' : 'Photo', + trailing: (phone.isEmpty || kind.hasDelivery) + ? null + : _CallDisc(onTap: () => _dial(phone)), + ), + SizedBox(height: 6.h), + _detailGrid(), + if (notes.isNotEmpty) ...[ + SizedBox(height: 16.h), + _noteBox(notes), + ], + // ── The sheet has no action bar ── + // + // It closed with **Call** beside **Navigate to customer**, + // and neither belonged. This is the *reference* surface — + // what is at this stop, where exactly, what it weighs, who + // to ring — opened from a card that already carries the + // stop's own action. Navigation is the map screen's whole + // job, and calling is now a disc on the row above. ], ), ), @@ -416,7 +420,7 @@ class StopDetailSheet extends StatelessWidget { '$stopNumber', style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: Narrative.burgundy, fontFamily: FontConstants.fontFamily, ), @@ -441,7 +445,7 @@ class StopDetailSheet extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 19.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.5, height: 1.15, color: Narrative.ink, @@ -463,7 +467,7 @@ class StopDetailSheet extends StatelessWidget { maxLines: 1, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: Narrative.inkMuted, fontFamily: FontConstants.fontFamily, ), @@ -582,7 +586,7 @@ class StopDetailSheet extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: Narrative.ink, fontFamily: FontConstants.fontFamily, ), @@ -596,7 +600,7 @@ class StopDetailSheet extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: Narrative.inkMuted, fontFamily: FontConstants.fontFamily, ), @@ -615,7 +619,7 @@ class StopDetailSheet extends StatelessWidget { text, style: TextStyle( fontSize: 10.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.8, color: Narrative.inkMuted, fontFamily: FontConstants.fontFamily, @@ -678,7 +682,7 @@ class StopDetailSheet extends StatelessWidget { title, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: Narrative.ink, fontFamily: FontConstants.fontFamily, ), @@ -701,7 +705,7 @@ class StopDetailSheet extends StatelessWidget { // read as something to tap, and it is a statement. style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: Narrative.inkMuted, fontFamily: FontConstants.fontFamily, ), @@ -815,7 +819,7 @@ class StopDetailSheet extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 9.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.9, color: Narrative.inkMuted, fontFamily: FontConstants.fontFamily, @@ -839,7 +843,7 @@ class StopDetailSheet extends StatelessWidget { style: TextStyle( fontSize: 14.sp, height: 1.25, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: Narrative.ink, fontFamily: FontConstants.fontFamily, @@ -854,7 +858,7 @@ class StopDetailSheet extends StatelessWidget { style: TextStyle( fontSize: 14.sp, height: 1.25, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: Narrative.ink, fontFamily: FontConstants.fontFamily, @@ -890,7 +894,7 @@ class StopDetailSheet extends StatelessWidget { style: TextStyle( fontSize: 13.sp, height: 1.4, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onErrorContainer, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/home/trip.dart b/lib/views/Dashboard/home/trip.dart index 0f80c28..5be29a4 100644 --- a/lib/views/Dashboard/home/trip.dart +++ b/lib/views/Dashboard/home/trip.dart @@ -482,14 +482,13 @@ class Trip { /// `eta` is read last and usually answers nothing — on the v1 adapter it is /// a duration, not a clock, and [_parseTimestamp] rejects it rather than /// inventing a 15th of the month out of "15 min". - static DateTime? dayPartTimeOf(Map stop) => - _parseTimestamp( - stop['expected_pickup_time'] ?? - stop['expectedpickuptime'] ?? - stop['assignedat'] ?? - stop['assignedon'] ?? - stop['eta'], - ); + static DateTime? dayPartTimeOf(Map stop) => _parseTimestamp( + stop['expected_pickup_time'] ?? + stop['expectedpickuptime'] ?? + stop['assignedat'] ?? + stop['assignedon'] ?? + stop['eta'], + ); /// Address components every stop on this trip shares — city, state, /// pincode and so on. Cached per build by the caller. diff --git a/lib/views/Dashboard/home/trip_brief_strip.dart b/lib/views/Dashboard/home/trip_brief_strip.dart index d0f92ae..7534802 100644 --- a/lib/views/Dashboard/home/trip_brief_strip.dart +++ b/lib/views/Dashboard/home/trip_brief_strip.dart @@ -92,12 +92,26 @@ class TripBriefStrip extends StatefulWidget { /// Opens the whole route on one map. Hidden when the trip has no stops. final VoidCallback? onViewRoute; + /// This brief is drawn on the brand, inside Home's trip tab panel. + /// + /// It changes two things together, because they are one decision. The white + /// panel comes off — the tabs are a surface in their own right and a card + /// inside a card is the nested-surface problem this file has been through + /// twice — and every ink in here inverts, because slate on the brand bar's + /// red is unreadable. + /// + /// One flag rather than two: a bare brief that kept its dark ink, or a white + /// brief that kept its panel, are both broken states nobody should be able to + /// ask for. See [TripSelector]. + final bool onBrand; + const TripBriefStrip({ super.key, required this.trip, required this.brief, required this.percent, this.onViewRoute, + this.onBrand = false, Trip? remaining, }) : remaining = remaining ?? trip; @@ -141,6 +155,40 @@ class _TripBriefStripState extends State { int get percent => widget.percent; VoidCallback? get onViewRoute => widget.onViewRoute; + // ── The ink follows the ground ── + // + // On the canvas the brief is slate on white. Inside Home's trip panel it is + // white on the brand bar's red. Every colour in this file that is not a + // *meaning* — not the green of money, not the amber of a warning — goes + // through one of these, so the two states cannot drift apart one `Text` at a + // time. + bool get _onBrand => widget.onBrand; + + /// Figures, headings, anything the rider reads first. + Color get _ink => _onBrand ? Colors.white : ColorConstants.slateText; + + /// Captions and labels: present, but not competing with [_ink]. + Color get _inkMuted => _onBrand + ? Colors.white.withValues(alpha: 0.74) + : ColorConstants.secondaryText; + + /// A rule between bands. + Color get _hairline => _onBrand + ? Colors.white.withValues(alpha: 0.20) + : ColorConstants.borderSubtle; + + /// The quiet tile behind a metric's glyph. + Color get _tileFill => _onBrand + ? Colors.white.withValues(alpha: 0.14) + : ColorConstants.tint(ColorConstants.slateText, 0.055); + + /// Money, and the completion green. Both are meanings rather than decoration, + /// so on the canvas they keep their own colour — but green on red is the one + /// pairing that fails outright, so on the brand they defer to white and let + /// the words carry it. + Color get _moneyInk => _onBrand ? Colors.white : ColorConstants.moneyGreen; + Color get _doneInk => _onBrand ? Colors.white : ColorConstants.acceptGreen; + /// Stops the rider has finished, derived from the percentage the page already /// computed rather than recounting the sets here. int get _done => (_trip.stopCount * percent / 100).round(); @@ -159,6 +207,16 @@ class _TripBriefStripState extends State { // sit"; measured, they were four points apart. Both sections now take // their edge from `MilerSurface.panelGutter` + `panelPad`, so they cannot // disagree — and `home_gutter_test` fails if they ever do. + // ── Unless the caller is already the surface ── + // + // Home's trip tabs draw a glass panel and attach themselves to its top + // edge; the brief is what is inside it. A [MilerPanel] in there would be a + // white card floating in a tinted one, which is the nested-surface problem + // this file has been through twice. So the caller says which it wants, the + // gutter argument below still holds for everyone who wants the panel, and + // the tabs supply their own inset. See [TripSelector.briefInset]. + if (widget.onBrand) return _column(); + return MilerPanel( // ── Not the bordered card that was removed from here ── // @@ -171,43 +229,48 @@ class _TripBriefStripState extends State { // off it at 1.290 : 1, which is a surface rather than a hairline — so // this returns as a *fill with no border*, which is the thing the old // box was only pretending to be. - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - mainAxisSize: MainAxisSize.min, - children: [ - Semantics( - button: true, - expanded: _open, - label: _open ? 'Hide trip figures' : 'Show trip figures', - child: GestureDetector( - behavior: HitTestBehavior.opaque, - onTap: () => setState(() => _open = !_open), - child: _head(), - ), + child: _column(), + ); + } + + /// The brief itself, with no surface of its own. + Widget _column() { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.min, + children: [ + Semantics( + button: true, + expanded: _open, + label: _open ? 'Hide trip figures' : 'Show trip figures', + child: GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () => setState(() => _open = !_open), + child: _head(), ), - // ── What the chevron actually controls ── - // - // The four figures were moved onto the head for a while, so they were - // always drawn — and the chevron above them went on rotating while - // nothing under it moved. A disclosure that does not disclose is worse - // than no disclosure: the rider presses it, the arrow turns, the card - // stays the same size, and he learns the control is broken. - // - // They are back under the fold and the fold **opens by default**, so - // the card still arrives showing them. The difference is that closing - // it now closes them, which is what the arrow has been promising. - ClipRect( - child: AnimatedSize( - duration: DesignConstants.motionState, - curve: Curves.easeOutCubic, - alignment: Alignment.topCenter, - child: _open - ? _body() - : const SizedBox(width: double.infinity, height: 0), - ), + ), + // ── What the chevron actually controls ── + // + // The four figures were moved onto the head for a while, so they were + // always drawn — and the chevron above them went on rotating while + // nothing under it moved. A disclosure that does not disclose is worse + // than no disclosure: the rider presses it, the arrow turns, the card + // stays the same size, and he learns the control is broken. + // + // They are back under the fold and the fold **opens by default**, so + // the card still arrives showing them. The difference is that closing + // it now closes them, which is what the arrow has been promising. + ClipRect( + child: AnimatedSize( + duration: DesignConstants.motionState, + curve: Curves.easeOutCubic, + alignment: Alignment.topCenter, + child: _open + ? _body() + : const SizedBox(width: double.infinity, height: 0), ), - ], - ), + ), + ], ); } @@ -281,11 +344,7 @@ class _TripBriefStripState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ if (complete) ...[ - Icon( - LucideIcons.circleCheck, - size: 22.sp, - color: ColorConstants.acceptGreen, - ), + Icon(LucideIcons.circleCheck, size: 22.sp, color: _doneInk), SizedBox(width: 8.w), // ── Expanded, not Flexible-plus-Spacer ── // @@ -305,9 +364,9 @@ class _TripBriefStripState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 20.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: -0.5, - color: ColorConstants.acceptGreen, + color: _doneInk, fontFamily: FontConstants.fontFamily, ), ), @@ -333,7 +392,7 @@ class _TripBriefStripState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 17.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.4, // ── 1.2 → 1.0 ── // @@ -349,7 +408,7 @@ class _TripBriefStripState extends State { // are the gaps either side of it. height: 1.0, fontFeatures: const [FontFeature.tabularFigures()], - color: ColorConstants.slateText, + color: _ink, fontFamily: FontConstants.fontFamily, ), ), @@ -364,7 +423,7 @@ class _TripBriefStripState extends State { child: Icon( LucideIcons.chevronDown, size: 20.sp, - color: ColorConstants.secondaryText, + color: _inkMuted, ), ), ], @@ -382,7 +441,12 @@ class _TripBriefStripState extends State { child: Container( height: 6.h, width: double.infinity, - color: MilerSurface.canvas, + // On the brand the canvas grey is darker than the ground it + // sits on, so an empty track reads as a filled one. White at a + // fifth is the same idea the other way up. + color: _onBrand + ? Colors.white.withValues(alpha: 0.22) + : MilerSurface.canvas, alignment: Alignment.centerLeft, child: AnimatedFractionallySizedBox( duration: DesignConstants.motionState, @@ -390,7 +454,10 @@ class _TripBriefStripState extends State { widthFactor: pct, child: Container( decoration: BoxDecoration( - color: complete + // Brand red on the brand bar is a fill you cannot see. + color: _onBrand + ? Colors.white + : complete ? ColorConstants.acceptGreen : ColorConstants.primary, borderRadius: BorderRadius.circular( @@ -435,7 +502,12 @@ class _TripBriefStripState extends State { // // Nothing is lost. Open the card and both figures are there, stated // properly, with the parcels and the cash beside them. - Row(children: [const Spacer(), Flexible(child: _timeLeftLine())]), + Row( + children: [ + const Spacer(), + Flexible(child: _timeLeftLine()), + ], + ), ], ), ), @@ -488,7 +560,7 @@ class _TripBriefStripState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: color, fontFamily: FontConstants.fontFamily, ), @@ -508,9 +580,9 @@ class _TripBriefStripState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, - color: ColorConstants.moneyGreen, + color: _moneyInk, fontFamily: FontConstants.fontFamily, ), ); @@ -551,7 +623,7 @@ class _TripBriefStripState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - Divider(height: 1, color: ColorConstants.borderSubtle), + Divider(height: 1, color: _hairline), SizedBox(height: 14.h), // ── Band 1: the shift window ── @@ -572,10 +644,10 @@ class _TripBriefStripState extends State { icon: LucideIcons.calendarCheck, label: 'Shift', value: _brief.shiftWindowLabel, - tint: ColorConstants.slateText, + tint: _ink, ), SizedBox(height: 14.h), - Divider(height: 1, color: ColorConstants.borderSubtle), + Divider(height: 1, color: _hairline), SizedBox(height: 14.h), ], @@ -685,14 +757,10 @@ class _TripBriefStripState extends State { height: 34.w, alignment: Alignment.center, decoration: BoxDecoration( - color: ColorConstants.tint(ColorConstants.slateText, 0.055), + color: _tileFill, borderRadius: BorderRadius.circular(DesignConstants.radiusLg), ), - child: Icon( - cell.$1, - size: 16.sp, - color: ColorConstants.secondaryText, - ), + child: Icon(cell.$1, size: 16.sp, color: _inkMuted), ), SizedBox(width: 10.w), Expanded( @@ -707,8 +775,8 @@ class _TripBriefStripState extends State { style: TextStyle( fontSize: 12.5.sp, height: 1.2, - fontWeight: FontWeight.w500, - color: ColorConstants.secondaryText, + fontWeight: FontWeight.w600, + color: _inkMuted, fontFamily: FontConstants.fontFamily, ), ), @@ -722,12 +790,10 @@ class _TripBriefStripState extends State { style: TextStyle( fontSize: 15.sp, height: 1.15, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, fontFeatures: const [FontFeature.tabularFigures()], - color: cell.$4 - ? ColorConstants.secondaryText - : ColorConstants.slateText, + color: cell.$4 ? _inkMuted : _ink, fontFamily: FontConstants.fontFamily, ), ), @@ -755,7 +821,9 @@ class _TripBriefStripState extends State { height: 30.w, alignment: Alignment.center, decoration: BoxDecoration( - color: tint.withValues(alpha: 0.09), + color: _onBrand + ? Colors.white.withValues(alpha: 0.14) + : tint.withValues(alpha: 0.09), borderRadius: BorderRadius.circular(DesignConstants.radiusLg), ), child: Icon(icon, size: 16.sp, color: tint), @@ -765,8 +833,8 @@ class _TripBriefStripState extends State { label, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w600, - color: ColorConstants.secondaryText, + fontWeight: FontWeight.w700, + color: _inkMuted, fontFamily: FontConstants.fontFamily, ), ), @@ -779,9 +847,9 @@ class _TripBriefStripState extends State { textAlign: TextAlign.right, style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, - color: ColorConstants.slateText, + color: _ink, fontFamily: FontConstants.fontFamily, ), ), diff --git a/lib/views/Dashboard/home/trip_card.dart b/lib/views/Dashboard/home/trip_card.dart index dae55b7..d230c05 100644 --- a/lib/views/Dashboard/home/trip_card.dart +++ b/lib/views/Dashboard/home/trip_card.dart @@ -19,6 +19,7 @@ import 'package:miler/Models/stop_status.dart'; import 'package:miler/data/order_manifest.dart'; import 'package:miler/data/stop_area.dart'; import 'package:miler/data/milk_run.dart'; +import 'package:miler/data/pickup_locations.dart'; import 'package:miler/data/service_profile.dart'; /// ───────────────────────────────────────────────────────────────────────── @@ -251,7 +252,11 @@ class TripCard extends StatelessWidget { /// The collapsed trip brief: progress, time left, cash — and everything else /// one tap away. See [TripBriefStrip] for what this used to be and why the /// four surfaces it replaced were the wrong price for the information. - Widget buildSummary() => TripBriefStrip( + /// [onBrand] hands the brief over for Home's trip tab panel: no white panel + /// of its own, and its ink inverted for the brand red it lands on. See + /// [TripSelector]. + Widget buildSummary({bool onBrand = false}) => TripBriefStrip( + onBrand: onBrand, trip: trip, // What the four figures describe: the collections still owed, measured // from where the rider is standing — the same origin the page used to @@ -423,11 +428,42 @@ class TripCard extends StatelessWidget { /// /// A group whose orders have all left Home — collected, and now on the work /// tab — emits nothing at all. Its heading would be a title over a gap. + /// Every stop is drawn as the **place** it is worked at, with its orders in a + /// list under it. + /// + /// ── One shape for both lines ── + /// + /// This was a flag, then a per-stop question, and it is now neither. The + /// history is worth keeping because each step was right about something: + /// + /// 1. `ServiceProfile.sourceIsKitchen` — a milk round grouped its orders + /// under the counter they are loaded at; a logistics route grouped + /// nothing. The argument for the second half was that a parcel rider + /// "goes to one door for one consignment", so a header above a single + /// order would print the same name twice. + /// 2. Then deliveries were added to it: a booking the rider *hands over* was + /// loaded at the depot, and six drops drawing six nodes repeated one base + /// address six times. + /// + /// The premise under step 1 was wrong, and the milk run is the proof. A place + /// holding one order does not print the same name twice: the header names + /// **where** — `VBK Complex, 11C-18, Ramasamy Rd` — and the row under it + /// names **who** — `Jai Hari Shankar P R`. Those are two different facts, and + /// on a collection the rider needs both: the address is what he rides to, the + /// customer is who he asks for when he gets there. Flattening them threw the + /// address away and titled the card with the person. + /// + /// So every stop groups by its source now, and the shape of Home is one shape + /// on both lines. Two collections off one address gather, which they always + /// should have; a lone one is a place holding one order. The only stop still + /// drawn flat is one with nothing to name a place by at all — no counter and + /// no address — where there is genuinely no header to write. See the `flat` + /// rule below, which is unchanged. + @visibleForTesting List routeGroups() { final order = []; final buckets = >{}; - final grouped = ServiceProfile.active.sourceIsKitchen; // Every stop is bucketed, not only the ones Home still draws: a group's bag // numbers are counted against the whole group the rider was handed, so the @@ -449,9 +485,23 @@ class TripCard extends StatelessWidget { // is the same two-readers-one-question failure `sourceNameOf` documents, // repeated on the id, and it splits a kitchen's orders across two groups // on the screen while the collect still treats them as one. - final key = grouped + // ── One key for a milk round's counter, one for the whole depot ── + // + // A kitchen line has several counters in a day and the rider loads at + // each in turn, so its stops key on the counter they came off. + // + // A logistics day has one building. It assigns the day's bookings — + // collections, drops and both — hands over the route, and the rider + // accepts the lot before he leaves. So the run belongs to that building, + // and every stop keys to it however the individual booking is addressed. + // See [RiderHub]. + // + // `base`, not the internal word for it: `no_hub_in_rider_copy_test` + // forbids that string in this layer and it is right to — a bucket key is + // one rename away from being a label. + final key = ServiceProfile.active.sourceIsKitchen ? MilkRun.sourceKeyOf(stop, within: trip.stops) - : 'stop:${_idOf(stop)}'; + : 'base'; if (!buckets.containsKey(key)) { buckets[key] = []; order.add(key); @@ -522,22 +572,35 @@ class TripCard extends StatelessWidget { // to name its place with — no counter name and no address. With an // address it is a place holding one order, headed by where it is, with // the order in the list under it. + // Every bucket is a place now, so the only stop still drawn flat is one + // with nothing to head it with — no counter name and no address. There + // is genuinely no header to write for that one. final flat = - all.length == 1 && - (!grouped || (stopSourceName(first).isEmpty && place.isEmpty)); + all.length == 1 && stopSourceName(first).isEmpty && place.isEmpty; // A grouped place is named by its counter, or failing that by where it // is. A flat one *is* the stop, so it is named by the customer — // `MilkRun.navigationLabel` answers "pickup" for a parcel that has not // been collected yet, which is a description of the leg rather than a // name the rider can read off a gate. + // ── The head card is named after the place, and the depot is a place ── + // + // On a logistics run that place is the rider's **hub**, not any one + // booking's address. Reading it off the stops titled the card with a + // customer's street — right for the drops, which are loaded at the + // depot, and wrong for the collections, which are not. + // + // It falls back through what the payload names and then the address, so + // a build with no locations table still draws the card it drew before + // rather than an untitled one. + final hub = ServiceProfile.active.sourceIsKitchen ? '' : RiderHub.name; final name = flat ? OrderManifest.customerOf(first) - : (grouped - ? (stopSourceName(first).trim().isNotEmpty - ? stopSourceName(first) - : place) - : MilkRun.navigationLabel(first)); + : (hub.isNotEmpty + ? hub + : stopSourceName(first).trim().isNotEmpty + ? stopSourceName(first) + : place); return RouteGroup( key: key, // A route with no source names still groups — into one unnamed @@ -559,7 +622,16 @@ class TripCard extends StatelessWidget { // components that are identical on every stop of every route and // would push the part that names the street off the end of the line. // Not repeated when it is already the heading — see [name] above. - location: flat || name.trim() == place ? '' : place, + // + // ── And never a booking's street under the hub's name ── + // + // `place` is the first stop's address, which is the right subtitle + // for a counter the stops were collected from and quite wrong under + // a depot: it printed a customer's road under `H1`, which reads as + // the hub's address and is not. The locations table gives the hub a + // name and no street, so when the head is the hub the line is left + // empty rather than filled with something that looks like an answer. + location: flat || hub.isNotEmpty || name.trim() == place ? '' : place, stops: stops, allStops: all, firstIndex: indices.first, @@ -857,7 +929,7 @@ class TripCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 15.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -879,7 +951,7 @@ class TripCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.1, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -1008,7 +1080,7 @@ class TripCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.7, color: _hubColor, fontFamily: FontConstants.fontFamily, @@ -1101,7 +1173,7 @@ class TripCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: picked.isEmpty ? ColorConstants.secondaryText @@ -1117,7 +1189,7 @@ class TripCard extends StatelessWidget { all ? 'CLEAR' : 'ALL', style: TextStyle( fontSize: 11.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.6, color: ColorConstants.primary, fontFamily: FontConstants.fontFamily, @@ -1379,7 +1451,7 @@ class TripCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.acceptGreen, fontFamily: FontConstants.fontFamily, ), @@ -1429,7 +1501,7 @@ class TripCard extends StatelessWidget { textAlign: TextAlign.center, style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -1477,7 +1549,7 @@ class _ViewRouteAction extends StatelessWidget { 'MAP', style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.6, color: ColorConstants.primary, fontFamily: FontConstants.fontFamily, diff --git a/lib/views/Dashboard/home/trip_empty_state.dart b/lib/views/Dashboard/home/trip_empty_state.dart index 35c8945..4132664 100644 --- a/lib/views/Dashboard/home/trip_empty_state.dart +++ b/lib/views/Dashboard/home/trip_empty_state.dart @@ -62,7 +62,7 @@ class TripEmptyState extends StatelessWidget { return Padding( // Generous top air. With the card gone there is no edge to separate this - // from the pinned tab bar, so the space does that job — and an empty + // from the tab bar above, so the space does that job — and an empty // screen is the one place in the app that can afford it. // // Vertical only: [MilerEmptyState] already insets its copy by 40 a side, diff --git a/lib/views/Dashboard/home/trip_progress_rail.dart b/lib/views/Dashboard/home/trip_progress_rail.dart index aa050c6..669473b 100644 --- a/lib/views/Dashboard/home/trip_progress_rail.dart +++ b/lib/views/Dashboard/home/trip_progress_rail.dart @@ -404,7 +404,7 @@ class _TripProgressRailState extends State { // Fixed against the box: the circle does not grow with the system // font scale, so the digits inside it cannot either. fontSize: 14.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, height: 1, color: ink, @@ -482,7 +482,7 @@ class _TripProgressRailState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -494,7 +494,7 @@ class _TripProgressRailState extends State { allDone ? 'All stops done' : '$done of $total done', style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: allDone ? ColorConstants.acceptGreen @@ -541,7 +541,7 @@ class _TripProgressRailState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: allDone ? ColorConstants.acceptGreen : ColorConstants.secondaryText, diff --git a/lib/views/Dashboard/home/trip_tabs.dart b/lib/views/Dashboard/home/trip_tabs.dart index c38d6ca..6c3e771 100644 --- a/lib/views/Dashboard/home/trip_tabs.dart +++ b/lib/views/Dashboard/home/trip_tabs.dart @@ -1,83 +1,140 @@ import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:tab_container/tab_container.dart'; import 'package:miler/views/Dashboard/home/trip.dart'; import 'package:miler/views/helpers/constants/Colorconstants.dart'; import 'package:miler/views/helpers/constants/Font_constant.dart'; import 'package:miler/views/helpers/constants/design_constants.dart'; +import 'package:miler/views/helpers/constants/miler_surface.dart'; /// ───────────────────────────────────────────────────────────────────────── -/// THE TRIP SELECTOR — 1 · 2 · 3, under the header on white +/// THE TRIP SELECTOR — 1 · 2 · 3, and what the chosen slot is /// /// A rider is assigned at most three trips a day, so three targets fit across a /// phone and every trip is one tap away. /// -/// ── It has no container ── +/// ── It is a [TabContainer] now ── /// -/// It has had three, and each was a box drawn around a control that already -/// had a boundary of its own. First a pinned grey strip below the header, with -/// its own hairline. Then chips floating on the brand. Then a translucent -/// rounded track holding three rounded segments — a rounded rectangle inside a -/// rounded rectangle inside the header's own rounded rectangle, three nested -/// shapes to say which of three words is selected. +/// The control used to be a bare row of pills with a rule travelling under +/// them, drawn by hand: a marker animation, a per-pill width measurement pass, +/// and an overflow menu once a hub assigned more than three trips. All of that +/// was mechanism — tab geometry, tab transitions, tab overflow — re-implemented +/// for one screen. /// -/// It is a row of pills now, on the white page under the header: +/// `tab_container` owns that mechanism now. It draws the tab strip as part of +/// the panel's own shape, so the selected tab *is* the top edge of the body +/// below it, and it carries the selection between tabs itself. Past three +/// trips its tab strip scrolls, which is what the overflow menu was for. /// /// ``` -/// ╭─────────╮ ╭─────────╮ ╭─────────╮ -/// │ Trip 1 │ │ Trip 2 │ │ Trip 3 │ -/// ╰─────────╯ ╰─────────╯ ╰─────────╯ -/// ━━━━━ +/// ╭────────╮╭────────╮ ╭────────╮ +/// │ Trip 1 ││ Trip 2 │ │ Trip 3 │ +/// │ ━━━ ││ │ │ │ +/// ├────────╯╰────────┴─┴────────┴──────────╮ +/// │ 10:00 AM – 1:00 PM · 12 to collect │ +/// ╰────────────────────────────────────────╯ /// ``` /// -/// The selected trip is a white pill with a brand-red edge and brand-red type, -/// under a short red rule that travels; the others are a quiet grey fill with -/// grey type. Nothing here is a card, nothing is nested, and the row sizes -/// itself to its labels rather than dividing the width into three — which is -/// what makes it read as a filter rather than as a segmented control. +/// ── The rule stayed ── /// -/// ── Why it came off the brand ground ── +/// The package's own idiom is that the selected tab reads as a shaped +/// extension of the panel. On its own that is a *filled* tab, and a filled tab +/// is the thing this control has twice been redesigned away from — it makes a +/// filter look like a primary action and competes with the real button at the +/// foot of the card below. /// -/// It sat inside the red header for a while, which put the one control on the -/// screen that changes what the *page below* shows inside the one surface that -/// never changes. On white it belongs to the content it governs, the header -/// goes back to being identity and duty, and the red is an accent on a page -/// rather than a lighter shade of the thing it sits on. +/// So selection is still a short brand rule under the chosen numeral, drawn +/// inside the tab itself. The panel's shape says which tab owns the body; the +/// rule says which trip the rider is on. `test/card_density_test.dart` holds +/// both — one mark at a time, and a rule rather than a fill. /// -/// ── And it says only which trip it is ── +/// ── The body is the trip's own brief, and nothing else ── /// -/// The tabs carried `33 / 50` under each label for a while. That figure is the -/// run's, not the tab's: it is the headline of the card immediately below, in -/// type four times the size, and it was the third place on one screen the same -/// ratio appeared. A filter says what it filters to. +/// A [TabContainer] has a body, and an empty one would be a panel drawn around +/// nothing. What goes in it is the brief the tabs choose between — the figures +/// for the selected trip — handed in bare, because this panel is already the +/// surface they stand on. /// +/// It carried a line of its own for a version: `1 delivery on this round`, +/// under a heading that already read `1 stop left`. One panel, one count, +/// stated twice — and on the device the two sat eight points apart. A panel +/// under a set of tabs does not also need to narrate what the tabs selected. +/// +/// The panel deliberately does **not** repeat `33 / 50` either. That ratio is +/// the headline of the card below in type four times this size; it was on these +/// tabs once and was taken off for exactly that reason. A filter says what it +/// filters to. /// ───────────────────────────────────────────────────────────────────────── class TripSelector extends StatefulWidget { final List trips; final int selectedIndex; final ValueChanged onSelect; - /// Optimistic accept/reject sets, for the per-trip count. + /// Optimistic accept/reject sets, for the per-slot count in the brief. final Set acceptedIds; final Set rejectedIds; - /// Trips shown inline before the rest collapse into the overflow menu. + /// The selected trip's whole page — brief, route and action bar. /// - /// Also the number of segments ALWAYS rendered: a rider's day is three trips, - /// so 2 and 3 are shown before the hub has assigned them. A segment that - /// appears and disappears through the morning makes the screen feel unstable; - /// an empty third slot answers the question he actually has. + /// ── The panel encloses the work, it does not sit above it ── + /// + /// The selector used to be a control in a sliver of its own, with the trip's + /// content in the next sliver down: two unrelated boxes, one of which + /// happened to govern the other. A [TabContainer] is a *container*, and the + /// thing it is built to contain is the content its tabs choose — so the + /// trip's page is handed in here and the selected tab is literally the top + /// edge of it. + /// + /// Null leaves the control standing on its own at [height], which is what the + /// widget tests measure and what any caller that only wants the tabs gets. + final Widget? body; + + /// The number of tab slots ALWAYS rendered. + /// + /// A rider's day is three trips, so 2 and 3 are shown before the hub has + /// assigned them. A tab that appears and disappears through the morning makes + /// the screen feel unstable; an empty third slot answers the question he + /// actually has. Past three, the hub's own count wins and the strip scrolls. static const int maxInlineTabs = 3; - /// The travelling selection indicator. + /// The selection rule. static const Key markerKey = ValueKey('trip_tab_marker'); - /// The control's height — the pill, the air under it, and the indicator. + /// The tab strip — [TabContainer.tabExtent]. /// - /// Fixed, because it sits in a header whose extent must not move as trips - /// arrive through the morning, and tight because every point of it is a point - /// of the rider's first stop. + /// Comfortably over the 44pt tap floor without being a button: this is a + /// filter, and a filter that looks like a primary action competes with the + /// one at the foot of the card below it. + static double get pillHeight => 42.sp; + + /// The rule's thickness — the spec's 2–3dp. + static const double indicator = 3; + + /// The panel's own inner padding, measured to land its copy on the same + /// vertical as the cards below it. + /// + /// A [MilerPanel] insets its content by its gutter, its padding and the one + /// point of border it keeps — which is why `TODAY'S RUN` begins at 29 and why + /// `home_gutter_test` measures that number. This panel is a [TabContainer] + /// rather than a [MilerPanel], and its caller supplies the gutter, so what is + /// left for it to add is the other two parts. Built from the same tokens, not + /// from a number that happens to match today. + static double get contentInset => MilerSurface.panelPad + 1; + + /// The control's own height: strip plus brief, with no [body] in it. + /// + /// Fixed, because the tabs and the line under them must not move under the + /// rider's thumb as trips arrive through the morning. With a [body] the panel + /// is as tall as the page it encloses and this is just its head. + /// + /// ── And capped, because it is charged continuously ── + /// + /// This is header furniture: the rider sees it at every scroll position, so + /// every point it takes is a point the route below never gets. The budget is + /// 80 and `card_density_test.dart` holds it. Adding the body cost the strip + /// two points rather than the budget four — the panel earns its height by + /// saying what the slot is, not by being taller than the row it replaced. /// /// ── Why there is no `.h` in this sum ── /// @@ -87,18 +144,7 @@ class TripSelector extends StatefulWidget { /// anything shorter and wider — a foldable open, a tablet in landscape, a /// test surface — the box shrinks on one axis while the type inside it does /// not, and the label gets squeezed while still technically fitting. - /// - /// So the control is measured on one axis only: [pillHeight] · 7 · - /// [indicator]. - static double get height => pillHeight + 7 + indicator; - - /// The pill itself. Comfortably over the 44pt tap floor without being a - /// button — this is a filter, and a filter that looks like a primary action - /// competes with the one at the foot of the card below it. - static double get pillHeight => 40.sp; - - /// The travelling rule's thickness — the spec's 2–3dp. - static const double indicator = 3; + static double get height => pillHeight; const TripSelector({ super.key, @@ -107,6 +153,7 @@ class TripSelector extends StatefulWidget { required this.onSelect, this.acceptedIds = const {}, this.rejectedIds = const {}, + this.body, }); @override @@ -114,110 +161,74 @@ class TripSelector extends StatefulWidget { } class _TripSelectorState extends State - // Two tickers: the marker's journey and the running trip's pulse. They are - // independent — the pulse repeats forever, the marker fires on a tap — so - // they cannot share one controller. - with - TickerProviderStateMixin { - /// Carries the marker from the segment it was on to the one just chosen. + with TickerProviderStateMixin { + TabController? _tabs; + + /// How many tab slots the strip draws. /// - /// Same mechanism as the bottom nav bar, and for the same reason. The marker - /// used to belong to each segment — an `AnimatedContainer` per tab whose fill - /// went from transparent to white — so moving from 3 to 1 faded one out on - /// the right and a *different* one in on the left. Nothing ever occupied the - /// space between, so there was no object to travel across 2 with, and the - /// marker appeared to teleport. + /// Three is the norm, not a guarantee — a hub can assign more, and when it + /// does every one of them gets a tab rather than being folded away. + int get _slotCount => widget.trips.length > TripSelector.maxInlineTabs + ? widget.trips.length + : TripSelector.maxInlineTabs; + + /// The selection, clamped into the strip. /// - /// There is one marker now, owned by the control, and this is its position in - /// *slot* units — 1.5 is genuinely halfway between the second and third - /// segment. It also drives the ink on every segment, so one warms up as the - /// marker passes over it instead of switching the instant it is tapped while - /// the marker is still two segments away. - /// - /// Initialised on the declaration rather than in `initState`: a `late final` - /// assigned in `initState` is never filled in on a `State` that already - /// exists, and hot reload reuses the existing `State`. See the identical note - /// in `Bottom_page.dart`. - late final AnimationController _markerAnim; - late final Animation _markerCurve; - late Tween _markerTween; + /// The page owns the selection and is allowed to hold an index this control + /// cannot draw — a slot that existed before a refresh shortened the day. A + /// [TabController] cannot, so it is clamped here rather than asserted. + int get _safeIndex => widget.selectedIndex.clamp(0, _slotCount - 1); @override void initState() { super.initState(); - _markerAnim = AnimationController( + _buildController(); + } + + void _buildController() { + _tabs?.removeListener(_onTabChanged); + _tabs?.dispose(); + _tabs = TabController( + length: _slotCount, + initialIndex: _safeIndex, vsync: this, - duration: const Duration(milliseconds: 220), - value: 1.0, - ); - _markerCurve = CurvedAnimation( - parent: _markerAnim, - curve: Curves.easeInOutCubic, - ); - _markerTween = Tween( - begin: _slotOf(_inlineTabs()), - end: _slotOf(_inlineTabs()), - ); + )..addListener(_onTabChanged); } - double get _markerPos => _markerTween.evaluate(_markerCurve); - - /// Trip indices rendered as inline segments, left to right. + /// The controller moved — either the rider tapped, or [didUpdateWidget] + /// drove it to follow the page. /// - /// Three is the norm, not a guarantee — a hub can assign more. Past three the - /// control keeps the first two segments and folds the rest into a menu rather - /// than shrinking every target until nothing can be hit. When the selection - /// lives in the overflow it is pulled into the last inline slot, so the rider - /// can always see which trip he is looking at. - List _inlineTabs() { - final tabCount = widget.trips.length > TripSelector.maxInlineTabs - ? widget.trips.length - : TripSelector.maxInlineTabs; - final overflows = tabCount > TripSelector.maxInlineTabs; - final inlineCount = overflows ? TripSelector.maxInlineTabs - 1 : tabCount; - return [ - for (var i = 0; i < inlineCount; i++) i, - if (overflows && widget.selectedIndex >= inlineCount) - widget.selectedIndex, - ]; - } - - List _hiddenTabs(List inline) { - final tabCount = widget.trips.length > TripSelector.maxInlineTabs - ? widget.trips.length - : TripSelector.maxInlineTabs; - final overflows = tabCount > TripSelector.maxInlineTabs; - final inlineCount = overflows ? TripSelector.maxInlineTabs - 1 : tabCount; - return [ - for (var i = inlineCount; i < tabCount; i++) - if (!inline.contains(i)) i, - ]; - } - - /// Which *slot* the selection occupies. Not the same as the trip index once - /// an overflow menu is in play. - double _slotOf(List inline) { - final i = inline.indexOf(widget.selectedIndex); - return (i < 0 ? 0 : i).toDouble(); + /// Reported on `indexIsChanging == false` as well as on settle, so a tap is + /// answered as the animation starts rather than a frame after it lands: the + /// page swaps the route below, and waiting for the tab to arrive first shows + /// the outgoing trip sliding under the incoming label. + void _onTabChanged() { + final i = _tabs?.index; + if (i == null || i == widget.selectedIndex) return; + widget.onSelect(i); } @override void didUpdateWidget(TripSelector old) { super.didUpdateWidget(old); - // Selection is owned by the page, not by this control, so the slide starts - // from here rather than from a tap handler. - final target = _slotOf(_inlineTabs()); - if ((target - _markerTween.end!).abs() < 0.001) return; - // Begin from where the marker actually *is*. Starting from the previous - // selection instead would snap it back and re-run the whole journey when - // the rider changes his mind mid-slide. - _markerTween = Tween(begin: _markerPos, end: target); - _markerAnim.forward(from: 0); + + // A day that grew or shrank needs a controller of the new length; there is + // no way to re-length one in place. + if (_tabs == null || _tabs!.length != _slotCount) { + setState(_buildController); + return; + } + + // Selection is owned by the page, not by this control, so the travel + // starts from here rather than from a tap handler. Guarded, or the + // listener above and this line drive each other in a loop. + if (_tabs!.index != _safeIndex) _tabs!.animateTo(_safeIndex); } @override void dispose() { - _markerAnim.dispose(); + _tabs?.removeListener(_onTabChanged); + _tabs?.dispose(); super.dispose(); } @@ -226,347 +237,171 @@ class _TripSelectorState extends State /// Every lookup goes through [TripSlots.tripAt]. Slot 1 is the morning /// whether or not the rider has morning work, so `trips[i]` — which means /// "the i-th trip he happens to have" — would put an afternoon run under the - /// first segment on a day with no morning stops, and the rider's trip 2 would - /// not be the hub's. + /// first tab on a day with no morning stops, and the rider's trip 2 would not + /// be the hub's. @override Widget build(BuildContext context) { - final inline = _inlineTabs(); - final hidden = _hiddenTabs(inline); + final controller = _tabs!; + final selected = _safeIndex; + + // With nothing to enclose, the control is the tab strip and nothing else — + // a fixed head, which is what `trip_tabs_pinned_test` measures. + final body = widget.body; return SizedBox( - height: TripSelector.height, - child: AnimatedBuilder( - animation: _markerAnim, - builder: (context, _) { - final p = _markerPos; - - return Stack( - children: [ - Row( + height: body == null ? TripSelector.height : null, + child: TabContainer( + controller: controller, + tabEdge: TabEdge.top, + tabExtent: TripSelector.pillHeight, + // Wide enough to stay a target at any text scale. Past three trips the + // strip scrolls at this width rather than shrinking every tab until + // none of them can be hit. + tabMinLength: 88.w, + borderRadius: BorderRadius.circular(DesignConstants.radiusLg), + tabBorderRadius: BorderRadius.circular(DesignConstants.radiusLg), + // ── The app bar's own red ── + // + // The body and the selected tab are one shape in one fill, which is + // what says which tab owns what is under it. That fill is the brand + // bar's red — the same [ColorConstants.brandBarTop] the header above is + // painted in, from one definition so the two cannot drift into being + // *nearly* the same colour, which reads as a mistake rather than as a + // family. + // + // A gradient is not available here: [TabContainer] paints the tab notch + // and the body as one path in one colour. The bar's top stop is the + // more saturated of its two and the one the eye reads as "the app's + // red", so that is the one a solid takes. + // + // Everything inside the panel inverts to white with it — the brief + // included, which is why it is handed over with + // `buildSummary(onBrand: true)` rather than merely bare. + // + // The *unselected* tabs are not painted by this at all; they stand on + // the page canvas beside the panel. That is what makes the control read + // as tabs rather than as three words on a red band. + color: ColorConstants.brandBarTop, + // ── `childPadding` is not applied to a single `child` ── + // + // The package pads only the `children` branch: `_buildChild` reads + // `widget.child ?? Padding(padding: childPadding, …)`, so handing it one + // child skips the padding entirely and the brief sat hard against the + // screen edge. It is passed anyway for the day this takes `children`, + // and the inset that actually runs is [briefInset] below. + childPadding: EdgeInsets.symmetric(horizontal: MilerSurface.panelPad), + // The tabs are built here, fully styled, so the package must not + // re-style them: its own selected/unselected interpolation would scale + // the numeral and fight the rule underneath it. + overrideTextProperties: true, + duration: const Duration(milliseconds: 220), + curve: Curves.easeInOutCubic, + tabs: [ + for (var i = 0; i < _slotCount; i++) + _TripTab(index: i, selected: i == selected), + ], + // ── The dropdown is what the tabs are attached to ── + // + // The brief comes first and touches the tab strip, because the tabs + // choose the trip and the brief is that trip's figures: the selected + // tab is literally the top edge of the panel holding them. The slot + // line closes the panel underneath, where it reads as a caption on the + // figures rather than as something between the tabs and their content. + child: body == null + // Full width, zero height. `SizedBox.shrink()` is 0x0, and the + // panel takes its width from its child — so an empty one collapsed + // the whole control to nothing and the tabs stopped being tappable + // while still being painted. + ? const SizedBox(width: double.infinity, height: 0) + : Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.min, children: [ - for (var i = 0; i < inline.length; i++) ...[ - if (i > 0) SizedBox(width: 10.w), - // ── Flexible, because the labels grow ── - // - // The pills size themselves to their text and the text - // scales with the system font. Three of them at 2.0× are - // wider than a 320pt phone, and a `Row` of fixed-width - // children overflows rather than compressing. Loose flex - // lets each take its natural width until there is no room, - // and the label scales down inside it after that. - Flexible( - child: _TripTab( - index: inline[i], - // How lit this pill is: 1 with the rule under it, 0 - // once the rule is a whole slot away. Tied to the - // rule's position rather than to the selection, so a - // pill warms as the rule crosses instead of flipping - // the instant it is tapped while the rule is two slots - // away. - lit: (1.0 - (p - i).abs()).clamp(0.0, 1.0), - onTap: () => widget.onSelect(inline[i]), - onMeasured: (w) => _measure(i, w), - ), + Padding( + // Air under the tab strip. Without it the brief's heading + // sits on the seam it shares with the selected tab, and the + // two read as one squeezed block rather than as a tab and + // the panel it opens. + padding: EdgeInsets.fromLTRB( + TripSelector.contentInset, + 12, + TripSelector.contentInset, + 0, ), - ], - if (hidden.isNotEmpty) ...[ - SizedBox(width: 10.w), - _OverflowChip( - width: 44.w, - hidden: hidden, - trips: widget.trips, - onSelect: widget.onSelect, - ), - ], + child: body, + ), + SizedBox(height: TripSelector.contentInset), ], ), - // ── The rule, travelling ── - // - // One object that moves, rather than a mark each pill draws for - // itself: moving from 3 to 1 used to fade one out on the right - // and a different one in on the left, with nothing ever occupying - // the space between, so it appeared to teleport across tab 2. - // - // The pills size themselves to their labels, so where the rule - // has to be is not arithmetic — it is measured, from the pills - // themselves. See [_measure]. - if (_widths.length >= inline.length) - Positioned( - left: _leftOf(p), - bottom: 0, - width: _widthAt(p), - child: Center( - child: FractionallySizedBox( - widthFactor: 0.52, - child: Container( - key: TripSelector.markerKey, - height: TripSelector.indicator, - decoration: BoxDecoration( - color: ColorConstants.primary, - borderRadius: BorderRadius.circular( - DesignConstants.radiusFull, - ), - // The one piece of decoration in this control, spent - // on the mark that says where you are: its own colour - // at a third, blurred wide, so the rule reads as lit - // rather than as a bar with a shadow. - boxShadow: [ - BoxShadow( - color: ColorConstants.primary.withValues( - alpha: 0.34, - ), - blurRadius: 9, - offset: const Offset(0, 3), - ), - ], - ), - ), - ), - ), - ), - ], - ); - }, ), ); } - - /// Every pill's measured width, by slot. - /// - /// A pill is as wide as its label, so the travelling rule cannot be placed by - /// dividing the row into equal parts. Each pill reports its width on layout - /// and the rule is positioned from the running total — which is also what - /// lets it slide smoothly between two pills of different widths. - final Map _widths = {}; - - void _measure(int slot, double width) { - if (_widths[slot] == width) return; - _widths[slot] = width; - // After layout, so a rebuild here would be a build-during-build. - WidgetsBinding.instance.addPostFrameCallback((_) { - if (mounted) setState(() {}); - }); - } - - /// The gap between pills, matching the `SizedBox` in the row. - double get _gap => 10.w; - - double _leftOf(double p) { - final i = p.floor(); - final f = p - i; - double x = 0; - for (var k = 0; k < i; k++) { - x += (_widths[k] ?? 0) + _gap; - } - // Between two pills, walk the gap in proportion. - return x + f * ((_widths[i] ?? 0) + _gap); - } - - double _widthAt(double p) { - final i = p.floor(); - final f = p - i; - final a = _widths[i] ?? 0; - final b = _widths[i + 1] ?? a; - return a + (b - a) * f; - } } -/// One pill: the trip's name, and whether it is the one being worked. +/// One tab: the trip's name, and the rule when it is the one being worked. /// -/// See [TripSelector] for why there is no count on it and no card around it. +/// See [TripSelector] for why selection is a rule rather than the package's +/// own filled tab. class _TripTab extends StatelessWidget { final int index; + final bool selected; - /// 0 → 1, how far the travelling rule is over this pill. - final double lit; - - final VoidCallback onTap; - - /// Reports this pill's laid-out width, so the rule can be placed against - /// pills that are as wide as their labels rather than evenly divided. - final ValueChanged onMeasured; - - const _TripTab({ - required this.index, - required this.lit, - required this.onTap, - required this.onMeasured, - }); + const _TripTab({required this.index, required this.selected}); @override Widget build(BuildContext context) { - // ── Selection is colour and edge, not fill ── - // - // The selected pill goes *lighter* — white, with a brand edge and brand - // type — and the unselected ones carry the grey. That is the inverse of the - // usual segmented control, and it is right here because the page under it - // is white: a filled red pill would be the heaviest object on the screen, - // competing with the action at the foot of the card below. - final Color ink = Color.lerp( - ColorConstants.secondaryText, - ColorConstants.primary, - lit, - )!; - final Color fill = Color.lerp( - ColorConstants.tint(ColorConstants.slateText, 0.06), - ColorConstants.pureSurface, - lit, - )!; - final Color edge = Color.lerp( - Colors.transparent, - ColorConstants.primary.withValues(alpha: 0.55), - lit, - )!; - - return Semantics( - button: true, - selected: lit >= 0.999, - label: 'Trip ${index + 1}', - excludeSemantics: true, - child: GestureDetector( - behavior: HitTestBehavior.opaque, - onTap: onTap, - child: _Measured( - onMeasured: onMeasured, - child: AnimatedContainer( - duration: DesignConstants.motionState, - curve: Curves.easeOut, - height: TripSelector.pillHeight, - alignment: Alignment.center, - padding: EdgeInsets.symmetric(horizontal: 16.w), - decoration: BoxDecoration( - color: fill, - borderRadius: BorderRadius.circular(DesignConstants.radiusFull), - border: Border.all(color: edge, width: 1.4), - ), - child: FittedBox( - fit: BoxFit.scaleDown, - child: Text( - // Sentence case. `TRIP 1` set in caps is a label shouting a - // proper noun; the tab is the trip's name, and a name is written - // the way it is said. - 'Trip ${index + 1}', - maxLines: 1, - style: TextStyle( - fontSize: 14.5.sp, - height: 1.0, - // Weight carries the selection alongside the colour, so the - // state survives a greyscale screenshot and a rider with a - // colour-shifted screen. - fontWeight: lit > 0.5 ? FontWeight.w700 : FontWeight.w600, - letterSpacing: -0.1, - color: ink, - fontFamily: FontConstants.fontFamily, - ), + return Column( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + // Scale-down rather than ellipsis: the numeral is the whole label and + // `Trip 3` truncated to `Tri…` names nothing. This is also what keeps + // the strip one height at 2.0× text — see [TripSelector.height]. + Flexible( + child: FittedBox( + fit: BoxFit.scaleDown, + child: Text( + Trip.tabLabel(index), + maxLines: 1, + style: TextStyle( + fontFamily: FontConstants.fontFamily, + fontSize: 14.sp, + // ── Two grounds, so two inks ── + // + // The selected tab is part of the red panel; the others stand + // on the page canvas beside it. There is no one colour for + // both — brand red on the brand bar is invisible, slate on it + // fails contrast — so the chosen numeral goes white and the + // rest stay slate, quiet enough that the row reads as one + // control with one choice in it rather than as three buttons. + fontWeight: selected ? FontWeight.w800 : FontWeight.w600, + color: selected + ? Colors.white + : ColorConstants.onSurfaceVariant, ), ), ), ), - ), - ); - } -} - -/// Reports its child's laid-out width once, after layout. -/// -/// A `LayoutBuilder` cannot do this: it hands over the *incoming constraints*, -/// and these pills are unconstrained on the main axis — they are as wide as -/// their own text. So the width is read off the render object instead, in the -/// frame after it exists. -class _Measured extends SingleChildRenderObjectWidget { - final ValueChanged onMeasured; - - const _Measured({required this.onMeasured, required super.child}); - - @override - _MeasuredBox createRenderObject(BuildContext context) => - _MeasuredBox(onMeasured); - - @override - void updateRenderObject(BuildContext context, _MeasuredBox box) { - box.onMeasured = onMeasured; - } -} - -class _MeasuredBox extends RenderProxyBox { - ValueChanged onMeasured; - - _MeasuredBox(this.onMeasured); - - @override - void performLayout() { - super.performLayout(); - onMeasured(size.width); - } -} - -/// The way into trips four and beyond, on the rare day a hub assigns them. -class _OverflowChip extends StatelessWidget { - final double width; - final List hidden; - final List trips; - final ValueChanged onSelect; - - const _OverflowChip({ - required this.width, - required this.hidden, - required this.trips, - required this.onSelect, - }); - - @override - Widget build(BuildContext context) { - return SizedBox( - width: width, - child: Semantics( - button: true, - label: '${hidden.length} more trips', - excludeSemantics: true, - child: PopupMenuButton( - tooltip: '', - padding: EdgeInsets.zero, - color: ColorConstants.pureSurface, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(DesignConstants.radiusLg), - ), - onSelected: onSelect, - itemBuilder: (context) => [ - for (final i in hidden) - PopupMenuItem( - value: i, - child: Text( - // The one place a word is worth spending: a menu row has no - // shape of its own to carry the meaning. - 'Trip ${i + 1}', - style: TextStyle( - fontSize: 15.sp, - fontWeight: FontWeight.w700, - color: ColorConstants.slateText, - fontFamily: FontConstants.fontFamily, + SizedBox(height: 4.sp), + // The rule. Only the selected tab draws it, so there is exactly one in + // the tree at a time — which is what `card_density_test` asserts. + SizedBox( + height: TripSelector.indicator, + width: 26.w, + child: selected + ? Container( + key: TripSelector.markerKey, + decoration: BoxDecoration( + // White, because the rule sits on the brand. + color: Colors.white, + borderRadius: BorderRadius.circular( + DesignConstants.radiusFull, + ), ), - ), - ), - ], - child: DecoratedBox( - decoration: BoxDecoration( - color: Colors.white.withValues(alpha: 0.14), - borderRadius: BorderRadius.circular(20.r), - ), - child: Center( - child: Text( - '+${hidden.length}', - style: TextStyle( - fontSize: 17.sp, - fontWeight: FontWeight.w800, - letterSpacing: -0.5, - color: Colors.white, - fontFamily: FontConstants.fontFamily, - ), - ), - ), - ), + ) + : null, ), - ), + ], ); } } diff --git a/lib/views/Dashboard/orders/orderstaus_button.dart b/lib/views/Dashboard/orders/orderstaus_button.dart index c9cc7eb..75a60df 100644 --- a/lib/views/Dashboard/orders/orderstaus_button.dart +++ b/lib/views/Dashboard/orders/orderstaus_button.dart @@ -431,7 +431,7 @@ class StatusPill extends StatelessWidget { style: TextStyle( fontSize: 14.5, color: fg, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: 0.3, fontFamily: FontConstants.fontFamily, ), @@ -669,7 +669,7 @@ class _OrderStatusButtonState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, letterSpacing: 0.2, color: color, diff --git a/lib/views/Dashboard/pickups/card.dart b/lib/views/Dashboard/pickups/card.dart index 8f1be94..898f1fe 100644 --- a/lib/views/Dashboard/pickups/card.dart +++ b/lib/views/Dashboard/pickups/card.dart @@ -59,6 +59,19 @@ class PickupCard extends StatelessWidget { /// off the row's raw status. final Set outForDeliveryIds; + /// `next_action` per order, as the pivot returned it. + /// + /// Only needed to tell a **hub-routed** parcel from one whose routing has not + /// been reported yet: both sit on `Created`, and only the recorded pivot + /// instruction separates them. Everything else the card asks resolves from + /// the row's own `consignmentstatus`. + /// + /// Defaulting to empty is safe by construction — without it a hub parcel + /// reads as [NextLeg.unknown], which withholds the customer destination and + /// the Start-delivery control exactly as the hub leg does. It loses the + /// precise wording, never the guard. + final Map pivotActions; + const PickupCard({ super.key, required this.item, @@ -70,6 +83,7 @@ class PickupCard extends StatelessWidget { this.label = '', this.collectedIds = const {}, this.outForDeliveryIds = const {}, + this.pivotActions = const {}, }); String _val(List keys, [String fallback = '']) { @@ -101,6 +115,17 @@ class PickupCard extends StatelessWidget { // his box. See [MilkRun.workingKind]. final StopKind kind = MilkRun.workingKind(item, collectedIds: collectedIds); + // ── Where this parcel goes next, per order ── + // + // The card used to answer this from [ServiceProfile.deliversToCustomer] — a + // line-level constant — which is false on logistics. So a hyperlocal parcel + // already released into the rider's hands drew its *sender* as the + // destination, and a Chennai-bound one drew a receiver he is never going to. + final NextLegDecision leg = NextLegResolver.resolve( + item, + pivotAction: pivotActions[MilkRun.idOf(item)] ?? '', + ); + final String customer = _val([ 'pickupcustomer', 'tenantname', @@ -129,8 +154,12 @@ class PickupCard extends StatelessWidget { // customer names the pickup, and the drop end appears only if the // payload actually carries one. final String source = stopSourceName(item); - final bool pickupIsSource = - ServiceProfile.active.deliversToCustomer && source.isNotEmpty; + // The receiver names the far end whenever the rider is carrying it there — + // whether that is a milk round (line-level) or a hyperlocal parcel the + // backend routed direct (per-order). + final bool carryingToCustomer = + ServiceProfile.active.deliversToCustomer || leg.isCustomer; + final bool pickupIsSource = carryingToCustomer && source.isNotEmpty; final String pickupName = pickupIsSource ? source : customer; final String dropAddress = _val(['dropaddress', 'DropAddress']); final String dropName = pickupIsSource @@ -139,8 +168,16 @@ class PickupCard extends StatelessWidget { /// True once the rider is carrying it: the drop becomes the destination and /// takes the top of the card. + // ── The immediate destination leads; never a hub leg's receiver ── + // + // On [NextLeg.hub] the receiver is in another district and the rider is + // going to a hub. Letting that address take the headline is the navigation + // mistake this whole change exists to prevent, so a hub leg never leads + // with a drop — the final destination is demoted to context below. final bool dropLeads = - pickupIsSource && (dropName.isNotEmpty || dropAddress.isNotEmpty); + !leg.isHub && + (pickupIsSource || leg.isCustomer) && + (dropName.isNotEmpty || dropAddress.isNotEmpty); // ── No accent stripe any more ── // @@ -217,6 +254,30 @@ class PickupCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ + // ── What kind of journey this is, above the name ── + // + // HUB HANDOVER and CUSTOMER DELIVERY are different + // physical acts with different endings, and the row + // has to say which before the rider reads the place. + // Drawn only once the parcel is actually his; an + // uncollected stop has no leg yet. + if (leg.leg.eyebrow.isNotEmpty) ...[ + Text( + leg.leg.eyebrow, + style: TextStyle( + fontSize: 10.sp, + fontWeight: FontWeight.w800, + letterSpacing: 0.8, + color: leg.isHub + ? ColorConstants.deliveryAccent + : leg.isUnknown + ? ColorConstants.warning + : ColorConstants.secondaryText, + fontFamily: FontConstants.fontFamily, + ), + ), + SizedBox(height: 3.h), + ], Text( (dropLeads ? dropName : pickupName).isEmpty ? 'Not named' @@ -225,7 +286,7 @@ class PickupCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 22.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, height: 1.1, letterSpacing: -0.6, color: ColorConstants.slateText, @@ -264,7 +325,7 @@ class PickupCard extends StatelessWidget { style: TextStyle( fontSize: 15.sp, height: 1.35, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -357,7 +418,7 @@ class PickupCard extends StatelessWidget { style: TextStyle( fontSize: 14.5.sp, height: 1.35, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.warning, fontFamily: FontConstants.fontFamily, ), @@ -390,7 +451,7 @@ class PickupCard extends StatelessWidget { 'PICKED UP FROM', style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: 0.8, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -409,7 +470,7 @@ class PickupCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, height: 1.2, color: ColorConstants.slateText, @@ -462,7 +523,7 @@ class PickupCard extends StatelessWidget { child: Text( 'Finish the current stop first', style: TextStyle( - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontSize: 14.sp, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -627,7 +688,7 @@ class _JourneyBlock extends StatelessWidget { distance, style: TextStyle( fontSize: 15.5.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: -0.3, color: fg, fontFamily: FontConstants.fontFamily, @@ -641,7 +702,7 @@ class _JourneyBlock extends StatelessWidget { '~$travel', style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -687,7 +748,7 @@ class _DistanceEta extends StatelessWidget { travel == '—' ? distance : '$distance · ~$travel', style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: fg, fontFamily: FontConstants.fontFamily, @@ -737,7 +798,7 @@ class _ActionLine extends StatelessWidget { TextStyle style(Color c) => TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: c, fontFamily: FontConstants.fontFamily, ); @@ -1040,7 +1101,7 @@ class _QueueHeading extends StatelessWidget { label, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: 1.2, color: live ? ColorConstants.primary @@ -1054,7 +1115,7 @@ class _QueueHeading extends StatelessWidget { '$count', style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -1129,7 +1190,7 @@ class _LabelPair extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: size.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: -0.2, color: muted ? ColorConstants.secondaryText @@ -1147,7 +1208,7 @@ class _LabelPair extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: size.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -1212,7 +1273,7 @@ class _TaskChip extends StatelessWidget { maxLines: 1, style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: 1.0, color: look.color, fontFamily: FontConstants.fontFamily, @@ -1268,7 +1329,7 @@ class _NextCard extends StatelessWidget { // in position, which is what makes their labels a // convenience rather than the only thing ranking them. fontSize: 17.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, height: 1.15, letterSpacing: -0.4, color: ColorConstants.slateText, @@ -1292,7 +1353,7 @@ class _NextCard extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -1349,7 +1410,7 @@ class _LaterRow extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 16.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.3, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -1361,7 +1422,7 @@ class _LaterRow extends StatelessWidget { RouteMetricsHelper.formatDistance(distanceMeters), style: TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -1417,7 +1478,7 @@ class _SkippedRow extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 18.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.4, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -1436,7 +1497,7 @@ class _SkippedRow extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, height: 1.3, color: ColorConstants.warning, fontFamily: FontConstants.fontFamily, @@ -1447,7 +1508,12 @@ class _SkippedRow extends StatelessWidget { Row( children: [ if (label.isNotEmpty) ...[ - _LabelPair(label: label, customer: '', muted: true, size: 13.5), + _LabelPair( + label: label, + customer: '', + muted: true, + size: 13.5, + ), SizedBox(width: 12.w), ], Expanded( diff --git a/lib/views/Dashboard/pickups/collect_payment.dart b/lib/views/Dashboard/pickups/collect_payment.dart index 5ad501d..27645d9 100644 --- a/lib/views/Dashboard/pickups/collect_payment.dart +++ b/lib/views/Dashboard/pickups/collect_payment.dart @@ -8,6 +8,7 @@ import 'package:slider_button_lite/feature/presentation/slider_button/slider_but import 'package:miler/views/Dashboard/pickups/stop_type.dart'; import 'package:miler/views/helpers/constants/Colorconstants.dart'; +import 'package:miler/views/helpers/constants/miler_surface.dart'; import 'package:miler/views/helpers/constants/design_constants.dart'; import 'package:miler/views/helpers/constants/Font_constant.dart'; import 'package:miler/views/helpers/widgets/app_widgets.dart'; @@ -325,7 +326,7 @@ class _CollectPaymentPageState extends State { // Grey page, white bands — the same shape the verification screens this // follows now take, so the money step reads as the next page of one flow // rather than a different screen. See [MilerBand]. - backgroundColor: ColorConstants.daylightSurface, + backgroundColor: MilerSurface.canvas, // Same bar as the verification screens this follows: taller, clear of // the notch, title at a size that survives sunlight and arm's length. appBar: milerPageBar( @@ -377,7 +378,7 @@ class _CollectPaymentPageState extends State { 'DUE AT THIS STOP', style: TextStyle( fontSize: 10.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.8, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -391,7 +392,7 @@ class _CollectPaymentPageState extends State { '₹${_fmt(_due)}', style: TextStyle( fontSize: 42.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -1.6, height: 1.05, color: ColorConstants.slateText, @@ -406,7 +407,7 @@ class _CollectPaymentPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -457,7 +458,7 @@ class _CollectPaymentPageState extends State { label, style: TextStyle( fontSize: 12.5.sp, - fontWeight: strong ? FontWeight.w700 : FontWeight.w500, + fontWeight: strong ? FontWeight.w800 : FontWeight.w600, color: strong ? ColorConstants.slateText : ColorConstants.secondaryText, @@ -469,7 +470,7 @@ class _CollectPaymentPageState extends State { value, style: TextStyle( fontSize: strong ? 14.sp : 12.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: strong ? ColorConstants.slateText : ColorConstants.secondaryText, @@ -529,7 +530,7 @@ class _CollectPaymentPageState extends State { style: TextStyle( fontSize: 12.sp, height: 1.35, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -555,7 +556,7 @@ class _CollectPaymentPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -570,7 +571,7 @@ class _CollectPaymentPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -628,7 +629,7 @@ class _CollectPaymentPageState extends State { 'Show this to the customer', style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.upiPurple, fontFamily: FontConstants.fontFamily, ), @@ -666,7 +667,7 @@ class _CollectPaymentPageState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -677,7 +678,7 @@ class _CollectPaymentPageState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -719,7 +720,7 @@ class _CollectPaymentPageState extends State { m.label, style: TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -728,7 +729,7 @@ class _CollectPaymentPageState extends State { m.blurb, style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -821,7 +822,6 @@ class _CollectPaymentPageState extends State { final onBehalf = _shipper.isNotEmpty ? _shipper : 'the shipper'; return MilerBand( color: ColorConstants.tint(ColorConstants.tertiary, 0.08), - rail: ColorConstants.tertiary, padding: EdgeInsets.fromLTRB(MilerBand.pad, 13.h, MilerBand.pad, 13.h), child: Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -835,7 +835,7 @@ class _CollectPaymentPageState extends State { style: TextStyle( fontSize: 12.sp, height: 1.4, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.tertiary, fontFamily: FontConstants.fontFamily, ), @@ -869,7 +869,7 @@ class _CollectPaymentPageState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -884,7 +884,7 @@ class _CollectPaymentPageState extends State { 'Customer cannot pay', style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.errorRed, fontFamily: FontConstants.fontFamily, ), @@ -929,7 +929,7 @@ class _CollectPaymentPageState extends State { 'Finish the details above', style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -953,7 +953,7 @@ class _CollectPaymentPageState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: Colors.white, fontFamily: FontConstants.fontFamily, ), @@ -982,7 +982,7 @@ class _CollectPaymentPageState extends State { 'Collect payment', style: TextStyle( fontSize: 17.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -1004,7 +1004,7 @@ class _CollectPaymentPageState extends State { 'Nothing to collect here', style: TextStyle( fontSize: 18.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -1016,7 +1016,7 @@ class _CollectPaymentPageState extends State { style: TextStyle( fontSize: 13.sp, height: 1.4, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -1051,7 +1051,7 @@ class _CollectPaymentPageState extends State { title, style: TextStyle( fontSize: 16.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -1086,7 +1086,7 @@ class _CollectPaymentPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: selected ? Colors.white : ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -1113,7 +1113,7 @@ class _CollectPaymentPageState extends State { onChanged: (_) => setState(() {}), style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -1121,7 +1121,7 @@ class _CollectPaymentPageState extends State { hintText: hint, hintStyle: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -1167,7 +1167,7 @@ class _CollectPaymentPageState extends State { style: TextStyle( fontSize: 12.sp, height: 1.35, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: accent, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/pickups/delivery_actions.dart b/lib/views/Dashboard/pickups/delivery_actions.dart index 21d80cf..b59aed1 100644 --- a/lib/views/Dashboard/pickups/delivery_actions.dart +++ b/lib/views/Dashboard/pickups/delivery_actions.dart @@ -269,6 +269,42 @@ bool get _handoffHoldIsPossible => ServiceProfile.active.endsAtHub; Future releaseForDelivery(Map stop) async { lastReleaseFailure = null; + // ── A hub-routed parcel has no customer round to start ── + // + // This is the gate that keeps a Gandhipuram → Chennai consignment out of the + // delivery lifecycle. `start-delivery` moves it to `Out_for_Delivery` against + // a receiver 500km away, the hub then sees a rider "actively delivering" a + // parcel that is going onto a line-haul truck, and there is no way back from + // that state on the handset. + // + // Asked of the order, never of the line — see [NextLegResolver]. The pivot's + // own instruction is read from the store because that is the only place the + // routing answer survives a rebuild; `GET /miler/bookings` does not carry it. + final leg = NextLegResolver.resolve( + stop, + pivotAction: (await getPivotNextActions())[MilkRun.idOf(stop)] ?? '', + ); + if (leg.isHub) { + debugPrint('[NEXTLEG] release refused for ${MilkRun.idOf(stop)} — $leg'); + lastReleaseFailure = + 'This parcel goes back to base, not to the customer. Hand it over at ' + 'base — there is no delivery to start here.'; + return false; + } + + // ── `unknown` is NOT refused here, deliberately ── + // + // It would be the cautious-looking thing to do and it is the wrong thing. + // A row that says nothing is exactly the case the consignment re-read below + // exists for: `Created` and a blank status both arrive on a poll that is + // behind the rider, and the server is the judge of its own consignment. + // Refusing here short-circuits that read and strands a rider on a stop the + // server would have released — the failure `_handoffHoldIsPossible` already + // documents, arriving by a new route. + // + // Only [NextLeg.hub] is refused, because that is the one answer the server + // has actually given. + final consignmentId = await resolveConsignmentId(stop); if (consignmentId.isEmpty) { debugPrint('[MILKRUN] no consignment id for ${MilkRun.idOf(stop)}'); @@ -292,8 +328,7 @@ Future releaseForDelivery(Map stop) async { // custody and refused, and no amount of sliding cleared a row that only the // next poll was going to correct. It is asked directly instead — one request, // on the one state where the row is not evidence. - if (state == ConsignmentState.unknown || - state == ConsignmentState.created) { + if (state == ConsignmentState.unknown || state == ConsignmentState.created) { state = await ConsignmentGate.stateOf(consignmentId); } if (state.isDeliverable || state.isDelivered) { diff --git a/lib/views/Dashboard/pickups/delivery_proof_page.dart b/lib/views/Dashboard/pickups/delivery_proof_page.dart index fc8ebf8..b72d3d6 100644 --- a/lib/views/Dashboard/pickups/delivery_proof_page.dart +++ b/lib/views/Dashboard/pickups/delivery_proof_page.dart @@ -7,6 +7,7 @@ import 'package:image_picker/image_picker.dart'; import 'package:miler/data/proof_store.dart'; import 'package:miler/views/helpers/constants/Colorconstants.dart'; +import 'package:miler/views/helpers/constants/miler_surface.dart'; import 'package:miler/views/helpers/constants/design_constants.dart'; import 'package:miler/views/helpers/constants/Font_constant.dart'; import 'package:miler/views/helpers/widgets/app_widgets.dart'; @@ -214,7 +215,7 @@ class _DeliveryProofPageState extends State { final hasShot = _shotPath != null; return Scaffold( - backgroundColor: ColorConstants.daylightSurface, + backgroundColor: MilerSurface.canvas, appBar: const MilerAppBar(title: 'Proof of delivery', showBack: true), body: SafeArea( top: false, @@ -286,7 +287,7 @@ class _DeliveryProofPageState extends State { 'Handing over to', style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -298,7 +299,7 @@ class _DeliveryProofPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 17.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.4, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -384,7 +385,7 @@ class _DeliveryProofPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -442,7 +443,7 @@ class _DeliveryProofPageState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 17.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.4, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -457,7 +458,7 @@ class _DeliveryProofPageState extends State { style: TextStyle( fontSize: 13.5.sp, height: 1.45, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -528,7 +529,7 @@ class _DeliveryProofPageState extends State { "Couldn't hand it over?", style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.1, color: Narrative.inkMuted, fontFamily: FontConstants.fontFamily, @@ -542,7 +543,7 @@ class _DeliveryProofPageState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.warning, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/pickups/done.dart b/lib/views/Dashboard/pickups/done.dart index 430ece8..50093e3 100644 --- a/lib/views/Dashboard/pickups/done.dart +++ b/lib/views/Dashboard/pickups/done.dart @@ -390,7 +390,7 @@ class _PickupsDoneState extends State overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: tone, fontFamily: FontConstants.fontFamily, @@ -436,7 +436,7 @@ class _PickupsDoneState extends State overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 28.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.9, height: 1.08, color: ColorConstants.slateText, @@ -451,7 +451,7 @@ class _PickupsDoneState extends State style: TextStyle( fontSize: 14.5.sp, height: 1.45, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurfaceVariant, fontFamily: FontConstants.fontFamily, ), @@ -478,7 +478,7 @@ class _PickupsDoneState extends State overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: kind.accent, fontFamily: FontConstants.fontFamily, ), @@ -514,7 +514,7 @@ class _PickupsDoneState extends State style: TextStyle( fontSize: 12.5.sp, height: 1.35, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.warning, fontFamily: FontConstants.fontFamily, ), @@ -588,7 +588,7 @@ class _PickupsDoneState extends State '$position', style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: kind.accent, fontFamily: FontConstants.fontFamily, ), @@ -605,7 +605,7 @@ class _PickupsDoneState extends State overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.2, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -619,7 +619,7 @@ class _PickupsDoneState extends State overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -661,7 +661,7 @@ class _PickupsDoneState extends State 'Finding your next stop…', style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -702,7 +702,7 @@ class _PickupsDoneState extends State textAlign: TextAlign.center, style: TextStyle( fontSize: 24.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.6, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -716,7 +716,7 @@ class _PickupsDoneState extends State style: TextStyle( fontSize: 14.sp, height: 1.5, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -775,7 +775,7 @@ class _PickupsDoneState extends State // least readable combination in the app, on the screen a rider glances at // between two stops. fontSize: 12.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.9, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -783,7 +783,7 @@ class _PickupsDoneState extends State TextStyle get _metaStyle => TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ); @@ -828,7 +828,7 @@ class _PickupsDoneState extends State 'You Won a Bonus!', style: TextStyle( fontSize: 24.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -910,7 +910,7 @@ class _PickupsDoneState extends State '${widget.bonusPoints}', style: TextStyle( fontSize: 52.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, letterSpacing: -2, @@ -920,7 +920,7 @@ class _PickupsDoneState extends State 'Bonus Points', style: TextStyle( fontSize: 16.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurfaceVariant, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/pickups/map.dart b/lib/views/Dashboard/pickups/map.dart index 3eae0bb..af58917 100644 --- a/lib/views/Dashboard/pickups/map.dart +++ b/lib/views/Dashboard/pickups/map.dart @@ -1018,7 +1018,7 @@ class _PickupMapScreenState extends State<_PickupMapScreen> 'Finding the route', style: MilerType.micro.copyWith( fontSize: 12.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, ), ), ], @@ -1491,7 +1491,7 @@ class _PickupMapScreenState extends State<_PickupMapScreen> "Couldn't deliver? Skip or cancel", style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.1, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -1519,9 +1519,7 @@ class _PickupMapScreenState extends State<_PickupMapScreen> // rider is setting off. Naming it after the app that opens — navigate — // described the side effect rather than the thing he is doing, and it // read as a different job from the delivery leg's identical step. - label: onTheWay - ? "Slide to confirm you've arrived" - : 'Slide to start ride', + label: onTheWay ? "Arrived" : 'Start ride', icon: onTheWay ? LucideIcons.check : LucideIcons.navigation, // Green advances the job, maroon is brand and navigation. color: onTheWay ? ColorConstants.acceptGreen : ColorConstants.primary, @@ -2477,7 +2475,7 @@ class _LiveEtaHeader extends StatelessWidget { style: TextStyle( fontSize: known ? 34.sp : 20.sp, height: 1.0, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: -1.4, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -2494,7 +2492,7 @@ class _LiveEtaHeader extends StatelessWidget { style: TextStyle( fontSize: 17.sp, height: 1.0, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.5, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, diff --git a/lib/views/Dashboard/pickups/multi_map.dart b/lib/views/Dashboard/pickups/multi_map.dart index 3f092c9..70bf56c 100644 --- a/lib/views/Dashboard/pickups/multi_map.dart +++ b/lib/views/Dashboard/pickups/multi_map.dart @@ -553,7 +553,7 @@ class _MultiCustomerMapScreenState extends State style: TextStyle( fontFamily: FontConstants.fontFamily, color: Colors.white, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontSize: 14.sp, ), ), @@ -576,7 +576,7 @@ class _MultiCustomerMapScreenState extends State style: TextStyle( fontFamily: FontConstants.fontFamily, color: Colors.white, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontSize: 12.sp, ), ), @@ -606,7 +606,7 @@ class _MultiCustomerMapScreenState extends State fontFamily: FontConstants.fontFamily, fontSize: 16.sp, color: ColorConstants.slateText, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, ), ), const SizedBox(height: 8), @@ -615,7 +615,7 @@ class _MultiCustomerMapScreenState extends State style: TextStyle( fontFamily: FontConstants.fontFamily, fontSize: 18.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, ), ), @@ -646,7 +646,7 @@ class _MultiCustomerMapScreenState extends State fontFamily: FontConstants.fontFamily, fontSize: 16.sp, color: ColorConstants.slateText, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, ), ), const SizedBox(height: 8), @@ -655,7 +655,7 @@ class _MultiCustomerMapScreenState extends State style: TextStyle( fontFamily: FontConstants.fontFamily, fontSize: 18.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, ), ), @@ -687,7 +687,7 @@ class _MultiCustomerMapScreenState extends State fontFamily: FontConstants.fontFamily, fontSize: 16.sp, color: ColorConstants.slateText, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, ), ), const SizedBox(height: 4), @@ -696,7 +696,7 @@ class _MultiCustomerMapScreenState extends State style: TextStyle( fontFamily: FontConstants.fontFamily, fontSize: 18.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, ), ), diff --git a/lib/views/Dashboard/pickups/payment_screen.dart b/lib/views/Dashboard/pickups/payment_screen.dart index 723d46e..43564e9 100644 --- a/lib/views/Dashboard/pickups/payment_screen.dart +++ b/lib/views/Dashboard/pickups/payment_screen.dart @@ -174,7 +174,7 @@ class _PaymentScreenState extends State 'Payment Collected Successfully', style: TextStyle( fontSize: 26.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -245,7 +245,7 @@ class _PaymentScreenState extends State 'Payment Receipt', style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -356,7 +356,7 @@ class _PaymentScreenState extends State value, style: TextStyle( fontSize: 14.sp, - fontWeight: valueBold ? FontWeight.w600 : FontWeight.w500, + fontWeight: valueBold ? FontWeight.w700 : FontWeight.w600, color: valueColor ?? ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -418,7 +418,7 @@ class _PaymentScreenState extends State 'Payment Collection', style: TextStyle( fontSize: 20.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: Colors.white, fontFamily: FontConstants.fontFamily, letterSpacing: 0.5, @@ -452,7 +452,7 @@ class _PaymentScreenState extends State '₹${_totalAmount.toStringAsFixed(0)}', style: TextStyle( fontSize: 36.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, color: Colors.white, fontFamily: FontConstants.fontFamily, letterSpacing: -1, @@ -483,7 +483,7 @@ class _PaymentScreenState extends State '#$_orderId', style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: Colors.white, fontFamily: FontConstants.fontFamily, ), @@ -642,7 +642,7 @@ class _PaymentScreenState extends State textAlign: TextAlign.center, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: Colors.white, fontFamily: FontConstants.fontFamily, ), @@ -690,7 +690,7 @@ class _PaymentScreenState extends State label, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onSurfaceVariant, fontFamily: FontConstants.fontFamily, letterSpacing: 0.5, @@ -759,7 +759,7 @@ class _PaymentScreenState extends State title, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -814,7 +814,7 @@ class _PaymentScreenState extends State style: TextStyle( fontSize: isTotal ? 15.sp : 13.sp, color: ColorConstants.onSurfaceVariant, - fontWeight: isBold ? FontWeight.w500 : FontWeight.normal, + fontWeight: isBold ? FontWeight.w600 : FontWeight.normal, fontFamily: FontConstants.fontFamily, ), ), @@ -823,8 +823,8 @@ class _PaymentScreenState extends State style: TextStyle( fontSize: isTotal ? 17.sp : 14.sp, fontWeight: isTotal - ? FontWeight.w700 - : (isBold ? FontWeight.w600 : FontWeight.w500), + ? FontWeight.w800 + : (isBold ? FontWeight.w700 : FontWeight.w600), color: isTotal ? ColorConstants.primary : ColorConstants.onSurface, diff --git a/lib/views/Dashboard/pickups/pickup_verify.dart b/lib/views/Dashboard/pickups/pickup_verify.dart index 0a4233a..22752d8 100644 --- a/lib/views/Dashboard/pickups/pickup_verify.dart +++ b/lib/views/Dashboard/pickups/pickup_verify.dart @@ -272,7 +272,7 @@ class _PickupVerificationPageState extends State style: TextStyle( fontSize: 21.sp, color: ColorConstants.onSurface, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, fontFamily: FontConstants.fontFamily, ), ), @@ -348,7 +348,7 @@ class _PickupVerificationPageState extends State label, style: TextStyle( fontSize: 10.sp, - fontWeight: done ? FontWeight.w600 : FontWeight.w500, + fontWeight: done ? FontWeight.w700 : FontWeight.w600, color: done ? _successGreen : ColorConstants.onSurfaceVariant, @@ -412,7 +412,7 @@ class _PickupVerificationPageState extends State style: TextStyle( color: Colors.white, fontSize: 16.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, fontFamily: FontConstants.fontFamily, ), ), @@ -427,7 +427,7 @@ class _PickupVerificationPageState extends State _customerName, style: TextStyle( fontSize: 16.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: Colors.white, fontFamily: FontConstants.fontFamily, ), @@ -489,7 +489,7 @@ class _PickupVerificationPageState extends State label, style: TextStyle( fontSize: 9.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: accentColor, letterSpacing: 0.8, fontFamily: FontConstants.fontFamily, @@ -541,7 +541,7 @@ class _PickupVerificationPageState extends State title, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -558,7 +558,7 @@ class _PickupVerificationPageState extends State badge, style: TextStyle( fontSize: 10.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: _primaryRed, fontFamily: FontConstants.fontFamily, ), @@ -679,7 +679,7 @@ class _PickupVerificationPageState extends State 'Tap to take parcel photo', style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurfaceVariant, fontFamily: FontConstants.fontFamily, ), @@ -738,7 +738,7 @@ class _PickupVerificationPageState extends State label, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -750,7 +750,7 @@ class _PickupVerificationPageState extends State style: TextStyle( fontSize: 13.sp, color: _primaryRed, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, ), ), @@ -806,7 +806,7 @@ class _PickupVerificationPageState extends State : 'Complete all fields to continue', style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -844,7 +844,7 @@ class _PickupVerificationPageState extends State textAlign: TextAlign.center, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: Colors.white, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/pickups/pickups.dart b/lib/views/Dashboard/pickups/pickups.dart index 5f46089..ddb8190 100644 --- a/lib/views/Dashboard/pickups/pickups.dart +++ b/lib/views/Dashboard/pickups/pickups.dart @@ -15,7 +15,7 @@ library; import 'dart:async'; import 'dart:convert'; import 'dart:io'; -import 'package:flutter/foundation.dart' show kDebugMode, setEquals; +import 'package:flutter/foundation.dart' show kDebugMode, mapEquals, setEquals; import 'package:flutter/material.dart'; import 'package:lucide_icons_flutter/lucide_icons.dart'; import 'package:miler/views/helpers/constants/design_constants.dart'; @@ -73,6 +73,7 @@ import 'package:miler/views/Dashboard/pickups/stop_verify.dart'; import 'package:miler/views/Dashboard/pickups/shipment_capture.dart'; import 'package:miler/views/Dashboard/pickups/shipment_review.dart'; import 'package:miler/data/milk_run.dart'; +import 'package:miler/data/next_leg.dart'; import 'package:miler/data/order_events.dart'; import 'package:miler/data/route_order.dart'; import 'package:miler/data/stop_area.dart'; @@ -527,6 +528,11 @@ class _MyPickupsState extends State Set _acceptedIds = {}; Set _collectedIds = {}; + + /// `next_action` per order, as the pivot returned it. Continuity for + /// [NextLegResolver] across a rebuild and a poll — see that resolver for why + /// it is the lowest rung of the precedence and never an override. + Map _pivotActions = {}; Set _outForDeliveryIds = {}; Set _notLoadedIds = {}; Set _rejectedIds = {}; @@ -600,8 +606,6 @@ class _MyPickupsState extends State return [...done, ...open]; } - - /// Progress state for every stop on the accepted trip, in the admin's fixed /// order — what drives the red→green rail at the top of Bookings. /// @@ -921,7 +925,7 @@ class _MyPickupsState extends State textAlign: TextAlign.center, style: TextStyle( fontSize: 16.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -934,7 +938,7 @@ class _MyPickupsState extends State style: TextStyle( fontSize: 12.5.sp, height: 1.45, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -958,7 +962,7 @@ class _MyPickupsState extends State style: TextStyle( fontSize: 10.sp, height: 1.5, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -2038,6 +2042,10 @@ class _MyPickupsState extends State // no tab at all: dropped from Home as collected, withheld from here as // unreleased. final Set collectedIds = await getCollectedOrderIds(); + final pivotActions = await getPivotNextActions(); + if (mounted && !mapEquals(_pivotActions, pivotActions)) { + setState(() => _pivotActions = pivotActions); + } // ── Held on the state whatever the line ── // @@ -2092,6 +2100,7 @@ class _MyPickupsState extends State collectedIds: collectedIds, acceptedIds: acceptedIds, closedIds: closedIds, + pivotActions: pivotActions, ); // Drop stops the rider just finished. The backend may still return them @@ -3285,6 +3294,7 @@ class _MyPickupsState extends State collectedIds: _collectedIds, outForDeliveryIds: _outForDeliveryIds, + pivotActions: _pivotActions, ), QueueDensity.next => _NextCard( item: item, diff --git a/lib/views/Dashboard/pickups/pip.dart b/lib/views/Dashboard/pickups/pip.dart index c373a45..cda20fc 100644 --- a/lib/views/Dashboard/pickups/pip.dart +++ b/lib/views/Dashboard/pickups/pip.dart @@ -112,7 +112,7 @@ class _PipInfoCardState extends State { 'Out', style: TextStyle( fontSize: 14, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.primary, fontFamily: FontConstants.fontFamily, ), @@ -133,7 +133,7 @@ class _PipInfoCardState extends State { strokeCap: StrokeCap.round, textStyle: TextStyle( fontSize: 17, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.primary, fontFamily: FontConstants.fontFamily, ), @@ -157,7 +157,7 @@ class _PipInfoCardState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/pickups/sheet.dart b/lib/views/Dashboard/pickups/sheet.dart index 0d6b564..aae32b3 100644 --- a/lib/views/Dashboard/pickups/sheet.dart +++ b/lib/views/Dashboard/pickups/sheet.dart @@ -138,7 +138,7 @@ class _PickupBottomSheetState extends State<_PickupBottomSheet> overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: color, fontFamily: FontConstants.fontFamily, @@ -253,7 +253,7 @@ class _PickupBottomSheetState extends State<_PickupBottomSheet> modeLabel, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: confirmColor, fontFamily: FontConstants.fontFamily, ), @@ -281,7 +281,7 @@ class _PickupBottomSheetState extends State<_PickupBottomSheet> : confirmLabel, style: TextStyle( fontSize: 19.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, fontFamily: FontConstants.fontFamily, color: ColorConstants.onSurface, ), @@ -383,7 +383,7 @@ class _PickupBottomSheetState extends State<_PickupBottomSheet> isDelivery ? 'Delivered' : 'Picked up', style: TextStyle( fontSize: 16.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, color: Colors.white, fontFamily: FontConstants.fontFamily, @@ -557,7 +557,7 @@ class _PickupBottomSheetState extends State<_PickupBottomSheet> overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 16.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: Colors.white, fontFamily: FontConstants.fontFamily, ), @@ -1306,7 +1306,7 @@ class _StopBrief extends StatelessWidget { style: TextStyle( color: ColorConstants.secondaryText, fontSize: 14.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, fontFamily: FontConstants.fontFamily, ), ), @@ -1322,7 +1322,7 @@ class _StopBrief extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 15.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -1345,7 +1345,7 @@ class _StopBrief extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -1387,7 +1387,7 @@ class _StopBrief extends StatelessWidget { kind.locationLabel, style: TextStyle( fontSize: 9.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.6, color: ColorConstants.primary, fontFamily: FontConstants.fontFamily, @@ -1401,7 +1401,7 @@ class _StopBrief extends StatelessWidget { style: TextStyle( fontSize: 13.sp, height: 1.35, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurfaceVariant, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/pickups/shipment_capture.dart b/lib/views/Dashboard/pickups/shipment_capture.dart index fcffff7..4568a72 100644 --- a/lib/views/Dashboard/pickups/shipment_capture.dart +++ b/lib/views/Dashboard/pickups/shipment_capture.dart @@ -8,6 +8,7 @@ import 'package:geolocator/geolocator.dart'; import 'package:miler/data/miler_api.dart'; import 'package:miler/views/helpers/constants/Colorconstants.dart'; +import 'package:miler/views/helpers/constants/miler_surface.dart'; import 'package:miler/views/helpers/constants/design_constants.dart'; import 'package:miler/views/helpers/constants/Font_constant.dart'; import 'package:miler/views/helpers/widgets/app_widgets.dart'; @@ -289,7 +290,7 @@ class _ShipmentCapturePageState extends State { @override Widget build(BuildContext context) { return Scaffold( - backgroundColor: ColorConstants.daylightSurface, + backgroundColor: MilerSurface.canvas, appBar: milerPageBar('Shipment details'), body: SafeArea( child: Column( @@ -331,7 +332,7 @@ class _ShipmentCapturePageState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -488,7 +489,7 @@ class _ShipmentCapturePageState extends State { label, style: TextStyle( fontSize: 10.5.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: 1.2, color: tint, fontFamily: FontConstants.fontFamily, @@ -533,7 +534,7 @@ class _ShipmentCapturePageState extends State { 'THE PARCEL', style: TextStyle( fontSize: 10.5.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: 1.2, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -597,7 +598,6 @@ class _ShipmentCapturePageState extends State { color: priced ? ColorConstants.tint(ColorConstants.acceptGreen, 0.06) : ColorConstants.pureSurface, - rail: priced ? ColorConstants.acceptGreen : null, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -613,7 +613,7 @@ class _ShipmentCapturePageState extends State { 'WHAT THE CUSTOMER PAYS', style: TextStyle( fontSize: 10.5.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: 1.2, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -631,7 +631,7 @@ class _ShipmentCapturePageState extends State { quote.currency, style: TextStyle( fontSize: 17.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.acceptGreen, fontFamily: FontConstants.fontFamily, ), @@ -645,7 +645,7 @@ class _ShipmentCapturePageState extends State { style: TextStyle( fontSize: 34.sp, height: 1.05, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: -1.2, color: ColorConstants.acceptGreen, fontFamily: FontConstants.fontFamily, @@ -661,7 +661,7 @@ class _ShipmentCapturePageState extends State { '${quote.maxPrice.toStringAsFixed(0)} · charging the lower', style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -697,7 +697,7 @@ class _ShipmentCapturePageState extends State { 'Getting the price…', style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -715,7 +715,7 @@ class _ShipmentCapturePageState extends State { 'Enter both pincodes and the weight to get a price.', style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -742,7 +742,7 @@ class _ShipmentCapturePageState extends State { label, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -752,7 +752,7 @@ class _ShipmentCapturePageState extends State { value, style: TextStyle( fontSize: emphasis ? 17.sp : 13.sp, - fontWeight: emphasis ? FontWeight.w800 : FontWeight.w600, + fontWeight: emphasis ? FontWeight.w900 : FontWeight.w700, color: emphasis ? ColorConstants.primary : ColorConstants.slateText, @@ -768,7 +768,7 @@ class _ShipmentCapturePageState extends State { note, style: TextStyle( fontSize: 10.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -798,7 +798,7 @@ class _ShipmentCapturePageState extends State { onChanged: (_) => setState(() {}), style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -807,10 +807,20 @@ class _ShipmentCapturePageState extends State { hintText: hint, prefixIcon: Icon(icon, size: 18.sp), filled: true, - fillColor: ColorConstants.pureSurface, + // ── A field on a white card needs a ground of its own ── + // + // This was `pureSurface` — white type on white inside a white card, + // separated from it by a hairline alone. It read as a line drawn on the + // card rather than as somewhere to type, and at arm's length in sun the + // hairline is the first thing to go. + // + // The canvas is the app's own "one step back from a surface" tone, so a + // field wearing it sits *in* the card the way a well does, and the + // hairline becomes the edge of a shape rather than the whole of it. + fillColor: MilerSurface.canvas, hintStyle: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -844,7 +854,7 @@ class _ShipmentCapturePageState extends State { label, style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -879,7 +889,7 @@ class _ShipmentCapturePageState extends State { v, style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: v == selected ? ColorConstants.onAccent : ColorConstants.slateText, diff --git a/lib/views/Dashboard/pickups/shipment_review.dart b/lib/views/Dashboard/pickups/shipment_review.dart index 579e0cf..a06afcf 100644 --- a/lib/views/Dashboard/pickups/shipment_review.dart +++ b/lib/views/Dashboard/pickups/shipment_review.dart @@ -3,6 +3,7 @@ import 'package:lucide_icons_flutter/lucide_icons.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:miler/views/helpers/constants/Colorconstants.dart'; +import 'package:miler/views/helpers/constants/miler_surface.dart'; import 'package:miler/views/helpers/constants/design_constants.dart'; import 'package:miler/views/helpers/constants/Font_constant.dart'; import 'package:miler/views/helpers/widgets/app_widgets.dart'; @@ -192,7 +193,14 @@ class _ShipmentReviewPageState extends State // Once the order exists, going back would offer to create it twice. canPop: !_created && !_busy, child: Scaffold( - backgroundColor: ColorConstants.daylightSurface, + // ── The canvas, not the old slate ── + // + // This was `daylightSurface` — #DEE3EA, the heavy grey the whole app + // used to sit on. The ground moved to a near-white canvas when cards + // took on a hairline and a lift (see [Narrative]); these screens kept + // the old value, so the flow a rider spends the most time in was the + // one place still showing dark bars between its sections. + backgroundColor: MilerSurface.canvas, appBar: _created ? null : milerPageBar('Review & pay'), body: SafeArea(child: _created ? _successView() : _reviewView()), ), @@ -306,7 +314,7 @@ class _ShipmentReviewPageState extends State label, style: TextStyle( fontSize: 10.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.6, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -317,7 +325,7 @@ class _ShipmentReviewPageState extends State address.isEmpty ? 'Not captured' : address, style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, height: 1.3, color: address.isEmpty ? ColorConstants.secondaryText @@ -332,7 +340,7 @@ class _ShipmentReviewPageState extends State tail, style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -403,7 +411,7 @@ class _ShipmentReviewPageState extends State 'Amount to collect', style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -413,7 +421,7 @@ class _ShipmentReviewPageState extends State _amountLabel, style: TextStyle( fontSize: 20.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: -0.4, color: ColorConstants.primary, fontFamily: FontConstants.fontFamily, @@ -434,9 +442,15 @@ class _ShipmentReviewPageState extends State duration: DesignConstants.motionState, padding: EdgeInsets.symmetric(vertical: 12.h), decoration: BoxDecoration( + // The unselected tile was `daylightSurface` — the old slate — so on a + // white card the option he has *not* chosen was the heaviest shape in + // the group, and the two read as one filled and one disabled rather + // than as a choice between two. Unselected is the card's own white + // with a hairline, which is how every other pair of options in this + // flow is drawn. color: selected ? ColorConstants.tint(ColorConstants.primary, 0.08) - : ColorConstants.daylightSurface, + : ColorConstants.pureSurface, borderRadius: BorderRadius.circular(DesignConstants.radiusLg), border: Border.all( color: selected @@ -459,7 +473,7 @@ class _ShipmentReviewPageState extends State m.label, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: selected ? ColorConstants.primary : ColorConstants.slateText, @@ -509,7 +523,7 @@ class _ShipmentReviewPageState extends State label, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -519,7 +533,7 @@ class _ShipmentReviewPageState extends State value.isEmpty ? '—' : value, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -533,7 +547,7 @@ class _ShipmentReviewPageState extends State note, style: TextStyle( fontSize: 10.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -624,7 +638,7 @@ class _ShipmentReviewPageState extends State textAlign: TextAlign.center, style: TextStyle( fontSize: 19.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: -0.4, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -638,7 +652,7 @@ class _ShipmentReviewPageState extends State textAlign: TextAlign.center, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -654,7 +668,9 @@ class _ShipmentReviewPageState extends State vertical: 10.h, ), decoration: BoxDecoration( - color: ColorConstants.daylightSurface, + // A well inside a white card, so it takes the canvas + // rather than the old slate the page used to sit on. + color: MilerSurface.canvas, borderRadius: BorderRadius.circular( DesignConstants.radiusFull, ), @@ -673,7 +689,7 @@ class _ShipmentReviewPageState extends State tracking, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.3, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, diff --git a/lib/views/Dashboard/pickups/skip_sheet.dart b/lib/views/Dashboard/pickups/skip_sheet.dart index 6023d3f..310dcc3 100644 --- a/lib/views/Dashboard/pickups/skip_sheet.dart +++ b/lib/views/Dashboard/pickups/skip_sheet.dart @@ -110,7 +110,7 @@ Future _showMyOptionsSheet( textAlign: TextAlign.center, style: TextStyle( fontSize: 20.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, color: ColorConstants.onSurface, ), @@ -150,7 +150,7 @@ Future _showMyOptionsSheet( "Proceeding will forfeit your bonus points for this session.", style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.rewardAmber, fontFamily: FontConstants.fontFamily, height: 1.3, diff --git a/lib/views/Dashboard/pickups/stop_type.dart b/lib/views/Dashboard/pickups/stop_type.dart index 70b4c3d..2decf83 100644 --- a/lib/views/Dashboard/pickups/stop_type.dart +++ b/lib/views/Dashboard/pickups/stop_type.dart @@ -270,6 +270,30 @@ extension StopKindUi on StopKind { StopKind.combined => 'PICKUP & DELIVERY', }; + /// One or two characters, for a rail row that has no room for a word. + /// + /// ── Why not [badgeLabel] at a smaller size ── + /// + /// The route's rail is a column of orders, and the thing the rider is asking + /// as he runs down it is "which of these am I collecting and which am I + /// handing over". `PICKUP & DELIVERY` set small enough to fit beside the + /// chevron is a word he has to *read*; `P&D` is a mark he recognises. At one + /// per row, down a list, the difference is the whole point of putting it + /// there. + /// + /// A line with one kind of work all day takes the first letter of its own + /// name, so a milk round reads `D` rather than borrowing the parcel line's + /// vocabulary — see [ServiceProfile.workTypeLabel]. + String get shortLabel { + final single = ServiceProfile.active.workTypeLabel; + if (single != null && single.isNotEmpty) return single[0].toUpperCase(); + return switch (this) { + StopKind.pickup => 'P', + StopKind.delivery => 'D', + StopKind.combined => 'P&D', + }; + } + /// Sentence-case name of the mode, for places that state it as a *label* /// rather than stamp it as a chip — see the handoff screen's next-stop block. /// diff --git a/lib/views/Dashboard/pickups/stop_verify.dart b/lib/views/Dashboard/pickups/stop_verify.dart index 96af406..389b57f 100644 --- a/lib/views/Dashboard/pickups/stop_verify.dart +++ b/lib/views/Dashboard/pickups/stop_verify.dart @@ -9,6 +9,7 @@ import 'package:image_picker/image_picker.dart'; import 'package:miler/data/service_profile.dart'; import 'package:miler/views/Dashboard/pickups/stop_type.dart'; import 'package:miler/views/helpers/constants/Colorconstants.dart'; +import 'package:miler/views/helpers/constants/miler_surface.dart'; import 'package:miler/views/helpers/constants/design_constants.dart'; import 'package:miler/views/helpers/constants/miler_type.dart'; import 'package:miler/views/helpers/constants/Font_constant.dart'; @@ -445,7 +446,14 @@ class _StopVerificationPageState extends State { // which on this screen is the difference between an address on two lines // and an address on three. child: Scaffold( - backgroundColor: ColorConstants.daylightSurface, + // ── The canvas, not the old slate ── + // + // This was `daylightSurface` — #DEE3EA, the heavy grey the whole app + // used to sit on. The ground moved to a near-white canvas when cards + // took on a hairline and a lift (see [Narrative]); these screens kept + // the old value, so the flow a rider spends the most time in was the + // one place still showing dark bars between its sections. + backgroundColor: MilerSurface.canvas, // ── The bar breathes, and its title is a title ── // // 17sp jammed against the status bar is a system default, not a @@ -600,7 +608,7 @@ class _StopVerificationPageState extends State { '${idx + 1}', style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: current ? Colors.white : ColorConstants.secondaryText, @@ -620,7 +628,7 @@ class _StopVerificationPageState extends State { style: TextStyle( fontSize: 10.5.sp, height: 1.2, - fontWeight: current ? FontWeight.w700 : FontWeight.w500, + fontWeight: current ? FontWeight.w800 : FontWeight.w600, color: past ? ColorConstants.acceptGreen : current @@ -687,7 +695,7 @@ class _StopVerificationPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: _kind.accent, fontFamily: FontConstants.fontFamily, ), @@ -703,7 +711,7 @@ class _StopVerificationPageState extends State { textAlign: TextAlign.right, style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.acceptGreen, fontFamily: FontConstants.fontFamily, ), @@ -718,7 +726,7 @@ class _StopVerificationPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 19.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.5, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -811,7 +819,7 @@ class _StopVerificationPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: accent, fontFamily: FontConstants.fontFamily, ), @@ -859,17 +867,14 @@ class _StopVerificationPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ _choiceGrid( - count: _Recipient.values.length, - chips: (width, lastWidth) => [ - for (final (i, r) in _Recipient.values.indexed) + chips: (width) => [ + for (final r in _Recipient.values) _choiceChip( label: r.label, icon: r.icon, selected: _recipient == r, accent: ColorConstants.deliveryAccent, - width: i == _Recipient.values.length - 1 - ? lastWidth - : width, + width: width, onTap: () => setState(() => _recipient = r), ), ], @@ -955,7 +960,7 @@ class _StopVerificationPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -974,7 +979,7 @@ class _StopVerificationPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.acceptGreen, fontFamily: FontConstants.fontFamily, ), @@ -1020,15 +1025,14 @@ class _StopVerificationPageState extends State { done: !_condition.needsNote, icon: LucideIcons.badgeCheck, child: _choiceGrid( - count: _Condition.values.length, - chips: (width, lastWidth) => [ - for (final (i, c) in _Condition.values.indexed) + chips: (width) => [ + for (final c in _Condition.values) _choiceChip( label: c.label, icon: c.icon, selected: _condition == c, accent: c.accent, - width: i == _Condition.values.length - 1 ? lastWidth : width, + width: width, onTap: () => setState(() => _condition = c), ), ], @@ -1149,7 +1153,7 @@ class _StopVerificationPageState extends State { '$_collected', style: TextStyle( fontSize: 30.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -1, height: 1.1, color: ColorConstants.slateText, @@ -1160,7 +1164,7 @@ class _StopVerificationPageState extends State { 'of $_expectedPickup booked', style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -1223,7 +1227,7 @@ class _StopVerificationPageState extends State { : 'Something is missing', style: TextStyle( fontSize: 19.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.5, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -1241,7 +1245,7 @@ class _StopVerificationPageState extends State { style: TextStyle( fontSize: 13.5.sp, height: 1.4, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -1375,7 +1379,7 @@ class _StopVerificationPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 11.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.8, color: accent, fontFamily: FontConstants.fontFamily, @@ -1419,7 +1423,7 @@ class _StopVerificationPageState extends State { done ? 'Complete' : 'Unfinished', style: TextStyle( fontSize: 10.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.2, color: color, fontFamily: FontConstants.fontFamily, @@ -1469,7 +1473,7 @@ class _StopVerificationPageState extends State { 'No proof photo — go back and take one', style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.warning, fontFamily: FontConstants.fontFamily, ), @@ -1524,7 +1528,7 @@ class _StopVerificationPageState extends State { 'Tap to enlarge', style: TextStyle( fontSize: 10.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: Colors.white, fontFamily: FontConstants.fontFamily, ), @@ -1649,7 +1653,7 @@ class _StopVerificationPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 11.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -1665,7 +1669,7 @@ class _StopVerificationPageState extends State { style: TextStyle( fontSize: 15.sp, height: 1.25, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: fact.mono ? 1.2 : -0.3, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -1715,7 +1719,7 @@ class _StopVerificationPageState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -1810,7 +1814,7 @@ class _StopVerificationPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -1943,7 +1947,6 @@ class _StopVerificationPageState extends State { // used to close with. See [MilerBand]. child: MilerBand( color: done ? _doneFill : ColorConstants.pureSurface, - rail: done ? ColorConstants.acceptGreen : null, padding: EdgeInsets.fromLTRB(_bandPad, 15.h, _bandPad, 17.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -1981,7 +1984,7 @@ class _StopVerificationPageState extends State { title, style: MilerType.body.copyWith( fontSize: 15.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.25, ), ), @@ -2022,7 +2025,7 @@ class _StopVerificationPageState extends State { 'Optional', style: TextStyle( fontSize: 11.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -2052,7 +2055,7 @@ class _StopVerificationPageState extends State { 'Required', style: TextStyle( fontSize: 9.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.3, color: ColorConstants.warning, fontFamily: FontConstants.fontFamily, @@ -2078,20 +2081,22 @@ class _StopVerificationPageState extends State { /// two-up grid leaves the third at half width on a line of its own, which /// looks like the grid ran out rather than like a row. The last one takes the /// full width instead, and the block reads as two deliberate rows. - Widget _choiceGrid({ - required int count, - required List Function(double width, double lastWidth) chips, - }) { + Widget _choiceGrid({required List Function(double width) chips}) { return LayoutBuilder( builder: (context, constraints) { const gap = 9.0; final full = constraints.maxWidth; final half = (full - gap) / 2; - return Wrap( - spacing: gap, - runSpacing: gap, - children: chips(half, count.isOdd ? full : half), - ); + // ── An odd last option keeps its column ── + // + // It used to stretch to the full width, and with three options that put + // the biggest target on the screen under `Damaged` — the rarest choice + // and the one with the worst consequence, drawn twice the size of + // `Sealed & intact`. Size is emphasis, and this set has no reason to + // emphasise its exception. + // + // A grid with an empty cell in the last row is what a grid looks like. + return Wrap(spacing: gap, runSpacing: gap, children: chips(half)); }, ); } @@ -2121,7 +2126,22 @@ class _StopVerificationPageState extends State { constraints: BoxConstraints(minHeight: 52.h), alignment: Alignment.centerLeft, decoration: BoxDecoration( - color: selected ? accent : ColorConstants.pureSurface, + // ── Selection is a tint and an edge, not a slab ── + // + // The chosen option was painted in the accent at full strength with + // white type on it. At 52pt tall and half the page wide that is not + // a selected option, it is a filled button — the heaviest object on + // a screen whose actual button is at the foot of it, and on a + // finished section it put a block of solid green inside a card that + // was already green. + // + // The accent at a tenth, under an edge of the accent itself, with + // the label in it. It is the treatment the payment tiles and the + // service chips in this same flow already use, so a rider learns + // "chosen looks like this" once. + color: selected + ? ColorConstants.tint(accent, 0.10) + : ColorConstants.pureSurface, borderRadius: BorderRadius.circular(DesignConstants.radiusLg), // An edge at rest. On the old grey panel a white chip separated // itself by fill alone; on a white page it has nothing to separate @@ -2129,7 +2149,7 @@ class _StopVerificationPageState extends State { // option the rider does not know he can press. border: Border.all( color: selected ? accent : ColorConstants.borderStrong, - width: 1.4, + width: selected ? 1.6 : 1.4, ), ), child: Row( @@ -2145,7 +2165,7 @@ class _StopVerificationPageState extends State { Icon( icon, size: 16.sp, - color: selected ? Colors.white : ColorConstants.secondaryText, + color: selected ? accent : ColorConstants.secondaryText, ), SizedBox(width: 7.w), // Flexible, not a bare Text. A [Wrap] hands every chip the full page @@ -2161,8 +2181,8 @@ class _StopVerificationPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, - color: selected ? Colors.white : ColorConstants.slateText, + fontWeight: selected ? FontWeight.w800 : FontWeight.w700, + color: selected ? accent : ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), ); @@ -2195,7 +2215,7 @@ class _StopVerificationPageState extends State { onChanged: (_) => setState(() {}), style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -2203,7 +2223,7 @@ class _StopVerificationPageState extends State { hintText: hint, hintStyle: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -2213,7 +2233,17 @@ class _StopVerificationPageState extends State { color: ColorConstants.secondaryText, ), filled: true, - fillColor: ColorConstants.pureSurface, + // ── A field on a white card needs a ground of its own ── + // + // This was `pureSurface` — white type on white inside a white card, + // separated from it by a hairline alone. It read as a line drawn on the + // card rather than as somewhere to type, and at arm's length in sun the + // hairline is the first thing to go. + // + // The canvas is the app's own "one step back from a surface" tone, so a + // field wearing it sits *in* the card the way a well does, and the + // hairline becomes the edge of a shape rather than the whole of it. + fillColor: MilerSurface.canvas, contentPadding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 13.h), // Outlined at rest, with the accent spent on the field the cursor is // in. This was borderless, which worked while the fill sat on a grey @@ -2313,7 +2343,7 @@ class _StopVerificationPageState extends State { 'Take photo', style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: accent, fontFamily: FontConstants.fontFamily, ), @@ -2330,10 +2360,12 @@ class _StopVerificationPageState extends State { margin: EdgeInsets.symmetric(horizontal: _bandPad), padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 11.h), decoration: BoxDecoration( + // Tinted *onto the card it sits on*. Mixed against the old page slate + // it came out darker than its own surface, which reads as a hole. color: ColorConstants.tint( accent, 0.10, - on: ColorConstants.daylightSurface, + on: ColorConstants.pureSurface, ), borderRadius: BorderRadius.circular(DesignConstants.radiusLg), ), @@ -2347,7 +2379,7 @@ class _StopVerificationPageState extends State { style: TextStyle( fontSize: 12.sp, height: 1.35, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: accent, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/profile/Profilepage.dart b/lib/views/Dashboard/profile/Profilepage.dart index bea2099..001f126 100644 --- a/lib/views/Dashboard/profile/Profilepage.dart +++ b/lib/views/Dashboard/profile/Profilepage.dart @@ -533,7 +533,7 @@ class _ProfilePageState extends State { Text( '·', style: MilerType.label.copyWith( - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.borderStrong, ), ), @@ -745,7 +745,7 @@ class _ProfilePageState extends State { 'Retry', style: MilerType.micro .on(ColorConstants.primary) - .copyWith(fontWeight: FontWeight.w700), + .copyWith(fontWeight: FontWeight.w800), ), ), ), diff --git a/lib/views/Dashboard/profile/informations/faq.dart b/lib/views/Dashboard/profile/informations/faq.dart index 9dec6f1..be454a5 100644 --- a/lib/views/Dashboard/profile/informations/faq.dart +++ b/lib/views/Dashboard/profile/informations/faq.dart @@ -175,7 +175,7 @@ class _FaqPageState extends State { onChanged: (v) => setState(() => _query = v), style: TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -234,7 +234,7 @@ class _FaqPageState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -267,7 +267,7 @@ class _FaqPageState extends State { 'Still stuck?', style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -331,7 +331,7 @@ class _FaqTileState extends State<_FaqTile> { widget.faq.question, style: TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, height: 1.35, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, diff --git a/lib/views/Dashboard/profile/informations/help_center.dart b/lib/views/Dashboard/profile/informations/help_center.dart index ea6cf28..c50b816 100644 --- a/lib/views/Dashboard/profile/informations/help_center.dart +++ b/lib/views/Dashboard/profile/informations/help_center.dart @@ -90,7 +90,7 @@ class HelpCenter extends StatelessWidget { 'How can we help?', style: TextStyle( fontSize: 20.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.4, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, @@ -220,7 +220,7 @@ class _HelpCenterMessageState extends State { 'What has happened?', style: TextStyle( fontSize: 16.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -282,7 +282,7 @@ class _HelpCenterMessageState extends State { text, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -302,7 +302,7 @@ class _HelpCenterMessageState extends State { validator: validator, style: TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/profile/informations/notifications_page.dart b/lib/views/Dashboard/profile/informations/notifications_page.dart index 5782fb6..38af646 100644 --- a/lib/views/Dashboard/profile/informations/notifications_page.dart +++ b/lib/views/Dashboard/profile/informations/notifications_page.dart @@ -118,7 +118,7 @@ class _NotificationsPageState extends State { 'Clear notifications?', style: TextStyle( fontSize: 17.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -140,7 +140,7 @@ class _NotificationsPageState extends State { 'Cancel', style: TextStyle( color: ColorConstants.onSurfaceVariant, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, fontFamily: FontConstants.fontFamily, ), ), @@ -151,7 +151,7 @@ class _NotificationsPageState extends State { 'Clear', style: TextStyle( color: ColorConstants.primary, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, ), ), @@ -181,7 +181,7 @@ class _NotificationsPageState extends State { 'Clear', style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.primary, fontFamily: FontConstants.fontFamily, ), @@ -329,7 +329,7 @@ class _NotificationRow extends StatelessWidget { title, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, height: 1.3, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, @@ -341,7 +341,7 @@ class _NotificationRow extends StatelessWidget { time, style: TextStyle( fontSize: 11.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurfaceVariant, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/profile/informations/order_alert_sound.dart b/lib/views/Dashboard/profile/informations/order_alert_sound.dart index cf98c00..969c493 100644 --- a/lib/views/Dashboard/profile/informations/order_alert_sound.dart +++ b/lib/views/Dashboard/profile/informations/order_alert_sound.dart @@ -167,7 +167,7 @@ class _OrderAlertSoundPageState extends State { _currentLabel, style: TextStyle( fontSize: 16.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/profile/informations/profile.dart b/lib/views/Dashboard/profile/informations/profile.dart index ff469e3..bd271cd 100644 --- a/lib/views/Dashboard/profile/informations/profile.dart +++ b/lib/views/Dashboard/profile/informations/profile.dart @@ -155,7 +155,7 @@ class _ProfileState extends State { 'Change Photo', style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.primary, fontFamily: FontConstants.fontFamily, ), @@ -333,7 +333,7 @@ class _ProfileState extends State { label, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurface, letterSpacing: 0.2, fontFamily: FontConstants.fontFamily, @@ -347,7 +347,7 @@ class _ProfileState extends State { keyboardType: keyboardType, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: readOnly ? ColorConstants.onSurfaceVariant : ColorConstants.onSurface, @@ -358,7 +358,7 @@ class _ProfileState extends State { prefixText: prefix, prefixStyle: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/profile/informations/rider_rewards_page.dart b/lib/views/Dashboard/profile/informations/rider_rewards_page.dart index 1ffb3ef..b775cb2 100644 --- a/lib/views/Dashboard/profile/informations/rider_rewards_page.dart +++ b/lib/views/Dashboard/profile/informations/rider_rewards_page.dart @@ -177,7 +177,7 @@ class _RiderRewardsPageState extends State { '${s.tier.label} status', style: TextStyle( fontSize: 18.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, color: Colors.white, fontFamily: FontConstants.fontFamily, @@ -189,7 +189,7 @@ class _RiderRewardsPageState extends State { '$daysLeft ${daysLeft == 1 ? 'day' : 'days'} left', style: TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: Colors.white.withValues(alpha: 0.78), fontFamily: FontConstants.fontFamily, ), @@ -205,7 +205,7 @@ class _RiderRewardsPageState extends State { loading ? '—' : '${s.points}', style: TextStyle( fontSize: 30.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: -1, height: 1, color: Colors.white, @@ -217,7 +217,7 @@ class _RiderRewardsPageState extends State { 'points', style: TextStyle( fontSize: 11.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: 0.4, color: Colors.white.withValues(alpha: 0.78), fontFamily: FontConstants.fontFamily, @@ -244,7 +244,7 @@ class _RiderRewardsPageState extends State { '${s.nextTier!.label}', style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: Colors.white, fontFamily: FontConstants.fontFamily, ), @@ -297,8 +297,8 @@ class _RiderRewardsPageState extends State { style: TextStyle( fontSize: 10.5.sp, fontWeight: tier == s.tier - ? FontWeight.w700 - : FontWeight.w500, + ? FontWeight.w800 + : FontWeight.w600, color: tier == s.tier ? ColorConstants.primary : ColorConstants.secondaryText, @@ -309,7 +309,7 @@ class _RiderRewardsPageState extends State { '${tier.threshold}', style: TextStyle( fontSize: 9.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -404,7 +404,7 @@ class _RiderRewardsPageState extends State { 'cleared both checks', style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -447,7 +447,7 @@ class _RiderRewardsPageState extends State { style: TextStyle( fontSize: 11.5.sp, height: 1.4, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -539,7 +539,7 @@ class _RiderRewardsPageState extends State { style: TextStyle( fontSize: 11.5.sp, height: 1.45, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -555,7 +555,7 @@ class _RiderRewardsPageState extends State { text, style: TextStyle( fontSize: 11.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.8, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -565,7 +565,7 @@ class _RiderRewardsPageState extends State { TextStyle get _bodyStyle => TextStyle( fontSize: 12.5.sp, height: 1.45, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ); @@ -627,7 +627,7 @@ class _RiderRewardsPageState extends State { '$score%', style: TextStyle( fontSize: 18.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: -0.5, height: 1, color: accent, @@ -639,7 +639,7 @@ class _RiderRewardsPageState extends State { 'SCORE', style: TextStyle( fontSize: 8.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.6, height: 1, color: accent, @@ -670,7 +670,7 @@ class _RiderRewardsPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -687,7 +687,7 @@ class _RiderRewardsPageState extends State { style: TextStyle( fontSize: 11.5.sp, height: 1.35, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -728,7 +728,7 @@ class _RiderRewardsPageState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -739,7 +739,7 @@ class _RiderRewardsPageState extends State { '$hit/$total · $percent%', style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: accent, fontFamily: FontConstants.fontFamily, @@ -810,7 +810,7 @@ class _RiderRewardsPageState extends State { title, style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, diff --git a/lib/views/Dashboard/profile/informations/saved_address.dart b/lib/views/Dashboard/profile/informations/saved_address.dart index 98b6371..abfb69d 100644 --- a/lib/views/Dashboard/profile/informations/saved_address.dart +++ b/lib/views/Dashboard/profile/informations/saved_address.dart @@ -117,7 +117,7 @@ class _SavedAddressPageState extends State { 'Edit', style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.primary, fontFamily: FontConstants.fontFamily, ), @@ -187,7 +187,7 @@ class _SavedAddressPageState extends State { 'Home address', style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -233,7 +233,7 @@ class _SavedAddressPageState extends State { 'Home address', style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -249,7 +249,7 @@ class _SavedAddressPageState extends State { style: TextStyle( fontSize: 15.sp, height: 1.45, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -298,7 +298,7 @@ class _SavedAddressPageState extends State { 'Cancel', style: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurfaceVariant, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/Dashboard/summary/summary.dart b/lib/views/Dashboard/summary/summary.dart index affd2bc..ff26f6d 100644 --- a/lib/views/Dashboard/summary/summary.dart +++ b/lib/views/Dashboard/summary/summary.dart @@ -203,7 +203,7 @@ class _SummaryState extends State

{ _periods[index], style: TextStyle( fontSize: 13.sp, - fontWeight: isSelected ? FontWeight.w700 : FontWeight.w500, + fontWeight: isSelected ? FontWeight.w800 : FontWeight.w600, letterSpacing: -0.1, color: isSelected ? Narrative.burgundy : Narrative.inkMuted, fontFamily: FontConstants.fontFamily, @@ -282,7 +282,7 @@ class _SummaryState extends State { style: TextStyle( color: Colors.white.withValues(alpha: 0.85), fontSize: 12.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: 0.2, fontFamily: FontConstants.fontFamily, ), @@ -412,7 +412,7 @@ class _SummaryState extends State { style: TextStyle( color: Colors.white, fontSize: 17.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, fontFamily: FontConstants.fontFamily, ), @@ -425,7 +425,7 @@ class _SummaryState extends State { // ten points is decoration; the tile is worthless without it. color: Colors.white.withValues(alpha: 0.78), fontSize: 12.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, ), ), @@ -469,7 +469,7 @@ class _SummaryState extends State { 'LIFETIME', style: TextStyle( fontSize: 11.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 1.0, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -539,7 +539,7 @@ class _SummaryState extends State { value, style: TextStyle( fontSize: 20.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.6, height: 1.05, color: ColorConstants.slateText, @@ -554,7 +554,7 @@ class _SummaryState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -685,7 +685,7 @@ class _TotalDistanceCardState extends State { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, ), @@ -805,7 +805,7 @@ class _TotalDistanceCardState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: 14.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), @@ -817,7 +817,7 @@ class _TotalDistanceCardState extends State { style: TextStyle( fontSize: 12.5.sp, height: 1.4, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -872,7 +872,7 @@ class _TotalDistanceCardState extends State { '${rod.toY.toStringAsFixed(1)} km', TextStyle( color: Colors.white, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontSize: 12.sp, fontFamily: FontConstants.fontFamily, ), @@ -923,8 +923,8 @@ class _TotalDistanceCardState extends State { style: TextStyle( fontSize: 11.sp, fontWeight: isTouched - ? FontWeight.w700 - : FontWeight.w500, + ? FontWeight.w800 + : FontWeight.w600, color: isTouched ? ColorConstants.primary : ColorConstants.onSurfaceVariant, @@ -1014,7 +1014,7 @@ class _TotalDistanceCardState extends State { value, style: TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: color, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/helpers/constants/Colorconstants.dart b/lib/views/helpers/constants/Colorconstants.dart index 8c24d09..9d4d679 100644 --- a/lib/views/helpers/constants/Colorconstants.dart +++ b/lib/views/helpers/constants/Colorconstants.dart @@ -37,6 +37,19 @@ class ColorConstants { static const Color surfaceTint = Color(0xFF960019); // Primary Red + /// ── The app bar's own red ── + /// + /// The brand bar is painted in a two-stop gradient, and these are its stops. + /// They were literals inside `home_header.dart`, which was fine while the bar + /// was the only thing wearing them — Home's trip panel wears the same red + /// now, and a panel that is *nearly* the app bar's colour reads as a mistake + /// rather than as a family. One definition, so they cannot drift apart. + /// + /// Not [primary]: that is the accent the app draws buttons and rules in, and + /// it is a cooler, deeper crimson. The bar has always been this warmer brick. + static const Color brandBarTop = Color(0xFFA51C1C); + static const Color brandBarBottom = Color(0xFF8B1A1A); + static const Color primary = Color(0xFF960019); static const Color onPrimary = Color(0xFFFFFFFF); static const Color primaryContainer = Color(0xFFC01227); diff --git a/lib/views/helpers/constants/Font_constant.dart b/lib/views/helpers/constants/Font_constant.dart index 175d3ec..1ef8cfa 100644 --- a/lib/views/helpers/constants/Font_constant.dart +++ b/lib/views/helpers/constants/Font_constant.dart @@ -3,41 +3,26 @@ import 'package:flutter/material.dart'; class FontConstants { /// ── The app's typeface ── /// - /// Poppins: geometric, OFL-licensed, and the one every screen now reads from. - /// It replaced Manrope, which was itself a stand-in for Uber Move. + /// Manrope: a free, OFL-licensed geometric sans, bundled as a single + /// variable font (`assets/fonts/Manrope/Manrope-VF.ttf`) and chosen as the + /// closest legal stand-in for Uber Move, which is proprietary. /// - /// **Read this before changing it.** The family was already declared in - /// `pubspec.yaml` as `poppins`, with a lowercase path on every one of its - /// seven assets, while the files on disk are `assets/fonts/Poppins/Poppins-*`. - /// Asset bundling is case-sensitive on both platforms, so not one of them - /// resolved: anything asking for the family fell back to Roboto and no error - /// was raised anywhere. The declaration is fixed and all seven static weights - /// are registered — Poppins ships as separate files rather than a variable - /// font, and without explicit 800/900 entries Flutter synthesises them by - /// smearing SemiBold, which is what makes a heading look muddy at exactly the - /// size it is meant to be read from. - /// ── The weight scale is calibrated for THIS family ── + /// **Poppins was tried here and reverted.** It is declared in `pubspec.yaml` + /// and its seven static weights do resolve, so it is one string away if it is + /// ever wanted again — but it runs optically far heavier than Manrope at + /// every grade: geometric, wide bowls, thick stems. Swapping the family + /// alone turned the whole app bold, headings especially, and stepping the + /// weight scale down a grade to compensate was not enough to undo it. /// - /// Poppins runs optically heavier than Manrope at every grade: it is - /// geometric, its bowls are wide and its stems thick, so `w800` here is far - /// darker on the page than `w800` was in a variable Manrope. The whole scale - /// was tuned against Manrope and came across a grade too heavy — headings - /// read as shouting and body copy as bold. - /// - /// Every weight in `lib/` (outside `lib/xpress`, which is Proxima Nova) was - /// stepped down one grade: 900→800, 800→700, 700→600, 600→500. The *relative* - /// hierarchy is untouched — each level is still one step from its neighbour — - /// so nothing lost its rank; the whole run just sits where it should for this - /// typeface. - /// - /// **If the family changes again, re-tune this.** A weight is a number, not a - /// design: what it looks like belongs to the font. - static const String fontFamily = 'Poppins'; + /// **The weight scale below is calibrated for THIS family.** If the family + /// changes again, re-tune it — a weight is a number, not a design; what it + /// looks like belongs to the font. + static const String fontFamily = 'Manrope'; - /// Only ever reached for a glyph Poppins does not carry. Manrope covers the + /// Only ever reached for a glyph Manrope does not carry. Manrope covers the /// Latin and currency sets the app uses, so this is a safety net rather than /// a second typeface in the design. - static String fontFamilyFallback = 'Manrope'; + static String fontFamilyFallback = 'PlusJakartaSans'; // Typography scale static const double displayLg = 32.0; @@ -50,21 +35,21 @@ class FontConstants { static TextStyle displayLgStyle = const TextStyle( fontSize: 32, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.64, fontFamily: fontFamily, ); static TextStyle headlineMdStyle = const TextStyle( fontSize: 24, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.24, fontFamily: fontFamily, ); static TextStyle headlineSmStyle = const TextStyle( fontSize: 20, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, letterSpacing: -0.2, fontFamily: fontFamily, ); @@ -83,7 +68,7 @@ class FontConstants { static TextStyle labelBoldStyle = const TextStyle( fontSize: 14, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: fontFamily, ); diff --git a/lib/views/helpers/constants/app_theme.dart b/lib/views/helpers/constants/app_theme.dart index 3416e0e..59eed49 100644 --- a/lib/views/helpers/constants/app_theme.dart +++ b/lib/views/helpers/constants/app_theme.dart @@ -36,13 +36,10 @@ class AppTheme { }, ), fontFamily: FontConstants.fontFamily, - // Manrope first: it is bundled, so its coverage is guaranteed on every - // device, and it is what backs Poppins up for anything Poppins does not - // carry. The platform families behind it are the last resort. Poppins is - // missing U+2192 among others — a glyph the app no longer renders as a - // character, but the net belongs here rather than in a rule nobody - // remembers. - fontFamilyFallback: const ['Manrope', 'Roboto', 'sans-serif'], + // Manrope is the family above and is bundled, so its coverage is + // guaranteed on every device; these are only reached for a glyph it does + // not carry, and the platform families are the last resort. + fontFamilyFallback: const ['Roboto', 'sans-serif'], textTheme: ThemeData.light().textTheme.apply( fontFamily: FontConstants.fontFamily, ), @@ -116,7 +113,7 @@ class AppTheme { ), textStyle: const TextStyle( fontSize: 16, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, ), ), @@ -153,7 +150,7 @@ class AppTheme { ), textStyle: const TextStyle( fontSize: 15, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, ), ), @@ -162,7 +159,7 @@ class AppTheme { style: TextButton.styleFrom( foregroundColor: _primary, textStyle: const TextStyle( - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, fontFamily: FontConstants.fontFamily, ), ), diff --git a/lib/views/helpers/constants/miler_type.dart b/lib/views/helpers/constants/miler_type.dart index 33f23fb..937734b 100644 --- a/lib/views/helpers/constants/miler_type.dart +++ b/lib/views/helpers/constants/miler_type.dart @@ -64,7 +64,7 @@ class MilerType { /// The one thing a screen is about. One per screen, or none. static TextStyle get hero => TextStyle( fontSize: 28.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.9, height: 1.08, color: ColorConstants.slateText, @@ -74,7 +74,7 @@ class MilerType { /// App bar titles and sheet headings. static TextStyle get pageTitle => TextStyle( fontSize: 22.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.6, height: 1.15, color: ColorConstants.slateText, @@ -84,7 +84,7 @@ class MilerType { /// A stop name in a list, a section heading inside a screen. static TextStyle get cardTitle => TextStyle( fontSize: 19.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.4, height: 1.2, color: ColorConstants.slateText, @@ -94,7 +94,7 @@ class MilerType { /// Addresses, running copy, the title line of a compact row. static TextStyle get body => TextStyle( fontSize: 16.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, letterSpacing: -0.2, height: 1.35, color: ColorConstants.slateText, @@ -105,7 +105,7 @@ class MilerType { /// explains, and explanation is secondary to the thing being explained. static TextStyle get caption => TextStyle( fontSize: 15.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, height: 1.4, color: ColorConstants.secondaryText, fontFamily: _family, @@ -114,7 +114,7 @@ class MilerType { /// Metadata, timestamps, chip text, the second line of a row. static TextStyle get label => TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, height: 1.35, color: ColorConstants.secondaryText, fontFamily: _family, @@ -124,7 +124,7 @@ class MilerType { /// expected to be read outdoors. static TextStyle get micro => TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, height: 1.3, color: ColorConstants.secondaryText, fontFamily: _family, @@ -134,7 +134,7 @@ class MilerType { /// the reason most groups in this app need no outline. static TextStyle get eyebrow => TextStyle( fontSize: 11.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 1.2, height: 1.3, color: ColorConstants.secondaryText, @@ -150,7 +150,7 @@ class MilerType { /// number, resolved without `.sp`. static const TextStyle pageTitleFixed = TextStyle( fontSize: 22, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.6, height: 1.15, color: ColorConstants.slateText, @@ -165,7 +165,7 @@ class MilerType { /// them lines up. static TextStyle figure(double size, {Color? color}) => TextStyle( fontSize: size.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, height: 1.1, fontFeatures: const [FontFeature.tabularFigures()], @@ -183,7 +183,7 @@ class MilerType { ? 15 : 14) .sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.1, color: ColorConstants.onAccent, fontFamily: _family, @@ -198,7 +198,7 @@ class MilerType { extension MilerTypeTint on TextStyle { TextStyle on(Color color) => copyWith(color: color); - TextStyle get bold => copyWith(fontWeight: FontWeight.w700); + TextStyle get bold => copyWith(fontWeight: FontWeight.w800); - TextStyle get semibold => copyWith(fontWeight: FontWeight.w600); + TextStyle get semibold => copyWith(fontWeight: FontWeight.w700); } diff --git a/lib/views/helpers/widgets/app_widgets.dart b/lib/views/helpers/widgets/app_widgets.dart index 2a02b1f..8d20ede 100644 --- a/lib/views/helpers/widgets/app_widgets.dart +++ b/lib/views/helpers/widgets/app_widgets.dart @@ -9,6 +9,7 @@ import 'package:get/get.dart'; import 'package:shimmer/shimmer.dart'; import 'package:miler/Models/stop_status.dart'; +import 'package:miler/views/helpers/constants/narrative.dart'; import 'package:miler/views/helpers/constants/miler_type.dart'; import 'package:miler/views/helpers/widgets/miler_app_bar.dart' show milerBrandSurface; @@ -64,10 +65,6 @@ class MilerBand extends StatelessWidget { /// translucent wash is the wrong tool for a surface. final Color? color; - /// An accent stripe down the leading edge, for a band whose state has to - /// read without being examined. Null draws no stripe and no inset. - final Color? rail; - /// Overrides the standard inset. Pass only where the child owns its own /// horizontal padding — a row that has to bleed to the band's edge. final EdgeInsets? padding; @@ -76,21 +73,36 @@ class MilerBand extends StatelessWidget { super.key, required this.child, this.color, - this.rail, this.padding, }); /// The inset a band keeps around its content. /// - /// One number for the whole app. With the bands running edge to edge, their - /// padding is the only thing left aligning the page's left margin — two - /// bands a couple of points apart is exactly how a column of text stops - /// looking like a column. - static double get pad => 20.w; + /// One number for the whole app: two bands a couple of points apart is + /// exactly how a column of text stops looking like a column. + static double get pad => 18.w; - /// The gap of page ground between one band and the next. This is the only - /// separator a band has, so it is a real gap rather than a hairline. - static double get gap => 10.h; + /// The page margin the band sits in. + /// + /// ── Bands used to run edge to edge, and the page paid for it ── + /// + /// A full-bleed band has no shape of its own, so the only thing separating + /// one from the next was a [gap] of bare page showing through — which turned + /// the ground into a set of stripes between the content. On the old slate + /// canvas those stripes were dark grey bars, and the screen read as a stack + /// of unrelated slabs rather than as a form. + /// + /// A band is a card now: inset from both edges, rounded, on a hairline and a + /// soft lift. The gap between two of them is air rather than a bar, and the + /// page's left margin is the card's edge instead of the padding inside it. + static double get gutter => 14.w; + + /// The air between one band and the next. + static double get gap => 12.h; + + /// The corner. Sections of a form, so a little tighter than a page-level + /// panel — see [Narrative.radiusCard], which is the shape Home's cards take. + static double get radius => Narrative.radiusInner; @override Widget build(BuildContext context) { @@ -102,14 +114,16 @@ class MilerBand extends StatelessWidget { duration: DesignConstants.motionState, curve: Curves.easeOut, width: double.infinity, + margin: EdgeInsets.symmetric(horizontal: gutter), padding: padding ?? EdgeInsets.symmetric(horizontal: pad, vertical: 16.h), decoration: BoxDecoration( color: color ?? ColorConstants.pureSurface, - border: rail == null - ? null - : Border( - left: BorderSide(color: rail!, width: 3.w), - ), + borderRadius: BorderRadius.circular(radius), + // The hairline and the lift together, the same recipe every other card + // in the app is built on — so a form section and a panel on Home read + // as the same kind of object. See [Narrative.cardBox]. + border: Border.all(color: Narrative.cardBorder, width: 1), + boxShadow: Narrative.cardShadow, ), child: child, ); @@ -261,7 +275,7 @@ class PrimaryButton extends StatelessWidget { maxLines: 1, style: const TextStyle( fontSize: 16, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, ), ), @@ -324,7 +338,7 @@ class SecondaryButton extends StatelessWidget { style: TextStyle( color: c, fontSize: 14, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, ), ), @@ -370,7 +384,7 @@ class StatusChip extends StatelessWidget { style: TextStyle( color: color, fontSize: 12, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, fontFamily: FontConstants.fontFamily, ), ), @@ -440,7 +454,7 @@ class SectionHeader extends StatelessWidget { maxLines: 1, style: TextStyle( fontSize: 18, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, letterSpacing: -0.2, color: ColorConstants.onSurface, fontFamily: FontConstants.fontFamily, @@ -456,7 +470,7 @@ class SectionHeader extends StatelessWidget { action!, style: TextStyle( fontSize: 14, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.primary, fontFamily: FontConstants.fontFamily, ), @@ -540,7 +554,7 @@ class InfoBanner extends StatelessWidget { color: color, fontSize: 13, height: 1.35, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, fontFamily: FontConstants.fontFamily, ), ), @@ -722,7 +736,7 @@ class AppLoader extends StatelessWidget { label!, style: TextStyle( fontSize: 13, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.onSurfaceVariant, fontFamily: FontConstants.fontFamily, ), @@ -1629,7 +1643,7 @@ class MilerButton extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: fontSize, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.1, color: fg, fontFamily: FontConstants.fontFamily, @@ -2042,7 +2056,7 @@ class StopSourceLine extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 11.5, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.1, color: accent, fontFamily: FontConstants.fontFamily, @@ -2063,7 +2077,7 @@ class StopSourceLine extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 11.5, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, // Tabular, because these are read as codes and a column of // them down a list should line up. fontFeatures: const [FontFeature.tabularFigures()], @@ -2124,7 +2138,7 @@ class OrderStatusTag extends StatelessWidget { overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 11.5, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.1, color: color, fontFamily: FontConstants.fontFamily, diff --git a/lib/views/helpers/widgets/load_state_view.dart b/lib/views/helpers/widgets/load_state_view.dart index 244b6a2..31c8b8a 100644 --- a/lib/views/helpers/widgets/load_state_view.dart +++ b/lib/views/helpers/widgets/load_state_view.dart @@ -143,7 +143,7 @@ class _Message extends StatelessWidget { textAlign: TextAlign.center, style: TextStyle( fontSize: 17.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.3, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -156,7 +156,7 @@ class _Message extends StatelessWidget { style: TextStyle( fontSize: 14.sp, height: 1.45, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -172,7 +172,7 @@ class _Message extends StatelessWidget { 'Try again', style: TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, fontFamily: FontConstants.fontFamily, ), ), diff --git a/lib/views/helpers/widgets/miler_app_bar.dart b/lib/views/helpers/widgets/miler_app_bar.dart index de86cc3..f0bfb29 100644 --- a/lib/views/helpers/widgets/miler_app_bar.dart +++ b/lib/views/helpers/widgets/miler_app_bar.dart @@ -319,7 +319,7 @@ class MilerAvatar extends StatelessWidget { // Fixed .sp off a fixed box: the circle does not grow with // the system font scale, so neither can the letter inside it. fontSize: 19.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, height: 1, color: onBrand ? ColorConstants.primary diff --git a/lib/views/helpers/widgets/miler_map.dart b/lib/views/helpers/widgets/miler_map.dart index 16ef9cd..d5d4f31 100644 --- a/lib/views/helpers/widgets/miler_map.dart +++ b/lib/views/helpers/widgets/miler_map.dart @@ -149,7 +149,7 @@ class _MilerAttribution extends StatelessWidget { '© OpenStreetMap', style: TextStyle( fontSize: 9, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, ), @@ -345,7 +345,7 @@ class MilerNumberPin extends StatelessWidget { style: const TextStyle( fontSize: 14, height: 1, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: Colors.white, fontFamily: FontConstants.fontFamily, ), @@ -512,14 +512,102 @@ class _MilerLegMapState extends State { } } + /// How many times to ask for the road before settling for the bearing. + /// + /// ── Why one attempt was never enough ── + /// + /// `route()` answers an empty list for every failure — a 429, a cold DNS + /// lookup that outran the timeout, a tunnel — and this asked exactly once, + /// from `initState`. The only other trigger is `didUpdateWidget`, and it + /// fires on a change of *endpoint*: a rider standing at a door changes + /// neither. So a single unlucky moment at the instant the sheet opened left + /// `_road` empty for as long as the sheet stayed open, and the leg drew as a + /// dashed straight line across a route the router would have returned a + /// second later. That is the "it shows a straight line, not the real route" + /// report, and it is a retry bug rather than a routing one — the public OSRM + /// server answers this leg in under a second when asked again. + /// + /// Three tries with a widening gap. Cheap, bounded, and it costs nothing at + /// all in the normal case where the first answer is the road. + static const int _routeAttempts = 3; + static const Duration _retryBackoff = Duration(milliseconds: 700); + + /// Distinguishes a stale in-flight request from the current one, so a leg + /// that changed while the network was slow cannot have the previous leg's + /// road painted onto it when the old request finally lands. + int _fetchGeneration = 0; + + /// ── The backoff has to be cancellable, not just ignored ── + /// + /// A bare `Future.delayed` checks `mounted` on the far side of the wait, which + /// is too late for the one observer that counts: the timer is still pending + /// when the tree goes, and Flutter's test binding asserts on exactly that — + /// *"A Timer is still pending even after the widget tree was disposed"*. It + /// failed 15 tests that open this sheet and dispose it inside the retry gap. + /// + /// Off a test bench it is the same leak in slower motion: a rider flicking + /// through six stops leaves six timers running against six dead widgets. + /// + /// So the wait is a [Timer] this state owns and [dispose] cancels — and + /// disposing also completes the pending waiter, so the retry loop wakes, + /// sees `!mounted`, and unwinds instead of parking forever on a future + /// nothing will ever finish. + Timer? _retryTimer; + Completer? _retryWait; + + @override + void dispose() { + _retryTimer?.cancel(); + _retryTimer = null; + final waiter = _retryWait; + _retryWait = null; + if (waiter != null && !waiter.isCompleted) waiter.complete(); + super.dispose(); + } + + /// A cancellable [Future.delayed]. See [_retryTimer]. + Future _wait(Duration d) { + final completer = Completer(); + _retryWait = completer; + _retryTimer = Timer(d, () { + _retryTimer = null; + if (identical(_retryWait, completer)) _retryWait = null; + if (!completer.isCompleted) completer.complete(); + }); + return completer.future; + } + Future _fetchRoad() async { final from = widget.from; if (from == null) return; - final road = await MilerRouter.route(from, widget.to); - if (!mounted || road.isEmpty) return; - setState(() => _road = road); - // The road can bulge outside the straight-line bounds; refit around it. - _fit(); + final to = widget.to; + final generation = ++_fetchGeneration; + + for (var attempt = 1; attempt <= _routeAttempts; attempt++) { + final road = await MilerRouter.route(from, to); + // Superseded, or gone from the tree, while the request was in flight. + if (!mounted || generation != _fetchGeneration) return; + + if (road.isNotEmpty) { + setState(() => _road = road); + // The road can bulge outside the straight-line bounds; refit around it. + _fit(); + return; + } + + if (attempt < _routeAttempts) { + await _wait(_retryBackoff * attempt); + if (!mounted || generation != _fetchGeneration) return; + } + } + + // Says which leg gave up, so a rider reporting a dashed line can be matched + // against the `[MAP] OSRM …` line that explains why. + debugPrint( + '[MAP] no road after $_routeAttempts attempts for ' + '${from.latitude},${from.longitude} -> ${to.latitude},${to.longitude} — ' + 'drawing the dashed bearing instead.', + ); } void _fit() { diff --git a/lib/views/helpers/widgets/miler_sheet_kit.dart b/lib/views/helpers/widgets/miler_sheet_kit.dart index 280348b..d0b1f0e 100644 --- a/lib/views/helpers/widgets/miler_sheet_kit.dart +++ b/lib/views/helpers/widgets/miler_sheet_kit.dart @@ -209,7 +209,7 @@ class MilerSheetHeader extends StatelessWidget { title, style: TextStyle( fontSize: 18.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.45, height: 1.2, color: ColorConstants.slateText, @@ -222,7 +222,7 @@ class MilerSheetHeader extends StatelessWidget { subtitle!, style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, height: 1.35, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -337,8 +337,8 @@ class MilerSheetChoiceRow extends StatelessWidget { color: selected ? accent : ColorConstants.slateText, fontFamily: FontConstants.fontFamily, fontWeight: selected - ? FontWeight.w700 - : FontWeight.w500, + ? FontWeight.w800 + : FontWeight.w600, ), ), ), diff --git a/lib/views/helpers/widgets/slide_action.dart b/lib/views/helpers/widgets/slide_action.dart index c46ebb8..2707892 100644 --- a/lib/views/helpers/widgets/slide_action.dart +++ b/lib/views/helpers/widgets/slide_action.dart @@ -295,7 +295,7 @@ class _MilerSlideActionState extends State overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 16.sp, - fontWeight: FontWeight.w800, + fontWeight: FontWeight.w900, letterSpacing: -0.3, color: ColorConstants.onAccent, fontFamily: FontConstants.fontFamily, diff --git a/lib/views/introscreens/introscreen.dart b/lib/views/introscreens/introscreen.dart index fbb63a0..c3d0b4a 100644 --- a/lib/views/introscreens/introscreen.dart +++ b/lib/views/introscreens/introscreen.dart @@ -236,7 +236,7 @@ class _OnboardButton extends StatelessWidget { style: TextStyle( color: ColorConstants.primary, fontSize: 16.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, fontFamily: FontConstants.fontFamily, ), @@ -279,7 +279,7 @@ class _SkipAction extends StatelessWidget { 'Skip', style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/onboardscreens/Creat_mpin.dart b/lib/views/onboardscreens/Creat_mpin.dart index 13edefc..a8aa15a 100644 --- a/lib/views/onboardscreens/Creat_mpin.dart +++ b/lib/views/onboardscreens/Creat_mpin.dart @@ -236,7 +236,7 @@ class _CreateMpinBodyState extends State<_CreateMpinBody> { 'Matches', style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.acceptGreen, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/onboardscreens/Sign_in.dart b/lib/views/onboardscreens/Sign_in.dart index 3f3b031..ca347d1 100644 --- a/lib/views/onboardscreens/Sign_in.dart +++ b/lib/views/onboardscreens/Sign_in.dart @@ -240,7 +240,7 @@ class _SignInState extends State { cursorColor: ColorConstants.primary, style: TextStyle( fontSize: 18.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: 1.2, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -259,7 +259,7 @@ class _SignInState extends State { floatingLabelBehavior: FloatingLabelBehavior.always, labelStyle: TextStyle( fontSize: 13.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, letterSpacing: -0.1, color: error ? ColorConstants.errorRed @@ -272,7 +272,7 @@ class _SignInState extends State { hintStyle: TextStyle( color: ColorConstants.secondaryText, fontSize: 18.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, letterSpacing: 1.2, fontFamily: FontConstants.fontFamily, ), @@ -293,7 +293,7 @@ class _SignInState extends State { '+91', style: TextStyle( fontSize: 17.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, @@ -347,7 +347,7 @@ class _SignInState extends State { text: TextSpan( style: TextStyle( fontSize: 11.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: ColorConstants.secondaryText, height: 1.5, fontFamily: FontConstants.fontFamily, @@ -358,7 +358,7 @@ class _SignInState extends State { text: 'Terms of Service', style: TextStyle( color: ColorConstants.slateText, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, decoration: TextDecoration.underline, decorationColor: ColorConstants.borderStrong, fontFamily: FontConstants.fontFamily, @@ -370,7 +370,7 @@ class _SignInState extends State { text: 'Privacy Policy', style: TextStyle( color: ColorConstants.slateText, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, decoration: TextDecoration.underline, decorationColor: ColorConstants.borderStrong, fontFamily: FontConstants.fontFamily, diff --git a/lib/views/onboardscreens/auth_scaffold.dart b/lib/views/onboardscreens/auth_scaffold.dart index 4719586..8c76f80 100644 --- a/lib/views/onboardscreens/auth_scaffold.dart +++ b/lib/views/onboardscreens/auth_scaffold.dart @@ -51,7 +51,7 @@ import 'package:miler/views/helpers/widgets/app_widgets.dart'; abstract final class AuthType { static TextStyle get title => TextStyle( fontSize: 27.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.7, height: 1.15, color: ColorConstants.slateText, @@ -60,7 +60,7 @@ abstract final class AuthType { static TextStyle get subtitle => TextStyle( fontSize: 14.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, height: 1.45, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -68,7 +68,7 @@ abstract final class AuthType { static TextStyle get fieldLabel => TextStyle( fontSize: 12.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 0.5, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -76,7 +76,7 @@ abstract final class AuthType { static TextStyle get meta => TextStyle( fontSize: 12.5.sp, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, height: 1.45, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -169,7 +169,7 @@ class AuthSteps extends StatelessWidget { 'STEP $step OF $total', style: TextStyle( fontSize: 10.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 1.0, color: ColorConstants.secondaryText, fontFamily: FontConstants.fontFamily, @@ -578,7 +578,7 @@ class AuthBrandBanner extends StatelessWidget { 'MILER · RIDER APP', style: TextStyle( fontSize: 10.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: 1.6, color: ColorConstants.onAccent.withValues(alpha: 0.72), fontFamily: FontConstants.fontFamily, @@ -731,7 +731,7 @@ class AuthPrimaryButton extends StatelessWidget { style: TextStyle( color: Colors.white, fontSize: 16.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, letterSpacing: -0.2, fontFamily: FontConstants.fontFamily, ), @@ -786,7 +786,7 @@ class AuthTextAction extends StatelessWidget { label, style: TextStyle( fontSize: 13.5.sp, - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: color, fontFamily: FontConstants.fontFamily, ), @@ -835,7 +835,7 @@ class AuthInlineError extends StatelessWidget { style: TextStyle( color: ColorConstants.errorRed, fontSize: 12.5.sp, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, height: 1.35, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/onboardscreens/otp_page.dart b/lib/views/onboardscreens/otp_page.dart index 82e2350..a52aff2 100644 --- a/lib/views/onboardscreens/otp_page.dart +++ b/lib/views/onboardscreens/otp_page.dart @@ -204,7 +204,7 @@ class _OtpPageLayoutState extends State<_OtpPageLayout> with CodeAutoFill { TextSpan( text: _maskedPhone, style: TextStyle( - fontWeight: FontWeight.w700, + fontWeight: FontWeight.w800, color: ColorConstants.slateText, fontFamily: FontConstants.fontFamily, ), diff --git a/lib/views/updatescreen/UpdateScreen.dart b/lib/views/updatescreen/UpdateScreen.dart index 4458ee9..fb37d25 100644 --- a/lib/views/updatescreen/UpdateScreen.dart +++ b/lib/views/updatescreen/UpdateScreen.dart @@ -153,7 +153,7 @@ class _UpdateScreenState extends State "A New Update is Available!", style: TextStyle( fontSize: h * 0.025, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, fontFamily: FontConstants.fontFamily, color: ColorConstants.onSurface, ), diff --git a/lib/widget/Bottom_page.dart b/lib/widget/Bottom_page.dart index 503a8b9..15dbf0a 100644 --- a/lib/widget/Bottom_page.dart +++ b/lib/widget/Bottom_page.dart @@ -580,8 +580,8 @@ class _NavBarItem extends StatelessWidget { color: tint, fontSize: 10.5.sp, fontWeight: FontWeight.lerp( - FontWeight.w500, FontWeight.w600, + FontWeight.w700, lit, ), fontFamily: FontConstants.fontFamily, diff --git a/pubspec.lock b/pubspec.lock index 7f07db0..1227772 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -996,10 +996,10 @@ packages: dependency: transitive description: name: matcher - sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 + sha256: "31bd099b47c10cd1aeb55146a2d46ce0277630ecef3f7dae54ad7873f36696cd" url: "https://pub.dev" source: hosted - version: "0.12.19" + version: "0.12.20" material_color_utilities: dependency: transitive description: @@ -1012,10 +1012,10 @@ packages: dependency: transitive description: name: meta - sha256: "1741988757a65eb6b36abe716829688cf01910bbf91c34354ff7ec1c3de2b349" + sha256: "307249ce4ff29d58a18e97f6345f539382eb9c9c29ecda628900f31de0443dd9" url: "https://pub.dev" source: hosted - version: "1.18.0" + version: "1.19.0" mgrs_dart: dependency: transitive description: @@ -1437,6 +1437,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.4.0" + tab_container: + dependency: "direct main" + description: + name: tab_container + sha256: "15f87032f63fd7f0a59740aa31c5bc7056af3159a37311bca546d343240f3029" + url: "https://pub.dev" + source: hosted + version: "3.5.3" tab_indicator_styler: dependency: "direct main" description: @@ -1457,10 +1465,10 @@ packages: dependency: transitive description: name: test_api - sha256: "949a932224383300f01be9221c39180316445ecb8e7547f70a41a35bf421fb9e" + sha256: "2a122cbe059f8b610d3a5415f42e255b6c17b1f21eee1d960f31080237fb4f11" url: "https://pub.dev" source: hosted - version: "0.7.11" + version: "0.7.12" timezone: dependency: transitive description: @@ -1577,10 +1585,10 @@ packages: dependency: transitive description: name: vector_math - sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + sha256: f36f9f3be64c6198714492bb455c11056e33e2f85d9a0b676a48301e44fdcf47 url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.2" vibration: dependency: "direct main" description: @@ -1710,5 +1718,5 @@ packages: source: hosted version: "3.1.3" sdks: - dart: ">=3.10.0-0 <4.0.0" + dart: ">=3.11.0-0 <4.0.0" flutter: ">=3.35.0" diff --git a/pubspec.yaml b/pubspec.yaml index 1b0faca..666c680 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -75,6 +75,7 @@ dependencies: animated_toggle_switch: ^0.8.7 another_flushbar: ^2.2.4 lucide_icons_flutter: ^3.1.17 + tab_container: ^3.5.3 dev_dependencies: flutter_test: @@ -86,13 +87,51 @@ dev_dependencies: image_picker_platform_interface: ^2.10.0 +# ── The launcher icon looked small, and the manifest was not the reason ── +# +# `android:icon="@mipmap/ic_launcher"` only names the resource; how large the +# mark *reads* on the home screen is decided by the artwork and by whether the +# icon is adaptive. Both were working against it: +# +# 1. `doormile_icon.png` is 1024x1024 with the mark occupying 684px of it — +# 170px of transparent margin on every side, so a third of the icon was +# empty before Android touched it. +# 2. There was no `adaptive_icon_foreground`, so no `mipmap-anydpi-v26` was +# generated. Android 8+ falls back to *legacy treatment* for a plain PNG: +# it shrinks the bitmap to roughly three-quarters and centres it on a white +# rounded backdrop it draws itself. Stacked on the margin above, the mark +# ended up at about half the width of the icons beside it. +# +# So the fix is two pre-sized sources, not a manifest attribute: +# +# • **foreground** — the mark alone at 61% of the canvas, which is the 66dp +# safe zone of the 108dp adaptive canvas. Everything outside that is what +# the launcher's mask cuts away, and a circle mask on this circular mark +# now meets its edge. +# • **legacy / iOS** — the mark at 80% on white, because neither is masked the +# way an adaptive icon is and both are square. +# +# `adaptive_icon_foreground_inset: 0` because the padding is already baked into +# the foreground at the exact safe-zone ratio; the tool's default 16 would add +# a second margin and undo the change. +# +# `doormile_icon.png` is deliberately left alone — `flutter_native_splash` +# below still uses it, and the splash wants the airier framing. +# +# The two generated sources live in `launcher_icon/` rather than +# `assets/images/`, which is globbed wholesale into the bundle: they are +# build-time inputs for this tool and have no business being shipped inside the +# APK the tool produces. flutter_launcher_icons: android: true ios: true web: generate: true - image_path: "assets/images/doormile_icon.png" - image_path: "assets/images/doormile_icon.png" + image_path: "launcher_icon/doormile_icon_legacy.png" + image_path: "launcher_icon/doormile_icon_legacy.png" + adaptive_icon_background: "#FFFFFF" + adaptive_icon_foreground: "launcher_icon/doormile_icon_foreground.png" + adaptive_icon_foreground_inset: 0 remove_alpha_ios: true flutter_native_splash: color: "#FFFFFF" @@ -128,19 +167,23 @@ flutter: - family: PlusJakartaSans fonts: - asset: assets/fonts/PlusJakartaSans/PlusJakartaSans-VF.ttf - # ── The app's typeface ── + # ── Declared, correct, and currently unused ── # - # Declared as `poppins` with a lowercase path on every asset — and the files - # on disk are `assets/fonts/Poppins/Poppins-*.ttf`. Asset bundling is - # case-sensitive on both platforms, so not one of these seven resolved and - # the family had never rendered a single glyph. Anything asking for it fell - # back to Roboto, silently. + # The parcel line reads Manrope (FontConstants.fontFamily) and the delivery + # line reads Proxima Nova; nothing asks for Poppins today. It was briefly + # made the app's typeface and reverted — it runs optically much heavier than + # Manrope at every grade and turned the whole app bold. # - # All seven static weights are declared because Poppins ships as separate - # files rather than a variable font like Manrope did. The app leans on w800 - # and w900 for headings; without those two entries Flutter would synthesise - # them by smearing SemiBold, which is what makes a heading look muddy at - # exactly the size it is meant to be read from. + # The declaration is kept because it is now correct and was not before: it + # said `poppins` with a lowercase path on every asset, while the files on + # disk are `assets/fonts/Poppins/Poppins-*.ttf`. Asset bundling is + # case-sensitive on both platforms, so none of the seven resolved. Leaving + # the fixed version here means the family is one string away if it is ever + # wanted, instead of silently falling back again. + # + # All seven static weights are listed because Poppins ships as separate + # files rather than a variable font the way Manrope does; without explicit + # 800/900 entries Flutter synthesises them by smearing SemiBold. - family: Poppins fonts: - asset: assets/fonts/Poppins/Poppins-Light.ttf diff --git a/test/activity_page_test.dart b/test/activity_page_test.dart index 09902e1..dc357b8 100644 --- a/test/activity_page_test.dart +++ b/test/activity_page_test.dart @@ -168,11 +168,14 @@ void main() { // selection on the bar, never four. final selected = tester.widget(find.text('All')); expect(selected.style!.color, Colors.white); - expect(selected.style!.fontWeight, FontWeight.w700); + // One grade heavier than this once read: the app was set in Poppins on a + // scale stepped down to compensate for that face, and is back on Manrope + // with the scale restored. See `FontConstants`. + expect(selected.style!.fontWeight, FontWeight.w800); final other = tester.widget(find.text('Completed')); expect(other.style!.color, Narrative.inkMuted); - expect(other.style!.fontWeight, FontWeight.w600); + expect(other.style!.fontWeight, FontWeight.w700); // Exactly one filled brand pill in the bar. final filled = tester @@ -221,7 +224,10 @@ void main() { // lift to rank them; with both, the weight does not have to do that job // as well. final name = tester.widget(find.text('Joe Mathew')); - expect(name.style!.fontWeight, FontWeight.w600); + // One grade heavier than this once read: the app was set in Poppins on a + // scale stepped down to compensate for that face, and is back on Manrope + // with the scale restored. See `FontConstants`. + expect(name.style!.fontWeight, FontWeight.w700); expect( name.style!.fontSize, greaterThan(word.style!.fontSize!), diff --git a/test/card_density_test.dart b/test/card_density_test.dart index d4d8a7e..49d5fa5 100644 --- a/test/card_density_test.dart +++ b/test/card_density_test.dart @@ -854,9 +854,15 @@ void main() { expect(find.text('All 3 selected · Clear'), findsOneWidget); }); - testWidgets('stays away when there is only one stop to pick', ( - tester, - ) async { + testWidgets('a lone stop gets its place\'s own select-all', (tester) async { + // ── This asserted `findsNothing`, and the shape changed under it ── + // + // The run-level control still stays away for one stop — its own row is + // the select-all. What appears instead is the *place's*: a stop with an + // address is a place holding one order, and a place carries a select-all + // over its own orders however many it has. The milk run has always drawn + // `Select all 1` on a one-order counter; the parcel line draws places + // now, so it draws it too. await pump( tester, TripCard( @@ -866,7 +872,7 @@ void main() { onAcceptSelected: (_) async {}, ), ); - expect(find.textContaining('Select all'), findsNothing); + expect(find.text('Select all 1'), findsOneWidget); }); }); @@ -986,11 +992,20 @@ void main() { ), ); - // The position sits on the timeline node's own meta line now, rather - // than on the card's facts line — but it is still the trip's own index - // and not the visible list's, which is the whole contract. - expect(find.textContaining('Stop 2'), findsOneWidget); + // ── `Stop N` is gone from the parcel route, with the flat node ── + // + // Home draws places on both lines now: the header names where the work + // is, the rail under it names who. `Stop N` was the *flat* node's meta + // line, and there are no flat nodes on a route whose stops have + // addresses. The run position is the place's numeral instead. + // + // The contract underneath it — a stop is never renamed mid-shift — is + // carried by the group: a finished place settles rather than vanishing, + // so the sequence does not slide up. What this can still hold is that + // the picked stop has left the list and the remaining one is drawn. expect(find.textContaining('Stop 1'), findsNothing); + expect(find.text('B'), findsNothing, reason: 'ids are not on the row'); + expect(find.text('1 order'), findsOneWidget); }); }); diff --git a/test/home_grid_test.dart b/test/home_grid_test.dart index b38841f..bb1f20e 100644 --- a/test/home_grid_test.dart +++ b/test/home_grid_test.dart @@ -162,7 +162,14 @@ void main() { final area = tester.widget(find.text('Peelamedu').first).style!; expect(kitchen.fontSize, 19); - expect(kitchen.fontWeight, FontWeight.w700); + // ── The grade belongs to the typeface, not to this test ── + // + // This read w700 while the app was set in Poppins on a scale stepped down + // one grade to compensate for how heavily that face renders. The app is + // back on Manrope and the scale went back up with it, so the heading is + // w800 again — the value it had before the typeface was swapped. See + // `FontConstants`, which is where the scale is documented. + expect(kitchen.fontWeight, FontWeight.w800); expect(name.fontSize, 15); expect(area.fontSize, 12.5); diff --git a/test/hub_handover_contract_test.dart b/test/hub_handover_contract_test.dart new file mode 100644 index 0000000..a326377 --- /dev/null +++ b/test/hub_handover_contract_test.dart @@ -0,0 +1,291 @@ +import 'package:flutter_test/flutter_test.dart'; + +import 'package:miler/Models/stop_status.dart'; +import 'package:miler/data/api_config.dart'; +import 'package:miler/data/consignment_state.dart'; +import 'package:miler/data/lifecycle.dart'; +import 'package:miler/data/milk_run.dart'; +import 'package:miler/data/miler_api.dart'; +import 'package:miler/data/next_leg.dart'; +import 'package:miler/data/service_profile.dart'; +import 'package:miler/data/work_domain.dart'; + +/// ───────────────────────────────────────────────────────────────────────── +/// THE BASE-HANDOVER CONTRACT, AS THE BACKEND SHIPPED IT +/// +/// Requests 25–31 landed together, and the app's half of them is: read the four +/// new fields off the row, understand the six `next_action` words, and be +/// correct in **both positions of `MILER_HUB_HANDOVER_ENABLED`** — because that +/// flag is flipped server-side and no app release gets to sit in between. +/// +/// off pickup-complete → Inwarded_at_Hub + handed_to_hub rider is done +/// on pickup-complete → Created + inward_at_hub rider carries it +/// +/// These pin both, plus the field plumbing that makes them readable at all: the +/// booking adapter builds a **fixed map**, so a field it does not name is a +/// field no screen can ever see, however faithfully the backend sends it. +/// ───────────────────────────────────────────────────────────────────────── +void main() { + setUp(() => ServiceProfile.setActive(ServiceProfile.parcel)); + tearDown(() => ServiceProfile.setActive(ServiceProfile.parcel)); + + group('the adapter carries the new fields', () { + // The trap `step`, `stoptype` and every timestamp were in before it: the + // server sends the field, the adapter has no key for it, and the app is + // blind to something that was on the wire all along. + final adapted = ApiConfig.pickupFromBooking(const { + 'bookingid': 4821, + 'status': 'Converted_To_Consignment', + 'consignmentstatus': 'Created', + 'next_action': 'inward_at_hub', + 'next_hub': { + 'id': 1, + 'name': 'Coimbatore Hub', + 'address': '14 Avinashi Road, Peelamedu, Coimbatore', + 'pincode': '641004', + 'latitude': 11.0272, + 'longitude': 76.9905, + }, + 'pickup_source_type': 'customer', + 'pickup_source_name': 'Anitha R', + }); + + test('next_action survives', () { + expect(adapted['next_action'], 'inward_at_hub'); + expect(NextLegResolver.rowNextAction(adapted), 'inward_at_hub'); + }); + + test('next_hub survives whole, and is navigable', () { + final base = HandoverHub.from(adapted['next_hub']); + expect(base, isNotNull); + expect(base!.id, '1'); + expect(base.name, 'Coimbatore Hub'); + expect(base.pincode, '641004'); + expect(base.latitude, 11.0272); + expect(base.isNavigable, isTrue, + reason: 'coordinates are the whole point of request 25'); + }); + + test('pickup_source_type and _source_name survive', () { + expect(adapted['pickup_source_type'], 'customer'); + expect(PickupSource.of(adapted), PickupSource.customer); + expect(adapted['pickup_source_name'], 'Anitha R'); + }); + + test('the counter name outranks the account name', () { + // `sourcename` is filled from providercompany/providerlocation and is a + // contact person on some rows — this is the fix for `Sudharsan` heading a + // route card. + final row = ApiConfig.pickupFromBooking(const { + 'bookingid': 7, + 'sourcename': 'Sudharsan', + 'pickup_source_name': 'Sri Balaji Stores', + }); + expect(MilkRun.sourceNameOf(row), 'Sri Balaji Stores'); + }); + }); + + group('the full next_action vocabulary', () { + Map row(String action, {String consignment = ''}) => { + 'orderid': 'A1', + 'orderstatus': 'picked', + 'consignmentstatus': consignment, + 'next_action': action, + }; + + test('deliver and start_delivery are both customer legs', () { + expect(NextLegResolver.resolve(row('start_delivery')).leg, NextLeg.customer); + expect(NextLegResolver.resolve(row('deliver')).leg, NextLeg.customer); + }); + + test('inward_at_hub is a base leg, handed_to_hub is finished', () { + expect(NextLegResolver.resolve(row('inward_at_hub')).leg, NextLeg.hub); + expect(NextLegResolver.resolve(row('handed_to_hub')).leg, NextLeg.closed); + }); + + test('pickup and none decide nothing on their own', () { + // `pickup` is "not collected yet", which is not a leg. `none` means + // terminal — and rung 1 reads that off the consignment's own state, which + // is stronger evidence than a bare word. + expect(NextLegResolver.resolve(row('pickup')).leg, NextLeg.unknown); + expect(NextLegResolver.resolve(row('none')).leg, NextLeg.unknown); + }); + + test('an unknown word falls through instead of failing', () { + final decision = NextLegResolver.resolve( + row('teleport_to_mars', consignment: 'Out_for_Delivery'), + ); + expect(decision.leg, NextLeg.customer, + reason: 'the consignment state still answers'); + }); + }); + + group('correct in both positions of the flag', () { + // The row as `GET /miler/bookings` returns it after the pivot, adapted. + Map afterPickup({ + required String consignment, + required String action, + }) => ApiConfig.pickupFromBooking({ + 'bookingid': 4821, + 'status': 'Converted_To_Consignment', + 'consignmentstatus': consignment, + 'next_action': action, + }); + + test('FLAG OFF — the rider is done at the pickup', () { + // pickup-complete inwards it immediately; the assignment closes there. + final row = afterPickup( + consignment: 'Inwarded_at_Hub', + action: 'handed_to_hub', + ); + + expect(stopStatusOf(row).isPicked, isTrue, + reason: 'the booking reached Converted_To_Consignment'); + expect(NextLegResolver.resolve(row).leg, NextLeg.closed); + expect(WorkBoundary.domainOf(row), WorkDomain.closed); + }); + + test('FLAG ON — the rider is carrying it to a base', () { + final row = afterPickup(consignment: 'Created', action: 'inward_at_hub'); + + final decision = NextLegResolver.resolve(row); + expect(decision.leg, NextLeg.hub); + // ── Read from the row, not from the handset ── + // + // The pivot cache was only ever a workaround for `next_action` not being + // on the queue read. Request 27 put it there, so the live field answers + // and the cache is not consulted at all. + expect(decision.source, 'row.next_action'); + + expect(WorkBoundary.isClosed(row), isFalse); + expect(WorkBoundary.domainOf(row), WorkDomain.delivery); + expect(MilkRun.navigatesToCustomer(row), isFalse, + reason: 'a base-routed parcel never points at its receiver'); + }); + + test('and neither position needs the local cache', () { + // Passing no pivotAction at all — a fresh install mid-day. + for (final pair in const [ + ('Inwarded_at_Hub', 'handed_to_hub', NextLeg.closed), + ('Created', 'inward_at_hub', NextLeg.hub), + ('Collected_By_Miler', 'start_delivery', NextLeg.customer), + ('Out_for_Delivery', 'deliver', NextLeg.customer), + ]) { + final row = afterPickup(consignment: pair.$1, action: pair.$2); + expect(NextLegResolver.resolve(row).leg, pair.$3, + reason: '${pair.$1} / ${pair.$2}'); + } + }); + }); + + group('the handover response is read for what it proves', () { + ApiResult ok(Map data) => + ApiResult(ok: true, status: 200, data: data); + + test('a fresh handover is confirmed by the state it names', () { + final t = MilerLifecycle.inwardAtHub(ok(const { + 'consignmentstatus': 'Inwarded_at_Hub', + 'inwardedat': '2026-09-02T14:22:10Z', + 'next_action': 'handed_to_hub', + 'already_inwarded': false, + })); + expect(t.isConfirmed, isTrue); + expect(t.consignmentState, ConsignmentState.inwardedAtHub); + }); + + test('already_inwarded is a success, never a failure', () { + // He handed it over, the reply was lost, he pressed again. The parcel is + // on the base's counter and he cannot prove that from where he stands — + // so the second answer confirms the first. + final t = MilerLifecycle.inwardAtHub(ok(const { + 'consignmentstatus': 'Inwarded_at_Hub', + 'already_inwarded': true, + })); + expect(t.isConfirmed, isTrue); + }); + + test('a refusal carries its code', () { + final t = MilerLifecycle.inwardAtHub(const ApiResult( + ok: false, + status: 400, + code: 'INVALID_STATE', + message: 'already out for delivery', + )); + expect(t.isRefused, isTrue); + expect(t.code, 'INVALID_STATE'); + }); + + test('a 200 that names no state is not proof', () { + // The rule request 15 exists for: a bare success is not a transition. + final t = MilerLifecycle.inwardAtHub(ok(const {'success': true})); + expect(t.isUnconfirmed, isTrue); + }); + }); + + group('pickup source types', () { + test('each type reads off the row', () { + for (final pair in const [ + ('hub', PickupSource.hub), + ('customer', PickupSource.customer), + ('merchant', PickupSource.merchant), + ('store', PickupSource.store), + ]) { + expect(PickupSource.of({'pickup_source_type': pair.$1}), pair.$2); + } + }); + + test('an unknown or missing type is a plain pickup, never a guess', () { + expect(PickupSource.of(const {}), PickupSource.unknown); + expect( + PickupSource.of(const {'pickup_source_type': 'spaceport'}), + PickupSource.unknown, + ); + expect(PickupSource.unknown.eyebrow, 'PICKUP'); + }); + + test('no source eyebrow says "hub" to a rider', () { + // The house rule — see `no_hub_in_rider_copy_test.dart`. Base, not hub. + for (final s in PickupSource.values) { + expect(s.eyebrow.toLowerCase(), isNot(contains('hub'))); + } + expect(PickupSource.hub.eyebrow, 'BASE PICKUP'); + }); + + test('counters are collected in bulk; a door is not', () { + expect(PickupSource.hub.isCounter, isTrue); + expect(PickupSource.merchant.isCounter, isTrue); + expect(PickupSource.store.isCounter, isTrue); + expect(PickupSource.customer.isCounter, isFalse); + }); + }); + + group('At_Customer is the pickup arrival', () { + test('it no longer reads as arrival at the receiver', () { + // Settled by the backend: it is a milerprofiles.availabilitystatus value + // written only by `/reached`, so it says where the RIDER is. Reading it + // as `deliveryArrived` moved a stop into the delivery half of the day. + for (final raw in const ['At_Customer', 'at_customer', 'at customer']) { + expect(stopStatusFromRaw(raw), StopStatus.arrived, reason: raw); + } + }); + + test('the real delivery-arrival spellings are untouched', () { + expect(stopStatusFromRaw('delivery_arrived'), StopStatus.deliveryArrived); + expect(stopStatusFromRaw('deliveryarrived'), StopStatus.deliveryArrived); + }); + }); + + group('a base without coordinates is a caption, not a destination', () { + test('isNavigable is false and the card must not open a map', () { + final base = HandoverHub.from(const {'id': 2, 'name': 'Salem Hub'}); + expect(base, isNotNull); + expect(base!.isNavigable, isFalse, + reason: 'navigating to 0,0 lands in the Gulf of Guinea'); + }); + + test('an empty object is not a base at all', () { + expect(HandoverHub.from(const {}), isNull); + expect(HandoverHub.from(null), isNull); + }); + }); +} diff --git a/test/hub_pickup_group_test.dart b/test/hub_pickup_group_test.dart new file mode 100644 index 0000000..ce148b7 --- /dev/null +++ b/test/hub_pickup_group_test.dart @@ -0,0 +1,269 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:miler/data/pickup_locations.dart'; +import 'package:miler/data/service_profile.dart'; +import 'package:miler/views/Dashboard/home/trip.dart'; +import 'package:miler/views/Dashboard/home/route_timeline.dart'; +import 'package:miler/views/Dashboard/home/trip_card.dart'; + +/// ───────────────────────────────────────────────────────────────────────── +/// THE HUB IS A PICKUP LOCATION, THE SAME WAY A KITCHEN IS +/// +/// A milk round draws its orders under the counter they are loaded at: one node +/// naming the kitchen, its address under it, and the drops in a list beneath. +/// A logistics route drew nothing of the kind — every stop was its own node — +/// because grouping was one flag for the whole line +/// ([ServiceProfile.sourceIsKitchen]). +/// +/// That is right for a *collection*. The parcel line's pickups are one +/// consignment per door and each genuinely is its own place. It is wrong for a +/// **delivery**: a booking the rider hands over was loaded at the depot, which +/// is the same relationship a kitchen has to a milk round. Six drops drew six +/// nodes repeating one base address, and the fact that mattered — these come +/// off one shelf, and here is that shelf — was the one thing missing. +/// +/// So the question is asked per stop. A route that mixes gets both shapes. +/// ───────────────────────────────────────────────────────────────────────── +void main() { + Map drop(String id, String who) => { + 'orderid': id, + 'pickupid': 'HUB', + 'pickuplocationid': 'HUB', + 'sourcename': 'Doormile Hub — Peelamedu', + 'pickupaddress': '4, Avinashi Road, Peelamedu, Coimbatore 641004', + 'pickupcustomer': who, + 'orderstatus': 'pending', + 'type': 'delivery', + 'Quantity': '1', + }; + + Map collect(String id, String who) => { + 'orderid': id, + 'pickupid': id, + 'pickupcustomer': who, + 'pickupaddress': 'RS Puram, Coimbatore', + 'orderstatus': 'pending', + 'type': 'pickup', + 'Quantity': '1', + }; + + setUp(() { + PickupLocations.seedForTest(const {'7': 'H1 — Peelamedu Hub'}); + RiderHub.resetForTest(7); + }); + + tearDown(() { + ServiceProfile.setActive(ServiceProfile.parcel); + RiderHub.resetForTest(); + PickupLocations.seedForTest(const {}); + }); + + test('the whole logistics run is one node, named by the rider\'s hub', () { + ServiceProfile.setActive(ServiceProfile.parcel); + final groups = TripCard( + trip: Trip.fromStops( + id: 't1', + stops: [drop('1', 'Joe'), drop('2', 'Arun'), drop('3', 'Ravi')], + ), + ).routeGroups(); + + expect(groups, hasLength(1), reason: 'one hub, one node'); + + // ── The hub, not a booking's address ── + // + // A logistics day starts and ends at one building: it assigns the day's + // bookings, hands over the route, and the rider accepts the lot before he + // leaves. Reading the head off the stops titled it with whichever address + // sorted first — right for a drop, which is loaded at the depot, and wrong + // for a collection, which is not. See [RiderHub]. + expect(groups.single.name, 'H1 — Peelamedu Hub'); + expect(groups.single.stops, hasLength(3)); + expect( + groups.single.flat, + isFalse, + reason: 'a place holding orders opens a list; it is not the stop itself', + ); + + // No street under it. The locations table names the hub and gives no + // address, and a booking's road printed there reads as the hub's own. + expect(groups.single.location, isEmpty); + }); + + test('a collection belongs to the hub run too', () { + ServiceProfile.setActive(ServiceProfile.parcel); + final groups = TripCard( + trip: Trip.fromStops( + id: 't1', + stops: [collect('9', 'Sri Balaji Stores')], + ), + ).routeGroups(); + + expect(groups, hasLength(1)); + + // A collection is picked up at the customer's door, but it is still a + // booking the hub handed this rider and it is accepted at the hub with the + // rest. So it sits under the same head, with the customer on its own rung. + expect(groups.single.flat, isFalse); + expect(groups.single.name, 'H1 — Peelamedu Hub'); + expect(groups.single.manifest.single.customer, 'Sri Balaji Stores'); + }); + + test('a mixed route is still one hub run', () { + ServiceProfile.setActive(ServiceProfile.parcel); + final groups = TripCard( + trip: Trip.fromStops( + id: 't1', + stops: [ + drop('1', 'Joe'), + drop('2', 'Arun'), + collect('9', 'Sri Balaji Stores'), + ], + ), + ).routeGroups(); + + // Drops and collections alike: one building assigned them, so one node + // holds them and each rung says which job it is — see the `D`/`P`/`P&D` + // tags in `route_timeline.dart`. + expect(groups, hasLength(1)); + expect(groups.single.name, 'H1 — Peelamedu Hub'); + expect(groups.single.stops, hasLength(3)); + }); + + test('a milk round is unchanged — it grouped on the line, and still does', () { + ServiceProfile.setActive(ServiceProfile.milkMan); + final groups = TripCard( + trip: Trip.fromStops( + id: 't1', + stops: [ + { + 'orderid': '1', + 'pickupid': 'K1', + 'kitchenid': 'K1', + 'kitchenname': 'Vidhya Kitchen', + 'pickupaddress': '12, SNS Colony, Peelamedu', + 'pickupcustomer': 'Joe Mathew', + 'orderstatus': 'pending', + }, + { + 'orderid': '2', + 'pickupid': 'K1', + 'kitchenid': 'K1', + 'kitchenname': 'Vidhya Kitchen', + 'pickupaddress': '12, SNS Colony, Peelamedu', + 'pickupcustomer': 'Arun Prakash', + 'orderstatus': 'pending', + }, + ], + ), + ).routeGroups(); + + expect(groups, hasLength(1)); + expect(groups.single.name, 'Vidhya Kitchen'); + expect(groups.single.stops, hasLength(2)); + }); + + // ── The run-level select-all survives a mixed route ── + // + // `_flatSelectIds` bailed on `groups.every((g) => g.flat)`, which was right + // while a route was one shape or the other. Grouping the drops made a + // logistics route *both*, so the guard removed the only way to take the + // collections in one go — on exactly the routes that have the most of them. + group('taking the collections in one go', () { + Future pump( + WidgetTester tester, + List> stops, { + Set selected = const {}, + }) async { + tester.view.physicalSize = const Size(390 * 3, 900 * 3); + tester.view.devicePixelRatio = 3.0; + addTearDown(tester.view.resetPhysicalSize); + addTearDown(tester.view.resetDevicePixelRatio); + + await tester.pumpWidget( + ScreenUtilInit( + designSize: const Size(390, 844), + builder: (_, _) => MaterialApp( + home: Scaffold( + body: SingleChildScrollView( + child: TripCard( + trip: Trip.fromStops(id: 't1', stops: stops), + selectedIds: selected, + onToggleSelect: (_) {}, + onSelectAll: (_) {}, + ).buildStops(), + ), + ), + ), + ), + ); + await tester.pumpAndSettle(); + } + + testWidgets('a logistics run has one, and it is the hub\'s', ( + tester, + ) async { + ServiceProfile.setActive(ServiceProfile.parcel); + await pump( + tester, + [ + drop('1', 'Joe'), + drop('2', 'Arun'), + collect('8', 'Sri Balaji Stores'), + collect('9', 'Kumar Traders'), + ], + // The head control only appears once something is ticked — it is a + // selection-mode helper, not a permanent row. + selected: const {'8'}, + ); + + // ── One control, over the whole run ── + // + // The rider accepts the day's bookings at the hub before he leaves it, + // and every booking is under the hub's node — so there is one select-all + // and it covers the lot. The run-level control that sits outside the + // groups is for stops with no place above them to hold one, and a + // logistics run has none. + expect(find.byType(SelectAllAction), findsOneWidget); + expect(find.text('1 of 4 selected'), findsOneWidget); + }); + + testWidgets('a milk round is unchanged — it has no flat groups', ( + tester, + ) async { + ServiceProfile.setActive(ServiceProfile.milkMan); + await pump( + tester, + [ + { + 'orderid': '1', + 'pickupid': 'K1', + 'kitchenid': 'K1', + 'kitchenname': 'Vidhya Kitchen', + 'pickupaddress': '12, SNS Colony, Peelamedu', + 'pickupcustomer': 'Joe Mathew', + 'orderstatus': 'pending', + }, + { + 'orderid': '2', + 'pickupid': 'K1', + 'kitchenid': 'K1', + 'kitchenname': 'Vidhya Kitchen', + 'pickupaddress': '12, SNS Colony, Peelamedu', + 'pickupcustomer': 'Arun Prakash', + 'orderstatus': 'pending', + }, + ], + selected: const {'1'}, + ); + + // Every group is a counter, so there is nothing for a run-level control + // to be over: the select-all belongs to the kitchen and there is exactly + // **one** of it. Before the fix this was also one, and it must stay one — + // the guard that was removed never applied to a route with no flat groups. + expect(find.byType(SelectAllAction), findsOneWidget); + expect(find.text('1 of 2 selected'), findsOneWidget); + }); + }); +} diff --git a/test/lifecycle_boundary_test.dart b/test/lifecycle_boundary_test.dart index 182ae02..7410586 100644 --- a/test/lifecycle_boundary_test.dart +++ b/test/lifecycle_boundary_test.dart @@ -136,11 +136,19 @@ void main() { ); }); - test('a picked parcel booking is closed; a picked milk run is not', () { - // Collecting IS the job on logistics — the hub delivers it. On a round it - // is the middle of the morning. + test('a picked parcel stays in custody until the backend routes it', () { + // ── Was: "a picked parcel booking is closed" ── + // + // That was the line-level assumption `endsAtHub` encoded, and it closed + // hyperlocal parcels the rider was still carrying. Collection is no + // longer an ending on either line: it is the moment the parcel becomes + // physically his, and where it goes next is a per-order answer from the + // server. With nothing on the row to read, it stays his. ServiceProfile.setActive(ServiceProfile.parcel); - expect(WorkBoundary.domainOf(stop('1004', 'picked')), WorkDomain.closed); + expect( + WorkBoundary.domainOf(stop('1004', 'picked')), + WorkDomain.delivery, + ); ServiceProfile.setActive(ServiceProfile.milkMan); expect( diff --git a/test/next_leg_test.dart b/test/next_leg_test.dart new file mode 100644 index 0000000..f8d73c2 --- /dev/null +++ b/test/next_leg_test.dart @@ -0,0 +1,290 @@ +import 'package:flutter_test/flutter_test.dart'; + +import 'package:miler/data/next_leg.dart'; +import 'package:miler/data/service_profile.dart'; +import 'package:miler/data/work_domain.dart'; +import 'package:miler/data/milk_run.dart'; + +/// ───────────────────────────────────────────────────────────────────────── +/// WHERE A COLLECTED PARCEL GOES NEXT +/// +/// The logistics line used to answer this with a line-level constant — +/// `ServiceProfile.endsAtHub` — and `work_domain.dart` closed every collected +/// parcel because of it. These pin the per-order replacement against the four +/// operational cases it exists for: +/// +/// 1. Hub H1 → customer collected at a hub, delivered by this rider +/// 2. customer → hub collected at a door, handed to the network +/// 3. customer → customer hyperlocal, one rider, no hub +/// 4. customer → another state collected here, handed to the local hub +/// +/// The routing decision is the **backend's** in every one of them. No test here +/// asserts anything about a pincode, a district or a city name, because nothing +/// in the app is allowed to read one for this purpose. +/// ───────────────────────────────────────────────────────────────────────── +void main() { + setUp(() => ServiceProfile.setActive(ServiceProfile.parcel)); + tearDown(() => ServiceProfile.setActive(ServiceProfile.parcel)); + + /// A queue row as `GET /miler/bookings` delivers it, after the adapter. + Map row( + String id, { + String status = 'picked', + String consignment = '', + String nextAction = '', + String source = '', + String drop = '', + }) => { + 'orderid': id, + 'orderstatus': status, + 'consignmentstatus': consignment, + if (nextAction.isNotEmpty) 'next_action': nextAction, + 'sourcename': source, + 'dropaddress': drop, + }; + + group('the four operational cases', () { + test('CASE 1 — Hub H1 → customer: the rider delivers it himself', () { + // Collected at the hub; the pivot released it into his hands. + final stop = row( + 'H1-001', + consignment: 'Collected_By_Miler', + source: 'Hub H1', + drop: 'Hopes, Coimbatore', + ); + + expect(NextLegResolver.resolve(stop).leg, NextLeg.customer); + expect(WorkBoundary.isClosed(stop), isFalse, + reason: 'a parcel in his hands is not finished work'); + expect(WorkBoundary.domainOf(stop), WorkDomain.delivery); + expect(MilkRun.navigatesToCustomer(stop), isTrue, + reason: 'the receiver is the immediate destination'); + }); + + test('CASE 3 — customer → customer hyperlocal: never closed at pickup', () { + // Gandhipuram → Hopes. The pivot released it in the same call, which is + // what compatibility mode does, so the row comes back Out_for_Delivery. + final stop = row( + 'HYP-1', + consignment: 'Out_for_Delivery', + source: 'Rajesh Kumar', + drop: 'Hopes, Coimbatore', + ); + + expect(NextLegResolver.resolve(stop).leg, NextLeg.customer); + + // ── The bug this whole change exists for ── + // + // `isPicked && endsAtHub` closed this row, and endsAtHub is always true + // on logistics. The rider walked away from Rajesh Kumar's door carrying a + // parcel the app had filed as finished. + expect(WorkBoundary.isClosed(stop), isFalse); + expect(WorkBoundary.domainOf(stop), WorkDomain.delivery); + expect(MilkRun.navigatesToCustomer(stop), isTrue); + }); + + test('CASE 4 — customer → another state: hub leg, no customer delivery', () { + // Gandhipuram → Chennai. The pivot routed it into the network. + final stop = row( + 'ICT-1', + consignment: 'Created', + source: 'Rajesh Kumar', + drop: 'T Nagar, Chennai', + ); + const pivot = {'ICT-1': NextActionWord.inwardAtHub}; + + expect( + NextLegResolver.resolve(stop, pivotAction: NextActionWord.inwardAtHub).leg, + NextLeg.hub, + ); + + // It is in his custody, so it is the work tab's — not closed, not Home's. + expect( + WorkBoundary.isClosed(stop, pivotActions: pivot), + isFalse, + reason: 'a parcel he is carrying must not vanish into Activity', + ); + expect( + WorkBoundary.domainOf(stop, pivotActions: pivot), + WorkDomain.delivery, + ); + + // ── The safety assertion ── + // + // Chennai is 500km away. Nothing may offer it as this rider's next + // navigation target. + expect( + MilkRun.navigatesToCustomer(stop, pivotActions: pivot), + isFalse, + reason: 'a hub-routed parcel must never point at its receiver', + ); + }); + + test('CASE 2 — the hub taking it in is what ends the rider s job', () { + // There is no rider-side handover mutation yet (backend gap). The one way + // a hub-routed parcel legitimately leaves his queue today is hub staff + // inwarding it in their console, which the next poll reports. + final handed = row('ICT-1', consignment: 'Inwarded_at_Hub'); + const pivot = {'ICT-1': NextActionWord.inwardAtHub}; + + expect(NextLegResolver.resolve(handed, pivotAction: NextActionWord.inwardAtHub).leg, + NextLeg.closed); + expect(WorkBoundary.isClosed(handed, pivotActions: pivot), isTrue); + expect( + WorkBoundary.domainOf(handed, pivotActions: pivot), + WorkDomain.closed, + ); + }); + }); + + group('precedence — the server outranks the local record', () { + test('a live consignment state beats a stale pivot instruction', () { + // The pivot said hub. The server has since said the parcel is out for + // delivery in this rider's hands. The server wins: a local record is + // continuity, never authority. + final stop = row('X1', consignment: 'Out_for_Delivery'); + final decision = + NextLegResolver.resolve(stop, pivotAction: NextActionWord.inwardAtHub); + + expect(decision.leg, NextLeg.customer); + expect(decision.source, 'row.consignmentstatus'); + }); + + test('a terminal state beats everything', () { + final stop = row('X2', status: 'delivered', consignment: 'Delivered'); + expect( + NextLegResolver.resolve(stop, pivotAction: NextActionWord.startDelivery).leg, + NextLeg.closed, + ); + }); + + test('live next_action on the row outranks the persisted pivot', () { + // Not sent by the backend today — pinned so the resolver is already + // correct on the day `GET /miler/bookings` carries it. + final stop = row('X3', consignment: 'Created', nextAction: 'start_delivery'); + final decision = + NextLegResolver.resolve(stop, pivotAction: NextActionWord.inwardAtHub); + + expect(decision.leg, NextLeg.customer); + expect(decision.source, 'row.next_action'); + }); + + test('Created alone decides nothing — it is also the transient state', () { + // `Created` is what a hub-routed pivot lands on AND what a consignment + // holds while the pivot is still routing it. Reading it as "hub" would + // strand every freshly-collected hyperlocal parcel. + final stop = row('X4', consignment: 'Created'); + final decision = NextLegResolver.resolve(stop); + + expect(decision.leg, NextLeg.unknown); + expect(decision.source, 'none'); + }); + + test('unknown keeps custody: not closed, and no customer destination', () { + final stop = row('X5', consignment: 'Created'); + + // Never written off — he is holding it. + expect(WorkBoundary.isClosed(stop), isFalse); + expect(WorkBoundary.domainOf(stop), WorkDomain.delivery); + // Never pointed anywhere — the server has not said where it goes. + expect(MilkRun.navigatesToCustomer(stop), isFalse); + }); + }); + + group('the backend outranks the ServiceProfile default', () { + test('logistics stays endsAtHub, and it no longer closes an order', () { + // The capability is untouched — it still describes the line. + expect(ServiceProfile.parcel.endsAtHub, isTrue); + expect(ServiceProfile.parcel.deliversToCustomer, isFalse); + + // And it no longer decides one order's fate. + final hyperlocal = row('P1', consignment: 'Collected_By_Miler'); + expect(WorkBoundary.isClosed(hyperlocal), isFalse); + expect(MilkRun.navigatesToCustomer(hyperlocal), isTrue); + }); + + test('a milk run is unchanged by any of this', () { + ServiceProfile.setActive(ServiceProfile.milkMan); + + // A round's rows often carry no consignment state at all; the line's own + // shape still answers for them. + final collected = row('M1', status: 'picked'); + expect(WorkBoundary.isClosed(collected), isFalse); + expect( + MilkRun.navigatesToCustomer(collected, collectedIds: const {'M1'}), + isTrue, + ); + }); + }); + + group('the leg decides the words and the controls', () { + test('only a customer leg may be released into a delivery round', () { + // The gate that keeps a Chennai consignment out of `Out_for_Delivery`. + expect(NextLeg.customer.allowsCustomerDelivery, isTrue); + expect(NextLeg.hub.allowsCustomerDelivery, isFalse); + expect(NextLeg.unknown.allowsCustomerDelivery, isFalse); + expect(NextLeg.closed.allowsCustomerDelivery, isFalse); + }); + + test('a handover and a delivery are never worded the same', () { + // Activity has to be able to tell "handed across a counter" from "given + // to the person it belongs to". One verb for both is a false record. + expect( + NextLeg.hub.completionVerb, + isNot(equals(NextLeg.customer.completionVerb)), + ); + expect(NextLeg.customer.completionVerb, contains('customer')); + }); + + test('no leg vocabulary says "hub" to a rider', () { + // The house rule, enforced for every rider-facing string by + // `no_hub_in_rider_copy_test.dart`. Pinned here too because this is where + // the words are chosen: "base" for the place, "your office" for people. + for (final leg in NextLeg.values) { + expect(leg.eyebrow.toLowerCase(), isNot(contains('hub'))); + expect(leg.completionVerb.toLowerCase(), isNot(contains('hub'))); + } + }); + + test('a closed order has no eyebrow to draw', () { + expect(NextLeg.closed.eyebrow, isEmpty); + }); + }); + + group('one owner per order', () { + test('a picked parcel is never on Home and Deliveries at once', () { + final day = [ + row('A', consignment: 'Out_for_Delivery'), // hyperlocal, customer leg + row('B', consignment: 'Created'), // hub-routed + row('C', status: 'assigned', consignment: ''), // not collected + ]; + const pivot = {'B': NextActionWord.inwardAtHub}; + + final home = WorkBoundary.pickupQueue(day, pivotActions: pivot); + final deliveries = WorkBoundary.deliveryQueue(day, pivotActions: pivot); + + final homeIds = home.map(MilkRun.idOf).toSet(); + final deliveryIds = deliveries.map(MilkRun.idOf).toSet(); + + expect(homeIds.intersection(deliveryIds), isEmpty, + reason: 'dual ownership is the failure this boundary exists to stop'); + expect(deliveryIds, containsAll({'A', 'B'})); + expect(homeIds, contains('C')); + }); + + test('restart and poll preserve the leg', () { + // Same row, read again on a later poll with nothing but the persisted + // pivot to go on — which is exactly the cold-start case. + final stop = row('B', consignment: 'Created'); + const pivot = {'B': NextActionWord.inwardAtHub}; + + for (var i = 0; i < 3; i++) { + expect( + WorkBoundary.domainOf(stop, pivotActions: pivot), + WorkDomain.delivery, + ); + expect(MilkRun.navigatesToCustomer(stop, pivotActions: pivot), isFalse); + } + }); + }); +} diff --git a/test/no_hub_in_rider_copy_test.dart b/test/no_hub_in_rider_copy_test.dart index 8910a4c..a061772 100644 --- a/test/no_hub_in_rider_copy_test.dart +++ b/test/no_hub_in_rider_copy_test.dart @@ -35,13 +35,37 @@ import 'package:flutter_test/flutter_test.dart'; /// ───────────────────────────────────────────────────────────────────────── void main() { test('no rider-facing string says "hub"', () { - // A comment, or the backend's own wire spelling. + // A comment. bool exemptLine(String line) { final l = line.trimLeft(); - if (l.startsWith('//') || l.startsWith('///') || l.startsWith('*')) { - return true; - } - return l.contains('inwarded_at_hub') || l.contains('Inwarded_at_Hub'); + return l.startsWith('//') || l.startsWith('///') || l.startsWith('*'); + } + + /// True when a quoted literal is the backend's vocabulary rather than a + /// sentence somebody reads. + /// + /// ── Why a shape and not a list ── + /// + /// This was a list of two spellings — `inwarded_at_hub` and its capitalised + /// twin — and the base-handover work immediately outgrew it: a route path + /// (`/miler/consignments/:id/inward-at-hub`), a mutation-guard key and an + /// idempotency verb all carry the word and none of them can reach a screen. + /// Adding four more strings would have meant adding a fifth next time. + /// + /// The shape is the real rule. **Machine text has a separator and no + /// spaces**: `inward_at_hub`, `inward-at-hub`, and any path containing one. + /// **Copy is prose** — it has spaces in it, because it is a sentence. That + /// distinction is what this test has always actually been about, and it now + /// says so directly instead of enumerating exceptions. + /// + /// A bare word with neither a separator nor a space stays a violation, so + /// `Text('Hub')` is still caught. Anything parsing that value compares + /// against the enum's own `name` instead of respelling it — see + /// [PickupSource.of]. + bool isWireToken(String literal) { + final t = literal.trim(); + if (t.isEmpty || t.contains(' ')) return false; + return t.contains('_') || t.contains('-') || t.contains('/'); } /// True while the scan is inside a `debugPrint(...)` / `logGap(...)` call. @@ -90,6 +114,7 @@ void main() { if (exemptLine(lines[i])) continue; for (final m in quoted.allMatches(lines[i])) { final literal = m.group(2) ?? ''; + if (isWireToken(literal)) continue; if (word.hasMatch(literal)) { offenders.add('${e.path}:${i + 1} "$literal"'); } diff --git a/test/one_counter_one_dropdown_test.dart b/test/one_counter_one_dropdown_test.dart index 6b7e80b..b084a34 100644 --- a/test/one_counter_one_dropdown_test.dart +++ b/test/one_counter_one_dropdown_test.dart @@ -177,10 +177,33 @@ void main() { expect(group.flat, isTrue); }); - test('a parcel route is always flat, whatever the address says', () { - // Every stop is its own group there — the rider really does ride to each - // customer for one consignment, and a header plus a single child would - // print the same name twice. + test('a parcel COLLECTION is a place, headed by its address', () { + // ── The parcel line draws places now, like the milk run ── + // + // Home used to give logistics a flat node per stop, titled with the + // customer. It is one shape on both lines now: the header names *where* + // the work is and the rail under it names *who* — asked for directly, + // against screenshots of the two screens side by side. + // + // Three collections at one address are one place holding three orders — + // which is the case the old shape got most wrong, drawing the same street + // three times. + ServiceProfile.setActive(ServiceProfile.parcel); + final groups = TripCard( + trip: Trip.fromStops( + id: 'T1', + stops: [ + for (var i = 1; i <= 3; i++) {...order(i), 'type': 'pickup'}, + ], + ), + ).routeGroups(); + + expect(groups.length, 1); + expect(groups.single.flat, isFalse); + expect(groups.single.manifest.length, 3); + }); + + test('but its deliveries gather under the hub they were loaded at', () { ServiceProfile.setActive(ServiceProfile.parcel); final groups = TripCard( trip: Trip.fromStops( @@ -189,8 +212,9 @@ void main() { ), ).routeGroups(); - expect(groups.length, 3); - expect(groups.every((g) => g.flat), isTrue); + expect(groups.length, 1, reason: 'one shelf, one node'); + expect(groups.single.flat, isFalse); + expect(groups.single.manifest.length, 3); }); }); diff --git a/test/pickup_delivery_boundary_test.dart b/test/pickup_delivery_boundary_test.dart index bb00a4b..865f341 100644 --- a/test/pickup_delivery_boundary_test.dart +++ b/test/pickup_delivery_boundary_test.dart @@ -254,14 +254,34 @@ void main() { ); }); - test('collected ends the job on a line that ends at the hub', () { - // Terminal here, unlike on the milk run: the parcel becomes a consignment - // and the hub carries it from there. - expect(WorkBoundary.isClosed(order('P1', status: 'picked')), isTrue); + test('collected no longer ends the job by line default', () { + // ── This assertion used to be the opposite, and it was the bug ── + // + // `isClosed` read `isPicked && ServiceProfile.active.endsAtHub`, which is + // always true on logistics, so **every** collected parcel was written off + // at the pickup — including a hyperlocal one the pivot had just released + // into this rider's own hands. He left the sender's door carrying a + // parcel his app had already filed as finished. + // + // Where a collected parcel goes next is the backend's decision, per + // order, and this row carries no answer yet: no consignment state and no + // recorded pivot instruction. So it resolves to [NextLeg.unknown], which + // keeps custody rather than guessing — the parcel is in his hands, and + // the honest screen is the work tab, not Activity. See [NextLegResolver]. + expect(WorkBoundary.isClosed(order('P1', status: 'picked')), isFalse); expect( WorkBoundary.domainOf(order('P1', status: 'picked')), - WorkDomain.closed, + WorkDomain.delivery, ); }); + + test('the backend closing it is what closes it', () { + // `Inwarded_at_Hub` is the hub taking the parcel into its own custody. + // That is a real ending, and it comes from the server. + final handed = order('P1', status: 'picked') + ..['consignmentstatus'] = 'Inwarded_at_Hub'; + expect(WorkBoundary.isClosed(handed), isTrue); + expect(WorkBoundary.domainOf(handed), WorkDomain.closed); + }); }); } diff --git a/test/stop_card_neutral_test.dart b/test/stop_card_neutral_test.dart index f976673..52dad21 100644 --- a/test/stop_card_neutral_test.dart +++ b/test/stop_card_neutral_test.dart @@ -246,20 +246,31 @@ void main() { testWidgets('a step states who it is for, and no stop type', (tester) async { await pumpCard(tester); - // This is a parcel route, so each stop is its own node and what names it is - // the customer plus its position in the run. (The `who` + `which bag` pair - // is the kitchen-group shape and is held by `one_bag_per_order_test.dart`.) + // ── The parcel route draws places now ── + // + // This read "each stop is its own node, named by the customer plus its + // position in the run". Home is one shape on both lines now: the header + // names *where* and the row under it names *who*, so the customer is on the + // rung and `Stop 1` — the flat node's meta line — is gone with the flat + // node. See `hub_pickup_group_test.dart`. expect(find.text('Sri Balaji Stores'), findsWidgets); - expect(find.text('Stop 1'), findsOneWidget); + expect(find.text('Stop 1'), findsNothing); // Everything the card used to shout on every row. The type is one tap away // in the sheet, on the badge `StopDetailSheet._header` draws. - for (final label in const [ - 'PICKUP', - 'DELIVERY', - 'P&D', - 'PICKUP & DELIVERY', - ]) { + // ── `P&D` came off this list ── + // + // The rule these labels enforce is that the route does not *shout* a + // stop's type: `PICKUP & DELIVERY` set on every rung is a word the rider + // re-reads forty times a shift, and the accents that came with it were a + // second colour system competing with the brand. + // + // A mixed route still has to answer "am I collecting or dropping here" + // without opening anything, so the rail now carries a one- or two-letter + // grey tag — see `_KindTag`. It is a mark rather than a word, and it is + // painted in the same neutral as the metric tiles, so both halves of the + // rule above still hold. The shouted forms stay banned. + for (final label in const ['PICKUP', 'DELIVERY', 'PICKUP & DELIVERY']) { expect( find.text(label), findsNothing, diff --git a/test/stop_row_alignment_test.dart b/test/stop_row_alignment_test.dart index 51d8d0c..fbbf367 100644 --- a/test/stop_row_alignment_test.dart +++ b/test/stop_row_alignment_test.dart @@ -60,7 +60,19 @@ void main() { /// 2 pending, no phone → the same, with nothing to call /// 3 rejected + phone → no tick; it is already decided /// 4 skipped, no phone → not listed at all - Future pumpRoute(WidgetTester tester, {String? kitchen}) async { + /// [uniform] forces every stop to one kind, for the tests that are about a + /// row's **state** rather than its shape. + /// + /// A mixed route no longer draws one shape: drops gather under the hub they + /// were loaded at and collections stay their own doors, so a rung and a node + /// legitimately sit at different indents. See `hub_pickup_group_test.dart`. + /// Comparing across the two measures the grouping, not the thing under test. + Future pumpRoute( + WidgetTester tester, { + String? kitchen, + String? uniform, + bool secondAddress = false, + }) async { tester.view.physicalSize = const Size(1170, 2532); tester.view.devicePixelRatio = 3.0; addTearDown(tester.view.resetPhysicalSize); @@ -69,11 +81,28 @@ void main() { final trip = Trip.fromStops( id: 'mixed', stops: [ - stop('A', type: 'pickup', phone: '9876543210', kitchen: kitchen), - stop('B', type: 'delivery', kitchen: kitchen), - stop('C', type: 'combined', phone: '9876500000', kitchen: kitchen), + stop( + 'A', + type: uniform ?? 'pickup', + phone: '9876543210', + kitchen: kitchen, + ), { - ...stop('D', type: 'pickup', kitchen: kitchen), + ...stop('B', type: uniform ?? 'delivery', kitchen: kitchen), + if (secondAddress) ...{ + 'pickupaddress': '4, Avinashi Rd, Coimbatore', + 'kitchenid': 'K2', + 'kitchenname': 'Second Counter', + }, + }, + stop( + 'C', + type: uniform ?? 'combined', + phone: '9876500000', + kitchen: kitchen, + ), + { + ...stop('D', type: uniform ?? 'pickup', kitchen: kitchen), 'orderstatus': 'skipped', }, ], @@ -102,10 +131,17 @@ void main() { } testWidgets('every node sits on one vertical axis', (tester) async { - await pumpRoute(tester); + ServiceProfile.setActive(ServiceProfile.milkMan); + await pumpRoute(tester, kitchen: 'K1', secondAddress: true); + // ── A logistics run is one node, so the axes are compared on a milk round ── + // + // Home groups the parcel line's whole day under the rider's base now, which + // is the point of the change but leaves a single node with nothing to + // compare against. A kitchen line still draws one node per counter, which + // is the shape this test was written for. final nodes = find.byType(PickupTimelineGroup); - expect(nodes.evaluate().length, greaterThan(1), reason: 'a mixed route'); + expect(nodes.evaluate().length, greaterThan(1), reason: 'two counters'); // The spine is a fixed-width rail with the node centred in it, so this // holds by construction — which is exactly why it is worth pinning. The @@ -123,7 +159,9 @@ void main() { testWidgets('the rail does not move when a row changes state', ( tester, ) async { - await pumpRoute(tester); + // One kind throughout: this is about **state**, and a mixed route now draws + // two shapes on purpose — see [pumpRoute]'s `uniform`. + await pumpRoute(tester, uniform: 'pickup'); // Two of the four are listed now. The skipped one has always been // Activity's row; the **rejected** one joined it — a declined stop leaves diff --git a/test/stop_verify_chrome_test.dart b/test/stop_verify_chrome_test.dart index b6dc5b8..41b992c 100644 --- a/test/stop_verify_chrome_test.dart +++ b/test/stop_verify_chrome_test.dart @@ -102,7 +102,10 @@ void main() { // rather than in the grey reserved for metadata. final label = tester.widget(find.text('Who received it?')); expect(label.style!.color, ColorConstants.slateText); - expect(label.style!.fontWeight, FontWeight.w700); + // One grade heavier than this once read: the app was set in Poppins on a + // scale stepped down to compensate for that face, and is back on Manrope + // with the scale restored. See `FontConstants`. + expect(label.style!.fontWeight, FontWeight.w800); // What has not changed, and must not: it is still quieter than the stop it // belongs to. The customer's name is the subject of the screen; a step @@ -125,16 +128,27 @@ void main() { } }); - testWidgets('an odd picker gives its last option the full row', ( + testWidgets('an odd picker keeps its last option in its column', ( tester, ) async { await pump(tester, stopOf(type: 'pickup', pickupQty: 2)); - // Three conditions. The third at half width on a line of its own is an - // orphan; at full width it is a second row. + // ── This used to assert the opposite, and it fought the test above ── + // + // The rule was that a third option at half width is an orphan, so it took + // the full row. But the picker two tests up exists to make every option the + // *same* width — natural-width chips packing three-then-one "reads as a + // list that ran out rather than as a set of four equal choices" — and a + // stretched third option is that same inequality, introduced deliberately. + // + // Size is emphasis. Stretching the odd one put the largest target on the + // screen under `Damaged`: the rarest condition and the one with the worst + // consequence, drawn twice the size of `Sealed & intact`. This set has no + // reason to emphasise its exception, and a grid with an empty cell in its + // last row is simply what a grid looks like. expect( chipWidth(tester, 'Damaged'), - greaterThan(chipWidth(tester, 'Sealed & intact') * 1.8), + closeTo(chipWidth(tester, 'Sealed & intact'), 0.5), ); }); diff --git a/test/support/golden_fonts.dart b/test/support/golden_fonts.dart index d7cf001..5c68aef 100644 --- a/test/support/golden_fonts.dart +++ b/test/support/golden_fonts.dart @@ -1,7 +1,6 @@ import 'dart:io'; import 'package:flutter/services.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:miler/views/helpers/constants/Font_constant.dart'; @@ -21,23 +20,19 @@ import 'package:miler/views/helpers/constants/Font_constant.dart'; /// binding does not resolve at all, and every icon on Activity came out as a /// hollow square. One loader, so the next family added to the app is added /// here rather than in five harnesses that will drift apart. +/// +/// ── Load the family the app actually reads ── +/// +/// This registers `FontConstants.fontFamily`, so it must be fed that family's +/// files. When the app moved off Poppins and back to Manrope, the loader still +/// pointed at `assets/fonts/Poppins/*` — which does not fail, it registers the +/// wrong glyphs under the right name and every reference shot becomes a +/// picture of a typeface the app does not ship. Manrope is a single variable +/// font, so one file covers the whole weight axis. Future loadGoldenFonts() async { - final poppins = FontLoader(FontConstants.fontFamily); - for (final e in const <(String, FontWeight)>[ - ('Light', FontWeight.w300), - ('Regular', FontWeight.w400), - ('Medium', FontWeight.w500), - ('SemiBold', FontWeight.w600), - ('Bold', FontWeight.w700), - ('ExtraBold', FontWeight.w800), - ('Black', FontWeight.w900), - ]) { - final f = File('assets/fonts/Poppins/Poppins-${e.$1}.ttf'); - if (f.existsSync()) { - poppins.addFont(f.readAsBytes().then((b) => ByteData.view(b.buffer))); - } - } - await poppins.load(); + await _loadIfPresent(FontConstants.fontFamily, const [ + 'assets/fonts/Manrope/Manrope-VF.ttf', + ]); await _loadIfPresent('MaterialIcons', const [ '/opt/homebrew/share/flutter/bin/cache/artifacts/material_fonts/' diff --git a/test/trip_tabs_pinned_test.dart b/test/trip_tabs_pinned_test.dart index 2e6d9d7..b4af1a3 100644 --- a/test/trip_tabs_pinned_test.dart +++ b/test/trip_tabs_pinned_test.dart @@ -175,4 +175,30 @@ void main() { await tester.tap(find.text('Trip 2')); expect(chosen, 1); }); + + // ── What the panel holds when a slot is empty ── + // + // Nothing, as far as this control is concerned. [TripSelector] draws the tab + // strip and whatever body it is handed; Home hands it the selected trip's + // brief, and for a slot the hub has not filled that is the *same* brief built + // from an empty trip — `0 stops left` and an em dash under every figure. See + // `trip_unassigned_brief_test.dart`. + // + // So there is no "empty" state in here to test, and nothing in this control + // says `Not assigned yet` any more: that line made the panel a stub under a + // tab twice its height, and repeated a sentence the empty state below already + // carried. + group('with no body', () { + testWidgets('the control is just the tab strip', (tester) async { + await pump(tester, trips: 1, selected: 2); + + expect(find.text('Not assigned yet'), findsNothing); + expect( + tester.getSize(find.byType(TripSelector)).height, + TripSelector.height, + ); + expect(tester.takeException(), isNull); + }); + }); } + diff --git a/test/trip_unassigned_brief_test.dart b/test/trip_unassigned_brief_test.dart new file mode 100644 index 0000000..b02e9c7 --- /dev/null +++ b/test/trip_unassigned_brief_test.dart @@ -0,0 +1,109 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:miler/views/Dashboard/home/trip.dart'; +import 'package:miler/views/Dashboard/home/trip_brief_strip.dart'; +import 'package:miler/views/Dashboard/home/trip_card.dart'; + +/// ───────────────────────────────────────────────────────────────────────── +/// AN UNFILLED SLOT LOOKS LIKE A FILLED ONE, AT ZERO +/// +/// Home's trip panel used to change shape depending on whether the hub had got +/// to the slot yet: a filled slot got the brief, an unfilled one got a single +/// line reading `Not assigned yet`, which made the panel a 32pt stub under a +/// tab twice its height — and repeated a sentence the illustration below it +/// already carried. +/// +/// The brief of an empty slot is a real brief. Every figure it draws is derived +/// from the stops, so an empty list gives `0 stops left`, an empty progress +/// track and an em dash under everything with nothing to report — with no +/// second "empty" layout to keep in step with the real one. +/// +/// What this holds is the property that makes it worth doing: the panel is the +/// **same height** either way, so when the hub assigns the trip the figures +/// fill in where the dashes were instead of the page changing shape under the +/// rider's thumb. +/// ───────────────────────────────────────────────────────────────────────── +void main() { + Trip filled() => Trip.fromStops( + id: 't1', + stops: [ + for (var i = 0; i < 3; i++) + { + 'orderid': 'S$i', + 'pickupid': 'S$i', + 'pickupcustomer': 'Sri Balaji Stores', + 'pickupaddress': '19, Thadagam Road, Coimbatore', + 'orderstatus': 'pending', + 'Quantity': '2', + 'collectionamt': '450', + }, + ], + ); + + /// What `homepage.dart` builds for a slot the hub has not filled. + Trip unassigned() => Trip.fromStops(id: 'unassigned-1', stops: const []); + + Future pump(WidgetTester tester, Trip trip) async { + tester.view.physicalSize = const Size(390 * 3, 844 * 3); + tester.view.devicePixelRatio = 3.0; + addTearDown(tester.view.resetPhysicalSize); + addTearDown(tester.view.resetDevicePixelRatio); + + await tester.pumpWidget( + ScreenUtilInit( + designSize: const Size(390, 844), + builder: (_, _) => MaterialApp( + home: Scaffold( + body: SingleChildScrollView( + child: TripCard(trip: trip).buildSummary(onBrand: true), + ), + ), + ), + ), + ); + await tester.pumpAndSettle(); + } + + testWidgets('an unfilled slot reads zero, not empty', (tester) async { + await pump(tester, unassigned()); + + expect(find.text('0 stops left'), findsOneWidget); + + // The count is a real zero; the three figures that have nothing to report + // print the em dash every other figure in the app prints, because `None` + // set in figure type reads as data. + expect(find.text('0'), findsOneWidget); + expect(find.text('—'), findsNWidgets(3)); + + // And it is still the brief, not a special case: the same four labels. + for (final label in const [ + 'Duration', + 'Distance', + 'Parcels', + 'Payment', + ]) { + expect(find.text(label), findsOneWidget); + } + expect(tester.takeException(), isNull); + }); + + testWidgets('and it is the same height as a filled one', (tester) async { + // `buildSummary` returns the strip itself — [TripCard] is a builder, and + // never enters the tree. + await pump(tester, unassigned()); + final empty = tester.getSize(find.byType(TripBriefStrip)).height; + + await pump(tester, filled()); + final full = tester.getSize(find.byType(TripBriefStrip)).height; + + expect( + empty, + closeTo(full, 0.5), + reason: + 'the panel must not change shape when the hub assigns the trip — the ' + 'figures fill in where the dashes were, and nothing below it moves', + ); + }); +} diff --git a/test/two_lines_test.dart b/test/two_lines_test.dart index fd22125..3c6240e 100644 --- a/test/two_lines_test.dart +++ b/test/two_lines_test.dart @@ -189,11 +189,23 @@ void main() { expect(find.text('START · KITCHEN'), findsNothing); }); - testWidgets('gets no kitchen sections and no meal chrome', (tester) async { - // Nothing from the meal run may leak onto a parcel route. The *source - // pill* is data-driven and stays if a parcel payload ever names one — - // see [StopSourceLine] — but the grouping, its counts and its bulk - // collect are meal-flow structure and must not appear. + testWidgets('gets no meal VOCABULARY, though it now shares the shape', ( + tester, + ) async { + // ── What changed, and what did not ── + // + // This used to assert that a parcel route got no grouping at all: no + // place header, no counts under it, the header *is* the stop. That was + // the rule, and it has been reversed deliberately — Home draws places on + // both lines now, because the header names *where* and the row under it + // names *who*, and a collection needs both. Asked for directly, against + // screenshots of the two screens side by side. + // + // What must still never leak is the meal run's **words**. Shape is a + // layout decision and the two lines can share one; `meal`, `MEAL` and + // "ready to collect" are the other line's vocabulary for the other line's + // work, and a logistics rider must never be shown them. That is the half + // of this test that was always the point, and it is untouched. await pumpRoute( tester, stops: [stop(id: '1', kitchen: 'Kitchen 1')], @@ -201,15 +213,11 @@ void main() { expect(find.text('1 meal · 1 to accept'), findsNothing); expect(find.textContaining('ready to collect'), findsNothing); expect(find.text('MEAL'), findsNothing); - // The stop is drawn — it is just drawn flat. A parcel route has no - // counter to group under, so the timeline is one node per stop and the - // header *is* the stop. `PICKUP` was the card's type mark; the type is - // progressive disclosure in the detail sheet now. + + // The place is headed by what the payload named it, and the customer is + // the row under it — the milk run's shape, in the parcel line's words. + expect(find.text('Kitchen 1'), findsOneWidget); expect(find.text('Customer 1'), findsOneWidget); - expect(find.text('Kitchen 1'), findsNothing); - // "Collect 1" on the meta line is the parcel card's own count of what he - // is picking up at this door, and stays. The heading assertions above are - // what tell the two apart. }); test('still works bookings', () { diff --git a/web/favicon.png b/web/favicon.png index c82bab91f4c6ce793bdc55795d7a8f16ad4be254..842a5bc121193ee3d73ead3a654e10b4277d0f4a 100644 GIT binary patch delta 513 zcmV+c0{;EP1DgbpB!A*bL_t(|oTZb!Pm@s;#(!_A6n(KYOlVQtH~pXmhC0BalmCFm z!NEvmk;ITRl>~`=L?Z)%7zh{>5jC-Ks18OKyqNkg?@u>qaN3@i<>69%HL;{4J_-a_nk5)u&D}H!#NP$0TOZS12Gm%h-lt z=zHkiEzJ5lzJEPRu=MOD3-PD;26}N{y1?R-7kZTf0WnPP{O_zSr+ItkBDp^q8WZCr zyZYHz?c!jhf%&ofyHMDYh-BAIjPi1h#@evEoSPrFr6w;RsKo86=HrxAnq*ggv6lW$ zWkVf5UcKgk-_mvI$!W~`;7$SIEU3hBl)`nQnV)Z_czWN`j-&Q4;Rho~Xj6CNczR+* zCJ6a8XF*kaxs{spXY)m3tTfM$POv{t;u delta 426 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
jqZJluZdhaL# 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 T_40EW1bkE#wG`^)tit~f7#Qjw diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png index 7c0a9b8b6c28585b0f2a2705d261de312c02ef2c..c233f5d4be8586168023bf16e6153f2f37f289e2 100644 GIT binary patch literal 11436 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
jqZJluZdhaL# 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 T_40EW1bkE#wG`^)tit~f7#Qjw