From 93484a8bc1a227c6c3fe0e40691335b878925361 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Tue, 16 Jan 2024 22:57:05 -0800 Subject: [PATCH 01/23] Bump version --- Meshtastic.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Meshtastic.xcodeproj/project.pbxproj b/Meshtastic.xcodeproj/project.pbxproj index bb725735..4a8369d0 100644 --- a/Meshtastic.xcodeproj/project.pbxproj +++ b/Meshtastic.xcodeproj/project.pbxproj @@ -1491,7 +1491,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.2.19; + MARKETING_VERSION = 2.2.20; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = YES; @@ -1525,7 +1525,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.2.19; + MARKETING_VERSION = 2.2.20; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = YES; @@ -1647,7 +1647,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.2.19; + MARKETING_VERSION = 2.2.20; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1680,7 +1680,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.2.19; + MARKETING_VERSION = 2.2.20; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; From 1358d543cb0f29461de4b22f44e040eb66dfa39e Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Tue, 16 Jan 2024 22:57:52 -0800 Subject: [PATCH 02/23] Return of the route recorder --- Meshtastic/Views/Settings/RouteRecorder.swift | 572 +++++++++--------- Meshtastic/Views/Settings/Settings.swift | 16 +- 2 files changed, 294 insertions(+), 294 deletions(-) diff --git a/Meshtastic/Views/Settings/RouteRecorder.swift b/Meshtastic/Views/Settings/RouteRecorder.swift index 342d7aca..601f2a49 100644 --- a/Meshtastic/Views/Settings/RouteRecorder.swift +++ b/Meshtastic/Views/Settings/RouteRecorder.swift @@ -1,289 +1,289 @@ -//// -//// Routes.swift -//// Meshtastic -//// -//// Created by Garth Vander Houwen on 11/21/23. -//// // -//import SwiftUI -//import CoreData -//import MapKit -//import CoreLocation -//import CoreMotion +// Routes.swift +// Meshtastic // -//@available(iOS 17.0, macOS 14.0, *) -//struct RouteRecorder: View { -// -// @ObservedObject var locationsHandler: LocationsHandler = LocationsHandler.shared -// @Environment(\.managedObjectContext) var context -// @State private var position: MapCameraPosition = .userLocation(followsHeading: true, fallback: .automatic) -// //@State var mapStyle: MapStyle = MapStyle.hybrid(elevation: .realistic, pointsOfInterest: .all, showsTraffic: true) -// @State var mapStyle: MapStyle = MapStyle.standard(elevation: .realistic) -// @State var isShowingDetails = false -// @Namespace var namespace -// @Namespace var routerecorderscope -// @State var recording: RouteEntity? -// @State var color: Color = .blue -// -// var body: some View { -// VStack { -// ZStack { -// Map(position: $position, scope: routerecorderscope) { -// UserAnnotation() -// /// Route Lines -// let lineCoords = locationsHandler.locationsArray.compactMap({(position) -> CLLocationCoordinate2D in -// return position.coordinate -// }) -// -// let gradient = LinearGradient( -// colors: [color], -// startPoint: .leading, endPoint: .trailing -// ) -// let dashed = StrokeStyle( -// lineWidth: 3, -// lineCap: .round, lineJoin: .round, dash: [10, 10] -// ) -// MapPolyline(coordinates: lineCoords) -// .stroke(gradient, style: dashed) +// Created by Garth Vander Houwen on 11/21/23. // -// } -// .mapStyle(mapStyle) -// } -// .mapScope(routerecorderscope) -// .safeAreaInset(edge: .bottom) { -// ZStack { -// VStack { -// HStack(spacing: 10) { -// Spacer() -// -// Button { -// isShowingDetails = true -// } label: { -// Image(systemName: locationsHandler.isRecording ? "record.circle.fill" : "record.circle") -// .font(.system(size: 72)) -// .symbolRenderingMode(.multicolor) -// .foregroundColor(.red) -// } -// .buttonStyle(.bordered) -// .foregroundColor(.red) -// .buttonBorderShape(.circle) -// .matchedGeometryEffect(id: "Details Button", in: namespace) -// -// Spacer() -// } -// } -// } -// .padding() -// } -// .sheet(isPresented: $isShowingDetails) { -// NavigationStack { -// VStack { -// if locationsHandler.isRecording { -// HStack (alignment: .center) { -// Image(systemName: "record.circle.fill") -// .symbolRenderingMode(.multicolor) -// .font(.title) -// .foregroundColor(.red) -// Text("Recording route") -// .font(.title) -// Spacer() -// Text("\(locationsHandler.count)") -// .foregroundColor(.red) -// .font(.title2) -// } -// .padding() -// } else if locationsHandler.isRecordingPaused { -// HStack (alignment: .center) { -// -// Image(systemName: "playpause") -// .symbolRenderingMode(.multicolor) -// .font(.title3) -// .foregroundColor(.red) -// Text("Route recording paused") -// .font(.title) -// } -// .padding(.top) -// } -// -// if locationsHandler.isRecording || locationsHandler.isRecordingPaused { -// Divider() -// HStack { -// VStack { -// Text(locationsHandler.recordingStarted ?? Date(), style: .timer) -// .font(.title) -// .fixedSize() -// Text("Time") -// .font(.callout) -// .fixedSize() -// } -// .padding(.horizontal) -// Divider() -// VStack { -// let distance = Measurement(value: locationsHandler.distanceTraveled, unit: UnitLength.meters) -// Text("\(distance.formatted())") -// .font(.title) -// .fixedSize() -// Text("Distance") -// .font(.callout) -// .fixedSize() -// } -// .padding(.horizontal) -// Divider() -// VStack { -// let gain = Measurement(value: locationsHandler.elevationGain, unit: UnitLength.meters) -// Text(gain.formatted()) -// .font(.title) -// Text("Elev. Gain") -// .font(.callout) -// } -// .padding(.horizontal) -// } -// .frame(maxHeight: 90) -// } -// Divider() -// VStack(alignment: .leading) { -// List { -// GPSStatus(largeFont: .body, smallFont: .callout) -// } -// .listStyle(.plain) -// HStack { -// Spacer() -// if !locationsHandler.isRecording && !locationsHandler.isRecordingPaused { -// /// We are not recording or paused, show start recording button -// Button { -// locationsHandler.isRecording = true -// locationsHandler.count = 0 -// locationsHandler.distanceTraveled = 0.0 -// locationsHandler.elevationGain = 0.0 -// locationsHandler.locationsArray.removeAll() -// locationsHandler.recordingStarted = Date() -// let newRoute = RouteEntity(context: context) -// newRoute.name = String("Route Recording") -// newRoute.id = Int32.random(in: Int32(Int8.max) ... Int32.max) -// newRoute.color = Int64(UIColor.random.hex) -// newRoute.date = Date() -// newRoute.enabled = false -// color = Color(UIColor(hex: UInt32(newRoute.color))) -// self.recording = newRoute -// do { -// try context.save() -// print("💾 Saved a new route") -// } catch { -// context.rollback() -// let nsError = error as NSError -// print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") -// } -// } label: { -// Label("start", systemImage: "play") -// } -// .buttonStyle(.bordered) -// .buttonBorderShape(.capsule) -// .controlSize(.large) -// .padding(.bottom) -// -// } else if locationsHandler.isRecording { -// /// We are recording show pause button -// Button { -// locationsHandler.isRecording = false -// locationsHandler.isRecordingPaused = true -// } label: { -// Label("pause", systemImage: "pause") -// } -// .buttonStyle(.bordered) -// .buttonBorderShape(.capsule) -// .controlSize(.large) -// .padding(.bottom) -// } else if locationsHandler.isRecordingPaused { -// /// We are paused show resume button -// Button { -// locationsHandler.isRecording = true -// locationsHandler.isRecordingPaused = false -// } label: { -// Label("resume", systemImage: "playpause") -// } -// .buttonStyle(.bordered) -// .buttonBorderShape(.capsule) -// .controlSize(.large) -// .padding(.bottom) -// } -// -// if locationsHandler.isRecording || locationsHandler.isRecordingPaused { -// /// We are recording or paused, show finish button -// Button { -// locationsHandler.isRecording = false -// locationsHandler.isRecordingPaused = false -// locationsHandler.distanceTraveled = 0.0 -// locationsHandler.elevationGain = 0.0 -// locationsHandler.locationsArray.removeAll() -// locationsHandler.recordingStarted = nil -// if let rec = recording { -// rec.enabled = true -// context.refresh(rec, mergeChanges:true) -// } -// -// do { -// try context.save() -// print("💾 Saved a route finish") -// } catch { -// context.rollback() -// let nsError = error as NSError -// print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") -// } -// } label: { -// Label("finish", systemImage: "flag.checkered") -// } -// .buttonStyle(.bordered) -// .buttonBorderShape(.capsule) -// .controlSize(.large) -// .padding(.bottom) -// } -//#if targetEnvironment(macCatalyst) -// Button(role: .cancel) { -// isShowingDetails = false -// } label: { -// Label("close", systemImage: "xmark") -// } -// .buttonStyle(.bordered) -// .buttonBorderShape(.capsule) -// .controlSize(.large) -// .padding(.bottom) -//#endif -// Spacer() -// } -// -// } -// } -// } -// .presentationDetents([.fraction(0.30), .fraction(0.65)]) -// .presentationDragIndicator(.hidden) -// .interactiveDismissDisabled(false) -// .onChange(of: locationsHandler.locationsArray.last) { newLoc in -// if locationsHandler.isRecording { -// if let loc = newLoc { -// if recording != nil { -// let locationEntity = LocationEntity(context: context) -// locationEntity.routeLocation = recording -// locationEntity.id = Int32(locationsHandler.count) -// locationEntity.altitude = Int32(loc.altitude) -// locationEntity.heading = Int32(loc.course) -// locationEntity.speed = Int32(loc.speed) -// locationEntity.latitudeI = Int32(loc.coordinate.latitude * 1e7) -// locationEntity.longitudeI = Int32(loc.coordinate.longitude * 1e7) -// do { -// try context.save() -// print("💾 Saved a new route location") -// //print("💾 Updated Canned Messages Messages For: \(fetchedNode[0].num)") -// } catch { -// context.rollback() -// let nsError = error as NSError -// print("💥 Error Saving LocationEntity from the Route Recorder \(nsError)") -// } -// } -// } -// } -// } -// } -// } -// .ignoresSafeArea(.all, edges: [.top, .leading, .trailing]) -// } -//} + +import SwiftUI +import CoreData +import MapKit +import CoreLocation +import CoreMotion + +@available(iOS 17.0, macOS 14.0, *) +struct RouteRecorder: View { + + @ObservedObject var locationsHandler: LocationsHandler = LocationsHandler.shared + @Environment(\.managedObjectContext) var context + @State private var position: MapCameraPosition = .userLocation(followsHeading: true, fallback: .automatic) + //@State var mapStyle: MapStyle = MapStyle.hybrid(elevation: .realistic, pointsOfInterest: .all, showsTraffic: true) + @State var mapStyle: MapStyle = MapStyle.standard(elevation: .realistic) + @State var isShowingDetails = false + @Namespace var namespace + @Namespace var routerecorderscope + @State var recording: RouteEntity? + @State var color: Color = .blue + + var body: some View { + VStack { + ZStack { + Map(position: $position, scope: routerecorderscope) { + UserAnnotation() + /// Route Lines + let lineCoords = locationsHandler.locationsArray.compactMap({(position) -> CLLocationCoordinate2D in + return position.coordinate + }) + + let gradient = LinearGradient( + colors: [color], + startPoint: .leading, endPoint: .trailing + ) + let dashed = StrokeStyle( + lineWidth: 3, + lineCap: .round, lineJoin: .round, dash: [10, 10] + ) + MapPolyline(coordinates: lineCoords) + .stroke(gradient, style: dashed) + + } + .mapStyle(mapStyle) + } + .mapScope(routerecorderscope) + .safeAreaInset(edge: .bottom) { + ZStack { + VStack { + HStack(spacing: 10) { + Spacer() + + Button { + isShowingDetails = true + } label: { + Image(systemName: locationsHandler.isRecording ? "record.circle.fill" : "record.circle") + .font(.system(size: 72)) + .symbolRenderingMode(.multicolor) + .foregroundColor(.red) + } + .buttonStyle(.bordered) + .foregroundColor(.red) + .buttonBorderShape(.circle) + .matchedGeometryEffect(id: "Details Button", in: namespace) + + Spacer() + } + } + } + .padding() + } + .sheet(isPresented: $isShowingDetails) { + NavigationStack { + VStack { + if locationsHandler.isRecording { + HStack (alignment: .center) { + Image(systemName: "record.circle.fill") + .symbolRenderingMode(.multicolor) + .font(.title) + .foregroundColor(.red) + Text("Recording route") + .font(.title) + Spacer() + Text("\(locationsHandler.count)") + .foregroundColor(.red) + .font(.title2) + } + .padding() + } else if locationsHandler.isRecordingPaused { + HStack (alignment: .center) { + + Image(systemName: "playpause") + .symbolRenderingMode(.multicolor) + .font(.title3) + .foregroundColor(.red) + Text("Route recording paused") + .font(.title) + } + .padding(.top) + } + + if locationsHandler.isRecording || locationsHandler.isRecordingPaused { + Divider() + HStack { + VStack { + Text(locationsHandler.recordingStarted ?? Date(), style: .timer) + .font(.title) + .fixedSize() + Text("Time") + .font(.callout) + .fixedSize() + } + .padding(.horizontal) + Divider() + VStack { + let distance = Measurement(value: locationsHandler.distanceTraveled, unit: UnitLength.meters) + Text("\(distance.formatted())") + .font(.title) + .fixedSize() + Text("Distance") + .font(.callout) + .fixedSize() + } + .padding(.horizontal) + Divider() + VStack { + let gain = Measurement(value: locationsHandler.elevationGain, unit: UnitLength.meters) + Text(gain.formatted()) + .font(.title) + Text("Elev. Gain") + .font(.callout) + } + .padding(.horizontal) + } + .frame(maxHeight: 90) + } + Divider() + VStack(alignment: .leading) { + List { + GPSStatus(largeFont: .body, smallFont: .callout) + } + .listStyle(.plain) + HStack { + Spacer() + if !locationsHandler.isRecording && !locationsHandler.isRecordingPaused { + /// We are not recording or paused, show start recording button + Button { + locationsHandler.isRecording = true + locationsHandler.count = 0 + locationsHandler.distanceTraveled = 0.0 + locationsHandler.elevationGain = 0.0 + locationsHandler.locationsArray.removeAll() + locationsHandler.recordingStarted = Date() + let newRoute = RouteEntity(context: context) + newRoute.name = String("Route Recording") + newRoute.id = Int32.random(in: Int32(Int8.max) ... Int32.max) + newRoute.color = Int64(UIColor.random.hex) + newRoute.date = Date() + newRoute.enabled = false + color = Color(UIColor(hex: UInt32(newRoute.color))) + self.recording = newRoute + do { + try context.save() + print("💾 Saved a new route") + } catch { + context.rollback() + let nsError = error as NSError + print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") + } + } label: { + Label("start", systemImage: "play") + } + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding(.bottom) + + } else if locationsHandler.isRecording { + /// We are recording show pause button + Button { + locationsHandler.isRecording = false + locationsHandler.isRecordingPaused = true + } label: { + Label("pause", systemImage: "pause") + } + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding(.bottom) + } else if locationsHandler.isRecordingPaused { + /// We are paused show resume button + Button { + locationsHandler.isRecording = true + locationsHandler.isRecordingPaused = false + } label: { + Label("resume", systemImage: "playpause") + } + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding(.bottom) + } + + if locationsHandler.isRecording || locationsHandler.isRecordingPaused { + /// We are recording or paused, show finish button + Button { + locationsHandler.isRecording = false + locationsHandler.isRecordingPaused = false + locationsHandler.distanceTraveled = 0.0 + locationsHandler.elevationGain = 0.0 + locationsHandler.locationsArray.removeAll() + locationsHandler.recordingStarted = nil + if let rec = recording { + rec.enabled = true + context.refresh(rec, mergeChanges:true) + } + + do { + try context.save() + print("💾 Saved a route finish") + } catch { + context.rollback() + let nsError = error as NSError + print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") + } + } label: { + Label("finish", systemImage: "flag.checkered") + } + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding(.bottom) + } +#if targetEnvironment(macCatalyst) + Button(role: .cancel) { + isShowingDetails = false + } label: { + Label("close", systemImage: "xmark") + } + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding(.bottom) +#endif + Spacer() + } + + } + } + } + .presentationDetents([.fraction(0.30), .fraction(0.65)]) + .presentationDragIndicator(.hidden) + .interactiveDismissDisabled(false) + .onChange(of: locationsHandler.locationsArray.last) { newLoc in + if locationsHandler.isRecording { + if let loc = newLoc { + if recording != nil { + let locationEntity = LocationEntity(context: context) + locationEntity.routeLocation = recording + locationEntity.id = Int32(locationsHandler.count) + locationEntity.altitude = Int32(loc.altitude) + locationEntity.heading = Int32(loc.course) + locationEntity.speed = Int32(loc.speed) + locationEntity.latitudeI = Int32(loc.coordinate.latitude * 1e7) + locationEntity.longitudeI = Int32(loc.coordinate.longitude * 1e7) + do { + try context.save() + print("💾 Saved a new route location") + //print("💾 Updated Canned Messages Messages For: \(fetchedNode[0].num)") + } catch { + context.rollback() + let nsError = error as NSError + print("💥 Error Saving LocationEntity from the Route Recorder \(nsError)") + } + } + } + } + } + } + } + .ignoresSafeArea(.all, edges: [.top, .leading, .trailing]) + } +} diff --git a/Meshtastic/Views/Settings/Settings.swift b/Meshtastic/Views/Settings/Settings.swift index 66d1e02e..87d23bd3 100644 --- a/Meshtastic/Views/Settings/Settings.swift +++ b/Meshtastic/Views/Settings/Settings.swift @@ -69,14 +69,14 @@ struct Settings: View { Text("routes") } .tag(SettingsSidebar.routes) -// NavigationLink { -// RouteRecorder() -// } label: { -// Image(systemName: "record.circle") -// .symbolRenderingMode(.hierarchical) -// Text("route.recorder") -// } -// .tag(SettingsSidebar.routeRecorder) + NavigationLink { + RouteRecorder() + } label: { + Image(systemName: "record.circle") + .symbolRenderingMode(.hierarchical) + Text("route.recorder") + } + .tag(SettingsSidebar.routeRecorder) } let node = nodes.first(where: { $0.num == preferredNodeNum }) From 2c76631681be343071ef9b77184970dbe449bb07 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Thu, 18 Jan 2024 10:14:51 -0800 Subject: [PATCH 03/23] Move advanced altitude flags to advanced. --- .../Settings/Config/PositionConfig.swift | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Meshtastic/Views/Settings/Config/PositionConfig.swift b/Meshtastic/Views/Settings/Config/PositionConfig.swift index 0775a16e..c70e5c89 100644 --- a/Meshtastic/Views/Settings/Config/PositionConfig.swift +++ b/Meshtastic/Views/Settings/Config/PositionConfig.swift @@ -154,17 +154,6 @@ struct PositionConfig: View { } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) - if includeAltitude { - Toggle(isOn: $includeAltitudeMsl) { - Label("Altitude is Mean Sea Level", systemImage: "arrow.up.to.line.compact") - } - .toggleStyle(SwitchToggleStyle(tint: .accentColor)) - Toggle(isOn: $includeGeoidalSeparation) { - Label("Altitude Geoidal Separation", systemImage: "globe.americas") - } - .toggleStyle(SwitchToggleStyle(tint: .accentColor)) - } - Toggle(isOn: $includeSatsinview) { Label("Number of satellites", systemImage: "skew") } @@ -192,6 +181,17 @@ struct PositionConfig: View { .toggleStyle(SwitchToggleStyle(tint: .accentColor)) } Section(header: Text("Advanced Position Flags")) { + + if includeAltitude { + Toggle(isOn: $includeAltitudeMsl) { + Label("Altitude is Mean Sea Level", systemImage: "arrow.up.to.line.compact") + } + .toggleStyle(SwitchToggleStyle(tint: .accentColor)) + Toggle(isOn: $includeGeoidalSeparation) { + Label("Altitude Geoidal Separation", systemImage: "globe.americas") + } + .toggleStyle(SwitchToggleStyle(tint: .accentColor)) + } Toggle(isOn: $includeDop) { Text("Dilution of precision (DOP) PDOP used by default") From cff96bd37c6f64573a9552681a26ce7ae6b2ea54 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Fri, 19 Jan 2024 10:56:57 -0800 Subject: [PATCH 04/23] Remove spaces from saved RTTL value --- Meshtastic.xcodeproj/project.pbxproj | 12 ++ .../RoundIcon.imageset/Contents.json | 22 +++ .../RoundIcon.imageset/RoundIcon@2x.png | Bin 0 -> 75714 bytes .../RoundIcon.imageset/RoundIcon@3x.png | Bin 0 -> 160182 bytes Meshtastic/CarPlay/CarPlaySceneDelegate.swift | 182 ++++++++++++++++++ Meshtastic/Info.plist | 20 +- Meshtastic/Meshtastic.entitlements | 2 + .../Settings/Config/Module/RtttlConfig.swift | 2 +- 8 files changed, 238 insertions(+), 2 deletions(-) create mode 100644 Meshtastic/Assets.xcassets/RoundIcon.imageset/Contents.json create mode 100644 Meshtastic/Assets.xcassets/RoundIcon.imageset/RoundIcon@2x.png create mode 100644 Meshtastic/Assets.xcassets/RoundIcon.imageset/RoundIcon@3x.png create mode 100644 Meshtastic/CarPlay/CarPlaySceneDelegate.swift diff --git a/Meshtastic.xcodeproj/project.pbxproj b/Meshtastic.xcodeproj/project.pbxproj index 4a8369d0..05973189 100644 --- a/Meshtastic.xcodeproj/project.pbxproj +++ b/Meshtastic.xcodeproj/project.pbxproj @@ -107,6 +107,7 @@ DDAB580F2B0DAFBC00147258 /* LocationEntityExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAB580E2B0DAFBC00147258 /* LocationEntityExtension.swift */; }; DDAD49ED2AFB39DC00B4425D /* MeshMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAD49EC2AFB39DC00B4425D /* MeshMap.swift */; }; DDAF8C5326EB1DF10058C060 /* BLEManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF8C5226EB1DF10058C060 /* BLEManager.swift */; }; + DDB233CF2B5A140B00DA6FB1 /* CarPlaySceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB233CE2B5A140B00DA6FB1 /* CarPlaySceneDelegate.swift */; }; DDB6ABD628AE742000384BA1 /* BluetoothConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB6ABD528AE742000384BA1 /* BluetoothConfig.swift */; }; DDB6ABD928B0A4BA00384BA1 /* BluetoothModes.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB6ABD828B0A4BA00384BA1 /* BluetoothModes.swift */; }; DDB6ABDB28B0AC6000384BA1 /* DistanceText.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB6ABDA28B0AC6000384BA1 /* DistanceText.swift */; }; @@ -334,6 +335,7 @@ DDAB580E2B0DAFBC00147258 /* LocationEntityExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationEntityExtension.swift; sourceTree = ""; }; DDAD49EC2AFB39DC00B4425D /* MeshMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeshMap.swift; sourceTree = ""; }; DDAF8C5226EB1DF10058C060 /* BLEManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BLEManager.swift; sourceTree = ""; }; + DDB233CE2B5A140B00DA6FB1 /* CarPlaySceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarPlaySceneDelegate.swift; sourceTree = ""; }; DDB6ABD528AE742000384BA1 /* BluetoothConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BluetoothConfig.swift; sourceTree = ""; }; DDB6ABD828B0A4BA00384BA1 /* BluetoothModes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BluetoothModes.swift; sourceTree = ""; }; DDB6ABDA28B0AC6000384BA1 /* DistanceText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DistanceText.swift; sourceTree = ""; }; @@ -698,6 +700,14 @@ path = Protobufs; sourceTree = ""; }; + DDB233CD2B5A13C600DA6FB1 /* CarPlay */ = { + isa = PBXGroup; + children = ( + DDB233CE2B5A140B00DA6FB1 /* CarPlaySceneDelegate.swift */, + ); + path = CarPlay; + sourceTree = ""; + }; DDB75A122A0593CD006ED576 /* Map */ = { isa = PBXGroup; children = ( @@ -736,6 +746,7 @@ DDC2E15626CE248E0042C5E4 /* Meshtastic */ = { isa = PBXGroup; children = ( + DDB233CD2B5A13C600DA6FB1 /* CarPlay */, DD7709392AA1ABA1007A8BF0 /* Tips */, DD90860A26F645B700DC5189 /* Meshtastic.entitlements */, DD8ED9C6289CE4A100B3B0AB /* Enums */, @@ -1171,6 +1182,7 @@ DD5E5208298EE33B00D21B61 /* rtttl.pb.swift in Sources */, DD6193792863875F00E59241 /* SerialConfig.swift in Sources */, DDDB263F2AABEE20003AFCB7 /* NodeList.swift in Sources */, + DDB233CF2B5A140B00DA6FB1 /* CarPlaySceneDelegate.swift in Sources */, DDA0B6B2294CDC55001356EC /* Channels.swift in Sources */, DDE9659C2B1C3B6A00531070 /* RouteRecorder.swift in Sources */, DDB8F4102A9EE5B400230ECE /* Messages.swift in Sources */, diff --git a/Meshtastic/Assets.xcassets/RoundIcon.imageset/Contents.json b/Meshtastic/Assets.xcassets/RoundIcon.imageset/Contents.json new file mode 100644 index 00000000..0e5bd761 --- /dev/null +++ b/Meshtastic/Assets.xcassets/RoundIcon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "RoundIcon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "RoundIcon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Meshtastic/Assets.xcassets/RoundIcon.imageset/RoundIcon@2x.png b/Meshtastic/Assets.xcassets/RoundIcon.imageset/RoundIcon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7982bf51d107c5a569c22172a583119784d245fe GIT binary patch literal 75714 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 literal 0 HcmV?d00001 diff --git a/Meshtastic/Assets.xcassets/RoundIcon.imageset/RoundIcon@3x.png b/Meshtastic/Assets.xcassets/RoundIcon.imageset/RoundIcon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..1930c19e10b95b4aaaad90b72be1a36c6e714b1c GIT binary patch literal 160182 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 z

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 diff --git a/Meshtastic/CarPlay/CarPlaySceneDelegate.swift b/Meshtastic/CarPlay/CarPlaySceneDelegate.swift deleted file mode 100644 index c9a9a409..00000000 --- a/Meshtastic/CarPlay/CarPlaySceneDelegate.swift +++ /dev/null @@ -1,182 +0,0 @@ -// -// CarPlaySceneDelegate.swift -// Meshtastic -// -// Created by Garth Vander Houwen on 1/18/24. -// - -import Foundation -import CarPlay - -@objc class CarPlaySceneDelegate: NSObject, CPTemplateApplicationSceneDelegate { - - private var interfaceController: CPInterfaceController? - private var savedTabBarTemplate: CPTabBarTemplate? - - // https://developer.apple.com/documentation/carplay/displaying_content_in_carplay - // CarPlay calls this function to initialize the scene. - func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didConnect interfaceController: CPInterfaceController) { - // Save the interface controller - self.interfaceController = interfaceController - - let template = tabBarTemplate() - self.savedTabBarTemplate = template - - // Create the root template (screen) and install it at the root of the navigation hierarchy. - interfaceController.setRootTemplate(template, animated: true, completion: nil) - } - - func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didDisconnectInterfaceController interfaceController: CPInterfaceController) { - self.interfaceController = nil - } - - private func tabBarTemplate() -> CPTabBarTemplate { - return CPTabBarTemplate(templates: [ - channelListTemplate(), - listTemplate(), - // gridTemplate(), - // informationTemplate(layout: .leading) - ]) - } - - private func replaceTabs() { - self.savedTabBarTemplate?.updateTemplates([ - channelListTemplate(), - listTemplate(), - gridTemplate(), - informationTemplate(layout: .leading), - informationTemplate(layout: .leading), - ]) - } - - private func channelListTemplate() -> CPListTemplate { - let template = CPListTemplate( - title: "Channels", - sections: [ - CPListSection(items: [ - listItem(), - listItem(), - ], header: nil, sectionIndexTitle: nil), - ] - ) - template.tabTitle = "Channels" - template.tabImage = UIImage(systemName: "fibrechannel")// UIImage(named: "RoundIcon")! - - return template - } - - private func listTemplate() -> CPListTemplate { - let template = CPListTemplate( - title: "Direct Messages", - sections: [ - CPListSection(items: [ - listItem(), - listItem(), - ], header: nil, sectionIndexTitle: nil), - ] - ) - template.tabTitle = "Nodes" - template.tabImage = UIImage(systemName: "message.fill")// UIImage(named: "RoundIcon")! - - return template - } - - private func listItem() -> CPListTemplateItem { - let item = CPListItem(text: "Text", detailText: "Detail Text", image: UIImage(named: "RoundIcon")!, accessoryImage: nil, accessoryType: .none) - - item.handler = { [weak self] (item, completion) in - guard let self = self else { - completion() - return - } - - self.interfaceController?.pushTemplate( - self.listTemplate(), - animated: true, - completion: { (didPresent, error) in - completion() - } - ) - } - - return item - } - - private func gridTemplate() -> CPGridTemplate { - let template = CPGridTemplate( - title: "Grid Title", - gridButtons: [ - gridButton(), - gridButton(), - gridButton(), - gridButton(), - gridButton(), - gridButton(), - ] - ) - template.tabTitle = "Grid" - template.tabImage = UIImage(named: "RoundIcon")! - - return template - } - - private func gridButton() -> CPGridButton { - return CPGridButton( - titleVariants: [ - "Maybe a bit much too long of a title", - "Medium Title", - "Title" - ], - image: UIImage(named: "RoundIcon")!, - handler: { [weak self] button in - guard let self = self else { return } - self.interfaceController?.pushTemplate( - self.gridTemplate(), - animated: true, - completion: nil - ) - } - ) - } - - private func informationTemplate(layout: CPInformationTemplateLayout) -> CPInformationTemplate { - let template = CPInformationTemplate( - title: "Information Title", - layout: layout, - items: [ - CPInformationItem(title: "Item\nTitle\nThird\nFourth", detail: "Item\nDetail\nThird line\nFourth line"), - CPInformationItem(title: "Item Title", detail: nil), - CPInformationItem(title: "Item Title", detail: "Item Detail"), - CPInformationItem(title: "Item Title", detail: nil), - CPInformationItem(title: "Item Title Item Title Item Title Item Title Item Title", detail: "Item Detail Item Detail Item Detail Item Detail Item Detail "), - CPInformationItem(title: "Item Title", detail: nil), - ], - actions: [ - textButton(style: .confirm), - textButton(style: .normal), -// textButton(style: .cancel), - ] - ) - template.tabTitle = "Information" - template.tabImage = UIImage(named: "RoundIcon")! - - return template - } - - private func textButton(style: CPTextButtonStyle) -> CPTextButton{ - return CPTextButton( - title: "Text Button", - textStyle: style, - handler: { [weak self] button in - guard let self = self else { return } - self.interfaceController?.pushTemplate( - self.informationTemplate(layout: .twoColumn), - animated: true, - completion: nil - ) - -// self.replaceTabs() - } - ) - } -} From f2056aa1ac7b33533437fc1449d68986f3256d0f Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 20 Jan 2024 14:05:29 -0800 Subject: [PATCH 07/23] Add path to notifications --- Meshtastic/Helpers/BLEManager.swift | 8 ++- .../Helpers/LocalNotificationManager.swift | 17 ++++-- Meshtastic/Helpers/MeshPackets.swift | 57 ++++++++++++------- Meshtastic/Info.plist | 39 ++++++------- Meshtastic/MeshtasticApp.swift | 1 + Meshtastic/MeshtasticAppDelegate.swift | 2 + 6 files changed, 77 insertions(+), 47 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 26014859..2d7bcc77 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -215,7 +215,9 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate id: (peripheral.identifier.uuidString), title: "Radio Disconnected", subtitle: "\(peripheral.name ?? "unknown".localized)", - content: e.localizedDescription + content: e.localizedDescription, + target: "bluetooth", + path: "meshtastic://bluetooth" ) ] manager.schedule() @@ -233,7 +235,9 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate id: (peripheral.identifier.uuidString), title: "Radio Disconnected", subtitle: "\(peripheral.name ?? "unknown".localized)", - content: e.localizedDescription + content: e.localizedDescription, + target: "bluetooth", + path: "meshtastic://bluetooth" ) ] manager.schedule() diff --git a/Meshtastic/Helpers/LocalNotificationManager.swift b/Meshtastic/Helpers/LocalNotificationManager.swift index c5efe48e..5ae3df98 100644 --- a/Meshtastic/Helpers/LocalNotificationManager.swift +++ b/Meshtastic/Helpers/LocalNotificationManager.swift @@ -31,15 +31,19 @@ class LocalNotificationManager { // This function iterates over the Notification objects in the notifications array and schedules them for delivery in the future private func scheduleNotifications() { for notification in notifications { - let content = UNMutableNotificationContent() - content.subtitle = notification.subtitle - content.title = notification.title - content.body = notification.content - content.sound = .default - content.interruptionLevel = .timeSensitive + let content = UNMutableNotificationContent() + content.subtitle = notification.subtitle + content.title = notification.title + content.body = notification.content + content.sound = .default + content.interruptionLevel = .timeSensitive + if notification.target != nil { content.userInfo["target"] = notification.target } + if notification.path != nil { + content.userInfo["path"] = notification.path + } let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false) let request = UNNotificationRequest(identifier: notification.id, content: content, trigger: trigger) @@ -69,4 +73,5 @@ struct Notification { var subtitle: String var content: String var target: String? + var path: String? } diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index 3fab145b..a5a9b4f1 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -660,23 +660,37 @@ func telemetryPacket(packet: MeshPacket, connectedNode: Int64, context: NSManage // Connected Device Metrics // ------------------------ // Low Battery notification - if telemetry.batteryLevel > 0 && telemetry.batteryLevel < 5 { - let content = UNMutableNotificationContent() - content.title = "Critically Low Battery!" - content.body = "Time to charge your radio, there is \(telemetry.batteryLevel)% battery remaining." - content.userInfo["target"] = "node" - let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false) - let uuidString = UUID().uuidString - let request = UNNotificationRequest(identifier: uuidString, content: content, trigger: trigger) - let notificationCenter = UNUserNotificationCenter.current() - notificationCenter.add(request) { (error) in - if error != nil { - // Handle any errors. - print("Error creating local low battery notification: \(error?.localizedDescription ?? "no description")") - } else { - print("Created local low battery notification.") - } - } + if telemetry.batteryLevel > 0 && telemetry.batteryLevel < 4 { + let manager = LocalNotificationManager() + manager.notifications = [ + Notification( + id: ("notification.id.\(UUID().uuidString)"), + title: "Critically Low Battery!", + subtitle: "AKA \(telemetry.nodeTelemetry?.user?.shortName ?? "UNK")", + content: "Time to charge your radio, there is \(telemetry.batteryLevel)% battery remaining.", + target: "nodes", + path: "meshtastic://nodes/\(telemetry.nodeTelemetry?.num ?? 0)/devicetelemetrylog" + ) + ] + manager.schedule() + +// let content = UNMutableNotificationContent() +// content.title = "Critically Low Battery!" +// content.body = "Time to charge your radio, there is \(telemetry.batteryLevel)% battery remaining." +// content.userInfo["target"] = "node" +// content.userInfo["path"] = "meshtastic://node/\(telemetry.nodeTelemetry?.num ?? 0)" +// let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false) +// let uuidString = UUID().uuidString +// let request = UNNotificationRequest(identifier: uuidString, content: content, trigger: trigger) +// let notificationCenter = UNUserNotificationCenter.current() +// notificationCenter.add(request) { (error) in +// if error != nil { +// // Handle any errors. +// print("Error creating local low battery notification: \(error?.localizedDescription ?? "no description")") +// } else { +// print("Created local low battery notification.") +// } +// } } // Update our live activity if there is one running, not available on mac iOS >= 16.2 #if !targetEnvironment(macCatalyst) @@ -781,7 +795,8 @@ func textMessageAppPacket(packet: MeshPacket, blockRangeTest: Bool, connectedNod title: "\(newMessage.fromUser?.longName ?? "unknown".localized)", subtitle: "AKA \(newMessage.fromUser?.shortName ?? "?")", content: messageText, - target: "message" + target: "message", + path: "meshtastic://messages/dm/user/\(newMessage.fromUser?.num ?? 0)/message/\(newMessage.messageId)" ) ] manager.schedule() @@ -812,7 +827,8 @@ func textMessageAppPacket(packet: MeshPacket, blockRangeTest: Bool, connectedNod title: "\(newMessage.fromUser?.longName ?? "unknown".localized)", subtitle: "AKA \(newMessage.fromUser?.shortName ?? "?")", content: messageText, - target: "message") + target: "message", + path: "meshtastic://messages/channel/\(newMessage.messageId)") ] manager.schedule() print("💬 iOS Notification Scheduled for text message from \(newMessage.fromUser?.longName ?? "unknown".localized)") @@ -878,7 +894,8 @@ func waypointPacket (packet: MeshPacket, context: NSManagedObjectContext) { title: "New Waypoint Received", subtitle: "\(icon) \(waypoint.name ?? "Dropped Pin")", content: "\(waypoint.longDescription ?? "\(latitude), \(longitude)")", - target: "map" + target: "map", + path: "meshtastic://map/waypoint/\(waypoint.id)" ) ] manager.schedule() diff --git a/Meshtastic/Info.plist b/Meshtastic/Info.plist index ae02c2b4..a2fde04b 100644 --- a/Meshtastic/Info.plist +++ b/Meshtastic/Info.plist @@ -31,6 +31,21 @@ $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString $(MARKETING_VERSION) + CFBundleURLTypes + + + CFBundleTypeRole + Viewer + CFBundleURLIconFile + alpha + CFBundleURLName + org.meshtastic + CFBundleURLSchemes + + meshtastic + + + CFBundleVersion $(CURRENT_PROJECT_VERSION) INIntentsSupported @@ -52,17 +67,17 @@ NSBluetoothAlwaysUsageDescription We use bluetooth to connect to nearby Meshtastic Devices NSBluetoothPeripheralUsageDescription - Bluetooth is used to connect an iPhone to a user's meshtastic device to allow text messaging and location data for the mesh network. + Bluetooth is used to connect an iPhone to a user's meshtastic device to allow text messaging and location data for the mesh network. NSCameraUsageDescription We use the camera to share channels using a QR Code + NSLocationAlwaysAndWhenInUseUsageDescription + We use your location to display it on the mesh map as well as to have GPS coordinatess to send to the connected device. Route Recording uses location in the background. + NSLocationAlwaysUsageDescription + We use your location to display it on the mesh map as well as to have GPS coordinatess to send to the connected device. NSLocationUsageDescription We use your location to display it on the mesh map as well as to have GPS coordinatess to send to the connected device. NSLocationWhenInUseUsageDescription We use your location to display it on the mesh map as well as to have GPS coordinatess to send to the connected device. - NSLocationAlwaysUsageDescription - We use your location to display it on the mesh map as well as to have GPS coordinatess to send to the connected device. - NSLocationAlwaysAndWhenInUseUsageDescription - We use your location to display it on the mesh map as well as to have GPS coordinatess to send to the connected device. Route Recording uses location in the background. NSSupportsLiveActivities Privacy – Bluetooth Always Usage Description @@ -71,20 +86,6 @@ UIApplicationSupportsMultipleScenes - UISceneConfigurations - - CPTemplateApplicationSceneSessionRoleApplication - - - UISceneClassName - CPTemplateApplicationScene - UISceneDelegateClassName - $(SWIFT_MODULE_NAME).CarPlaySceneDelegate - UISceneConfigurationName - CarPlay scene - - - UIApplicationSupportsIndirectInputEvents diff --git a/Meshtastic/MeshtasticApp.swift b/Meshtastic/MeshtasticApp.swift index 48e4c020..e21b96e9 100644 --- a/Meshtastic/MeshtasticApp.swift +++ b/Meshtastic/MeshtasticApp.swift @@ -153,4 +153,5 @@ class AppState: ObservableObject { @Published var unreadChannelMessages: Int = 0 @Published var firmwareVersion: String = "0.0.0" @Published var connectedNode: NodeInfoEntity? + @Published var navigationPath: String? } diff --git a/Meshtastic/MeshtasticAppDelegate.swift b/Meshtastic/MeshtasticAppDelegate.swift index ab108787..94a6df6c 100644 --- a/Meshtastic/MeshtasticAppDelegate.swift +++ b/Meshtastic/MeshtasticAppDelegate.swift @@ -33,6 +33,8 @@ class MeshtasticAppDelegate: NSObject, UIApplicationDelegate, UNUserNotification func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { let userInfo = response.notification.request.content.userInfo let targetValue = userInfo["target"] as? String + AppState.shared.navigationPath = userInfo["path"] as? String + print("\(AppState.shared.navigationPath ?? "EMPTY")") if targetValue == "map" { AppState.shared.tabSelection = Tab.map } else if targetValue == "message" { From 680a82f152779ab8c06888f258059d603509e5c4 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 20 Jan 2024 17:34:57 -0800 Subject: [PATCH 08/23] Update protos, at ignoreMQTT lora config setting --- Meshtastic.xcodeproj/project.pbxproj | 4 +- .../Meshtastic.xcdatamodeld/.xccurrentversion | 2 +- .../contents | 410 ++++++++++++++++++ .../Protobufs/meshtastic/apponly.pb.swift | 87 ++-- .../Protobufs/meshtastic/config.pb.swift | 10 + Meshtastic/Protobufs/meshtastic/mesh.pb.swift | 33 ++ .../Views/Settings/Config/LoRaConfig.swift | 13 + 7 files changed, 532 insertions(+), 27 deletions(-) create mode 100644 Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 24.xcdatamodel/contents diff --git a/Meshtastic.xcodeproj/project.pbxproj b/Meshtastic.xcodeproj/project.pbxproj index 4a8369d0..cb6e47ba 100644 --- a/Meshtastic.xcodeproj/project.pbxproj +++ b/Meshtastic.xcodeproj/project.pbxproj @@ -334,6 +334,7 @@ DDAB580E2B0DAFBC00147258 /* LocationEntityExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationEntityExtension.swift; sourceTree = ""; }; DDAD49EC2AFB39DC00B4425D /* MeshMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeshMap.swift; sourceTree = ""; }; DDAF8C5226EB1DF10058C060 /* BLEManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BLEManager.swift; sourceTree = ""; }; + DDB234392B5CA9B000DA6FB1 /* MeshtasticDataModelV 24.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "MeshtasticDataModelV 24.xcdatamodel"; sourceTree = ""; }; DDB6ABD528AE742000384BA1 /* BluetoothConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BluetoothConfig.swift; sourceTree = ""; }; DDB6ABD828B0A4BA00384BA1 /* BluetoothModes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BluetoothModes.swift; sourceTree = ""; }; DDB6ABDA28B0AC6000384BA1 /* DistanceText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DistanceText.swift; sourceTree = ""; }; @@ -1791,6 +1792,7 @@ DD3CC6BA28E366DF00FA9159 /* Meshtastic.xcdatamodeld */ = { isa = XCVersionGroup; children = ( + DDB234392B5CA9B000DA6FB1 /* MeshtasticDataModelV 24.xcdatamodel */, DD33DB602B3D1ECC003E1EA0 /* MeshtasticDataModelV 23.xcdatamodel */, DD295CE92B323ED9002CC4AC /* MeshtasticDataModelV22.xcdatamodel */, DD3619132B1EE20700C41C8C /* MeshtasticDataModelV21.xcdatamodel */, @@ -1815,7 +1817,7 @@ DD5D0A9A2931AD6B00F7EA61 /* MeshtasticDataModelV2.xcdatamodel */, DD3CC6BB28E366DF00FA9159 /* MeshtasticDataModel.xcdatamodel */, ); - currentVersion = DD33DB602B3D1ECC003E1EA0 /* MeshtasticDataModelV 23.xcdatamodel */; + currentVersion = DDB234392B5CA9B000DA6FB1 /* MeshtasticDataModelV 24.xcdatamodel */; name = Meshtastic.xcdatamodeld; path = Meshtastic/Meshtastic.xcdatamodeld; sourceTree = ""; diff --git a/Meshtastic/Meshtastic.xcdatamodeld/.xccurrentversion b/Meshtastic/Meshtastic.xcdatamodeld/.xccurrentversion index 550e3369..66c74a0d 100644 --- a/Meshtastic/Meshtastic.xcdatamodeld/.xccurrentversion +++ b/Meshtastic/Meshtastic.xcdatamodeld/.xccurrentversion @@ -3,6 +3,6 @@ _XCCurrentVersionName - MeshtasticDataModelV 23.xcdatamodel + MeshtasticDataModelV 24.xcdatamodel diff --git a/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 24.xcdatamodel/contents b/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 24.xcdatamodel/contents new file mode 100644 index 00000000..be02a857 --- /dev/null +++ b/Meshtastic/Meshtastic.xcdatamodeld/MeshtasticDataModelV 24.xcdatamodel/contents @@ -0,0 +1,410 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Meshtastic/Protobufs/meshtastic/apponly.pb.swift b/Meshtastic/Protobufs/meshtastic/apponly.pb.swift index dfa98782..ffce4849 100644 --- a/Meshtastic/Protobufs/meshtastic/apponly.pb.swift +++ b/Meshtastic/Protobufs/meshtastic/apponly.pb.swift @@ -33,24 +33,27 @@ struct ChannelSet { /// /// Channel list with settings - var settings: [ChannelSettings] = [] + var settings: [ChannelSettings] { + get {return _storage._settings} + set {_uniqueStorage()._settings = newValue} + } /// /// LoRa config var loraConfig: Config.LoRaConfig { - get {return _loraConfig ?? Config.LoRaConfig()} - set {_loraConfig = newValue} + get {return _storage._loraConfig ?? Config.LoRaConfig()} + set {_uniqueStorage()._loraConfig = newValue} } /// Returns true if `loraConfig` has been explicitly set. - var hasLoraConfig: Bool {return self._loraConfig != nil} + var hasLoraConfig: Bool {return _storage._loraConfig != nil} /// Clears the value of `loraConfig`. Subsequent reads from it will return its default value. - mutating func clearLoraConfig() {self._loraConfig = nil} + mutating func clearLoraConfig() {_uniqueStorage()._loraConfig = nil} var unknownFields = SwiftProtobuf.UnknownStorage() init() {} - fileprivate var _loraConfig: Config.LoRaConfig? = nil + fileprivate var _storage = _StorageClass.defaultInstance } #if swift(>=5.5) && canImport(_Concurrency) @@ -68,36 +71,70 @@ extension ChannelSet: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio 2: .standard(proto: "lora_config"), ] + fileprivate class _StorageClass { + var _settings: [ChannelSettings] = [] + var _loraConfig: Config.LoRaConfig? = nil + + static let defaultInstance = _StorageClass() + + private init() {} + + init(copying source: _StorageClass) { + _settings = source._settings + _loraConfig = source._loraConfig + } + } + + fileprivate mutating func _uniqueStorage() -> _StorageClass { + if !isKnownUniquelyReferenced(&_storage) { + _storage = _StorageClass(copying: _storage) + } + return _storage + } + mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - // The use of inline closures is to circumvent an issue where the compiler - // allocates stack space for every case branch when no optimizations are - // enabled. https://github.com/apple/swift-protobuf/issues/1034 - switch fieldNumber { - case 1: try { try decoder.decodeRepeatedMessageField(value: &self.settings) }() - case 2: try { try decoder.decodeSingularMessageField(value: &self._loraConfig) }() - default: break + _ = _uniqueStorage() + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeRepeatedMessageField(value: &_storage._settings) }() + case 2: try { try decoder.decodeSingularMessageField(value: &_storage._loraConfig) }() + default: break + } } } } func traverse(visitor: inout V) throws { - // The use of inline closures is to circumvent an issue where the compiler - // allocates stack space for every if/case branch local when no optimizations - // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and - // https://github.com/apple/swift-protobuf/issues/1182 - if !self.settings.isEmpty { - try visitor.visitRepeatedMessageField(value: self.settings, fieldNumber: 1) + try withExtendedLifetime(_storage) { (_storage: _StorageClass) in + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + if !_storage._settings.isEmpty { + try visitor.visitRepeatedMessageField(value: _storage._settings, fieldNumber: 1) + } + try { if let v = _storage._loraConfig { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } }() } - try { if let v = self._loraConfig { - try visitor.visitSingularMessageField(value: v, fieldNumber: 2) - } }() try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: ChannelSet, rhs: ChannelSet) -> Bool { - if lhs.settings != rhs.settings {return false} - if lhs._loraConfig != rhs._loraConfig {return false} + if lhs._storage !== rhs._storage { + let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in + let _storage = _args.0 + let rhs_storage = _args.1 + if _storage._settings != rhs_storage._settings {return false} + if _storage._loraConfig != rhs_storage._loraConfig {return false} + return true + } + if !storagesAreEqual {return false} + } if lhs.unknownFields != rhs.unknownFields {return false} return true } diff --git a/Meshtastic/Protobufs/meshtastic/config.pb.swift b/Meshtastic/Protobufs/meshtastic/config.pb.swift index 5fc6a263..b984ef22 100644 --- a/Meshtastic/Protobufs/meshtastic/config.pb.swift +++ b/Meshtastic/Protobufs/meshtastic/config.pb.swift @@ -1044,6 +1044,10 @@ struct Config { /// in ignore_incoming will have packets they send dropped on receive (by router.cpp) var ignoreIncoming: [UInt32] = [] + /// + /// If true, the device will not process any packets received via LoRa that passed via MQTT anywhere on the path towards it. + var ignoreMqtt: Bool = false + var unknownFields = SwiftProtobuf.UnknownStorage() enum RegionCode: SwiftProtobuf.Enum { @@ -2220,6 +2224,7 @@ extension Config.LoRaConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplem 13: .standard(proto: "sx126x_rx_boosted_gain"), 14: .standard(proto: "override_frequency"), 103: .standard(proto: "ignore_incoming"), + 104: .standard(proto: "ignore_mqtt"), ] mutating func decodeMessage(decoder: inout D) throws { @@ -2243,6 +2248,7 @@ extension Config.LoRaConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplem case 13: try { try decoder.decodeSingularBoolField(value: &self.sx126XRxBoostedGain) }() case 14: try { try decoder.decodeSingularFloatField(value: &self.overrideFrequency) }() case 103: try { try decoder.decodeRepeatedUInt32Field(value: &self.ignoreIncoming) }() + case 104: try { try decoder.decodeSingularBoolField(value: &self.ignoreMqtt) }() default: break } } @@ -2294,6 +2300,9 @@ extension Config.LoRaConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplem if !self.ignoreIncoming.isEmpty { try visitor.visitPackedUInt32Field(value: self.ignoreIncoming, fieldNumber: 103) } + if self.ignoreMqtt != false { + try visitor.visitSingularBoolField(value: self.ignoreMqtt, fieldNumber: 104) + } try unknownFields.traverse(visitor: &visitor) } @@ -2313,6 +2322,7 @@ extension Config.LoRaConfig: SwiftProtobuf.Message, SwiftProtobuf._MessageImplem if lhs.sx126XRxBoostedGain != rhs.sx126XRxBoostedGain {return false} if lhs.overrideFrequency != rhs.overrideFrequency {return false} if lhs.ignoreIncoming != rhs.ignoreIncoming {return false} + if lhs.ignoreMqtt != rhs.ignoreMqtt {return false} if lhs.unknownFields != rhs.unknownFields {return false} return true } diff --git a/Meshtastic/Protobufs/meshtastic/mesh.pb.swift b/Meshtastic/Protobufs/meshtastic/mesh.pb.swift index b8ebf212..31ebb6a2 100644 --- a/Meshtastic/Protobufs/meshtastic/mesh.pb.swift +++ b/Meshtastic/Protobufs/meshtastic/mesh.pb.swift @@ -220,6 +220,16 @@ enum HardwareModel: SwiftProtobuf.Enum { /// EBYTE SPI LoRa module and ESP32-S3 case ebyteEsp32S3 // = 54 + /// + /// Waveshare ESP32-S3-PICO with PICO LoRa HAT and 2.9inch e-Ink + case esp32S3Pico // = 55 + + /// + /// CircuitMess Chatter 2 LLCC68 Lora Module and ESP32 Wroom + /// Lora module can be swapped out for a Heltec RA-62 which is "almost" pin compatible + /// with one cut and one jumper Meshtastic works + case chatter2 // = 56 + /// /// ------------------------------------------------------------------------------------------------------------------------------------------ /// Reserved ID For developing private Ports. These will show up in live traffic sparsely, so we can use a high number. Keep it within 8 bits. @@ -280,6 +290,8 @@ enum HardwareModel: SwiftProtobuf.Enum { case 52: self = .picomputerS3 case 53: self = .heltecHt62 case 54: self = .ebyteEsp32S3 + case 55: self = .esp32S3Pico + case 56: self = .chatter2 case 255: self = .privateHw default: self = .UNRECOGNIZED(rawValue) } @@ -334,6 +346,8 @@ enum HardwareModel: SwiftProtobuf.Enum { case .picomputerS3: return 52 case .heltecHt62: return 53 case .ebyteEsp32S3: return 54 + case .esp32S3Pico: return 55 + case .chatter2: return 56 case .privateHw: return 255 case .UNRECOGNIZED(let i): return i } @@ -393,6 +407,8 @@ extension HardwareModel: CaseIterable { .picomputerS3, .heltecHt62, .ebyteEsp32S3, + .esp32S3Pico, + .chatter2, .privateHw, ] } @@ -1498,6 +1514,13 @@ struct MeshPacket { set {_uniqueStorage()._delayed = newValue} } + /// + /// Describes whether this packet passed via MQTT somewhere along the path it currently took. + var viaMqtt: Bool { + get {return _storage._viaMqtt} + set {_uniqueStorage()._viaMqtt = newValue} + } + var unknownFields = SwiftProtobuf.UnknownStorage() enum OneOf_PayloadVariant: Equatable { @@ -2570,6 +2593,8 @@ extension HardwareModel: SwiftProtobuf._ProtoNameProviding { 52: .same(proto: "PICOMPUTER_S3"), 53: .same(proto: "HELTEC_HT62"), 54: .same(proto: "EBYTE_ESP32_S3"), + 55: .same(proto: "ESP32_S3_PICO"), + 56: .same(proto: "CHATTER_2"), 255: .same(proto: "PRIVATE_HW"), ] } @@ -3285,6 +3310,7 @@ extension MeshPacket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio 11: .same(proto: "priority"), 12: .standard(proto: "rx_rssi"), 13: .same(proto: "delayed"), + 14: .standard(proto: "via_mqtt"), ] fileprivate class _StorageClass { @@ -3300,6 +3326,7 @@ extension MeshPacket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio var _priority: MeshPacket.Priority = .unset var _rxRssi: Int32 = 0 var _delayed: MeshPacket.Delayed = .noDelay + var _viaMqtt: Bool = false static let defaultInstance = _StorageClass() @@ -3318,6 +3345,7 @@ extension MeshPacket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio _priority = source._priority _rxRssi = source._rxRssi _delayed = source._delayed + _viaMqtt = source._viaMqtt } } @@ -3368,6 +3396,7 @@ extension MeshPacket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio case 11: try { try decoder.decodeSingularEnumField(value: &_storage._priority) }() case 12: try { try decoder.decodeSingularInt32Field(value: &_storage._rxRssi) }() case 13: try { try decoder.decodeSingularEnumField(value: &_storage._delayed) }() + case 14: try { try decoder.decodeSingularBoolField(value: &_storage._viaMqtt) }() default: break } } @@ -3424,6 +3453,9 @@ extension MeshPacket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio if _storage._delayed != .noDelay { try visitor.visitSingularEnumField(value: _storage._delayed, fieldNumber: 13) } + if _storage._viaMqtt != false { + try visitor.visitSingularBoolField(value: _storage._viaMqtt, fieldNumber: 14) + } } try unknownFields.traverse(visitor: &visitor) } @@ -3445,6 +3477,7 @@ extension MeshPacket: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementatio if _storage._priority != rhs_storage._priority {return false} if _storage._rxRssi != rhs_storage._rxRssi {return false} if _storage._delayed != rhs_storage._delayed {return false} + if _storage._viaMqtt != rhs_storage._viaMqtt {return false} return true } if !storagesAreEqual {return false} diff --git a/Meshtastic/Views/Settings/Config/LoRaConfig.swift b/Meshtastic/Views/Settings/Config/LoRaConfig.swift index ceb142e8..b746dfcb 100644 --- a/Meshtastic/Views/Settings/Config/LoRaConfig.swift +++ b/Meshtastic/Views/Settings/Config/LoRaConfig.swift @@ -43,6 +43,7 @@ struct LoRaConfig: View { @State var codingRate = 0 @State var rxBoostedGain = false @State var overrideFrequency: Float = 0.0 + @State var ignoreMqtt = false let floatFormatter: NumberFormatter = { let formatter = NumberFormatter() @@ -111,6 +112,11 @@ struct LoRaConfig: View { } } Section(header: Text("Advanced")) { + + Toggle(isOn: $ignoreMqtt) { + Label("Ignore MQTT", systemImage: "server.rack") + } + .toggleStyle(SwitchToggleStyle(tint: .accentColor)) Toggle(isOn: $txEnabled) { Label("Transmit Enabled", systemImage: "waveform.path") @@ -227,6 +233,7 @@ struct LoRaConfig: View { lc.spreadFactor = UInt32(spreadFactor) lc.sx126XRxBoostedGain = rxBoostedGain lc.overrideFrequency = overrideFrequency + lc.ignoreMqtt = ignoreMqtt let adminMessageId = bleManager.saveLoRaConfig(config: lc, fromUser: connectedNode!.user!, toUser: node!.user!, adminIndex: connectedNode?.myInfo?.adminIndex ?? 0) if adminMessageId > 0 { // Should show a saved successfully alert once I know that to be true @@ -319,6 +326,11 @@ struct LoRaConfig: View { if newTxEnabled != node!.loRaConfig!.txEnabled { hasChanges = true } } } + .onChange(of: ignoreMqtt) { newIgnoreMqtt in + if node != nil && node!.loRaConfig != nil { + if newIgnoreMqtt != node!.loRaConfig!.ignoreMqtt { hasChanges = true } + } + } } func setLoRaValues() { self.hopLimit = Int(node?.loRaConfig?.hopLimit ?? 3) @@ -333,6 +345,7 @@ struct LoRaConfig: View { self.spreadFactor = Int(node?.loRaConfig?.spreadFactor ?? 0) self.rxBoostedGain = node?.loRaConfig?.sx126xRxBoostedGain ?? false self.overrideFrequency = node?.loRaConfig?.overrideFrequency ?? 0.0 + self.ignoreMqtt = node?.loRaConfig?.ignoreMqtt ?? false self.hasChanges = false } } From e2872b34c9f8688709635473ecf988d9621b532a Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 20 Jan 2024 19:14:20 -0800 Subject: [PATCH 09/23] Link to waypoint directly from new waypoint notification --- Meshtastic/Helpers/MeshPackets.swift | 2 +- Meshtastic/Views/Nodes/MeshMap.swift | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index a5a9b4f1..bf47bc0f 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -895,7 +895,7 @@ func waypointPacket (packet: MeshPacket, context: NSManagedObjectContext) { subtitle: "\(icon) \(waypoint.name ?? "Dropped Pin")", content: "\(waypoint.longDescription ?? "\(latitude), \(longitude)")", target: "map", - path: "meshtastic://map/waypoint/\(waypoint.id)" + path: "meshtastic://open-waypoint?id=\(waypoint.id)" ) ] manager.schedule() diff --git a/Meshtastic/Views/Nodes/MeshMap.swift b/Meshtastic/Views/Nodes/MeshMap.swift index 621e9f08..98adbe69 100644 --- a/Meshtastic/Views/Nodes/MeshMap.swift +++ b/Meshtastic/Views/Nodes/MeshMap.swift @@ -334,6 +334,29 @@ struct MeshMap: View { case .offline: mapStyle = MapStyle.hybrid(elevation: .realistic, pointsOfInterest: showPointsOfInterest ? .all : .excludingAll, showsTraffic: showTraffic) } + if ((appState.navigationPath?.hasPrefix("meshtastic://open-waypoint")) != nil) { + guard let url = URL(string: appState.navigationPath ?? "NONE") else { + print("Invalid URL") + return + } + guard let components = URLComponents(url: url, resolvingAgainstBaseURL: true) else { + print("Invalid URL Components") + return + } + guard let action = components.host, action == "open-waypoint" else { + print("Unknown waypoint URL action") + return + } + guard let waypointId = components.queryItems?.first(where: { $0.name == "id" })?.value else { + print("Waypoint name not found") + return + } + guard let waypoint = waypoints.first(where: { $0.id == Int64(waypointId) }) else { + print("Waypoint name not found") + return + } + position = .camera(MapCamera(centerCoordinate: waypoint.coordinate, distance: 150, heading: 0, pitch: 60)) + } } .onDisappear(perform: { UIApplication.shared.isIdleTimerDisabled = false From 3424523d9840478108a1eb3e9651d2e5f73d4abc Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 20 Jan 2024 19:33:11 -0800 Subject: [PATCH 10/23] Move waypoint deep linking into onchange event --- Meshtastic/Views/Nodes/MeshMap.swift | 49 +++++++++++++++------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/Meshtastic/Views/Nodes/MeshMap.swift b/Meshtastic/Views/Nodes/MeshMap.swift index 98adbe69..7aedb205 100644 --- a/Meshtastic/Views/Nodes/MeshMap.swift +++ b/Meshtastic/Views/Nodes/MeshMap.swift @@ -253,6 +253,32 @@ struct MeshMap: View { .sheet(isPresented: $isEditingSettings) { MapSettingsForm(nodeHistory: $showNodeHistory, routeLines: $showRouteLines, convexHull: $showConvexHull, traffic: $showTraffic, pointsOfInterest: $showPointsOfInterest, mapLayer: $selectedMapLayer) } + .onChange(of: (appState.navigationPath)) { newPath in + + if ((newPath?.hasPrefix("meshtastic://open-waypoint")) != nil) { + guard let url = URL(string: appState.navigationPath ?? "NONE") else { + print("Invalid URL") + return + } + guard let components = URLComponents(url: url, resolvingAgainstBaseURL: true) else { + print("Invalid URL Components") + return + } + guard let action = components.host, action == "open-waypoint" else { + print("Unknown waypoint URL action") + return + } + guard let waypointId = components.queryItems?.first(where: { $0.name == "id" })?.value else { + print("Waypoint id not found") + return + } + guard let waypoint = waypoints.first(where: { $0.id == Int64(waypointId) }) else { + print("Waypoint not found") + return + } + position = .camera(MapCamera(centerCoordinate: waypoint.coordinate, distance: 150, heading: 0, pitch: 60)) + } + } .onChange(of: (selectedMapLayer)) { newMapLayer in switch selectedMapLayer { case .standard: @@ -334,29 +360,6 @@ struct MeshMap: View { case .offline: mapStyle = MapStyle.hybrid(elevation: .realistic, pointsOfInterest: showPointsOfInterest ? .all : .excludingAll, showsTraffic: showTraffic) } - if ((appState.navigationPath?.hasPrefix("meshtastic://open-waypoint")) != nil) { - guard let url = URL(string: appState.navigationPath ?? "NONE") else { - print("Invalid URL") - return - } - guard let components = URLComponents(url: url, resolvingAgainstBaseURL: true) else { - print("Invalid URL Components") - return - } - guard let action = components.host, action == "open-waypoint" else { - print("Unknown waypoint URL action") - return - } - guard let waypointId = components.queryItems?.first(where: { $0.name == "id" })?.value else { - print("Waypoint name not found") - return - } - guard let waypoint = waypoints.first(where: { $0.id == Int64(waypointId) }) else { - print("Waypoint name not found") - return - } - position = .camera(MapCamera(centerCoordinate: waypoint.coordinate, distance: 150, heading: 0, pitch: 60)) - } } .onDisappear(perform: { UIApplication.shared.isIdleTimerDisabled = false From 7f1f79b8373f4e9cf31c9ad52e7a582aa613749a Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 20 Jan 2024 19:49:29 -0800 Subject: [PATCH 11/23] Use time again on the mesh map. Back to a week --- Meshtastic/Views/Nodes/MeshMap.swift | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Meshtastic/Views/Nodes/MeshMap.swift b/Meshtastic/Views/Nodes/MeshMap.swift index 7aedb205..7dd7d8db 100644 --- a/Meshtastic/Views/Nodes/MeshMap.swift +++ b/Meshtastic/Views/Nodes/MeshMap.swift @@ -44,9 +44,8 @@ struct MeshMap: View { var delay: Double = 0 @State private var scale: CGFloat = 0.5 - /// "time >= %@ && nodePosition != nil && latest == true" @FetchRequest(sortDescriptors: [NSSortDescriptor(key: "time", ascending: true)], - predicate: NSPredicate(format: "nodePosition != nil && latest == true", Calendar.current.date(byAdding: .day, value: -30, to: Date())! as NSDate), animation: .none) + predicate: NSPredicate(format: "nodePosition != nil && latest == true && time >= %@", Calendar.current.date(byAdding: .day, value: -7, to: Date())! as NSDate), animation: .none) private var positions: FetchedResults @FetchRequest(sortDescriptors: [NSSortDescriptor(key: "name", ascending: false)], From 8cce8e97748c760a5e5477b38ed60fce001f1bd9 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 20 Jan 2024 21:25:02 -0800 Subject: [PATCH 12/23] Add toggle to connect and disconnect from the mqtt server when client proxy is enabled. --- .../Settings/Config/Module/MQTTConfig.swift | 22 ++++++++++++++++++- de.lproj/Localizable.strings | 2 ++ en.lproj/Localizable.strings | 2 ++ pl.lproj/Localizable.strings | 2 ++ zh-Hans.lproj/Localizable.strings | 2 ++ 5 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Meshtastic/Views/Settings/Config/Module/MQTTConfig.swift b/Meshtastic/Views/Settings/Config/Module/MQTTConfig.swift index 6a6ba7e0..ce8c52b5 100644 --- a/Meshtastic/Views/Settings/Config/Module/MQTTConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/MQTTConfig.swift @@ -23,6 +23,7 @@ struct MQTTConfig: View { @State var jsonEnabled = false @State var tlsEnabled = true @State var root = "msh" + @State var mqttConnected: Bool = false var body: some View { VStack { @@ -54,6 +55,7 @@ struct MQTTConfig: View { .foregroundColor(.orange) } Section(header: Text("options")) { + Toggle(isOn: $enabled) { Label("enabled", systemImage: "dot.radiowaves.right") @@ -64,7 +66,13 @@ struct MQTTConfig: View { Label("mqtt.clientproxy", systemImage: "iphone.radiowaves.left.and.right") } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) - Text("If both MQTT and the client proxy are enabled your mobile device will utalize an available network connection to connect to the specified MQTT server.") + if enabled && proxyToClientEnabled { + Toggle(isOn: $mqttConnected) { + Label(mqttConnected ? "mqtt.disconnect".localized : "mqtt.connect".localized, systemImage: "server.rack") + } + .toggleStyle(SwitchToggleStyle(tint: .accentColor)) + } + Text("If both MQTT and the client proxy are enabled your mobile device will utilize an available network connection to connect to the specified MQTT server.") .font(.caption2) Toggle(isOn: $encryptionEnabled) { @@ -314,6 +322,17 @@ struct MQTTConfig: View { if newTlsEnabled != node!.mqttConfig!.tlsEnabled { hasChanges = true } } } + .onChange(of: mqttConnected) { newMqttConnected in + if newMqttConnected == false { + if bleManager.mqttProxyConnected { + bleManager.mqttManager.disconnect() + } + } else { + if !bleManager.mqttProxyConnected && node != nil { + bleManager.mqttManager.connectFromConfigSettings(node: node!) + } + } + } } func setMqttValues() { self.enabled = (node?.mqttConfig?.enabled ?? false) @@ -325,6 +344,7 @@ struct MQTTConfig: View { self.encryptionEnabled = (node?.mqttConfig?.encryptionEnabled ?? false) self.jsonEnabled = (node?.mqttConfig?.jsonEnabled ?? false) self.tlsEnabled = (node?.mqttConfig?.tlsEnabled ?? false) + self.mqttConnected = bleManager.mqttProxyConnected self.hasChanges = false } } diff --git a/de.lproj/Localizable.strings b/de.lproj/Localizable.strings index 1b6b3060..8ef6b857 100644 --- a/de.lproj/Localizable.strings +++ b/de.lproj/Localizable.strings @@ -198,8 +198,10 @@ "mode"="Modus"; "module.configuration"="Modul Konfiguration"; "mqtt"="MQTT"; +"mqtt.connect"="Connect to MQTT"; "mqtt.config"="MQTT Config"; "mqtt.clientproxy"="MQTT Client Proxy"; +"mqtt.disconnect"="Disconnect from MQTT"; "mqtt.username"="Benutzername"; "name"="Name"; "network"="Netzwerk"; diff --git a/en.lproj/Localizable.strings b/en.lproj/Localizable.strings index aeb1b117..3a5ab36e 100644 --- a/en.lproj/Localizable.strings +++ b/en.lproj/Localizable.strings @@ -202,8 +202,10 @@ "mode"="Mode"; "module.configuration"="Module Configuration"; "mqtt"="MQTT"; +"mqtt.connect"="Connect to MQTT"; "mqtt.config"="MQTT Config"; "mqtt.clientproxy"="MQTT Client Proxy"; +"mqtt.disconnect"="Disconnect from MQTT"; "mqtt.username"="Username"; "name"="Name"; "network"="Network"; diff --git a/pl.lproj/Localizable.strings b/pl.lproj/Localizable.strings index db76ed47..73b8cef2 100644 --- a/pl.lproj/Localizable.strings +++ b/pl.lproj/Localizable.strings @@ -200,8 +200,10 @@ "mode"="Tryb"; "module.configuration"="Konfiguracja modułu"; "mqtt"="MQTT"; +"mqtt.connect"="Connect to MQTT"; "mqtt.config"="Konfiguracja MQTT"; "mqtt.clientproxy"="Klient Proxy MQTT"; +"mqtt.disconnect"="Disconnect from MQTT"; "mqtt.username"="Nazwa użytkownika"; "name"="Nazwa"; "network"="Sieć"; diff --git a/zh-Hans.lproj/Localizable.strings b/zh-Hans.lproj/Localizable.strings index ed5d4d3e..1b9411d7 100644 --- a/zh-Hans.lproj/Localizable.strings +++ b/zh-Hans.lproj/Localizable.strings @@ -198,8 +198,10 @@ "mode"="模式"; "module.configuration"="模块配置"; "mqtt"="MQTT"; +"mqtt.connect"="Connect to MQTT"; "mqtt.config"="MQTT 配置"; "mqtt.clientproxy"="MQTT 客户端代理"; +"mqtt.disconnect"="Disconnect from MQTT"; "mqtt.username"="用户名称"; "name"="名称"; "network"="网络"; From acc6eb017dfa6ff269a6772b5271b075c4828709 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 20 Jan 2024 21:32:36 -0800 Subject: [PATCH 13/23] Add ignoremqtt to qr code --- Meshtastic/Views/Settings/ShareChannels.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Meshtastic/Views/Settings/ShareChannels.swift b/Meshtastic/Views/Settings/ShareChannels.swift index e1b45f14..8fa6bf32 100644 --- a/Meshtastic/Views/Settings/ShareChannels.swift +++ b/Meshtastic/Views/Settings/ShareChannels.swift @@ -252,6 +252,7 @@ struct ShareChannels: View { loRaConfig.usePreset = node?.loRaConfig?.usePreset ?? true loRaConfig.channelNum = UInt32(node?.loRaConfig?.channelNum ?? 0) loRaConfig.sx126XRxBoostedGain = node?.loRaConfig?.sx126xRxBoostedGain ?? false + loRaConfig.ignoreMqtt = node?.loRaConfig?.ignoreMqtt ?? false channelSet.loraConfig = loRaConfig if node?.myInfo?.channels != nil && node?.myInfo?.channels?.count ?? 0 > 0 { for ch in node?.myInfo?.channels?.array as? [ChannelEntity] ?? [] { From e0073ebdc89b1ce87fc12506112ff7e7809ae6f3 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sat, 20 Jan 2024 22:49:55 -0800 Subject: [PATCH 14/23] Solid lines for routes --- Meshtastic/Helpers/LocationsHandler.swift | 57 +- Meshtastic/Views/Nodes/MeshMap.swift | 9 +- .../Settings/Config/Module/MQTTConfig.swift | 4 +- Meshtastic/Views/Settings/Firmware.swift | 3 +- Meshtastic/Views/Settings/RouteRecorder.swift | 572 +++++++++--------- Meshtastic/Views/Settings/Routes.swift | 6 +- Meshtastic/Views/Settings/Settings.swift | 16 +- 7 files changed, 335 insertions(+), 332 deletions(-) diff --git a/Meshtastic/Helpers/LocationsHandler.swift b/Meshtastic/Helpers/LocationsHandler.swift index 4742914a..fec450ff 100644 --- a/Meshtastic/Helpers/LocationsHandler.swift +++ b/Meshtastic/Helpers/LocationsHandler.swift @@ -18,6 +18,7 @@ import CoreLocation var enableSmartPosition: Bool @Published var locationsArray: [CLLocation] + @Published var lastLocation: CLLocation @Published var isStationary = false @Published var count = 0 @Published var isRecording = false @@ -42,6 +43,7 @@ import CoreLocation private init() { self.manager = CLLocationManager() // Creating a location manager instance is safe to call here in `MainActor`. locationsArray = [CLLocation]() + lastLocation = CLLocation() enableSmartPosition = true } @@ -64,7 +66,11 @@ import CoreLocation locationAdded = addLocation(loc) //print("Added Location \(self.count): \(loc)") } else { - locationsArray.append(loc) + if !isRecording { + lastLocation = loc + } else { + locationsArray.append(loc) + } locationAdded = true } if locationAdded { @@ -99,16 +105,14 @@ import CoreLocation return false } if isRecording { - if let lastLocation = locationsArray.last { - let distance = location.distance(from: lastLocation) - let gain = location.altitude - lastLocation.altitude - distanceTraveled += distance - if gain > 0 { - elevationGain += gain - } + let distance = location.distance(from: lastLocation) + let gain = location.altitude - lastLocation.altitude + distanceTraveled += distance + if gain > 0 { + elevationGain += gain } + locationsArray.append(location) } - locationsArray.append(location) return true } @@ -116,26 +120,23 @@ import CoreLocation static var satsInView: Int { var sats = 0 - if let newLocation = shared.locationsArray.last { - sats = 1 - if newLocation.verticalAccuracy > 0 { - sats = 4 - if 0...5 ~= newLocation.horizontalAccuracy { - sats = 12 - } else if 6...15 ~= newLocation.horizontalAccuracy { - sats = 10 - } else if 16...30 ~= newLocation.horizontalAccuracy { - sats = 9 - } else if 31...45 ~= newLocation.horizontalAccuracy { - sats = 7 - } else if 46...60 ~= newLocation.horizontalAccuracy { - sats = 5 - } - } else if newLocation.verticalAccuracy < 0 && 60...300 ~= newLocation.horizontalAccuracy { - sats = 3 - } else if newLocation.verticalAccuracy < 0 && newLocation.horizontalAccuracy > 300 { - sats = 2 + if shared.lastLocation.verticalAccuracy > 0 { + sats = 4 + if 0...5 ~= shared.lastLocation.horizontalAccuracy { + sats = 12 + } else if 6...15 ~= shared.lastLocation.horizontalAccuracy { + sats = 10 + } else if 16...30 ~= shared.lastLocation.horizontalAccuracy { + sats = 9 + } else if 31...45 ~= shared.lastLocation.horizontalAccuracy { + sats = 7 + } else if 46...60 ~= shared.lastLocation.horizontalAccuracy { + sats = 5 } + } else if shared.lastLocation.verticalAccuracy < 0 && 60...300 ~= shared.lastLocation.horizontalAccuracy { + sats = 3 + } else if shared.lastLocation.verticalAccuracy < 0 && shared.lastLocation.horizontalAccuracy > 300 { + sats = 2 } return sats } diff --git a/Meshtastic/Views/Nodes/MeshMap.swift b/Meshtastic/Views/Nodes/MeshMap.swift index 7dd7d8db..3cee7eb3 100644 --- a/Meshtastic/Views/Nodes/MeshMap.swift +++ b/Meshtastic/Views/Nodes/MeshMap.swift @@ -150,12 +150,12 @@ struct MeshMap: View { } } .annotationTitles(.automatic) - let dashed = StrokeStyle( + let solid = StrokeStyle( lineWidth: 3, - lineCap: .round, lineJoin: .round, dash: [7, 10] + lineCap: .round, lineJoin: .round ) MapPolyline(coordinates: routeCoords) - .stroke(Color(UIColor(hex: UInt32(route.color))), style: dashed) + .stroke(Color(UIColor(hex: UInt32(route.color))), style: solid) } /// Node Route Lines @@ -275,7 +275,8 @@ struct MeshMap: View { print("Waypoint not found") return } - position = .camera(MapCamera(centerCoordinate: waypoint.coordinate, distance: 150, heading: 0, pitch: 60)) + showWaypoints = true + position = .camera(MapCamera(centerCoordinate: waypoint.coordinate, distance: 300, heading: 0, pitch: 60)) } } .onChange(of: (selectedMapLayer)) { newMapLayer in diff --git a/Meshtastic/Views/Settings/Config/Module/MQTTConfig.swift b/Meshtastic/Views/Settings/Config/Module/MQTTConfig.swift index ce8c52b5..be78fb96 100644 --- a/Meshtastic/Views/Settings/Config/Module/MQTTConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/MQTTConfig.swift @@ -24,6 +24,8 @@ struct MQTTConfig: View { @State var tlsEnabled = true @State var root = "msh" @State var mqttConnected: Bool = false + + var body: some View { VStack { @@ -250,7 +252,7 @@ struct MQTTConfig: View { .navigationTitle("mqtt.config") .navigationBarItems(trailing: ZStack { - ConnectedDevice(bluetoothOn: bleManager.isSwitchedOn, deviceConnected: bleManager.connectedPeripheral != nil, name: (bleManager.connectedPeripheral != nil) ? bleManager.connectedPeripheral.shortName : "?") + ConnectedDevice(bluetoothOn: bleManager.isSwitchedOn, deviceConnected: bleManager.connectedPeripheral != nil, name: (bleManager.connectedPeripheral != nil) ? bleManager.connectedPeripheral.shortName : "?", mqttProxyConnected: bleManager.mqttProxyConnected) }) .onAppear { if self.bleManager.context == nil { diff --git a/Meshtastic/Views/Settings/Firmware.swift b/Meshtastic/Views/Settings/Firmware.swift index c0141523..94894d57 100644 --- a/Meshtastic/Views/Settings/Firmware.swift +++ b/Meshtastic/Views/Settings/Firmware.swift @@ -112,8 +112,7 @@ struct Firmware: View { if bleManager.sendEnterDfuMode(fromUser: connectedNode!.user!, toUser: node!.user!) { DispatchQueue.main.asyncAfter(deadline: .now() + 1) { - bleManager.automaticallyReconnect = false - bleManager.disconnectPeripheral() + bleManager.disconnectPeripheral(reconnect: false) } } else { print("Enter DFU Failed") diff --git a/Meshtastic/Views/Settings/RouteRecorder.swift b/Meshtastic/Views/Settings/RouteRecorder.swift index 601f2a49..342d7aca 100644 --- a/Meshtastic/Views/Settings/RouteRecorder.swift +++ b/Meshtastic/Views/Settings/RouteRecorder.swift @@ -1,289 +1,289 @@ +//// +//// Routes.swift +//// Meshtastic +//// +//// Created by Garth Vander Houwen on 11/21/23. +//// // -// Routes.swift -// Meshtastic +//import SwiftUI +//import CoreData +//import MapKit +//import CoreLocation +//import CoreMotion // -// Created by Garth Vander Houwen on 11/21/23. +//@available(iOS 17.0, macOS 14.0, *) +//struct RouteRecorder: View { +// +// @ObservedObject var locationsHandler: LocationsHandler = LocationsHandler.shared +// @Environment(\.managedObjectContext) var context +// @State private var position: MapCameraPosition = .userLocation(followsHeading: true, fallback: .automatic) +// //@State var mapStyle: MapStyle = MapStyle.hybrid(elevation: .realistic, pointsOfInterest: .all, showsTraffic: true) +// @State var mapStyle: MapStyle = MapStyle.standard(elevation: .realistic) +// @State var isShowingDetails = false +// @Namespace var namespace +// @Namespace var routerecorderscope +// @State var recording: RouteEntity? +// @State var color: Color = .blue +// +// var body: some View { +// VStack { +// ZStack { +// Map(position: $position, scope: routerecorderscope) { +// UserAnnotation() +// /// Route Lines +// let lineCoords = locationsHandler.locationsArray.compactMap({(position) -> CLLocationCoordinate2D in +// return position.coordinate +// }) +// +// let gradient = LinearGradient( +// colors: [color], +// startPoint: .leading, endPoint: .trailing +// ) +// let dashed = StrokeStyle( +// lineWidth: 3, +// lineCap: .round, lineJoin: .round, dash: [10, 10] +// ) +// MapPolyline(coordinates: lineCoords) +// .stroke(gradient, style: dashed) // - -import SwiftUI -import CoreData -import MapKit -import CoreLocation -import CoreMotion - -@available(iOS 17.0, macOS 14.0, *) -struct RouteRecorder: View { - - @ObservedObject var locationsHandler: LocationsHandler = LocationsHandler.shared - @Environment(\.managedObjectContext) var context - @State private var position: MapCameraPosition = .userLocation(followsHeading: true, fallback: .automatic) - //@State var mapStyle: MapStyle = MapStyle.hybrid(elevation: .realistic, pointsOfInterest: .all, showsTraffic: true) - @State var mapStyle: MapStyle = MapStyle.standard(elevation: .realistic) - @State var isShowingDetails = false - @Namespace var namespace - @Namespace var routerecorderscope - @State var recording: RouteEntity? - @State var color: Color = .blue - - var body: some View { - VStack { - ZStack { - Map(position: $position, scope: routerecorderscope) { - UserAnnotation() - /// Route Lines - let lineCoords = locationsHandler.locationsArray.compactMap({(position) -> CLLocationCoordinate2D in - return position.coordinate - }) - - let gradient = LinearGradient( - colors: [color], - startPoint: .leading, endPoint: .trailing - ) - let dashed = StrokeStyle( - lineWidth: 3, - lineCap: .round, lineJoin: .round, dash: [10, 10] - ) - MapPolyline(coordinates: lineCoords) - .stroke(gradient, style: dashed) - - } - .mapStyle(mapStyle) - } - .mapScope(routerecorderscope) - .safeAreaInset(edge: .bottom) { - ZStack { - VStack { - HStack(spacing: 10) { - Spacer() - - Button { - isShowingDetails = true - } label: { - Image(systemName: locationsHandler.isRecording ? "record.circle.fill" : "record.circle") - .font(.system(size: 72)) - .symbolRenderingMode(.multicolor) - .foregroundColor(.red) - } - .buttonStyle(.bordered) - .foregroundColor(.red) - .buttonBorderShape(.circle) - .matchedGeometryEffect(id: "Details Button", in: namespace) - - Spacer() - } - } - } - .padding() - } - .sheet(isPresented: $isShowingDetails) { - NavigationStack { - VStack { - if locationsHandler.isRecording { - HStack (alignment: .center) { - Image(systemName: "record.circle.fill") - .symbolRenderingMode(.multicolor) - .font(.title) - .foregroundColor(.red) - Text("Recording route") - .font(.title) - Spacer() - Text("\(locationsHandler.count)") - .foregroundColor(.red) - .font(.title2) - } - .padding() - } else if locationsHandler.isRecordingPaused { - HStack (alignment: .center) { - - Image(systemName: "playpause") - .symbolRenderingMode(.multicolor) - .font(.title3) - .foregroundColor(.red) - Text("Route recording paused") - .font(.title) - } - .padding(.top) - } - - if locationsHandler.isRecording || locationsHandler.isRecordingPaused { - Divider() - HStack { - VStack { - Text(locationsHandler.recordingStarted ?? Date(), style: .timer) - .font(.title) - .fixedSize() - Text("Time") - .font(.callout) - .fixedSize() - } - .padding(.horizontal) - Divider() - VStack { - let distance = Measurement(value: locationsHandler.distanceTraveled, unit: UnitLength.meters) - Text("\(distance.formatted())") - .font(.title) - .fixedSize() - Text("Distance") - .font(.callout) - .fixedSize() - } - .padding(.horizontal) - Divider() - VStack { - let gain = Measurement(value: locationsHandler.elevationGain, unit: UnitLength.meters) - Text(gain.formatted()) - .font(.title) - Text("Elev. Gain") - .font(.callout) - } - .padding(.horizontal) - } - .frame(maxHeight: 90) - } - Divider() - VStack(alignment: .leading) { - List { - GPSStatus(largeFont: .body, smallFont: .callout) - } - .listStyle(.plain) - HStack { - Spacer() - if !locationsHandler.isRecording && !locationsHandler.isRecordingPaused { - /// We are not recording or paused, show start recording button - Button { - locationsHandler.isRecording = true - locationsHandler.count = 0 - locationsHandler.distanceTraveled = 0.0 - locationsHandler.elevationGain = 0.0 - locationsHandler.locationsArray.removeAll() - locationsHandler.recordingStarted = Date() - let newRoute = RouteEntity(context: context) - newRoute.name = String("Route Recording") - newRoute.id = Int32.random(in: Int32(Int8.max) ... Int32.max) - newRoute.color = Int64(UIColor.random.hex) - newRoute.date = Date() - newRoute.enabled = false - color = Color(UIColor(hex: UInt32(newRoute.color))) - self.recording = newRoute - do { - try context.save() - print("💾 Saved a new route") - } catch { - context.rollback() - let nsError = error as NSError - print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") - } - } label: { - Label("start", systemImage: "play") - } - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding(.bottom) - - } else if locationsHandler.isRecording { - /// We are recording show pause button - Button { - locationsHandler.isRecording = false - locationsHandler.isRecordingPaused = true - } label: { - Label("pause", systemImage: "pause") - } - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding(.bottom) - } else if locationsHandler.isRecordingPaused { - /// We are paused show resume button - Button { - locationsHandler.isRecording = true - locationsHandler.isRecordingPaused = false - } label: { - Label("resume", systemImage: "playpause") - } - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding(.bottom) - } - - if locationsHandler.isRecording || locationsHandler.isRecordingPaused { - /// We are recording or paused, show finish button - Button { - locationsHandler.isRecording = false - locationsHandler.isRecordingPaused = false - locationsHandler.distanceTraveled = 0.0 - locationsHandler.elevationGain = 0.0 - locationsHandler.locationsArray.removeAll() - locationsHandler.recordingStarted = nil - if let rec = recording { - rec.enabled = true - context.refresh(rec, mergeChanges:true) - } - - do { - try context.save() - print("💾 Saved a route finish") - } catch { - context.rollback() - let nsError = error as NSError - print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") - } - } label: { - Label("finish", systemImage: "flag.checkered") - } - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding(.bottom) - } -#if targetEnvironment(macCatalyst) - Button(role: .cancel) { - isShowingDetails = false - } label: { - Label("close", systemImage: "xmark") - } - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding(.bottom) -#endif - Spacer() - } - - } - } - } - .presentationDetents([.fraction(0.30), .fraction(0.65)]) - .presentationDragIndicator(.hidden) - .interactiveDismissDisabled(false) - .onChange(of: locationsHandler.locationsArray.last) { newLoc in - if locationsHandler.isRecording { - if let loc = newLoc { - if recording != nil { - let locationEntity = LocationEntity(context: context) - locationEntity.routeLocation = recording - locationEntity.id = Int32(locationsHandler.count) - locationEntity.altitude = Int32(loc.altitude) - locationEntity.heading = Int32(loc.course) - locationEntity.speed = Int32(loc.speed) - locationEntity.latitudeI = Int32(loc.coordinate.latitude * 1e7) - locationEntity.longitudeI = Int32(loc.coordinate.longitude * 1e7) - do { - try context.save() - print("💾 Saved a new route location") - //print("💾 Updated Canned Messages Messages For: \(fetchedNode[0].num)") - } catch { - context.rollback() - let nsError = error as NSError - print("💥 Error Saving LocationEntity from the Route Recorder \(nsError)") - } - } - } - } - } - } - } - .ignoresSafeArea(.all, edges: [.top, .leading, .trailing]) - } -} +// } +// .mapStyle(mapStyle) +// } +// .mapScope(routerecorderscope) +// .safeAreaInset(edge: .bottom) { +// ZStack { +// VStack { +// HStack(spacing: 10) { +// Spacer() +// +// Button { +// isShowingDetails = true +// } label: { +// Image(systemName: locationsHandler.isRecording ? "record.circle.fill" : "record.circle") +// .font(.system(size: 72)) +// .symbolRenderingMode(.multicolor) +// .foregroundColor(.red) +// } +// .buttonStyle(.bordered) +// .foregroundColor(.red) +// .buttonBorderShape(.circle) +// .matchedGeometryEffect(id: "Details Button", in: namespace) +// +// Spacer() +// } +// } +// } +// .padding() +// } +// .sheet(isPresented: $isShowingDetails) { +// NavigationStack { +// VStack { +// if locationsHandler.isRecording { +// HStack (alignment: .center) { +// Image(systemName: "record.circle.fill") +// .symbolRenderingMode(.multicolor) +// .font(.title) +// .foregroundColor(.red) +// Text("Recording route") +// .font(.title) +// Spacer() +// Text("\(locationsHandler.count)") +// .foregroundColor(.red) +// .font(.title2) +// } +// .padding() +// } else if locationsHandler.isRecordingPaused { +// HStack (alignment: .center) { +// +// Image(systemName: "playpause") +// .symbolRenderingMode(.multicolor) +// .font(.title3) +// .foregroundColor(.red) +// Text("Route recording paused") +// .font(.title) +// } +// .padding(.top) +// } +// +// if locationsHandler.isRecording || locationsHandler.isRecordingPaused { +// Divider() +// HStack { +// VStack { +// Text(locationsHandler.recordingStarted ?? Date(), style: .timer) +// .font(.title) +// .fixedSize() +// Text("Time") +// .font(.callout) +// .fixedSize() +// } +// .padding(.horizontal) +// Divider() +// VStack { +// let distance = Measurement(value: locationsHandler.distanceTraveled, unit: UnitLength.meters) +// Text("\(distance.formatted())") +// .font(.title) +// .fixedSize() +// Text("Distance") +// .font(.callout) +// .fixedSize() +// } +// .padding(.horizontal) +// Divider() +// VStack { +// let gain = Measurement(value: locationsHandler.elevationGain, unit: UnitLength.meters) +// Text(gain.formatted()) +// .font(.title) +// Text("Elev. Gain") +// .font(.callout) +// } +// .padding(.horizontal) +// } +// .frame(maxHeight: 90) +// } +// Divider() +// VStack(alignment: .leading) { +// List { +// GPSStatus(largeFont: .body, smallFont: .callout) +// } +// .listStyle(.plain) +// HStack { +// Spacer() +// if !locationsHandler.isRecording && !locationsHandler.isRecordingPaused { +// /// We are not recording or paused, show start recording button +// Button { +// locationsHandler.isRecording = true +// locationsHandler.count = 0 +// locationsHandler.distanceTraveled = 0.0 +// locationsHandler.elevationGain = 0.0 +// locationsHandler.locationsArray.removeAll() +// locationsHandler.recordingStarted = Date() +// let newRoute = RouteEntity(context: context) +// newRoute.name = String("Route Recording") +// newRoute.id = Int32.random(in: Int32(Int8.max) ... Int32.max) +// newRoute.color = Int64(UIColor.random.hex) +// newRoute.date = Date() +// newRoute.enabled = false +// color = Color(UIColor(hex: UInt32(newRoute.color))) +// self.recording = newRoute +// do { +// try context.save() +// print("💾 Saved a new route") +// } catch { +// context.rollback() +// let nsError = error as NSError +// print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") +// } +// } label: { +// Label("start", systemImage: "play") +// } +// .buttonStyle(.bordered) +// .buttonBorderShape(.capsule) +// .controlSize(.large) +// .padding(.bottom) +// +// } else if locationsHandler.isRecording { +// /// We are recording show pause button +// Button { +// locationsHandler.isRecording = false +// locationsHandler.isRecordingPaused = true +// } label: { +// Label("pause", systemImage: "pause") +// } +// .buttonStyle(.bordered) +// .buttonBorderShape(.capsule) +// .controlSize(.large) +// .padding(.bottom) +// } else if locationsHandler.isRecordingPaused { +// /// We are paused show resume button +// Button { +// locationsHandler.isRecording = true +// locationsHandler.isRecordingPaused = false +// } label: { +// Label("resume", systemImage: "playpause") +// } +// .buttonStyle(.bordered) +// .buttonBorderShape(.capsule) +// .controlSize(.large) +// .padding(.bottom) +// } +// +// if locationsHandler.isRecording || locationsHandler.isRecordingPaused { +// /// We are recording or paused, show finish button +// Button { +// locationsHandler.isRecording = false +// locationsHandler.isRecordingPaused = false +// locationsHandler.distanceTraveled = 0.0 +// locationsHandler.elevationGain = 0.0 +// locationsHandler.locationsArray.removeAll() +// locationsHandler.recordingStarted = nil +// if let rec = recording { +// rec.enabled = true +// context.refresh(rec, mergeChanges:true) +// } +// +// do { +// try context.save() +// print("💾 Saved a route finish") +// } catch { +// context.rollback() +// let nsError = error as NSError +// print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") +// } +// } label: { +// Label("finish", systemImage: "flag.checkered") +// } +// .buttonStyle(.bordered) +// .buttonBorderShape(.capsule) +// .controlSize(.large) +// .padding(.bottom) +// } +//#if targetEnvironment(macCatalyst) +// Button(role: .cancel) { +// isShowingDetails = false +// } label: { +// Label("close", systemImage: "xmark") +// } +// .buttonStyle(.bordered) +// .buttonBorderShape(.capsule) +// .controlSize(.large) +// .padding(.bottom) +//#endif +// Spacer() +// } +// +// } +// } +// } +// .presentationDetents([.fraction(0.30), .fraction(0.65)]) +// .presentationDragIndicator(.hidden) +// .interactiveDismissDisabled(false) +// .onChange(of: locationsHandler.locationsArray.last) { newLoc in +// if locationsHandler.isRecording { +// if let loc = newLoc { +// if recording != nil { +// let locationEntity = LocationEntity(context: context) +// locationEntity.routeLocation = recording +// locationEntity.id = Int32(locationsHandler.count) +// locationEntity.altitude = Int32(loc.altitude) +// locationEntity.heading = Int32(loc.course) +// locationEntity.speed = Int32(loc.speed) +// locationEntity.latitudeI = Int32(loc.coordinate.latitude * 1e7) +// locationEntity.longitudeI = Int32(loc.coordinate.longitude * 1e7) +// do { +// try context.save() +// print("💾 Saved a new route location") +// //print("💾 Updated Canned Messages Messages For: \(fetchedNode[0].num)") +// } catch { +// context.rollback() +// let nsError = error as NSError +// print("💥 Error Saving LocationEntity from the Route Recorder \(nsError)") +// } +// } +// } +// } +// } +// } +// } +// .ignoresSafeArea(.all, edges: [.top, .leading, .trailing]) +// } +//} diff --git a/Meshtastic/Views/Settings/Routes.swift b/Meshtastic/Views/Settings/Routes.swift index 6c1de5a0..14e01d0f 100644 --- a/Meshtastic/Views/Settings/Routes.swift +++ b/Meshtastic/Views/Settings/Routes.swift @@ -181,12 +181,12 @@ struct Routes: View { } } .annotationTitles(.automatic) - let dashed = StrokeStyle( + let solid = StrokeStyle( lineWidth: 3, - lineCap: .round, lineJoin: .round, dash: [7, 10] + lineCap: .round, lineJoin: .round ) MapPolyline(coordinates: lineCoords) - .stroke(Color(UIColor(hex: UInt32(selectedRoute?.color ?? 0))), style: dashed) + .stroke(Color(UIColor(hex: UInt32(selectedRoute?.color ?? 0))), style: solid) } .frame(maxWidth: .infinity, maxHeight: .infinity) .safeAreaInset(edge: .bottom, alignment: UIDevice.current.userInterfaceIdiom == .phone ? .leading : .trailing) { diff --git a/Meshtastic/Views/Settings/Settings.swift b/Meshtastic/Views/Settings/Settings.swift index 87d23bd3..66d1e02e 100644 --- a/Meshtastic/Views/Settings/Settings.swift +++ b/Meshtastic/Views/Settings/Settings.swift @@ -69,14 +69,14 @@ struct Settings: View { Text("routes") } .tag(SettingsSidebar.routes) - NavigationLink { - RouteRecorder() - } label: { - Image(systemName: "record.circle") - .symbolRenderingMode(.hierarchical) - Text("route.recorder") - } - .tag(SettingsSidebar.routeRecorder) +// NavigationLink { +// RouteRecorder() +// } label: { +// Image(systemName: "record.circle") +// .symbolRenderingMode(.hierarchical) +// Text("route.recorder") +// } +// .tag(SettingsSidebar.routeRecorder) } let node = nodes.first(where: { $0.num == preferredNodeNum }) From 778600fb4f0e78ca81841246d9793ec85b5bb598 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sun, 21 Jan 2024 12:24:18 -0800 Subject: [PATCH 15/23] Lazy load position annotations --- Meshtastic/Helpers/LocationsHandler.swift | 57 +++++++++++------------ Meshtastic/Views/Nodes/MeshMap.swift | 53 ++++++++++----------- 2 files changed, 55 insertions(+), 55 deletions(-) diff --git a/Meshtastic/Helpers/LocationsHandler.swift b/Meshtastic/Helpers/LocationsHandler.swift index fec450ff..4742914a 100644 --- a/Meshtastic/Helpers/LocationsHandler.swift +++ b/Meshtastic/Helpers/LocationsHandler.swift @@ -18,7 +18,6 @@ import CoreLocation var enableSmartPosition: Bool @Published var locationsArray: [CLLocation] - @Published var lastLocation: CLLocation @Published var isStationary = false @Published var count = 0 @Published var isRecording = false @@ -43,7 +42,6 @@ import CoreLocation private init() { self.manager = CLLocationManager() // Creating a location manager instance is safe to call here in `MainActor`. locationsArray = [CLLocation]() - lastLocation = CLLocation() enableSmartPosition = true } @@ -66,11 +64,7 @@ import CoreLocation locationAdded = addLocation(loc) //print("Added Location \(self.count): \(loc)") } else { - if !isRecording { - lastLocation = loc - } else { - locationsArray.append(loc) - } + locationsArray.append(loc) locationAdded = true } if locationAdded { @@ -105,14 +99,16 @@ import CoreLocation return false } if isRecording { - let distance = location.distance(from: lastLocation) - let gain = location.altitude - lastLocation.altitude - distanceTraveled += distance - if gain > 0 { - elevationGain += gain + if let lastLocation = locationsArray.last { + let distance = location.distance(from: lastLocation) + let gain = location.altitude - lastLocation.altitude + distanceTraveled += distance + if gain > 0 { + elevationGain += gain + } } - locationsArray.append(location) } + locationsArray.append(location) return true } @@ -120,23 +116,26 @@ import CoreLocation static var satsInView: Int { var sats = 0 - if shared.lastLocation.verticalAccuracy > 0 { - sats = 4 - if 0...5 ~= shared.lastLocation.horizontalAccuracy { - sats = 12 - } else if 6...15 ~= shared.lastLocation.horizontalAccuracy { - sats = 10 - } else if 16...30 ~= shared.lastLocation.horizontalAccuracy { - sats = 9 - } else if 31...45 ~= shared.lastLocation.horizontalAccuracy { - sats = 7 - } else if 46...60 ~= shared.lastLocation.horizontalAccuracy { - sats = 5 + if let newLocation = shared.locationsArray.last { + sats = 1 + if newLocation.verticalAccuracy > 0 { + sats = 4 + if 0...5 ~= newLocation.horizontalAccuracy { + sats = 12 + } else if 6...15 ~= newLocation.horizontalAccuracy { + sats = 10 + } else if 16...30 ~= newLocation.horizontalAccuracy { + sats = 9 + } else if 31...45 ~= newLocation.horizontalAccuracy { + sats = 7 + } else if 46...60 ~= newLocation.horizontalAccuracy { + sats = 5 + } + } else if newLocation.verticalAccuracy < 0 && 60...300 ~= newLocation.horizontalAccuracy { + sats = 3 + } else if newLocation.verticalAccuracy < 0 && newLocation.horizontalAccuracy > 300 { + sats = 2 } - } else if shared.lastLocation.verticalAccuracy < 0 && 60...300 ~= shared.lastLocation.horizontalAccuracy { - sats = 3 - } else if shared.lastLocation.verticalAccuracy < 0 && shared.lastLocation.horizontalAccuracy > 300 { - sats = 2 } return sats } diff --git a/Meshtastic/Views/Nodes/MeshMap.swift b/Meshtastic/Views/Nodes/MeshMap.swift index 3cee7eb3..249a57cd 100644 --- a/Meshtastic/Views/Nodes/MeshMap.swift +++ b/Meshtastic/Views/Nodes/MeshMap.swift @@ -71,7 +71,7 @@ struct MeshMap: View { if waypoints.count > 0 && showWaypoints { ForEach(Array(waypoints), id: \.id) { waypoint in Annotation(waypoint.name ?? "?", coordinate: waypoint.coordinate) { - ZStack { + LazyVStack { CircleText(text: String(UnicodeScalar(Int(waypoint.icon)) ?? "📍"), color: Color.orange, circleSize: 40) .onTapGesture(perform: { location in selectedWaypoint = (selectedWaypoint == waypoint ? nil : waypoint) @@ -94,7 +94,8 @@ struct MeshMap: View { /// Node color from node.num let nodeColor = UIColor(hex: UInt32(position.nodePosition?.num ?? 0)) Annotation(position.nodePosition?.user?.longName ?? "?", coordinate: position.coordinate) { - ZStack { + LazyVStack { + //ZStack { let nodeColor = UIColor(hex: UInt32(position.nodePosition?.num ?? 0)) if position.nodePosition?.isOnline ?? false { Circle() @@ -178,32 +179,32 @@ struct MeshMap: View { /// Node History ForEach(Array(position.nodePosition!.positions!) as! [PositionEntity], id: \.self) { (mappin: PositionEntity) in if showNodeHistory { - if mappin.latest == false && mappin.nodePosition?.user?.vip ?? false { - let pf = PositionFlags(rawValue: Int(mappin.nodePosition?.metadata?.positionFlags ?? 771)) - let headingDegrees = Angle.degrees(Double(mappin.heading)) - Annotation("", coordinate: mappin.coordinate) { - ZStack { - if pf.contains(.Heading) { - Image(systemName: "location.north.circle") - .resizable() - .scaledToFit() - .foregroundStyle(Color(UIColor(hex: UInt32(mappin.nodePosition?.num ?? 0))).isLight() ? .black : .white) - .background(Color(UIColor(hex: UInt32(mappin.nodePosition?.num ?? 0)))) - .clipShape(Circle()) - .rotationEffect(headingDegrees) - .frame(width: 16, height: 16) - - } else { - Circle() - .fill(Color(UIColor(hex: UInt32(mappin.nodePosition?.num ?? 0)))) - .strokeBorder(Color(UIColor(hex: UInt32(mappin.nodePosition?.num ?? 0))).isLight() ? .black : .white ,lineWidth: 2) - .frame(width: 12, height: 12) + if mappin.latest == false && mappin.nodePosition?.user?.vip ?? false { + let pf = PositionFlags(rawValue: Int(mappin.nodePosition?.metadata?.positionFlags ?? 771)) + let headingDegrees = Angle.degrees(Double(mappin.heading)) + Annotation("", coordinate: mappin.coordinate) { + ZStack { + if pf.contains(.Heading) { + Image(systemName: "location.north.circle") + .resizable() + .scaledToFit() + .foregroundStyle(Color(UIColor(hex: UInt32(mappin.nodePosition?.num ?? 0))).isLight() ? .black : .white) + .background(Color(UIColor(hex: UInt32(mappin.nodePosition?.num ?? 0)))) + .clipShape(Circle()) + .rotationEffect(headingDegrees) + .frame(width: 16, height: 16) + + } else { + Circle() + .fill(Color(UIColor(hex: UInt32(mappin.nodePosition?.num ?? 0)))) + .strokeBorder(Color(UIColor(hex: UInt32(mappin.nodePosition?.num ?? 0))).isLight() ? .black : .white ,lineWidth: 2) + .frame(width: 12, height: 12) + } } } + .annotationTitles(.hidden) + .annotationSubtitles(.hidden) } - .annotationTitles(.hidden) - .annotationSubtitles(.hidden) - } } } } @@ -276,7 +277,7 @@ struct MeshMap: View { return } showWaypoints = true - position = .camera(MapCamera(centerCoordinate: waypoint.coordinate, distance: 300, heading: 0, pitch: 60)) + position = .camera(MapCamera(centerCoordinate: waypoint.coordinate, distance: 1000, heading: 0, pitch: 60)) } } .onChange(of: (selectedMapLayer)) { newMapLayer in From aa2f3c45119a11d61f43b406e1ea515e3018c5e3 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sun, 21 Jan 2024 13:12:32 -0800 Subject: [PATCH 16/23] LazyVStacks for annotations --- .../Nodes/Helpers/Map/NodeMapSwiftUI.swift | 84 +-- Meshtastic/Views/Nodes/MeshMap.swift | 55 +- Meshtastic/Views/Settings/RouteRecorder.swift | 572 +++++++++--------- Meshtastic/Views/Settings/Settings.swift | 16 +- 4 files changed, 365 insertions(+), 362 deletions(-) diff --git a/Meshtastic/Views/Nodes/Helpers/Map/NodeMapSwiftUI.swift b/Meshtastic/Views/Nodes/Helpers/Map/NodeMapSwiftUI.swift index 850c4e7e..23eca04b 100644 --- a/Meshtastic/Views/Nodes/Helpers/Map/NodeMapSwiftUI.swift +++ b/Meshtastic/Views/Nodes/Helpers/Map/NodeMapSwiftUI.swift @@ -86,7 +86,7 @@ struct NodeMapSwiftUI: View { if waypoints.count > 0 && showWaypoints { ForEach(Array(waypoints), id: \.id) { waypoint in Annotation(waypoint.name ?? "?", coordinate: waypoint.coordinate) { - ZStack { + LazyVStack { CircleText(text: String(UnicodeScalar(Int(waypoint.icon)) ?? "📍"), color: Color.orange, circleSize: 35) .onTapGesture(coordinateSpace: .named("nodemap")) { location in selectedWaypoint = (selectedWaypoint == waypoint ? nil : waypoint) @@ -100,47 +100,49 @@ struct NodeMapSwiftUI: View { let pf = PositionFlags(rawValue: Int(position.nodePosition?.metadata?.positionFlags ?? 771)) let headingDegrees = Angle.degrees(Double(position.heading)) Annotation(position.latest ? node.user?.shortName ?? "?": "", coordinate: position.coordinate) { - ZStack { + LazyVStack { if position.latest { - Circle() - .fill(Color(nodeColor.lighter()).opacity(0.4).shadow(.drop(color: Color(nodeColor).isLight() ? .black : .white, radius: 5))) - .foregroundStyle(Color(nodeColor.lighter()).opacity(0.3)) - .frame(width: 50, height: 50) - if pf.contains(.Heading) { - Image(systemName: pf.contains(.Speed) && position.speed > 1 ? "location.north" : "octagon") - .symbolEffect(.pulse.byLayer) - .padding(5) - .foregroundStyle(Color(nodeColor).isLight() ? .black : .white) - .background(Color(nodeColor.darker())) - .clipShape(Circle()) - .rotationEffect(headingDegrees) - .onTapGesture { - selectedPosition = (selectedPosition == position ? nil : position) - } - .popover(item: $selectedPosition) { selection in - PositionPopover(position: selection) - .padding() - .opacity(0.8) - .presentationCompactAdaptation(.popover) - } - - } else { - Image(systemName: "flipphone") - .symbolEffect(.pulse.byLayer) - .padding(5) - .foregroundStyle(Color(nodeColor).isLight() ? .black : .white) - .background(Color(UIColor(hex: UInt32(node.num)).darker())) - .clipShape(Circle()) - .onTapGesture { - selectedPosition = (selectedPosition == position ? nil : position) - } - .popover(item: $selectedPosition) { selection in - PositionPopover(position: selection) - .padding() - .opacity(0.8) - .presentationCompactAdaptation(.popover) - } - + ZStack { + Circle() + .fill(Color(nodeColor.lighter()).opacity(0.4).shadow(.drop(color: Color(nodeColor).isLight() ? .black : .white, radius: 5))) + .foregroundStyle(Color(nodeColor.lighter()).opacity(0.3)) + .frame(width: 50, height: 50) + if pf.contains(.Heading) { + Image(systemName: pf.contains(.Speed) && position.speed > 1 ? "location.north" : "octagon") + .symbolEffect(.pulse.byLayer) + .padding(5) + .foregroundStyle(Color(nodeColor).isLight() ? .black : .white) + .background(Color(nodeColor.darker())) + .clipShape(Circle()) + .rotationEffect(headingDegrees) + .onTapGesture { + selectedPosition = (selectedPosition == position ? nil : position) + } + .popover(item: $selectedPosition) { selection in + PositionPopover(position: selection) + .padding() + .opacity(0.8) + .presentationCompactAdaptation(.popover) + } + + } else { + Image(systemName: "flipphone") + .symbolEffect(.pulse.byLayer) + .padding(5) + .foregroundStyle(Color(nodeColor).isLight() ? .black : .white) + .background(Color(UIColor(hex: UInt32(node.num)).darker())) + .clipShape(Circle()) + .onTapGesture { + selectedPosition = (selectedPosition == position ? nil : position) + } + .popover(item: $selectedPosition) { selection in + PositionPopover(position: selection) + .padding() + .opacity(0.8) + .presentationCompactAdaptation(.popover) + } + + } } } else { if showNodeHistory { diff --git a/Meshtastic/Views/Nodes/MeshMap.swift b/Meshtastic/Views/Nodes/MeshMap.swift index 249a57cd..5831679a 100644 --- a/Meshtastic/Views/Nodes/MeshMap.swift +++ b/Meshtastic/Views/Nodes/MeshMap.swift @@ -95,32 +95,33 @@ struct MeshMap: View { let nodeColor = UIColor(hex: UInt32(position.nodePosition?.num ?? 0)) Annotation(position.nodePosition?.user?.longName ?? "?", coordinate: position.coordinate) { LazyVStack { - //ZStack { - let nodeColor = UIColor(hex: UInt32(position.nodePosition?.num ?? 0)) - if position.nodePosition?.isOnline ?? false { - Circle() - .fill(Color(nodeColor.lighter()).opacity(0.4).shadow(.drop(color: Color(nodeColor).isLight() ? .black : .white, radius: 5))) - .foregroundStyle(Color(nodeColor.lighter()).opacity(0.3)) - .scaleEffect(scale) - .animation( - Animation.easeInOut(duration: 0.6) - .repeatForever().delay(delay), value: scale - ) - .onAppear { - self.scale = 1 - } - .frame(width: 60, height: 60) - } - if position.nodePosition?.hasDetectionSensorMetrics ?? false { - Image(systemName: "sensor.fill") - .symbolRenderingMode(.palette) - .symbolEffect(.variableColor) - .padding() - .foregroundStyle(.white) - .background(Color(nodeColor)) - .clipShape(Circle()) - } else { - CircleText(text: position.nodePosition?.user?.shortName ?? "?", color: Color(nodeColor), circleSize: 40) + ZStack { + let nodeColor = UIColor(hex: UInt32(position.nodePosition?.num ?? 0)) + if position.nodePosition?.isOnline ?? false { + Circle() + .fill(Color(nodeColor.lighter()).opacity(0.4).shadow(.drop(color: Color(nodeColor).isLight() ? .black : .white, radius: 5))) + .foregroundStyle(Color(nodeColor.lighter()).opacity(0.3)) + .scaleEffect(scale) + .animation( + Animation.easeInOut(duration: 0.6) + .repeatForever().delay(delay), value: scale + ) + .onAppear { + self.scale = 1 + } + .frame(width: 60, height: 60) + } + if position.nodePosition?.hasDetectionSensorMetrics ?? false { + Image(systemName: "sensor.fill") + .symbolRenderingMode(.palette) + .symbolEffect(.variableColor) + .padding() + .foregroundStyle(.white) + .background(Color(nodeColor)) + .clipShape(Circle()) + } else { + CircleText(text: position.nodePosition?.user?.shortName ?? "?", color: Color(nodeColor), circleSize: 40) + } } } .onTapGesture { location in @@ -183,7 +184,7 @@ struct MeshMap: View { let pf = PositionFlags(rawValue: Int(mappin.nodePosition?.metadata?.positionFlags ?? 771)) let headingDegrees = Angle.degrees(Double(mappin.heading)) Annotation("", coordinate: mappin.coordinate) { - ZStack { + LazyVStack { if pf.contains(.Heading) { Image(systemName: "location.north.circle") .resizable() diff --git a/Meshtastic/Views/Settings/RouteRecorder.swift b/Meshtastic/Views/Settings/RouteRecorder.swift index 342d7aca..601f2a49 100644 --- a/Meshtastic/Views/Settings/RouteRecorder.swift +++ b/Meshtastic/Views/Settings/RouteRecorder.swift @@ -1,289 +1,289 @@ -//// -//// Routes.swift -//// Meshtastic -//// -//// Created by Garth Vander Houwen on 11/21/23. -//// // -//import SwiftUI -//import CoreData -//import MapKit -//import CoreLocation -//import CoreMotion +// Routes.swift +// Meshtastic // -//@available(iOS 17.0, macOS 14.0, *) -//struct RouteRecorder: View { -// -// @ObservedObject var locationsHandler: LocationsHandler = LocationsHandler.shared -// @Environment(\.managedObjectContext) var context -// @State private var position: MapCameraPosition = .userLocation(followsHeading: true, fallback: .automatic) -// //@State var mapStyle: MapStyle = MapStyle.hybrid(elevation: .realistic, pointsOfInterest: .all, showsTraffic: true) -// @State var mapStyle: MapStyle = MapStyle.standard(elevation: .realistic) -// @State var isShowingDetails = false -// @Namespace var namespace -// @Namespace var routerecorderscope -// @State var recording: RouteEntity? -// @State var color: Color = .blue -// -// var body: some View { -// VStack { -// ZStack { -// Map(position: $position, scope: routerecorderscope) { -// UserAnnotation() -// /// Route Lines -// let lineCoords = locationsHandler.locationsArray.compactMap({(position) -> CLLocationCoordinate2D in -// return position.coordinate -// }) -// -// let gradient = LinearGradient( -// colors: [color], -// startPoint: .leading, endPoint: .trailing -// ) -// let dashed = StrokeStyle( -// lineWidth: 3, -// lineCap: .round, lineJoin: .round, dash: [10, 10] -// ) -// MapPolyline(coordinates: lineCoords) -// .stroke(gradient, style: dashed) +// Created by Garth Vander Houwen on 11/21/23. // -// } -// .mapStyle(mapStyle) -// } -// .mapScope(routerecorderscope) -// .safeAreaInset(edge: .bottom) { -// ZStack { -// VStack { -// HStack(spacing: 10) { -// Spacer() -// -// Button { -// isShowingDetails = true -// } label: { -// Image(systemName: locationsHandler.isRecording ? "record.circle.fill" : "record.circle") -// .font(.system(size: 72)) -// .symbolRenderingMode(.multicolor) -// .foregroundColor(.red) -// } -// .buttonStyle(.bordered) -// .foregroundColor(.red) -// .buttonBorderShape(.circle) -// .matchedGeometryEffect(id: "Details Button", in: namespace) -// -// Spacer() -// } -// } -// } -// .padding() -// } -// .sheet(isPresented: $isShowingDetails) { -// NavigationStack { -// VStack { -// if locationsHandler.isRecording { -// HStack (alignment: .center) { -// Image(systemName: "record.circle.fill") -// .symbolRenderingMode(.multicolor) -// .font(.title) -// .foregroundColor(.red) -// Text("Recording route") -// .font(.title) -// Spacer() -// Text("\(locationsHandler.count)") -// .foregroundColor(.red) -// .font(.title2) -// } -// .padding() -// } else if locationsHandler.isRecordingPaused { -// HStack (alignment: .center) { -// -// Image(systemName: "playpause") -// .symbolRenderingMode(.multicolor) -// .font(.title3) -// .foregroundColor(.red) -// Text("Route recording paused") -// .font(.title) -// } -// .padding(.top) -// } -// -// if locationsHandler.isRecording || locationsHandler.isRecordingPaused { -// Divider() -// HStack { -// VStack { -// Text(locationsHandler.recordingStarted ?? Date(), style: .timer) -// .font(.title) -// .fixedSize() -// Text("Time") -// .font(.callout) -// .fixedSize() -// } -// .padding(.horizontal) -// Divider() -// VStack { -// let distance = Measurement(value: locationsHandler.distanceTraveled, unit: UnitLength.meters) -// Text("\(distance.formatted())") -// .font(.title) -// .fixedSize() -// Text("Distance") -// .font(.callout) -// .fixedSize() -// } -// .padding(.horizontal) -// Divider() -// VStack { -// let gain = Measurement(value: locationsHandler.elevationGain, unit: UnitLength.meters) -// Text(gain.formatted()) -// .font(.title) -// Text("Elev. Gain") -// .font(.callout) -// } -// .padding(.horizontal) -// } -// .frame(maxHeight: 90) -// } -// Divider() -// VStack(alignment: .leading) { -// List { -// GPSStatus(largeFont: .body, smallFont: .callout) -// } -// .listStyle(.plain) -// HStack { -// Spacer() -// if !locationsHandler.isRecording && !locationsHandler.isRecordingPaused { -// /// We are not recording or paused, show start recording button -// Button { -// locationsHandler.isRecording = true -// locationsHandler.count = 0 -// locationsHandler.distanceTraveled = 0.0 -// locationsHandler.elevationGain = 0.0 -// locationsHandler.locationsArray.removeAll() -// locationsHandler.recordingStarted = Date() -// let newRoute = RouteEntity(context: context) -// newRoute.name = String("Route Recording") -// newRoute.id = Int32.random(in: Int32(Int8.max) ... Int32.max) -// newRoute.color = Int64(UIColor.random.hex) -// newRoute.date = Date() -// newRoute.enabled = false -// color = Color(UIColor(hex: UInt32(newRoute.color))) -// self.recording = newRoute -// do { -// try context.save() -// print("💾 Saved a new route") -// } catch { -// context.rollback() -// let nsError = error as NSError -// print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") -// } -// } label: { -// Label("start", systemImage: "play") -// } -// .buttonStyle(.bordered) -// .buttonBorderShape(.capsule) -// .controlSize(.large) -// .padding(.bottom) -// -// } else if locationsHandler.isRecording { -// /// We are recording show pause button -// Button { -// locationsHandler.isRecording = false -// locationsHandler.isRecordingPaused = true -// } label: { -// Label("pause", systemImage: "pause") -// } -// .buttonStyle(.bordered) -// .buttonBorderShape(.capsule) -// .controlSize(.large) -// .padding(.bottom) -// } else if locationsHandler.isRecordingPaused { -// /// We are paused show resume button -// Button { -// locationsHandler.isRecording = true -// locationsHandler.isRecordingPaused = false -// } label: { -// Label("resume", systemImage: "playpause") -// } -// .buttonStyle(.bordered) -// .buttonBorderShape(.capsule) -// .controlSize(.large) -// .padding(.bottom) -// } -// -// if locationsHandler.isRecording || locationsHandler.isRecordingPaused { -// /// We are recording or paused, show finish button -// Button { -// locationsHandler.isRecording = false -// locationsHandler.isRecordingPaused = false -// locationsHandler.distanceTraveled = 0.0 -// locationsHandler.elevationGain = 0.0 -// locationsHandler.locationsArray.removeAll() -// locationsHandler.recordingStarted = nil -// if let rec = recording { -// rec.enabled = true -// context.refresh(rec, mergeChanges:true) -// } -// -// do { -// try context.save() -// print("💾 Saved a route finish") -// } catch { -// context.rollback() -// let nsError = error as NSError -// print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") -// } -// } label: { -// Label("finish", systemImage: "flag.checkered") -// } -// .buttonStyle(.bordered) -// .buttonBorderShape(.capsule) -// .controlSize(.large) -// .padding(.bottom) -// } -//#if targetEnvironment(macCatalyst) -// Button(role: .cancel) { -// isShowingDetails = false -// } label: { -// Label("close", systemImage: "xmark") -// } -// .buttonStyle(.bordered) -// .buttonBorderShape(.capsule) -// .controlSize(.large) -// .padding(.bottom) -//#endif -// Spacer() -// } -// -// } -// } -// } -// .presentationDetents([.fraction(0.30), .fraction(0.65)]) -// .presentationDragIndicator(.hidden) -// .interactiveDismissDisabled(false) -// .onChange(of: locationsHandler.locationsArray.last) { newLoc in -// if locationsHandler.isRecording { -// if let loc = newLoc { -// if recording != nil { -// let locationEntity = LocationEntity(context: context) -// locationEntity.routeLocation = recording -// locationEntity.id = Int32(locationsHandler.count) -// locationEntity.altitude = Int32(loc.altitude) -// locationEntity.heading = Int32(loc.course) -// locationEntity.speed = Int32(loc.speed) -// locationEntity.latitudeI = Int32(loc.coordinate.latitude * 1e7) -// locationEntity.longitudeI = Int32(loc.coordinate.longitude * 1e7) -// do { -// try context.save() -// print("💾 Saved a new route location") -// //print("💾 Updated Canned Messages Messages For: \(fetchedNode[0].num)") -// } catch { -// context.rollback() -// let nsError = error as NSError -// print("💥 Error Saving LocationEntity from the Route Recorder \(nsError)") -// } -// } -// } -// } -// } -// } -// } -// .ignoresSafeArea(.all, edges: [.top, .leading, .trailing]) -// } -//} + +import SwiftUI +import CoreData +import MapKit +import CoreLocation +import CoreMotion + +@available(iOS 17.0, macOS 14.0, *) +struct RouteRecorder: View { + + @ObservedObject var locationsHandler: LocationsHandler = LocationsHandler.shared + @Environment(\.managedObjectContext) var context + @State private var position: MapCameraPosition = .userLocation(followsHeading: true, fallback: .automatic) + //@State var mapStyle: MapStyle = MapStyle.hybrid(elevation: .realistic, pointsOfInterest: .all, showsTraffic: true) + @State var mapStyle: MapStyle = MapStyle.standard(elevation: .realistic) + @State var isShowingDetails = false + @Namespace var namespace + @Namespace var routerecorderscope + @State var recording: RouteEntity? + @State var color: Color = .blue + + var body: some View { + VStack { + ZStack { + Map(position: $position, scope: routerecorderscope) { + UserAnnotation() + /// Route Lines + let lineCoords = locationsHandler.locationsArray.compactMap({(position) -> CLLocationCoordinate2D in + return position.coordinate + }) + + let gradient = LinearGradient( + colors: [color], + startPoint: .leading, endPoint: .trailing + ) + let dashed = StrokeStyle( + lineWidth: 3, + lineCap: .round, lineJoin: .round, dash: [10, 10] + ) + MapPolyline(coordinates: lineCoords) + .stroke(gradient, style: dashed) + + } + .mapStyle(mapStyle) + } + .mapScope(routerecorderscope) + .safeAreaInset(edge: .bottom) { + ZStack { + VStack { + HStack(spacing: 10) { + Spacer() + + Button { + isShowingDetails = true + } label: { + Image(systemName: locationsHandler.isRecording ? "record.circle.fill" : "record.circle") + .font(.system(size: 72)) + .symbolRenderingMode(.multicolor) + .foregroundColor(.red) + } + .buttonStyle(.bordered) + .foregroundColor(.red) + .buttonBorderShape(.circle) + .matchedGeometryEffect(id: "Details Button", in: namespace) + + Spacer() + } + } + } + .padding() + } + .sheet(isPresented: $isShowingDetails) { + NavigationStack { + VStack { + if locationsHandler.isRecording { + HStack (alignment: .center) { + Image(systemName: "record.circle.fill") + .symbolRenderingMode(.multicolor) + .font(.title) + .foregroundColor(.red) + Text("Recording route") + .font(.title) + Spacer() + Text("\(locationsHandler.count)") + .foregroundColor(.red) + .font(.title2) + } + .padding() + } else if locationsHandler.isRecordingPaused { + HStack (alignment: .center) { + + Image(systemName: "playpause") + .symbolRenderingMode(.multicolor) + .font(.title3) + .foregroundColor(.red) + Text("Route recording paused") + .font(.title) + } + .padding(.top) + } + + if locationsHandler.isRecording || locationsHandler.isRecordingPaused { + Divider() + HStack { + VStack { + Text(locationsHandler.recordingStarted ?? Date(), style: .timer) + .font(.title) + .fixedSize() + Text("Time") + .font(.callout) + .fixedSize() + } + .padding(.horizontal) + Divider() + VStack { + let distance = Measurement(value: locationsHandler.distanceTraveled, unit: UnitLength.meters) + Text("\(distance.formatted())") + .font(.title) + .fixedSize() + Text("Distance") + .font(.callout) + .fixedSize() + } + .padding(.horizontal) + Divider() + VStack { + let gain = Measurement(value: locationsHandler.elevationGain, unit: UnitLength.meters) + Text(gain.formatted()) + .font(.title) + Text("Elev. Gain") + .font(.callout) + } + .padding(.horizontal) + } + .frame(maxHeight: 90) + } + Divider() + VStack(alignment: .leading) { + List { + GPSStatus(largeFont: .body, smallFont: .callout) + } + .listStyle(.plain) + HStack { + Spacer() + if !locationsHandler.isRecording && !locationsHandler.isRecordingPaused { + /// We are not recording or paused, show start recording button + Button { + locationsHandler.isRecording = true + locationsHandler.count = 0 + locationsHandler.distanceTraveled = 0.0 + locationsHandler.elevationGain = 0.0 + locationsHandler.locationsArray.removeAll() + locationsHandler.recordingStarted = Date() + let newRoute = RouteEntity(context: context) + newRoute.name = String("Route Recording") + newRoute.id = Int32.random(in: Int32(Int8.max) ... Int32.max) + newRoute.color = Int64(UIColor.random.hex) + newRoute.date = Date() + newRoute.enabled = false + color = Color(UIColor(hex: UInt32(newRoute.color))) + self.recording = newRoute + do { + try context.save() + print("💾 Saved a new route") + } catch { + context.rollback() + let nsError = error as NSError + print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") + } + } label: { + Label("start", systemImage: "play") + } + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding(.bottom) + + } else if locationsHandler.isRecording { + /// We are recording show pause button + Button { + locationsHandler.isRecording = false + locationsHandler.isRecordingPaused = true + } label: { + Label("pause", systemImage: "pause") + } + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding(.bottom) + } else if locationsHandler.isRecordingPaused { + /// We are paused show resume button + Button { + locationsHandler.isRecording = true + locationsHandler.isRecordingPaused = false + } label: { + Label("resume", systemImage: "playpause") + } + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding(.bottom) + } + + if locationsHandler.isRecording || locationsHandler.isRecordingPaused { + /// We are recording or paused, show finish button + Button { + locationsHandler.isRecording = false + locationsHandler.isRecordingPaused = false + locationsHandler.distanceTraveled = 0.0 + locationsHandler.elevationGain = 0.0 + locationsHandler.locationsArray.removeAll() + locationsHandler.recordingStarted = nil + if let rec = recording { + rec.enabled = true + context.refresh(rec, mergeChanges:true) + } + + do { + try context.save() + print("💾 Saved a route finish") + } catch { + context.rollback() + let nsError = error as NSError + print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") + } + } label: { + Label("finish", systemImage: "flag.checkered") + } + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding(.bottom) + } +#if targetEnvironment(macCatalyst) + Button(role: .cancel) { + isShowingDetails = false + } label: { + Label("close", systemImage: "xmark") + } + .buttonStyle(.bordered) + .buttonBorderShape(.capsule) + .controlSize(.large) + .padding(.bottom) +#endif + Spacer() + } + + } + } + } + .presentationDetents([.fraction(0.30), .fraction(0.65)]) + .presentationDragIndicator(.hidden) + .interactiveDismissDisabled(false) + .onChange(of: locationsHandler.locationsArray.last) { newLoc in + if locationsHandler.isRecording { + if let loc = newLoc { + if recording != nil { + let locationEntity = LocationEntity(context: context) + locationEntity.routeLocation = recording + locationEntity.id = Int32(locationsHandler.count) + locationEntity.altitude = Int32(loc.altitude) + locationEntity.heading = Int32(loc.course) + locationEntity.speed = Int32(loc.speed) + locationEntity.latitudeI = Int32(loc.coordinate.latitude * 1e7) + locationEntity.longitudeI = Int32(loc.coordinate.longitude * 1e7) + do { + try context.save() + print("💾 Saved a new route location") + //print("💾 Updated Canned Messages Messages For: \(fetchedNode[0].num)") + } catch { + context.rollback() + let nsError = error as NSError + print("💥 Error Saving LocationEntity from the Route Recorder \(nsError)") + } + } + } + } + } + } + } + .ignoresSafeArea(.all, edges: [.top, .leading, .trailing]) + } +} diff --git a/Meshtastic/Views/Settings/Settings.swift b/Meshtastic/Views/Settings/Settings.swift index 66d1e02e..87d23bd3 100644 --- a/Meshtastic/Views/Settings/Settings.swift +++ b/Meshtastic/Views/Settings/Settings.swift @@ -69,14 +69,14 @@ struct Settings: View { Text("routes") } .tag(SettingsSidebar.routes) -// NavigationLink { -// RouteRecorder() -// } label: { -// Image(systemName: "record.circle") -// .symbolRenderingMode(.hierarchical) -// Text("route.recorder") -// } -// .tag(SettingsSidebar.routeRecorder) + NavigationLink { + RouteRecorder() + } label: { + Image(systemName: "record.circle") + .symbolRenderingMode(.hierarchical) + Text("route.recorder") + } + .tag(SettingsSidebar.routeRecorder) } let node = nodes.first(where: { $0.num == preferredNodeNum }) From 10359784f77a8f168b9f6b4002f3075a65d3df5e Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sun, 21 Jan 2024 17:42:23 -0800 Subject: [PATCH 17/23] Set tapbacks to read as scrolling by in messages --- .../Views/Messages/ChannelMessageList.swift | 15 +++++++++++++++ Meshtastic/Views/Messages/UserMessageList.swift | 14 ++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/Meshtastic/Views/Messages/ChannelMessageList.swift b/Meshtastic/Views/Messages/ChannelMessageList.swift index be590909..e1a8811d 100644 --- a/Meshtastic/Views/Messages/ChannelMessageList.swift +++ b/Meshtastic/Views/Messages/ChannelMessageList.swift @@ -190,6 +190,20 @@ struct ChannelMessageList: View { .fixedSize() .padding(.bottom, 1) } + .onAppear { + if !tapback.read { + tapback.read = true + do { + try context.save() + print("📖 Read message \(message.messageId) ") + appState.unreadChannelMessages = myInfo.unreadMessages + UIApplication.shared.applicationIconBadgeNumber = appState.unreadChannelMessages + appState.unreadDirectMessages + context.refresh(myInfo, mergeChanges: true) + } catch { + print("Failed to read tapback \(tapback.messageId)") + } + } + } } } .padding(10) @@ -199,6 +213,7 @@ struct ChannelMessageList: View { ) } } + HStack { if currentUser && message.receivedACK { // Ack Received diff --git a/Meshtastic/Views/Messages/UserMessageList.swift b/Meshtastic/Views/Messages/UserMessageList.swift index 8116f7fd..d0c9c0e1 100644 --- a/Meshtastic/Views/Messages/UserMessageList.swift +++ b/Meshtastic/Views/Messages/UserMessageList.swift @@ -167,6 +167,20 @@ struct UserMessageList: View { .fixedSize() .padding(.bottom, 1) } + .onAppear { + if !tapback.read { + tapback.read = true + do { + try context.save() + print("📖 Read tapback \(tapback.messageId) ") + appState.unreadDirectMessages = user.unreadMessages + UIApplication.shared.applicationIconBadgeNumber = appState.unreadChannelMessages + appState.unreadDirectMessages + + } catch { + print("Failed to read tapback \(tapback.messageId)") + } + } + } } } .padding(10) From f05777919dd7589f7cc5168d18f0180b73f55a7c Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Sun, 21 Jan 2024 18:20:45 -0800 Subject: [PATCH 18/23] Show all nodes on the mesh map again --- Meshtastic/Views/Nodes/MeshMap.swift | 31 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/Meshtastic/Views/Nodes/MeshMap.swift b/Meshtastic/Views/Nodes/MeshMap.swift index 5831679a..dfed0c38 100644 --- a/Meshtastic/Views/Nodes/MeshMap.swift +++ b/Meshtastic/Views/Nodes/MeshMap.swift @@ -43,9 +43,9 @@ struct MeshMap: View { var delay: Double = 0 @State private var scale: CGFloat = 0.5 - + /// && time >= %@ @FetchRequest(sortDescriptors: [NSSortDescriptor(key: "time", ascending: true)], - predicate: NSPredicate(format: "nodePosition != nil && latest == true && time >= %@", Calendar.current.date(byAdding: .day, value: -7, to: Date())! as NSDate), animation: .none) + predicate: NSPredicate(format: "nodePosition != nil && latest == true", Calendar.current.date(byAdding: .day, value: -7, to: Date())! as NSDate), animation: .none) private var positions: FetchedResults @FetchRequest(sortDescriptors: [NSSortDescriptor(key: "name", ascending: false)], @@ -67,19 +67,6 @@ struct MeshMap: View { ZStack { MapReader { reader in Map(position: $position, bounds: MapCameraBounds(minimumDistance: 1, maximumDistance: .infinity), scope: mapScope) { - /// Waypoint Annotations - if waypoints.count > 0 && showWaypoints { - ForEach(Array(waypoints), id: \.id) { waypoint in - Annotation(waypoint.name ?? "?", coordinate: waypoint.coordinate) { - LazyVStack { - CircleText(text: String(UnicodeScalar(Int(waypoint.icon)) ?? "📍"), color: Color.orange, circleSize: 40) - .onTapGesture(perform: { location in - selectedWaypoint = (selectedWaypoint == waypoint ? nil : waypoint) - }) - } - } - } - } /// Convex Hull if showConvexHull { if lineCoords.count > 0 { @@ -209,6 +196,20 @@ struct MeshMap: View { } } } + + /// Waypoint Annotations + if waypoints.count > 0 && showWaypoints { + ForEach(Array(waypoints), id: \.id) { waypoint in + Annotation(waypoint.name ?? "?", coordinate: waypoint.coordinate) { + LazyVStack { + CircleText(text: String(UnicodeScalar(Int(waypoint.icon)) ?? "📍"), color: Color.orange, circleSize: 40) + .onTapGesture(perform: { location in + selectedWaypoint = (selectedWaypoint == waypoint ? nil : waypoint) + }) + } + } + } + } } .mapScope(mapScope) .mapStyle(mapStyle) From bc3fc5e50cdd51399dd81c8cff9ae4ec50e3cae1 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 22 Jan 2024 13:21:17 -0800 Subject: [PATCH 19/23] Add 48 as a GPIO pin --- Meshtastic/Helpers/MeshPackets.swift | 2 +- Meshtastic/Views/Settings/Config/DeviceConfig.swift | 4 ++-- .../Views/Settings/Config/Module/CannedMessagesConfig.swift | 6 +++--- .../Settings/Config/Module/DetectionSensorConfig.swift | 2 +- .../Settings/Config/Module/ExternalNotificationConfig.swift | 6 +++--- Meshtastic/Views/Settings/Config/Module/SerialConfig.swift | 4 ++-- Meshtastic/Views/Settings/Config/PositionConfig.swift | 6 +++--- Meshtastic/Views/Settings/RouteRecorder.swift | 6 ++++++ 8 files changed, 21 insertions(+), 15 deletions(-) diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index bf47bc0f..9b720845 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -796,7 +796,7 @@ func textMessageAppPacket(packet: MeshPacket, blockRangeTest: Bool, connectedNod subtitle: "AKA \(newMessage.fromUser?.shortName ?? "?")", content: messageText, target: "message", - path: "meshtastic://messages/dm/user/\(newMessage.fromUser?.num ?? 0)/message/\(newMessage.messageId)" + path: "meshtastic://open-dm?userid=\(newMessage.fromUser?.num ?? 0)&id=\(newMessage.messageId)" ) ] manager.schedule() diff --git a/Meshtastic/Views/Settings/Config/DeviceConfig.swift b/Meshtastic/Views/Settings/Config/DeviceConfig.swift index 674c951f..5572c330 100644 --- a/Meshtastic/Views/Settings/Config/DeviceConfig.swift +++ b/Meshtastic/Views/Settings/Config/DeviceConfig.swift @@ -103,7 +103,7 @@ struct DeviceConfig: View { } Section(header: Text("GPIO")) { Picker("Button GPIO", selection: $buttonGPIO) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { @@ -113,7 +113,7 @@ struct DeviceConfig: View { } .pickerStyle(DefaultPickerStyle()) Picker("Buzzer GPIO", selection: $buzzerGPIO) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { diff --git a/Meshtastic/Views/Settings/Config/Module/CannedMessagesConfig.swift b/Meshtastic/Views/Settings/Config/Module/CannedMessagesConfig.swift index ded4f262..cb5585d2 100644 --- a/Meshtastic/Views/Settings/Config/Module/CannedMessagesConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/CannedMessagesConfig.swift @@ -124,7 +124,7 @@ struct CannedMessagesConfig: View { .disabled(configPreset > 0) Section(header: Text("Inputs")) { Picker("Pin A", selection: $inputbrokerPinA) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { @@ -136,7 +136,7 @@ struct CannedMessagesConfig: View { Text("GPIO pin for rotary encoder A port.") .font(.caption) Picker("Pin B", selection: $inputbrokerPinB) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { @@ -148,7 +148,7 @@ struct CannedMessagesConfig: View { Text("GPIO pin for rotary encoder B port.") .font(.caption) Picker("Press Pin", selection: $inputbrokerPinPress) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { diff --git a/Meshtastic/Views/Settings/Config/Module/DetectionSensorConfig.swift b/Meshtastic/Views/Settings/Config/Module/DetectionSensorConfig.swift index 7b874aa0..23b33a90 100644 --- a/Meshtastic/Views/Settings/Config/Module/DetectionSensorConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/DetectionSensorConfig.swift @@ -139,7 +139,7 @@ struct DetectionSensorConfig: View { .listRowSeparator(.visible) .offset(y: -10) Picker("GPIO Pin to monitor", selection: $monitorPin) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { diff --git a/Meshtastic/Views/Settings/Config/Module/ExternalNotificationConfig.swift b/Meshtastic/Views/Settings/Config/Module/ExternalNotificationConfig.swift index 512f09ae..511385d8 100644 --- a/Meshtastic/Views/Settings/Config/Module/ExternalNotificationConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/ExternalNotificationConfig.swift @@ -99,7 +99,7 @@ struct ExternalNotificationConfig: View { Text("If enabled, the 'output' Pin will be pulled active high, disabled means active low.") .font(.caption) Picker("Output pin GPIO", selection: $output) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { @@ -147,7 +147,7 @@ struct ExternalNotificationConfig: View { } .toggleStyle(SwitchToggleStyle(tint: .accentColor)) Picker("Output pin buzzer GPIO ", selection: $outputBuzzer) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { @@ -157,7 +157,7 @@ struct ExternalNotificationConfig: View { } .pickerStyle(DefaultPickerStyle()) Picker("Output pin vibra GPIO", selection: $outputVibra) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { diff --git a/Meshtastic/Views/Settings/Config/Module/SerialConfig.swift b/Meshtastic/Views/Settings/Config/Module/SerialConfig.swift index 0e36460e..c3fa234d 100644 --- a/Meshtastic/Views/Settings/Config/Module/SerialConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/SerialConfig.swift @@ -99,7 +99,7 @@ struct SerialConfig: View { Section(header: Text("GPIO")) { Picker("Receive data (rxd) GPIO pin", selection: $rxd) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { @@ -110,7 +110,7 @@ struct SerialConfig: View { .pickerStyle(DefaultPickerStyle()) Picker("Transmit data (txd) GPIO pin", selection: $txd) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { diff --git a/Meshtastic/Views/Settings/Config/PositionConfig.swift b/Meshtastic/Views/Settings/Config/PositionConfig.swift index c70e5c89..a92f06ef 100644 --- a/Meshtastic/Views/Settings/Config/PositionConfig.swift +++ b/Meshtastic/Views/Settings/Config/PositionConfig.swift @@ -213,7 +213,7 @@ struct PositionConfig: View { if deviceGpsEnabled { Picker("GPS Receive GPIO", selection: $rxGpio) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { @@ -223,7 +223,7 @@ struct PositionConfig: View { } .pickerStyle(DefaultPickerStyle()) Picker("GPS Transmit GPIO", selection: $txGpio) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { @@ -233,7 +233,7 @@ struct PositionConfig: View { } .pickerStyle(DefaultPickerStyle()) Picker("GPS EN GPIO", selection: $gpsEnGpio) { - ForEach(0..<48) { + ForEach(0..<49) { if $0 == 0 { Text("unset") } else { diff --git a/Meshtastic/Views/Settings/RouteRecorder.swift b/Meshtastic/Views/Settings/RouteRecorder.swift index 601f2a49..88c4a44e 100644 --- a/Meshtastic/Views/Settings/RouteRecorder.swift +++ b/Meshtastic/Views/Settings/RouteRecorder.swift @@ -257,6 +257,12 @@ struct RouteRecorder: View { .presentationDetents([.fraction(0.30), .fraction(0.65)]) .presentationDragIndicator(.hidden) .interactiveDismissDisabled(false) + .onAppear { + UIApplication.shared.isIdleTimerDisabled = true + } + .onDisappear(perform: { + UIApplication.shared.isIdleTimerDisabled = false + }) .onChange(of: locationsHandler.locationsArray.last) { newLoc in if locationsHandler.isRecording { if let loc = newLoc { From 4d701904cdeed0edac4643112379613e0abb3539 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Wed, 24 Jan 2024 08:52:32 -0800 Subject: [PATCH 20/23] Consider ipad mini a phone --- Meshtastic/Views/Nodes/DeviceMetricsLog.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift index b3d338e0..ba84dafc 100644 --- a/Meshtastic/Views/Nodes/DeviceMetricsLog.swift +++ b/Meshtastic/Views/Nodes/DeviceMetricsLog.swift @@ -86,7 +86,7 @@ struct DeviceMetricsLog: View { } let localeDateFormat = DateFormatter.dateFormat(fromTemplate: "yyMMddjmma", options: 0, locale: Locale.current) let dateFormatString = (localeDateFormat ?? "MM/dd/YY j:mma").replacingOccurrences(of: ",", with: "") - if UIDevice.current.userInterfaceIdiom == .pad || UIDevice.current.userInterfaceIdiom == .mac { + if UIScreen.main.bounds.size.width > 768 && (UIDevice.current.userInterfaceIdiom == .pad || UIDevice.current.userInterfaceIdiom == .mac) { // Add a table for mac and ipad // Table(Array(deviceMetrics),id: \.self) { Table(deviceMetrics) { From 4bcf0745f351091ff8593ac98a52a3011cd83770 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Wed, 24 Jan 2024 10:14:10 -0800 Subject: [PATCH 21/23] Truncate Int64 values that seem to be causing some crashes in the logs --- Meshtastic/Helpers/BLEManager.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Meshtastic/Helpers/BLEManager.swift b/Meshtastic/Helpers/BLEManager.swift index 2d7bcc77..155f19bf 100644 --- a/Meshtastic/Helpers/BLEManager.swift +++ b/Meshtastic/Helpers/BLEManager.swift @@ -552,17 +552,17 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate // Channels if decodedInfo.channel.isInitialized && connectedPeripheral != nil { nowKnown = true - channelPacket(channel: decodedInfo.channel, fromNum: connectedPeripheral.num, context: context!) + channelPacket(channel: decodedInfo.channel, fromNum: Int64(truncatingIfNeeded: connectedPeripheral.num), context: context!) } // Config if decodedInfo.config.isInitialized && !invalidVersion && connectedPeripheral != nil { nowKnown = true - localConfig(config: decodedInfo.config, context: context!, nodeNum: self.connectedPeripheral.num, nodeLongName: self.connectedPeripheral.longName) + localConfig(config: decodedInfo.config, context: context!, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral.num), nodeLongName: self.connectedPeripheral.longName) } // Module Config if decodedInfo.moduleConfig.isInitialized && !invalidVersion && self.connectedPeripheral?.num != 0{ nowKnown = true - moduleConfig(config: decodedInfo.moduleConfig, context: context!, nodeNum: self.connectedPeripheral.num, nodeLongName: self.connectedPeripheral.longName) + moduleConfig(config: decodedInfo.moduleConfig, context: context!, nodeNum: Int64(truncatingIfNeeded: self.connectedPeripheral.num), nodeLongName: self.connectedPeripheral.longName) if decodedInfo.moduleConfig.payloadVariant == ModuleConfig.OneOf_PayloadVariant.cannedMessage(decodedInfo.moduleConfig.cannedMessage) { if decodedInfo.moduleConfig.cannedMessage.enabled { _ = self.getCannedMessageModuleMessages(destNum: self.connectedPeripheral.num, wantResponse: true) From 6034d9036088cacf8505c649ae53e1c670daba1c Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Wed, 24 Jan 2024 10:40:26 -0800 Subject: [PATCH 22/23] Add some padding to the channel key validation --- Meshtastic/Views/Settings/Channels.swift | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/Meshtastic/Views/Settings/Channels.swift b/Meshtastic/Views/Settings/Channels.swift index c736d35a..88bcd2ab 100644 --- a/Meshtastic/Views/Settings/Channels.swift +++ b/Meshtastic/Views/Settings/Channels.swift @@ -172,6 +172,7 @@ struct Channels: View { "Key", text: $channelKey ) + .padding(4) .disableAutocorrection(true) .keyboardType(.alphabet) .foregroundColor(Color.gray) @@ -195,13 +196,6 @@ struct Channels: View { hasChanges = true }) .disabled(channelKeySize <= 0) -// TextField( -// "", -// text: $channelKey, -// axis: .vertical -// ) -// .foregroundColor(Color.gray) -// .disabled(true) } Picker("Channel Role", selection: $channelRole) { if channelRole == 1 { From 6437e110d1d17b7cde5386746cd8ef0e8c3f2295 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Wed, 24 Jan 2024 10:48:33 -0800 Subject: [PATCH 23/23] Hide route recorder --- Meshtastic/Views/Settings/RouteRecorder.swift | 584 +++++++++--------- Meshtastic/Views/Settings/Settings.swift | 16 +- 2 files changed, 300 insertions(+), 300 deletions(-) diff --git a/Meshtastic/Views/Settings/RouteRecorder.swift b/Meshtastic/Views/Settings/RouteRecorder.swift index 88c4a44e..71794725 100644 --- a/Meshtastic/Views/Settings/RouteRecorder.swift +++ b/Meshtastic/Views/Settings/RouteRecorder.swift @@ -1,295 +1,295 @@ +//// +//// Routes.swift +//// Meshtastic +//// +//// Created by Garth Vander Houwen on 11/21/23. +//// // -// Routes.swift -// Meshtastic +//import SwiftUI +//import CoreData +//import MapKit +//import CoreLocation +//import CoreMotion // -// Created by Garth Vander Houwen on 11/21/23. +//@available(iOS 17.0, macOS 14.0, *) +//struct RouteRecorder: View { +// +// @ObservedObject var locationsHandler: LocationsHandler = LocationsHandler.shared +// @Environment(\.managedObjectContext) var context +// @State private var position: MapCameraPosition = .userLocation(followsHeading: true, fallback: .automatic) +// //@State var mapStyle: MapStyle = MapStyle.hybrid(elevation: .realistic, pointsOfInterest: .all, showsTraffic: true) +// @State var mapStyle: MapStyle = MapStyle.standard(elevation: .realistic) +// @State var isShowingDetails = false +// @Namespace var namespace +// @Namespace var routerecorderscope +// @State var recording: RouteEntity? +// @State var color: Color = .blue +// +// var body: some View { +// VStack { +// ZStack { +// Map(position: $position, scope: routerecorderscope) { +// UserAnnotation() +// /// Route Lines +// let lineCoords = locationsHandler.locationsArray.compactMap({(position) -> CLLocationCoordinate2D in +// return position.coordinate +// }) +// +// let gradient = LinearGradient( +// colors: [color], +// startPoint: .leading, endPoint: .trailing +// ) +// let dashed = StrokeStyle( +// lineWidth: 3, +// lineCap: .round, lineJoin: .round, dash: [10, 10] +// ) +// MapPolyline(coordinates: lineCoords) +// .stroke(gradient, style: dashed) // - -import SwiftUI -import CoreData -import MapKit -import CoreLocation -import CoreMotion - -@available(iOS 17.0, macOS 14.0, *) -struct RouteRecorder: View { - - @ObservedObject var locationsHandler: LocationsHandler = LocationsHandler.shared - @Environment(\.managedObjectContext) var context - @State private var position: MapCameraPosition = .userLocation(followsHeading: true, fallback: .automatic) - //@State var mapStyle: MapStyle = MapStyle.hybrid(elevation: .realistic, pointsOfInterest: .all, showsTraffic: true) - @State var mapStyle: MapStyle = MapStyle.standard(elevation: .realistic) - @State var isShowingDetails = false - @Namespace var namespace - @Namespace var routerecorderscope - @State var recording: RouteEntity? - @State var color: Color = .blue - - var body: some View { - VStack { - ZStack { - Map(position: $position, scope: routerecorderscope) { - UserAnnotation() - /// Route Lines - let lineCoords = locationsHandler.locationsArray.compactMap({(position) -> CLLocationCoordinate2D in - return position.coordinate - }) - - let gradient = LinearGradient( - colors: [color], - startPoint: .leading, endPoint: .trailing - ) - let dashed = StrokeStyle( - lineWidth: 3, - lineCap: .round, lineJoin: .round, dash: [10, 10] - ) - MapPolyline(coordinates: lineCoords) - .stroke(gradient, style: dashed) - - } - .mapStyle(mapStyle) - } - .mapScope(routerecorderscope) - .safeAreaInset(edge: .bottom) { - ZStack { - VStack { - HStack(spacing: 10) { - Spacer() - - Button { - isShowingDetails = true - } label: { - Image(systemName: locationsHandler.isRecording ? "record.circle.fill" : "record.circle") - .font(.system(size: 72)) - .symbolRenderingMode(.multicolor) - .foregroundColor(.red) - } - .buttonStyle(.bordered) - .foregroundColor(.red) - .buttonBorderShape(.circle) - .matchedGeometryEffect(id: "Details Button", in: namespace) - - Spacer() - } - } - } - .padding() - } - .sheet(isPresented: $isShowingDetails) { - NavigationStack { - VStack { - if locationsHandler.isRecording { - HStack (alignment: .center) { - Image(systemName: "record.circle.fill") - .symbolRenderingMode(.multicolor) - .font(.title) - .foregroundColor(.red) - Text("Recording route") - .font(.title) - Spacer() - Text("\(locationsHandler.count)") - .foregroundColor(.red) - .font(.title2) - } - .padding() - } else if locationsHandler.isRecordingPaused { - HStack (alignment: .center) { - - Image(systemName: "playpause") - .symbolRenderingMode(.multicolor) - .font(.title3) - .foregroundColor(.red) - Text("Route recording paused") - .font(.title) - } - .padding(.top) - } - - if locationsHandler.isRecording || locationsHandler.isRecordingPaused { - Divider() - HStack { - VStack { - Text(locationsHandler.recordingStarted ?? Date(), style: .timer) - .font(.title) - .fixedSize() - Text("Time") - .font(.callout) - .fixedSize() - } - .padding(.horizontal) - Divider() - VStack { - let distance = Measurement(value: locationsHandler.distanceTraveled, unit: UnitLength.meters) - Text("\(distance.formatted())") - .font(.title) - .fixedSize() - Text("Distance") - .font(.callout) - .fixedSize() - } - .padding(.horizontal) - Divider() - VStack { - let gain = Measurement(value: locationsHandler.elevationGain, unit: UnitLength.meters) - Text(gain.formatted()) - .font(.title) - Text("Elev. Gain") - .font(.callout) - } - .padding(.horizontal) - } - .frame(maxHeight: 90) - } - Divider() - VStack(alignment: .leading) { - List { - GPSStatus(largeFont: .body, smallFont: .callout) - } - .listStyle(.plain) - HStack { - Spacer() - if !locationsHandler.isRecording && !locationsHandler.isRecordingPaused { - /// We are not recording or paused, show start recording button - Button { - locationsHandler.isRecording = true - locationsHandler.count = 0 - locationsHandler.distanceTraveled = 0.0 - locationsHandler.elevationGain = 0.0 - locationsHandler.locationsArray.removeAll() - locationsHandler.recordingStarted = Date() - let newRoute = RouteEntity(context: context) - newRoute.name = String("Route Recording") - newRoute.id = Int32.random(in: Int32(Int8.max) ... Int32.max) - newRoute.color = Int64(UIColor.random.hex) - newRoute.date = Date() - newRoute.enabled = false - color = Color(UIColor(hex: UInt32(newRoute.color))) - self.recording = newRoute - do { - try context.save() - print("💾 Saved a new route") - } catch { - context.rollback() - let nsError = error as NSError - print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") - } - } label: { - Label("start", systemImage: "play") - } - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding(.bottom) - - } else if locationsHandler.isRecording { - /// We are recording show pause button - Button { - locationsHandler.isRecording = false - locationsHandler.isRecordingPaused = true - } label: { - Label("pause", systemImage: "pause") - } - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding(.bottom) - } else if locationsHandler.isRecordingPaused { - /// We are paused show resume button - Button { - locationsHandler.isRecording = true - locationsHandler.isRecordingPaused = false - } label: { - Label("resume", systemImage: "playpause") - } - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding(.bottom) - } - - if locationsHandler.isRecording || locationsHandler.isRecordingPaused { - /// We are recording or paused, show finish button - Button { - locationsHandler.isRecording = false - locationsHandler.isRecordingPaused = false - locationsHandler.distanceTraveled = 0.0 - locationsHandler.elevationGain = 0.0 - locationsHandler.locationsArray.removeAll() - locationsHandler.recordingStarted = nil - if let rec = recording { - rec.enabled = true - context.refresh(rec, mergeChanges:true) - } - - do { - try context.save() - print("💾 Saved a route finish") - } catch { - context.rollback() - let nsError = error as NSError - print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") - } - } label: { - Label("finish", systemImage: "flag.checkered") - } - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding(.bottom) - } -#if targetEnvironment(macCatalyst) - Button(role: .cancel) { - isShowingDetails = false - } label: { - Label("close", systemImage: "xmark") - } - .buttonStyle(.bordered) - .buttonBorderShape(.capsule) - .controlSize(.large) - .padding(.bottom) -#endif - Spacer() - } - - } - } - } - .presentationDetents([.fraction(0.30), .fraction(0.65)]) - .presentationDragIndicator(.hidden) - .interactiveDismissDisabled(false) - .onAppear { - UIApplication.shared.isIdleTimerDisabled = true - } - .onDisappear(perform: { - UIApplication.shared.isIdleTimerDisabled = false - }) - .onChange(of: locationsHandler.locationsArray.last) { newLoc in - if locationsHandler.isRecording { - if let loc = newLoc { - if recording != nil { - let locationEntity = LocationEntity(context: context) - locationEntity.routeLocation = recording - locationEntity.id = Int32(locationsHandler.count) - locationEntity.altitude = Int32(loc.altitude) - locationEntity.heading = Int32(loc.course) - locationEntity.speed = Int32(loc.speed) - locationEntity.latitudeI = Int32(loc.coordinate.latitude * 1e7) - locationEntity.longitudeI = Int32(loc.coordinate.longitude * 1e7) - do { - try context.save() - print("💾 Saved a new route location") - //print("💾 Updated Canned Messages Messages For: \(fetchedNode[0].num)") - } catch { - context.rollback() - let nsError = error as NSError - print("💥 Error Saving LocationEntity from the Route Recorder \(nsError)") - } - } - } - } - } - } - } - .ignoresSafeArea(.all, edges: [.top, .leading, .trailing]) - } -} +// } +// .mapStyle(mapStyle) +// } +// .mapScope(routerecorderscope) +// .safeAreaInset(edge: .bottom) { +// ZStack { +// VStack { +// HStack(spacing: 10) { +// Spacer() +// +// Button { +// isShowingDetails = true +// } label: { +// Image(systemName: locationsHandler.isRecording ? "record.circle.fill" : "record.circle") +// .font(.system(size: 72)) +// .symbolRenderingMode(.multicolor) +// .foregroundColor(.red) +// } +// .buttonStyle(.bordered) +// .foregroundColor(.red) +// .buttonBorderShape(.circle) +// .matchedGeometryEffect(id: "Details Button", in: namespace) +// +// Spacer() +// } +// } +// } +// .padding() +// } +// .sheet(isPresented: $isShowingDetails) { +// NavigationStack { +// VStack { +// if locationsHandler.isRecording { +// HStack (alignment: .center) { +// Image(systemName: "record.circle.fill") +// .symbolRenderingMode(.multicolor) +// .font(.title) +// .foregroundColor(.red) +// Text("Recording route") +// .font(.title) +// Spacer() +// Text("\(locationsHandler.count)") +// .foregroundColor(.red) +// .font(.title2) +// } +// .padding() +// } else if locationsHandler.isRecordingPaused { +// HStack (alignment: .center) { +// +// Image(systemName: "playpause") +// .symbolRenderingMode(.multicolor) +// .font(.title3) +// .foregroundColor(.red) +// Text("Route recording paused") +// .font(.title) +// } +// .padding(.top) +// } +// +// if locationsHandler.isRecording || locationsHandler.isRecordingPaused { +// Divider() +// HStack { +// VStack { +// Text(locationsHandler.recordingStarted ?? Date(), style: .timer) +// .font(.title) +// .fixedSize() +// Text("Time") +// .font(.callout) +// .fixedSize() +// } +// .padding(.horizontal) +// Divider() +// VStack { +// let distance = Measurement(value: locationsHandler.distanceTraveled, unit: UnitLength.meters) +// Text("\(distance.formatted())") +// .font(.title) +// .fixedSize() +// Text("Distance") +// .font(.callout) +// .fixedSize() +// } +// .padding(.horizontal) +// Divider() +// VStack { +// let gain = Measurement(value: locationsHandler.elevationGain, unit: UnitLength.meters) +// Text(gain.formatted()) +// .font(.title) +// Text("Elev. Gain") +// .font(.callout) +// } +// .padding(.horizontal) +// } +// .frame(maxHeight: 90) +// } +// Divider() +// VStack(alignment: .leading) { +// List { +// GPSStatus(largeFont: .body, smallFont: .callout) +// } +// .listStyle(.plain) +// HStack { +// Spacer() +// if !locationsHandler.isRecording && !locationsHandler.isRecordingPaused { +// /// We are not recording or paused, show start recording button +// Button { +// locationsHandler.isRecording = true +// locationsHandler.count = 0 +// locationsHandler.distanceTraveled = 0.0 +// locationsHandler.elevationGain = 0.0 +// locationsHandler.locationsArray.removeAll() +// locationsHandler.recordingStarted = Date() +// let newRoute = RouteEntity(context: context) +// newRoute.name = String("Route Recording") +// newRoute.id = Int32.random(in: Int32(Int8.max) ... Int32.max) +// newRoute.color = Int64(UIColor.random.hex) +// newRoute.date = Date() +// newRoute.enabled = false +// color = Color(UIColor(hex: UInt32(newRoute.color))) +// self.recording = newRoute +// do { +// try context.save() +// print("💾 Saved a new route") +// } catch { +// context.rollback() +// let nsError = error as NSError +// print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") +// } +// } label: { +// Label("start", systemImage: "play") +// } +// .buttonStyle(.bordered) +// .buttonBorderShape(.capsule) +// .controlSize(.large) +// .padding(.bottom) +// +// } else if locationsHandler.isRecording { +// /// We are recording show pause button +// Button { +// locationsHandler.isRecording = false +// locationsHandler.isRecordingPaused = true +// } label: { +// Label("pause", systemImage: "pause") +// } +// .buttonStyle(.bordered) +// .buttonBorderShape(.capsule) +// .controlSize(.large) +// .padding(.bottom) +// } else if locationsHandler.isRecordingPaused { +// /// We are paused show resume button +// Button { +// locationsHandler.isRecording = true +// locationsHandler.isRecordingPaused = false +// } label: { +// Label("resume", systemImage: "playpause") +// } +// .buttonStyle(.bordered) +// .buttonBorderShape(.capsule) +// .controlSize(.large) +// .padding(.bottom) +// } +// +// if locationsHandler.isRecording || locationsHandler.isRecordingPaused { +// /// We are recording or paused, show finish button +// Button { +// locationsHandler.isRecording = false +// locationsHandler.isRecordingPaused = false +// locationsHandler.distanceTraveled = 0.0 +// locationsHandler.elevationGain = 0.0 +// locationsHandler.locationsArray.removeAll() +// locationsHandler.recordingStarted = nil +// if let rec = recording { +// rec.enabled = true +// context.refresh(rec, mergeChanges:true) +// } +// +// do { +// try context.save() +// print("💾 Saved a route finish") +// } catch { +// context.rollback() +// let nsError = error as NSError +// print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)") +// } +// } label: { +// Label("finish", systemImage: "flag.checkered") +// } +// .buttonStyle(.bordered) +// .buttonBorderShape(.capsule) +// .controlSize(.large) +// .padding(.bottom) +// } +//#if targetEnvironment(macCatalyst) +// Button(role: .cancel) { +// isShowingDetails = false +// } label: { +// Label("close", systemImage: "xmark") +// } +// .buttonStyle(.bordered) +// .buttonBorderShape(.capsule) +// .controlSize(.large) +// .padding(.bottom) +//#endif +// Spacer() +// } +// +// } +// } +// } +// .presentationDetents([.fraction(0.30), .fraction(0.65)]) +// .presentationDragIndicator(.hidden) +// .interactiveDismissDisabled(false) +// .onAppear { +// UIApplication.shared.isIdleTimerDisabled = true +// } +// .onDisappear(perform: { +// UIApplication.shared.isIdleTimerDisabled = false +// }) +// .onChange(of: locationsHandler.locationsArray.last) { newLoc in +// if locationsHandler.isRecording { +// if let loc = newLoc { +// if recording != nil { +// let locationEntity = LocationEntity(context: context) +// locationEntity.routeLocation = recording +// locationEntity.id = Int32(locationsHandler.count) +// locationEntity.altitude = Int32(loc.altitude) +// locationEntity.heading = Int32(loc.course) +// locationEntity.speed = Int32(loc.speed) +// locationEntity.latitudeI = Int32(loc.coordinate.latitude * 1e7) +// locationEntity.longitudeI = Int32(loc.coordinate.longitude * 1e7) +// do { +// try context.save() +// print("💾 Saved a new route location") +// //print("💾 Updated Canned Messages Messages For: \(fetchedNode[0].num)") +// } catch { +// context.rollback() +// let nsError = error as NSError +// print("💥 Error Saving LocationEntity from the Route Recorder \(nsError)") +// } +// } +// } +// } +// } +// } +// } +// .ignoresSafeArea(.all, edges: [.top, .leading, .trailing]) +// } +//} diff --git a/Meshtastic/Views/Settings/Settings.swift b/Meshtastic/Views/Settings/Settings.swift index 87d23bd3..66d1e02e 100644 --- a/Meshtastic/Views/Settings/Settings.swift +++ b/Meshtastic/Views/Settings/Settings.swift @@ -69,14 +69,14 @@ struct Settings: View { Text("routes") } .tag(SettingsSidebar.routes) - NavigationLink { - RouteRecorder() - } label: { - Image(systemName: "record.circle") - .symbolRenderingMode(.hierarchical) - Text("route.recorder") - } - .tag(SettingsSidebar.routeRecorder) +// NavigationLink { +// RouteRecorder() +// } label: { +// Image(systemName: "record.circle") +// .symbolRenderingMode(.hierarchical) +// Text("route.recorder") +// } +// .tag(SettingsSidebar.routeRecorder) } let node = nodes.first(where: { $0.num == preferredNodeNum })

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 literal 0 HcmV?d00001 diff --git a/Meshtastic/CarPlay/CarPlaySceneDelegate.swift b/Meshtastic/CarPlay/CarPlaySceneDelegate.swift new file mode 100644 index 00000000..c9a9a409 --- /dev/null +++ b/Meshtastic/CarPlay/CarPlaySceneDelegate.swift @@ -0,0 +1,182 @@ +// +// CarPlaySceneDelegate.swift +// Meshtastic +// +// Created by Garth Vander Houwen on 1/18/24. +// + +import Foundation +import CarPlay + +@objc class CarPlaySceneDelegate: NSObject, CPTemplateApplicationSceneDelegate { + + private var interfaceController: CPInterfaceController? + private var savedTabBarTemplate: CPTabBarTemplate? + + // https://developer.apple.com/documentation/carplay/displaying_content_in_carplay + // CarPlay calls this function to initialize the scene. + func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didConnect interfaceController: CPInterfaceController) { + // Save the interface controller + self.interfaceController = interfaceController + + let template = tabBarTemplate() + self.savedTabBarTemplate = template + + // Create the root template (screen) and install it at the root of the navigation hierarchy. + interfaceController.setRootTemplate(template, animated: true, completion: nil) + } + + func templateApplicationScene(_ templateApplicationScene: CPTemplateApplicationScene, didDisconnectInterfaceController interfaceController: CPInterfaceController) { + self.interfaceController = nil + } + + private func tabBarTemplate() -> CPTabBarTemplate { + return CPTabBarTemplate(templates: [ + channelListTemplate(), + listTemplate(), + // gridTemplate(), + // informationTemplate(layout: .leading) + ]) + } + + private func replaceTabs() { + self.savedTabBarTemplate?.updateTemplates([ + channelListTemplate(), + listTemplate(), + gridTemplate(), + informationTemplate(layout: .leading), + informationTemplate(layout: .leading), + ]) + } + + private func channelListTemplate() -> CPListTemplate { + let template = CPListTemplate( + title: "Channels", + sections: [ + CPListSection(items: [ + listItem(), + listItem(), + ], header: nil, sectionIndexTitle: nil), + ] + ) + template.tabTitle = "Channels" + template.tabImage = UIImage(systemName: "fibrechannel")// UIImage(named: "RoundIcon")! + + return template + } + + private func listTemplate() -> CPListTemplate { + let template = CPListTemplate( + title: "Direct Messages", + sections: [ + CPListSection(items: [ + listItem(), + listItem(), + ], header: nil, sectionIndexTitle: nil), + ] + ) + template.tabTitle = "Nodes" + template.tabImage = UIImage(systemName: "message.fill")// UIImage(named: "RoundIcon")! + + return template + } + + private func listItem() -> CPListTemplateItem { + let item = CPListItem(text: "Text", detailText: "Detail Text", image: UIImage(named: "RoundIcon")!, accessoryImage: nil, accessoryType: .none) + + item.handler = { [weak self] (item, completion) in + guard let self = self else { + completion() + return + } + + self.interfaceController?.pushTemplate( + self.listTemplate(), + animated: true, + completion: { (didPresent, error) in + completion() + } + ) + } + + return item + } + + private func gridTemplate() -> CPGridTemplate { + let template = CPGridTemplate( + title: "Grid Title", + gridButtons: [ + gridButton(), + gridButton(), + gridButton(), + gridButton(), + gridButton(), + gridButton(), + ] + ) + template.tabTitle = "Grid" + template.tabImage = UIImage(named: "RoundIcon")! + + return template + } + + private func gridButton() -> CPGridButton { + return CPGridButton( + titleVariants: [ + "Maybe a bit much too long of a title", + "Medium Title", + "Title" + ], + image: UIImage(named: "RoundIcon")!, + handler: { [weak self] button in + guard let self = self else { return } + self.interfaceController?.pushTemplate( + self.gridTemplate(), + animated: true, + completion: nil + ) + } + ) + } + + private func informationTemplate(layout: CPInformationTemplateLayout) -> CPInformationTemplate { + let template = CPInformationTemplate( + title: "Information Title", + layout: layout, + items: [ + CPInformationItem(title: "Item\nTitle\nThird\nFourth", detail: "Item\nDetail\nThird line\nFourth line"), + CPInformationItem(title: "Item Title", detail: nil), + CPInformationItem(title: "Item Title", detail: "Item Detail"), + CPInformationItem(title: "Item Title", detail: nil), + CPInformationItem(title: "Item Title Item Title Item Title Item Title Item Title", detail: "Item Detail Item Detail Item Detail Item Detail Item Detail "), + CPInformationItem(title: "Item Title", detail: nil), + ], + actions: [ + textButton(style: .confirm), + textButton(style: .normal), +// textButton(style: .cancel), + ] + ) + template.tabTitle = "Information" + template.tabImage = UIImage(named: "RoundIcon")! + + return template + } + + private func textButton(style: CPTextButtonStyle) -> CPTextButton{ + return CPTextButton( + title: "Text Button", + textStyle: style, + handler: { [weak self] button in + guard let self = self else { return } + self.interfaceController?.pushTemplate( + self.informationTemplate(layout: .twoColumn), + animated: true, + completion: nil + ) + +// self.replaceTabs() + } + ) + } +} diff --git a/Meshtastic/Info.plist b/Meshtastic/Info.plist index 48ae0608..ae02c2b4 100644 --- a/Meshtastic/Info.plist +++ b/Meshtastic/Info.plist @@ -33,6 +33,10 @@ $(MARKETING_VERSION) CFBundleVersion $(CURRENT_PROJECT_VERSION) + INIntentsSupported + + Intent + ITSAppUsesNonExemptEncryption LSApplicationCategoryType @@ -66,7 +70,21 @@ UIApplicationSceneManifest UIApplicationSupportsMultipleScenes - + + UISceneConfigurations + + CPTemplateApplicationSceneSessionRoleApplication + + + UISceneClassName + CPTemplateApplicationScene + UISceneDelegateClassName + $(SWIFT_MODULE_NAME).CarPlaySceneDelegate + UISceneConfigurationName + CarPlay scene + + + UIApplicationSupportsIndirectInputEvents diff --git a/Meshtastic/Meshtastic.entitlements b/Meshtastic/Meshtastic.entitlements index 26f4ce01..241de35a 100644 --- a/Meshtastic/Meshtastic.entitlements +++ b/Meshtastic/Meshtastic.entitlements @@ -18,5 +18,7 @@ com.apple.security.personal-information.location + com.apple.developer.carplay-communication + diff --git a/Meshtastic/Views/Settings/Config/Module/RtttlConfig.swift b/Meshtastic/Views/Settings/Config/Module/RtttlConfig.swift index 9af01055..e1838f96 100644 --- a/Meshtastic/Views/Settings/Config/Module/RtttlConfig.swift +++ b/Meshtastic/Views/Settings/Config/Module/RtttlConfig.swift @@ -96,7 +96,7 @@ struct RtttlConfig: View { let connectedNode = getNodeInfo(id: bleManager.connectedPeripheral.num, context: context) if connectedNode != nil { - let adminMessageId = bleManager.saveRtttlConfig(ringtone: ringtone, fromUser: connectedNode!.user!, toUser: node!.user!, adminIndex: connectedNode?.myInfo?.adminIndex ?? 0) + let adminMessageId = bleManager.saveRtttlConfig(ringtone: ringtone.trimmingCharacters(in: .whitespacesAndNewlines), fromUser: connectedNode!.user!, toUser: node!.user!, adminIndex: connectedNode?.myInfo?.adminIndex ?? 0) if adminMessageId > 0 { // Should show a saved successfully alert once I know that to be true // for now just disable the button after a successful save From 12ee105106adfc0eba38bdaf8291a4efc2bb6b37 Mon Sep 17 00:00:00 2001 From: Ed Haber Date: Fri, 19 Jan 2024 14:13:51 -0500 Subject: [PATCH 05/23] Allow users to enter an existing key when adding a channel Allow the key field to be edited by a user and validate that the user supplied key is valid base64 encoded and the correct key length. --- Meshtastic/Views/Settings/Channels.swift | 33 +++++++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/Meshtastic/Views/Settings/Channels.swift b/Meshtastic/Views/Settings/Channels.swift index 39d69d8e..c736d35a 100644 --- a/Meshtastic/Views/Settings/Channels.swift +++ b/Meshtastic/Views/Settings/Channels.swift @@ -25,6 +25,7 @@ struct Channels: View { var node: NodeInfoEntity? @State var hasChanges = false + @State var hasValidKey = false @State private var isPresentingEditView = false @State private var isPresentingSaveConfirm: Bool = false @State private var channelIndex: Int32 = 0 @@ -167,9 +168,33 @@ struct Channels: View { HStack(alignment: .top) { Text("Key") Spacer() - Text(channelKey) - .foregroundColor(Color.gray) - .textSelection(.enabled) + TextField( + "Key", + text: $channelKey + ) + .disableAutocorrection(true) + .keyboardType(.alphabet) + .foregroundColor(Color.gray) + .textSelection(.enabled) + .background( + RoundedRectangle(cornerRadius: 25.0) + .stroke( + hasValidKey ? + Color.green : + Color.red + , lineWidth: 2.0) + ) + .onChange(of: channelKey, perform: { _ in + let tempKey = Data(base64Encoded: channelKey) ?? Data() + if tempKey.count == channelKeySize || channelKeySize == -1{ + hasValidKey = true + } + else { + hasValidKey = false + } + hasChanges = true + }) + .disabled(channelKeySize <= 0) // TextField( // "", // text: $channelKey, @@ -256,7 +281,7 @@ struct Channels: View { } label: { Label("save", systemImage: "square.and.arrow.down") } - .disabled(bleManager.connectedPeripheral == nil || !hasChanges) + .disabled(bleManager.connectedPeripheral == nil || !hasChanges || !hasValidKey) .buttonStyle(.bordered) .buttonBorderShape(.capsule) .controlSize(.large) From a9e90e5b856e440fb1e5c2287960a92cbd92b204 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Fri, 19 Jan 2024 17:32:00 -0800 Subject: [PATCH 06/23] Remove carplay files --- Meshtastic.xcodeproj/project.pbxproj | 12 -- .../RoundIcon.imageset/Contents.json | 22 --- .../RoundIcon.imageset/RoundIcon@2x.png | Bin 75714 -> 0 bytes .../RoundIcon.imageset/RoundIcon@3x.png | Bin 160182 -> 0 bytes Meshtastic/CarPlay/CarPlaySceneDelegate.swift | 182 ------------------ 5 files changed, 216 deletions(-) delete mode 100644 Meshtastic/Assets.xcassets/RoundIcon.imageset/Contents.json delete mode 100644 Meshtastic/Assets.xcassets/RoundIcon.imageset/RoundIcon@2x.png delete mode 100644 Meshtastic/Assets.xcassets/RoundIcon.imageset/RoundIcon@3x.png delete mode 100644 Meshtastic/CarPlay/CarPlaySceneDelegate.swift diff --git a/Meshtastic.xcodeproj/project.pbxproj b/Meshtastic.xcodeproj/project.pbxproj index 05973189..4a8369d0 100644 --- a/Meshtastic.xcodeproj/project.pbxproj +++ b/Meshtastic.xcodeproj/project.pbxproj @@ -107,7 +107,6 @@ DDAB580F2B0DAFBC00147258 /* LocationEntityExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAB580E2B0DAFBC00147258 /* LocationEntityExtension.swift */; }; DDAD49ED2AFB39DC00B4425D /* MeshMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAD49EC2AFB39DC00B4425D /* MeshMap.swift */; }; DDAF8C5326EB1DF10058C060 /* BLEManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDAF8C5226EB1DF10058C060 /* BLEManager.swift */; }; - DDB233CF2B5A140B00DA6FB1 /* CarPlaySceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB233CE2B5A140B00DA6FB1 /* CarPlaySceneDelegate.swift */; }; DDB6ABD628AE742000384BA1 /* BluetoothConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB6ABD528AE742000384BA1 /* BluetoothConfig.swift */; }; DDB6ABD928B0A4BA00384BA1 /* BluetoothModes.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB6ABD828B0A4BA00384BA1 /* BluetoothModes.swift */; }; DDB6ABDB28B0AC6000384BA1 /* DistanceText.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB6ABDA28B0AC6000384BA1 /* DistanceText.swift */; }; @@ -335,7 +334,6 @@ DDAB580E2B0DAFBC00147258 /* LocationEntityExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocationEntityExtension.swift; sourceTree = ""; }; DDAD49EC2AFB39DC00B4425D /* MeshMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeshMap.swift; sourceTree = ""; }; DDAF8C5226EB1DF10058C060 /* BLEManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BLEManager.swift; sourceTree = ""; }; - DDB233CE2B5A140B00DA6FB1 /* CarPlaySceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarPlaySceneDelegate.swift; sourceTree = ""; }; DDB6ABD528AE742000384BA1 /* BluetoothConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BluetoothConfig.swift; sourceTree = ""; }; DDB6ABD828B0A4BA00384BA1 /* BluetoothModes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BluetoothModes.swift; sourceTree = ""; }; DDB6ABDA28B0AC6000384BA1 /* DistanceText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DistanceText.swift; sourceTree = ""; }; @@ -700,14 +698,6 @@ path = Protobufs; sourceTree = ""; }; - DDB233CD2B5A13C600DA6FB1 /* CarPlay */ = { - isa = PBXGroup; - children = ( - DDB233CE2B5A140B00DA6FB1 /* CarPlaySceneDelegate.swift */, - ); - path = CarPlay; - sourceTree = ""; - }; DDB75A122A0593CD006ED576 /* Map */ = { isa = PBXGroup; children = ( @@ -746,7 +736,6 @@ DDC2E15626CE248E0042C5E4 /* Meshtastic */ = { isa = PBXGroup; children = ( - DDB233CD2B5A13C600DA6FB1 /* CarPlay */, DD7709392AA1ABA1007A8BF0 /* Tips */, DD90860A26F645B700DC5189 /* Meshtastic.entitlements */, DD8ED9C6289CE4A100B3B0AB /* Enums */, @@ -1182,7 +1171,6 @@ DD5E5208298EE33B00D21B61 /* rtttl.pb.swift in Sources */, DD6193792863875F00E59241 /* SerialConfig.swift in Sources */, DDDB263F2AABEE20003AFCB7 /* NodeList.swift in Sources */, - DDB233CF2B5A140B00DA6FB1 /* CarPlaySceneDelegate.swift in Sources */, DDA0B6B2294CDC55001356EC /* Channels.swift in Sources */, DDE9659C2B1C3B6A00531070 /* RouteRecorder.swift in Sources */, DDB8F4102A9EE5B400230ECE /* Messages.swift in Sources */, diff --git a/Meshtastic/Assets.xcassets/RoundIcon.imageset/Contents.json b/Meshtastic/Assets.xcassets/RoundIcon.imageset/Contents.json deleted file mode 100644 index 0e5bd761..00000000 --- a/Meshtastic/Assets.xcassets/RoundIcon.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "RoundIcon@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "RoundIcon@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Meshtastic/Assets.xcassets/RoundIcon.imageset/RoundIcon@2x.png b/Meshtastic/Assets.xcassets/RoundIcon.imageset/RoundIcon@2x.png deleted file mode 100644 index 7982bf51d107c5a569c22172a583119784d245fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75714 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 diff --git a/Meshtastic/Assets.xcassets/RoundIcon.imageset/RoundIcon@3x.png b/Meshtastic/Assets.xcassets/RoundIcon.imageset/RoundIcon@3x.png deleted file mode 100644 index 1930c19e10b95b4aaaad90b72be1a36c6e714b1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160182 zcmd42by!?MvIjaaxCRnj1Hs+hJ!k^K-CYN_!8Jf|g1fuByF+kyclSqj_ujj2-@X68 zGha{FsjgpjcXd^tKK=CxQIL~BM!-b?0078RlA_-M00{8k1PAlZ$?30cf6pKszDo!L z%Es^y-f!xRRHck%WdYRhG#mgH0v!PSEAsvWK;QzP|3L!)`Ve^kO`Ahd{!0e(U4{wp z{trNVPxcVZ|DZp;)BZtb0H}Xq6W{Z{m*jhT*ZR*~!OX?T(n=3xV^7RN&qdDy05CH$ zGjTJrax=3NGco=pnAiaT$PCE;(gOj`0R9jCSK*8u^yqsAZ!4+h001C<{F@*Ezf-UQ z04Q=ZB~_5BtPHn-jTOC~p^d%~y^EFYUlf4Xh5MbfG6LxlyI5ITJ8--3k^Dn~`~gfmp=G-iVl;o{^rBgdc&Jn3&hz(3tzXsQAC&?{|D8rXY|lHv@yS zvopOj3%!lK2?G-s7Z(E~GXpa--Ma*xgR3=2&xOv~f%KnB{!5Rjk%NJ~nJvi7#+vxA zUOjyqM-U$g$={0p`}$`)jau0tzarKCPvpOq{2TJ! zeB2`TMt@yZ$;QT#|35vKm*GDp{sSy)V`ygVDyj!E;{WU8bd0QY%UW^|C`Le zq5qni`@4~YjiuvX|M+2T2I6PtW%%FN|A`W@v9h%{a`=aV*!~6iciw->%iEj150Kv9 zYW|MFKdSh5-haxg{!g>`IsU6n|IYkRfZG2C_;=>N0Spbe9US$|jSN8lh`0X^gMS2` zu$~FSzp;54{=d?^41Xi(-y-XuVfzp6d))FPyc_+$<^X;KB1pwN06-8RB`T!k0&(0r z7)>A%pJ(QLjb=MSEEokP6@`)1XbxY9dGMnj_=i0$e_*aaMVC$^r*8Sycd9sC48ED0 zI(iWPi*ZLj&-LAl#7R?(RG?u16h+6#i?$-48#!OzWAX1r+h*(eKsY2cY!XIM-QbQ7 zKA#~)p#J~B&|!wm)|tB3br0^4NB6mT%(s}!o_wUZa8=+IUB`N7&VBRp8A2l0*@Sy$ zEJ(L$- zKeTz)z4RZyO}xCu$cszx@MLd2c+@1yU8%{EXYaW1s$Zx@iYK?)F|Y9z1(){cj9cwW z6yG>^@H|NOUYo8AEti*-;NZ^Jk4L{`dCJYdk)~I7X3ssmcv2C<1UX3PNxptZyO%S$ z&rQKTZu3REr=Pz&vAqsD-I|=1r-xckKRbM(wG12}j%KSsgdE zXS^8_TVDgeNB~}L&Hyiiv-MlU)2SC1hWz}l?CF-{5#$v8R|f}{OsSC+G0+9=DR3__ z2liY^Wqrd3=3HrVb6XfU48S z#nfoB zHWoF%M|`dx>}%7?`*P;CN@o(UeG4Bz+y>?XCXU8+Q0HnRNf0a3j#%gEkcWZ~{++~> z<2`L#v_khL?YNPBGPes-FuN;1XK74skzlHtOa$#RO&SU1;|(x95}z43k5oa~m9}ky zYgFBX@NH>MTNi`&Y#TjUJjU2uY7vr=%^z8t1OnHtsa8`AITQDuKrD;}7g3RZU7wY` zb=qp26#cpwiCdUg_V)_*83E7u-@F#AQh*+vuU^S30{ooVM8|w-yvZl>PH6;kX;$SX zG1J!UY1Y*l_K*$ZdlW~L${bqO+4{*wi6_>wZpjJwq zJ};rq_i!JBCL$p(j_oc@E5D3;jjh{Onfm$f!L#s7c<^f2D!7d8G5K|#O{z;vym)bn z5EFOb)=TJO172_ETbrWy0Bgh*)&fo|uNR$jfY+ac*AM!SmhQcqFD|oIKlhF>z@xB& z%W0tE)E&zz#Mo1M@fatmhT2F2rMNV1t)xFwuCY&8?Se1<_BF zk!Q8t1J(2-#sCvplO9LFM7%iPZWBEiHFX-&h0>W?9)2jwL=x=Je7(#0)oCZavs=x( z4<5@uBO|nmi4`sgp~if?1cu*^r@IGlPNcUku4b+W$K0BlQ%12yrV_4tXS0$|z&*mV^fV{# zB}2y$Ztf!ncRq)R-~+;r)-wRW_XIrYG0Q`{=0IMtsxK9UBOuKU@n}6%;_-EH##K-t z?9!K8nhU`HMp9dVtT3G?=5QGS-9^d@12dWOF(AYv9B7<)J3JChnl%?FDOht)AOJ9_ z)07A-=g9T9M?opLn_@J84VON)x0x6~MABql$MqQ&Ibs8L?_-yy5inj65s>Vt2_Zur zo#IfZMK)h3-lu2oH4;sYPhR=HAd1I{#79Q_;vZv)`Zs_SukYO}!*ugEfZ$Y-7`k ze^x1u(oxP3wa3x~aEeaX)U9hpwLJA{b}v|k7IX&a#e2+Z03PtqO=P`CN7C4y?X-G~ zO4Fn`R173EYaFe_ZLy|&UdTv8*V}zbco|Zk{Ei_#j34W)=j=q?rRXn7!>ti7?aa>t zi=zF~Abb&AD#6?Z%t*z!3?24H*ZvGQT;N!K2YM{E{Yx}gT|%?{aI=)V3Pb-UMNsUXDroQPCx}pgT5P@46iQE9%N!8s`Z&)WOGR=r=+EW^C)HmA8aCo=V_9i@;ENv zJyKsIdp94)eWx14w5ikBIihKR8$eZE_H@A~N$yE47Ry>Hqg{|Ne;akay1QIoP};@6 zFA-5VsQg~&6paE;n8O|glDk7p>vo+dE{tf>O8aP@wjejSrW>q6fS-EJX@U}33!yg( z?zlul;M34mP))bpwSy!BLNW)HaJ1^W?&DYs0H@OB#EbjyU!WW!H{8Q_^QB>-T<&@M zmp?nx5%ArSTvgW@vLeCY_vk%U!p-vpS_KO-9{QbjPYR?bAKYaKXwlUHE>d?)8;9d2 zJZHxld@HboI0+MQ2>?^D#|%E!Se=bwW4E1So&a+!g(c(o)9A4jMwVui6E9Xfs(!>; zwQ6T$6klJxk;`u+5s*c-SgH?7jR%m|U5k+3--sY!AZJ`0Ozv5(oLTL_ABLgr+a`Op zRmIE3P>S$4Z+DIbwW3olixHN`h=FuKSTVPQBrv94q!&FNMQW!MbW?IIS;GMH(_WV- z$b#VB1TL7u&aaYnm~+{&$0|4FbA`ZXr2Y!q7u{>fRTEXup^QtYRf=sQrZnDN+5@zM z{&|-wbs>|EjA!WVgU=itgaWUXow}Sf=aOwxcqhj5+6!>OE|w(+k*%^i3KU*MU+2O^$F$QYLtOtd;?58iS?UI{~)WZ53=$h=XL(WUPf8KpZ*F z2x$V?o6n9RL7DMyrV3iCC*#f-BQx3oxJ;hni*pxZRru9p^6;ylnJQd|eDI$p3>uDa zo`XdRp1!bZgiai;qxIvv4?&rreqw1H&xIfVq)ET&G<|d7!o{sW7@nJjHY|E%5>6$5 ze!`?o1o4V$_Xa^)2<#%g=2N3@%Gcy`eNFAujVNm>9yllShmUwgUZTP9F)uAwiqp9m zLZGu8yA^o7f5X>lxAXP@xth4SH1HXaxgQx;ZPKSquA1|;4nz+@j6l8`#mkpf^f&~N zJq!yzkQryfuCGE{*Iaa!N%H_+fAfIIN6s5fmuBb^!Nmjcfv&l%15194tU_w%^ny-- zr&ZE0P)JyuTO~V?wt_kXpYFRqtk?379p=KX(@z*SN;p`x>TuQ{;=pD2l}#4X14%Ba zY1sFWe9*oO6z~RI$dV1-`u%iuj4xYE=u0UqXrNBz=7Q@OYt5}agN43Zgk9eW7MP&^ z^jrI*RrmIlg{D%PZD2>zJiIo(B3b;qyEk4werM! z-g*qhz_3{V@NDQ7JdZkp(ILGFQc__6mE8^^=`c7zS!Q+LQi}qvc{Da%IooV+UIu%& zC|G6@>pBjt$|_GQEp2}t9FxWC)BAC%s5LbX5d+R60bVe^H}`-Jy#tdP*mc{vu`l(e zzS_%4EXGdbA}VYgu*W|56C8rbIhAS15tGYbfMpPp2P9b?VY*ZJVc=F>y2AxwSrY&p z0tuOdMubefUdlpq(YA86({PpOmP@Af5O7vM`8MvS7W(`o1p`wMs?Vzo2~hI58&(VF zF6o3qOuNPjB&^-5rfk1%3pGhtBS@Vi$crQI!#iBC3G*oEF(xzrk$$v8`x4`GL$020 zEenhvTae!NQn1H|Q4<7|1&6y2CeTNd1}#R6*aF~NfY{pRRDHvBl;3r*Mr>NRYZv&} zWALx1`(!#8zcU>MY#2zC_2JfqqM#F_2tnZMRrO1Le;Aj%-bqSYgfqo-lS}hq9{qtP zG-a8C#1I?crHI8#@DT7Q29DR@l4ve4Fr&QN8V5L^7DBNL;d~C`B}P>;+Q}8HHJ;H= z5`-u3vLq2)oH}I(LUbguHYE7?Fqct*b3Z^?PRIZeP4$_iiDThj=RbDf6e95K1ngG+ zl+VFnV<54x=9c!01@Ryo;D$M)GeFCFX`A1( z!=J~Qn_-h#?|KGdHRj-imKeK(!5I1(Z(#0Hx--#v8ZK^~du?RQQITxYWD|4 zz4Q8ckevTE#)y-$DJ@pOsmFB;cZ(H1rOn_HzJ%)9ILXn%bA~t6-Z}jA=T2h^2T2vzo!y9W zoz1!bu2uOQr|DI&RzLAfkC7OTVca+jw=RJU68XNh!2Ka6Xe)?=K|Y-zb)-(Bc`58b z{|v;|)=`C$v8H8Y_R4((%K;ca0*|oG-j)LnY2U(Ix=m1_79f=BToO>uX4NWtSS}(6 z7$u+z5NqkL5{oG;5u;iM5WWHwZkTLH9RRk38j|06FX2me*e|~i{XS)>@*a+{LA5)gVwiUs z6HCp8T|$D=u`A6;qbvAqf(-|^VB=lv^srRkU##VK2JwbfZ!=Ebzc%6;Z*EdKzX*&( zX)t*k(r?vw5@;H~z$QTVLBLaILTc(E;(jbG|qjEw13*(RHi%FFMd?~ZEx4I zM>Dz)&SyQBeSb1XX-vTr@IzPsn6`l%&gTzGu$Ni+L+Bapdv=Ioz+^!Mx=j=FpXAPl zo5bfX-b;cAZ467uk3NE)??1nvSYSaZH-ScFyg+^^Uw{5h!Q8fanrY*rg9a3h4^A78 zY!+D^x4Yy*twaX;RC;l-Cr?+rD3jWv+&2q2#$*qp<`+-Dlul0int)8OXyGYGKA)Obu~`B)M-Gox>pSd_6t@zt8Zd|1k>LvMM!Uer zLD59!PIY%UF-*1{*w_z?+T10*(`Tb>ws*7XX%bco*I}h6yqSezv!5@?4DbMlT)>OA z=Yfov41=EGb2Zk@O(xWIG+zT&qR+3I84}x{51s}*MuqM}pH=*y`5oSDxFTI@<`2`D zKeWvA97G7L`8zEsj~fw&6gyKj?2z_KRuUKVKg5bN!L_uYW!ut`k$4f?VUdn>*Z z>&vm{CE!n*;2Js*Us!fgID0b6v|7UxE914=Z>b94Oq+F=yTWi+1oXL$<@iqK5+4t1g5}hNvg(mYe9e$Pa?H}N;Z>bIzT<^iA=Ra z94+;8Yr+Ym1PC9VH`QH;mn7LRRT+Gszi!|Y3^>Q4QPdX5c@Gy`f)}PB6uF%Fu|f}E zYmR_WL<9cn1YCw-@R?_hcV?#>_W_!tAM`kmKHEkIeaV|=n&GbdW!vpdHfLhI*}3bR**b&q3`mn4R%b#_PcdN5Cn;_}cxhEYl=V?eZg2ijv=N=Zw0!ea< zw_-`(eX9`+*ni)$df9a1aOe}@zOeMLuQc#XM|9>8jGT+lo;k7RYZc3Hh40YJPQD6- zS#26@b^+{g4O5QXy6!Yj~a1za9N1w+U{KoXz$@Dm3x3+-BZ5=egkq`mNBFHQ$Q zh^i$gN(>uAg2_U5JBpVzX>=5-T~}B-4F5Hc-swg>UKJxY8X;bzD9w55?yZad0G_`@ zO}a;sW!7P9$kgx_{z9N}dH(AZCG}-}eLeP3qDS~Trp#p!<)>`2`oKD*-$6=9R9U4I z)xNUQ{S0A*s5S;>b$N9_ybbHalMz8GSHE_XE(f?(wmL7HPXW~jfocxXM6i%HALb9| zun0~hRto%mMpAjHSD)x6+Quu4k)h>gMI_;kN0S3v27Z_m>|XyD%AEVQub+x{af5 zud>`Pj&A7!7HyH70%gpF31wVcSZFT!ew5pMR}lAvf>cFn4$v=_xAf}|dnNd)Xk4oJ ztF#Y-S7K%hfX^n!5ElDcKP_H-NRH31LZe20!3ZJbj9nu<@<~c46Ch_0NNVb%CH9I9 z@5GhqT;6mL*#=O}eLR=-j&=B%vcniUsA1y~kWvkA_dR1wFi+0qkERLYV$KIw#f#LM zg-vGJ)?lg`Utm*q;L}h5W#k5pR{RV(9iID$u?ORLmFKmJS{C+0nhNyL?({KdZh1@S zx@FVM5-RNJIJH!Oudwe4@NYEr+Kpj`yLGo+xuzDL5XTy;#|ISOm8`s$CS=(hpa1%CZhA=k;nx3W-KflCkpS^_ccr~ zA@IAnzS;dFn`j1`kB%RWA8H7gFLiV$ZI1uN{?Vh6Lm)Nnm~pASLX{5iic@bFVLi=q zRw4JwyLJhKuPsxc%F{o8S7j4M4cX791p?Mk5IPyGGNpU$ z;)(dq2Y>ry4MvN}BNJYXw{Xu}w40tLrwAMoa(7S*Y6z~dKBng8o-0o7+H_iTt>gH` zosT!=5cWx=hyK3o;UGDTEK(BeV6)y(hA`Hb(3z(VQs*!JrZI8NRx(MIxzDVT*32^_ z!F_oeL#bsn&K$w?s(Lc=_-!#A-ZVSN$SUf@SJf$5yrP$8VM@>RR9U9n?OYTUZr+HGw@^%9l|ZXW9{WY zKIWu%)sl5>fzY`{-F4_=^J*{fd>Z*|{gj~NxQ^9$ZFy{v!SbSqp2(Xxb%_)291-@~ z?JNbYU<7j>VevHt>elt@JSPDbMp7jE?uw@o`7_j^IXxag8I#|U`s}-u@t=JRd>o#6 z&D%-PpakaWyn`7`>L-c!XHs)ed%R6e2)$y6m>`#WrP}54L1hjvqna+^fKF)yaUAX2<dqYH9&F9(b%pk@ zSZ|^@tJ41bDIb*ZWSiB5r%+m;cVju;IQ-Ox*wpK8a*33_Qdvs?KD?|!t=l8-Onjdbl));r20;Arn2s&~x#)TVug;6=)fdF z$*xqGRVS9tYq>b==*2Pt<%!k;bFc~v^%}g z17c=LqCH@X2KyDGa{R+E9kuCo&v{m)ife)(1MRu^}yw<9o*DXxL1$R4zOV|q=%I_U_P&!>k z|JpG0{Yho)lt%TZDdT>%_FsLC-m}9CPm54{efzRA)h#hC>q@#G2oA2V-N8Ln>C!Ba zkd$CHkZyNAtS@{#IC1P6h=zl&nbX162DG9g4&e7hlfU-W;`fcAx?;19ldEFPit-lX z%0~JzN|#u{dQw^J0sc;RY3Oa7pNP<7AnE9#EB0++tt6cyXI6u7`0H4b6LRQ)Svplk zWjN99kKTR}bZWcrtBHC3t$8Kw;R{^%(a6%j6z7m|W3TPddkBcSiqSp}RYg7>RxgLM z4%0{pyE&O$=6t#Fi!u0A>yK%E!GUvPtLbm)J<(}r*p;K#rOOm#7Zk}spqced?WMgJ zwUW{Jg4lmtecnB20cKJCqwU#j|0-XyMJlbM3o=3NIj&l`A>5DehUZEp^e zZmeF|noc!xcGH{uS$^3UFlT#!Qa#SG(B2shJbltqXAQE(8f?)#s@tAgX{tO~1 znMs1qAGzFDR{IKH6bv&Ky5Ps_i}8XpQ2`%y7w!WZ`$U<*(2Bm8Cu4gj|0&OTI2+}Z zTKHE-4$56xaImzH1-7}>n`L2$u*VSMY*#s5f?up1fVi9?O-LcFQ=FO=mgE=O{QP{S zw!%Y)jbp5h>vSO^=qTk;UnA9;OL4O7CP%aV5XsLCSAB=JnsR5BM=q|V5)M^uu%|4t zwKkH-qcfV$J)~0Ecd=SMx|+57mG=v-1A*iW+P8jV+4QVcIWIb01L6=CzMkTUw5H+` zXZjoAd{@oFR&thL#^7HlHsf1qvdk8*T-)~@ts>9SIH<9i<3zRIqKkXb{1UG^3Qt)0 z_u=cFgXOWFJbG%uGu_>{=J4_#;NKq9MR4lUc_F)TI^+pAi5LM{*VV75m)$45F_WvN z+>M|n{1vDsoqW<(_<^=T)*}?+M_lK_CpoXV2Uq)q1x(YyXn<#=*H#$UXE;dTT!Q&@ zO4Qt&-D@+UsU+%DZ?SP{Z^Vq5MgZiqANs(2b~OmV;PCP+RvE+g$_@_R9KknWAVbh6 z?S@3Cr3Eb22M`^&gd!`BeFrwVO+U7wf1sj>V=Ht^E@0uM{7sp8G-1-Tg>nl znS@f@R%|ng9x~C&I9$o1GZe_rUQyi z8(UPXM0*1CSH&*&ncIy#Zl+Huu|k5XeMIl}o-eUcmc}t4+zbSc+Bw~sy{ks~9=9+A za!!F7q=c)utp~7m91sUfpfcW0#O-7I{>aoKFWcT~+q~b)SLvtJs*9MlMZ7)9@f$MByKRn!W;ji z((O~H(mb@b&BcfC*>c7o6AwRs z^4{|MI-DR{HfX5JNDkq_ne_-DI5V zeT|ulaek*?es-qzAoq$0s-v@pNM#zvI5}wc70?Px>lu9kiSlscC|-N<S0 zjalM&ofq=>XQ69d@ai&no6j8@BO}IMz`3K4LwM^fWG&!YaFw|II(l`IZ112s0+}n zdJKBpN* zRNnARfa48DAWpo3j@O(c)U`mOPZ@71qE^NE$JU7_BH>@{>q*Qe1G`BFb2ku7(AXi~6Z&D7 zBga&VI%UB97Sn?k^xw||Kh$5ib6&H^7z$Gd;dot#RJ|W4D|aJ4n{4;e^s>(3Gjk{A zw`IEJ=}MRElxvm~=UcC}XSaAE1ofn~+)U^^7glocHc1Ngat&Up0oVZ-*(m59Lk>!8 zB`KZ8YXgR%DF~(-7^YEf`~(?w_^uss3~_9H+c!-haiNROEiiHMB{>O^RKU^4a}Lij z0gFjr3;|2$m-UmW=>FA~6Z$|6ZMH^tNiXL48;=h4YV>-3u|w#lbiwmlbR9yz5sY$ujR%=AK<&Ed6m+MxL} z41=Z@-gTq2e5*)*V`EAQgX}B~;V$lIlHkP{A<+^>pr$`W6d(&y_UlwLG(!`n<9Qjc zyWLOp9B8*A@o{uHMDqPPUmsC-$}Y)?%o&QLawJNGP?bwTbbuJd<+@RaP@}52P6#tk zpYckP2!{%a?hkrDN2H_VqEg;S(a=KJHv@Qw9*h1t-uZ!rlcp_| zJzmm%`p#~i(k9R6S6>StY8h?Qp319+Gj9s=htzc2_rpi>rkfZ_vNUfQPr42|-gn#Z z?Pax&Xe~``nq@lqG|Rd2EyyyhVgef|MB39M40aHwJb*zY-Ms7^*hw42Hc#1h4R470 z*`5+gJbBRx0bVACN zVJYD#$}j9AoP0!;n0)0f?U%*DV$?RYBZt0{JK3bwGVbsO1cEO`NMlIi=VB1NpQuE% z;YAxjy@*?!!`z}A?J6VV-)Akpyi%M#d&m5^Gf{e`3EJjo$)MQhd$x43Ccb!~Y71lm zw>vAD9r?C1*d(vs>s#FJ+uCrS(KD!o%~87f&7{=(q}QwIyT;IOge^66o775}tnXpH zA0+5s;j=J#_9a;HTm7s%=?KB=p6dxGSj96rU7cnHTg?LNOr<~%kc@^*a4>fzB|Dfn zh&*(tqZ7>kXcG&iYbPd44L<>A>tvjG5tv%AAJerFHQm^dn2`oQ&6kcL97IwX+G6?p zrW=cA=(iOf7g68jQ4%&fAGv;sM`DeXLJ$cT zgm8M8=`UCL)O^u41npXCKAp2OWO(jCw6)`d`r>NItJ&K2VZg;SxAu^ukyHHlJT8&P z4@Hou4@s_~oN#REWGv(MbH31(xVo2}>55f%{cwk~&t+J!X3l}8E=-NYqx2XIq4plE z#i@4}>WaG$XI~U>H_7aa&LO4!z1kL)LCHDv0q0sNKTT13c7W8m9Hmf zPDTr0?UaZ<=gZikj}^jpv(^i9FndMu;mnG19C-?il6$jxwnxjqec--S_U{N&wNBN{ zt9ZHbkm;s4xs?MV3XD zgP~YSnB!0~?olKO{;R{JmHN0u!9uA?lH%=NV)Zw4afb@DL%+S@30m+MFRAij8k+F! z^6(P!!*?8Zd3hygD@7MwGw(OMi0C%0>ZX5;!L+&V>D?LfY7(1mpT=Dy1 zqwb-*j1s8h)b3T7w?19gm+!_!h3UILGV}+j0Zan$h1}b6vbiZ5hjyY1v4JLa`s$Y7 z12?FoEPG>dBt&U{ugXM7jG2dn_{r-iHLlU!7U%abunfjNMHL5i2W5Tt@ zKdtx22Hu_F)5F}hs@QeyY>?f6^Lp{JgzVJ0=<&T66P2`4XTp=?E7miNysP?sR-4M- zZ}eE&Ynhd8LU)dXd+7Uuq<0q&agmeLuRa3me5pQiCi!~rXAAk+5fs>r`%CFfd_I;y zD)JDkpBNFlKho>?>eDwCNoYHYIJB-soVe9xSoAv^Ckb3X=9KOvK~+14nR6)^N|fo8 zhR*eZ$vkbb%x;Ggi^)D&VT37V_Wq82vlS~;VaxM};bZ3T(o#}Gj)0!r3}`Z4V(=f7H1brTdIai@-Hb1&gXCDu5Bq;qm+)=0BAv&4_w`cxfb=eWg4c?zB{=vpi9YGg=q?v5X8g`U5!gcda! ze&<_?#C#6*a$;v)@ynwdrkypp3&F7uvAE||?nN{HG)Ej9F0PzrT^>-k8 zOLI)!=pXL=j_XmaZPLpwse>$Pj(E0=PS0JP8@1cIX=C!;n~!t{#Q>hkv*|iJRTT4N zQ+Cj}aISG+mS*B=f)o^}pw@A*=_XwZo603bZC?Vjxupd})y60B(bAYjvoMW;4Bl3` zjz17adREOyoMTO?d6Q4}94Ool2=el$43}S>mjH&;-NSklWPn2EsJ#(%t;VMTw_upj zpkt}#vxHVCDOlm$8)e!HQd>!SKJ^ZM*RbW#T;n5>5IcMDRs7g}5#c9M!i7*#cm#dN zpFVuNC>=ww*3YB5B~TihKl-Vv4@t7nR^X)`O3Jx%LSv|&#j^Y6aULnJU4AJk{TRxj z>|!RNVLVC@lyjw<9vp!!Jik-B#d*G#u#=t%;rChasHGSf#hkH9F3tWkTMIRP&O!8p zOw1M4z?Q@7{Y)@*fO-h#kW6DQCUYOviToaV*!Qu*4kf2e<_+Tj9MVoqYG>l(O3j*n z`0drr8iyoP{^kkKE0;;WmwW+7iMQh=u^H+WWyZ6J($U5;KI4D&zLUGftJLwr#hP;na)Z7{@C*neqEOhS?35=KFC zP4({xDrjYPUd|B92wj`1N#k2QX=P+siiY2Y3{VZMF3PGZB5`%SN7;w|qptnCmKxFH zPFKctOr5e+y>hQjh%gGJd>y}{3soex7{50ZAASzh!b#8ZP^6*eo3mhvUmR;jD!Tt@ z?m3gp0&|3zn}!ypT=h#KGH+QV*b;PZ#BXSz=}M-Ds&mz+*~@A)-zzwic}p0SSc869 z^k++o{ZreQoo3Yx3sl!a@<}tgPhXRcF)uH$i=`_fp$^<28!Okr$PLE9N=uJi1!-iFoOpoyM#^xQgrH*!jq!Vos+j51i?4fV~LAEDJA#T1RG&rZb$~0wip_A*a^Ke z>i$jLriRXC@oI8l^^4har6___Q-kwK?AngT?(%P1!aG?T7@?my?1vwTg;L$5 zkYHp_4qzg-09XW7jrj*v?#+dR zqbTaqG((7$jc$S_cgGpCOK}s%T9)*LKDE~0W+L!?nJX}FJVHK<##cd4|LN0>Dkh^b z>=xtyql~FfjLv31tYdU|hm@;R$AoLtCj^c2P^q<>j0&*xj{mZ02~Zn_=AHTq>E=VoQl{+bYR{fv>O5qQM*o5|)(a~iC|yVNzzV|7^Pg$`kcejs_kJ2B8;XrK~Z z2*~Dc8;6GXnSn<9R6Wv7tmj-m3^zM8xD>6P!K=k)R2yz6k?p@)7>=r9Bn4#4&3ydH zN1u^EC@rpQgPMI1+O%vzDu|?mY|2e6U_^c~+63jX6OU?d{5pw4juY12OUf&hn1yJL zg2u&S{|lV*$R}a1Sp26&gEF6-O;;6@F|>W&nR~1>6@o(aXGF3IC&n7C<##Mf^&j=9 z)xReE=1YZm5wbpi)WsO=QSL|8t}bkMzflV&oN~;>UAe^0#|Q9|5JitnEl=oS(EcGh z!flO?F7rR3e9Y)`@*G4mh>0O;tyBypITr0q zb&80-*PtDxL@&fjJ8E(CV_+h+uw*m}`Ig?e#}cqEY93b23gbJ2vTe01?~wA_`bxdG zo%bZ|^;N*JKiy+L#4`4r&C;9h@2YCw_>*_Hhwy%ISk`sybQu_YY^X;<;Ia8#!B;;a>xrR0auU5m;Jk&R}TxRW_fQHtnu6X~OJ8U55^MYT_9 zsWRuy3mP}Yq@bhfpe7$(B`v`lSE|F(W8O!mK06CB@nvUpW6?X`#MOSrp_In2R(~Cy zD2nhHQ^M_}zD~9h;&>U-e%gNG9!Ri2{s}FPmqovc%NK@6X^PoKYJu2Dhh$~PyLTkU zVUW6C+^^#-|9U{w$oZ_NO&O$AQs6Z2Mf`V=fI?jIS$YxtoBC%Mgr{z{%nMuuqo{q; zGZrW;()^tTMQl~G%H^@$%S`BCixCwE<<_h3Fa-;O7Xq=tj*FgeAd8aXNcH4pUOMaL}#<$ zmfcLAj3m4IF7v*aR@U$81U=Vy7%_E@a}7~4;&4pMNjk-4YC$pVRrw47jcvTjFWGRA2%Jm#V} z*@MjF`5sAh_tXJS%;aX>ZWnu69Gt@9c)}s*Uk`~oh}I_b)L-x6K~*Xahw@4AGpwbi zW?)(|KxRvMCa<33r6h@+k1^{e5$klHmRu(_tVqn_$SU_n_NyTRVm|1kKr?}|7#nX5 z+Z>qTHXtFtFseHdL+fO*Gv)$p`y;aS&1POtN?judJ#c`vX-78bL=X=?papIb1%Eq7 z42|2!X2ZNHKA;ifyN+Y8txb%~u!`jfX8PlE$Dnid!c=bmqoOtb5y1MGqw_wqreAz5 zE2PFxS(JF5)y_hH;3a#tq2X5lBAg|w(FEdrgwx>4r)m&QfW4bQm?4nIA8ub~;eD$_ z!q-6LX`i&?P2hBNSK{tYm8QKa<);o&c|*B3t5)EK&u*{3h353lT=mG^`nW-XyWsu3G7!1(XnO~ znJ_t5da$)gf45(jMbN5JMy`%;w)#oN&}CFyK^eW{x!M9ytZ#b-f~tZRLY(amE1Up7 z$3i;txVBMpY0Qmwq=e(fnj6o?+U5)Y!SnnqG{+Hz3E0nb!Ps_6K_p-ljP-l@2c8k% zmbw^@IJ{N_(B3m#y}*Dw3%ij} z0C}`hdZFRwx98#`(rv17O%*0!xA&z|B`7nYXQ4E6!c3`&&>dl2@b$4tLPD${GBarI zcBZKQB0oOyH<*1gp^5GLx8JR@Y8ceTt{k4VJALIJtXMwB(8Pdy`oc>}Ju1HvNQQ{s!FR+|ACmX@_&G>^0KN6(qzC@iK;NGWW{w?Lf z`__9o$(f-K{I*Gr`e_9s{1n3HZ2GI(BTlQ(c%u+$tKivI*B|q*{aHkE#PG4czqNwI zQ9BT;*iV1y%8&0uXebD&yiTK0-92}f8u$KCcAkUdpUIqvPWvYP75Xbb1!66`o6zj$ zpjaJ47VTu%I(rwW;`~7yaAQ0$Q za(OyJ^EK=sTD@$|LBO8bOxM)_%8w+@(XMgf-hac|CX3@m>HCGhcRr+*OiS4P=Uc#I zaq<9MmEowUU=o1UwOav*K{#ll7lOsZ>UdPHjt@o%zeuRs7y4on9xBfD{{T)vvA>BX zV>Z%B@FhJTY zlW_rsQ;yRPzlfSafc`n9faeA{1K>;mvB~_j8_y2AQEn6ch+iAagEYNm6%X4m0DP|v z(1}JL@=l+Nywm6CXt6&znOy6pt2gMN_qbpGcQi8g-1#$FU88;TPV+I>oDb_Hmd`Hj~s+o(Nv+_1MEb`Wd*3aYK_>KzF$ZF~0T6O>TV0h!U7dNvJsB-Aa(Fo{1Ye*js~~CFpk~qNVwE zHYjOJof#}rA!-0B2D~UN)wSnR3birUDJHbBo&=RqhhnjL%@)A$! zsE2jl(ubarhzUcI^CE+4?~cL4G|n(Z63xT~PY{&cjS zvu-Ye@evfNG52qxv^xenXpIHNfR!B= zk(gDKDWtQ1fkagS9Ma*5ZacStE+ER(?sa#Nuv}hxk7v`mqlOY@KJXvN4oYIEY#QARTe${Mfw~^OLZ#8Q_dt47xly*)cC7xj7KSqiB$8Q zv{`MXE|8O#RysxIEX^4O|C=t^@Ho1oQUUaAfYh^>mN!%p_FH+)sw+w2V<=^bM2=94 zjr?U_=FHkF;e0z~HC-kTKvoPxP{BcPjd5HOeimAzkaT|H6itQ<6H%Vyxnuu_Bu27Mu&D(PM0kpMM%k z8bNLGaW<rLzCxq8CJpk1Ir};eXZkGab*o2ScRFTS z4FV>jJhtO=BZaT=XONMv$qL|RJ&X8`FAy7B`ALY3$!2T(>=5p4*OlBHCkia{SS4Xv zUg^DGDY6|9<2ua6(=#!n2&-%VzG0UJ%w&gV1Kki;^Bj{HZShFve}C3J9R>k|T-z`J z5C{98GylCS|L@kxcx!($UEWx(S8sxL@6!u^M+3XZO!E#iq^mTkU7G0}fc3PKrdyrg zy{$ID4!B9}XNGCKv4bJ`kV+>@XK|(tG(t9O!{@uoeae@+as((lT7U^=#t3w)%YE^y zGoGNpMNye7a*)W|Rpf=7+dwH-uL`0=d)iOl#Tm+4iFV^A-*|#OJclm>o?hB9Q=j6~ zAMGk9fTqUy6qzb1ew^FWvgOFouW!%`6oJrf7a;ifg^$J(^<(K8zphY4KH2~Z8%^IHstCw$C52*J0 zB|4bGSH})I<;F3ahF~X~3pM&feRR-|C!84wG%-5n;QP+DHF0OaW)4MdV_h~DD|Huo!uhaOh(u4&6ytw z4Bfks91!}ai1po0u1-Nvi_W&w@v-5L!RUs=f%VXw@R$*aOgeB%V1V8~cMy5(>wST% zBJiUNu39c4KDn4I@>mu2Ci!QNjrddbF1xS^=ITIEX7BM!R(-~QtD8ztM`-HR|HRO| zTidHsTMi)EOGsVNrK4^L3qs8u2+*}9U$LXy1Z12~{Te+}0~e6C{>57X86h=!M@svoaf5X*;hOKsiQU;9ediy zS&Qn>8z1y7aVvcq>Ic~J3!#nw9((f2x}kHkp)firPqDU;OTAjd@T|efRN3I0q};YK z*wx?|!7C$V>Y};)B2|eFk9L?$`Wh%>0i8|MBQ9 zjp#oBlK((!dKXZ+Lj$@@tJ|gH&Bokyz-f9~TxP_9b$e_(VW&|F8kwaaWOMbb08?qK zwrKAXs#zB;l5%Bf#_WJ9n`;`j{l*0R$Ow8lOK6>@a769!dlwFah69Xvq$lZg>ZFp% zs|z7#nEq<6^ZDpkp0cdpr&%lJRaGRB5#|35Gu}B$dQ4T`c<(K*>r(I zt7+7|6KJ;rL>|XfMN6jYJ~rHSPmj9wH{2KWsxJqTbrE~(A?XM8h$fZ{kw`l`z z2&So~HPgM?OkMC2%mS>+WS!g=jkXL9FvO@GusV!Y6CR zPHVkf>{Q5-*0^Ww2wL-q8qwwtVA9Ua6B9@&hSG>>P* z_%c=P!DC!8v9M{e+NFhrY3pWNu)XzXxdtveDR*rlz-aui5F32AjnPrM{4 zs0o@ra{k`1*Xqct1ru}#UK!ExJHy?U$Vd8Bzb5cX4gj_{AM(0*=kbh(yY`v=UR&~B zAAsO}dgkwFE8Ob2=68EXmuWz|G@vO>Co>6wu^OH;Wzqn14rmfix(rIMWm@Sh= zmzjK^DexT-NQZ1abknhzHhH>hmlDYE!|&2#mUNb%=qwc3vSTwD?KxmT>n{@bGgSvB z7j{%+pQr%?Wi`GY&D)v-Aud9Hg z1`i4Ok1vTgW!a3SqLd3rb(pAGTbtNizt9|;<%AeLe6_*XWc?_Oiu5PD(9EQ5D1#AW z?VmE0XHQm*$y;_VA3n=(qq<-wAdh#r1mLLr!A|@N@%R9 zq&_LeUfX17Auy;TTJv40qE))$6pN8X2~PKefyd7Fs$De4XMJgIY}!O$7xl!ABw*y9 zo*->V1Y!cWLz>B65 z2fWBeK3WkrR@r555(U|m)ny~$Clznn9fTaHLbX2dCJLmLW4wv6EVWgMEJ%2*!zCfj zAfvzbeC@NyxDsK(v<1KnpN> zXk(}RBDpCyMjq3uXK*UMXPk*qS{guKL~kX)4UKIyJ>aLTtPaY*mqCP8^p?f?=N~=JvO=( z;!}f7*+dL~;I*B{F9_Dhbc*N!%u;Y|SGj6Ev76u96ButXj^ULcibd(OpD zy9gOO6hjBH)oG&#<7kiKykHK0oN;??z-tO>63Fa5b~HPUPwHAHK`g#E|8q8BmH1QA z*G@PKEPS=@$mGJcT2#&+77DEZdn`-N6S)ww1S1Pk7Ds9T zwDu)t#RL5C6t8iiJh~+6gSM;_dHnSV#8_lvvVB3I(?JZ6gSHTPK>j(T<_E~lJxQ_Tbv+~O{H1784 zc%8_K-O@1w*9Zwd)!BgFvGs9i%X6Cn#TdmH);Rc4?l<<)5NE8D1ljUz1FQ*o z%9Tf;0V=7)utJTTDvT+6)2X0LEsOUO3HKv;Mo zsL%Q(Up$FV+7Uzwd|X{UX@BIM2-pU`^JdVdp?pxAd}Y@ddDa@BSB|or#VQj$Wk1H? zgM>Xk6lZK~d5<;AFBM0bB(yRsmwr;D$XTu@T2xG(T8b~qX&}a+g`xQopDgjHyNv6N z90*cz%-AVyuFgaJnTXZ)!*2bmy*ucY7yxYNA9f#%uKaJ`PA|TAvCD1NS4LB2`aIml z+AwSWT=4D2cW4S%!I~`laC&Gzw(-~|tBu;wKmdRDHp>XMCR$Zy*Xf{kE^eNLFRayE zk+Cz_%4nVP*&OXu$*TiHI>}zJvOm;Tpqv@1rqL1b734L*<~c5s_K57&oBjk{C*=2` ztN5cyxSZWOOz28xOVG3{x8P~r)LvyeMFv^7_-3B1S*C7vUs2ZiDbuw4(Ltg>T8ql} z-I((58b3KL#}5n`({i7hrKgr94~RY1<54#BhJl2<{s&-VqXrk_jDX>fGl>Ct|59J| z@D~Nxrzl$6EYEZvYSi+;?oKUb}kDU|kuoZ*Vk2-hBeF<1k-z8kG@ zN6MfeQl2SG+B($1F<<`ai)0uhAAgj}K@7Qq2}^QTCZ}NRH}$7P9lb?td-PSDx|1pI z8cp5dXQv_9Uvk`*B0>`Le|-I^w_cfVWT+wY!#`eA-&7^P)ZftPW6=?4G~ zdiyb#f1WN+_IP>J_!4dEb!MjbIJmz9x>)lczroT8Kkdl7{JGT=I&G9@V}tkjXKxD= z4B3+pP};8OAhxcoHMdq~!?dH-wF29aO%zzgnY3rW_|Jt?bQCDsU7We2Pn#$RB+@d| z)NRnD(vsm+ru@*pm$ke_iBf03Isi3#@pa63jDwT|NtTXMCFL9r*vF>2YnF~OsqE08 z-RM;aD!wUK_v%xx#6-IKg=1bzk^17daSN5Sb)w$hEfn9-?F=rndi04tsMi!S+JZMO z7!_;i)Xg|HCVi1Jv65VRi$h&?hQKZ}N?74-HD+HimD|mD)?TfZ)SC4ye+1-8Bde*l zl~w(auivUJnW3JM(AMJGVqu+|;poiZh9emuR7SCSZE^u_^3l=PLxcrZm!$h%aiTz@mPDGiP4a9;L{IP^v7jU3g68(HDayi}6!W+Ja?#BvOhwp5yU%h1dL) zYt3-HSHe4my==BT1cV0Gr>FK z^^zI?`X89%bIa%WExJEH;pne;`8Gk&i$od^EyWI(R#nZ7HfFK3G_@3^Q`pLEfY7T^ z6INIPpp{HVaD5#0vYxeW7*%IGjf`LRTA6INAzCV5HTW=s9_cvIr$TiU$OSPZY!oLG zUD1>gN-fk-o&IHCepsEH3Fv~J38-ZPf-xxF+NZzAOs@+8BucLZ0zh@wrdtMdSjGBs zk3xLX|6ab9X()5^h@eXsv}gCO>kI6A$B@qj^PX-#ETs|RG6h66`N;M zUo0hyPs*?vveXAjdCMD1j1QFTVnpJ`U*$4TDPdausuV;e_(6f~LVqf@A(cl(j*ZyV zyo~MJl#!FHj4Uu3ZL$Z9@S_r(+-FV4Hg1Qk8FSw;3#00e z8{3hs!Zmc~zIA5^6lE-7*&wst#-~0TCAXWhp}T=fYu=L5VeDMhA1JXWFg=mSCXA0v zqS6Iyui?|DYTkC@%vqsRYJr_1d?-p@ngZnUBVB+*X|CRqo`8%OkG;@qePTUwni6oe z*|su6CYF#SwE;GKf^I#syn&*4q^>f@zLeDiT{2Yt5)cgOUFL4qgS0^2>onzGWK_e) z;}Mw(q7p29PzQQ<&I;ghV%mehZp4MqR0Tsj2K_NshXA8YAJ_1t*6J#s)k{@T!pDpo zJ8uKEKn==O2~yEXQQCz56)j3w0!gfzb|lZ_$sk%=?=O0@{8A>%20W=-nT>4=)TN)P zi~PM$wh8hS_#H-p);OpqXPB)h^+SoQHPa`pdHHv<@+?Odvv-t zSd+QNvdlh^!H-D*5n0?tP>}Ob)7WgA0fkLNvSHgb`+G-BSBsJonKUdkq`?+n*5P5y zDHnQq*AQ|56MH!n@k`6vHZN{OIlBp&szs{(W0mx-7<5xcUf(mLJf25RM!9yRMtrvwdjmNeW^4$vVHsOcm$!I$^2!CKBZfJjO4|Eyvi| zpoxC#+Ln3*SXiRB_bs7l?>bUV>CrNJ^jU74%5kwGp_L!<)HRW&m7Pc1TqH@vB6hXo zfRseyDNoxR&s{O~N9Nbveyps!#bh-;VJ+x{2L(>K17v|1FNNuRT6q2OOZv))mvR8G zo!5h2-E2Hw?9Z38>#Nb?O~8RWe!BN)G;h%aZoqbdkPCZR3WJe=(cwBr-zkKf=U1#SuN&F#k-D@Z)X$msFz8O!eg3GX80+iwuT{h*;rJa*_ctq_~~pv;IE)t8KkhTV{E`Z#tX2m zN$#$SKTXUkQ{VWLB>MD=bk$qcV+p@)JK$^_;tO0vgw_7M^6&-MlZy1?J2*_vV+FDx{0XQ^p{w066g9j$=0 z#FepA*xLD)7a3n2AxTiOR6wwE*+J8*0TT7N`jnT!kyCTv8>VzZ5H$LbiT->GOX_p* zKtH#6IIYoaI#XuhG|mDMwd*a?fLqyR%2{^6Hl4s^vWWgH%L!mB)KH}Oy}JW#P%g-~*|2nG@X?YJd#64GkYP`2Y# z6_$QwWVOk$PfdFneW(hU>ZOt@fJ4FxzwSi{+ z-2$}kV;TL>Yx$0Hl;tRp%yCq?9&F;$bVw$ddRX3US|3?eou-yDEXB4&3(4EiR1p38 z-;M?Qx`U|7W0trnl`mD0kZx?{vcUS)#OR#=&}5?-`1=8Ke$wdze%_>EEYQJQf>y^f zmV+o?e7oqDcaOXEfBdLB{ipz(@In`wvS(*-6c;$fKCL8< z37!?#Pd4iiAB5(nJ93QC;Yo!^S9A=Tbc@Qq32X=oA*$25$fP6g^^F}2P5|S!wt7Cx zQ0l5r_~WoLrBJ`r<#7mTO17%dJSwHn8ip;g(nr+^dhwjR?reP2msp^{SVoWErb`#x z5uvigvUd&Wv0SnsP#u)KctOWY{nOS+W3x4)2+uFzu>n%n=+MY zGCK=ZpjKKRr`9B$6q6>>ECW%`W18hLKlpw6^`u+e|F1~DL>GnA4yf=;vDtUL_|OWfo@{nLZ|2(V=(%(fOR)6>Qi?xR>9EP`?06bHMV<=yN=JqV`au>iAzcvbjAn zr~?DO=#EzOOLt}y>*ZNZk+!0Fx^Xfs-3%z;2! zzvXyp7xg(-6d*>rd`kPFJQk>jajKEq1e?5;E5Ls$Bws6YU%K5R15cU^iFm6#JccOk zM!Gb0Wh0?OH0N6WvJ9TyeD7NV2#*HX)SW>V#ZuI-NL^cKWxWm9&7=i*8d+!}8nT&bN!-bZu-OUi96W9nNRZPyC_w z8+_j40Q0cd_#KY)Z5qU78qp37+EHE{^T1cbV=q8vvthWglf``%xdbFdu?U;04hK&f zIgHZO>%fv_BUG5qYn!3ldu)f=v$OR;ZKqOq8oPA-$lzqUee$XW<My99yfpL>2n!ceJpRE*d?t4?y@N=Zv$3iFQ4Te3lrLppX_S{ zgJ_vwHV^CMhjf-at#?XgQlEk)lH)5Cd+Ll&w5v@&fYrK2f^zru>6u$Og8FS~)SEP~ zQtbCM_cq(aPac)Qld$3#S#g2Mes>v_x5>Z5>g>JAvU}@v(%smbcNb1~x;YnxUz$On zZ%fqqx4Ur+>!R=0_1Q5OeR=5n8nf9qxvKvzEA;Qusd%S94}SP^w^hf3Ahfvr2^+SA z0vlTgr+YLEX*L}4(%>oJq47Xd#?~U;|Fm%%6B!%70F^Tb^1`Q=PURyJKxT~sSuVOl zQ*ZP)dA0R-?O0Ylus@QM;GMkK2DC`3W7&p$=L%#Yp64>B? z1;j-ZN=g*nsU&&1Nym=*YPwqXYo#ofwE{cSY+f65=SMLQwlWyejht1a zkT2_tU0LEwNNCq5h)p!{Pk9KstX$Kn9jmHNWy)Ii^@U^|p!j4Ys=n-#j&YP|9D;3@ zeLy?yS)ILJSd6#j`Urc{?3Gn-&UREop>cBXv7l_h-+0~0k@|;|+{S-PJcjip9o5k< zNjtG;y4jId$Dw#LkjU&ttP&&Rq%Hl?*D8%%29D4ugD=aVGW6YDnyPGT+C-<5hs-%z zc(6G`WEaP;QhWy+?-HMP5#zVPyKB5Wa{u^#H~Zs9h`t180*-jU>CL`ZuX*^tr}M@3 z?#W_&WqLZg!@FMJVL1Ts=XTFE2X3_9n>ffyrh zCXmGyBb2uV*wf=>0?5U19OQWqD-qo_;%Y@-bi)c7SoJ~lxT3HIFSJ@@C6OnYcLYQl zxf~b1tIf#gvD6G->SEiNt!zRRP)iwc!hE(ck`kP7#QLb?|L5*Zwk%DSvwEV-zA`J@ z%Bsrht`_JbMm&M^61)%hWtcEx#!zp-2nGz0)`GP_2y~awtv(}yy|=la2x)w?Dw99r zoZsD=&&kdk8|09smTYu4*!CQ_eWhmBLP1q$?lQ{ z=Oiq1Nm4ZPCefsi**OVe-}HeuqU}qnd4g{eDQ!AV5{YBcv~;O&a!=wzgcOv8jfRVA z3cj)ytFfJB9Md&*<+`lOTG}-F7c8&CQ#R%eUweT_V&tw`jts897HQg}6h6*`D5;0a zGq&{cLcHydV|1M~h|#RSUq~G^r2#`uyS-zG?!3?5gT@r;IlwypF6g~!Yx>Pb zGNHov6$~-+o0XbA@i1I;dD;gN|kKg zk8#(jwvmmE?9K%oNF`sDQ%oHSu?HXz0%K!%%1^WhV^U4+@zs8|E2x92Z}MeWtmBu1 zo4>K;fqT@YJp(PLi;ZsO#Bvnb@P*H{iD>b_8Sy%hEfZQaj&mDv+T+mHUwh;&#*J@b zJBEA*L%Nol4%&js6TgE=Z5yL0;M6xw<9HtT1yX0c|R80=JSD zhB7=zTYrtK0!HyQ;XHNn44)_9r(LE+LlPM^`?(5iP1{tr)XhSX?S!?^>$Ea;zsC%L zj;nk5(J7n74f~vXAIBkz|CMLY2(iZBm= z034rx+h_frgcDmCDf(orkY7IcscK`U1JaC5{h=w>=PK~IX+&=3arudg4m1=F1jWla zugL4yL~yLnfkOH0F>ktNw^`7(u^0!F5q>ajAqCHt`nlAX32picD>IK}oBrG$St!Z}51;v((T>li_|Yyx^J(_UF`Y5|$AihT zC02uT&(^_1Ioif6K9f?>PC}kocd{#_rG&>{_ynjXD-(cUtXPE{R!Fj8y4GV6vC%W{(VyF zoXM*m_*{8&w%E#n3|H zTS>F1I?mM2rZ6rIXxOo43qMY>cYw=2BFJ*{#7uTm4)A?emOnA{7d;bPAoh8uFFK>5 zAP~{)Ar4Su3r=E)EEon<2J7k(9n12^Mmh>j{*^n7SSr6YG8Q`;12>i6&7}BtCCNS z$2hA8kyd+s54OrJfBNMH`ul1oI}-*p2UF|WLdn@3d}%zi&EE0dme)P|7N4=9=<;Pk z)VvJD_>&I8>ZRn)p8mK;z(b$D+uc6p6>&31gichWY})U%1L$CD%Q3kb|y2V2@4$cc;v6MK2=KHieUfd1)EVX~cFpUp@5D0Jq( z{S_cNqoI#!gpud;`8`kKKZ-d*x zeBi;*Vwpm$z@zOPO|H-EN-a+LfxN!CAt;A`&f!QP-u2uE$vG6G{}Y_=5&ixLJ~jN` zA000L?%!hJ1N?k|^ZmhX)(zk9|BT;u{`n_v{al{BCh5N7BYnSN#=hX>_9e6YkV)ff z9>`1PtXyEErbM@G1aY>x9b?_-tj3H}#$5AZTSBMBCckHp`&Nm$0=H8NXv&GFA(I}u zXZzB8*NmGiUu=xdYRM+_&gPe{XXZkB#@zytj*i7sUpz~5p>-vZjy3}cuZ4>_uTZ*5 zLEeKE-++qFDtY*$O+N>)afGlk__0XGD_{4E15X}79l(60h3zRMs;&B(Z?obTMm~?M z>Rz7j+g{Cq>qg>cCp*#& zk36>q2?v3p!SFw*$u|9}bg9E5T$}dYcc!h8A(&4xC#MG6913&k=tD6}e*@VO&sYzf zP{v(l+xZSpl3Q-t7F>QZ6WelKJ1}xhVfsfwPyL%Sd`u3GeC5CqWso32*Nm)f%chqP ziNh=x>1iuH6?o`}Taqw{h0}hAWobQm$=Ssh*!>M6Uvstk`hr_Q&;Ral_e1@Bz|^gV z{9!ziSl#+L9RA0}w?E&1cy{>dCA0Je_bK zr}I+{8lMOqsBoq63Wx)ZP2bh+fYL~ckC>TYk9WvoOX89jLEF6*Hm@|PoHBapo=vrB zg;D#+Mn*qD30}!nAT(ukH%w4*pY zQT*pIS8Bv%Nbo_JNq6elobRz~MvRVPIN-l}`occb?qj%DgDoK2Gj|dz)JY^gK~wi@tl5YMN@C!-@4-{FiKTR{d1a&>dD@niE&{vomY0fPrzz661*iPzDlj>dnZ;Kr zo$_sLN-KP*9^2U;T*+?k%~dY+YKwmp=Mm6nH{X5diIIY>E9iNH-C~fGPrW~k>7$;U z93CV83G3%8RKH;-|=&gGraS;igWootEDPxlK@i$Y1`e2U^dvFOkzhFF|jMwwudLuoDm@` zZ56<|LAkF6WbDn=!?H99hde|tnM+cW9(8T%Lz{|zl2^aL=`0rC?3d`e zLnR+S?bvqjzkk}+ruvSD{$4D!!$8*ig7Ya~Vy8SS+r^ws@uBqsrZn2o^(V~C$w<$G z1JY{@>N;K&r8*~Iccxv8Hy-rjpqScpHb(uiX|a~?5R;*yFXGJ$?RaD`#(8YfuDW2y zgN2GBPr$S=rwm~>xaMkZT@B1&skeL-p1-zE5*qsG4V4%o112iO*sVyhAI*3|;OBC6 z{AAcSJhawa0VCA$N$9rai(}gxUMAZWN8>d%@{JUG4H^rZk{8(cX+9E9{m38!&I@h3 z#w$f}Xy>0}2xnNg+srr9(_(Jbq1y=>D@_+qfHs9O|O8RJtZ<3K{j!nDtD6g=f7 zbnR+y@bsgQHI~4Wo5@*YPv6RiPpG=jj^g218~|sYJeW?gR$gyCFrqXSSn(qUjM)%# zycWp*8XtY_N>hpdjJg-sJ)19DPuk2likEbeZpqDOBGlv2wg9qt%ML#2>OQcQkBNe( zE^TA#cpc}Y%3zh>hL%4MXbw*o%(M=6_QB|C>}VIFZ+IxeH}u3Q3@Fi=XaPk+}KB>sSb+T*01P{VUHt{>F(y(8sF;9 zZv0r!jRCsrMsVNkS$yeDo*Ne|nf~i1CCS5QjN%Q@-$4Buj86&plP7=p@V+WyF9S#a zUT@B$@A|oa@z;0moqzx6=d06~1pNyVnp;2DU!GrIy<{Tz3W&oUiW^@!W2P}AM%ZF$ zbSAqS2}8pfojxQZff1>rW}#u$c~r!eJ?fAxi1Ko1I-NC?jc8L5ytPqatqx}SUI{f# zUKgkZ4uVC{!3l^w&%Wvu&2}>2ZN7T^j8VRMyGa@KTG-hE17c&d5l=krjZOV?^J}Ob z(|$*jXU;vya1VkV=)_V+GvSNvwlHaRFwqkZ6d0L!YZ}4509CCRFTDz`@eOM*5gC2` zb_9-7KkDn7bE8Iw6kTA0ZbQ3`4-)=|+nmsnonP+fu@4$DE3R|ovbJL!=V5P2~3!S>Mxauy)^?%eVz0E@N+|F`WG2WXQ^VkKf26h#ty z(ByZer7911;wYCS&eXgyTmdYJ(6tDLiO{l|ty6!q*G;-|TCEK&U+rp#`3ZY$I(Bm@ zAB8Y*7|=%3Jm)I;u1tOs7cqK3+tV;>3_@r#4v^}mM_Y^;%V610Uye3ee>L=hzpftf zDIar4xp0{N>oa_~gThC|`z4$&nXzw(^B31|4=>+-e|Y3qMSMt~68>P`1+?GwbN$_& zho|Rfub6~yn62M(cEdY=PQId`Jm(e62PB-ghq%M*#5!?iUFl0&WjvF15!sLvZ zmg&p8OP~*1V6xEmo+RnB1D2zRn};W0v>2d|ID`^!Ja7#JSVmjUwlgqH%mlzs zUtu0%YDYeMMZD%IXT`}Twi8`GB@Yvtd`3;PbHu@L4D!U2z2!P3laPbS6koa)^4YL~ z+$SQw3Rz{C?n@YSyB79cLErI( zao?St9e()h|8;o#cmDxzK7e-xHD8SXz22Nh-}SR^{ctMwn%Vh^qw&`)Xy2d9m%Lry zXDa3!KAo(RkTXGMa?Z+~biby+vqQ6hO&)C@Cg4sB&kjw1t^gAA?6b@(SvoTg11ysU z8H@ic%F$IHQ)3H8<;A4(FWYI9&*JzXY@a@Mo~Pp0X28vxkV9^P3)!>zA}Y8ZHUx9W-llUuR%8jd_>M_V0l9(jlk4d>XNdDB$=1x-&>{(C;MUlSnGEQW zwMRM?9>?l|Ej|Kl+E?&+Wu=mGa$uEC(GrKwpLG9}qrKn3RFN0f#~MRzWQOQG(j0)} zxMfG0K^C3~k>gD{KbvAAaIi(CZK9 zR?rFs?!Tv-bKtEX-}Q5T`r|`>!1D!P_56lu_=<(XegCT$1in|{ouA1mT5Pl{8Z)&J zs5FxpG|M>Ca%7$Kxh-J9g5MwdDDVRF6caPtRe*|^dy%!gS{+%1N5L`M%N~o*qSL5= z=H$+Hot(C}Fpjr|@W*1Ta<`OLGHUB=R@wLwAN=G;XCJJ5%VtGZ-m*B(C!q46|=^`t**wXn~p(n2Rn~$XlO?|Tk&eYC5%3Qv0a47Fg7(h z6V|@th9Z8P@I*rio)6UEPgiA&lMjiBD1cuUR`ncfs0`fEcfi^5NK_@1R9+SK?#d6N zrN0owc1zX0W4Gg(X)>dyZt^^7w`bj#%+nm?r>~r}9?0yo^n7rvg7pw5<)ia9FLlg$NB4#-b7``Z~Gv$G>=f?yE#>E`qq-N4O6-z z<&jqCWQ#pH;2WWI#qSk+NKU`tVD|=ruW;!NoELmn^n-a<(0hLiXy5vI#H}B$@?S8$ zU$caN%LM!>ll~P6*R3C>h8KRVM@TeVCIVC9<^phHq4Z}`Hme{YTVk+S=r>+mD#JGx>z)nC97x;sH%F9(uHVbny2Uc<3!>OQve_#xqYsV;bNvv{lg;s*Mm%-Et<94%#H8W` zo^5UFU)XdUL&WBRf`E<)@iDZ=oQ&4c)mo3ztO3_wNbcH_X>N933SnqmU;!S5C+AaJ z%X_5Ofl&vsX{AaU$I_ENrpMW2#xI@M?2WI>&RQedR6N%jAj0~h&hkkOV?eaA?Wds@ z9$lR-a<<{^v*_?veD(psc^q7PGW^R2G_zSOnuYOE`{|0!Lp#HvozF8iJId~D{7xZ_ zFvcO>ZSyQ~wj0ceccU5nV~n(ejisUwqJs;nHxlzeAK&u$0m8S$>)Z3Q!;gRUf8PIF zK{t7}Lh?TC%wNCj=iw#a_HgI=BhIjR4=%s(b#n40XQRCGe)2Kv{64oRyd zre@QHzAukmQJq~kee>eyERe~t>{V8{Q;nQw z85R=wy~_u_3utV(!l8Ex1I;okR(`Ft4BJ$*Ab`c6H8UTyj|s=(H(z?YBV36j?f8ie zZD)60kQToef5G-l6&4F@u53Dsr}BuW(K*w1JUk@nFIPXYGch)eux2X?wvlNZ_$)?O z04Q02_BK}v(yE#hBW)@m4ZQXmrqh|cJlaM?e9_d_cJsSvQnl))?+G%0X%N_DzC+%bzIrwftAvQ0lA6n5_`(lbtzzYIvwS*Y~-C`WV$uvG*k+U-DHEpZs)n z_~?^|{C2>fH1qJUBb8|tp;pD?R%uKC{{CQcu&sv=LE~RC!NwiqDP|&(v4CelE=@s8}nRCXq zve=CU!B%GAa*G$qZWE9^zKtps)Pk1?Prmbpl|ApsQFYo1I7#86SJ6Id z>j|nF=epBE-nh{bcT(LEOP}7nubVL=pg)bxnBi`=@~24ZdNgHhx2NG{;}l+S7f;<5 z5>lNOt@sx|dHaEW-|ZtdZ8*)1*vfW0M8^!D+_mZ_W;(gtYT=KZl2V<|4mRjmsLg|T z$a;`%(~tG1_x{hKM+c>H1;H8P*b1rfi!eA-I794d&#?!-2_@by^XfQ^`by(Z2NG#F zLd~(`?>Me5{K+IT)T^%f;d97rz6il9{tpk1s zU;7gI_dww~sC%oev!w{?b7qgQYg^y-k*;Qqo%*(W7=yKyH@1~s1)nV`4XnnFA4o8EE7JJcXfyS;X|^_CX?P^nq3#OlV+y0%qOw;Xq$19+hSm8;Tf8L z6=5@>?BxcdT;$9b3zwC$VzThd7w)y27<1O?UVZeCpF~>yMV}P~O|o)4FPEmDUojEY zD;JRCQOCyUuC>#dyZ-9~#&dlzM}9_#-*m$Q%rT9)tHk2VzAd2+U>;DU=No|H^tuFl zu|#w4xE*JoLjX6K@Qo|Q)bZ%IdOnYGz4<#pco^9rehFIo| zA(p|`9=YT3Xc471(=`0qOmX!$-*8zUvZWu()p83CXPj*ny=flDF^nO0uu*sEOCA5S zJaJnz<0$pEpU&0z1&>BA^deW#i$9%P`%LY5G5&malDMurXGQ;=H*E;x7B2fv1RSU` zag0R`rIK%LpcuKOy8O$A-h;E_rbhO*_QW|MF>=g3kJfp!P7d9QLF0!G4q_tfuICDO zaPBcz!k>_kU(){)+pqZ+vM1kvd${|b=X?V4`?u|q_+EKtoIU&h;qBjFT%4Xhy1u^T z>mDxO5b7^Up3ivjEuSY3kUMt{T<{g$nHA=ge#MJnb&!T3j|?bvoNTrhl1VX{=*&YM zUI}W(F~cpwCS4rR)h|;_Fdi&Q&-_d{$;p6IA(D!`XE4!&q@OSNqo452r2NY_of2>O zDDv;EoUxm3ry$~x`Klu8RY%|X<2cMxw&D=hvO(Jg=vd{o83<*9-}^=b&iFqE2xFmN z%1kWvzxUtkN1SC_b$rq}|BA8r=r<0>=D6Yc?>@is4FZ&j3GyQXMNt=I;EF)t;JYW1 zZnvK3YejOm@|3eGqmZv21K`we+>VQ051rAV7*j-62&(1XyM|Nbnk!Mnb5qxz8`_S~ zE>BuB4r5i?dZc4lU1+w@6S{)E_PP{)d!&|`=(NRM0NJU#WGh&-jk~x`yXy57lt`g- zP^E-2kjLiQH{fZ9K~QFX1eiG4av1i*v_&%<>9&{c*3bx#-Q5-!1C5VD?EIfyXb#^@0M1j? zKI3ZsOZ!=tkw-rui@crRZB-Y@*#{f7q+E-$WLonD=P&8q(`0p*8YPQD=6 zd=H!-%RV_H3CVpZ^K5I9u9=&*^Buj0)5{-(600kO(yB?FqOJVWLU1pX62q0oOk0!& z(?uoN(0x&I%SS|h(CHylvL!w~bb!)7Fs2Ahv4A9%hXz%cbI!b4wl~= zCi@h`anpu&r$4;}j=ZE)LnbMo5Yg`wetFCymQT1fF90K;JborGzCO3=U34CAM1fO{iLCY;)pm#!n5gAJ__(7mI-@>dtDwCT9tQ!!j=C{u97n0X)f>MwxuOTK@5kEu3f z;wuZkx#20BEG#VC-;nAU?tO8vTxR(ZL zczU(^Fp`zh9I^L+5Pju+!1_5dL2v$a!mGLZ-QGmJ@k`4)^`))#3DuZIBQ|i?L1bjo z)~56k!Uz1_sT_LD;~2s~BrW$0!ST^}i`oyU|AC9pZ||HOzJFg|5XR5r=n%?G0i5f&%xN$$5gucUiD}?!tNGAEh~aq)FG46^rsLRy#^@rpgR;cIAvgv+bD# zlSId}ZQ9V>;PC8O?!LaJk8t;|n{t=2G)kGXzHT?T;6zA7eQg9Oowl&_rPq*_ynFxV zwnfC`EkWYwiwBwW?$db zNA3t!TWo0R2C`!16zmN>Wwct((w>9drVT$FjN~TzopkK8_K3=9Y{@sxfu+;!%k;*T zRA9^OAOx?2%F;JY8uISD_fMVtAVNzfIrC3AeAweDXQT~d?9dxK$n$S54W_yytGsCD zx7Z#m3!ehYU{{$=)@ZwlsXv3U;v{x|3kT(VS#kq9`r&GXf6*uZkv<-%A#2+Q&GLvb zchxXP{Puyn^q(N|`s(WH3*_HGe2HK4f-q_`aoTu4w)gG|z_Wisb8-INPrSf;^@=mY z-w^TN64-x68hpkCJR#nGGoSAZBuAVCRGe%xj;*AjIXwxqoLpw4^HiJ7B$BZF>IEAv zVlF8X?W|l^8{}Rm~{j)n~!6r;~C(Y3r?D0?U^B+EHx3(oK z5dhtHTy`y}qDzuj>B6Y@$7f@|l3UW!qEQDdb!}TX7fx74>}H!Q3@9_8W4yP|bAZ)P zEf`xc^JYfW`|5=g6hE_BcWinU;F-N!OO|H-fHO;20*?ado($1O4|e+AEk9^t@Xmqp z$=;;8uiGiEo<5d4wA$Fsc)>M($mD8#u#BO45!b%h=_Shk55Tdlt?ns{hmqmi8f5Km z`sS&#KUC(twl#l)5e;%2=u$_DJ$(-jVznOJ`_K-+^Ewv$W!|ExFWNM=$;n&W@ae!X z8s>^KH#W@lu~jk77JWgEUllQ!W`I`+=D#}1Pa)5u@NGpLxyhKJj>P!bfe!?I#R*Y$ zf7)W+qLoS(aM?C_*#0N**J^j z6Y0Dy^orjQKJhBx4`+7{-=94`{QTGdou0WA_dx+aV`o%t_0ZFbgRQkYPj9hA)QTWp?EVQ-&7>zVxS+b?5Mlrh2d zZG2p%&*U>ej?K4Q0%~Dt>|Mfutxwuf#KAa5c4FzPb+bhvK7UTWi`iEZPg&{8dW8{2 zAnI!$p8D{Lt^NF9kDRY1w4{{P*0vdjGVmV*NX8Bp4w)|qt#da}Wd@&YJ zwr=rVWG5dHU+!F-e$Je|;m+o(AHP3*^!>%*&inSe0TTxY|0{3C-WPtK{`C9vpFcWz zaQ^m`Z`^zP8H@Z4N7YX$cD&d2+OK1!&T)Vx(w;F^#9dS{nh5qT6p!f9cq$QtBfg!GuDunv(#$gpdc_T$!$kY7cqK(qw6OWYUFRpoN6r5?k`N{hKo_ zbhW)IK*d=|`12dMb-+Ty+bVegPv2yrD^I#4*?r-g<4}OTZLCNiIG@PdwQU3n(pNgJU4S(Bl0bLjJmxHX&Tzv zo{^WTFvKwiGY`{Oyf8W*@sV*{(K4U}oAhvZ*BDRUI7g|frzri6m8x+QYi)MN`Mn#z z)h$TN2MXbfdKKnk!tbQmwCz3IX%@TxxoO)ms4~4~> z=%3NN#~p!>!TpqTHBVqaJH2yw=G)ote0w;5pS~=vx}@vx!}j~%JU#VopXYDSpAgwk zNZvOj>rI%mH-4p4Oml-kXPxz7(@8wT1B;CmXCZVkts%$NO z(_00!wHEHo`Si8nER*1!8M{cGeYP+yc2y5;Ok%_)%PVdQq2G59wQ}qZ#+>1>2-9D9 z1D%YioNH*i7q5dCZC&yy+wrEjYG*PY9p4{VoDfh3yInPi7bZk}s!V{Tz1*!e{`)Q? z{p~71x&mPKaEo+t9a$}eBv6osM9QJ&10qCPZl31O{qXwi0H=#N@XDZoDu)tomro8c>3 z2TO|EHek_YD#w%lBA7k;dOA>Rz73_!Cxd|dp4Br?QJh!}Z}>11Q`>F# z8LhZ>Z#`^^q3|5cp@2Q(Gnepn`LP1mP>=blJ6D z6xNyOD_+j=reiNyeZpR3+iKC-;}a{%5r9t*p>DZ}(PPIb?W4YNP%W3m1z23A6k_jk zbUELF&Mj=}*2&>>Tz+%%^WhUx_{sPDko4)5GmOPBN2LGXYRT^0>#;VKf z#KboEj#(Asg3{Q6M5r#^jC&D(C2{<$VqdE?d$6skE5L98jV#Ym`kC zl72??pHr?M67dUSOrB2aIw=O-0aU07yC(!grx4L-^426ePbPztIv)^Hn?3+t3PX2V zD{@YHg=?S1!YZ*4Mob&YL9Cr7ba~MB8IP-=f}ZZy0b9EQxyNp2cPP8>%zV++cbLb; zsS3POEWI*M%90zt^7G9(iT4!7(k~9#!@q3Jr-(bdqOT8b9Z0~+R|}Q;WVH5OU{jFk z(-z-FU(C5`m;y{+&*s0e*0v9ZV>7U}=fGzlFtCiTet3M%4#F)`4P+T z3fkK8dye$6Ll;cPkSWE}Gk@kPVtgZl%jWj6!9q5)auPq1*O8nYdq@%| zpF3QR4MlEka@A?hEKaC8B3&-7#+g628L9rHk{=euB-BIS{BDT1*`(G=|fzAb#R2Euf2nXecCI&+vZ%Q zh+r%htS+d@nAP%`Zw-Nn%zij2FxA?&5J$(GX`Fg+?{R|HOwHKxUowaSyNPF;!Mhu> ze38Y*D;<-gp4~0TkG>4uaY!Cu`SUO|+H&jQPCq&1hrIk%E*?)SCJIPX;ppQ4!E#K*r%D80 zos12=F^4D5mnlzpyZZHG#`KD}w|&l#K4YxUf4(?8y!ZR}LtQW>P4(rfcQR z6gD^s>?Gd>qJ^uECbSP{omtFY88U5)$E4NB$k#Uu^Sr|bIV8G2yXd=UnN%izo;Qx| z(_l`K8=80(Vz7?4o^l;K=yrxBlr;ZZNCu^BjX%k*Y%We*@=gEdj9wdquZ*S8@wZCG ze&f>yJjg{_nsPp99*cl&B>Wjc(eLKQp!!c z%J)cT%?QEW^WJMi0`NMKSB}m~d7&Qk&Nm~>0RdO=XR!5$|E?OPOKkxe7TWzgk?JG} zHh(jV6pp0OLEb#m%*bMud2)(w=F3=#gM79E{KwcO&FCc}9>OE(GZ@*l30*&Duozu?ngk}x6c5@g94F6sJ12GIH>1sQldYP1N6CQFIO4??37+kAOeQ-W z^@lQZkKGcl)Dk@>*U159=FB?=YA(23GF$i`%VJN_o3rXw#Pv;^7??tgPjwxa3uySW zI1xiuym_%(JKA0c3NV!S-ha1t^27GhTe6PUD+7Tlu70^3G96T;<+QISfU9}+r8yP} z($SYMv&F3cwzJ__d3e>JEE>x74W#rvFt#oKx_W^i)lev`zJ)~WIkO(VT#WD}_Ux5+ z9vg$C`064x_x&`#uXBs%!C{XvJ?NRzHemngz?JS82{%PYubr`2q6*C;=GU#ZO3Zsi_3V7D@s{&v*pL{{r(JIFtBO?z0cxi!`xOknNxgsqJV!)Y3 zzPjdyDvtX4GJg0XakrAh@Ya#qJZX2X2vD||h_~s=(4PaI`VjCplllt2@ztLe4z12I zb&Iy~n*+y+sdCB6<rPB$*}-d+i|HqRW7N)8lW1vmq? zgIjqw?c;np1`Kt($1i}>HqS;lKX?{jUmBY}BC*F&I3W}t8kP6zD!>^0Dw}ie+5dg+{a+9uzShTr|C-|c84LLZPCX)t`~ha)@Iw67q^$)q z<=RA(#W2c{3H}xBIqMl6b!Wqi7t+K z7GoC-?U*Km;!~vOg;nvixv<2RpkQs@UfKKmEqHhazBcz6^NdMbvzW#Z1<=Bc|I!Cr zn@i6zu<3`s`R`e{ziu5)rX~6?UixNH)g@!#1Z+G;n4cn!O;>>ag|Dpsg736UOcqc1 z{L_qW_xnl(xWyAy><&n|Bo<`|GF|NWjFf)R%ugEqtvGZwW!yVh1QMzfIrEJNU^+HI z^{cPNfDbG(9ujk@t0H|GS)E9sV|iz?*sy*#9@5bJ=E>?K;>TQ}C8&O`A!Jutn;;`F zbcvEYNU-gKV=5-bz@@c-6-nLVWJ7}XMn;lUpKOP?2T#u-`Q$ivkyJ2SJuO7!_CcTn z$HFQkVk}u>U=Xr}F~VBBuJ^$}1s?f<)j4QJik9ArN4X-lIP6^)#TCB#vUZH>D<@4x z%-QXH9v;toT*e{X8UN9aeEnQ7y%R|}gjpUL@jzmK8=QP2hFcdG@zt-a@mq`e%IL!j zcwGh1e@ZwW{MxStls}E~S9tP$|NobF{#>11@KvgpuegQrDbe+9Q%`a1K65kgV5Bj( zWlSof>zon6f^V@x!NfGt%nqbyP8NMnq>7UOw3yuVq?iQhIb$fbiH`*HTY{DgJehd< z0IM^|mB=QTg>b}_@wQ9q3vF)0z{r-q?1Muus3vRSS67i4R|t;ZTSeI2_;Xe~V>lL8 z)b$}fkRU@JM7_gAk7|qbo>{`#vE*zC*z@U=OtOjZ(#O@ZFQwc9{(*`7G%qOhr8wD z=oKw6)f3YeirKf>fyRcYfUaMdINBWz_)B$kbVvdlL+FI0p$v|`?H31gAKx;qJnhLh z^HTYR?ZBNs@z@Rej^iRwJz{LRCD`xgBI2-C0E3y!h{?4U7HW#(&k<7+^RSv9_Ji zh)4Om6_pXwy}1TuK7``tHY=8UR|HhYXQIJ=K`#Ozxd`HdiMVrzw_(a|MlCeryM=`qBq|5dFpR$ zUOyt3ec>CyYfTwdC)yx8jRv=SGZKkxMMYi{B`*QwoRB#nSQ6@?<3w64l4o|Lh#Y2n zdm0sL_O^ja$3<;{khS^xWSu6vLj0IC)`s@PjN}>fLS@q$o%Tqk)yn(rg?l~3@Jo@VGsID}`(+ByT zoleo7G3o<+?2GKxz<%vPJJR<%c{;M^3X;m_iv%~o*=B}}4~5;pAlF>ecMLk8-!zBf z*oh5JbUjngF;2>{i=ZuhlPAr$Cp#Jmty%E2QDIkSSVODJcvZ%C z^^Jk&3a)75B(40h?Sq(%+>P&uEII9<*IX&Zrhn}60jCP5{JG?0bdG`Om&(7}rcydZm zPG54L{Zk4aM@J3@rziKj_s?uK5d?Ck$-pv!Rv)%m{BVppBiWOGQy3-AEesoC__w#P zrHF501kV$aD=lblaIkPP6b+P%flcjX#^$FuJzKpNM!vhRDM%wXBvC)nX$2mSv>_k`B zd2>$-#SV7SohSYwTC56*0^%SG1=?zfuRed;oOmPCJUfm#&~~5$HjpuyrGl2W#2r)p z0W}lb&gfP=^+Rz*wqJ#8e3@dS%=n+EPYd6Ru&xf!w`l6t5zpexe+L<318yOr*#Vo5 z)6@9HPv*w&d=_BqNhnsDhwi2x1|@5*jlJ<6-x-HCV5;J%juymS6#eeZUp`nB&QgRi zp$BQUZ1kk^#6@Op`!w@$>~8wLsu09+hM*4pY;XN_aFU=;jAZb^~ zP+G=JgcucK<>;6^$=mL4l269iqwpx?q^?Q7?rSC_O)Af6BaZ3}wC)~z*1UBXhzaN! z)A$B9v+Bm-Dwv9>! ze1yiPE;wcYhDS4B6cG!<*^WE*jMveiT<6KL8Am;}k0SHvPD}0ui%vVgRJy`a`T)1H;<6JNQl+h>G+m=^G*kl@YV^Xk#x^hcIoPEFE;pVQn zjm`0=kud~t)Jxv^SoS2cDPL>#9j2Ov5QeebHj|H=5W0h%zmW8}_1C!35_s)QCD&e8 zJJL0j;f1dpef?><*yhm*0}Xv>kcwRK>0rMoj)D&^R{>YANy%<^Up_e8_d9|PzZ(_R zeyMFT{FkzZ9Rk+({r`0Ohl{%>Zy!>io)cg``Fs5e_Qxzb&i+r%DHh}hAuJ2vI2p|h z4TDS+ExHxfCT!1!VaJF&W~DVyJMEG~q;f|(`2P8?lB6X$GTXk9(T6V@8o_#S_QT-E7U1VK6`cGT@ zUL4L#dhSvP1j(8}!#nWST#aZLg zIsIhwR#9R~84v~GRaBRlK8=ix8@^4)C`~o@b1T3;-o~S~naXR!4L8dxnv#r)o`!|7 za4lLEb!GXB=M&o$J9OX;eT`Ec;~z$br%)Z`w1+IL?bf(CewGuMh^JkdY{$Lr)tBaD z4kqX)4^#cr97o-ygJ#BvlOP+LrtuItJL1xt+d~ULHe0rRR$hA=Qy$XHFXM-l{b3~+ zqRMQI5rxtmT6U1#lRO`U#1|%B*~W>bB5dq#$?n^S3wrRi(HyYHGc?XoyAR&SoY=lX zpP#nnw}amv9$uXvF8(6dosnN|GpB#i&9ndS-`qdDx_|H9;o|fOuaUpxjZ)tKe?c-l zV)FXbZ?iyD4YvWGi7k*k5hEV%CV`y^`YlwaScWtKvd|e+HZ6Eg?W|%N6gfrp#}`zyja{6yedE72 z6q{mhaqCQf*+8;>uOSo`izgVxj(y|w97<4aF8-1g%UfznbXx4|?X>d4bmXTr9$!O+eWcG(`VF{E$WDTaDY0BFwvec5+1m1RrEaYS)E zK?svw_Y?b>3lY-9w+S|M@uMrvMz>ou+CglACyw;sX24jhFtqKKa9xeb(v$GTGR}6T z#YtiuQfJZkab0cY%oBuYF8Pe(@xo&7$&mcMrb2(#nR>p+;Gx-x7j5Lnm%+AO95wsL3=&6vVzqi=Af}F@ZMx>W z46b}_lh*>Su3yl5P5UKp7I|`ZakzK?8RuxfyD`5s-|4P6yi*Iez>S%|_VtIK9$nl! zynXog^5hu_!2Ph3SDYb#Otc;lH(oIDg4!sWsuq!YMcN6ph#|+;w9w{w3b>1^!lI5x zgOb2xn?xTTSb#J!GMrBxb1!xYE}2et#YL_e)(=ain?xRVBAAksmP$=B!KX0Jr%n+= zP9G}5s)9LM5YcuFvq4ALGxXjSgPi*@H#XB_#d}>jUq7v96jsEHm;P#R3Y!NQ^nBz4 zJWeTjWN|HnmhJFnoW{VL zqWd<1b9pw^2zg!ASLate#)bi}68yxh<7jNlX4i^U4hZR?i%$At(Nm#YXvQZ4;_z^U zHkIj#9m&|+L?I|K&w9w{BOF1IWwhX_8rme;_=iu*S6Jn1o4rFwb}2b$S-I_-Zb^5b zNY5Iutv5Fh!l+}31!tearOk}&oqhG#?}Ln#bahgCxJx&A1!imxOPMzIov27s*EO>a zlnq}Wlw~f89sT@KFS`2hdDv})j8hE9qmNP5gXx+~jwfa9RN!f7PaXY`S6dw(O*6FO z80OG6M)trkW!kiDgMNPURBZq#pPUQFYrns-Q_9Iw5scZ*c=mWF&fO^VodtX$9A6iG z#ixS#A$j)C&bbQs{_K~(3TR#%{4en2+5g|ZdU<;Ohqrg%o}PTf+2;!!_=E+-`(x+F zUI-X9p=c7w(x=&|SQ6ivV1jGHIOz~(qDclPh<~5DO(FvWP0&zjuSs=}oPQ>Zn@L@L zaRyh`(3&;4WYeduuJ)$DI_nCWkb2js^1AAIz23(JM~5Pr-Aq(`@^S#9p}< z(W?o;EV7QrJ%!xhNT=O`w0Prj`GB#; zk`UO!Z(Duf(Y{Qbf@ynBGVle58VkO;^{HP3%1wb9A8NMs#BtPG<1k+EV&hlbErU|o z1Kq8$DosDb23-7BA82K$@89*J7nia`1%4e-*$X>@#ERyqwlT{cmMX!F!8$} zH1W>2=I5PT!2q#4`LlobpHBSX*N+db9-RMt_LNU^`XY#5_~v(I_?;Pk=MS~rnRT1U z?u3hCfM<4Ql9c4pCqtc8lQNP8+Wr)3bvNpq9jxR7Wy`yo_hKk9U^s>TXOkHpSqKna z>`v+|0DKr}VUBbseliM8_1Wo{rN!sTNN`M~`XeXZ`{_eki`((BX)hb>^})87>ATl2 zU^;70gP>6OmD88fl6{3cpTy-s26rIwmXwQ7AH>g|zS9P0aHVT&R#XRKgKv>vHhQ;~ z`s)_gEGB($4EmwG`qM@&zbEDvgj`BN-D0UP(($+PtbP~)s5iy`hyy~x0-~hYywj&q zgCs#A?F-IKvg^!t^K?@hPkP%}>g$VovmYJh)R*QT9oxz*JK|I@`W>vZ)Z5xHZG6h+_7D}!v)Ze50j z4cO7cH*T{vCnW@K$J4ra@<(pgx%yzEF!f{0AjbGS*fzoH@lbQt2OW9pLL?R-T%Y4F z_3q>;b)eS*_{8hed;5c7e}-}shu%Bhis3u9afJ7+pKp2V=gCjJ_4D-boO8KXjPxbL zeN6J)rOio+OK?i5XMZh75u80{<(MQ*cvA(_1#dzaVOwkk{MKYPD-|G|;J+o6fi|Gv-KddTCfF3izaH!z+nw#VLJ=2GK2GVp&+*R)x|rNDZB|GEr= zM!&+k{L`5dvm}Ghei!lVn|1ybmvulvr{PPFkBqU_7dFqJiY49X`eNI&@Nf`P58Aw& zNE_($Frm5y{#3QZ9m6R_5h>K6qr^ELJdx%*x0t#UMKR6XyW&L zm}~i6pRugi0FXTw@dOIRwwdA1Km}uLqWj;Th7$VKm6!Bv%3lxrqXJL;)CV4I<01+o z#jP;fNf30~Y@08FI)rLsxC}MF8c%i*Cnh&E3yyO6sGtpLw%Nj9-xY#}VaH?dc()Io zi7V#=V&fBQ$#4AfMJAe4)M+i5aOEJpY3j{}ymM4%MVb>2H=jEx((ka4TVUq1!elYBIulq=YK4Qv{Alvf}f?b>r5#&C0{y)Y6RY)v7u$EUR8EuU~e@dYt0 zU(P%5S^#yAw>rLr_=;ga|A}uu_@&fHV!o40@NJpbwJs<(cgJRu|fvNx^(PW;p_ zUj@PUXO}-LF@skHfJ3`Nh=4x7%JxWD&JwnD5{C%*(x#Kdy)hE>xli$XWMb2Baeu}BgAtFl}Vm-z2U$|$FqYLcXDJo+ng~tPK)W_ z>YrN+Wesx9(!ijf4dYOeM38-B%7zD%!BW-5*+I2x@Rq&>*>O&xR&NfXO9v&3#1wRG zN!P!LtyM+)6?c8nW#h~cm38l_qq}JOVDU%ac=~B#w>^*Y^v6Z#YbU-wpk#3ozcA?s z5-@_No&WN+=|PIQ%ooAI>{biS4qo}DO|c!#+S1oD5s-+1`O-L~uq91jc9`uQaW{qn zY!lOIub~3hs3O)<7SQIeHhtY^r;UmaI(evXTPB3%Ol_YWFEsUtzd2jV$_h(7+R~Gj zA>me^Zuv1}*fhW-eA9GZX$xFDv}4zCWn=jmrXcFG!=iF+^t0bt)7F!-bj44C9r()n zWQ?-St{hcv`DT3PoM|xfEybmrZ>#Oj&A8%&@6MVRi$$5ub?t?B^8(o5HDlwNcnZT< z!<&Bb61#uBnuhY5$R2nj==meR7eL+P?guK~33+*Td3b{9`ybsQ^?xV8yWfs;^Da#p zZ(sa<_T%4O{Cv22aCLF@l;!=38qfRwub(j2{noE>DMCbPl9HuLv%4BnF`g8n!0#=##>K)klKwBE}6?J0j9;O>p{Q?f}3x&T_7DCa(elQGaYy=uqbjQ4@aLz&w{<$==I`t zI9gTK{aTFHhkj-eX-imj z$7Forr{zv7Y{VrS^oKtXa~7$@Oc31SmoJdkkT$z9g{MYp;tjrrL~-2uVZVG8hmO-c z+tyjIx|=Rf?tMVZUvrDTbT{eV$}v}xTYLR2Pb$KQr-zdN($FhR#sQrCg4cQxD0|Z3 z(;k0j&og~7c(_;3r{t!8q{&|-<>xPi@mIc7)QgeN%ibcE``cue(9!oD2bx=SXxfP{ zHazE8+~vod@yC)mSoyHz)Lrz(C$|7C*ug~dD_>jzoLoO6=no0Z1p(!R*36lI zmxf)F+cPZ!)fse&RXllOv-rvLVUch)=02e~g&Yh&PG$jhibmQ=vUrXndkCFTuWV?d zwUd3l0v8nJo$3|@d$$S&diE+j$mohmWO4LE0KvMNN)&t%2yFMG0}a`;3bJC8?PBWJ z&VC`1$AbIDi{-hc5))C2DQ*2!X4&XWn?ZLVAp_^Y0ltz8OPsl~kTyQ}+rqugbXIbD zV!CzK-Z+Mmt7DQe8&k$44i97C)q=M4Wun9$`u?o|b$orK*9~H+JAlq&#a$q9D`a`0 z;5?G_37NS{Tl1>FUO~!ZOU{N4yR{o?Xa4n(*A`p3a!X7vk2!#>YkY;LIWb%88(ZD4 zkXCFZ%)I2EZX>EWT`}ipK9-J*3W)Y>Fa0I2nedKt4GyF>8iqw*+_z~%`xxtLK^}kQ z)l$@t{eabcX}6On2cw)gKB?`_yz6Ue};>EUG(8O1>mELx4amv+rPl}ix}D8`g!+)cYj{< zJDGed9s~BM_k_UQCwS*XhPtyBcmXVGk|(ilO`-v}TQr@(l##zR8UtP;Dp&)lfo#$R z@W2w&f{9K37cdjGim2GiDtbG?q)vh@(6Rs`2c1dVSyVcyY`P_iPmD>wWVAOiq(luk zdpvbpLu|8XOGHPE{UmqStl?SQ3qw5Vj19dGfZCz}>)(8!4R%G|GxRC^D$iF!>!)Yv zU^pMzM7@Ip{fh6ViWWyBL~N z3}Zb(w?IH^T%%fBatX-J7*rINT&d&uk=X|tz3N{$3}n@|Ff%m_9jY-59OhWfAMFd^ z7{pc2admPei?QZUv`oPt*{-%6RC4N)%cfF%deYT%?HOXB;HfWtt|~@d-Eb632S1GS zYR?#8%1@bwzR^}!8lp31?D+w1x%ooyYbz_BfBBdIHX?=>22cBJyqM9KULBAJSYuo9 zEf18@2%Ecd0Gjh&2$hv#9Q4Cop47b=r!)k$mkkS>Z+h`d;!df9)I%TM20HwBxOeZ< z^^0M`y~E91e5af9;fufDAMRb8^WJ|72*2`m{gS;$J-;034w3Z5-(zHI;+2zWWN!zx zBqmamEIg-H^e4IL`~5skg$1aDn7wFD(yRoAPP5`tQu#y~izW!7do|_<;*dT2Fli;( ztl-d4+=dQjKx^VWKm5Tdlg)Iy%4JqkMThn{wRw3 zR!@v%d?9vh1gZ?G-dlIE>U(du%<;*{K4g|r$1!nL#{c{rujs zhnAo99iMYC2Li{CDa|lwV>j{RDgjafm4@G4;owIHAZX@+Z3Wd))~c;DZ|Z^a}zpli}9Ov1Q8N(y}-;i?8`s)yG4nA%E2j5)xx2=oR1+?v@hfZ7LBd1U94$F16Y znDTed6Rj{NfAlES}kSJBJmhuVL<(V#E9R`t1R$0|mC76Q{Ac!H)iP zAaX^E!7e-cYF}T&)|1hL1dTs*^w+sE-o-X4XvR+r0i&VMfObrs-Y~!(s^+mZpZ%xf zX0Uje2h-Ep(F41)OW|d@XX^?=|B55x;G0?@pleLK#k1rm#t>By2jThJ2)gv;XS1;c zgp6`Nz&qN4M}HT`4i-Z8;7NT3T@Gklr>s!=HxAMkV{j0sH@@H46Hgtg7FPqx8e>Fz zn7_poJ6o>tW_x0&U@zDP1C4$2?KrfE!xnz&$x1~>ADv3g+ja;yW51E@b}ilQR50qR zz-E8XL74E|wC9-JoU``qvblYLs6O>8eEk|xVvzrI5y*G<@S8t%jI}a*V9=2UYt>31VlqcK=eq?JS(w_l5+NEtGVoMJ#`&PD2O}VlB8>0dPU!gv?SG? z#RQ?jYR|03CyU=>FvVoY?e-7}Hw#7AA9a!rre66UOX(T-mM z0n@WbWh~Ch9S;K7&{lm{r*iTerF4D3HxCHxJ3xqGJpF8e{N#1U1LC3;Z*;)v18*HA z#2G(ySG;hT*J6g>u)}*!(+$97|q&F z8zINAAl#{^{32OMn|}JO)AUEs@puvtQVRIVpFSJcy+5u&3G!5LoOITKP0}{nn0Hra z8f&UcA6m6yY@~`@_O!1T8X?eRo$R*qN6%Oa_3?2M{Y%;pTcLtYi@&t#JQrhtiH56@dICXXuWnt&BGCec5OLO~%Zl3+Ks7bbco zcevPEVsMe;5r50-$h5ULI%H!vx=Qr;89*M0C7CX&CsBt=lJHpC)QveeQQ-2 zNpu~Vg;u=mh>Jb&D#U;mR-P=X(s~WRy?Sdw7-#W>Yiwd~8pF!AdoZ%;YXHVkedTFG1Ye^ z)Z@vVDQ_5dXTDI+a#r?WjZOP`hgKG{?fkZxGD~luc@}fs-)|j25=)ix92H~VpR{!# zm^q%c(t0saV(HIn&lsTd-vI|u*La@gldb8OgW}WozbE^(S2sm{5Xa6C_UjtkXSK)P zQgGakAUyq}p`Xikey;gfZjV15G?h=+Hjwgtn46^{_;in(OVe?>mof5X=`nuFs}7zi zeL-$Lq|a?}ehu-G+dvnGhi`eS=)3-!=;rR|`5(E_d;kC8r?c;V;N3sm{$cdb3EFce zkQaZi_}0$@-}*@mxGr{q8s&MR#7USCNuKB$E`v4+vxrTCoWzPIJwcPD362ZS330G~ zP{`!)Qe3SH!&KjqEpwdQWgjW6?%CR(MJQ3T>Hx$|Fbu8FI7TlYpgGgTAZHct;Zy!N zt|fzrVvW_9EI-Gl=Mmy_)?dsNgyOB5GH>aLn?3uhFm{VZZDbjzx4|s%`K3SWG}ZU# z&%w#Ut|&S<z`nBw;mk(m8li%}J z(B{Acho@%n-Hc`NT{gw?pyicReDI=)rM&pqMy-uzK0{gIu|?d)x45MxFK_74b^uC1 zwZB7gF5zoJfKEc~#U7kSwym{qfvH=;kxkpF@=pj==3~YfX<`wk>xAiKw6oK&{(b|9o3-=`XbZHzM_xxt8`ZRlbkJo9jS zypYAiA9n2L;o4}d;7czJZLrOJ(a<(D;oUp-4)S99<4`aF06+jqL_t*1k)7|(FP&_M z26+Y1;}8_B{l^D#+T*)GRQ^H}~2>u<(*>S2I26e`-(Irc>0|`2=#tyU?-Jc!MN}GJ}c9hDPF$N9)gd|S2*{>Q$pAF`fF%%=h zLZ!bKbb8K@K#mMKTNdmF<(SnK0=WePfxd$JP^V^vsiIpRX3-{R<_#HjVGhkC^(NC&hEl;1NLIhgWeno!k2Pr)?tu39>Ao+S6=+ z`iX*4h@iZ_{a^DbV7?9SgttI- z;!l|H!bEg33Wr75KPKBFsWgR58iQ@t*|a#>okD6@6`bIjFD@K{lFGX5-+2g8$nKO+V%s4s8ramxoEnJNWT=URWuwkP{8FhC2Fcycmz| zHtb1LEgy`rV}-yrc_4FQU_vN2!^Z3I@N&&{I*!M@aBd3d9N)?UU9oaN_r{5l%V&M0G4ASe^5r9~aspb!8D8UtQb879bp_gMQ-e}y>c{qJ z{2Lz&u{`y(U2FDx9K8kr-rytPKyTo|-#Hyh<7oY$pi31@eNZR8aV(#fO>@HW8>J)O zidnW+Kt^-MqrdqawkK0;(%kzbwsVMXv}((0J6?#h8W5*Fd5L)Xjec-Ah;BSthPD{6 zb4=>$-u6YiZlzCSQf};uU3%thA~-@lv@TvBo^Xru88RQU+}`5J@WPstBi(|-B}0%ZP1Q^q)m?~@qllkahqge z!i_Mb#Gt#c;IQ8d*0d<0q&ZunU{kElmZhsHPRTND$Q7MQ_DTD4|<}1PbMM0rvJQ{U1c^`TQh^)lMpOMZM^7e{V1bPmC(Q_LK?H#dw z>!vhzl6xx75~2uLoMo#!b2XyH1ez$xxzi@w;2D*r=j$_#Z_#WkgmU8+XFt@(zH9DS zAT7KM_6)qI{3P{9@A@{-8dl!@(VhrWw}1Hb@A>83ANU2FQwDYNj0OKO z70^$<-NA4*$B-Bt&-7drwhInH0;b?u)N*t)^VA7&Gcl*ttOYWt>P(=lW1&~Lliqff0gu&aV)a%(Rq|U50rZ9PPP>ss)7B(Xc7*{z z{0@jJnsNMBNbu1(6$=Wdh0*~w&MJX#HAM#Uj0b$M%;i2C0sbCarWz|uI?9F@fmwd9c`&x)yz_qDce%BCo^~FB;z4Hg!ekV}3k`UgXex73K_*Izk z*)CD=(F2k8^)G+1f9(OLaZMy4=oNon6%iZbNvkt>Z08Jpr!qUNG-J_=|HP6@Zy6AZ zlp1VGGz}uvHmDu^@^w^XjpXcOnLpAOPwn!90z6^WOZfW3elYRdgA$6-ive71a*(K? z(6%4AA;^w;w!!w@Lls~9=#}@YUC3tK=C=nxagr+q=<7UNzUiwH9-tP!VRu|UHOEM{ z*77N>@qh96Sk%#udP&(%hdo9dhMsB9b)W2#&o*Q=#nVUmxhfd#=s0qW5$&zMv_#Gc z^*R{1U*i?bKgZ%zx6f2X&BvcLWOWA69uAL8)f?cpuAf3BY~s3%1F0r5O1If)++f@a(dL1!06WhF!b zc5>F?SMmOknU z%R>5+rdV;wh%#M*Yne%@VLC4eVH9r0ad_#svG2U0GXRmG<(EgF^+9t0=!@@VECop; zVez8m-@c<5PXy8d6c(?QwF773!3*GJ%lC9skM79UhG>pG`sPuho|xnB_)K<7_Q;g> zyp(T$6?^!MPm5FbC~?AEh_mO5ac<0VOO zV;WdGsi33K7bOYFZeb#|=h(5aGBNTvl=2&re3YI;74gq_{ZB}cf5GFOe_(>XCwNa>PbP;Mp#@b#Y!!SWwZ)(a5)T4xr%4RR zZg--;E({`rF&OCO;@QM<(2TDRlP17Qe|5e?eqKww;Os1DTNoOYCMuQ~2SWPgQolUA zgVW_EkZSBQ6EY&EJ=t0)%%o;9-d(~NX?h_qEa^d3wg8k@8;?BeJBI68IfL}6nXHc4 zI$_gUQVuT80qo?NpUUmh8N2xw1brzftCxE4L!a;1d3dcEJLB{0nS=C|CUh4MUpllT z-=!<=6DYsu|0$oHVbFATKs~qyW+!d7LiW~dwm$o`LAml~{|z2sj2Mr;^al*O{$w$9 z@)}p^u_Ip(jkF~~=;ZhRN=m${^VODzaiBP|o#66&)Zgr+Rd@TQlD0QmqnirqSeR_h z$wO5i-j(9BTX`zT2VY$Wo8y9hh7T{(9T!$_n)SHgU@yBPXLDK;q!1@7z zw68L=NoEg9arbrRkihJQ!ZQC&>b}MjM!EJ^T?}O#5Gn?p{u&}r zOg{Vpr}!{1zmmuUGw*+Sc=zAyX`qtCa;r*RX(4%DH6{t*QxQo7fSacpaSGI$>#21S;O|L4F2fzNL zqd{?pp$e!Q%=BQ^oX^A-s`#Xt46m;%$5`z0fwm+2P70E6izcw*uC)b@c&G=uot41D zNOm{gm$+4GFY^6TxO3^L@BL9`db!+_9Y+?ln(HN{9sz|$UC;TWY+lkIA6+0ySn(~{ zV@v({B^GYo9COJ;;;YEL=8ieGT-HJEP+>$^#;o(wh;T= z2`)`60y*T{K?$=hU!B2;m0natd$$^0V~@HesB}v2(DbD|P$icOKO&5iLZY>L{cv$f zp1N1RyZUT#90ZR&z0oTSo!7@4_3{p|jVI)36GAGfMz1}*fOcyq*^GB(B5^*XleYE> z;|MFCmy@)gH$`P5r8>>rmg$F#StB%hixRE&o%m&&B)*iXK#oAr)iiMn5H1aGj`y9x zfDi`ljf4K!4;}iHUlIYa2qym_qiy|gK%!@d7Cl~K^blIV($o&U4+8;k^CG_u!xv<} zdE8|n?g{Vv zd;;+9Kv|EDjoNZz4#H*_|;^?PHCUnxns6qC)7s{(isSLDKoZoqJ~z z#Rmkz6z7Otye%~gt5NRX67S@8Nr$ZCPY8B7M+2!BKNgN%a`J2dfArbcJv)%kHahDQ z=+h6^`prmT429QajgNipuAOQ&MJL=pbt?<3TIvcZ<-vktM&I$Df6)~yN#G%HlYOsFaU+VS9%5>F44qnU3cK`wTK>z#^y?kvx z_W|BNeBcE9`9J-;!#tL6@?MO-iKH)t{OO;6c>48`8ybB2m*>R)$ag)k`~UP4B;T=X zGe7v<&qd@lC{&CdKNr z+q?;-FVd+W;*hIfnqp=w^i6zqD$=7kE5*^e-WEG=@Pgl21frwggm$N|vYz)B&VRho z5F-rt3}G=NdDHGIoK<<`?gp$hBz^Je(#|a`>duZY;3k@TQ(4_zK2ldcDGPg>T_^%R z+h?B(jIjJRY&0`R9`$dI8QK1@v~b>Qv38r?r1)Xh_343MS!19MaXl#$h{lHaW5P=8 z1I-#2-Z|bGuL&`p!TZf!+Qu>^;k0-12BZ$Y%Nf$@1#(Japq9)WC)SnqdCX*+Nf5Y4 z_$yo6M92s3bu(dGdUV|3n@stotDi01lgL4fu%b!f`=dV5o{W)HjXL5>(GK^EaM+UY`*Q6inEr@k4 zlC|O3ul&yF0L20Bii`$g$EEsq=}Lc#6jl<77oPoj;rCJAJeV*2ejq;__QTKLKfL?! zPq*%A-nTl6)3*|)9IyZX-GBO#H2?8EgZ)RQuF0QgTluK-r%&&Q7C#BFkQfB}%+6V- z(=ZAGeLsEC4#+4IT;c65!?BaYgPfqf&TVQGscLpeE63;_Vc2l6&o;?QV#-gUdNyP{ z|IapUL5?a*f=y%^GnRz3`m7tBcDl`464Z3t3UFYlgQP_1bNvnoeQa_&IMU?%28MDy zu6eR|wh(Z(wt;|fwECs)4dPKaLSqbP-S}?-Fd{R;&qEj)UFy;d0*!aP$L2kEul*Y9 zA|iUWnxGxQmclwK0Bxf7M`Zi}nts)X;M?&-8V`IsBhW5mlVHSXAAIUpnF|BPKXGm> zNpNUp<9s&09fD&Ls~k&W3(S{?!$U47q_7tNc>~S<%kAe9%5g8~5?6e!%&1bYjy+(d4-S%C}?* zgPP!Uau_AOhMXIRY*!$3E{++dp9L8zjA)qT|7UwOPTpRS-!m6&sY?|FzLkKw^Hfv9 z>A&Me0tN799Fk=dxF|jA&_@Wa9mNdn%1C{lrKf>l@yBBR2}A!!%J=_;;r=iGRWy_J z4c^uJ%?_OEm%rY>{QUgzt2cWee){zC!lj?5Kafg45Gg=s z6ryELo|a`lh}6i)zq`Fnz}F6rSLD6Ql&s#yD__iLuyeBU*sJLccxg~%Ahi0!iTQ2h-B6i^offCb_>gPjRK}D+XQhk zDf16Jwt>z^i>}W)k)a3m`Jis!`scqfv44%Zq=M9}FnugR1Mmz&`9)VEh4O!h1#sw} zFXWI-K0jc9Ecv0x2WhOISIOz(!Ko)1mi) z@$6HWNbPHZtUdoV>TYb#kk1C0{C**i5)8bX-!M=Qj?eNWKS8R|*P|06eZI#QJX*>= z2;=RaJ}5QYtpKv$?X2cmDo-52#bt2#H<9x{0S9&(@r#PUm^7aOrZLpv1FOBvA9ziv^Vd3|8~{sD1+1n|@2pC8^o{`&CzZw#phe50fO z`9`u5^V3iN;?2_^K0d#^HQ|5y$;&@<*pJx!9?O03#t7lN1>Vp@4kA0ho#vuir0OW8 z;%) zOkuY(Fd-?07o91+I{bU>ad|kDT^~v}fDG|%@E8mAAT1tRh{3Dc>Q1~g=QZ65TO!PU znB60bUe5yIJFQi8l4v~am{Y1Uoz|6w+}2!m(cU7bPc%3xL98c~bK^7t%1h3uW4OHe5O#9zJpn=KHO0th zn>Xboi?`VscJTqHZ_4%+USeM(JF<{N2OrSuIBLv58ohW1f~*Gp`Y6(|A;NLe*Z?W4 zIl3{ZXt6wF@#a1CAMw+h!9RH)0KcC9_Mg3~2mSSjefP}{FaP{UzWd+DKbhD+;E3P< z^9RDlU2RTl+{6(Tll}rg3-21Nj?g;Dzh#s>G{>9iHv{?rBK)UOPVyn2;lXDHgEKfJUt zzqD-=N^P$<^Yr`Z%|_*C4Kj2_E-M;XLR@0aM)AIkqq?X{c-C6{MTWM4klr|He{nq~ zORxBz{!u`)*Ru%ifS;FgoNS*Lgu(le7VsU)Cb>gv0{60y3yL4wTEa%JI_Z;S+6U5D zLM3heNZo%sYB!S2T-rE%wrdm6&zlE*UMLm^=_iKnr>-|DSJdZI`4Q0uz9-C#^^pUq zw8_;T4`XbMcyrg6I1`>A&6L-^@Q~3%7%zQy>`B}LGPj~z$c+O>aEOc(I+90o{J^O5 zk63ZEtt;O$y5l=?w8`OD+`&)gVsYnJ-}4Wuw*F-|Oq5lXp-=Ujgz7m)RGzx_K;~i5 zuGkWw@O;-d4(++)wYUj9al3w~XZoED2%ynoVTT?$*^)BZF9X!#>mU75_OW?Yn;Eo7 zSoh^y;6pz(o5y01iw%T<5?cPVFF1O>ut}VHr8}eva~|8L=})O*`16hX0DN=8JL2{O z36n=c`^B&y-hX&_=Whgj%gaD~|HQXD{OMgIFdBNqs36` z4G!9j1-566*#OvVp9alMon(khjJ89h6{3}rIAvn_h29zmUceabj&k(1y+$xK!gkEEo8`TOS&C{l9rW4v~+6%AJk8b()TJ0`uyN z4|1y9%S3KR?E@|&=Ci-mtCu`loJ}vpbdyqAeAafvc?R)9y+s3CXW;QkAG1FeqeRSa z+(96_xB)Bt@~htQgxvbmM=q6e9H|Zssss79#CT|+ZKpmrib9@@B?oQ)=g0Pi3+vlSZcPCl4h98>^6$j5NA9ZXf zBI@I)C65A?=|MYVcuy7x^{x>=m#Q!VZ5pVy(s9Il>fe36g zCiUqISbSuY9%4f|nbYYw5Ri@7u*80p!chMm{^gou53tQ|h0c!T8Uu|Y_(v*wzZgr( zQl%r8ugWL+e~((eMfu^6{CMyW49)k??;oE2?f=TI>Kh%7gKu&eUmyQ``t7&pKR>;D z?{zDj_j@gV0>^j%eDbqCOyOPxe?zd5VZ4cooj_O%&>g+?fl;HAW~@nEIwUFs;SE%R z+oV%QQB3F(3!~34`*Ol7NL?n3gis&#~Fnb)RnghCN=(Kmvwyv zLt<^Ai;tajaT7+02j`91zSzy(JR>r=lTm(XvcgV9*6Yn(WLV!Lozmb(vhWERok6(U zhfn$TpZ67bW|+3T&}o;ud}!3=3)Jf3QS9ddt{+~ot}itR9rJnqNOO6sAg9ClAZQUX zCX2HWI4%iLj^3chchpCz%*mBt{UxZRAU&^*-Qh2-{4U7xONO#TF5zzEYCwcX9@G7v zy#|&+KE%Y!n|)_JIE8Z65seA%=-eU!rI|5)#{qo+f8)kEXy5$vc>~i?$p&C2;OW@_#skwaBZY&vr3}Eja=)cfnfjX2^XI=UOHG6dSj^}9D>?p zRi5F^w!aZm^2H#myqvdU0 zud|aKZ3?6DO}Gh6s(I`?G};pqDcY%_l~|=5^b|k0Ne}|bHxs^-#&$PKttgSw0oRU} zw!4=l^~qM1FnvkA6bv07`5A#?sgi~{vnRb zu9S05*P}NI9)e-(wV0^Orelj5I71eRA!vewMR0g&fp3iLEG3>3F5K&IoOzgRP1fqF zpD4TZ23?m7X-ipB)@b!XuMKtG!ONdf+KDZ*eZ0TCiTQNqR>5$2a zyp}T27(F!U19a(b2Bd8_#)sXTW773c#RGWa?ejsBE2C{?P-@9NdwS&;AI~=r&o-W|`f*<|S_@6NA1K$tyP45F-_vg)5yx;5p&o4jovHz*fMoSm@Hh8GM+FJo-y zjlX*hpchza(7~(DQFn_5axk{%&!KfuP?d&O*O+@y?=n@rjBQR*r7Id5ca%YD2gxVd zHBX|uC@g_WLm-gn1oM(eK1Y881&wl@OxiZF`P5}4(T6lcv?(7zz;fd;8)rn5*O7Mh zB!C8^de8k|n^IjYN&q^c8QAOuu)hq2i$|Aig!@vzX9(h4Al&i8^@haVS2~#4;PpO1 zi$;79OAFKF$!{Ck`0i}juZ1mBI?41vyR0{MT1>P@>F6_V#)m)gA!->F{xrjqigdFD zx?(-P^Z=5*7^qJL$`Q6u!E@qCTeLXYJk%qdvV3=z`$^c*81ta73E!X^Uu|5dpqCXL zX*oJ(KfK_C*NxJ>wv7w+Kv43BDt zR~@g%7Ydhz)d;`3k}nq(V^MYZ78B)jlyn`pr(GQFWBGjv2VeJ4Rg6a?gg%v~1y&tH z02|fLZVm?%#2vbaJo-Cpg1pMDpCN0Eso%dCjvUChxe+dGHk2nE(}zqx4@9I45qtqa z53j#vvHu>rpSalZ6PtwZe|vm*`z`MSeA9aXAOGv~)5jM+%KY^7J(J}pk|RI-!iT@! z@Wby;8$HC=96rt)VFP@FaBH?DH(8r-7CBd>(uV9+(T-I20IS6d)}}zIjJg}k(~-{^|A#6$7|2BH_)2-O_6j6bBr#T z4h{nO%A>uJHhYmJ-Azu7$7s>zphu46C3B46Q`g1FACl?1mx6iaK2@)!&$AlwYp4UZ z%O?k`WEVvB_A`n3fVTbz-=nhNlY&ppJmW=ljJ3(1cp3^B^?5giN#XeEf}mj^dnk;) zf<}FQWwhrP(wg#}JjF9j#8+PGeQyvtUpgxQM(M)*@P^@x|42*gC+#3s_IduFpmph| zF;Q>8C(UA1%2br7k$2lOj2FigtzXWG{NEqZyODk{2LhcSY2Pc5s_qg zzD#R062K?FcA5wUDSU~ms?F?CCRGk%Nhjogv`3fZ5=ft1+mo0Rj-@03i_rF}iwklB z07I8Z$@IUZX5B_IjVRJ2uphL;cuNDTF*sz67yDP4%7>)4R7KBtkQmwH#lK4j>7|p+ z#?e-@*7b!>E3e2aOqumLx{u;l{}csDn@wo_%Q*c$hhrcNu;$~T5neigC3~`6cBrXm zj(S5UncBqD*Rnsu{~aY)QC_&B^7uVdskA{}PYdL20NQqPf)kxR4n#(YgGzWiD(mnh7WCa!Qw0X2 zh`lusFI-$PWdZ1MaiuJAyzcIvm9T!;4)?(IO&S$T zuT50lprj5Z$+iSmA{QksW$~pRZMND!v^}J6r%wgBH~CKvbP^nW_j0VD7%e=oFF!!! z3;1HFP7lv;DD-Kp(_ezTvcz4RloyBZ0EzJ{ukxU6a{=n^)=iPcUpdlnXoG%q#%wHZ zTihhaB#k`6oJYoO0Rk#tG8V@Okn@EE5*Y+Cc3?Y-)RjXzi41Kka~xU9M4kV$i;4@h z?Y#rf7(f&EO#l1kaOBZP@2URq^p>Y7|4TQ5KX)AbzxQ}`;r9x-e1FA{zyIM+k57-! zANd&bqmM8B#Lk~j|FR&w?E3%qf;dfp3Kq;JEaTEqz^v)N!6R)LyauCGOl*_y?bs-J zvnQY_*wP$$d`d@HawLUWNhS!7NmU0m{)>MCMt6y{NLtI=Y2sR-9L4-wpXDl42#2;i zIKV2wS379w84=m2KM^}>tly-=ju5-Z`8P3ImDOIgpPcl@(Eho{ty#JgUyS5W95&zb*m>HoGDxJ2 zH|b3l;Nx*zSyyI8i>Iw|wk^wBqtg%l1(ID|veiG0l*oT$ zahg>Xh%X-Xh5W$kN9o37r78+$A9Qi?=2@C?UA(~`+wc6kKBy|y+Mz#`_CqlM5y(lX zpW-5+!U0;-xzIuWeEjqSI=Q04lR$hi+~07Gos5o>k!3^-gx=;dAOjl)Aji^XfC6oIJK;x9N`&5B;tkul zO&Zh!3gIsullNqY5%{jTD>_=*(909;Idd?{G>Eh>ldu3n^_TGB6<*R5T4$uRsoT5tY zF~%On#fmDCEi`;SNk?)9J`&1RA+o|~B?EX(F*{7eXBWT4V+%n^9l9-kEEKP2gWe|~ zgP6p{qpJ^r=_p35ZD05TUp$E;y4&sRr?ehsZ*Ag#x`7oi?Hn$P4S>QakQ&bJlthdm zyXp0^0Q9dL7U1??Nl&%DY%4&VYD|dK%SXb_OJL)dwukT%dCB}U@8-(EORG%voO*Kw zb=qM)z2ShEel%D2i}ixs+V4%V-9 zoc_oTY4bySlmLzP^+GyjejY;wdsNmzgIxG@BL$hs%3rYRK19Wm=Iy__KB2}+;c@2I z7JX=8Zk!!D%~Y4)}P$jZ^XA&C)Td9o2n%wTU{y)F(LU$TANR7dt}Mx8V5_ zO>PE1@?$Yi58r)wdU*R+{~=T2`kJ@t{Td1IdIR_`|KksQ&%@7r)90HH#2sTl{(u*L zsgbbt>Tx`;?EwR4Cu2qB@wk4cqYd^V0looFL|_Z9EJfH5Mp?w_p6v^|6cAiJ3QHww ziMqXL@&RtZwWU*G;L2%N0JyGE20C0Yf{+y)NFZfH25)ikz7btZaI$(jZj)mL_DVvM0#aO8y>L5u2cQUjvn4HNv`ob^%Kr39B$=sNU^Q=K$>y*gr4B$2C1E*iS6x1#s zIi6AMECIM}W^6Lu{dWc+?c@rtJJLBn7J7Bs$5^NTzM-4{-i9+Si*MlKU<^ic8BS;> zPt-(VCk^WLr2;s_HD(JV4SX*-3-`Nw7)u))(%$xD+{I+cUEZucJWE2j*;rObdZ00( zl|(e=z^^R=N_fz?KxLmYpzB2)ij8Su(qUI6O>JtP2n%of^V~6@f_*7FlQo-hXwf_b z-q@Tw$!`t`_tmO<>a;t;X&Et6sBPa)-B#idkbQMCbrdR7eB{*EKLIC$VD*F*1d|DM zeNaO=om_p^fH|VZvk01P3LTusHc=jHr^nO8kqW( z=p_n|kJvf+zEclO(nO?#OTB$L0cE3w!g$$?kD3FjFC^r=2o4(kCU@iObHCoGHR)2tX6O;&WdGFJ zf%5(Em=BEl0W#&c4Nd#*DVY3WcJV-_R&9a!4Vm63mQx#yEV_}c92bgTvP{3UNn0FN zFWiV$@A~S-`Ngq_k+2;fAt8_@YsuxoH2pAf7XvTP2)-YLAnqt@5QAUn4Np=r1q*`9`*K*Z-irV1clSiLvJ{Fr3WNh`Qtb+7lvd@ zz<;qq-sZq%q*RAuC9!Vf#$nXMs*L06t3Hh|&p7!bvkgvJ&Z*`sjPgPv##%A36wM0SOkvb3tEaUE0DNu^6v4?Y|WQw z#Z4Nzs@(+x_!(XDiH((7tp*ZxccbtLn->gtoX$UR+A1#6jmiO9-^S)BrsFMqW(Z~YK1Y&4RXq;a#R7u-gRBM3#4FQB&R(`aWj~LU z++Dsld1m8vd}HSl>ZdwiUO4eB!`K&T&1(CozCo&k(I+3ZPnzGb>) zp9t|6$~-%8DcC26cSgYZ$IJzni#jw{D6oq!ByR-S-~79v=#O3InM*zbkB4G3#M`84 zH-qbv7pT6rSsK4pDJ54q7 zRo>B1obnGDYE!1Or`S@@+$jy8?F8oxFDN{Yoz~I;KNWL;0+nxn_%ENqNUm^YcK{P7 z3bP^Mb5z_1czOBp`Qh<<_A~Ez;`!-Yd@4^@u>&`N9jAZ!i^!cv!*w5d+ zM5IU)PqHEO&$EWXK1Zp+R_xSne6&X&lpq9k`J=}>)KlEQkUvEd^Fp3H?fyV`8AN|d z%1XiLi631P3wqUfrljm93~tr|&MfU$hV~&3irQNE5qd5Srq3J3TiCopNS!|Ujd&S9 zaeCodfcjlb7D|17?9|)-*b_-lOfD8Amja0VO=Q1s=%c%S>P=vbbSCvfGG38HYO&%H z)~kQW6F&dZX7=d2Jhmpd%it`WA$w$%S6}6ux$|vK;>v zDwVzL;b&2@=g6AQP?COT6VJ<#DQb%XakHL0Vd9YYDuhboY`CN*WBru1@*F){C38s@ z*p+*xeu_JbO@43j%D2|yx5k&Tazp1PC-EEhGVt1_Z1n(CoeSF3@PbC(oTij*{j`!M z$9#5PftSczkI(Rb$0Yfl0Q1u@oDuxP!_!~=-NT#zeN4am{f?jCE#Te&=CagVX76`g zNBkVX{;~wg{le*F`jpg7)KjG_7tzJ-tK%MGy;NGEx=xbSE6GJKbY4vXY3WFzqSV`hT-n3Ah70I%Jj{Bqkl@lOCb40jlDZkDBTo zgzN0ZLElTDEhL*la+%<=n|G@YAZ2St_N$gZ>(}1=0Iu)8wD;~>HrN!VbUC4GA+)~5 zXcGZ>CQ9hC*PvdGWS`h%58BCG#@2+}Hbp*t$u1Ly$;<={jCgsu#wT)iX5bB5>c)}M zUHO}rU%>-UhL?P(!|ThZi7KHr*?Z0Ze$9lJ>e3OMjA%yT=rR#>E-sxwP}jC%P(kbT zV~LQuRu)tH(HQy?0R5yY7YR0c887R^9Ul8Zp6cR_CvX#WF#y(?p{2>2($^;wto-n5 z{$yU+YhU{MHCkh*Zr;$do5|J(vz=WQyhe*Z)UzF3B5bR#*QvMQ0nn!CPYepDu;B74 zOdpVY?uSTUBtt<1Z9dvoiDmqs;}2v9dJ+lUoe{cmeFi&wj5i#b_E< zg(0IDL^*q)3hqWmZJX0U#aK}iw(^4iUK-xKBHrmbdZEl7k2raFZsvorI;fQX_={oUQW?i{r828H{9q|L630yb>~oM zM$Rd`!C@>({y6N-{3jL#Rsu9_jNC=QZw1|b0qDH^gidez`q#q4`1$B!!2=X8%oxuG zG%kJW#Xr4286re|g>U-f;kL_dp4zQy!}mFYJ;?mGcnS0Xh)%@ovHSXNbJJeRh;8Y+b(5(AGJaeB+jF=jbkUl2rh2C z5`1BkKxI>u_$eijs~kcHIv%xM)1&jvgR-+(1LI+5>%XzF?ORO1j^6@J@SVj|7i^du z2NSdYRJU*s#kk>_|CGm;i&UFk5&tdYNh_k>ykq|Q8|z#Gdi;+4!}Cx73~T>G5`Ooa z?*8rrC;9~Nk01D{-#5?BHa-LJ@&Tbds>;`y5);n*IrHX4^fw?0Mqc7Df!6D-rVEnB z6nuj~9WEhtp13-dh&L&aWAJak*!dpuQ!mI39^rQ)E6;&qU&AlvwU=6U%1L%%2e@by zc0h7%GH#$qkt9hVZc?GYM64bKI25!O8k;7no@tj81G1HRcCljKU07d?<^+W!dleAB zv}t{nDZGTP%?QFnFF&{wF4Bjw@O_6D(h>JmqxJ<>^bZOSf#q5NJ-+wr;7j`^u1A!hKx)|VTA+TjkX}hUPm-ZOX+OyL!BCjz1M{j97 z^hJJSE0RMKrpr2i0F<$EHpX-8lS;h4M4zuUgcdL3Nvtq|)Q>r|`8)t$2KVsz;T>lH z+z@{I9Vf|rH8d!U`JKmCp8@z4&>#Nx!{eWxzvmNcFW=#dmw>+GX0JCc&e$@@IA%ns z*0tFTg>BySfNIX?OL!(fJa*{HA`zVod2Oehl8aLU7DjF zdxvs`31=~_fAv5e+94^N%2Ah{sO8dOV)h7Ee+R%VN+zW7xC5vLeF^s%CEdPuKu%@2 z%QrsLqVg`WpZgfaqge|%BK4zWCkrc;EUJj{d3mngFAFD>Nug71o)i*a7|j0y}NSHEL?zgjg>xo z!x;eA?7aZm9axP;*M3!6!+gqzEr&7c*SvnM?_5CAPKOo;jZ`mQ{U*#oft@ZK<~uu7 zo3+g-t^W&+9srMAO7sK&A_0RfsiqIHCJD!pbch4Dx^yOdVI_WJ=1U&sx@g2B4G_mg zJhMYkv~<$dr4lbGg-h<$b@Yhvu(We4u~)G21j#3fvJSoN13WYv$Cp;LNBqX^%7*cE z{Ok8UkgI6NNY+EYab&Cp)h2OtK=BTaf_xQc%qcxo=TW?b5v%6Ufk_zYeWSEmzXsD+ zVIl%duSW2%mHyk$k-(d6lpC*9IJ%r?$t#nPWiHTl$C^hvCayS1n@Zo#xQj}Cf`U!v zc{e~Nfw$QI9gm)VPYU>sv&eUU$NuL}|1S0E`aN&j`&EZe0R8$sS9%_P!$7W4J-qpz zY5X3?SzO%w;~CECg;mYfQ3JF`K~HGuRTBd!Ui?Aaq^wPs9Nb;qHCnnl1SaE|4n0cI zO6758vJO>dgIqo9mGQ}YUIMg58PU^pMgwjqOH~#2NJ&>Y(w)EH$=YC7vDiGOP;b6V z!$_H|L;w*FOgijz61dAS4wlAeV^nR%OKNH7&n|69&kOkLK-NTn{y98#&GQNE(1!a% z@N#JXT!%copQXf!&Nz@;tejZL z$o~_I!k4oK*K>;b>W0LA5hY8{n^Rr9^)oQ`04s6RKa{%;FW>mP4sYzb#;-jrZrY(@ zV-*g;@*Z6?QCq)|C*6J757wp74qnMehHdSBJwvcAzBs{QT>$MC9Bo0C8SD11G}=AC zXrQ1Qm&)f*AOHDiEqdD;tej& zCJTA?Cx+E$(jGa|S+Ae;^YU97N9hD|G$)bKSOKRE9=7vQ`BbdScy(M@dJN9cqm%F) zqlZtBx*_dpGn&d!zsFMq5Pe~v>NrDuCSUqH>po!f!EXh9{QHNefAN(+5&6|;03Ub) z=x=!fh+P^#`N%zhH!t6jB=`b2Hg3cV$LStg?kb&(IL3b+??7Fo#8c-mhIddnAwAZ? zRvfzoFScD@gS=yjNjyDGQrd1<9tARl+$pJ80DwS$zYsx|yY5zi0*_(`Qe@eottKr= z*c~3dqfabdlgRVtPz9teXzw*aO(>~Y>IDC{P_4w;(<7VF4DSxrZ!K*yFeyDDbe2gS zAGUevKoR<6d~IwDImu{fxAG;DPJ`jo(wVV1PKq#~OulSxSW;KENkeRiBaF6}XcRg0 z3OvNL002M$NkliNI}YIeM7HqkV2A0RM4x=*Ake3h?6X~?)i1sY zRLLZKKS0)5mA;wq`FrMU!KFgD56&1QrF+A9nT|H}-G4AsabKdCBDZfHl^DLpsC~X5 z>vai{&?83MlnJfm`syQ~!0gAy3N(tBPcs^ueIx;5{-qV3yxJ%3_*`N-_{K1Jk0X%vV4>ynOe}WPQ&K zH-5>!uP^m+pMEoVn9n8a)r0A)t}0=i8JOyOO2^p^ zt&7OM%0W9^2ubMe>NzXWKJ4)9pl<}V)CbQBh^uD;J`rS0yD==@AD{6>hfRINQD+>s(#gT zi^NI#uM3Afk}6hRj-BKJrS1)6=ZrMjCk;HEZOA81+wu)P_KmvLr%Z9`l=i-hM_6aH z;lV+W4&F@iDTB{38DRP6SQIl=PzXHCEyB0Bk;KBMj1P3{nD69!v6g!CARy zz|uEvWjb@U`6L;zy^co+YV(5t$4KKJdu7d1WT|Io5yVJa)TJzWr9$C_$(7xe5L@<| zt*bjfgg2t5Q$pIwtA<<}#f5hLVtH}IMHwDDW3NITYuMK?Pv7E;Ul09(=j-2p$F$&w z*T3p3A-?(y;Qjl*fAjOp$LGi2xJ&)`M&mdG`1F=bKiG;J#)}A9w9-+Uyy%w&nJ5@E z=?tWB1L8PzQj6U?ct?mGW67cLD_?GT23sdwnE=c8aUEV^$p@%y5vUD(8YR}IbSmA$ z4mvhzs1OlnaG6NmoW%0FQJquDc zda2F0rCVXCAmLf3adkKX)$6BY+hKTltgLV?(0@7Bc6XOhh0Cj?b5_#zN@*cs>~Ot^kE z#7(e1{ZoR5W{Fw3(3?D!1$}a1$wp=HvM-Ix>HyRyT40r|Wk$AoTMqb!OUjpzZ)4l9b86k(32EnwCUTwMsb^E@8j>|0o0 zWheC5r;OONS$1QnQKxRqzT|J-&d7X`$G$dxEmSBnuVj&aD;IIfI6+akH}Br^bMgL6 zUr7~dTO|}5e-0cFP<)OtO$jh+H$QE{GiTFP0#=g@9Y8$c3#-xJgo zXxiRVVhaS^3qJlvfMe<-vN-)Dskk`&#v`8$MLNg(1 z9@m-I-ea0gvP@lz1CAf-x>cP-Z)iG$Jx^Uw+_JL!U0EJsrYd$2fG_gcb7* zTkb}NYIWn2?O%*xWvRSw*;r!bwuTf8yZ}#&Mnw`hDyCH4iiC6jS z>j{I&e{u3C-MC@Q;;iB`O5eQU^8gR;z`kc5zI*xQ;fd$&_au;HzvEEH?>aCfci%n# zk*(>=GuIAD{EvS5+dEv~`v1C{Q!wJP$XN55aETu;?3`WRpibKeR*(hjIPf?5hiMX{ z_ykH~%`ot)t1~E%l*$6DP+sayzFgR`g9uW&yz5vEn@#d>HwmbTEiKdM$g6|3K^elV zq-29iKlFJ<$}1e5z&&T_Qcm>HIbbDKR(R|BH(A3dLq+@pFMigQVW${hswQevXJ7Fg zEkG@IA)q~S(EQ%m1o@fsfi+u)AYM% zmxeg7Fs!5w%p17wDui2_@ZUz`BcNX5;ZhF)^XBifkBs^<-LnvMGa356PfD6>r;Rb$ zz`LbqBl9oAe51|F$!uTHD6aZq-?&T zF(l3G73Qm(kn$PlgL7VJpDrlhhV5I*H+>r!#U0?)>wIc%$fFF&iCtp_L5WI%`X_7; zyUaJ4y!k7M4+Ut~Vr_16Zk%|IRp}niW78K;e{$`g1pwlAZ{IyU|JiQ_@;Ldn`ak0B ztIh!KBcQ)Mz2zS8(>r!|d}+}mmx4G^VRm8nVw;J$M@Q(Sj~8a|qE$z<#?b~_R7E+F z?uxxj5$l^45S;|i|2k92r|sCF>3?rK)rU8j!zE0N_i~ghzC7GT?C3C_{Ne<;!#$DfNO^6|db?z5~UJDggQK zW-%2pcW07qIgAu{FxsSf$2O|;$M}W&^4*D%hgLjDpe`!o<{jhQvlqn{oAsr-6{2e{ zWYU|UKho9=Ax<8{(?9_K;$!W=?Due#z?$^7 z-Tj+*VQqt8Oy$GQuFESc87q@v!jMjWWl@!0(!Ocbct|6Fx@8+2>1C5g42{Kz#*w2C zLY|NIL3Cg6zd8qvbOjftXmcD6bYEU;*>(geaeoL+`h7w;dZiwEZ^_9AXW-vIqi)2%(cLT@aZQJbbjk;+0LC zViRw3W!5^g>VAr;N@#vuQgqAGG&jI<^rQq z-NXkCacRO+Z)mFASTRu2!i-Q|6X(@$1w+lHk^AL);#KI4VZ|q#?6K#ol|9SU*H3)nm6t1t(TOH!*+bTX0J;+*_i zWK30S**LKTi8<}!wb568aX+9(425x{S6GXIZDzNNgFdwTzooiU1`P{^M~eXX6ki+~ z)tSM<#LJ70?AHfC*IOYxliSTN6zfR4(P0#-^Qm*2>chutAn=HtTTul z<^>n}uC9` zDMJ{Qf(C8L2e<31Q=9LDOWmP?&u4Nu(6+A0nOvX5_JYF7LYD>MIgVF+kkA0XpTt~83-|!Hz^wn zci2t-M8bI#Wz`ALJeyZgE07oVXS)U<^L7}xedV=LTkL#FN1fgqm8=Mhgx}s3KWhBH zzGHB^e0_k*dj&49vUSSOB_5>pGO4E@TF(qU)wYk=AfeOG7d$`wO4jwsq9?xj({loT zm@fIA#btVvojUFn7vxylZ#y+NG}NIpEGBEu1PoxibW3PW?(XJ$=`XN$_wscn0E|)@ z!>#0f{FIJuj}|0LXpPkd9*)7hMOP=~6z>~#^i)#FV#~4BxV_ygzZn1V^RQB`)}kU~ zyy&McrcImrPG8@?^h|EN=s~Eo_L?I0;@y7`sH;@3guEa65!?3VvHEBGgeap8R7CSb z|IYtwtj4Qs7oq9s@^J=$RX4(#lax1B>UD(gi|m|_=!E>UUm(ZMxWzWcfbp=8q_dB_ zY&-eWd*fvvEN>sj5mZ0YwNHbPfrh2WnqgS>vd2@&Un$R2u z;$W0kZj--P{-=)^yP83BZ!EW)Yl~>wH$Gmc7y_nb4eYU?QC2Oq;(OnQ^Kz- znYJhpJLnCtp^UD&afjBM$Q0=mAC5M%WK)i?2=w&gg^9OB_)Rv_tIMMWoVc`L2@rSC z%|}2>Hp(%I9EVr<#^147MHysY7@0%`b1XRyvr`+DbA;)gV>w(f>Xte@BB||yq`KHR zhjpwZdF&WgIrgVVk}W< zAQf=mI1Ic4(@+GdGMr5G$MC}K1>4G?*)GfpSlzZtzL0hK1;Z!49RhN!%Qvyp*E?@c ztafY~eU4;D3_u$7CP#l5G?J#nOAdA?FX^S#f2+LZKRC;Py^YZGguD9?lD{%(x8x*M zpJ-Vel_+eJQ(rVdeno4OFxiW-bjnDM@ab~rt)y$Ob$Q!)pSm)XYwVI0e4VBaX_f8F z$_MCuZvX1nS24v5eV+YH=X6V_{A_{GOE$iGwqHNkS@`8}e$>ln|NR`mGr#%ecLu%n zlfl5>ed4hQ>ADo;GQ-(`cLazR=LAUiX0b*Z1N36P-gpdZMO}EP9{?L8W((~#Y5TIx z35h%V`)Od*_lT&Mg1Y?k8~iQ=ygC!G4qs;j=uJKgh|l%=$`*H*;%Xm@9HYW$x;PXw zBF0U`L9x~nt#;sb!Pzo*Z=tD`KQ0(gOH!za=P-4 zYq4($sGGpXi8dF%W1CLpjvY$f;NQcJm3k05R9ZkmiLik&(oTkUr%=o8;FD+kk|37} z(xs=M5+z!dM3yF{2F8ezo(>U6eLAmvxei{fBkX5cFIY+PhL{$gqJ@Yu<~aVWj6Be;50wowlq#4ZTB#Cwev$PICkM1 z#1KHYvjrzyKo{(n|lXd26AC|;bW6z)<`6O!&TB2>dYD>$QFpfqXdDE>g3hn+$Nsz1RFd z@Ba0b16s@1aZ6CvNAkmK|A9Y|)7rxa-1syY)|bXnq&BKjTo_qs7-_$X=Tv~v8va^qR zV~J2`^-N(O z)yF!;sgIYr_f8mrO0T5e#UO~auZf|NG75pw)cQ>6sV>5|3(6m5JF{nvi6#=A2JRx( zbN?ntsEVEXz_;58xES4usI5`5%kOC*7K7|MPB=bf`;9iwML-JHIzr;sV;(`V}RLvRKunW?g7n~0Rek?+cc%_evgzwH(XcmA;7#o*1^>EEY; zi0Bf1y!NAhA|JU1X5&^(Yqu!SFx0uHZ0ge5J(l+GO$hQS!+8+B@{z6ehdfyj>@h@X zC0CxM0;oF{ia&IYX@z->o95)$KaxrdJlViJl+`1SAjQ`Oqn_>7;gPNdh_*I67Nu`Y zQ*pEM8uujI4)|(k{OJc{9Ff%x<)bf)W>yD_V51y{C9pB>~}8!ehBQZ{_4-1ReyN;_37oAQ*yqhh08yFRU_u(C-Ko)!b8!Z zUbOP_CM&4)0lK@cLoBnLvdip2!ywrw!HL=eLpy@{fEM~6@Qs8Ct6aDGWSa~w4s*>~)rE>4+(eZH*z0w&y)8xJ^RD4k_6w5Za& z-z2s#j%If)r5$ucxF=zk2CN{km*lmn4K~FNSofMx_F1cePR7(6&2_ zP@%$<#fQW`{ha+zTrPd)zJQmB{F-RXUwS0ev4%~`Q*ge)n=G5?#kXC)Ax*>eQoD&KkQ}vx@SP!dc4ZE4op4vt91&yaX1QlM;;I5MRD-PNtnJHw33NH7+fH1 zFZS|rC`Sd9ZKeoQGG)24K^tDlu3lqO(pSw9;`~*dhqN~IVQ8)1p{(e{Q)}TADMFnQ z0GAE{SFUY)#Y-?9_;qn!O6h>8GaDL>yTH&H6L679qx9P9v9dE`=bm(*Wqq#av(yLg zr5)wa&69UbSceW)KZ3s-CRu$+s_*h^K{}6O`)6bB#OyGn_BsH~7hyoo?Gc1LzVS&@ ze<}5u{mnD`oTtC|i-$M=_MfL3&HuRLcP{{{dHeR~H~+u`sjOIR0=WG1@M76Qhs}22 z;$I+W=zLKdVu?j(7cynu4%lP{&c8zBYbO+`ZK*d98p{A2TZP^_5j`ZY!L(AmLA2|M zUW<`UZ0m#~j|-r0b%rD3Y;lr?yY8}--)f^tlBHl#JM z>z9eZ>-wHqK9JlWxU}<@r+e1f8pPoWLg%{>bcu*3gMNWlx}QIN2g-W{=ug&IrcYnz z?{@d-GO2Q@hfg_@{AqUy2-vUG+xg=SJbpcd$>lB*dU>z+t3mex6-)i^{t*0G%-iYG z`d6qik!Sq`pWa`7;&$ahu)47{obnlW8p;ez>7m?hRt`WKV2u&+1s}VCj=mxx*$22p zjL<8=!P(f5-+`)3i9662Ep7g%Z7~qN0msihG2K{|_zH+U1Yb_)*(IW2Kz8WlqCHrlE+D=QYlnFhkoCx-24n#) zc6E+C?v^)b?Jy2zM-wCgKpfaG%4?WwhO;fl-b?l+7TWZZB)(}@^@JxOpz_wi!zTq; z@?&IR;EMx1;4G$YbMhH-8xSf`kMvZV?D__sldk={JPMCgVhOcDm*+$7T;0GnxIW`; zYq$37^n1EuLEaK8G|JvJ0#GvOx9?5~YhNB;V(cTVMTs{1Wo*XM-(nU<4o!bKTHDdF zN8Ox!>X|)iF$R7fLI3Xr6X-XH`u+dj0CveFC&PqX`RzXf=)&!$CeplI=@-xFxuEygC8J?@D(cm5=J6TS(a69~SR(FK9JNrU#z4B)Z< zpdC?U7Ti&wCj_^smGV%BB264oU(25 zx@ROttW6*#SdP#3LD^LYX@^tJ#%%LVY7q8GW>Ic_5WC_qyHs1hQyO3G$zS2G;~Fnf zjW2#g;+bnLel6DH_k0@o&&d5f$M0GIQ2yp$|7*?w{`%)Pk01D{%9oFPm5bM-UYyVP zt@ZfeDocrxy-sLo0M!!;2fUSHq2qGcfWyIH?Fs>NI))MzCfLZK?>Sz2wAcYo)M1sz z_7b~NZg9w#4e&If zRMATf%Hb`6ga_K`1}J^_)!TU`2spQ!$4NffG_# ziw{D(4{%~6{oUPcftqJ$%A~<3l^hCP!qMW_K2dJD#COp5gEeS$W#+A&=B1TE+Dc z#jA}VaYEkA9r5BIP;SRU|LPNjG%AhaVi(HM~7m8GGS#&2}WghVkQ zw%FD!C$CIPb8F(G!HxKQ+u1of6n$hXO_8x2K8@I==K)e#glHc-<#G|vUf#4*K|W2z zFiM_dUvj0SBX-^-#t87PX%1ga^EZ~fZS(kNejNVcFQY+#68`@mziR8IChP`oVlYwLix;In+UJgc5yHb+7b2WW zlM9?`oD72X|6a(4ID#C-Pmt|acnNmYH-&iuXQ_QJ2NfV zwN+S8->MtQ0Mw!gOT)25KA((h3(gT~r^xXUxW7hZ9Qrap@SYi}`y*!`zi}Vnmrw2g zcRzqfLjB5V#5Y=9@Z6!f({eYjon7B|chAoMxx~+wi$x$fKU7wthpw-6rtIuMH?32y zE3qdS_EQ>fKSV~Aw&MX-UH%fwlXEDfs|JCrG_8H+EI@B@K1?)hWus z;uzVP=xl4;K*vAFi8G~_Wm<%Q4ky+=rwzdSFxu=rA!CB*>_`_pCfMeRVqGoNubs!1 zHUaQ7H;`4C1{u(i{;?_Bm?a~G1SuQ{3ze&{8&C9)`k>Kf%p+?W|JhG-bwnu6L;Wg{ z|Fs@w1nPIx6@ThduOCkwAk$xCBF-b5Db;NM_%DC?jdC~CY3s{boSm0_>#u65!{qnm zBKZ@y{N6lMe`a4M>*GIsczE-_@pTaF$^X&E?_L1Z^!)rIH-YVXul;wyhp*Kqr5R!V z3w2IG?2ZnIgH(`yc}Qi))JX;I@PQc(^m=JP;5D$xD#D}*HAz?x!fR3}U>R{b!r37m zC3Z+orGM+^p~f_7rX8WR*+tpz!ll;{2vy=imiXd=7GRcROmLYIGOwwh!xdlo$q<$< z?WPWoUOO>Y^L=(S7$KStfE>{QTRdl9l3_}I^b$^<@As5>1UJUhqf8GIcQJLs9!vA1 zml*A5!n4Wg-mtVUk2bgjRZbWX%AC|l&`qu&kGr!B!xmGf*+ z$|VI7I&j-Q?NeXS_6*>KOF-xdPe$uSoEZF8Zeyu?8#PYG3^`e<*?YllE!zIY2q z;9vRj`O;BJDUovWU(Uh%K%PR>Cyjbk6fI5R@}EPyof#!JrNDa=Q-c^j$ABU|#*Z%K zczB=0x#Qi*qb|M2$`Kvg)a-v75lRzg2~nGdf?n$YAkVsLv`4)*97E2DVg^uqKQAid zfaHuj7%)n_jCW{??+`2rjqbk)v;l3t@b+b_?!s`%BGoRAZK#@s`PJr50wnB1Vdgsk zD9qQRM^L(y6Fr6H(cOrWk*zi3%4as*c`Neqhkv*n>iNeVU$p?JilmB}ECM|JgKLZ- z4g)6=XN~J?Xt77FP!8S>-y*1lB8BcrlC0JB z@QzQQ@kG9MruD#RE7t*^aNl)PfF*K=o6Yem2nR~AO){V+nWIeqmFfG{H+z)_(8Ce} zd9>XD+s?|sh*Bxl6$c*=5EnNQ+UMZ%kJ5>8t+1vfM8A^Ktli=YuXsn*U8J%lc_dRA zqo71?*CvVe#wDuJss0j92}SD3yf(`&OxjMr#plC~DW}B8(ItN9bq}KPS>HnQQM>d{ zyU_QRYyCVVk%`+u>zpX>3A}swmCHbXe)%&OPk+XLza9cV%?7%K-R}HZA6^svGl~EC z7Z(9u)=mC>&T&L_3#Venqv0urXG}cpYU(v`z?9eXwJ$Y(D z(Fq8&7pN_c=~Aad?;aPMKk|n=G1eZ8)*k1Qs>N&SwLSaMWf_cmw%7)!nfmRaeRpBE z-C2?H#8GC8zED%2<=({rr@5pJCPNNZyEIbrb13ub4FrDQ$D=N!9dfTczWQ|Z3UDkn zE*1KPTkQL4^ZsW$KJL~#^-KTtA0do6vkwWUAfH(lui zX?esDZjgsgTRM|c1h;^h?p_9Z{OHroQ2pNHs}_JKE{wkU_2c8OJekDqf)8A_$6yh_ zG(GWc|I|;Qh2qSA6BeUVAm(rmU4B6!9erNA9Y6g{Bvcb)on`Rb<%^T;yx-cW=|t#6 zwcA`T(`mx73ghIxi$~}HbhXKqF5fO%sdS3^;TWCPC_@Zy@hK1ZX{P7mCF5wY=#Kgt^TUWoamhv9fv}NZ(X^X}#v(*khFhtm+%XflZ z{eY%34sXTgb(e+igeV9Q8kb^enQjHTc+tSX==F`D6?quehts`&nQbmW#{Q!L)-lR0 z_f}W;6T->wOpqWk!#;A__0jtPZ{9!r>C>P1BK4nH1iHHcDL1Im*%LnO_Mb@bCjNIn zv*Wbg?%%V3^+jh0-UC3iFK1zQw<$A8Uv&DlFQLoR!*2t$vD6K*bA^(2V*#l6o6N+o zza}djI_zh8mWv=#lmBHE<$fM}Eh-RacNRgX;A6M_pbn)NWB;vh0i&iO3geBGaK5?Y zwbdd`JfvISZcJpidagjrT9zj9*`IjmvH_Snro}OW9&nQa{D?bNB(d=WVdH|7!X97splr}p@uEcE)l+Viq zyu5=R^he+pj$M!~7!Fd=al7 z8$C;3vBc&k1IFLrESR=8KweM7LG&Cxj3uy={plS1yPaZ?9Bd6T>&AsQn77W3(j!#iQ?!>qqDW4<_{$soJ(a=7o z&5qm4+K%Yivx#Mdgla?PO5x-V>N^NTxlxc7}7PdeDDF~8|RyJY!Y2WS)VP1QU z-^)$?5*RYvW^~hEdU2F~D9jlDMuzhej~7UlXY?qr=g}{Yc=(y0toYl9Kj7ETkaM|6 zwPYa|RB!rv>8Hy+OsKc+{C{RL1MkMKrR$5d#IXML5>UQbqDO(W)w%DZr;fXsN9^Qj zOaUu=Gdp^DjEC{E@2#ank@d3}rSG_My{u^83lFCZWL-*Ocd?KM(RFk33l4t4dAc6n zjXe9|&aK2LvN52Y8)qua#saAxiPW4WO0AF95`$kyM)rXaml-)kT>x_IXXli*sYB5l zcZLHE(CK;$r4?TFjj#d$4R-05v91qnj5N41OUMIfOM0M_R2^x~sKv>4XCDwAw&*tR zW`l^E#9IsqrZGuh7R)YfZ`%y4xi1a6G9Lp}+gU1f>T>pJGH-L0Gk~{Wk;T7)^>|T% z$$k+#z0_%;4iKTayLW8HbVtb?&x3X8V7#|u(KF$c1*IVA`zi(5ED~OtUEa)Idyf6Xc;Kv$$@=Hz#NI7^CA`3EuczJ}r?B;SOvkgH{-KHCk3x6$tw! z>!CC88*ly582iBlc^}C$3D{@SxAU_^m)`=kg@$_rc9t&;_~^HU{(r3f%dTz9mfrWR zwfDK^g-kL{3Z(3sLBnFf1(giAV8C_P^d7FbEWU%^LVgRwuu3e7fCX8yCDRGslFU43 z-}hR}|KHd8nCnQj+&lZ6V?;!Yc8?Y@^vJr6#QBW833zx<+xa${m-C~q``%tUJ!G+b&hB2_ zJZ>yeoc_kYfl0S)!)6B6U)zn>DXr)a7jqHb;$rnW{g1E;%qyxpYEWdlT|8m6GvOGG z57sv+A@&zd?WuC4>z>-Rb;m9_1Zf`b-og1AylyXZ6ko5^)AbfYko=K;%YUK0{LhG8 z=3*Ce)T_pOcu|5Uz@xKl)bE&XmF8J0HN=4Ed)Wu!y?iElr70q|AOUw-*7-+%d` zAMSJiH!E}GE$-rABf~8>L0Lvywl4THa;rsfFgAOclQZ=J^4kV7^I!Di6;%5iedE4_ z6wCx7NuuCW#|AgSG;&Dga&;IG|_ASX=n z+a;catUoXl>9-_U>k>zR{>3^2V?BQ?83f!tf%WzFKha^kl7UZWzB`-p;Ose>__LAx zIkDpN!ZPUkcG``}6WCK`N)t`7{u{7A+zq{UcWi{>;1_IOoQ*H(aE$j0@vRymjGZ08 zo1O6br_Q7Mhitkq3wwQTB6oGagueun-!0nr1#x!!Eew5N{j2wX{O&J5{)2o2R-$jG zFWLXlUpT~8?0wu5|h(>LA17kli(Y5svb+F;>3#tAHjON4Z+ zkDt*T&heN%!7rhW_>KN(Ndk`$1Cm#uH;$E4{7T8v+I*LHj&}3)MIH@bZ(hgYQF(k{ zc*I%s=SNbA#J4{LlOcB>KaQe18RUdYJ z!6sO#8K3d0F|2tS?YMK{!E5_u=$%sLS{W%Nw=){^-U8i@5~nd>XguPj`RI)E##L0; zhllIcvpKw7?%I9wRuZ~N(r zzx?7KbV2C*AisF`o09x*zJB-ax4*CaU5h|_xSZj{*7OFWYjqS zU7vn%{@eJXsey(KpyOmr&Jf~W+<=Eq~43xv*|H{y+!nE1>FGDwY+O5zL6M3PPlOL z?tA0+)dJyir}sD?dw<@)fmtU6{+&ie_ElG@50C*LAgAac2o;^j4 zp#XLKL4SBVdqCUY!XmwPPp0xUH^jp>JK^uUln8`RMnrqGqb^F~Rv5 z(It4YgV7;gXmNEYccVO@ICSiq_EirzBtC@vS|><`j@S9P?lIK^wZ`;|Hl!ulcswX$ z1U?4vW9ESg2roT|q%(#n$9eVOPn*oC7JSJb9L{7{sefbr%0)&6SfOZox?#lflj#}^bOun z@tkfAeO0)UJri~cmjNV6=?t)AZM7u~k zi*8p19swPm1(j63n@JR=#18HsYRC_-_#sb$^G|gm1o6$XCOg|Z7I1h)aF-w;KY^^u zq6ACEc)IVh`#BS^uHImwztNCnOx#IN@Zcj(&)JIaqYqm;fW4U{hdSYB=8NV~hXXf^ zB{Y?blPS1~EpmQL*AE4YzVF*k{kjYKzxwd6-o5XV&wu^v|Mk27S5N!=*#ggQjQ$B=oU46q7S^|5^ntu94-Vi>vYdA!D`YK!k!>+%}mPkj4X3&5AZ|D*RmcK+-MiPXy@ zj65SQQDySulwrJ7eT}dPgh|2^9te}k~yxj{+}kKe$+@6RA9GgLVv(7cokMrCcZPb>~LUACA( z4k^Sq93SueFmP|_q7K0i)ywZlMEzYxNDt!IS4RP*y&HmboR8{%(+x7+$8ztlAYPDR zU+4P6o3HSTk649sNd;;Bd<8ok#inO*KXtT>q7ad|4oaZwE%qhldnJh>c@VajMSa0 zWawKE-eBnZoP^f8fM}%Lyn_BoGUGJCYC?_S1<85Fdmeh6F$9QFdk3Gxc`Nw&IVLq< zbR3#Lhj$7fJWTJa!iE&qf=9K{!{f&NrsD9CyejL27iB;JE$F5W4Yk)BO*Y?IOu-Yu zb~8rz?NG0S?nTJ_G8WP0+y(S-Cv8gHVtakZCVA-dg@nB1eahVgsgBRtB#3EuVauQL z?R^+2Ci5ZT_8EZL4-e>LYez7FuXaD9is;^f!&Kl140N=#3}9;^0PI{>eB`9 zx{ZNZ`jQED12e5wwSa8ijTZbCeeB7b?SbKN(%ZuH^x-MClJeO{S_vKB>TH$Z{A@ubmX>--n$e23?lt_ir~*WbPS^wl4~T7R?hrQ6?(>JPBH9MJES z^{`_WK=?uPD82imh^JcEJ*fZW7M?-= z(_@Pr2ql8=5>2&zykqCNbUho4!4{0+dV9%52WxNHncS+c1aL;_@0il#9(Ik5jVYjo z?)Z)#{+hQSjJOUgw$Kj$YbMOeeUA6kS@#p~AsIXV zm5k4Z@RN6EwKgYXhiV5s2a0z4(CFqD0w3HZ)S4oBaZ!o=?uQI1MED*2B9?ZkY>=1T z7gx|<JcUVpaK?XP)$(3Q-H+Kv zddT~!$Io5>2>y^7xrmy z>|cmo7w#6NmFcl->_zq#Ky>tEJ7TPohv)H6Pd4^P%oeNkJ0CttJ)SqwlF`hcm!HWM z#|xy|dQL%N=HWFbft_&$IMQ&dOm9r+RZHJ)=+zR~x0vdSU!8LWd>W#E>^KI;6RV+Y zJkiygVY_+G+2g~r&m?%pZgkZVOFHvkP1onip%<$*anTyL%3aQhT|ZXc1PtCIpYQ*= z=Ysy<-@kkRA4=`t{rB%a{nh{D-Jky5|Lwbf^2>kt?jPiX{}AP0#q+Cl`KG!LS@y$| z`&D6=k9sP!CyVYZfh`sYuPp)q{8&R`1*Eo^)a3xSm<+G-wSRzM^21vki3J;w7#wZL z!vXKrf!FZWdu@s=h7PWC{qwQJGpqxyj;=p?^tT0#!uVBed@47mz+$#2+Yr^@=j!m5 zu)|@&Vng>M1Ha*7J-*%sO-^HSz|$2yh_Q|LcugKT!O6phU&aRR@g3Uu9uM@C+YB7h z2!m1N$sv!9uTM+gqHwlyg2e|49kJttEhwvlPsHGG{NH>Kmyr1Egqy>Tjq)i!-XI9Q zzs;)$cl;k8Z5&Dg`I-u2gWpd*e)a66=RnYoMM!XVSrc#f*#F|_TV({(%9G<^m9 z#)e0lB)5wmBm@)uF-gSr&#|waD*m^C40VX}1;@v00rjRt-FQ*W$Y?a6yNL&9oSz%b zT6l~gK9hS%Ea|_UTJi1U~WXA{fTwZhaxQy}{liQ8@KK_@D z=nk3g)2;Fuw$aXK0r10X6SuekKdtJh=1H&3HqL;529FLuuvc91rA0u}d7UwM$_b4> zli5=){OkMsJ-yOh;CJu-D!{+(dw~93Dcg4b!&mR#fA`ftga3d%bpOhbuuWIo1K^ z;zA+LwT~vW*-$a~`~?9IZ^PxstRA>p6?D_#Dfwk;B@bwc^{H>y84UjX1cM&Eu*d8* zR)f?HzC>xrpd;U#HmtO(#M>C@@=ni-w>3vJU3;7UV;q4`BLz&|v27wf6gBy-KBjicXR6p%mp z_{j^v?|%1RfBLgO`?FLiv{I-K)s%j!+n_EBT*BjU2He1VZ%6~)q*b0L12|&!@uK?TdAc)7tG8V`8wY|Zcih{;* zn!U>S*JrricJuhe18)&e+JZX7Nq((@n7#a=?;QB(I^|~v8VPU7;*q~(OhOm!7bx_@ zuJ`$~5#b-UT(V5V$>*0llXykgbUM>waACK}H$T@qPza;vdm~9-vTlU=n$3YbYNYH= zZKu`g1yk+Dn7}7G=$?H@?-h6apv*thutpT%z+{z8*{DsH#J@)wtDnvBl3^#mdj`Sm_$7Ub!<@`TJ6ovwxdhjamQT@`17Nox&;ZWCs_q!9w^v*$kM6;b z4;p8whU$nSC~Iuj7~oSd-(VmvlOd#GH&J^Pj;XiqI$3X=V!H>lX%saE<+80jMaN1WwBdb z`L<_*kU|rUX?PZilf35orZZV&hn(t@hvc<$KNDUuZ?Qq=;Kv!k|JB*&Fcui`;hAqd z#dP2*v-?CEmQTMZ<3|3euO|8Qb=Nfi@m~xbtH06llNW%Olzxz}AG|KDv?%RC(5V&h z#*>@pps81Dk3+tUMmr3X{TXUjJAz-h6h(Q8!yOB$S)k&j2Vw0usGz)w*VSQ= z?dor#Vxt<}>d==C7W_GFN`x_4J^_nwhvGq*fTH9q4vzQqVN;r{UjLIcW(Ni>DDe2= z(cmuA#FrS0$k~B6K4<^*G!FIOv2YIQV4H|B&^`L(-mh~d#n=Q#vAhupy0eeocs}iL z$&&1W;ai}cZi8z(Lz#Jbzt5*V{y9bb;QWt$0_=x>TXz4uG5FQH zPkp-&VhLXzb_a!aq;Jf{!pmmd#3G+AcA|CvVwSa@XNl>YDnb9es;$197q1iySWiKoQcG!0P@ht&{J@J2uwuDXlDRA|15St_4wHf zfSbT+*0(8C_(FGcITabfhF9XA@+{FYXR}WlXfjUw-q%+Ve1l^!8l-WOF-*8oKP;Hq8;9IMlpDfzEd-if%l|fe1n**OH$efsnY1d)J_C>Rac_Fe~e3< zuPqZjbHaiNLVO@@Wv|>$*dW7;sq33>Gdx_)1dPl=wsZGIGvB%qE&&IQt;tFDoQ@X@ zg6-y9GB)|iIaR0oF-8)ctf^;Ap0No|SFG*y>F|r9-w)lq1%8CEU)!nOC>}2y5t5lc zlQB=?*rJtgnPdSW1MJ0T+Pv|-iE@)9J{e%*&}n>n7iT*YP{xOgJoEXfEdAcKo38_W z^_1UL?_$0?XzzV{Xx|X}?#KVoM&>Uo|F|)DrbWfC`trDb?rxVxew|GB62AA!csu_- zPO!6q*F6De1`_}4NusJ4#FQJDroJCqd{o8n~e0&xhURrw#-|Wc) z>9ScAj8DLJga#3wlQcd;TXDPv&Fb|<1pTeQ`V!(0=zMV?c*GCv$%Yr3EesZPectd} z5l8ZoI8<)n1|N*%2Z2gUmIF1;@nN%ABXi{9ri$tKS`2rsJs3NO}n=d6yFB>)`sr*@DIq<}jOy)jcM~?PI$!+B^bh6N4a`rx6)z zv^ESFC~P)+KORp#L{ypoMN!#ozZEsSpLYDL1>o;|_~oZ>KYrg+K$-N(H>PZjYyOwc z=?2zAvPX_rnTu3Lzw z+a(*)K{zDFH@4Z5zmG{u{;uJCQ~7Pabq%Lz-A%@5-}m*_b<^$-2J z_7{Jdj_#<~Z+3K!{fjUA$t8G@wgndX%(%4uJ%>-F0AcKkGV^Eu?j=c6;6iGe_N z@W@wF--I=o90^XJ5!BA%#ybs;hkD>$-UD`2j#OKB{m`75PRFMWHPZ%rL=7L=m_K@p z1$y1PSUH`w$rS@9XOuO<3Efn=1MTNS-*^lx79)?8E+^*B-gdozWJ#Yc5cfa+rVU;W z^ef3G7rYmqs+T7;YE>9BaLS*3!RlN5PZ{^BLfSu?Y!3Il9$lxB5`H#*{Ic&oFX}&T zk5hpC7T=$6{Hz6lybr(lMZdY!&whJa?!E!8c%At(e9oxd51Gv{&R{U-zQ*bXA*(y; zos-VF2KwlhNVjYbZBE{0fylN~$-7H_F*6vuo=VO}I+_%`o6$E2tLvj1+Vgb01X@S5 z67BzJQIXgl-6_CI$bxZ~hU$-91APmVzAX$XCYi7EWe@7%Rnp<9zn(%O>U1Dt;XZ91 z?*N{kqFwTb?^Se+l)P#Wn`p0IR0d|Ruo}VDf#>S`e*cIM6_*=~YPdWTkxJq7yRhhhpA;=u*&!-zDRZGOSP6P}5tl zFM5FV*YAJ1>LmQC|$igR?&i-)Jsa9^Nl{b3fa{AoF-%?Q=VL4SF2k z#wmRV8|X8psg4(JL)Vpk%PUm@#hO08J52En2WpV|?a-Gts&6cYIq~C%)wsl)pYfMp zFcGKK-uy|{VB;AcG{%sLK3kkY7&G~5x=Q{;e`v$aJxh==`iaNSS^z%&`1>xG{)S&| zaN2luHz4I2xU}^?b5pG*Z)HgHZ64IM-2v-nC@lDQ+_2YyHjf*CIR=yADY3lva>#fC zUZR4}i-#E>g7VpT2fTp^eFKGfBI>s|!OFkUD=GOoiPwxZJeQ~z8~~C@FoV|H4dOCZ z+?e(Xi1@8JeVSx+soUGt4|X#Quosu^58`8WOow0hi$Bqai|jl)Z14n3x9Bf+^r!D^ z7~51ln*+xtz3Ge;%_D~wr`yAmi84~Cz1R(18UKLP-`Py|+6T~MeBs5HHV-R8msH8R zo4JVnr+ac<3xqRYerFFkHJhC=FPDE>@()+T# z^orZt#b=*!I`rN}hjHl-?%-oQ-B!ycevERxk)KXFNASq3Uvr7((GRW#!y*b94>7|Q z?8Jztsor7)14QT!CHqG8nHGM|(l6fl2gZ*2_6h&Pj!y_28_)CCaW$7tzWE;wVtC_v z`mn?JI7qupb0wb*6-o7r%VSEULpHI%JMdrndj@losFqB;Z!w4yTc=#WhNh;qdaqwo z^^byjR{19!KY0Q8-~XF`@ag~gkH7o$@wXp7e);hieIw9qc2e9p7GE+#wY6x*A-(d% z%Yn*`E9boGs+^v8*00j8mi>a3YYfV(eu_g{R*_$Uz z?(Y_uITen@?VL3B?k6C6of(ZsluP!H4hy(P?*-VSC`)$?&lpLr5C1y&845jou+G`h z*>+<>%BI1?d-Sj)bG&YD<3rY@tuy+aHEgt|zsp)@{EaK#ByS<9Mza6i_-1qeJ%o0f zjIyquYqaz4;(Yf2YFEDd-p$@%y_WB3aG@GqDf>fD`u8nx?>iIt^r=TfKXk>v9shoc zJ2GQ71<3Cn!596u0QK1-R?Nm9(?Q~QCP0+QWu1vj{Uz|m|3~AQ@)G^d5}1NkfAwGH zzxCDT10e$*`uJ(1=U*x*smHG#6?9q1NJvJ=yfATT>W+Hjiy?XlV&Z`uJlrMW9KN_F z3-N=G2z+$OH3ZIped-!dXmH38o_AE~e{)W+shM88&aDjB*%X{NUN!mn-tawJgKX^a zjt!D+7Qo@pA5Y&*rB{7_7~|cuOn!FOgJ!A(9=&ed`F8y!Ds0hnF?MS=PEe*Ni}Uw`a6)Ta+$nnnA?RIw*DW?_-Rs2RYRRNEx3 zYpnpEoqrCv_bkm(Z^?~GS;jF-x^sN}1&$zG!h1OoDnUH)#{ZI4kOS7a9b~11y+B5@ z0Dg#)v3nGgd31AbZ-RA?tF6xn)*tNTGXHEgB)doBETS2;{$Q`b*aarG&^?;*p-0DX z0cuMy%E8GQ93Q|77=A-!Lcql}Efy6IMJ;xN>kVm1;ba?+vBM@Aa^n_3*g763p)CF3 zyz$uX|KXWw6O2FqOz-H>Gq1|*)YgAm+)`5S+P70fb95x-yy(K8?YH2mHUrg{lfN#&H%pnP2KJF`%J*656R!f z;qVvJzaH%`{5UHw81F~4_;$VAXAmU+sgXE(>AhZ8#! zYW%m8ho8#)d3_;NX)0`N@iKSlVBV=qwu=j>h#cr^;62%aEU4oPC*Rn3?0~EK(29R@ zmdK)C7@3PhY1|&vxSj4B@3R#@{alX^B09i5%HYA)McFF;7Jkva=G}|Wo4!*Hm$P*` zB;=Cuael#0{^8;?$tNmZZVvJF@WF#EAFVW}gVcHaPTp(}cfSJ?-Vg%vjlRu+h+b{u zW6WNgH9Y;(CGg($ZLx`NI`G=LqWwj`P|^1s*7fm^{^Z@K|723kqy^w5;>REV z>eClL_O$dDpW48*8ojUV8p7OlR&&`-zvi$F=tKQdHKR?M``+?%>Mr5DcIHeMy?>B^ zct{}Nxu7j#lE1+VbVoRX$eF?$erE_2HcBfPi`e@SsN zf&uOz(4ZRJG^(y^KB(=q_O%0Acm;bcL>F$D;1LzUJB|Zm-Y!ScqyE>T;WT}dF#Lm8 z;WPG_Ud~n;mE|z)brMiK;ic?_$?0{tWX@k)!jH;fhf1xEo$*x8*Yyql=(fc=0MaG$ zbXXD}EiJ0}58uLMj9qG3vdRZ^yG7`p5~ABk+Y*m=$-G~pi>|gUx8yGC_UiMA_o%1c zzw0kbFL6X*)iBPkTSe;YV_q!+@0CCH8Q}N*FhFUpue%+7KYiVU*Hy`6Xz(vv1UxlF zM5p6RygM66f8Tj;hU#;fX6mW;l3=Ks>KhT4chH%TV#nD*UDFZHF8`$asedH|JZDaC zd0>eOuqz%K!>0QTVdTk_}}+mGbB0Jb^g)T}nA87=rE6IEAf>x+6g_@EL=pA%8*D!Le3dAB+@pg^eLZAv6)yQ85BmPdz*Llsmy*%7bl zWTzFEUKeCl;H*IP1X(q9n24ABf=?$H^s7uidREOXe`q;*=Zo>Jf65n4yWjHAjj*># zq$5Cdn=mPOJ8iJDhnj3KelJZgz#-7@Jb$}bx&?a;1`0-3nmp(+w!qFu*R{TN=5H39 z`|3>aYj-q0%Xp0=h189I+v|O(%fg_(oquo{*4F!ZjmAPTeWrS5r&Uh<^dV;bOyqm_ z0^AVpCh)tDJs$c+d-iU-*-gv-?_G~sAV(9Q4NW@#vV}l&>AHm9IR(_jd%0uh@{bs} zUB9KphsoxREfmJpWgPu?3Bsa~`0)6kuGRTce7xY2+4}0oO>z&k7f_J!(etZC2?y|W z!zdV+%$8s}C7#!85p(LVq-5^kDUQjF>zJW`4ZHE5zjf77ad_NcUCiC4PY-)fkNZvO z_(nqq38nv-@pXKTc>3}+`52PzhkBHb&9$d)oGivj>5V8>Lmofc`45k-vzPwkGwbHd zSMm?MPPRJmoxI1&`<;d3X>2ZDjvrhEpFufCcJd4m~4$@yp|Z2ZXF&MF1=jJ{|r@Rnd7?8zo;MxiBC z=i{3i0v*jz^j8O2wbsslK%(2_wfRY0FGRC>B(aPKajA+rAm=y^-zJB?|y?|Db_n$fg_z;6H z`Z~DI1U|VT+-C*c57>f{wr|Fbhh}!zzw3(a)`?09en~&5(v4z?YKecb5iXpRS<;Ib zE%ml5t~44`xjr7;rJ;NZpB{!6E*Hb4(voMT#{Bw5d-{ou+jSf5VCf}Up|zfqx3kk^ z5F^=+5}y$`OUV}e4a#&u9Bu85VLIwcr45<*gTMy(3kx9l=rdr8OL)T#bc=t0`k}yq zI~kSh2cAyrj_+d=d0v!%)su~l*MO9`+GI~|Z|;GhJF<)Nb5wmVn&I%lV-rT}I~`R& zUrNI1Y<}gh+`O^-Lw)#W3u}FJ!5LnBRY|gZ38TIG-HMOD{5$VH{fmDwRbl>(j-S2& zB<9EO{`k`mfBM%S8ibO6S6tl#>m=n<7cu8%Hg}j~kI(pEj^>0d5hBD3ZZQ3D_2a?n zrL`h-Po>zg=NZAjL1oW@Y zq@z2|WKNHO77liwzC#Q8S(gPGJti!ym@QdjiFdf0XW`u06pA|5SO0_u>L6tkF`4{W zqrgUg^62V-vusl_n!+2`jqNacbBC0W%XB4Y{;CbWGJM&{mit)4+( zg2xC)g0@RtgJz|~J{Y#kKwq=~bSCibi;}~?N666)lMGtP>M8^%=p!hL~k zqMtR(c-zJDBfHqWgdfb46OydUFwQ8SXQ_ur#b1WAi@akKz7dG8*yqyYf5~6cz?Vqo z^2;TXi(z^udWq8_q5sC~cp4S|rU*pd*hmE%U;bn}#eyAuWk+f*E@HWcHXt;}X#8@O z;iI?i#Uh*6I^8C3w8*Z4=Zn*X;8))g{{=r)@_95>B;2?5DKO=5`|P8$EztB)5{Di0 zjNhJ1sBypT4de7)ykgcNUX71fC7+)#`25hwjXQnrQnh~bDjEW#yE6w~!oPR_b%~YG zR%erT?m|qA$p0bmk9`~ehj0EW_)k23-U9GH|5u-W^Y6L@! zzmm*!Fe1Z5OG?=BoV;a(m&7ie#2o*zucYNQ=op=Te~iS}=#?dydAdJ(XpS~1;Rt=t z%$rn_JRZZCFw^42;~@(&KhifjI7~jEbH>`LcN{OeJ1cP9seYBZ=DSM4Jd*G{{yDuv z*d!kjS&}U*I2W*(kUx1Z9`Mua?FY(XWTyb5%}YL=!1>GYKb)(;st-1K@tU3DV)oT7 z^arosr5uyVR8VhA?F?Wyf!B^+iAGjax|w^^w8qJ(atbD6K9D{;3$O^hYY}+gnZWJ= zYNugxs9z=NewgqK8@Qw+dP;iO^oHA2+R?_VWTQp=Z49Oyc;bTdA<$34#r*OYD~)e<F-Ix*wLLCKPQ=D6BQPx0*fyd*ZqADp0@?3_M9C*vh2>P^~>g!&;J z?&rlS%EZ#~22WcuzpKIQm^Pab`Wz)Dl!$Kk~G zWP!zVT0f;n2I;W_EZroIyBu`m%YVD(ZhYlsmvi>BcL&{lta^4RrZPZ9aKN@oY7Pj$a>U@gZR184V=Oj&c0ru1gd6{jt-eRj_y_+oLiWHVM?%G4JScrthB#)^`on$2 z=Wv4KO^+>`)noDa;p$=q&0_xHKRX^7;`2o_ThehQS@`Sie|7xx(Ot4VIg4lgy~N?m zN4xAZdU37q(S36+KG+JC{#?exe{-mJ_&0yU1BX0Z{P8hg;8d><4*QSC!C5~(#wYvX zIIw!~J{B9EH2%K6AKLr;`0HQ4`%v=#^q>FdG5!e$+kf)$%{PDV(|`2+zyJ94Z+`so z%a31tUs7!Wc<mNLw-qvY$)peJ(s&ri9KHt$z0B=!z*bDpxLY?|JXOm<4jM?;? zJ{zy_m4xz7tZDH@ZP&bfEI>bH68Et4R)Ictm8?K z2?^iHD_>g(JPq_oBFCt(F3o;&AE2}(=AwLJptP4$ZtRjp=X%G}J%c_kuw5sLWRWH| zn83f1oRb*7*(IJZm;wjxOsyZ+^X1mP?X+>*nFF49hqp6|aPdGRDZ5PZ8aKK>7Pm%) z5e*)@+`01Xq8C%l(4#$mi9zz5Eu=qw@bWMDo1eiLz~%78asM6kMSTD;Ns!Nu_WZV; zeQ0y#u+MLcpND*G*o+W6^?03r=T~P?81ugvShB0`{=xmW2U{Mx7}A$Ma|?ciqy)de zV7nYMS^2hpmlQXy)s2~cI?$cm^;HDXs7W3gu-cWYrl&eO@}L~WQ_jt8@p`tP?}7XN z;}>6i|H~f>oqmwce%1ouE201V&;IP=7e9RHa^|nT?{|1@mu!bVH0WK{ zvSI)k&Yg7fB>FyQpov0D9t@omTwlhe0|L{Xp1NG8Hg5oM7r zEcla$>m||+N`N-(^cvlj8jA_E!FPs3h=v)Q(o68c zRxaa(T;F}LE5tIWq%T_@?C6BR&JyOI@MOi8^hYi~5O+3ajW36@5Oh81y$^@k`MbW~ z_XT|_p?g%6qd)ce01Lw>+h|9!#2{xXd}+&#SA98!&q$#@fp+$u_|b+(RW@hkd{lMn z4*jXq)e;qk$pwAM>=)VR5z-sqOR^ge{b61Fs6RBp9ZQhG_C5F61eb8GB-bShb7?x) zhd*Dzxmc?nuKp!iUA-XDaT_RlMQhH?&oQ|tsty@D$(a|&KfLKaJ}K?@z};7Su~k7^>4Ap-=HUh?c`?M`T*JaqLo3zE$8oi_y>8mx%+)vlOKH&_%D9q zS3%S2XDt92{P^8>AHV$aPx>CLAHPfgW{X*|`&%_R09ICt6s2l|dqHWp8=y9{IcWXS zK@|kKCq^TyvE#*eR3R<_H`~v_oaw-KLr@*$k#Je>_=`A`xxaHZUTcL;ikWbHHb|kb z2}G$5)RWsgTSxsYJlo9|MQ&b`^J0hd+x?Gb$;(H0$KZriYyttzb&nkVy_Tq_W6k+s z!VA<*w>Q6HGXB}ROJwL{fcH(rDx;rKRZj`_4L{j46?a?8`9*PfeUAsh3d0i_Wcau-Y0{}M)S~W z^lz+hl%vIO&d6^i{yjWEh$n*jXp5T*yS(FUz~06e#~I(1c(u##a+B-FOHSlnAWZb) zX=iACd@kpSBfIqZAyuz!KB(Vyf0rUGq{f(f7sWKTxQ0`og@9l23RL}kI#cU%tAbf} z(|Dkk#O~~(4rAWm!)E%t+Qyg(^m*e`eP^8ufRSB)yl>NRa>jRZ<1wk}Z2UUthNr`O zO~y_C$%MbL2@l{1g7Oz1qoE~h9^8jfU1Q3x_yWIVOimpxrHy~}@qr5#?r_jN6|^qN z4S~dm8F~qP8#Tz_#;Zd7o2y$4!*eN(?{%IpVI7I`&JfgsHHedeA+#D3$*}6-QreTm zt~q|!{lo9#|6}`%iNNEh96xIT@O2RX;-9|z_^WSz=wr$6zwg!O=yw^Y4M|h88F8mX zS!6(2nA0B9(pTt66r553J!m&8S&YoCI6QPlwf#CPH(hF(>ugu^zxT5zIfH`q^H0pQMj6XmjBqG?~-5D11v$TTKApa zR_U0(ADz|ha3-hv>r9C@WUymnI(fa#FTo#rbhDBnLKm-XMQijw8|L@=c1jVRez>yN zN_Ft;afyfB>%0CX{}&DX$-+DuGc>f5UAabpx@g8Jp0_Eh_v$R*bw&`(y@4JFibgzk zvB0Oo7Ve?Ob|wb8WJT6cubh$TS5G-r3%7E-YD|W44G>EI z)BRP<)swlNjggodp94KaH~;x>-`oGSri%W+3ML_T-C`CdIf+Utt%^w3hTe>tJr zON%|;&9*bnP9WEBJM?{d=exr1`<`6x@%wil|C7E3g1nz{{Nx3|*nH~iApX2h1AqO+ zpL8{mvC|h_iX<1 zWFFmaExaWiAb%LFj=pwvd;qs#BjAJCV_jL~j5=22V z9`uu8%;Y8iy3|Ydd!%zoy|#^c$$!^h>)+Eq7KASO^md+ai$gfvMT?8|vrMAps`;m2f4M_4`xSm<>fbA# zHN-Gpj4q`3LY6uxp)l{9^FLSWIug@hmVzm)q`Ok**=N`js=8tJw8f+gC7k% z{P}~w>a4zOVI0Lq025bLu5aP2zS#@vcw<8cXi_7pq)E&ZzkNJK#q-z_B^|pg*j&ug_si%L+vmf4l-)~a< z_^IzNMB6++CK`W(<0mfwlhKF4e)uo{tB-v%>4#rP{Cx#iyXF>xZqIdr`jo!`p0gf9 zA2*DJG2n)UWG2}0OGCa=d1D#j26(O->ILI62IuQVxA(`HJm>$JS>f!uTPVAhr?dLf z=7Jy@@ab1Y!rNh>1a7>Yg^WzXQN<$mM?!W-jTbG*+o02NfSX7)!^Q4pn*e@*tRvFj zXofff3B2C3_mB=A;_RYZ$_dEV4nj!1&Y4JH<8+A;e)ArA1KuP$_~}EQNT5Kz(%$-~G9(t5Ar%;JDAAX-wy1;iyV)Rn^*_C#%WT1JK?vt*Z=o2E zQWhE8E?Z#HzuM8_J)MKGx#D@dYO9OqTuxrh6XagNyDxk8<+%*xD ztn?Kap35PV(~{vvu=pe{z`=Hpz*9nZqnDrIyms^RJM^@|aSKHiyMAo(dA3zEooKPg z9Yj#W&UC)2e0}Y~bigAtmy#T>50;Tn+H_!gNLZjzUtA%CGuY`iyW>R%jJceS{ZF4) zeGDc+-`PQ;g-#+u56%ue92S?SdN$QqtOM$cc5_rS*h^n}c=|>_vZv+_u|~=ncLe&z zrzYMcTKLo*c+RF5lLUo2B6LF=0I(y68ULZ91=9#FOcvXZUC4~%`L_Pzeq&^8)RPq_ zVnlQw{_5k6{U}|-^Zl@H{aSz~+KmFp5zv|J?FZyMekKd;6wiVQEzs@ig~6$$Yb$*tc$Zf~TW9UzpRVIN9Z)o&)jbnSS38~CEs@cy zHsbNM@L6OQF7!fu<>ZVp)dpS35lbw!0w+ ze$ST;53x%=w+O)PwZ}lu#@)rt-i@J|yOlbA1Zl4VuG-rNg!QE_79q{wGmsrF8STRgt}MHJ6rQmP+H*q9^^y)%qI|7= z9;H-&TNtX}89@B_b5iub=;9o~&X`xCzsE@VA~lkEF~Mb$?ld5@V_$F5fNdP6Pq_8% zQd62aC)#d39xjAUh5BiNw^-xKR}`C<;$!ZIH{TrWwRlZ*x(R)BnBljRs)sk8p{&E> zs(h>sWQc0c2TSfLWws4%7}+@({FB2Mqd~j55d-qEt~4g>b3AUI-N!E4;F|}L?Lr3| zDYHZG>2|ejsX|}A#2czUzBir@#p)@(tV6fp*WYOO>sP7vL!XK9>BMh4L-@Yu4}Sd9 zzkc`WugBr1z0K!8jTF^C`}Flc{OaSczxejY_h0__UDu>~PVUpU4U*Z?!khc%g&g#h z%=K~_w&Z^ZIRF&W14m#qniYHW64jigzn2?p;S1}din5B=@wo!l0S{{iZ>HT)ka`Rd z)3dVCy4_Hq{WVaNg%!M~1WO>9XAd1~bfD{Q{Ztn0lY_240YMM_H|RAMdCqzc7oNp) zEzuK=)M0Yo(uzmG+Q*A7!Qi0_I9u@>EW7~YTl@G|Rv#W-9qc;|>_+OtKN!6nu;%}V z$IPt@pJ5oU>g+N;{4t-(IL**a(w7Yn?6#9JHZDv2aeC-1RQsBT!Rv>UUatjWi65;0 z!N()|a8AB1u1&g<UfBn-1PP9H>K)-!Hpg4dlHm6%U(ZlCK)=x*cy+put zeE861pK-t+U2tLbhc#aM^jA%g^QU;)8I9!?LsCY(8DZ8^6IZH(&B<&R$gLwyRIh{8;-Mg&+SvMcGgN3;=2T`?C(81^AP1{^f@+e*4AuEl=NesboLH z(WM;c(#<<=Yp;~n!rf$>8%$K5s`u%c9ukfD4Z36-;U>)hOXoL7=n1|HI0=9 z1DCDv$*j5o+=^7B2#zHar1Zc53~EuJN;mYo{G%-)z;lFPpl-(DgEj#dzEXFj!i!@Of8)RZ%(Xwm|*R=Fe>v2yT?9E}o-=(dBJ@pz=s z2_tzj5wLJ5Q-?D9e_0-GjOyD&dCE}Yb^55MK=O1ZWo59&dMPW3$8=v$-GS5xfFfgXbq zO#(ULk<;JKIFJMvw=e!M#iF+JpV5Z&wrj3VHX7cZSIB~6JovEsL{|1cS)}sP+LeyD zJlD-*FdHtxqMuF?O!N3k%)&@Hx#44`fb(WQoW@# zK0Ek%BtZk-|7W|SGH%8a%@Yk1(IQ2f0PGR8uCTm+_idj6_`b3I@N+%`5U-!V0Q{$Y z7T~}6?QcK);@vNP_~rW#-}J4AUuW=l1zS&N7d||e3mDaZHYj^vpe%fvL_xIc<6(F( zU#E{3;O&;{cmM8Np$S<#V3nGs}mPG&g_H;nq4|l zml7ra&ITS;hfu&8TfLXi#S$iai~hJ$mjuzX#LhsB`ahTR*NxwiUjll4?K&7qWT1PQ zKbMbdtTr!C|0VKAjrj~>L|b6OA3YTU>!PKXHU}uT&fs)y~%7sQF=@xa#{qg$`?>jwd0mucNro8ucr9Nz!-qz4((vxZ+vt;h5&R`ZZ zpW)Y2SzYvNM~$%Y~cRpIPa|g#p{h<^5~%RA+J1q z341`0I@cfQCSSbu5BvI90_nUEkMWjNq6v4{)9LCL-9hKFB^4Hsw~ z`CJ~~!mI*}7b7e8Onr!wIK-8bzbAYsg#>O@x~(k>tuKgs0r*x725(6dub0Mf5aSVz z9Xgpysc3cf+E+xg6HKC}C&gUWX^-ZsAKJOQIlRl1`D^zAmJR6`51FiDV@P-6$a)g_ zzM;1M4a=O@83vMYUzcK_l1fW2bz_SU(-$w59~~{0r*ycH z?g*I%RE0jhEBSmg0;30cV}gk9;P zo;&#d%fI}2kANoV=Pdv!*7*L@Pe1%zHOwx=@$#W$v3{6Q4FSg>B=3Z zIfGL;fdej?GLyxEgzM&qY8NzM9YY#gg9IZNW1ja7+L-6O4N2X%Td1`_Dqw=Wf-3P( z@W#dL*3jhu7*WNhahlAY1yRDZg; z9Mv;EI7a)DMGU`zNj7{?9oDP19p#b53qcs$wPW?d4PFM?r68GTFGTpqDIu>Xf#^f# z;X~MeIPAyo=x&OF6*B`}Kh1V5xwq$jY(6fV!ogeuN{KIhCcw_W8^RKQPX!U|>muBb z@&#}fg!$4L!OJgCIo)32((WIvF}zDkr|mvh(05qusiNq7@)(LC_S)K(%5OW zBq-OTxr1v3#Qbi2`+J>_;3s+J%1dm@UJj3kI=nCI#B4j{@WCWp{CyhM_(JFFogp6S z{JVA(7vh!v9(=P04?3+fS;?!PtEleyTt`oz>>zNB>M1>uY=4lC?`Iwm@O|k_;TH=s z_zVxR=A><#FAfUI{>fb03NJ7|Bd9PQsPR*$7aXd*jCfVYF=Dub^|nzFjELxkiDrMs z&zQ)LMD)h>ZKywelPACFYj?hFKlDR!uqS|u+bDk8A(npj@!jwK{NwvS{p%mQ3H5C! z%UuHMOH=L(RG2Nz^=DFWdFJp$wVCT$xq6s$sQSE!@^%q+H4A87k^pKNAOq&uL_#w+ zkTAcISntCR|H=Q1cZnZ|?Nx@m!Q}Um3NAX-pANXL%K;XX-2Qdg(F01)wj2NlXv$!#jLTxb0;} zmGKvRYIh^|cntRV<)s5&BY4XBZ1SFI&NoZ+lv~G&ZCj^X@?|2K!dAB9b?yJ)^^Lw{ z%tvtA#jnmO+xZ7qfB4*GqWC_X70IAP6o2`F&t? zEdoo-EdrKQ(cNVoKZqw%v~N+UdzXpg>)wDaxE7R&Pu6okL0Hq1enAat0KQXHhCtI- zf;Tqsn6yh7)y3&u5_;{RC1!59-7-7jn-h=KMBoy<_v+MwLymP&P2p0V>GAC``}f}ja|!5MH-LRndG()l5cxBYdlKkZ?|%59>$&|t zObUMVG|;>6N+3mkCT3{1ELl}_m@2(e|B~J_=-f**>0OINhAxf$tzI%Hf3iOaMs>-XFfmoJ%TR z{v?Xz-SCdbiN>>64axB^`2Ju+0uO()lk$I%u-7F-;k)am&qM=z>hu^r<}T5MvgBWK z_r3qSmteNKqlBRlsXQK6Cw72mLCB07qi~nVpLp0pr@jMG$8-5-ReW_X`BxBTx8I^5 zsbBIg%?8_N0xSl*9CWZP4pL`fFCBYQ$WuTr8!eSOTj*?JmytY41lL(ZA1rf;$!kv= z!KeG2Q<+}-9xAqbrTV^I)OgXim)Np1mmtA@5#TN%X;<$x)W&lCk%1k)@k9f5^k~J# z;zo%-nsgc8@Zb)XPVmfu^@VHRxQ`La-t~jo8i1jNi(Wh_#p*s}D0Y+SvJkm+G$-Jr z3vIl|8Br^$G1g85G{&<8}I(1Ns8(ketc5*ZDSf zqod384pWZ9%S&8?JJ`aGSB}63@4fJSjdg~H*H1ux^3=~a+35yI;wwr$K?`{}S4&Z~PjX>wk2)Ap^Rkuxsem$+U`3 zcID{}&u<4LJ2p!+>pHF{_W6qEP-8G%sk90G;8p~9`e$sY0a)~Otbp=#Cq9e-UUnq{ z>#$$`_@DB7Xs74cjrYrcvrC_GpiF`+SZ_9i5x_6=DU^_d0Xxu6ui+j1q97WR8>Xa= z2YgTPfIsDcEf8$901U^@e2Yi~a;ybJhZmf>jd3jF^T+{%kV5B;7s1gj4%YMV5dvda zA?bf9DK|w@2IRc2%N3EuCs0_ku3Eg0+<{4w0-HU9XLsbM;s7xWygx9L%NyXBj+@C>5y5_97;J}Q=D$~JpB22m(!x0-ciwU-oP_j`mmpW&*u~5zP%5CecOiU>jZt>rNHm{?u8Hk z{%3p(=+y4*Z)E{^Jqh&NKAiBym+!ysy6*3D(Kor}hmwRVqFL8_QN}qplm)b?%evQq zyhd>oX)Z2YI5Nj92H-n5jIO#L=qI}~Q{I2IGRMvsFlJMv)2rryu&VSm0hx_dKH~#Dp4V^lw5#yyU+}L^t!L9J*e4KPFQYv4yhkAM|$%CY`c3e(zm2 zs=gn2qKC7CIlul6XSZ%PGhqu(pB{$eSI5MGG$xVkEDpnUH`8dJ*yB+?hFYIHoU9Z>7VtW;f8mQ{iYYQhOVb-ebcA zv|hxkJo>Kts$cv*)?fFfcHe*c<98qa$O`=}-Sxf7Ooz_Z=1A zfB3qX{wf!^R`p%|eh-_y#>~hy7*)Vnth2@?`P+@;ww#>{o*?CiIh4PUp{?Hn(lpw@ zT)@3jH@-s1u7ZMuUohJh?RW+WPSuKZqDSowegI=YoWE~V)&xgABoPO%W+2Jp8j{NK zm|;W=pn#lgOjRf2aFOi5rV8nsAgkXS9ma#)>2W-Xpwa>bb$qE4pkPv&*ij+7#8S5| z!elt+h)_iHWQES?Nt-++d_2!lXFE(XO(1>B{&tYTpMYo#&ORJ z@U-L6|M*o$Kbb4T>mQ$Kj44#Gcxat&yd+YF_~^gh={$UWXmZeeHAdb_v(CrqyxB}} zIClE3IW&dteu2w4wR6_{Pkz<~UJ{`YRXiHUJw)I$1i|;Eb-r836AD|^>JN8|PvtFG z(N6Pl*2#)^2eTpJ8uo9D;%QB!zodWl%&INH@PNxi-0P+%z0f|PxkQI{XBWZy5262j zGVj5s27S<7H>@!N+gBOHeL7`ULt8-1XiEiaM--? zos-c#q|mC<+4y7kqPvCY>DM>M4IzB_0x7zYR6F`doe34MFFcC^)S*`gUn{=iROG!j zu%}3v_3bhz%xLtF>S03WsHS`8v!D8kovx}ho?rcPS6KQgh`tTz-}EJL>5u9sAE)n6 zCVvR~PM~l8@*j64^T!{Gu&Q575H}OXVTwILUuxT{59N2NVHkyS@NR z-seoa(^nEdO4Mp-E1NiIw>nqj%wcRoK{bG0k6Xz;(pBJc!Z{+G021hSUokb11LVoGNvl3n`KhwpN26!5&tTIiS5YognY;dncfFjh;d%KUPCkC$)=9rfV+Kqla& z6m_~t^e_>$(-&V>9b;R4`lpzbIE7u~*S0v#<|{wBuJ8UpeY+{l7`PUW`0W$L@!0Oa zUHyGp`0y{Q;ZF~m_F@b=eCSD$CpvM1HUZ`@db>z?ca0yP7MgItj;FdgWA_{$`scMaJ@5#I*XeeP z)vn8@n?#C!{2sphHLrA&x;Y)9O z0k+J~k4$|p*?8lbs`HON$9xuyL_89GuY8LaB0R2ozG^HA5KmIJvHtk(t9bpcF#Ec1 zT==2v`r+q%2N0bcFP~iNC%@l~;9tJ`^$(ppev?hV|M>CCui6cKTf+CfKr>z7nTSgO zi4HG=FPJwJ7J`=}OeS88)I8A7Ih&Zhs|T*^OdteN zwQr}MTjELX2A1CH5A9tJz_3>xpA&IiyaLcfB$H3y_=OKddHA0bCO$f%A*N$v^1ycLN^U52Ucj>kF8{6#o)x2k ztMg%2k_MNEx5LTiyLNsUeVBcTa>FXgqE%FvV+lN613ov6m)P+S#Ge*|g$A1GP@lM| zfA-rv;1dCR_o1~)hjhNH9FyK(^B(Wn6Vl6veD}ti9%N0QgVPI7a+PpFs*7gd zfc0(VSE=*+#`2qPP5rIh04Bva{;eEt1b_SGzy9GjUwrtsUrYKbV}9QR?YdP9z;gy! zWS18hnZ*ql=LyccB*Y6QGB>ZPTdn_S!Y|wl2=46YZ8cuPF%NO7Q_q;dsJO(xkuOO= z;A~N{g(whe=%)^Vwu$)A(g&%Y-q1;!w0sS){`*~qSvLD{60nF(s$EB%?9+`|vDn-2 z@Ix7VT3lJcI}3DDObys60|W#WO(vuf+ZKDPW7&5+R!7v-?G0u2o3(I|GOxT)K^S z5dfc6wZZNU%_UQPr(d?OpZrIcdLE08=Mb9m^Fwqqr!xH6Dj6?1n>HEVwfOx=47)w> zR@?P|!#=&?!jZ6hVragI>DY_G;8#xzzb&AFm`yL)G%WDAcb_pR3#{u1X94jLtY15( zFWa7GeY6#T#orSUw4QTn^u2V+1^vL|b^Y zcubiN3!~-;zI=5yhx^!vZ1+-PaJIlj_t9@UkUzT*59-e3a)_L^ z9Hz@q?E3$wZ(3k}pXFbL^6gi@dH2Kje?Fm;@pIn())s*O^uPW0AOGz?{`le37r*Jp z3O;_7{=Z9m_W}Ca>Zb2}AfR}HT^%y2TAfyIlX(fL`pfSxM?&Xt$%Cu$;aqsP3m&JZ z56cUX@#buZaC=)aCW9X7Kns0)E2@qs9&r2}omyrL70v0kkw$24*o)pKz+s@9%Q-lcI)tJ*s(JzJ(rBnIY&mHP&Rwt>Ui}650|{VoCDU#hPMMh zb=d-51m)VNT|N3+qz--W58ynISE4&V#)D7jU&&v0Hdo@F(+E1jFwRI(Cb=8IsAprz zKm6ORE9)7MzxMTk!YL!9J5 z>Ix$4_LZOMYX`$w2H1k39n$2`QjGaRqEg#Q*mbmMsMq5vPd+&m2)?(8A6L)#pO zckKaC+FG!YL4u(l+IrW0)h~V*_^W*S-5-Dd?!$Ng@p)>*KjZChWdX>D#-iT__~-xp zLq7=iU5`V4)r9(8Uzz*+CPg=bJp~?0-m2`4nf^8m%-y8eDG<*rYI9OO7wU(3L7iVV z83hm@9o`}h#Y41-y2g1p!N=DKhO;1gs5b~Btxv)M*kn#Z`s{Ls6-r;kG^g{6PE<@c z;EvOI7zaq$f+m_R1ng&L?FE?r{wQ`+82tLHJT|>#;1#9r(f2MHY34VdN|m^_i+~45 zUk80%f4n|24sSYO?znMLS?fymwdr_%(&Pc6rpGyMW4xF^p5yE@Kl6%;ii1~b z);|BJv%O0>&Q7+9+Px!??DHnv`AI+T-l$%Ts^6kO^6q(rPu`xI{=!tf84PUh_CwNk@%i~(S_i$3t{>#M)aCLYs2AgS+OFt&-^#7Qw*-L zfcvHsSRDt|(5}Dg{7}h!{quuPj1>KCC~I#qG4wGOe|IGystMy~d~S}vzW6{FzGv2i z{qMW(|GR)+efU+Muln6x|4$b7KkN8gSpZ%d zeD!yK{P1`F-7kG&?dt;IcRl{rWuPzmnaKBjErcofX&Z-2egfkaVe{Mu{xtwMcsV66 zI5?J{Zd`6knV|bZHtuRt3YrC6BQ(%?mMd!~Eq|TVCn)j7vv;L|8f3};2Gksvpvb>o z<>7~XJk1UazzL4VL^|)?D7>~ ztsUfL_o5am-#Jd{;k}p~i|ZOr%(t_JPG|@lMnXHHTMgY_4}Nt$(67G=act1T;QsHX zZXNpKb&E+DwU@95Ki=!Z?9pR9;3Z_q_IYIV77rcao)%Z4CAQbery*dkjqUbr8@mn2 z@anT8mxx{d@ffDW&%Y_{8vQ;e(Cl19ru2Odz=EI;U1tLAFP$L{Km9-TbrL)CF!<5j z1quSY_)y^oXEw0-QBg20@$2Ih#&o>N8PuR?vhD(bj2g;{$BI}`@b`Ycsz4s(q>$p!+*-hRO5D#^o=19ul^SwzyJ7aH+_8?_;-2ccNz3`2K7A_`{LZ}IL~gdqSEHB z+b3~I2b3!|h6aF(HeeelNajV9+Tq`C1_TT?9#xmz^uZNA;hK0b;UHB??Q0ZjV02zo50j~_&&T(ua`pcYOE)# z>hwl|?PK%6v*#Hv4vZI+(JGmXkLpw^euC-WW1-E(JCh+xvWMiGLFPvJ(p1;pZ9jyR3$Pcij<@;F-h($zeXfV1-E zS+L!_1#9xW^#vbIT+J!5CfTkG7AW|`L%sf2pJaXb4^A?zNp_g{>pNW}@Y=Ki*I$QZ zPQT5A%-UQF&l5f5j<$+VE5GbgdV*HGj~~9|gwN*Dy|s_$@(lcl)gAjyfMFkOdVu2} z&hktOOfHfb4^GeNbGDOh=nUKCET|T;g&bWZ@)_e0~*2W#K` zuE#%rm+fEw;n`9F6D5J3hr zla#E6B`lE~)F`L90d9ipA@)<7$XZ0zu!Iss0D;asze;zdK2(98|gkxbNL- zX4-tJre>zM`MbC8E`Raj_WsRJ1mg)K_cMWeMHgG@4rGIz`SV*@M6N3%q)ZI(oIECm zf?8do(KSSDRDJQ-O_^B)GY~UbS_%!C2NU94xdDN+P|hlCbRuwc8xG3=Wm5&y4D6*# z6GyI#c%4#I!NsA-m-P|=QJre^CApDRD&7<|PuKKs$TLau8)l0>A4l7hT0CQ+#`Zy7 z`=sT3){u@#iYbAOdRH_)pi@_o;xgRZ^ADz>|{6z+uqV-K}ozlPP;^~y5 zMLpKqRkoNw%%};O#M{LIcFCa5za&Z~0!>K%beoDzO>Q0LRNgPuf?pUxl) zwz6IyLA!oFz*y0aFAofH=dMG4v^n?_qp^VyIM^?k)XUU^Rh549UVggkU4Wr;n|V1G z9Cp?H+;f zHn7~eOdAWdjp&i$)^1^g?VB5YNUD~Zr@YU;XBwKSb%U|iphe2Jrx$~j4&$NpX z75^L??-JZR9{&!8L)9Fl4C@G{J+T-Z17W@nz^_BTVsP(zp%qpuP4EUmi`s^>KB?P=zVf!@ zJAf{-e4{Ndd*JuzCAL_K#TmYGI3md_iT=P&N1Aq#@!;h5>V9a*H0$JP%}Kacr z`}Z-D7lGi(mZx8>A7%A*PE2zG(w4saudkkdpdn|C132$Cu_?hHcqY6_z*DLT8R{gf zxmxudJ)5Xxu&G~yqilMjGmkao%zANsmGGF5&dF>k=b8_LIu&i2tn(4RI^&yPT@SQIlU+SWht#86Kftg$e-#e$11?0Ey_hfAKbKc)WU_QB;D!}rSP{~zN6U^$gv zr}k0Gc^%-3H}Cj?)O*iZ>QC<9yZ@B1@F9j9-VW;Jk=-}iY{rIGla8wI8?FtzNkOxq zDb`@T4{)J#a=XabN}6J^pRG>>Ufbw`Vfr`FYdCq95%wa^gv>rzfH^VZ!Pb&~DSDk` zgCtdj)}U80j{lJr*~L&F#M4Q4hnZP`TWy{UJ3ZOH(iGJL{=6=T?qnLDgBtabfiIr^ z^t;LH$DE8HYEzyG#K&5c_Hn~Fis}f^j$L&WP^XPjT01NaZap0y&7@k#)K?zG68}kP z*zH|D@WeJ?VweMwx5;N9hh_tr9(&R*d!;7n|u#)bUwd zxt1K&#YW?WW8Dd8OB#L4A5GcYp7F!8k0keVB@Y2ESSD^C2@zQT&WWLuNByYdV7l(z z1Xd3HJ(G3;R2v)N=m#>M9HhJRqVs%647$ODHvTyP>oW#~cDcD4H8s!Ln`Nzml2oyB zit7J(CEbMB8iHR?CqqszdpCl zKlCQCLSVB`$x^zT1NhRD;hJ$J<*}JG?Kay&S>_Ucl;9<*r!i*5^B1Pb|4Tb<>Nb4+B zq@YdW9=^}~N3Pg>CjuJ-Gzi5nae`?-^tt9W&_FV8y) zV{`0-jc@j7UT*Uf!g?bH@@2V$E5^KQ&M|V$IWB`8Y-0xyyqWjfQm*cM5R!4T+LbFj zL)`_IJlpJUmL^7%v!M)AI(vzkHF1)l@y#cE7yC-59R{+}h1RYZwmm6Cqi*baBtxIh zCw5(S`m9uW#u|=EAHONBvrE&jk$-RJ>Wh4EJZWYZ+4PK|f6(9eZS;jht^L?>NIdx! zOAe^Ww*fFaL+ z`A#-rB`_yuGs;ppsM#PWzZlA;D_=on-81Om+IFx~ngK-cI*^c?l%anBAkl3Mg9Daq z%lc#;-SAzU)IU^Tr(oAt7pswRG3k9c+sS04b)~GYuuH^&lZez*O&>--8S;bWl9U)| z6SQJZ))KLD=*Gv7AUKrBEn%FzBu~kb9}L=)`>d!t{qM!qE)OOdH+IR6|8r%({Q#ur z==MpQCZc>nw|LM1yS^bZ1FC=0ah7k{opyfc z3%mH(q*&i(KIJcbx8y9@^>yN9+ddjoeKHod$Nu2y&+4deo%p%tou5A5EzaoFch2a)w+|BI0%cdSXs-_b5O#S z&aS-ZZrP}+jAjV4cBo%*lT&so#oWoGPm(D0W!_z|_5lzt{uE)>h7rrf0}dt|d}+Nf z30;8`hpu`d=+m)zPHvq%q^lyXz6fX^!iHlh?Gz9hOg11mHoaWNse4urfWeCjP*WngwSE)7g&wdYukE)_OE)MbKkEl!DyUMPqm zWqq82i_w*tHh$9Rv6OQ9D2_H7J1}rATv+tJs?nXPA&I=XsvPFC7SY<7UMZ(B@u+nq2d9m@I%e|QK$m*&V569@SorN!Z|S@n2GE^-ESWCzJ7(J_FE+(oT=U2r2_j)2+B-IkbSJtF9hS=vuYoyKoDkhAZ^I@<$C*7-e1;IV|KDMFW z-3}eH>{IO}V;||5ZuNuC3a`F_qAxRkR*~^Wnlj&&YuvEu2g$T=Tv#iez=TnT3Dup0 z58=ZdIuVHNYLPR&qGgOAmq|gL>0%yQV7Rngl5(+Zm%t$D2&|NU2<`5$-?N|7?!3>!N zJ!tknzl@tsYD+7Y*L^2oZ4S;@l+uuP)q@DHh=>PoS~zq%p#!O?$WF7GhgQB!l8)X) zgRe>rjY@>44@cgl?CDd8e^{*=_si{jFwr- zhA$bV=PnL9m!0$I#t6A3gq)7P@9^;v26Xk|GZ#y~bXttOsLv*16Z&@6pp|upVjoVJJ0p12*3r3Qd2|(YszCwq~2LJpCKKGU90t9WeEw zWJ>5g|GArxo1fcmRH*B-_4AxPc|s=5Y2#I|^C}sn-O^#qTu0skC^zzb8Am6QW2<-f zI2Y7YPI>Ce>!S%;S??68!5p5YlFChezJ+ujGeJ8iR5AO|n58PpyMt+IJgz>5xI7GX zx0452pM69)5iD+44&3s!o1GEdzJrMsPTzOD(EA3N7o32fFdUDVl20Fee&KUf^Y+hG z`)I{SzXPCutPg%4;J^OUyPMxXe0l%D%~QJdkRU#04n8CCzGnX&;o@6t>8c7aDF{9X zgglQ*>ng+%k!R_Gu0CxCKV25MrA!CRKQ{yI^l`GhU+`)PIY4u=m_e4BoXW02M4+_r z220$mQY?;UkI6U}C1~-NT zPG~T$3h7Q<2`N&p7L9LT8Ba`3;lSfg89Ns5*F zr(Qhj4x%{Nefar;7-a0KtUV}dzZ8h=K#t%<| zZWB@4GVH<3@t7!e_e`k;ldWF~(F?D1EAw^@-T+MK_x?mTyA}~!HwSZy)~cFI_b$P8 zp{%}&Ep8|6D-JTyb$?7!LCBFDdf{!I}F$kB7K)Lu%igH^$yA6CA|K zmz8Zar6J>^Dc{DU1IDpfsz~kH7wT>^4pwr@_r<+N&9~4$M)o1+{ij?by!`yl$NT=D z4DVq^`$Nh{segI*pZ@CecfK9;=Jo;K2XuK%PapA>$-Jm>_ll&zEai`$I;aNBL}83h zpmnSm8pr)hApf8s>?A0-HmsN2oD8!oy5p0)*n_J*2WR+(US1x6<=H=7ZL`m0hwsec ze>8I+vGKh?DvPSS2!lcerZlmniQ`1iW^~&y1W#s@s|so;FWW6Y6;eTEX}df7YEaQv z>(LY!2U7HrtDAcl)#^!x{V?QMGM7Jnyl!A+CIrAj}y}I!X_NNZi}k*IBO_5SQ*kP|7Yk%5_p$tmbBRV6Z8tm0ozJEIuo1f7I`F zhwLlw$#pIfAbB2rg*bWg_7UQbdGz!17d-y?tG~Ux`yc%Q_+0x}hx+}mXdkD^*F(R4 z`xkHS-@WETU^kEH)I&zV7lZx5c)#V&*Qa_6G^0iL*-El_<)mvt5}e^Mxvzm9$`1AD zHSy6e*e-;~O&n>0RCu6P;RK-4qLoU+!Nm+E2Qgg$6i0ss5I(Y!-K^L0l39;=(6vqK^=UsBIxG^F;EyT!}cx8p}Kp)cxqQbE2%zp))(jx9>*XH(YrgIz47 zXK(CBlTT&p+CWB|hQNfVBQ|R*2maQTP|yBWx8cMQ!vpmaqsg*|gEC%amzUr^?mSC{gA9y_qp;e3~OwCR}NW2?2>fSimZisM`r13fX;zH_O^PReV8 zgL0oc(FhtS0;HPl830Te`0kT zDZZoYB1@TrOpHpF?(OgO1;HbO@Oix;O@#HqfgKLgHXcGY`y$O~b_$J6L86sXGDX{semWiq4&oRYXz^zu2u zm7%bIiH;sfS7I=>+cHE=TkPE5dNQa#CVB5BqEpz`uD&#(P|GjME9m&4oTPl11K9S6 zd7#hQ<7ioZnwSz>T-o}zIMS4r&0+qAmaKj(T0C{dNb-Y3n;j$qLI9uY1Ny~X40t7b zbxpq9RrD;sw(`(S@SYg3qpW4)l-=>=1YpKfo9K9Fp-uas&FqOKjxFUDKR?zVA(OC6 zHE2OW)V1KFS=Y=7pYz$eIxSY}uI&=>(pncts4x9o4PWB`rd=~x4;FTk9a=d7`0Qg_ zxp4{_^-dnxv{zxko|1O{iFZ`y3LP@?U>&|CdnW{V^V)_IgRfsE``(>IJv4O*;m*zvf@k2Y~xAxqMA)w=z55&of=Erw@cIxilL*o3DVIzND-u}b?gO%%TYw926 zpzTkzeR+4`G0^9)p7VpoypQ$v<`IS-@}lNb%9liq_qujXnEis`a5UkJkdw1w4%BBT z-l0JIUh07j^!)9vhFKuI6_w19hUWDq4Nw_u&CbE;L#Z-_!kN?(( zWIrZh!unt=#xG>nwg_u9#rg`d6O?*}!je7T&@0jc**7-Fzfsf=rQ})7F4b*kTM0WJ ze`Ul@hH=`-RB}y5NB3&HM?qlQM!w_?Z4$YqJe^Tz>pot}cdziJvHOU~IgOk#9~||N z?F8YcfW=rG3+wq-PqVKN+6qTM+LoUk`Xgp1A7qbB`qesZexpR&BO`e!O{l|Ayp$xje$;PY-zer;mRw|5y-o<)d!)`_pYc2Kt-7cysUetsi54%%@%- z(y4h2G@o{1YzaG~=rFawD7z}z$QjJWfB>FEV?f&+pDJlLfU{T}P%uwI+{xrnq{|^J zdf%13AWjq~l-0$Z$)#WVmrw%9m_+(N6P|_%PPi|@VP;M{>PwGFSqCijNBn@GnvBQ4YA|oa#IN{sk@$%a6K$gS%?98?#K1IGY$Nhi@})MyAIu=To}a?MmD}>je7mKO;ag z&oPDO@r|z+NGthLYO}r&C=+{bUa<%s!S~V7+!g2tyC)m{m4}{p4!sKrpIcvoAeSBc zK~3NEJ00=$GmhUTgkDE!29mY~x^v}h!WCPZ|D$}8T@*;(4R_@)JY!|@cHS#zk~Zmg zu|eC8iYcEWz3`T%EqSQC{{*nIP{cXDMbY+KmLA{x{POHmKK{|o zkNz$oLEQ)}`G7Bn`>+4>_AmaDw=vzleZpIreq>-D5^laCnqRuVcj23@S#_QQ3`h$Z z*~HQWaTNkP5xw&Bf02LJQIL6+_X_0k4zfO)Gin$yJ#G=k`rFkesAB{luXqFdyt#nf0Fexkqlzdz5oP_jC|3SBy z37D^E9OQ}Iu$WNoqdu?S^RA&f3Q0O~^haZK!^Ep1{>*cE>rQe?oz71>sy{hkM~o9~ zvz@7e6N53!SkAH7jA@%e7HncIWs6?G?lOZusd?)utS_Nq^kcIfyoBw%h^!fkSJ<(`ykn|H1@_o5!(%u zw4{gWV;-GysQdLb>T{Kk-o_yuL8c!|G{=tKdnYB-{ zec8K#-trje&CR{1e8k~Lt~!5Yz@HHL7wq$5Fqa36b(`UHUK>_p>Cm|Z2n;m?&u++S z%|Kb-p>BYTeuJbGqE0`@sHIf&N4rTeqggUH>1d~fwI;L~hyXc&jL9D#SR&zyZwDIt zgj7)mzW-ve+iY9xb#^pjx`0MD1s8d-=m2BOEqr#~Rb5x|3$DI;0F^|Ml{ANiz?OZF z?veJ$C_Ff}-8)gaTF{usLYB1jLAqG7?S&<_rw^+W$9}=r-}6`qb~vsS6;c{Mien@X z0380Qvs#URaW8uMAXBGCrwL_OX!iBZTOT{j1lu@J9BedE6t*h1cvwi#IyM3unI;Up zNB#g-iP`8)z<^jf{+GyOgNoH**QX7q9Td%au1m+nT0liy?I`D>o(D@u%vAAdgj zp=dv^l?m0AKIGOj?IWk2iBiMI7uS~%Jzhe&7o_QrCk!L+Ze83?7WAj{DeY`V#}`46 z?$MHU=;=}Kg<$((sGOhjaZdk~sf0!~U-I)qjIi_*e_+bemr9O?IG-SNL9n`>pScTS z7`hDc~EVk{Yj}#@We9#Ufje;KPf41ua zhwY21`aQZGi%FeQZwwwUhm1-IQ(k<*tr+(VR3BB7@FekG&{fVjG_Fc)TbBxmN%q5& z0^XPSP4FZ8FCN#3rCs`*zB1xe;{T4x=|{F}Ag`<0_s)XsgHEq0cvsLTm)Ae!=MHA& z(=lc`&F+7G$j28^!D=m8(pJ`W5s!*4Sf2w0v`Mf#*RY|CI&NNFdvX}pM<(UgtZQqN zJbESAw2tL5Q^H@&ISD{-4S=n_p|o#oJ&zYlKa>eS*7&vl>t82}F*SDq@rq8}>xy3t z>EZ~3Ep?rj1%`moN8jkkyc_7n&u{qg zX@1)5h7UK~eGi#V-aKUxUOC&9a~LL36_gqHMt|GKI|I*FA~W0$;zoKvVm1&ZfrMvp ztSVb_RJcK;#F6Yvpb|?=|G~Fy0&qcg(xCM3dXfPE9i?_hw4nG6>Fe1nqCE9kzLKgM8;+17TA%ZDJeC@(I zTaTz{7-4ngA-VQ-9vcul8EzsQdn2jlRZpLd`T9QzZ)kN#2duEyZldIzY9ght!}*o( z@>i$6TbIVJ9Oe6@ZZC(P?OrD!Q3F0F1bOH)AYF=RbTKN`f85o(dmgmK9GZ5y!3^~KM)UHW9gvYrG3xz1I?@EnXrrpbd$T}WB5!Jufsg>+E(Tk)aO$lhu@A(auWs{&!9 zCAUb9tci9dl}%>lW_B^k>IfB@Ky(tH>#DSvF0t`p7QtYRk18`nCW~-5bOmIC-3ccK zroskkHtkSr*AFTNQ7nBJu;r`I-i0V~{JTg^@&}IEV4xe8gosP;v5q|2=}{3wJ6+N1 z4|U_QSNO>$j}BY@qFa1yw43ZE&WgId_g)#6%@DJzdrI_=emwnfAT?itrHaVJUNn_t zYDZl$IZaD4F5ICwLg#fH{W6)THG9FTrQCE}zuD`<$X_4*z%l90i?sy_iguynSWly^ z`{J(tvUisRUViJ(Ci7l2Hs0Mujm>;3Nz*PM`i@)L2p_!sve(xA_rL^5L?5(K03?MY zbxsz-pm(k~#8L)7nm05}D(l< z%@}0obQ4h>2$ClGr~^q|WfgtPpFU9)d18Uv>3GV6)P1fcVl+||(#GYno>eUZuec)^P$n_^r`N-(ohY~D=eM{<$2XR#{ zKhzYLGFs}xJMpzo;eum5jluA0wHpiRV#HO(K97BA!$8(bxB<<4G9%cB1Qkvjf3Sg5 zC3CRU1$FrHOwu}SKeIQydG>Fe9l3eVj(+|yj}-Tj47&PgG7dKeOmD%0bRZAk`G-wn z+?75yyJO4-^`7OUw9oVrg(C=h-9fBB+8oa)U6SKtCxql-DgoVaba$q{eiG~X4kGCM zP4cF0CRPRc9_i4aIf*km(p$<=?#j1C;ElbB-Lk}M82nSved*m@kBX!=bxuMz-svyT zDXdOO(7Lw3w%sm`im&-aPewc{^Pe40Bqn}m0OYBQCC=LP4y7CdRl1v3|A_I;pBKLO z|MHMf{lK?>JR(n?g>fhds5{O zL}I=mu0W8&2$J1(BIuY2pqBP<#sZ(;A<=v^lJ>o2Er3cS4!AGm942W zi_d{XU!3&RSHuB?XTx?T@)U0cNoc;uAF0_ske@2v9!Ha~E%Y%$UHkG%m@F#$i_m*a zcsAI@Y$M_7Ldjb|Hxiy#WyvVlC6Qq8eZf)8a>%h4X>5hR{n8J`De@zSS@5*O<^bs!tL{*p+m?(jQ4sYJ$6gFAIOUZt;Z%_%_~K~XRJ@mJW1#r?Vcyp zIpp+$7|U@2I8e@UxcNWG3 z9r@6-C8a)SLs@a;Y~QQTOm+qGz5jPlV3`kjJkGCw-M_s2y&wMihh{q>pKjBaUuOI6 z``cG9Z(i|f2fpU?osWUOCsN!6-0@=YO`i;IWR5pYRAcXA?byVcWKN_RteI(}Fjw6( z`J8C}xj7IHN*LlepBWJXo1SwAeb+@dpFKqg+ZE+@fE9xHvF_ckL88--%SEy`~@-AQmjlO_3In?pd zNnj!BlUTJ)bYL~Omdp5{go-)@gM1D?ByxvTS)Esh4*gg!FjnUxxKWDD=&=-R9mF_mGj zUnKZrS08m!oJ#PmB&Qv!;5P?|?esvlaH*2&SG+LN*h0&m^5M%Lo98nNw)CwJ zohg6(fM$KRPDDUPM3Vdg8FNczd!r8Snn##o(X*z~i6q zT1}((DUT;kpVEdgxV!L6VgK>X-@N(ka_{-gyL*r5{daVlcLZIYkfi;c0B(m04u2yy$C3WvDY2)5<^S$el!xva)U}ZF0)>>tY8(8?CpgU**%&$q)3Ymb@j3 z$%uL z?2n8Ie0=NmM^1gUzbYFDOCN>6Gie(`{|kcZlhDJjPh#l+YHlV>>FSAxKPGJLB$Djl z`r5&OBjcS#<0sa%#j-BW!~ps2ysUcG3(ANn;|Zvwt&V-Noz?XLawj5vh7L&U5jlOH zag;1?Y!SYEFEfkDUkO$y{s3SENZi?3o=Wk-X;9;ZZ_2?6G7M@Yet+@$C3DLB_XF|y4l|GLzqvgB;>G37-!nL1=ZUJHYRj)r1^zE_ zzwE0aUf;ic@$QZvi@&-1o{97=@#8BZ?w&JD{w7}2$UsiepfYKlEOTl&3&JqIAIw@N zH~$Rwbr2kU2*lB=enu<2z@0#n1S-t%b}(0qA(+MFL~C(pL4~z}vZ}gUGNCn-LxM^a z_9!_@t2H5zs9KP-Divf0Nj)|s*zA#oCADFVU&9`nssLa>pTF!S@0C}-g=#`EDQ;p6 zL!9Il#-_=Qn!b4jAJ#M$cP4T^9o+y>!nYEhJ_zSgT{rt~POwkZdjtXg+y&WJonTYk zK31BP(2)d=mPZ$w;trYu+D!@?q)Z;W0`cF6z65fBjx;jG(r!!kIEJURZmg6t7Wp)i zM~-O%=FGQ1)?Rl!5W?4Y`>(6eq)sqQq*QAgciSdaiKpY%*-OUC%4a8Wck&5z`eAzl zV{qJ$uDBMMPyAIOSq3_3~R`E*VyxW+h{>A&3O zzWUG|vmJ&KWpPKSw_?JUclf&5nujKip(*B+T~$L>wkvG~Xv+@+8H{DK7kQm;M@Gq& z6LiJ|9Ou;X>L2>8V|BsvrzK4v;(C(tNx^(JVSF3ABbywu`ewh)MRTGPBfmv;Fy5f| z98mJ#y>FrLSp4$j)n8m*{P+pK`oUg&xas>ZxA9`|e|Y!q_5J&|Ka&@J6fp=9%lppgArMl7nD!rkIHVA$lc51?fqhL8!!6dvs1>cT%~{ghbx;fZ?vz zW6i`Fp^R%7TVR4`ZB9l>L>JpFAL9Z9Ntc>Tl=En1Y!A~qwno(|WWBFKsp>H2s#7iF zF&G^U5;7%#QBWz`0yNDgC!nj6(@tFK*)AbKWH2%fFB1wI8@4e?Lwnv)NEgcuy{a6F zX+A->{2+-Q`A*`n(!s#I%SL~U`;^5SqvrVIs~X|En%uyKl8m|~>T7Ih&&X`QG{{be z<%r-oN-BQZa^@&z$lcFI-Db%%rcSAgFnuhB0U-oVsybfcrqo{oX2MiVy%C3JfRXKS zR77bCIT+Hdn~Z6TZA=f}di@=Y!P3Us+OMLR0I0u7T|dCqZ==zR&6LJ=9!*Kx{z1z( zbZ3q!!&Se&;mO>=AX6Xp54yPLuEdF=kI;;8tJ9cS&1S58@q*9p%Dd0l_V@)qQb*sF z;acq)j=KK$f~|f-pJZEf${Vd`gq52UMkA~%vwpE(BFEvL{evThvU6vEF8vBuC-f~I zv8ioq{evgdc*-&yzHZ<&P+upU$9)AgGF1J4cmMW|AAP^@Tj`hYc^%_BKKc72Kb7_K zyC;{|pX!@GvG;E_WBZG2#G%gw^kVQGkAZIQJ%aWf^XWT+_K4s;=Q-kAN02r-oahx? zBgXFJG0Yq6!bp%U6*c%K+B#&tUOCY0E*N(O1*L3~P?lsMtLF<@+DaF|gCSb;c^nFP z4t7c>kmP@^SaDvTFcZ-NaP5@T^`k9?{2%36K<~NKgx01+`j)Ti8-!@$jtCSs47rlh z8;bp&#pS|EHMvkL!!aI_2df1@MDCx{#anBco)*F>A_B;&A2pmSkzY);}IUrF3d!0}Okyc56= zC#At+piI*8^VWDccxSK5L06S9S?eEF6L$9PPc-C|VY6G-(@|JE@*F=o3W%l3_F4Iu zk&w$T`-xCjT-*s*%@>f>L&YKp4r15#u-LU}y3K_g*an(^U32|= z