From f2a184e760b94ebca1b1c31d0ffeb415c90c973b Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Wed, 29 Apr 2026 23:25:32 +0200 Subject: [PATCH] Feature: Implement initial macOS SimpleRemoter client --- client/IOCPClient.cpp | 5 + client/KernelManager.cpp | 2 +- common/aes.c | 8 +- common/aes.h | 14 +- common/commands.h | 8 +- macos/CMakeLists.txt | 73 ++++ macos/H264Encoder.h | 86 +++++ macos/H264Encoder.mm | 521 ++++++++++++++++++++++++++ macos/InputHandler.h | 80 ++++ macos/InputHandler.mm | 399 ++++++++++++++++++++ macos/Permissions.h | 36 ++ macos/Permissions.mm | 64 ++++ macos/README.txt | 61 +++ macos/ScreenHandler.h | 129 +++++++ macos/ScreenHandler.mm | 574 +++++++++++++++++++++++++++++ macos/SystemManager.h | 40 ++ macos/SystemManager.mm | 201 ++++++++++ macos/build.sh | 47 +++ macos/lib/libzstd.a | Bin 0 -> 810296 bytes macos/main.mm | 548 +++++++++++++++++++++++++++ server/2015Remote/ScreenSpyDlg.cpp | 32 +- server/2015Remote/WebPage.h | 49 ++- server/2015Remote/WebService.cpp | 2 - 23 files changed, 2958 insertions(+), 21 deletions(-) create mode 100644 macos/CMakeLists.txt create mode 100644 macos/H264Encoder.h create mode 100644 macos/H264Encoder.mm create mode 100644 macos/InputHandler.h create mode 100644 macos/InputHandler.mm create mode 100644 macos/Permissions.h create mode 100644 macos/Permissions.mm create mode 100644 macos/README.txt create mode 100644 macos/ScreenHandler.h create mode 100644 macos/ScreenHandler.mm create mode 100644 macos/SystemManager.h create mode 100644 macos/SystemManager.mm create mode 100644 macos/build.sh create mode 100644 macos/lib/libzstd.a create mode 100644 macos/main.mm diff --git a/client/IOCPClient.cpp b/client/IOCPClient.cpp index 6d703e4..e15ac45 100644 --- a/client/IOCPClient.cpp +++ b/client/IOCPClient.cpp @@ -61,6 +61,10 @@ BOOL SetKeepAliveOptions(int socket, int nKeepAliveSec = 180) return FALSE; } +#ifdef __APPLE__ + // macOS: 只有 TCP_KEEPALIVE (等同于 TCP_KEEPIDLE) + setsockopt(socket, IPPROTO_TCP, TCP_KEEPALIVE, &nKeepAliveSec, sizeof(nKeepAliveSec)); +#else // 设置 TCP_KEEPIDLE (3分钟空闲后开始发送 keep-alive 包) if (setsockopt(socket, IPPROTO_TCP, TCP_KEEPIDLE, &nKeepAliveSec, sizeof(nKeepAliveSec)) < 0) { Mprintf("Failed to set TCP_KEEPIDLE\n"); @@ -80,6 +84,7 @@ BOOL SetKeepAliveOptions(int socket, int nKeepAliveSec = 180) Mprintf("Failed to set TCP_KEEPCNT\n"); return FALSE; } +#endif Mprintf("TCP keep-alive settings applied successfully\n"); return TRUE; diff --git a/client/KernelManager.cpp b/client/KernelManager.cpp index 88c2e4c..a6848cd 100644 --- a/client/KernelManager.cpp +++ b/client/KernelManager.cpp @@ -78,7 +78,7 @@ CKernelManager::CKernelManager(CONNECT_ADDRESS* conn, IOCPClient* ClientObject, // C2C 初始化 if (conn) m_MyClientID = conn->clientID; // 恢复并启动 SCH_MODE_STARTUP 模式的 DLL - int n = RestoreMemDLL(); + static int n = RestoreMemDLL(); if (n) { Mprintf("[CKernelManager] RestoreMemDLL count: %d\n", n); } diff --git a/common/aes.c b/common/aes.c index 6b26ead..9473e45 100644 --- a/common/aes.c +++ b/common/aes.c @@ -1,6 +1,6 @@ /* -This is an implementation of the AES algorithm, specifically ECB, CTR and CBC mode. +This is an implementation of the AES algorithm, specifically ECB, AES_MODE_CTR and CBC mode. Block size can be chosen in aes.h - available choices are AES128, AES192, AES256. The implementation is verified against the test vectors in: @@ -221,7 +221,7 @@ void AES_init_ctx(struct AES_ctx* ctx, const uint8_t* key) { KeyExpansion(ctx->RoundKey, key); } -#if (defined(CBC) && (CBC == 1)) || (defined(CTR) && (CTR == 1)) +#if (defined(CBC) && (CBC == 1)) || (defined(AES_MODE_CTR) && (AES_MODE_CTR == 1)) void AES_init_ctx_iv(struct AES_ctx* ctx, const uint8_t* key, const uint8_t* iv) { KeyExpansion(ctx->RoundKey, key); @@ -528,7 +528,7 @@ void AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length) -#if defined(CTR) && (CTR == 1) +#if defined(AES_MODE_CTR) && (AES_MODE_CTR == 1) /* Symmetrical operation: same function for encrypting as for decrypting. Note any IV/nonce should never be reused with the same key */ void AES_CTR_xcrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length) @@ -560,5 +560,5 @@ void AES_CTR_xcrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length) } } -#endif // #if defined(CTR) && (CTR == 1) +#endif // #if defined(AES_MODE_CTR) && (AES_MODE_CTR == 1) diff --git a/common/aes.h b/common/aes.h index 31f072d..3916290 100644 --- a/common/aes.h +++ b/common/aes.h @@ -7,7 +7,7 @@ // #define the macros below to 1/0 to enable/disable the mode of operation. // // CBC enables AES encryption in CBC-mode of operation. -// CTR enables encryption in counter-mode. +// AES_MODE_CTR enables encryption in counter-mode. // ECB enables the basic ECB 16-byte block algorithm. All can be enabled simultaneously. // The #ifndef-guard allows it to be configured before #include'ing or at compile time. @@ -19,8 +19,8 @@ #define ECB 1 #endif -#ifndef CTR -#define CTR 1 +#ifndef AES_MODE_CTR +#define AES_MODE_CTR 1 #endif @@ -43,13 +43,13 @@ struct AES_ctx { uint8_t RoundKey[AES_keyExpSize]; -#if (defined(CBC) && (CBC == 1)) || (defined(CTR) && (CTR == 1)) +#if (defined(CBC) && (CBC == 1)) || (defined(AES_MODE_CTR) && (AES_MODE_CTR == 1)) uint8_t Iv[AES_BLOCKLEN]; #endif }; void AES_init_ctx(struct AES_ctx* ctx, const uint8_t* key); -#if (defined(CBC) && (CBC == 1)) || (defined(CTR) && (CTR == 1)) +#if (defined(CBC) && (CBC == 1)) || (defined(AES_MODE_CTR) && (AES_MODE_CTR == 1)) void AES_init_ctx_iv(struct AES_ctx* ctx, const uint8_t* key, const uint8_t* iv); void AES_ctx_set_iv(struct AES_ctx* ctx, const uint8_t* iv); #endif @@ -75,7 +75,7 @@ void AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length); #endif // #if defined(CBC) && (CBC == 1) -#if defined(CTR) && (CTR == 1) +#if defined(AES_MODE_CTR) && (AES_MODE_CTR == 1) // Same function for encrypting as for decrypting. // IV is incremented for every block, and used after encryption as XOR-compliment for output @@ -84,7 +84,7 @@ void AES_CBC_decrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length); // no IV should ever be reused with the same key void AES_CTR_xcrypt_buffer(struct AES_ctx* ctx, uint8_t* buf, size_t length); -#endif // #if defined(CTR) && (CTR == 1) +#endif // #if defined(AES_MODE_CTR) && (AES_MODE_CTR == 1) #endif // _AES_H_ diff --git a/common/commands.h b/common/commands.h index 6af5b69..d2eae00 100644 --- a/common/commands.h +++ b/common/commands.h @@ -41,7 +41,10 @@ typedef int64_t __int64; typedef uint16_t WORD; typedef uint32_t DWORD; -typedef int BOOL, SOCKET; +#ifndef BOOL +typedef bool BOOL; +#endif +typedef int SOCKET; typedef unsigned int ULONG; typedef unsigned int UINT; typedef void VOID; @@ -533,6 +536,7 @@ enum { CLIENT_TYPE_SHELLCODE = 4, // Shellcode CLIENT_TYPE_MEMDLL = 5, // 内存DLL运行 CLIENT_TYPE_LINUX = 6, // LINUX 客户端 + CLIENT_TYPE_MACOS = 7, // MACOS 客户端 }; enum { @@ -558,6 +562,8 @@ inline const char* GetClientType(int typ) return "MDLL"; case CLIENT_TYPE_LINUX: return "LNX"; + case CLIENT_TYPE_MACOS: + return "MAC"; default: return "DLL"; } diff --git a/macos/CMakeLists.txt b/macos/CMakeLists.txt new file mode 100644 index 0000000..d3bd762 --- /dev/null +++ b/macos/CMakeLists.txt @@ -0,0 +1,73 @@ +cmake_minimum_required(VERSION 3.15) +project(ghost_macos) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# macOS deployment target +set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13" CACHE STRING "Minimum macOS version") + +# Universal Binary (Intel + Apple Silicon) +set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "Build architectures") + +include_directories(../) +include_directories(../client) +include_directories(../compress) + +# Source files +set(SOURCES + main.mm + ../client/Buffer.cpp + ../client/IOCPClient.cpp + ScreenHandler.mm + InputHandler.mm + SystemManager.mm + Permissions.mm + H264Encoder.mm +) + +# Create executable +add_executable(ghost ${SOURCES}) + +# Include directories +target_include_directories(ghost PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} +) + +# Find and link macOS frameworks +find_library(COCOA_FRAMEWORK Cocoa REQUIRED) +find_library(COREGRAPHICS_FRAMEWORK CoreGraphics REQUIRED) +find_library(IOKIT_FRAMEWORK IOKit REQUIRED) +find_library(IOSURFACE_FRAMEWORK IOSurface REQUIRED) +find_library(APPLICATIONSERVICES_FRAMEWORK ApplicationServices REQUIRED) +find_library(SECURITY_FRAMEWORK Security REQUIRED) +find_library(CARBON_FRAMEWORK Carbon REQUIRED) +find_library(VIDEOTOOLBOX_FRAMEWORK VideoToolbox REQUIRED) +find_library(COREMEDIA_FRAMEWORK CoreMedia REQUIRED) +find_library(COREVIDEO_FRAMEWORK CoreVideo REQUIRED) + +target_link_libraries(ghost PRIVATE + ${COCOA_FRAMEWORK} + ${COREGRAPHICS_FRAMEWORK} + ${IOKIT_FRAMEWORK} + ${IOSURFACE_FRAMEWORK} + ${APPLICATIONSERVICES_FRAMEWORK} + ${SECURITY_FRAMEWORK} + ${CARBON_FRAMEWORK} + ${VIDEOTOOLBOX_FRAMEWORK} + ${COREMEDIA_FRAMEWORK} + ${COREVIDEO_FRAMEWORK} + "${CMAKE_SOURCE_DIR}/lib/libzstd.a" +) + +# Compiler flags +target_compile_options(ghost PRIVATE + -Wall + -Wextra + -fobjc-arc +) + +# Output directory +set_target_properties(ghost PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin +) diff --git a/macos/H264Encoder.h b/macos/H264Encoder.h new file mode 100644 index 0000000..cc3b367 --- /dev/null +++ b/macos/H264Encoder.h @@ -0,0 +1,86 @@ +#pragma once + +#include +#include +#include +#include +#import +#import + +class H264Encoder { +public: + H264Encoder(); + ~H264Encoder(); + + // Initialize encoder + // @param width: frame width + // @param height: frame height + // @param fps: target frame rate + // @param bitrate: target bitrate in kbps (0 = auto) + bool open(int width, int height, int fps, int bitrate = 0); + + // Close encoder and release resources + void close(); + + // Check if encoder is open + bool isOpen() const { return m_session != nullptr; } + + // Encode a frame + // @param bgra: BGRA pixel data (bottom-up or top-down) + // @param bpp: bits per pixel (32 for BGRA) + // @param stride: bytes per row + // @param width: frame width + // @param height: frame height + // @param outData: pointer to receive encoded data pointer + // @param outSize: pointer to receive encoded data size + // @param flipVertical: true if image is bottom-up (BMP format) + // @return: encoded size, or 0 on failure + int encode(const uint8_t* bgra, uint8_t bpp, uint32_t stride, + uint32_t width, uint32_t height, + uint8_t** outData, uint32_t* outSize, + bool flipVertical = true); + + // Force next frame to be keyframe + void forceKeyframe() { m_forceKeyframe = true; } + + // Get last error message + const char* getLastError() const { return m_lastError; } + +private: + // VideoToolbox compression callback + static void compressionCallback(void* outputCallbackRefCon, + void* sourceFrameRefCon, + OSStatus status, + VTEncodeInfoFlags infoFlags, + CMSampleBufferRef sampleBuffer); + + // Process encoded sample buffer + void processSampleBuffer(CMSampleBufferRef sampleBuffer); + + // Convert BGRA to I420 (YUV) + void convertBGRAtoI420(const uint8_t* bgra, uint32_t stride, + uint32_t width, uint32_t height, + bool flipVertical); + +private: + VTCompressionSessionRef m_session; + + int m_width; + int m_height; + int m_fps; + int m_bitrate; + + // YUV buffers + std::vector m_yPlane; + std::vector m_uPlane; + std::vector m_vPlane; + + // Output buffer + std::vector m_outputBuffer; + std::mutex m_outputMutex; + + // State + std::atomic m_forceKeyframe; + int64_t m_frameCount; + char m_lastError[256]; +}; diff --git a/macos/H264Encoder.mm b/macos/H264Encoder.mm new file mode 100644 index 0000000..e136265 --- /dev/null +++ b/macos/H264Encoder.mm @@ -0,0 +1,521 @@ +#import "H264Encoder.h" +#import +#import +#import +#import + +H264Encoder::H264Encoder() + : m_session(nullptr) + , m_width(0) + , m_height(0) + , m_fps(30) + , m_bitrate(0) + , m_forceKeyframe(false) + , m_frameCount(0) +{ + m_lastError[0] = '\0'; +} + +H264Encoder::~H264Encoder() +{ + close(); +} + +bool H264Encoder::open(int width, int height, int fps, int bitrate) +{ + close(); + + // Width and height must be even for H264 + m_width = width & ~1; + m_height = height & ~1; + m_fps = fps > 0 ? fps : 30; + m_bitrate = bitrate > 0 ? bitrate : (m_width * m_height * 3); // ~3 bits per pixel default + + // Allocate YUV buffers + int ySize = m_width * m_height; + int uvSize = (m_width / 2) * (m_height / 2); + m_yPlane.resize(ySize); + m_uPlane.resize(uvSize); + m_vPlane.resize(uvSize); + + // Reserve output buffer + m_outputBuffer.reserve(m_width * m_height); + + // Create compression session + CFMutableDictionaryRef encoderSpec = CFDictionaryCreateMutable( + kCFAllocatorDefault, 0, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks + ); + + // Prefer hardware encoder + CFDictionarySetValue(encoderSpec, + kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder, + kCFBooleanTrue); + + // Source image attributes + CFMutableDictionaryRef sourceAttrs = CFDictionaryCreateMutable( + kCFAllocatorDefault, 0, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks + ); + + int32_t pixelFormat = kCVPixelFormatType_420YpCbCr8Planar; // I420 + CFNumberRef pixelFormatNum = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &pixelFormat); + CFDictionarySetValue(sourceAttrs, kCVPixelBufferPixelFormatTypeKey, pixelFormatNum); + CFRelease(pixelFormatNum); + + int32_t widthNum = m_width; + int32_t heightNum = m_height; + CFNumberRef widthRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &widthNum); + CFNumberRef heightRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &heightNum); + CFDictionarySetValue(sourceAttrs, kCVPixelBufferWidthKey, widthRef); + CFDictionarySetValue(sourceAttrs, kCVPixelBufferHeightKey, heightRef); + CFRelease(widthRef); + CFRelease(heightRef); + + // Create compression session + OSStatus status = VTCompressionSessionCreate( + kCFAllocatorDefault, + m_width, + m_height, + kCMVideoCodecType_H264, + encoderSpec, + sourceAttrs, + kCFAllocatorDefault, + compressionCallback, + this, + &m_session + ); + + CFRelease(encoderSpec); + CFRelease(sourceAttrs); + + if (status != noErr) { + snprintf(m_lastError, sizeof(m_lastError), + "VTCompressionSessionCreate failed: %d", (int)status); + NSLog(@"H264Encoder: %s", m_lastError); + return false; + } + + // Configure session properties + + // Real-time encoding + VTSessionSetProperty(m_session, kVTCompressionPropertyKey_RealTime, kCFBooleanTrue); + + // Profile: Baseline for compatibility + VTSessionSetProperty(m_session, kVTCompressionPropertyKey_ProfileLevel, + kVTProfileLevel_H264_Baseline_AutoLevel); + + // Allow frame reordering: false for low latency + VTSessionSetProperty(m_session, kVTCompressionPropertyKey_AllowFrameReordering, kCFBooleanFalse); + + // Max keyframe interval (GOP size) - match Windows x264 setting (15 seconds) + int32_t keyframeInterval = m_fps * 15; // Keyframe every 15 seconds + CFNumberRef keyframeRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &keyframeInterval); + VTSessionSetProperty(m_session, kVTCompressionPropertyKey_MaxKeyFrameInterval, keyframeRef); + CFRelease(keyframeRef); + + // Expected frame rate + CFNumberRef fpsRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &m_fps); + VTSessionSetProperty(m_session, kVTCompressionPropertyKey_ExpectedFrameRate, fpsRef); + CFRelease(fpsRef); + + // Average bitrate + CFNumberRef bitrateRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &m_bitrate); + VTSessionSetProperty(m_session, kVTCompressionPropertyKey_AverageBitRate, bitrateRef); + CFRelease(bitrateRef); + + // Data rate limits (for more consistent bitrate) + // [bytes per second, duration in seconds] + int64_t dataRateLimit = m_bitrate / 8; + double duration = 1.0; + CFNumberRef bytesRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt64Type, &dataRateLimit); + CFNumberRef durationRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberFloat64Type, &duration); + CFTypeRef limits[2] = { bytesRef, durationRef }; + CFArrayRef limitsArray = CFArrayCreate(kCFAllocatorDefault, limits, 2, &kCFTypeArrayCallBacks); + VTSessionSetProperty(m_session, kVTCompressionPropertyKey_DataRateLimits, limitsArray); + CFRelease(bytesRef); + CFRelease(durationRef); + CFRelease(limitsArray); + + // Prepare to encode + status = VTCompressionSessionPrepareToEncodeFrames(m_session); + if (status != noErr) { + snprintf(m_lastError, sizeof(m_lastError), + "VTCompressionSessionPrepareToEncodeFrames failed: %d", (int)status); + NSLog(@"H264Encoder: %s", m_lastError); + close(); + return false; + } + + m_frameCount = 0; + m_forceKeyframe = true; // First frame is always keyframe + + NSLog(@"H264Encoder opened: %dx%d @ %d fps, bitrate=%d", + m_width, m_height, m_fps, m_bitrate); + + return true; +} + +void H264Encoder::close() +{ + if (m_session) { + VTCompressionSessionInvalidate(m_session); + CFRelease(m_session); + m_session = nullptr; + } + + m_yPlane.clear(); + m_uPlane.clear(); + m_vPlane.clear(); + m_outputBuffer.clear(); +} + +void H264Encoder::convertBGRAtoI420(const uint8_t* bgra, uint32_t stride, + uint32_t width, uint32_t height, + bool flipVertical) +{ + // Convert BGRA to I420 (YUV 4:2:0 planar) + // Y = 0.299*R + 0.587*G + 0.114*B + // U = -0.169*R - 0.331*G + 0.500*B + 128 + // V = 0.500*R - 0.419*G - 0.081*B + 128 + + uint8_t* yDst = m_yPlane.data(); + uint8_t* uDst = m_uPlane.data(); + uint8_t* vDst = m_vPlane.data(); + + int uvWidth = width / 2; + + for (uint32_t y = 0; y < height; y++) { + // Source row (handle vertical flip) + uint32_t srcY = flipVertical ? (height - 1 - y) : y; + const uint8_t* srcRow = bgra + srcY * stride; + + // Y plane destination + uint8_t* yRow = yDst + y * width; + + for (uint32_t x = 0; x < width; x++) { + uint8_t b = srcRow[x * 4 + 0]; + uint8_t g = srcRow[x * 4 + 1]; + uint8_t r = srcRow[x * 4 + 2]; + + // Y component + int yVal = ((66 * r + 129 * g + 25 * b + 128) >> 8) + 16; + yRow[x] = (uint8_t)(yVal < 0 ? 0 : (yVal > 255 ? 255 : yVal)); + } + + // UV planes (subsampled 2x2) + if (y % 2 == 0) { + uint8_t* uRow = uDst + (y / 2) * uvWidth; + uint8_t* vRow = vDst + (y / 2) * uvWidth; + + for (uint32_t x = 0; x < width; x += 2) { + // Average 2x2 block + uint32_t srcY2 = flipVertical ? (height - 2 - y) : (y + 1); + if (srcY2 >= height) srcY2 = srcY; + const uint8_t* srcRow2 = bgra + srcY2 * stride; + + int r = 0, g = 0, b = 0; + + // Top-left + b += srcRow[x * 4 + 0]; + g += srcRow[x * 4 + 1]; + r += srcRow[x * 4 + 2]; + + // Top-right + if (x + 1 < width) { + b += srcRow[(x + 1) * 4 + 0]; + g += srcRow[(x + 1) * 4 + 1]; + r += srcRow[(x + 1) * 4 + 2]; + } + + // Bottom-left + b += srcRow2[x * 4 + 0]; + g += srcRow2[x * 4 + 1]; + r += srcRow2[x * 4 + 2]; + + // Bottom-right + if (x + 1 < width) { + b += srcRow2[(x + 1) * 4 + 0]; + g += srcRow2[(x + 1) * 4 + 1]; + r += srcRow2[(x + 1) * 4 + 2]; + } + + r /= 4; + g /= 4; + b /= 4; + + // U component + int uVal = ((-38 * r - 74 * g + 112 * b + 128) >> 8) + 128; + uRow[x / 2] = (uint8_t)(uVal < 0 ? 0 : (uVal > 255 ? 255 : uVal)); + + // V component + int vVal = ((112 * r - 94 * g - 18 * b + 128) >> 8) + 128; + vRow[x / 2] = (uint8_t)(vVal < 0 ? 0 : (vVal > 255 ? 255 : vVal)); + } + } + } +} + +int H264Encoder::encode(const uint8_t* bgra, uint8_t bpp, uint32_t stride, + uint32_t width, uint32_t height, + uint8_t** outData, uint32_t* outSize, + bool flipVertical) +{ + if (!m_session) { + snprintf(m_lastError, sizeof(m_lastError), "Encoder not initialized"); + return 0; + } + + if (width != (uint32_t)m_width || height != (uint32_t)m_height) { + snprintf(m_lastError, sizeof(m_lastError), + "Frame size mismatch: expected %dx%d, got %dx%d", + m_width, m_height, (int)width, (int)height); + return 0; + } + + // Convert BGRA to I420 + convertBGRAtoI420(bgra, stride, width, height, flipVertical); + + // Create CVPixelBuffer + CVPixelBufferRef pixelBuffer = nullptr; + NSDictionary* options = @{ + (id)kCVPixelBufferIOSurfacePropertiesKey: @{} + }; + + CVReturn cvRet = CVPixelBufferCreate( + kCFAllocatorDefault, + m_width, + m_height, + kCVPixelFormatType_420YpCbCr8Planar, + (__bridge CFDictionaryRef)options, + &pixelBuffer + ); + + if (cvRet != kCVReturnSuccess) { + snprintf(m_lastError, sizeof(m_lastError), + "CVPixelBufferCreate failed: %d", (int)cvRet); + return 0; + } + + // Lock and copy YUV data + CVPixelBufferLockBaseAddress(pixelBuffer, 0); + + size_t planeCount = CVPixelBufferGetPlaneCount(pixelBuffer); + if (planeCount < 3) { + CVPixelBufferUnlockBaseAddress(pixelBuffer, 0); + CVPixelBufferRelease(pixelBuffer); + snprintf(m_lastError, sizeof(m_lastError), + "CVPixelBuffer has %zu planes, expected 3", planeCount); + return 0; + } + + // Y plane + uint8_t* yDst = (uint8_t*)CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 0); + size_t yStride = CVPixelBufferGetBytesPerRowOfPlane(pixelBuffer, 0); + for (int y = 0; y < m_height; y++) { + memcpy(yDst + y * yStride, m_yPlane.data() + y * m_width, m_width); + } + + // U plane + uint8_t* uDst = (uint8_t*)CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 1); + size_t uStride = CVPixelBufferGetBytesPerRowOfPlane(pixelBuffer, 1); + int uvHeight = m_height / 2; + int uvWidth = m_width / 2; + for (int y = 0; y < uvHeight; y++) { + memcpy(uDst + y * uStride, m_uPlane.data() + y * uvWidth, uvWidth); + } + + // V plane + uint8_t* vDst = (uint8_t*)CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 2); + size_t vStride = CVPixelBufferGetBytesPerRowOfPlane(pixelBuffer, 2); + for (int y = 0; y < uvHeight; y++) { + memcpy(vDst + y * vStride, m_vPlane.data() + y * uvWidth, uvWidth); + } + + CVPixelBufferUnlockBaseAddress(pixelBuffer, 0); + + // Prepare frame properties + CFMutableDictionaryRef frameProps = nullptr; + if (m_forceKeyframe.exchange(false)) { + frameProps = CFDictionaryCreateMutable( + kCFAllocatorDefault, 1, + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks + ); + CFDictionarySetValue(frameProps, + kVTEncodeFrameOptionKey_ForceKeyFrame, + kCFBooleanTrue); + } + + // Clear output buffer + { + std::lock_guard lock(m_outputMutex); + m_outputBuffer.clear(); + } + + // Presentation timestamp + CMTime pts = CMTimeMake(m_frameCount++, m_fps); + + // Encode frame + OSStatus status = VTCompressionSessionEncodeFrame( + m_session, + pixelBuffer, + pts, + kCMTimeInvalid, + frameProps, + nullptr, + nullptr + ); + + if (frameProps) { + CFRelease(frameProps); + } + CVPixelBufferRelease(pixelBuffer); + + if (status != noErr) { + snprintf(m_lastError, sizeof(m_lastError), + "VTCompressionSessionEncodeFrame failed: %d", (int)status); + return 0; + } + + // Wait for encoding to complete + VTCompressionSessionCompleteFrames(m_session, kCMTimeInvalid); + + // Return encoded data + std::lock_guard lock(m_outputMutex); + if (m_outputBuffer.empty()) { + return 0; + } + + *outData = m_outputBuffer.data(); + *outSize = (uint32_t)m_outputBuffer.size(); + return (int)m_outputBuffer.size(); +} + +void H264Encoder::compressionCallback(void* outputCallbackRefCon, + void* sourceFrameRefCon, + OSStatus status, + VTEncodeInfoFlags infoFlags, + CMSampleBufferRef sampleBuffer) +{ + (void)sourceFrameRefCon; + (void)infoFlags; + + H264Encoder* encoder = (H264Encoder*)outputCallbackRefCon; + + if (status != noErr) { + NSLog(@"H264Encoder: Compression callback error: %d", (int)status); + return; + } + + if (!sampleBuffer) { + return; + } + + encoder->processSampleBuffer(sampleBuffer); +} + +void H264Encoder::processSampleBuffer(CMSampleBufferRef sampleBuffer) +{ + // Check if keyframe + CFArrayRef attachments = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, false); + bool isKeyframe = false; + if (attachments && CFArrayGetCount(attachments) > 0) { + CFDictionaryRef dict = (CFDictionaryRef)CFArrayGetValueAtIndex(attachments, 0); + CFBooleanRef notSync = (CFBooleanRef)CFDictionaryGetValue(dict, + kCMSampleAttachmentKey_NotSync); + isKeyframe = (notSync == nullptr || !CFBooleanGetValue(notSync)); + } + + std::lock_guard lock(m_outputMutex); + m_outputBuffer.clear(); + + // Get format description for SPS/PPS + CMFormatDescriptionRef formatDesc = CMSampleBufferGetFormatDescription(sampleBuffer); + + // If keyframe, prepend SPS and PPS + if (isKeyframe && formatDesc) { + // Get SPS + size_t spsSize = 0; + size_t spsCount = 0; + const uint8_t* sps = nullptr; + OSStatus status = CMVideoFormatDescriptionGetH264ParameterSetAtIndex( + formatDesc, 0, &sps, &spsSize, &spsCount, nullptr); + + if (status == noErr && sps && spsSize > 0) { + // Write NAL start code + SPS + uint8_t startCode[] = {0x00, 0x00, 0x00, 0x01}; + m_outputBuffer.insert(m_outputBuffer.end(), startCode, startCode + 4); + m_outputBuffer.insert(m_outputBuffer.end(), sps, sps + spsSize); + } + + // Get PPS + size_t ppsSize = 0; + size_t ppsCount = 0; + const uint8_t* pps = nullptr; + status = CMVideoFormatDescriptionGetH264ParameterSetAtIndex( + formatDesc, 1, &pps, &ppsSize, &ppsCount, nullptr); + + if (status == noErr && pps && ppsSize > 0) { + // Write NAL start code + PPS + uint8_t startCode[] = {0x00, 0x00, 0x00, 0x01}; + m_outputBuffer.insert(m_outputBuffer.end(), startCode, startCode + 4); + m_outputBuffer.insert(m_outputBuffer.end(), pps, pps + ppsSize); + } + } + + // Get encoded data + CMBlockBufferRef blockBuffer = CMSampleBufferGetDataBuffer(sampleBuffer); + if (!blockBuffer) { + return; + } + + size_t totalLength = 0; + size_t lengthAtOffset = 0; + char* dataPointer = nullptr; + + OSStatus status = CMBlockBufferGetDataPointer( + blockBuffer, 0, &lengthAtOffset, &totalLength, &dataPointer); + + if (status != noErr || !dataPointer) { + return; + } + + // Get NAL unit length size from format description (usually 4 bytes) + int nalLengthSize = 4; + if (formatDesc) { + int tmpNalLengthSize = 0; + status = CMVideoFormatDescriptionGetH264ParameterSetAtIndex( + formatDesc, 0, nullptr, nullptr, nullptr, &tmpNalLengthSize); + if (status == noErr && tmpNalLengthSize > 0 && tmpNalLengthSize <= 4) { + nalLengthSize = tmpNalLengthSize; + } + } + + // Convert AVCC format (length-prefixed) to Annex B (start code prefixed) + size_t offset = 0; + while (offset < totalLength) { + // Read NAL unit length (big-endian, variable size) + uint32_t nalLength = 0; + const uint8_t* lengthPtr = (const uint8_t*)dataPointer + offset; + for (int i = 0; i < nalLengthSize; i++) { + nalLength = (nalLength << 8) | lengthPtr[i]; + } + offset += nalLengthSize; + + if (nalLength > 0 && offset + nalLength <= totalLength) { + // Write NAL start code + uint8_t startCode[] = {0x00, 0x00, 0x00, 0x01}; + m_outputBuffer.insert(m_outputBuffer.end(), startCode, startCode + 4); + + // Write NAL data + m_outputBuffer.insert(m_outputBuffer.end(), + (uint8_t*)dataPointer + offset, + (uint8_t*)dataPointer + offset + nalLength); + } + + offset += nalLength; + } +} diff --git a/macos/InputHandler.h b/macos/InputHandler.h new file mode 100644 index 0000000..7dd3b4e --- /dev/null +++ b/macos/InputHandler.h @@ -0,0 +1,80 @@ +#pragma once + +#import +#include +#include + +// Windows message constants (for parsing server commands) +#define WM_MOUSEMOVE 0x0200 +#define WM_LBUTTONDOWN 0x0201 +#define WM_LBUTTONUP 0x0202 +#define WM_LBUTTONDBLCLK 0x0203 +#define WM_RBUTTONDOWN 0x0204 +#define WM_RBUTTONUP 0x0205 +#define WM_RBUTTONDBLCLK 0x0206 +#define WM_MBUTTONDOWN 0x0207 +#define WM_MBUTTONUP 0x0208 +#define WM_MBUTTONDBLCLK 0x0209 +#define WM_MOUSEWHEEL 0x020A + +#define WM_KEYDOWN 0x0100 +#define WM_KEYUP 0x0101 +#define WM_SYSKEYDOWN 0x0104 +#define WM_SYSKEYUP 0x0105 + +// Windows wheel delta extraction +#define GET_WHEEL_DELTA_WPARAM(wParam) ((short)((wParam) >> 16)) + +// MSG64 structure (compatible with Windows/Linux) +#pragma pack(push, 1) +struct MSG64_MAC { + uint64_t hwnd; + uint64_t message; + uint64_t wParam; + uint64_t lParam; + uint64_t time; + int32_t pt_x; + int32_t pt_y; +}; +#pragma pack(pop) + +class InputHandler { +public: + InputHandler(); + ~InputHandler(); + + // Initialize (checks accessibility permission) + bool init(); + + // Handle input event from server + void handleInputEvent(const MSG64_MAC* msg); + + // Check if accessibility permission is available + bool hasAccessibilityPermission() const { return m_hasPermission; } + +private: + // Mouse event helpers + void handleMouseMove(int x, int y); + void handleMouseButton(CGMouseButton button, bool down, int x, int y); + void handleMouseDoubleClick(CGMouseButton button, int x, int y); + void handleMouseWheel(int delta); + + // Keyboard event helpers + void handleKeyEvent(uint32_t vkCode, bool down); + + // Convert Windows VK code to macOS key code + static CGKeyCode vkToMacKeyCode(uint32_t vk); + +private: + std::atomic m_hasPermission{false}; + std::atomic m_warningLogged{false}; + + // Track button states for CGEvent (atomic for thread safety) + CGPoint m_lastMousePos; + std::atomic m_leftButtonDown{false}; + std::atomic m_rightButtonDown{false}; + std::atomic m_middleButtonDown{false}; + + // Track modifier key states for proper key event handling + std::atomic m_modifierFlags{0}; +}; diff --git a/macos/InputHandler.mm b/macos/InputHandler.mm new file mode 100644 index 0000000..6e3b6b8 --- /dev/null +++ b/macos/InputHandler.mm @@ -0,0 +1,399 @@ +#import "InputHandler.h" +#import "Permissions.h" +#import +#import +#include // for usleep + +InputHandler::InputHandler() + : m_lastMousePos(CGPointZero) +{ + // atomic members are initialized in class declaration +} + +InputHandler::~InputHandler() +{ +} + +bool InputHandler::init() +{ + m_hasPermission = Permissions::checkAccessibility(); + if (!m_hasPermission) { + NSLog(@"InputHandler: Accessibility permission not granted"); + // Request permission (shows system dialog) + Permissions::requestAccessibility(); + } + return m_hasPermission; +} + +void InputHandler::handleInputEvent(const MSG64_MAC* msg) +{ + if (!m_hasPermission) { + // Re-check permission + m_hasPermission = Permissions::checkAccessibility(); + if (!m_hasPermission) { + if (!m_warningLogged) { + NSLog(@"InputHandler: Cannot handle input - no accessibility permission"); + m_warningLogged = true; + } + return; + } + m_warningLogged = false; + } + + uint32_t message = (uint32_t)msg->message; + // Extract coordinates from lParam (MAKELPARAM format: low=x, high=y) + int x = (int)(msg->lParam & 0xFFFF); + int y = (int)((msg->lParam >> 16) & 0xFFFF); + + switch (message) { + // Mouse movement + case WM_MOUSEMOVE: + handleMouseMove(x, y); + break; + + // Left button + case WM_LBUTTONDOWN: + handleMouseButton(kCGMouseButtonLeft, true, x, y); + break; + case WM_LBUTTONUP: + handleMouseButton(kCGMouseButtonLeft, false, x, y); + break; + case WM_LBUTTONDBLCLK: + handleMouseDoubleClick(kCGMouseButtonLeft, x, y); + break; + + // Right button + case WM_RBUTTONDOWN: + handleMouseButton(kCGMouseButtonRight, true, x, y); + break; + case WM_RBUTTONUP: + handleMouseButton(kCGMouseButtonRight, false, x, y); + break; + case WM_RBUTTONDBLCLK: + handleMouseDoubleClick(kCGMouseButtonRight, x, y); + break; + + // Middle button + case WM_MBUTTONDOWN: + handleMouseButton(kCGMouseButtonCenter, true, x, y); + break; + case WM_MBUTTONUP: + handleMouseButton(kCGMouseButtonCenter, false, x, y); + break; + case WM_MBUTTONDBLCLK: + handleMouseDoubleClick(kCGMouseButtonCenter, x, y); + break; + + // Mouse wheel + case WM_MOUSEWHEEL: { + short delta = GET_WHEEL_DELTA_WPARAM(msg->wParam); + handleMouseWheel(delta); + break; + } + + // Keyboard + case WM_KEYDOWN: + case WM_SYSKEYDOWN: + handleKeyEvent((uint32_t)msg->wParam, true); + break; + + case WM_KEYUP: + case WM_SYSKEYUP: + handleKeyEvent((uint32_t)msg->wParam, false); + break; + } +} + +void InputHandler::handleMouseMove(int x, int y) +{ + CGPoint point = CGPointMake(x, y); + m_lastMousePos = point; + + CGEventType eventType = kCGEventMouseMoved; + CGMouseButton button = kCGMouseButtonLeft; + + // If button is held, use drag event + if (m_leftButtonDown) { + eventType = kCGEventLeftMouseDragged; + button = kCGMouseButtonLeft; + } else if (m_rightButtonDown) { + eventType = kCGEventRightMouseDragged; + button = kCGMouseButtonRight; + } else if (m_middleButtonDown) { + eventType = kCGEventOtherMouseDragged; + button = kCGMouseButtonCenter; + } + + CGEventRef event = CGEventCreateMouseEvent(NULL, eventType, point, button); + if (event) { + CGEventPost(kCGHIDEventTap, event); + CFRelease(event); + } +} + +void InputHandler::handleMouseButton(CGMouseButton button, bool down, int x, int y) +{ + CGPoint point = CGPointMake(x, y); + m_lastMousePos = point; + + CGEventType eventType; + + switch (button) { + case kCGMouseButtonLeft: + eventType = down ? kCGEventLeftMouseDown : kCGEventLeftMouseUp; + m_leftButtonDown = down; + break; + case kCGMouseButtonRight: + eventType = down ? kCGEventRightMouseDown : kCGEventRightMouseUp; + m_rightButtonDown = down; + break; + case kCGMouseButtonCenter: + default: + eventType = down ? kCGEventOtherMouseDown : kCGEventOtherMouseUp; + m_middleButtonDown = down; + break; + } + + CGEventRef event = CGEventCreateMouseEvent(NULL, eventType, point, button); + if (event) { + CGEventPost(kCGHIDEventTap, event); + CFRelease(event); + } +} + +void InputHandler::handleMouseDoubleClick(CGMouseButton button, int x, int y) +{ + CGPoint point = CGPointMake(x, y); + m_lastMousePos = point; + + CGEventType downType, upType; + + switch (button) { + case kCGMouseButtonLeft: + downType = kCGEventLeftMouseDown; + upType = kCGEventLeftMouseUp; + break; + case kCGMouseButtonRight: + downType = kCGEventRightMouseDown; + upType = kCGEventRightMouseUp; + break; + case kCGMouseButtonCenter: + default: + downType = kCGEventOtherMouseDown; + upType = kCGEventOtherMouseUp; + break; + } + + // First click (clickState=1) + CGEventRef down1 = CGEventCreateMouseEvent(NULL, downType, point, button); + CGEventRef up1 = CGEventCreateMouseEvent(NULL, upType, point, button); + + if (down1 && up1) { + CGEventSetIntegerValueField(down1, kCGMouseEventClickState, 1); + CGEventSetIntegerValueField(up1, kCGMouseEventClickState, 1); + CGEventPost(kCGHIDEventTap, down1); + CGEventPost(kCGHIDEventTap, up1); + } + + if (down1) CFRelease(down1); + if (up1) CFRelease(up1); + + // Brief delay between clicks (50ms) + usleep(50000); + + // Second click (clickState=2) + CGEventRef down2 = CGEventCreateMouseEvent(NULL, downType, point, button); + CGEventRef up2 = CGEventCreateMouseEvent(NULL, upType, point, button); + + if (down2 && up2) { + CGEventSetIntegerValueField(down2, kCGMouseEventClickState, 2); + CGEventSetIntegerValueField(up2, kCGMouseEventClickState, 2); + CGEventPost(kCGHIDEventTap, down2); + CGEventPost(kCGHIDEventTap, up2); + } + + if (down2) CFRelease(down2); + if (up2) CFRelease(up2); +} + +void InputHandler::handleMouseWheel(int delta) +{ + // Convert Windows wheel delta (120 = one notch) to macOS pixel units + // Using pixel units provides smoother scrolling than line units + // Windows: 120 = one standard notch + // macOS: approximately 10 pixels per notch feels natural + int32_t scrollAmount = (delta * 10) / 120; + + // Use pixel units for smoother scrolling experience + CGEventRef event = CGEventCreateScrollWheelEvent( + NULL, + kCGScrollEventUnitPixel, + 1, + scrollAmount + ); + if (event) { + CGEventPost(kCGHIDEventTap, event); + CFRelease(event); + } +} + +void InputHandler::handleKeyEvent(uint32_t vkCode, bool down) +{ + CGKeyCode keyCode = vkToMacKeyCode(vkCode); + if (keyCode == 0xFF) { + return; // Unknown key + } + + // Update modifier flags based on key + CGEventFlags flag = 0; + switch (keyCode) { + case kVK_Shift: + case kVK_RightShift: + flag = kCGEventFlagMaskShift; + break; + case kVK_Control: + case kVK_RightControl: + flag = kCGEventFlagMaskControl; + break; + case kVK_Option: + case kVK_RightOption: + flag = kCGEventFlagMaskAlternate; + break; + case kVK_Command: + case kVK_RightCommand: + flag = kCGEventFlagMaskCommand; + break; + case kVK_CapsLock: + flag = kCGEventFlagMaskAlphaShift; + break; + } + + if (flag) { + CGEventFlags current = m_modifierFlags.load(); + if (down) { + m_modifierFlags.store(current | flag); + } else { + m_modifierFlags.store(current & ~flag); + } + } + + CGEventRef event = CGEventCreateKeyboardEvent(NULL, keyCode, down); + if (event) { + // Set current modifier flags to ensure proper key combinations + CGEventSetFlags(event, m_modifierFlags.load()); + CGEventPost(kCGHIDEventTap, event); + CFRelease(event); + } +} + +// Convert Windows VK code to macOS key code +// Reference: Carbon/HIToolbox/Events.h +CGKeyCode InputHandler::vkToMacKeyCode(uint32_t vk) +{ + // Letters A-Z (VK 0x41-0x5A) + if (vk >= 0x41 && vk <= 0x5A) { + // macOS key codes for A-Z are not sequential + static const CGKeyCode letterKeys[] = { + kVK_ANSI_A, kVK_ANSI_B, kVK_ANSI_C, kVK_ANSI_D, kVK_ANSI_E, + kVK_ANSI_F, kVK_ANSI_G, kVK_ANSI_H, kVK_ANSI_I, kVK_ANSI_J, + kVK_ANSI_K, kVK_ANSI_L, kVK_ANSI_M, kVK_ANSI_N, kVK_ANSI_O, + kVK_ANSI_P, kVK_ANSI_Q, kVK_ANSI_R, kVK_ANSI_S, kVK_ANSI_T, + kVK_ANSI_U, kVK_ANSI_V, kVK_ANSI_W, kVK_ANSI_X, kVK_ANSI_Y, + kVK_ANSI_Z + }; + return letterKeys[vk - 0x41]; + } + + // Numbers 0-9 (VK 0x30-0x39) + if (vk >= 0x30 && vk <= 0x39) { + static const CGKeyCode numberKeys[] = { + kVK_ANSI_0, kVK_ANSI_1, kVK_ANSI_2, kVK_ANSI_3, kVK_ANSI_4, + kVK_ANSI_5, kVK_ANSI_6, kVK_ANSI_7, kVK_ANSI_8, kVK_ANSI_9 + }; + return numberKeys[vk - 0x30]; + } + + // Numpad 0-9 (VK 0x60-0x69) + if (vk >= 0x60 && vk <= 0x69) { + static const CGKeyCode numpadKeys[] = { + kVK_ANSI_Keypad0, kVK_ANSI_Keypad1, kVK_ANSI_Keypad2, + kVK_ANSI_Keypad3, kVK_ANSI_Keypad4, kVK_ANSI_Keypad5, + kVK_ANSI_Keypad6, kVK_ANSI_Keypad7, kVK_ANSI_Keypad8, + kVK_ANSI_Keypad9 + }; + return numpadKeys[vk - 0x60]; + } + + // F1-F12 (VK 0x70-0x7B) + if (vk >= 0x70 && vk <= 0x7B) { + static const CGKeyCode fKeys[] = { + kVK_F1, kVK_F2, kVK_F3, kVK_F4, kVK_F5, kVK_F6, + kVK_F7, kVK_F8, kVK_F9, kVK_F10, kVK_F11, kVK_F12 + }; + return fKeys[vk - 0x70]; + } + + // Special keys + switch (vk) { + case 0x08: return kVK_Delete; // VK_BACK (Backspace) + case 0x09: return kVK_Tab; // VK_TAB + case 0x0D: return kVK_Return; // VK_RETURN + case 0x10: return kVK_Shift; // VK_SHIFT + case 0x11: return kVK_Control; // VK_CONTROL + case 0x12: return kVK_Option; // VK_MENU (Alt -> Option) + case 0x13: return kVK_F15; // VK_PAUSE (no direct equivalent) + case 0x14: return kVK_CapsLock; // VK_CAPITAL + case 0x1B: return kVK_Escape; // VK_ESCAPE + case 0x20: return kVK_Space; // VK_SPACE + case 0x21: return kVK_PageUp; // VK_PRIOR + case 0x22: return kVK_PageDown; // VK_NEXT + case 0x23: return kVK_End; // VK_END + case 0x24: return kVK_Home; // VK_HOME + case 0x25: return kVK_LeftArrow; // VK_LEFT + case 0x26: return kVK_UpArrow; // VK_UP + case 0x27: return kVK_RightArrow; // VK_RIGHT + case 0x28: return kVK_DownArrow; // VK_DOWN + case 0x2C: return kVK_F13; // VK_SNAPSHOT (PrintScreen) + case 0x2D: return kVK_Help; // VK_INSERT (Help on Mac) + case 0x2E: return kVK_ForwardDelete; // VK_DELETE + + // Windows keys -> Command + case 0x5B: return kVK_Command; // VK_LWIN + case 0x5C: return kVK_RightCommand; // VK_RWIN + + // Numpad operators + case 0x6A: return kVK_ANSI_KeypadMultiply; // VK_MULTIPLY + case 0x6B: return kVK_ANSI_KeypadPlus; // VK_ADD + case 0x6D: return kVK_ANSI_KeypadMinus; // VK_SUBTRACT + case 0x6E: return kVK_ANSI_KeypadDecimal; // VK_DECIMAL + case 0x6F: return kVK_ANSI_KeypadDivide; // VK_DIVIDE + + // Lock keys + case 0x90: return kVK_ANSI_KeypadClear; // VK_NUMLOCK (Clear on Mac) + case 0x91: return kVK_F14; // VK_SCROLL + + // Shift variants + case 0xA0: return kVK_Shift; // VK_LSHIFT + case 0xA1: return kVK_RightShift; // VK_RSHIFT + case 0xA2: return kVK_Control; // VK_LCONTROL + case 0xA3: return kVK_RightControl; // VK_RCONTROL + case 0xA4: return kVK_Option; // VK_LMENU + case 0xA5: return kVK_RightOption; // VK_RMENU + + // OEM keys (US keyboard layout) + case 0xBA: return kVK_ANSI_Semicolon; // VK_OEM_1 (;:) + case 0xBB: return kVK_ANSI_Equal; // VK_OEM_PLUS (=+) + case 0xBC: return kVK_ANSI_Comma; // VK_OEM_COMMA (,<) + case 0xBD: return kVK_ANSI_Minus; // VK_OEM_MINUS (-_) + case 0xBE: return kVK_ANSI_Period; // VK_OEM_PERIOD (.>) + case 0xBF: return kVK_ANSI_Slash; // VK_OEM_2 (/?) + case 0xC0: return kVK_ANSI_Grave; // VK_OEM_3 (`~) + case 0xDB: return kVK_ANSI_LeftBracket; // VK_OEM_4 ([{) + case 0xDC: return kVK_ANSI_Backslash; // VK_OEM_5 (\|) + case 0xDD: return kVK_ANSI_RightBracket; // VK_OEM_6 (]}) + case 0xDE: return kVK_ANSI_Quote; // VK_OEM_7 ('") + + default: + return 0xFF; // Unknown key + } +} diff --git a/macos/Permissions.h b/macos/Permissions.h new file mode 100644 index 0000000..a2adf35 --- /dev/null +++ b/macos/Permissions.h @@ -0,0 +1,36 @@ +#pragma once + +#import +#import +#import + +class Permissions { +public: + // Check if screen recording permission is granted + // Returns true if granted, false otherwise + static bool checkScreenCapture(); + + // Request screen recording permission (shows system dialog, macOS 10.15+) + static void requestScreenCapture(); + + // Check if accessibility permission is granted (for input simulation) + // Returns true if granted, false otherwise + static bool checkAccessibility(); + + // Request accessibility permission (shows system dialog) + static void requestAccessibility(); + + // Open System Preferences to Screen Recording settings + static void openScreenCaptureSettings(); + + // Open System Preferences to Accessibility settings + static void openAccessibilitySettings(); + + // Check all required permissions + // Returns true if all permissions are granted + static bool checkAllPermissions(); + + // Wait for permissions to be granted (blocking) + // Returns true if all granted within timeout, false otherwise + static bool waitForPermissions(int timeoutSeconds); +}; diff --git a/macos/Permissions.mm b/macos/Permissions.mm new file mode 100644 index 0000000..e5261e3 --- /dev/null +++ b/macos/Permissions.mm @@ -0,0 +1,64 @@ +#import "Permissions.h" +#import +#import +#import + +bool Permissions::checkScreenCapture() { + // macOS 10.15+ requires screen recording permission + if (@available(macOS 10.15, *)) { + // Use CGPreflightScreenCaptureAccess for reliable permission check + // This API is available since macOS 10.15 + return CGPreflightScreenCaptureAccess(); + } + + // Before 10.15, no permission needed + return true; +} + +void Permissions::requestScreenCapture() { + if (@available(macOS 10.15, *)) { + // Trigger system permission dialog + CGRequestScreenCaptureAccess(); + } +} + +bool Permissions::checkAccessibility() { + return AXIsProcessTrusted(); +} + +void Permissions::requestAccessibility() { + NSDictionary *options = @{ + (__bridge id)kAXTrustedCheckOptionPrompt: @YES + }; + AXIsProcessTrustedWithOptions((__bridge CFDictionaryRef)options); +} + +void Permissions::openScreenCaptureSettings() { + if (@available(macOS 10.15, *)) { + // Open System Preferences -> Security & Privacy -> Privacy -> Screen Recording + NSURL *url = [NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture"]; + [[NSWorkspace sharedWorkspace] openURL:url]; + } +} + +void Permissions::openAccessibilitySettings() { + // Open System Preferences -> Security & Privacy -> Privacy -> Accessibility + NSURL *url = [NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"]; + [[NSWorkspace sharedWorkspace] openURL:url]; +} + +bool Permissions::checkAllPermissions() { + return checkScreenCapture() && checkAccessibility(); +} + +bool Permissions::waitForPermissions(int timeoutSeconds) { + int elapsed = 0; + while (elapsed < timeoutSeconds) { + if (checkAllPermissions()) { + return true; + } + [NSThread sleepForTimeInterval:1.0]; + elapsed++; + } + return false; +} diff --git a/macos/README.txt b/macos/README.txt new file mode 100644 index 0000000..d71d518 --- /dev/null +++ b/macos/README.txt @@ -0,0 +1,61 @@ +macOS Remote Desktop Client +=========================== + +Prerequisites: + 1. Xcode Command Line Tools: xcode-select --install + 2. CMake: brew install cmake + +Build: + chmod +x build.sh + ./build.sh + +Or manually: + mkdir build && cd build + cmake .. + make + +Run: + ./build/bin/ghost + +Configuration: + Server address is configured in main.mm (g_SETTINGS variable). + Modify before building if needed. + +Permissions Required: + 1. Screen Recording - System Settings > Privacy & Security > Screen Recording + 2. Accessibility - System Settings > Privacy & Security > Accessibility + +Features: + [x] Screen capture (CGDisplayCreateImage) + [x] H264 video encoding (VideoToolbox) + [x] Mouse control (move, click, drag, scroll) + [x] Keyboard control (full VK code mapping) + [x] Retina display support (coordinate scaling) + [x] Network connection (IOCPClient) + [x] LOGIN_INFOR (system info reporting) + [x] Heartbeat with RTT estimation + [x] Active window tracking + [x] Quality level adjustment (FPS/algorithm) + +Files: + CMakeLists.txt - Build configuration + Permissions.h/mm - macOS permission handling + ScreenHandler.h/mm - Screen capture and H264 encoding + InputHandler.h/mm - Mouse/keyboard simulation + H264Encoder.h/mm - VideoToolbox H264 encoder + SystemManager.h/mm - Process management + main.mm - Entry point, LOGIN_INFOR, heartbeat + +Quality Levels: + Level 0: 5 FPS, Grayscale (emergency low bandwidth) + Level 1: 10 FPS, RGB565 + Level 2: 15 FPS, H264 (default, office work) + Level 3: 20 FPS, H264 + Level 4: 25 FPS, H264 + Level 5: 30 FPS, H264 (smooth) + +Notes: + - First frame is always raw bitmap (TOKEN_FIRSTSCREEN) + - Subsequent frames use H264 encoding (TOKEN_NEXTSCREEN) + - Coordinates are scaled for Retina displays automatically + - Windows VK codes are mapped to macOS key codes diff --git a/macos/ScreenHandler.h b/macos/ScreenHandler.h new file mode 100644 index 0000000..dea7062 --- /dev/null +++ b/macos/ScreenHandler.h @@ -0,0 +1,129 @@ +#pragma once + +#import +#import +#import "../client/IOCPClient.h" +#include +#include +#include +#include +#include +#include + +// Forward declarations +class IOCPClient; +class H264Encoder; +class InputHandler; + +// macOS BITMAPINFOHEADER (compatible with Windows) +#pragma pack(push, 1) +struct BITMAPINFOHEADER_MAC { + uint32_t biSize; // 40 + int32_t biWidth; + int32_t biHeight; + uint16_t biPlanes; // 1 + uint16_t biBitCount; // 32 + uint32_t biCompression; // 0 (BI_RGB) + uint32_t biSizeImage; + int32_t biXPelsPerMeter; // 0 + int32_t biYPelsPerMeter; // 0 + uint32_t biClrUsed; // 0 + uint32_t biClrImportant; // 0 +}; +#pragma pack(pop) + +// Screen algorithm constants +#define ALGORITHM_GRAY 0 +#define ALGORITHM_DIFF 1 +#define ALGORITHM_H264 2 +#define ALGORITHM_RGB565 3 + +class ScreenHandler : public IOCPManager { +public: + ScreenHandler(IOCPClient* client); + ~ScreenHandler(); + + // Initialize screen capture (returns false if permission denied) + bool init(); + + // Start/stop capture loop + void start(IOCPClient* client, uint64_t clientID); + void stop(); + + // Check if running + bool isRunning() const { return m_running; } + + // Get screen dimensions + int getWidth() const { return m_width; } + int getHeight() const { return m_height; } + + // Send bitmap info to server (called after connection) + void sendBitmapInfo(); + + // Handle received commands + void OnReceive(uint8_t* data, ULONG size); + + // Apply quality level + void applyQualityLevel(int8_t level, bool persist = false); + +private: + // Capture the screen (returns BGRA data, bottom-up) + bool captureScreen(std::vector& buffer); + + // Send first full screen frame + void sendFirstScreen(); + + // Send differential frame + void sendDiffFrame(); + + // Send H264 encoded frame + void sendH264Frame(bool keyframe); + + // Compare bitmaps and generate diff data + uint32_t compareBitmap(const uint8_t* curr, const uint8_t* prev, + uint8_t* outBuf, uint32_t totalBytes, uint8_t algo); + + // Color conversion helpers + void convertBGRAtoGray(const uint8_t* src, uint8_t* dst, uint32_t pixelCount); + void convertBGRAtoRGB565(const uint8_t* src, uint16_t* dst, uint32_t pixelCount); + + // Capture loop thread function + void captureLoop(); + + // Get current time in milliseconds + static uint64_t getTickMs(); + +private: + IOCPClient* m_client; + uint64_t m_clientID; + + std::atomic m_running; + std::thread m_captureThread; + std::mutex m_mutex; + + // Screen info + int m_width; // Physical pixel width (sent to server) + int m_height; // Physical pixel height (sent to server) + int m_logicalWidth; // Logical point width (for CGEvent) + int m_logicalHeight; // Logical point height (for CGEvent) + double m_scaleFactor; // Retina scale factor (physical / logical) + CGDirectDisplayID m_displayID; + + // Protocol + BITMAPINFOHEADER_MAC m_bmpHeader; + std::vector m_prevFrame; + std::vector m_currFrame; + std::vector m_diffBuffer; + + // Quality settings + std::atomic m_algorithm; + std::atomic m_maxFPS; + int8_t m_qualityLevel; + + // H264 encoder + std::unique_ptr m_h264Encoder; + int m_h264Bitrate; + + // Input handler for mouse/keyboard control + std::unique_ptr m_inputHandler; +}; diff --git a/macos/ScreenHandler.mm b/macos/ScreenHandler.mm new file mode 100644 index 0000000..de8b9a4 --- /dev/null +++ b/macos/ScreenHandler.mm @@ -0,0 +1,574 @@ +#import "ScreenHandler.h" +#import "H264Encoder.h" +#import "InputHandler.h" +#import "../client/IOCPClient.h" +#import "../common/commands.h" +#import "Permissions.h" +#import +#import +#import + +// Global client ID (calculated in main.mm) +extern uint64_t g_myClientID; + +ScreenHandler::ScreenHandler(IOCPClient* client) + : m_client(client) + , m_clientID(0) + , m_running(false) + , m_width(0) + , m_height(0) + , m_logicalWidth(0) + , m_logicalHeight(0) + , m_scaleFactor(1.0) + , m_displayID(CGMainDisplayID()) + , m_algorithm(ALGORITHM_H264) + , m_maxFPS(15) + , m_qualityLevel(QUALITY_GOOD) // Use fixed QUALITY_GOOD (H264) for web compatibility + , m_h264Bitrate(2000000) // 2 Mbps default +{ + memset(&m_bmpHeader, 0, sizeof(m_bmpHeader)); + + // Initialize input handler for mouse/keyboard control + m_inputHandler = std::make_unique(); + if (m_inputHandler->init()) { + NSLog(@"InputHandler initialized with accessibility permission"); + } else { + NSLog(@"InputHandler: waiting for accessibility permission"); + } +} + +ScreenHandler::~ScreenHandler() +{ + stop(); +} + +bool ScreenHandler::init() +{ + // Check permissions + if (!Permissions::checkScreenCapture()) { + NSLog(@"Screen capture permission not granted"); + return false; + } + + // Get main display info + m_displayID = CGMainDisplayID(); + + // Get physical pixel dimensions (what we capture and send) + CGDisplayModeRef mode = CGDisplayCopyDisplayMode(m_displayID); + if (mode) { + m_width = (int)CGDisplayModeGetPixelWidth(mode); + m_height = (int)CGDisplayModeGetPixelHeight(mode); + CGDisplayModeRelease(mode); + } else { + m_width = (int)CGDisplayPixelsWide(m_displayID); + m_height = (int)CGDisplayPixelsHigh(m_displayID); + } + + // Get logical point dimensions (what CGEvent uses) + // NSScreen provides logical dimensions + NSScreen* mainScreen = [NSScreen mainScreen]; + if (mainScreen) { + NSRect frame = [mainScreen frame]; + m_logicalWidth = (int)frame.size.width; + m_logicalHeight = (int)frame.size.height; + } else { + // Fallback: use physical dimensions + m_logicalWidth = m_width; + m_logicalHeight = m_height; + } + + // Calculate scale factor (Retina displays have factor > 1.0) + m_scaleFactor = (double)m_width / (double)m_logicalWidth; + + NSLog(@"Screen dimensions: physical=%dx%d, logical=%dx%d, scale=%.2f", + m_width, m_height, m_logicalWidth, m_logicalHeight, m_scaleFactor); + + if (m_width <= 0 || m_height <= 0) { + NSLog(@"Invalid screen dimensions: %dx%d", m_width, m_height); + return false; + } + + // Initialize BITMAPINFOHEADER + m_bmpHeader.biSize = sizeof(BITMAPINFOHEADER_MAC); + m_bmpHeader.biWidth = m_width; + m_bmpHeader.biHeight = m_height; + m_bmpHeader.biPlanes = 1; + m_bmpHeader.biBitCount = 32; + m_bmpHeader.biCompression = 0; // BI_RGB + m_bmpHeader.biSizeImage = m_width * m_height * 4; + + // Allocate frame buffers + m_prevFrame.resize(m_bmpHeader.biSizeImage, 0); + m_currFrame.resize(m_bmpHeader.biSizeImage, 0); + m_diffBuffer.resize(1 + 1 + 8 + 1 + m_bmpHeader.biSizeImage * 2); + + NSLog(@"ScreenHandler initialized: %dx%d", m_width, m_height); + return true; +} + +void ScreenHandler::start(IOCPClient* client, uint64_t clientID) +{ + if (m_running) return; + + m_client = client; + m_clientID = clientID; + m_running = true; + + m_captureThread = std::thread(&ScreenHandler::captureLoop, this); +} + +void ScreenHandler::stop() +{ + m_running = false; + if (m_captureThread.joinable()) { + m_captureThread.join(); + } + + // Close H264 encoder if open + if (m_h264Encoder) { + m_h264Encoder->close(); + m_h264Encoder.reset(); + } +} + +void ScreenHandler::sendBitmapInfo() +{ + if (!m_client) return; + + // Build packet: [TOKEN_BITMAPINFO][BITMAPINFOHEADER][clientID][reserved][ScreenSettings] + // ScreenSettings defined in commands.h (100 bytes), QualityLevel at offset 32 + + const uint32_t len = 1 + sizeof(BITMAPINFOHEADER_MAC) + 2 * sizeof(uint64_t) + sizeof(ScreenSettings); + std::vector buf(len, 0); + + buf[0] = TOKEN_BITMAPINFO; + memcpy(&buf[1], &m_bmpHeader, sizeof(BITMAPINFOHEADER_MAC)); + uint64_t clientID = g_myClientID; + memcpy(&buf[1 + sizeof(BITMAPINFOHEADER_MAC)], &clientID, sizeof(uint64_t)); + + ScreenSettings settings = {}; + settings.MaxFPS = m_maxFPS.load(); + settings.QualityLevel = m_qualityLevel; // Fixed quality level (e.g., QUALITY_GOOD = 2) + memcpy(&buf[1 + sizeof(BITMAPINFOHEADER_MAC) + 2 * sizeof(uint64_t)], &settings, sizeof(ScreenSettings)); + + m_client->Send2Server((char*)buf.data(), len); + NSLog(@"SendBitmapInfo: clientID=%llu, QualityLevel=%d, SettingsSize=%zu", + clientID, m_qualityLevel, sizeof(ScreenSettings)); +} + +void ScreenHandler::OnReceive(uint8_t* data, ULONG size) +{ + if (!size) return; + + switch (data[0]) { + case COMMAND_NEXT: + // Server ready, handled externally + NSLog(@"Received COMMAND_NEXT from server"); + if (!m_running) { + start(m_client, g_myClientID); + } + break; + + case COMMAND_SCREEN_CONTROL: + // Handle mouse/keyboard control commands + // Protocol: [COMMAND_SCREEN_CONTROL:1][MSG64:48] + if (size >= 1 + sizeof(MSG64_MAC) && m_inputHandler) { + MSG64_MAC msg; + memcpy(&msg, data + 1, sizeof(MSG64_MAC)); + + // Convert physical pixel coordinates to logical point coordinates + // Server sends coordinates in physical pixels (matching our captured screen) + // CGEvent expects logical points (for Retina displays, physical/scale) + if (m_scaleFactor > 1.0) { + // Extract coordinates from lParam (MAKELPARAM format: low=x, high=y) + int x = (int)(msg.lParam & 0xFFFF); + int y = (int)((msg.lParam >> 16) & 0xFFFF); + + // Scale down to logical coordinates + x = (int)(x / m_scaleFactor); + y = (int)(y / m_scaleFactor); + + // Update lParam with scaled coordinates + msg.lParam = (uint64_t)x | ((uint64_t)y << 16); + msg.pt_x = x; + msg.pt_y = y; + } + + m_inputHandler->handleInputEvent(&msg); + } + break; + + case CMD_QUALITY_LEVEL: + if (size >= 2) { + int8_t level = (int8_t)data[1]; + bool persist = (size >= 3) ? data[2] : false; + applyQualityLevel(level, persist); + } + break; + + default: + break; + } +} + +void ScreenHandler::applyQualityLevel(int8_t level, bool persist) +{ + m_qualityLevel = level; + + if (level == QUALITY_DISABLED) { + NSLog(@"Quality: Disabled"); + return; + } + + // Quality profiles: [FPS, Algorithm] + // H264 provides best compression for remote desktop + // Note: macOS uses slightly higher FPS than Windows for smoother experience + static const int profiles[QUALITY_COUNT][2] = { + {5, ALGORITHM_GRAY}, // Level 0: Emergency (very low bandwidth) + {10, ALGORITHM_RGB565}, // Level 1: Low + {15, ALGORITHM_H264}, // Level 2: Medium (office work default) + {20, ALGORITHM_H264}, // Level 3: Good + {25, ALGORITHM_H264}, // Level 4: High + {30, ALGORITHM_H264}, // Level 5: Smooth + }; + + if (level >= 0 && level < QUALITY_COUNT) { + m_maxFPS.store(profiles[level][0]); + m_algorithm.store(profiles[level][1]); + NSLog(@"Quality: Level=%d, FPS=%d, Algo=%d", level, profiles[level][0], profiles[level][1]); + } else { + NSLog(@"Quality: Adaptive mode"); + } +} + +bool ScreenHandler::captureScreen(std::vector& buffer) +{ + // Create image from display + CGImageRef image = CGDisplayCreateImage(m_displayID); + if (!image) { + NSLog(@"Failed to capture screen image"); + return false; + } + + size_t width = CGImageGetWidth(image); + size_t height = CGImageGetHeight(image); + + if (width != (size_t)m_width || height != (size_t)m_height) { + // Screen resolution changed, need to reinitialize + CGImageRelease(image); + NSLog(@"Screen resolution changed: %zux%zu", width, height); + return false; + } + + // Create bitmap context to get raw pixel data + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + size_t bytesPerRow = width * 4; + + // Temporary buffer for top-down BGRA + std::vector tempBuffer(bytesPerRow * height); + + CGContextRef context = CGBitmapContextCreate( + tempBuffer.data(), + width, + height, + 8, + bytesPerRow, + colorSpace, + kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little // BGRA + ); + + CGColorSpaceRelease(colorSpace); + + if (!context) { + CGImageRelease(image); + NSLog(@"Failed to create bitmap context"); + return false; + } + + // Draw image into context + CGContextDrawImage(context, CGRectMake(0, 0, width, height), image); + CGContextRelease(context); + CGImageRelease(image); + + // Flip vertically (BMP is bottom-up, CGImage is top-down) + for (size_t y = 0; y < height; y++) { + size_t srcRow = y; + size_t dstRow = height - 1 - y; + memcpy(buffer.data() + dstRow * bytesPerRow, + tempBuffer.data() + srcRow * bytesPerRow, + bytesPerRow); + } + + return true; +} + +void ScreenHandler::sendFirstScreen() +{ + if (!captureScreen(m_currFrame)) return; + if (!m_client) return; + + uint32_t imgSize = m_bmpHeader.biSizeImage; + std::vector buf(1 + imgSize); + buf[0] = TOKEN_FIRSTSCREEN; + memcpy(&buf[1], m_currFrame.data(), imgSize); + + m_client->Send2Server((char*)buf.data(), buf.size()); + + // Save as previous frame + m_prevFrame = m_currFrame; +} + +void ScreenHandler::sendDiffFrame() +{ + if (!captureScreen(m_currFrame)) return; + if (!m_client) return; + + uint8_t* out = m_diffBuffer.data(); + out[0] = TOKEN_NEXTSCREEN; + uint8_t* data = out + 1; + + // Write algorithm type + uint8_t algo = m_algorithm.load(); + memcpy(data, &algo, sizeof(uint8_t)); + + // Write cursor position (simple 0 for now) + int32_t cursorX = 0, cursorY = 0; + memcpy(data + 1, &cursorX, sizeof(int32_t)); + memcpy(data + 1 + sizeof(int32_t), &cursorY, sizeof(int32_t)); + + // Write cursor type + uint8_t cursorType = 0; + memcpy(data + 1 + 2 * sizeof(int32_t), &cursorType, sizeof(uint8_t)); + + uint32_t headerSize = 1 + 2 * sizeof(int32_t) + 1; + uint8_t* diffData = data + headerSize; + uint32_t diffLen = compareBitmap(m_currFrame.data(), m_prevFrame.data(), + diffData, m_bmpHeader.biSizeImage, algo); + + uint32_t totalLen = 1 + headerSize + diffLen; + m_client->Send2Server((char*)out, totalLen); + + // Update previous frame + std::swap(m_prevFrame, m_currFrame); +} + +void ScreenHandler::sendH264Frame(bool keyframe) +{ + if (!captureScreen(m_currFrame)) return; + if (!m_client) return; + + // Initialize encoder if needed + if (!m_h264Encoder) { + m_h264Encoder = std::make_unique(); + int fps = m_maxFPS.load(); + if (fps <= 0) fps = 30; + if (!m_h264Encoder->open(m_width, m_height, fps, m_h264Bitrate)) { + NSLog(@"Failed to initialize H264 encoder: %s", m_h264Encoder->getLastError()); + m_h264Encoder.reset(); + return; + } + NSLog(@"H264 encoder initialized: %dx%d @ %d fps", m_width, m_height, fps); + } + + // Force keyframe if requested + if (keyframe) { + m_h264Encoder->forceKeyframe(); + } + + // Encode frame + uint8_t* encodedData = nullptr; + uint32_t encodedSize = 0; + uint32_t stride = m_width * 4; + + int result = m_h264Encoder->encode( + m_currFrame.data(), + 32, // bpp + stride, + m_width, + m_height, + &encodedData, + &encodedSize, + false // Don't flip - keep bottom-up format like Windows client + ); + + if (result <= 0 || !encodedData || encodedSize == 0) { + return; + } + + // Build packet: [TOKEN_NEXTSCREEN][ALGORITHM_H264][CursorX][CursorY][CursorType][H264Data] + // Note: H264 always uses TOKEN_NEXTSCREEN because: + // - Server's TOKEN_KEYFRAME handler does nothing for H264 (just break) + // - Server's TOKEN_NEXTSCREEN handler calls Decode() for H264 + // - H264 encoder manages keyframes (I-frames) internally + // - FFmpeg decoder auto-detects I-frames vs P-frames + uint32_t headerSize = 1 + 1 + 2 * sizeof(int32_t) + 1; + std::vector packet(headerSize + encodedSize); + + packet[0] = TOKEN_NEXTSCREEN; + packet[1] = ALGORITHM_H264; + + // Cursor position (0 for now) + int32_t cursorX = 0, cursorY = 0; + memcpy(&packet[2], &cursorX, sizeof(int32_t)); + memcpy(&packet[2 + sizeof(int32_t)], &cursorY, sizeof(int32_t)); + + // Cursor type + packet[2 + 2 * sizeof(int32_t)] = 0; + + // H264 data + memcpy(&packet[headerSize], encodedData, encodedSize); + + m_client->Send2Server((char*)packet.data(), packet.size()); +} + +uint32_t ScreenHandler::compareBitmap(const uint8_t* curr, const uint8_t* prev, + uint8_t* outBuf, uint32_t totalBytes, uint8_t algo) +{ + const uint32_t bytesPerPixel = 4; + const uint32_t totalPixels = totalBytes / bytesPerPixel; + const uint32_t gapThreshold = 8; + const uint32_t ratio = (algo == ALGORITHM_GRAY || algo == ALGORITHM_RGB565) ? 4 : 1; + + uint32_t outOffset = 0; + uint32_t i = 0; + + while (i < totalPixels) { + // Skip identical pixels + while (i < totalPixels && + *(uint32_t*)(curr + i * 4) == *(uint32_t*)(prev + i * 4)) { + i++; + } + if (i >= totalPixels) break; + + uint32_t start = i; + uint32_t lastDiff = i; + + while (i < totalPixels) { + if (*(uint32_t*)(curr + i * 4) != *(uint32_t*)(prev + i * 4)) { + lastDiff = i; + } else if (i - lastDiff > gapThreshold) { + break; + } + i++; + } + + uint32_t end = lastDiff + 1; + uint32_t count = end - start; + uint32_t byteOffset = start * bytesPerPixel; + uint32_t byteCount = count * bytesPerPixel; + + // Write byteOffset + memcpy(outBuf + outOffset, &byteOffset, sizeof(uint32_t)); + outOffset += sizeof(uint32_t); + + // Write length + uint32_t lengthField = byteCount / ratio; + memcpy(outBuf + outOffset, &lengthField, sizeof(uint32_t)); + outOffset += sizeof(uint32_t); + + // Write pixel data + const uint8_t* srcData = curr + byteOffset; + if (algo == ALGORITHM_RGB565) { + convertBGRAtoRGB565(srcData, (uint16_t*)(outBuf + outOffset), count); + outOffset += count * 2; + } else if (algo == ALGORITHM_GRAY) { + convertBGRAtoGray(srcData, outBuf + outOffset, count); + outOffset += count; + } else { + memcpy(outBuf + outOffset, srcData, byteCount); + outOffset += byteCount; + } + } + + return outOffset; +} + +void ScreenHandler::convertBGRAtoGray(const uint8_t* src, uint8_t* dst, uint32_t pixelCount) +{ + for (uint32_t i = 0; i < pixelCount; i++) { + uint8_t b = src[i * 4 + 0]; + uint8_t g = src[i * 4 + 1]; + uint8_t r = src[i * 4 + 2]; + dst[i] = (uint8_t)((306 * r + 601 * g + 117 * b) >> 10); + } +} + +void ScreenHandler::convertBGRAtoRGB565(const uint8_t* src, uint16_t* dst, uint32_t pixelCount) +{ + for (uint32_t i = 0; i < pixelCount; i++) { + uint8_t b = src[i * 4 + 0]; + uint8_t g = src[i * 4 + 1]; + uint8_t r = src[i * 4 + 2]; + uint16_t r5 = (r >> 3) & 0x1F; + uint16_t g6 = (g >> 2) & 0x3F; + uint16_t b5 = (b >> 3) & 0x1F; + dst[i] = (r5 << 11) | (g6 << 5) | b5; + } +} + +uint64_t ScreenHandler::getTickMs() +{ + static mach_timebase_info_data_t timebase = {0, 0}; + if (timebase.denom == 0) { + mach_timebase_info(&timebase); + } + uint64_t now = mach_absolute_time(); + return (now * timebase.numer / timebase.denom) / 1000000; +} + +void ScreenHandler::captureLoop() +{ + NSLog(@"ScreenHandler CaptureLoop started (%dx%d)", m_width, m_height); + + uint8_t currentAlgo = m_algorithm.load(); + + // Always send raw first frame (TOKEN_FIRSTSCREEN) to initialize server display + // This matches Windows client behavior: first frame is always raw bitmap, + // even in H264 mode. Server needs TOKEN_FIRSTSCREEN to set m_bIsFirst = FALSE. + sendFirstScreen(); + + // Small delay to ensure first frame is processed before H264 stream starts + usleep(50000); // 50ms, same as Windows client + + while (m_running) { + uint64_t start = getTickMs(); + + uint8_t algo = m_algorithm.load(); + + // Check if algorithm changed + if (algo != currentAlgo) { + NSLog(@"Algorithm changed: %d -> %d", currentAlgo, algo); + currentAlgo = algo; + + // If switching to/from H264, reset encoder + if (algo == ALGORITHM_H264) { + // Starting H264 - will be initialized in sendH264Frame + sendH264Frame(true); // First H264 frame is keyframe + } else if (m_h264Encoder) { + // Switching away from H264 - close encoder + m_h264Encoder->close(); + m_h264Encoder.reset(); + sendFirstScreen(); // Send full frame for DIFF modes + } + } else { + // Normal frame + if (algo == ALGORITHM_H264) { + sendH264Frame(false); + } else { + sendDiffFrame(); + } + } + + int fps = m_maxFPS.load(); + if (fps <= 0) fps = 10; + int sleepMs = 1000 / fps; + + int elapsed = (int)(getTickMs() - start); + int wait = sleepMs - elapsed; + if (wait > 0) { + usleep(wait * 1000); + } + } + + NSLog(@"ScreenHandler CaptureLoop stopped"); +} diff --git a/macos/SystemManager.h b/macos/SystemManager.h new file mode 100644 index 0000000..5f11383 --- /dev/null +++ b/macos/SystemManager.h @@ -0,0 +1,40 @@ +#pragma once + +#include +#include +#include + +// Forward declaration +class IOCPClient; + +class SystemManager { +public: + SystemManager(IOCPClient* client, uint64_t clientID); + ~SystemManager(); + + // Handle commands from server + void onReceive(const uint8_t* data, size_t size); + +private: + // Send process list to server + void sendProcessList(); + + // Kill processes by PID + void killProcesses(const uint8_t* data, size_t size); + + // Send window list (limited on macOS without accessibility) + void sendWindowsList(); + + // Get process name by PID + static std::string getProcessName(pid_t pid); + + // Get process executable path by PID + static std::string getProcessPath(pid_t pid); + + // Get all running PIDs + static std::vector getAllPids(); + +private: + IOCPClient* m_client; + uint64_t m_clientID; +}; diff --git a/macos/SystemManager.mm b/macos/SystemManager.mm new file mode 100644 index 0000000..7976dfd --- /dev/null +++ b/macos/SystemManager.mm @@ -0,0 +1,201 @@ +#import "SystemManager.h" +#import "../client/IOCPClient.h" +#import +#import +#import +#import +#import + +SystemManager::SystemManager(IOCPClient* client, uint64_t clientID) + : m_client(client) + , m_clientID(clientID) +{ + // Send initial process list on connection + sendProcessList(); +} + +SystemManager::~SystemManager() +{ +} + +void SystemManager::onReceive(const uint8_t* data, size_t size) +{ + if (!data || size == 0) return; + + switch (data[0]) { + case COMMAND_PSLIST: + sendProcessList(); + break; + + case COMMAND_KILLPROCESS: + if (size > 1) { + killProcesses(data + 1, size - 1); + // Refresh list after kill + usleep(100000); // 100ms wait + sendProcessList(); + } + break; + + case COMMAND_WSLIST: + sendWindowsList(); + break; + + default: + NSLog(@"SystemManager: Unknown command: %d", (int)data[0]); + break; + } +} + +std::vector SystemManager::getAllPids() +{ + std::vector pids; + + // Get number of processes + int count = proc_listpids(PROC_ALL_PIDS, 0, NULL, 0); + if (count <= 0) return pids; + + // Allocate buffer for PIDs + std::vector buffer(count * 2); // Extra space for new processes + count = proc_listpids(PROC_ALL_PIDS, 0, buffer.data(), (int)(buffer.size() * sizeof(pid_t))); + if (count <= 0) return pids; + + int numPids = count / sizeof(pid_t); + for (int i = 0; i < numPids; i++) { + if (buffer[i] > 0) { + pids.push_back(buffer[i]); + } + } + + return pids; +} + +std::string SystemManager::getProcessName(pid_t pid) +{ + char name[PROC_PIDPATHINFO_MAXSIZE]; + memset(name, 0, sizeof(name)); + + struct proc_bsdinfo info; + if (proc_pidinfo(pid, PROC_PIDTBSDINFO, 0, &info, sizeof(info)) > 0) { + return std::string(info.pbi_name); + } + + return ""; +} + +std::string SystemManager::getProcessPath(pid_t pid) +{ + char path[PROC_PIDPATHINFO_MAXSIZE]; + memset(path, 0, sizeof(path)); + + if (proc_pidpath(pid, path, sizeof(path)) > 0) { + return std::string(path); + } + + return ""; +} + +void SystemManager::sendProcessList() +{ + if (!m_client) return; + + std::vector buf; + buf.reserve(64 * 1024); + + // Token header + buf.push_back(TOKEN_PSLIST); + + // Architecture string +#if defined(__arm64__) || defined(__aarch64__) + const char* arch = "arm64"; +#else + const char* arch = "x64"; +#endif + + std::vector pids = getAllPids(); + + for (pid_t pid : pids) { + if (pid <= 0) continue; + + std::string name = getProcessName(pid); + if (name.empty()) continue; + + std::string path = getProcessPath(pid); + if (path.empty()) { + path = "[" + name + "]"; + } + + // Format: "processname:arch" + std::string exeFile = name + ":" + arch; + + // Write PID (4 bytes, DWORD) + uint32_t dwPid = (uint32_t)pid; + const uint8_t* p = (const uint8_t*)&dwPid; + buf.insert(buf.end(), p, p + sizeof(uint32_t)); + + // Write exeFile (null-terminated) + buf.insert(buf.end(), exeFile.begin(), exeFile.end()); + buf.push_back(0); + + // Write fullPath (null-terminated) + buf.insert(buf.end(), path.begin(), path.end()); + buf.push_back(0); + } + + m_client->Send2Server((char*)buf.data(), buf.size()); + NSLog(@"SystemManager SendProcessList: %zu bytes, %zu processes", + buf.size(), pids.size()); +} + +void SystemManager::killProcesses(const uint8_t* data, size_t size) +{ + // Each PID is 4 bytes (DWORD) + for (size_t i = 0; i + sizeof(uint32_t) <= size; i += sizeof(uint32_t)) { + uint32_t dwPid = *(uint32_t*)(data + i); + pid_t pid = (pid_t)dwPid; + + // Don't allow killing kernel/launchd + if (pid <= 1) continue; + + // Don't allow killing ourselves + if (pid == getpid()) continue; + + int ret = kill(pid, SIGKILL); + NSLog(@"SystemManager kill(%d, SIGKILL) = %d", (int)pid, ret); + } +} + +void SystemManager::sendWindowsList() +{ + if (!m_client) return; + + std::vector buf; + buf.push_back(TOKEN_WSLIST); + + // Get list of running applications + NSArray* apps = [[NSWorkspace sharedWorkspace] runningApplications]; + + for (NSRunningApplication* app in apps) { + // Only include apps with windows + if (app.activationPolicy != NSApplicationActivationPolicyRegular) { + continue; + } + + NSString* name = app.localizedName; + if (!name) continue; + + pid_t pid = app.processIdentifier; + + // Write window handle (use PID as pseudo-handle) + uint64_t hwnd = (uint64_t)pid; + const uint8_t* p = (const uint8_t*)&hwnd; + buf.insert(buf.end(), p, p + sizeof(uint64_t)); + + // Write window title (null-terminated) + const char* utf8Name = [name UTF8String]; + buf.insert(buf.end(), utf8Name, utf8Name + strlen(utf8Name)); + buf.push_back(0); + } + + m_client->Send2Server((char*)buf.data(), buf.size()); + NSLog(@"SystemManager SendWindowsList: %zu bytes", buf.size()); +} diff --git a/macos/build.sh b/macos/build.sh new file mode 100644 index 0000000..b5d3b94 --- /dev/null +++ b/macos/build.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +# macOS Ghost Client Build Script +# Usage: ./build.sh + +set -e + +echo "=== macOS Ghost Client Build ===" +echo "" + +# Check for Xcode Command Line Tools +if ! command -v clang &> /dev/null; then + echo "Error: Xcode Command Line Tools not installed" + echo "Run: xcode-select --install" + exit 1 +fi + +# Check for CMake +if ! command -v cmake &> /dev/null; then + echo "Error: CMake not installed" + echo "Install with: brew install cmake" + exit 1 +fi + +# Create build directory +mkdir -p build +cd build + +# Configure +echo "Configuring..." +cmake .. -DCMAKE_BUILD_TYPE=Release + +# Build +echo "" +echo "Building..." +cmake --build . --config Release -j$(sysctl -n hw.ncpu) + +# Done +echo "" +echo "=== Build Complete ===" +echo "Executable: build/bin/ghost" +echo "" +echo "To run:" +echo " ./bin/ghost [server_ip] [port]" +echo "" +echo "Example:" +echo " ./bin/ghost 192.168.0.55 6543" diff --git a/macos/lib/libzstd.a b/macos/lib/libzstd.a new file mode 100644 index 0000000000000000000000000000000000000000..9eca70ad8738819cc990e6b718e5001ab57f717e GIT binary patch literal 810296 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�q7pQCX5&hqMaI*OcU2RuouhdBC!gcI}9y670QE z<5P?0TMA; zB{cK-7GyJTO(jk|Ra+`5%kyZnblEBkdfin8qMA0EV)y;frSmPz8h6opa0uIiEm<|C zE6PhO59OAuDX@G?DO!ank>#p&@TU4wJ%Mzp09CY>AhHW#EJcO1;JPa!TiaP=$t^>= zwC;fdt3oD}QWQ8#NC%cQHXsix9M}+3gBnwo?@&sGS;OUwn(0>T6Wh3IdD@pcKn^OB zz`a*Qg}TaZ(S@Y#=fu6o9N4F2smi5Oja4EQbyBMh?vin54+pC(v@%8sJCGX`0ybc{ z3kvmn(SwT;@hSSix@ zv!Z}XdgU5$+MVb(iqAoNdQfF4o&wsgEY!vfO>4nA$`)l-E%Br>%Yu6svsfw5Q>t9P zWo=BoVI4L}Rb^(rQA20{;)S*v0q>E3aTW@fdD zi6uZ>1DaW=Vqy*ubE(WnRZPqV;(FN3B`PMS0ipcMOjR-QJ|M=JnR8W4j00l)k~u}i z#7RI*zB4TS0w#VA#5IDMS5!>w2I6|b%#Tz| z{0k6z^2|S~nD{<04CWImCLRT1KAG8}Vq!ZG^UBNvDkkm+V&0lb^D$sz6A(kM%;!~1 z+y%tgE0a2UVB!{_3FgfzCO!$om??9eiis6KBg`c#CguY%RLsm#F>yH%`ufal6%#Xo z7?NhDshDU3`oVmkiitCU7*}S-shBt(h)R?>M#V(rl~|Sunh6sDgaLu_nDK#fa9E%m zH#1Pa&lV`BWd_RG%LC<{{6M*+B2ZrUWT3oR+9CzY4bm?Be_m?B|7K}F{vVLq@t-EY zf$|CIefg_+o_pEd!R};D{zr<#L z_P?9WKjHYQ*!){IKg8w_*qp%TJ~mT5r})!&ajS~yYh?3x*xbtIa5n#e%^z|2t8D%? zn~gkgYhd&JY$o}ouRmsvPpdC~CI85qHt$0lSM)6a^(nDW!vxf)mO*uzHa$V`TfFPd z^)h{~%hC1bdYL}Q<>-2Iy-c6&a&*19US`bF9H+b9;$3g9ml-o%-du0-t~b13fp~`I z1)sIia^!l8cfH{So~LVGaQmp{+4UChdc%vl0Ie`@+6*j3t8ciHS>u)ajn}D5(z6%D z+2b@1GhA=eU2pN!{FLV#>s#jV=YA|XCLBl7?F}A!J^L8yim<5Zk-mlM(vS~2A9}hq zKWwIINIz~)&_CSXz6T>ZEqW+E5=GtU?9ktSV||Mj&vO(O&lS+6(W2UT{=b!eq>1Uu z;b5f4p!k~5VR5`HIaLq0(vP$woDE(n5cPe1Fq2NC8J+)YKzd(-A3fAI=|_IiS5trZ zKY1eh?7wxbmo;Op(Ehbybs=;n8CW-o#X8Ia>yh0t^Y3xSVC`X^uww3#OjN{ zLine368GBI5oPUb7}iLF!bD?z>ICO@tRGfe*aftg4 zaxC%@@%DXU_&hnFIPCD=$fwucyRH}OH5;U1J++|au64cZ&iaY?b67W-ykMI16ykc- zC=wuWef3SPk zU0Aa_kM%e3A_8mqD6WWI|4jMdhXJDT-!HA-@n3i+`_KRO_#2i`<8h#%Oo0KFPho+qe#)XYXa7LOn8o#d>U5ON(1~d0kWh)|=rUd0jSP!Bl4^`1FYsVs4X6rnj&r z-3+(*0IXHZVZ{>OuOMDC;w2u@`qLH3w5?GxJFO;LLR?UoQ!zBN*qYwK!K7+pS z+(glM9_!CtaHn7)WB*M>|Z3n6S z#8BILH`b}NpQ)lT=8LCx#Dp8sj>h)T+I$Y$&y6SMgVt2goC4aDTduFd`uZkyef>J< z_@QiUG=e|I^-t}5Nj5s84aQD?$#`1bM-tJh(Q^#z>)mpsvqO&TbOxl>IOH+T*bs5L zQxY>R25}(DBCbxv+9~>cXEAu+^VPsi%7+p4?i1_-*}vW1R}B7_e_t$}0^XqA9SB93 zO=trYrUYR!zf{8%ULVLVuCw>m!+$;eLncLZVcq#8)lsY~n~mc1hLKnk29F>j8`_|2 zeFjsOR~^N3PX!Hgc0ku^9&1Y|xns#2=8?99`h8}nIUHCA3<2f>gMdjuf1nk}ba%#x znM5bnsx!)87U7?uE}0>lUXg7zy{M-HlC-*eqR4&=ZQ=#ce#H>n+GQBldKLa?O}m!t z)*G^3N8M_Y!aAdbu_tbNLu6M-SjG(G!wmX^LH}N#^q08k4+i~C&>sx?i}wXPgF%0B z9T4;v=K?{0aS{;p7h8d#zaBh1F;UD6MIBanhdk6H4{e~m9_?u_Xg5ZQY$1g@&sxP* zY%a<^b*DJ+Ea(jr!#bm6W6yi>&qh8IGAu*b?(Ga0w*L1KE=rbG$J{Bh10@kbdFu)i z!(UH|>x`3a{UIXM{1(M)5!t;4gkv3d=(@7@`pNI@epU+IRzKW`dLEJ??&{bbDnhr- zlg&LFQ9tJ)y(WK={Tkx5$i@t-9M(Ax{0fU}h-?GDDBi7*edr4!$Pe}n43A5W1D)oc z2`GD_w-$Bob+`$Hm*j9IyohUz43|Y`8}d&yD)GQSy19mUncCclR*an^C|o$gDDlD{ z`o9R`#WP4}Q2s}W?BBsX4F0IB(I3*MX_UAqKPxytT_}H|bt34Qfc)5zpYwO`jjZ52 zkxZ4*mbLuEBR@nV?OiwzUSO}#tY=Y&&r7zN3n=4Wl(*l6le<3#Z#PeRd-p~mJJAOv zJQEb^JOV#Q;pY_mv`NFvFQa~j!0)Gq(2Tapr*^kV2B)7N`IVjT!S7-AYnbr%?vLOn zZ_?4-6J@_qT8S(21`1dB>vDfKzI_iZJY4m~?GGotIV-f5=g?w>>C)5tKI;_bZt^LJ( zG>{D)RfN|5K80MmYB0BI?bnEQ0=o?8I2!69FY9Vb+lx_0$|Y%A2;`d+ZS+&nKkcql zC}(L~6!wF?0Q#dqa|inVaO{PXuzyV!;Yyv3M;i+Z4bLFi&;tI^{;q<54vZ#$Vb~`Z zZj0}nCxDA#k~AL?C0vephkv(gShvkkJ1Xqg0>CxYe;u)BbE*vNEKJ2Zf|8ogG~tI&Wt zxDj znVK@iFWS?#Q`{bJJ6^QQ+m4spCGqgxuLiQuVILZ`N#c>#CLJgzYG?nrF)&(do8I{s zla4^`AaA3#IYHMp?chuEZwIn-xNREHHU-+IEDLi(O-}nnv`;(QCv*eZv?o$&pWr#Q zPaCyQl*1&bJg5!ipxje}MTXU8>9n9cslC06a;GsU`AtFl)VrbHXPdnM)ny1* z+GunCfYL_e?>f9YP7d2POdjT}Kskh>zYE9sQpR|)LdfQgH7nZV(N2jsG-kL!?G!Xl zpmqv+sGVwcWisl@Td>pW$!|E_s~9UC)U{KnSO&GxVx(P+x^fTFGD;@wRUFaT1YVnr z0e-Sj|D$~(Id%Ru)R12m%zBe?$}SK zJojOO2r@PAu1E@D4?bn)tC&ds$UK+L&jqP^+FdFpt^<;LwTg+$*__ShE=;1x{Vyse z?qYKTn@R5lA~HW$F%dG9=E<3pR7@;{BS_B7S22|wjerI>;>`$zis&Y} zES|?tuYV;S1DQ3(y+CFVsOb@Qu{ji-C_VA`k$VK2zs=_7*o-l-NBD=yjJ#=j1SI95 zZ>wgrR*rU<$&c%CUyQ1roaWs@w7p071r*(dY{?68J9UiQSAjjMU!ghayp)+tp7!%Kj-n6u(GA1WKJ5v>#|i73qkz z$NOB4Mu%44$REY0Jxr!%yygC#9L*;OOhaUpw?h0Q-4Pyr^tU{}(ahl}5b390gPGQ3 zDnM`pP_Lh&JkXEQAwU1ahoV*Xngd<$v_D7Pqobbh=t7@k5m6uBc;YRb)1Wawndg0I z!T90E6NeO?RFn``yRkQ4tbghQHLRN=rq6>H2NX}2$0FIVJZ%ykL*!3T#8Jls=s*I+Z=qL+{IhROWj5L^Nr1>EB^} z+s_2}^sd*4OLjFx)Eni9wu|XF|Bh3~_+nm_viFC3$#2>(&YIy~zgf4AzS%bPy3IG) zC##KXw0*LgSt~~^U$EyZV&%QBbqU9_ zgad3rgVtyvt5CMrz!l$I)y6x%CXUa@0se^iAZ}cbK5nwS)jCi!$CpEu4Nn)xcLn*y zz7BfWMKugnZ>PbTWbzjLBiTcNs21)m-Y4%iEDK54U%3$GuvA-2=(mE#om%+JhiG%hSPDJIMW z^Lq2R-i6PO=mmx?Y8W9uWga(mcF?%Ch1*B8!A{sjW0VN)F+ktnA>Dmv*B!x&Y~v#q zHQh0O5m?($Cv_xBsr$<4eIwpQ>I-FJ{Juq^{dKtCb!WXK;ryU&$Gk9cRmR*A?2E`0 zCNuWnC`j()mIAj=3VyO|`}LP9LsM<-C*qCc>J#fn)UOX2XAKjl=LL(aX;>pUC&Yn} z2;1EK@uqS050bli9L|Yd&4t^x#LV;s>x0I{%vz8hz1}!ZB&DS*%q4+4AuQPAwWO3jNjDtSs^$g=ATZ~Z}X|~@7p8R<6qm`qOddThX5rQm zF?cV$ONuGHD;a)L6+h&r`E&b`V-(sD?=H~20rWK|Lw^sQ7RI^R4wLQRHk^%Jpo`aG zQqPJN|1v2ied_3O=?k}wNJn}_p|FSl^mv`!aB;9`l_ zgteEwGS1~euakqk{z{JMRL}jYyjyb{v;aeANN zRmV-JT$kzZ-`pYr(n%zD$4H@lwTRn10Ihtj!S=#{n7dx>U&yZdio`lZ4t`W zxZX6*I4dpPi2AS9`)FgwBdE6rsa_gEj|jrKSG;#SesX5Z^_Q+S|Lzah(jMx&*4kHp z2D0VarGo#yw(a^y*J9>9d*H2xL*)dU5*HZ+>(pwEb7tPTe?qZP6W< zuPqXx&LzU=y!X`~oOw3+)obs)`~J0I374-ehE6>^*w!-bTgE*{pFXwonJ3MADs09* z;XinPXWUcfJ%%w!Eh~)1J@Ypo-uVLD-n-AZ=fczP?JUPTdM?PO5Jfhfym4x0=-=Mo zx#a!BJ5NeDrzwRwKRx)~&U=5j{mi|+`>x%a(|N7@um8B#@Z_*PVTd~nakpV@2mX$? z#hdp`durI8Q%E23kn9z^SK!y%uFQvBnh1qt{I?)7_FS>?^g~H^tFzVg&;67}# zt*>{zaZfMu0lB*eYr@Cdet2>x(Q(QuPM^I4Z6EUXL^$L-^m!x?i7w>pc-zbHH`%y{ zbk-Q}90-OitY2^1gEgz;^?x|Ab36QDP5x>U>PPF-3y-HE9pjp`AGQrMd>;J{nQG1G??%Y`n zyW&vTh1&Y}$B)`m|MZES^{^`$F8X&N9g>#|SY96f67mvx9V9Pr!b5L4auNK)Smjy_ z_;(TfD}{_$2pRDSWJD=sgtwdtMY*1>!@4$|J$}vBQhuXzXT!%Qc7|_GYMF56^iI-I z_oCe6+7BTwM$S{vo?f)=9?5*XcvjG!df2P^3ffaF1uJ$_p7LS$7SOlix{LeBT1Eh};UfyxhYa$9yhopBsv8g9!WuC^Q<-0^2>7cArZMM%e= zmG+5Fot|@0Wd9w%%lKWxkLFi2hroD^_BG$q{li~%w0(N_rJTh*zrQ>2m0uo?PMtVu z?eU(c5mb4QHa#9=YO-K^kx2>qaHoYUdWH&5`)%o=F*hFXX@IC^cSTw3BmOPy&eM)T z^mVZNn?UemQ2cbBn4b4l7!*E}Ll7VF402z73wP41D~}p-Q22c4>FF7YKPBuw6n{3e z`y@4*LGd@Ud)g50+PUGO__Lo0qy7GP2E`v|QX?LUKeWC<&rt65h#z{wsV|{$2yKi< zK{uQ-J5)@p24b!?wGfDN22-0*Zt$A7^-N(pONtZ-Q0?&1_dO@iicVX6{!p(FOy&22gy2sX zl<|KT{&$2N4fzui)9X==kQsT==KXzM=F@D>;qrW)%wUu@um8K3`7HadVEg*ydk|K`PbU_gY2%!o2~4w zwcjK*Yx3kN_TK@dXD^$z_WX0$QT$r{zrbd#J(3&!wDyfTg<{s)(>!+9+IKO#YwhJ; zHf!y-nEh+*HH+N=%F_sU{JEZg^D>j0-rap}UeT5y57Rh1HDd zgRI~Shq?+pJ$c#Ky-w3>(IG4;&XjMeYBfC{w&WMbzwkL3-S-;Uw=aA6Cl&Kx-#%>NSG_jcgK*7C)l}0l!*cD5 zRY-TXYm+=w(b}!u3O$M<6N`Q+OBT$b#Xn%Ydl68v#bO|E7VT*#*O}T2@SEzhL>Iq%Z3-L4+=J~bNG{&hM}qjbfC z^q@CC->=1kK1F#ZAs+qXWxS={GK~XwFvcMQh*3fJmv9;$QQk^#X+t=Ykrar=2x%~r zuCfo<1k~#-DgX4NbV%%a$OD*f=gF}?t?0ktw*fz8osjml`n>Cn?|tKOYDE0BS<~it zCBpLEBhTbTllw!B8+bf8G@JEKDCk73sL%Tz|xFKhL1rDKZLPZdcBY&v(a1mDE-tL@!wlmUB0~7e$NbeXi-*D}4<1)ufdF zv_9i`&x+@Lr&kc3o-rzjXoo82+SmGy_g3pYMykm45To$eIKE?ukLxm1uDah!Zf>c; zoDUV50uhbNpAh0vdao10f;9AU(*k??(Ox6$y;R%)-{|SanUtve#A;*QmdLHp+d7S28yM|4TdbE|8jFA&cA#YXDqsKF5?`| zXMk=TovA(Zxk1zzan8sH|K{~!BPi@;oaMM^7>n)nBI0DC7>>Ksij9Z%MsBZ(U5C5l z8V6*Pa?a?L$1klr>#v?OI+-5h#Qxr;twADTD&o-lrE^A<7S7EqLmP>pIPB8so-X8T zKjPSnI~eH<4xQCGm41)&IO51Kn9aq~Skne6NI8Q;cjUb#1-sAS$k6@cT#7IL9fGb3 ze8*jfgU^b5UH*=;zhx`V^c3BRvo*-;Wy6@(g*a=_hVwOLj?#7SA+2)9)O9CuZlcXG zZrM~R#JmuDAWvFPMz%>~G8Xa~8=NJ&nuNT8jx*hXqNdwG_vv9h#YdUe{zJXbaj5=w zAVog?b-4lc$PedQ{Bgb|0Owo+aVE!zJvwsZUaY^ZfS$Pv`(3f2HKGV>1sS-1a0Biy zMRQW>$1bHF2oyo>GMxKac436nQX>4ErMR^J9vBS~MvvPP(8fYOJuY+bREi35lrv-FGNm38-km$hJHv)c! z2jQO3`;f0M5w`pBD6}E5GzevX3HO_BGnh;G?2=GW^ZqtWK< zsI$=%w?sOu+vuLtrLpj1m&9tU4LvgE#n_CNN4~WVYloE=NAHb{GK?-pW6VxKxUZg) zMv(az;DJdRVNMGa;gpXatUYGpzR(kgr#Sb5)=ywwgfkuQ$x=po$T0H;DWqt2SpDv- z@Mj{AW9^R0BPvj=&b&5|T?Za?|J>FRDT#xHeD5gn2R!V&I1GE#rJ$aRs8g1@ExW00 zQk#NYjp$O&TBV^5K7hJ-KkDRs)Xh}f9h!psOl5WKh&mNz6gAQq>_r}ra};O?G+sQ1 zbvYyC5JYrM4C+!4&KJgl59S52&JB{NDMI_s4G{^klMgBPz{U;?P+L~QQu-9fHa{EW zlH?4+nJgSmnQ6e8tP-5B0%oTRgL5IyQ?=e$_W?F`AJ~8~tZ^3X(Owtxd8|!XcPWK` zI*&#EGvR+5{Nv7F#s8KWZvRUtzu*C-yHMB?ig2FE&gYrXmo#Ah-dK-eewm|aZawxy z*Gf?zrjM~DEW~-H^az|)*=KU5hXLz=*hAiy3&ei%wj`h*&5ws|ATg89B@(Ua zA%={_IM4J9&W5yF-`kyzJ4|~5Yn3~1&7;I{?R-`=Wc*&NTNNQMCvczWCpeF@R0KQY zG3k3c3NkGtF zZv|@fV|^NOdJz5FZbE-yB+i%7`K+;MkCEcQWrh9_&>yVOzdybn^ap4Bj_V(l1Ld(7 zb-X@lYUjejlD_oG@9%yMX@vbV=>zj!oxACbCGCI5oKxXVED+~F4us&0#3JzKloZl= zR#JHr78;U)VRi($g`sV0aZ-3{_n%@fd@9_ZMV+O0;&nRWyKGeB)ARZ&&Rh_`DNbrH zbZ*o;-m5tCbXE%Lc>()AE(MvKOL68R3H#{NapvMh>-#u=WKzy5trp?VL+Dp}aGzQ( z{N%w;G5nZhlX;0`Hn&=j@22}*(r^OY1|@ube(#pD-l@D$F9Dty4%0pbz8(|98jJlqTZ9YUFr zT^+D!toW6AtT^y4{Gl&s3bZK!aBdyp48&c)4BZ+nJy2XKp~d*lazj&_VG!m9_!@y0&o< z`&6{H5rnY__G&rbLfM}K&xm(arrS`rit+1^L?_8F2hNYRqE9)CGER}U?(V`^itG=e z-4JiJwxg%V%@4D}4{AR+bfdH%E85P)k!ssH9E>xh81G|G)oCi9<0zjt)Jx)h3TVqi z`D{S>Xl3)FQg`zD7NSnm`5AHF_$Q}7fhC9xaozcQ{pzqnl?I(%yi++g8GZp1D zpUd+H;QKo$&%05c?@aog(vFT}{5cut$%s!_|HfMOvR=81LM1DIkF4)fPC<*Q89=uaq`h?rkF0`djF_!DZnLe$JVX7E`wcEyb zU`O(f+>f~4!&^J>PIgZttUE5LwGL(qw*g3Xf&4t_dJk%?!Mm?LWWtz9E*jUos8DRAEYe2Qqi zfNvVmd3zcQ)BFN+knFGEkG_*|9%X(0*`%1REciz_E5d31qTzN#9^LtZJlgpY+`F*P zjJ~x%?#dVt^|yJ`ql4zB62gJ@M$nEq*5G|@TKvBBiUWp#)1NOMg?Y_r+%@mt_%ZVJ zk+$a!yfNb24fLaX?XeOb)0HPRo&#-kx4;GDRg1e2bAwAGXuf5uu}j8c>c?r0{2!f&cPF4dL~Ia}V#XZ_XRsGFqTr*)cUVKDMajX^ zBFj2?k#(-TXr;fO^Y6G%;gI-F+aWOzKY^dr_KuJn|Bmpqe`tg7?`gu^a)WXGHOQXq zRae&Uu!KmVe?z-V3YJ3O5P_X9;e9jWs;%7{Ts1+wen<%y*wcmchE&c!gZqpA0nSMx zpwn?BYVL|jV(w<_*W3qx@1QOZ^*wn+zY9E-(;?OPH$LOB(p}yOP;ukt_8SWS4v7NGEEVmKpPmnIvLoGhs zCq^o_h^TiBt0x8ty4M5sSTq`gMmvqxVW)*ud(iTcSll58wspt>`1#}Kho1pI89xa> z(KZ@&;jLu#`vFa`Yl2-D<~LLyX+9r|UuThH?gs2TjRsxCsL%V0irb-w2;X0HPdm9~ zSUd6k0H+ys6WEEshfcgSoF7PEpd?=V3Rus{mRp!hPZ@4CJlV8r(}($O~T z622RN_GLmG$MM~O=JaSMzCoaVH^5&UY}I`?z(8YMKcRd#U<-5~;Kjji+~?A=>3j6K znuc_=W%^-G+>-;nOgi{P-+C~je~!ZaIOoAT`ql&Vb_W)K9?U0K2i0zkya)5e4GCg3 z$-k{A*P``O)`|OLo%QGkx7%WsZ#=vujp~_DmwEjN;-L1rp%fE4&;|F zI&el``3{9!hIxLkqH~=Gvc0^VE%T3smF#m?fmV8g{#-^*biOTsQ|O`?SyiC zJHhHGcYQnIFut8oY!!`kCx{g?;4PeIK7=vQyO0GX2=^br0fPiN?*3-TJYndec3{9f zo%*RQlWgnG4-@?)_a>qY7hvoWi#t;;nnnL5gXmv?x%k!q@hglmaQBVD^-U1OtH_cU zQFgxUFAQP70Q27Si2EYq*5>c1kEjdo`Fp7{e-ClZ-xu)wH)bE^x0wIN)B!R7jmZUK z{u`47#QZnLYI0J%l!qA1;T@O*$Dkd>VE!KSvIs|>4q{y{La~GXfy|_nNK@qN2dKOhB*emnSUKt7{! zk46yqYcvY_4pP7I4qHNW0Qx}CX#`EMKS<~NXbdWNU#O<@kPs#s{Da);UjW_5Jm@~6 zQD$oU#a#-}9b}?^D-H^F=15T=#z6NG4c?Le80bHY`+}5xpE2N}v5w!tM`JF(gO|o6 zeg{8|R`s1|HiDnsbO#dA86syG!A}obSs&DmJ3EXc#qe08%C{Eur6`kD;-LdFcLVsJ zfinnGCMC5@Mct+EhP;6OaIX~9gK=E;Ld>I{fy{eW3h5kx-9^k@PGTNU^SCL(Ih zREChX%gC?G9&@i)@U9**4C`|Jj;{x1MG13HH0}Y~iup*)^1nO1BGhNQFOWyM)Ie8>dW3YAI#@ z(48}M7Zw(knLlRckGZGE2Y>W@fKF`Y1n`T-S2yF=Jq9sr9>(`1=bhj~G5A&NXLgo= zU&Y{8x@0y}yi+i@(aQEB?n^?ujfe&R?m<4%t)08m5w6J3FjBvDXUkgX^zlbuX zy6tn^J!P}!xZ6zQZvWF?K<<308&|9Swl@C6I6MR6O~`ghY*zYvTu;#7Wu~z=#-u>& z5{yeHqHSYrO5^X3`P*VN#=u#y>`NF=VpoStKc9y@UAkM;9M_Lc5l_t0+Z>-lW*DJA zr11dtcb|a1Uj#{w`#~e_25S5iah=NLaVp-!mi_;0tom!OvFcYtj8!LMoca>Rt6MQv z-H5Sjo^GrfB}VqhX!nO@;d~Kyv3vv`eWQ5|_=dVMv^tK@LElaFZ6L)T>o&un z8xO;{Hypb1;TRK-!2Bkn<%Yo@-%pTRp_8paKT@;6Xsf{maoDpQ0*n)T-QNc9(5kDExIw!Om9j?iRy zup+~W2I#A279zjDFpTN5gZ32AehGbG254{HG`jB>n@05&kq$px98mP(=%=vXGlFEp zFW|l(?h8TlTTC;~EjFA2&Ci17_Z_8kdvV`h7y6@8+%2{rG?yxOqlGw2mAlb^&;`}! z0->L%PYQ98ym4C1PD99IaBmxEPp<=l_VipJ=~j}=P9tbf1HZc|{VV7*!CSS@3{v>ry%YWWi;`=8Y{Z;& zxnYE}5OdejHZ%$egA*dw0t^I^q)e%^XUxH|H@lyTY95Je=p3v_X3YBXt^>@^oLInjekG#K+BcU zqCX7pSAOT$a&;&AvFjT?FbL=pgk(% z$Cc=pat-5S<3w0&m>dv$#VTek86g_~j33>%w!$j1|7nP9eZ*jJzGD#1_rafW)<5ok z;_j2X_XLb{K54KeJP~M1_=`a#JZk-L_w%rSK484F4))K(UV?7eYCXN%I_c!@x&X;J z8RI7_#x`%G-=A+ey8C6=KONxjJP7-jVgE4V8Dkh{9*Z;*5Z8|b#yY=^c*rgRasDY# zBz!23H$RND^zI+Zs{7agkwD*b)Tf!iX_Eb)Fpj7b{^nH6q1~I2_T~UT=hJZCjI^!7 z&paRT`yp+;+mDG}vq(rqntFQ*^C5Jj{w9$y33>E(i-+6W7>{UaJ&m+pLYPTNXCKl` zLY$Ietl8gsXb>Ofg2q1$6A4L3Q_s6^BfNj8NQgsvVRxO}-4KAgG-cdT6<|v^gz-!g zc&hh*7yQphJW&SR4+XjMB+8q3bryQY7R)oBfH__cGtYy0E80Q@%$r33>19?&_YPzi zq8^=_Ve8+E^;8-M^-rYtu{|9$f5)DQI%#ai(~=Q)Cynj-8e^eo?ES#~nw?{Y88fzE zEU2Y*4C6qIw1llG{&*n!PNavsV3$!?#ShZc z`*{~>OvZeW%E1bM_sy(})Ogd4ZwelU8u%63B<0?%zm2B%fSxX-Rfqeu&WnJIkA(z&1@!z4^e5qdJm|wZ|2|LjZ^k`&G>#8I zoaEPKk2|=|V?23&j_B9Rg^IHS&=ZOXsux7#U7*p!{jUQvNoKU8Kl>hJ1f5(oFAe|-i0RWIazAHG9-{%jJepok#sNB{pd^iR}JwxZvmzMlFJyFu>h z{uA!&GK}tN27ZZeY3?Pf@$9}|P%6*W}UD%UD-@(<}pM$LKGK^Qg znd@PXzM#u64)$X_{5Su+rll2f`4?}jZE1sS{`4)#UdY(1n;vL62l+Y=e6Yy2>*3Iy z3wi0|9n#|KP14fGbEM4cHlQ|N&B1(iFZAO<7@yChIT(#&z&{!jnJh^yX2^Evk(9PY z`c-U{&A#VG$_JT}F=L@*hR)yE(~Yuo#ycZ12k10m4i*z)&IrO>U;*kN>N&m#Y*gl} zr29$_S)lsCe9V_0q9Gdo#H=mKcZ>gb9`L{Ofd4P&0XNUzZQDlTIhM{8@vC0zpedjvQWOkre7E7N*RyuVvlG%|03p^Z@AY$ zn$hMyxz~0OdeGt^$VOWKXx{Yjp!J%480!oeCf;;ET$e%gZN zJzUm~b*`nY*q_s52#zhmo;wrfp0wwI{0)=fANdTE*8kE5U39l2r`;%po5PDN?U43Q&YH%BxMVQ zFEC#2`q$*P+JHOTdLU54}QILL_Yno!5B;HmSYTo=1b@s#yoykJMQ|1uGhb(7HcAx!M}QcvvVir zAwR&JA@K2)?Q^7nj6cbvGv-eCQ{+5@srUuRVhTSX#uUq-?Xx?>W|Ydt>5?I^^HY4g zneHrk5o4+;m!I76j1=f>3h`Uii+-&)DA3u3Gwodx?qioW?icV!Yee%za8C!uIKhU{ z&R*;(`xJYOPRq^>lp@Y4QwaUw&eY<3w z4w_ffT$=8R##}36TFH|;i0(_EI}>#GqCVGx?pn~@o21fB<1q{6Q-pS&Lj64jf6&?V zFOodzr#*p!8K^%?ss43Y7d=jSyMR2wv1``9;0ZpNmARX zBoU7Mt#M3i>AM-dsRzHsr+rf z>;+yy`GlXrJ-aBY^N5GWH_3?8E<%cdR%x_~qfZ8NXWS)uk=pX)}nu_iZkG@xIMMYJ3@WD;IUM3wb6T zWfR8P*vI7bgIw@0%5Q&p(&5O0!b$CZSQ{dJY!~z|z#*CpQdA9`Kl|AzI41-H5WV1ypk0GTC=5y~2bvS#`J!rFtTi;v;4Um^CZ zr;ms3-G^?u7W1j8itc@A-Es_c@1!%Y|9{wf7w{^pE8%~?=j3uONk||-2xu-`%!LSn zphTrP0o0I#mP_iLNg$v(B!D0)0hMrR4IWfNovD*LlUTIPiNwpuw8@N9gQyJ#t?1M` zty2;}J>h^PQ!j}{^Z%{)eNPCvSo=NG@Be)BOdbwvzx%rO+V{2BUW3=Ec^C2u&?~7ll^?ox< z_h+t3fR?t*UGXWjr<_gBt$PWckp}PR{N1J9GK5^tJoV@A2RIih#+Rll_4|QJ-ig4M zYih&4o%?{}{q6%wpy?pqH1Yl--t;JV)AQ5?yy@U_Ze29Iu^4z{ zBdPZ&>J49d%V_L;e0$z>s0Eq9s0(@173@{NEpNK=JLh?&LEbd)b^fpMrYo-q@=DM1 zrXTv2yy^Pc|Nro&16hN4(;Y$H^sNSOTJ~su?%H+U^o{VQ;Xep(+BQ=iXq%>*g7*Q* z&|3J@KSU;0=T8&&6mkD5{As~K_|uoFtUeqfO&;|=#>R>BJZgW2D!9?)QQP2AFR~~8tQkkDy$+}MPUg@>R#m>9c}wQa zMOLTRo%Dyk@FKz!2`@6k(+QuL^h$N{q$AZk99Hj2?vQp8zLLB2V(!*=z>Aua_^ayI z3IBm3%=;eU_YnRb;ja^ZyEV+)Wr=Z)g`fJxlq1zYa*XwMBP+*y$MSA;$!A*PoL@w_ zvYV~Sc~eqzb=)OKsvmd6dB<5@<>jnZ+)l)fnd`@M=FM-h+;C@8`sOk9eOGZzo|N6Yq5u?u|y~FdW?a z#~TA~5>Mic!=}_C@QMca2OZJgPV%`EygCVw#!f{WakgM1CLNrDG!_~bQI^nfE(?>; z`99XCbnxjPr`e42pc&_ViDMb#jA37pNqJS=g(X^y_DF)lHBIbXtyz8KpBw-f(P;vW;f zHauJ5sm)bZXCZvK!@L72=KEv#*u8x3LPo2U?~kr@_1wi6KMCLWWi2Eid5P@9*YKHN z);NzK@8*Yp`%~>=_fzn&Yt+SolknbJ;AuDT{Y8|`EoT^>oi34hx*vSrI`(4&ajN7z zaSYv8D>#R>!COA2sep^S?l<6lw`$7$CGv{0-#-fv;SB4a@HLt>2X=!-2R_sNBuwJO z*9)F);ITT>;CKIFgu(9)*0&B`wyf<6yd;0&cmDz2y70S$aVn8*2nerOa|SHXvX^sk zEql%d@O}eYsQZLwM;1C%x0T^xA0RyJxe*4RJ4i=A^1@P%m2xDV9tVDL2jv9gv~d0t zItREXIL3KH$~vav1IVovv`blp-Oia%V5z3HZq?#-8H$7OrX}6$@TWh5@B6XIpO(F? zr0esiyo2m}+Tme;$sO7i)_8BZb&U53Ym9fiHQF1kLb%7Wra3Lnv{v4iFn{&Pz1yJ= zdf6|jSm{fX$a81b&iH|C=0DS0@I%f;(x=jiQ#8vP-$y^fo+nKDmxL7)7OZm$VTa^A zWrmd!CN?c-5ANT-$6lgrwYHmrv4Mz$a%d5k7exXTKbH<0ZfvYn(27)1OEF8FTqyKKYmn z_}=ZT7Y3jFLVkEVYlp!nzmTs!m`|SX>tvqq+L7mLXMWFtCd?7vickK}(CmNmzVp-X z{*pbV#-37DJ&9bJ$p3BS?&dgi&{kwKcr#Ow%e~-nQ?^{}ReiN3m;UpLzIT05m+8CE z?=J312F5G-I`3W2>HFSIwZB`PdcSM0!&=8|raaSxVXfgXI3*BMGyU5$EpiA&XPkaI&FW5X7g)uYSK zg;dW`w(2>u-?v4i=sexZ$cLAxl9Y3djdvt|pB`H?55@kx2-1 z5kq;5slr%89;Fuiq+I0qntV_F-I9){U*3?Q*-L4Uf`n*g;Enuvipc08w`$8UGou7u~|L#h>bm*t6D`rq%AtDM~mQRgC^kd&HV5I zZybWl1=V{LR%@Jl= z);im&_@%bU&3nh$7u4J61HVCsFEZ>^mD=~0yo%efb2zSE`kVCYI@Y$|d?%~tKjvoj zyu3QQdxs@HP{dkxlaz1Pu@-q~spB?y3%1DUrGi7sMR7AbDBrHx(@Ma%$7)ZD*T#7l zOq4edJo_WA)TfR&#&#VKySLpe|2X%QQvSelYdd+{-M?J+H&Sl9>~o-D%}8`i6K5zK za<)NV?(H{&3p(Fo1xI^i+|0ZoaLZ$l!re=(Jw}a887iE1`V3ry_z6v#1HA=uFA>c5 z7ShR^FUjKyGmjv>lc7O-{^r?2>;Cn;h4E!NSoQX*SCFd4E^Yyy{DjK-bD|*IC|WI`bz34Je+UpgDEF?n@%6hrw@LQKA0Dt zc)9csX}`OV_a4B$XCRsTd+8I+7Q6R2be1(>8~a6L4KQdnlX5J`EJ|Jc$G|7XwaFIR ze2aaAI(j4Hwbx<~q~KrqK-khe(%cO`Bg@UZR|?(^fey-K`Si3e<% zV)K>YuEgyF9@hQrK0j{TYs7nvc)*q^4qplGO58r+VcpN^^W(O?PQ2HN2W*)V;VZ#i ziQ5M}toud!{J3quBHpiv2W*)V9N`@Y`F(*5>G2b;rgqYZ-V_<@o&TEeJG+#9`n3yv$4gy3CkkCXm19Dd+PE8) zK3c)M9Op1O)3K3><&{>IU4vZK52U|J-yps~ z`o@M9GmfpcVhQoekHsgJr-<8$J2|mDPu!z$rzMt`h^n_9`0MnU)*loE688mOL4Cze{tW6djt84yBPOo@)vh0 z?(O6+?z?b5ME>I5f_pFd{{;6A+|}eSZZGbikiWQph`XNr#r<%wOQg@Wek@*+gs2i<4{=x zZ4JEzE@ZXrR@I6eZ&#aJ^~hY%er*KfR`tj|vg411v+MWwX63Y#c7JcdNpL>_?zTq@ zyB8oAoQgcMtf`-KUU&tb$Gm5_H?>&2HI@;&zL;9}t~XG3;fK_6?_lUwGS;`x!L`{k zs`Yxp*|+aq2<*$By=WSCWebPUG1C8yl7n|PdB_Gk^fxvRuS0)d1BCZwTMmR5X3GU4 z3u#LNQlGS+_GXDJ^#XXV@;0g4?do|0URJv1aBk%;WEXgLavm2u(CCYcJx%y-_?rpV z2wm1rzQq=+go|G-=Z7-x;LhS7iOt?9tLPILp}#FJMQ4ZXktDp7ySeCjQ(Ge~uAa9X zMdf8$l(WVxuM4^gKS;`xe9lUF(C`)VZsWTP9+8A6Sd?C#*eq_xKL-6a%7Ptd&XUt+ zJQ}|nJI+#`g!ATZWX#-Yt2>9X8G; zvTyMJ%;NKNXV@X>iJPiLyY=|+8!OH6ATrw}iR!3-n(8?*%Hi`&$GwiXD(KMg!?Uhr zT-&seR_>pADyg^s63tgx0kp!8C(K`{dZZug?(eFe52?S%k+iV}9*2J>YuktE@C!q< z^{>p3dxg>UpTmplfZugyp70Uvx{Yh;AL!up#{V90&`P!q%7OM4U zpmQ$e1UMU(v45`l%G#yqGmm|ROgs6Xp`QlxYx=5pRx$S*r!T+Gx0`*Xy#Mmh*FS}( zA`eokaVM;)%g#VE{cRXwXTW7YyjJf;cfPov`E4V#N6xAKG;yRZr{SNj%-mfq_y&+c zJq;hPj5lzPfGa$>#qd76&RD(i;N2BKms6|eOhdoX`T%t(r49k;92iA?;pdfNXLbwe zw)SdW2kC!j1rIesr|DVh*Gc^nzP5Jd%9!AL4`;qE;v}H|$&UVt#z+pl%y-P?xBlhoEyCWk)H8dm3)+v%7^a zu2hU$bYF4zU*4dFI_sIIJ_O%}MC?@49%A>K`*`nZ#!M=4_9wnky&M1C=mX*&+S|dH z^5CDZjc_hR_N<<88E^TMo2wT{IAiFPC9Jgrxh5xe0n)#(&@C}Gun$?0Zj07>jPu7y z)`QdB_k6?{v9m7tEf)OQvu)`uxD8(Jay7x5qQ-k=4NTB@=gQgZxOGCSj2#&_Usxuz z`gNKh(+cm|&v>$F6TE)voq(;F1^AtUE+5g4j!jTqEwsNMw+)#iyUCYI_0%=GIpYN^ z=)U7z7YGB=UjhywbP7bN>>#hJgt&R!jX4-|Hq9mPt(#=LJ&Es?#J=r-@CIx2}=cBOVjj&iU&UcouR7&ENKT zb-?NB;oY5A=RK2G>9&WePtn)%t-O=foUOd^=|Wzwpp-ttTGMp`S{4FVz+Z@@-(C)m zr=ZO#i^F@qEgX8e?d;ooE$FNGJ^Pt(p&#_74|R|~y2`vALN9PmkTT#sbU;r7H?7Nx zK9mH?!PdO4XE29y0=#`ZP5l<*K1=^NtJGz|@wA<>AI%y%;^I4BjOI-IC;H1-)~KnR z(XRV&^WOAryrJYLa*!3FTN}1VzOuh4G^b%j3G2347lDwb^<(#ptln|zOXpGpOE)q z(jTF{&X8XN@GSW^Xd_xb0Y~iA=xtU3ezoA2Z{nB0J<2xv$o=3KL7a4cmCQ{gywBW9 zpOA5L4`F`tx0B}=v}Fq6e)Kv?`$_m(!asxdpHrU9A#z@Np8ZeIJ#KmLto{1FNIf=` zoc15N9}<3G@O`G}GBNp`kNF+KlN_V-B>iKudOF~z2v1U9M@MG$d>+Nmk%jE|Sag{f zG8l$jyzqQ4)K$XRjU7&3MNOh%3r+ZwUu_v$KS0Rz7Q zidHZ8_6zP0(|M9E+DG_ia`%)EzcJr_=U#ayb_2XZ2Xn^_@EtAG?K1Glho5o_^s>@N z$FeSp{EVdcAUl<89nBmjI$uV!?;Xoq1LKVQcbfWV;nU5+j$I0Ij>-9zK5Ot6*)N#! zWWPIxIQsb+`K5p6yzIA(Vb5)A6}o|A*IamQa=#=z<>Ba9`wd}*BiOsk-t8OOLH5_f zzKZRbOE(@4%<<#a94Rq)-3g zu_g8&{F{D%ki^_7yyYU&&SI|o(Ma~2a`qjIo)0Q`!V{x72TnrIE^eW#oR_8C<6~V-^8O{5 zFK?g=;;m!7*}~7^Uax(o`3@UCYyUiDJe}apw4A?7aHChfUe1?#o+IGvm@*`K`HYWw z);RAZYaDsP<6}Q`+=_e`bvXf_R`SSW46xzXb;$Tx=Z=R<9wNgv%BVB?Vv_NfJvQYv z$yl%FOA8Bg|ymyBVJ>wi~RLcjKy>vA1^ zy@WQon>M+dHffpSYDxhA6vlXP@B0vMqSHMkv-8ng>CzJ3lRLO}#`wVXRfDH0eWB#y zte%o;SCuU{xynO3tY-am#3=5nRMS@GJh{jD6#C2B_SKfT)FT%;g+uyXGx4)ipr!C? zU98uFOD>RhSR!d@pV*R%sVlshdC)jmj-7pWJ@=}oxL0K#UHT++*gC_w4=x(Rd^)mv z4tE&bNg3<>DW&Jp5#+QB6z&h6)hfmkV{VDfi zG6xQo&w*j;I54jR!}O2-vJ8pPMT<6ceMw(W$$;?DT+7Y6axm=nV{@~tPA?Q0-m-z>2HagH}4DcB}`TDbM!Q^DMN%YclG%2 zw~sUB8SLx@LaXQOVy|G2G~^j}i9CZRwNIX*cZcXF4?)f+6nUR8##1=s3f<&e?8tps zsy<`C{yF<1<9=P$H!)Uv7%P>ObszIX9#G^4gpXx=8~rI0t-e_JR5o;}u$R!~6Yd44 z;2HNz@@jX&^V-0C!Fb4JEdIp8SrmB(D>_qK&~u%jjVpcfBIZMEC06i;u7$hyplm}4 zc4*~WWE(8Rxfj}>Vcts^$2v~>TITm%%sZ=@cZC0x$h=c>8FZnHdhp2SOi`%W1Gi@G zsvb`pbtJfY#3rwCrWmiU_p*PIG;&rgxeVGfX9#Y7;>x*P$1hIyG85{9IF=mG)#r$- z*!$lHjyitCxy4Ez7nAO*#qauA$D$Z7lJ35d=r}a}Q`naW`$V3qWgb*LE}*PwMe)2Z z8zcL-iY4QdKBz89b1`3!*L9&3nf+%=n!Kqsa4(vodWuG?11rG)ID2@>w;jACFR4>W zGX0f0)sdgPUtTWrBD5JlZex$jN0A*oZsH%Ky zR$93?5E`-fE3{4s6b088;t#B29{XUa-#PfJkCRUDIyd9-Y6i#w541D-Mm+P~1if#R zB)fWUu}+{a6TCu8iI06WXD#)5 z@P7mU)j~hB{9O`G|L8v+q|ek*FAx5*Z`H>FeCIqfPkmhBhDNP&mo8^P;bk&^?Ui$? zasFGte3Hk!axL@AHOwsZH;5t{%y=qd3l2fNkyD{nS@RpQw19Q!~`D$iR) zamJqpkRNo?e}=E&*WZ5%0o(bZ+fd~L?|?Ys$9_>&02i44zr;V4@2O-s(0>~KZrM^Zgx%QuBfTX!>7AqlmuH|5>P_X{Jj_X7N#>Aw#DWqePhH%a`f!J`5w z%Ij7GcjGVcIn)0h;@`*j_0a}=$Eu%E9t0?9zPN2;#a}%zbitptp2cn_Tn!%^#2Jy!C$aWkVLmB#@z6& z{w5f)pxlLjroUbuA%nsb&FIqipr4?1!QVnN1@|@bHz@s0eNo$YZ%&^m6Dohr{Dx}ZHZy#<{&V`zgm?d$@DLu|%HMPY45Gh0%9X!70}QJF zeP*~hz6OOqW`-NXXYlxb!VJI7$bV4z-DddIVZtZn7y+}H^M`8x+m;&P6@a1o=Lcr^ z1WF!i{B(cMNWXKK^!MFhgzq8!P~}J5Y=oQLU{L+?%FSmn>7Fv+oZEonf4a!b7swtb<5eJgo{U=adyo0eMpTb~C-k}qyOm`IoYM$> z=M#T7P}1!*;e96DXu?>a7f|rH?N+5|!-Y2)aL)U9N`6Oxa9Y{+#PZ@C8CZOPz0+jm4GEPA$<1~?^UhjjPgd@+W``-ixP|Dr8z^DhxCG>g~(cz_D z(}7Y?8=XYHKe*cXjs@v-zB}h}$RNMd2AuOMa1`Io2As19NRwntm}|hST%)`LE~PHT z|NR`L#t{GC4LIjMpwMZP0hi^O-}BAyM4-^;@$Z;;10iw7d>~De@#!3+zqbGduU8E? zrxqx9Jz>B(3xPUbK%r|V6P%QL+JMVG0J1b@8~|Phd;&-lW$ZM<%PI`GtO&S-bhjCB zS?87dJe={q37bt=XTqmuDaG+2<8c%2HerPc7XcZ|8U8G#MuP821I|eSvQ=6*$$)b< z&eZql3-2`GoTorm>aht}06rTHxNId*=zJAW>M;rUJz#_pUS>1kGC%u-C8RrPz-28Y zVm--l0i!7QDg(~>l!Z*nISG_<+6=f1CXW97yaAW(0frFoD${?q=^qW$(_dnyH{i0j zfzyefHN{950TetxW&b4QbQ*Bk+d#qdhyj-GFm!K&i(E;|=`YH{h}sASB6{ z${-B^h5)4=rx~PD55EDIwE(3auNrXKIR=59^12N;XCW}0bj_o6`^gJmGT@wzu|~No zfs$X50hhfx%J^5=fnabVMZsNO2+l8KpE#nK*{$u11?(# z6g=|`xD39QUT^OC^mri#T(;ZTd}NdXB|Y{k1TM=1E+*gUz@@+tGh8~Cgm==p1dq3Y zf=3-t@K_0yeBf{C@fHCEkA((YhWv_b#umP0z&Q%2@qLa;0_QwoHRvw;ZYe(xDCN%v zO1@bJT=o=^<-68^%l=&%>GlA{f42dbtu()j%5zCUluF(S*u`ZO~IsZ^Bv=R+zBJgf0^%noyar4SMV8O;~Hf3KL2@Nw~{|i6&Gg zY$H%lZ^Bv=R+zBJgf0^%noyarjrPD9)@;IB6IPh8$b>EvCYlhSrwg&V=I4c2i&mC| zSa)lCw8yj%YpwMuYn?U3dLX1R(%@{#0l%kz^CObW3!PI+lc^OO*4 z^Chod(sBtorJPLhr;u-Yb9%U?JL6mi`OG{$vva1+^6Jc%nIYEqFaO~3w#&mU|DOGR zcDSYT%H3CnTVB1Y<*E>Cr~6ZPw;L?nZ@bCqyC=Wv|1KpgdTCMfq7duziw`VrT#WzC zCvW!OObNF&-xgx6T)BJYo|QJs$zp$Ti1pKz-7C+n47YUN{^{-EmZwVUO2RECJ$?^$ zD&JXNS#Gm@u&HfRi1l=NXZfe)l)I&6OSt8UEwx)htgk-M^1zV?Laf~noO_^REBI}F zpZ`xksC7Q5gH^%Sox&3`$^yjwOU&(RDP;Kt838qH{g8y z1?`C!wAvSNHol;}^n%tb&QD*^x?j-Fy+E4xf3AJ-bKvP;YMs9XK6OZ|I|SVGn)cXh zz$33|Z@)%2Q0frlDoS_Bmr{r2o4yvbOI>SzC$BWZs|SR?Lt056D%KbQ2Mt}^0( zZN^VA)6bP};s^N=9mJLIAphbsGybJ!{G;Y~mib+0eqUjJPdC3^=J!`-enEajIE#ni zbB!5}t~R~AAivI*Y|kbl-}#t-t_ z?la@dx*&hNInnbA@&kWF-6j7Z|8SX^UyvVo()K zXl8hjf3(&N5AvfXn&CnIR=4>b>qlrC`3|0+(UYQo2hZDl>fgch`EShc;CX(MiBItS{CyLj;CcI}X8ytR zbEWwmJTG5o<`?Ae95la!{33^$Uy#4?w)q|8H$7+K8|0tdYUUs0_jH)wLHu$f$?|j_C z;&p2`de+{(%8U?1wRpp-2{r0<7Z6xaL9%^~b(yN6oEAIA`t(;%5d_~!+!VSys?ehoQ zmDkT(clX+j!;)JkGC2-Ku|gd!X^^2p=dQZLv$lVfyzlAFDTOZGxP0SXs?hW~U(r6y z`g;Xix4++@l$Z7o4W?MTYSYH08;Yej6s()y*Nx6&d&jDcdVg88oL+MtA#`wkY>=doh*stxN@VPRo$N$Fi1OAA*n-*B&I?fD|l$V|)D5yP`~_aF(8JCra4KO$eEt{ zlysq2znMf8O1Sj&^S$zpyO(cR$&|6YjBcn3i%r;Xv@%ucef*}ZJ{rh`U`$T^JTD+j zU)1xy5CbOI8rWm<{|r@@U$7u^cA?>zF$+hq%Sf8OQqOz$EA_nR`TQZ}1vwZCP$s@o zUZ!5&Yz%3cre_jh1ZPg4epyylV&crpvNJE!qZc_g-?edN;XTtY zyL4SJH>H04<(aP|%q3XXVU}-I!kVuV`SAxEOTB-=0%1so@qrko;AwHS&A={vj^k2`?-x^Dq}LFUy2G ztAAfu-{>;kTbIWW*W={J*01jmcGv}fg5R1umltm=yn8L{%F4pRh4cGINHp_nHtSnw z;@1X#1_nAg`;yGSC3P{HmeN9u5--Isn%|zSoSDovka*48l=1)v$9v?7BQf-F`jGFf5BW`!f`iM*%PQdNTt{0dll@+PO6 zW7BG6u-(W#Z%sXK>+Ui9MfaZ_nJF8;6QeX=8Sk3bj8-w67n&kNDwg~LTeaLp&L|(J zVs68>YCE!ZS>*NO(duZ`Me67_-aq`1w8wjEmWXU=`?VHdf)-l}AGF|bDDQ`PV^*lH zTHOXNk(BqwrLM-?Cchh>x?J>C==4cRLq^)kn?$GW z{;lt7=;fgS9ur*Kubu0YJW3w0j%s-&#e0l5ym{avIDQGv9Q$-QFpiIU@QzV`w=8%t zFT@gOq{yCMMZG>Jt$%X@`lZxjyB6m@6{Z$HWOX=F=crMYR-3~KEYs}nt=ia9=L@^z zQ+QX43~Oo1#L9S2(nIm7q)Q`CA#Z;3zxU8Bar@HTzFV%?lru+d=-~Y_a+;;};2`gD zzj#0!CEw3L1BW)snTKv8sYd|0xP|vyM;&=(s<#GQ&+vUcZ}ET4TmAgV5$G6*Tzy&e z?&_s6kHo)$jIOjtLbzJL5Is@bvOouYDiL`+ z#$_xcUY8GS!>+|wTk`0G*U}fSp-)~--<*$p;5;9FRk!!$M|L^kD&7vE(^BL_Ql8@*oJFlazcisSfWY`)nJZD{>3VyY^4UNAUWJ9Bw_Xtc!v0JArJzmi;@hW&r zu$*}E-c@XI=A$D&MaDqVp?D|s=S^&Rgxa%YH{XxkA3bUsVVx7P^I&z>!{?4&d=>g( zG)w8(gEjFnn=>{w=(a9+YYJ}3o6c-13{jc9l`Y6zFx88Fg~b`X56&cy{&5cyF6Bqz ze>Pl|pXL1$eXePQ=y3?mbDpKI3wNSD0eQtx#(mCajG z=UbZ7aZHOSts^WmOvU6_qDwX0oybZ)f_@Tdr=e_wqlcjYTJzp0m$ou={du5=V*+|~ z^*YA^ zQ}3=^{XJ5}J42OQg#I=ei(FSVCD>HC7Kfd%2`U>rb$R)AaJJDl%){lW)YTrM%G02w zb3vMy_xt6m?J9eDBsNqhACxf@lZO41U|OlG$bCM9Jx80;yvUFqttUS#Zymz5{VeaK&+yjoc`d>nIYx~hV{{AKM6jDgJrr_7nUc z8iTG0Wax*(|5@-4w!g$V%e+^bo7S3NQri6%`Un<5qv)@5-;Kn6U63|@#+Kxr2K3VA zl5Qci*^OL$4R&jTv|*nVJ221P^wCb%P@%D3WWvcOU-B7(#$Bc!U7@p#Z5hJ@^NSgQ zet+ckUqR0O5p1*^bErVW1f=yULe0G z&HPSiR_8hu>718zNY8H#b_*LMF1ik)(T^ha_J|H(bma)%d9;rWJ3V{AJqn#RG3dC{ z&~4YLY0emQ6(yhpx9(ztPK?QdQr_#tpwD<7^e$F0=mE9_)@N45M@PlDOLH?@7t?OC z=D-gt__5H8xY4Y){ljEUevGg#-r!5zl#%HBwX)Vxzx>GutHoB#L)7a!>Xl2q@~Qg> zi^Iv@BU|vVM0ZEK)!`2IfoH%;+Qq=hq2u&TePDX>+vvbPSRHAJ^hPsZ^Y*oBA9I1w z<1qRlUz2`=jg`-ti-UCH4NSq$`5xH*f2}^Mw-a=dzIu(&iaA2u!TyTv4ZY5}v_q0& zPM{sy2lQ8Mi2k}L!l=!lIR^mtnW%QLa57^TsllUj58_2-Xie~Fu^_viCr(x2N1qfhGnS!`2c zSI6kj)H{Fjp$q!-JhM+vqfcASK8<`aY0mfQR*jK>?Nf&BO;wbO=2Fj^#<$p$PxWLp9%0`gZMapl1(MiD`gx0A zXFG4#ywsspl{r+^8gy-b0#5oKnf#>vwauB0?8(qUi%m(^#G@Y1?DnLi@gbYnH*O2r zCiY!RkFz(NtHrn{s*u*L?6Ksm`VsFFCzF1wX`?C>JQ3%KU3GHv-lRzF`neI>^@*D- z*C)-kTz`9Li1%Z3IviBrX*j5I_$hu`!|TdYg+0-(TyPeh^0kbetv2+(Q13fB@86pk zsYQLn88;UtFfXD<=_%Yh$*ZEGCgQGPY?<%Fj`<`N*6P8Q`3h{A@9byGe5k$clhoy_ zEjMx&y1_^L>SrHmr{VONe7pWWzWeEs^48wUn{EsJn{h|q-KCndFTcpOH{~L9;fHiz z-iy816}-jkU~FKgqe)R<;>Ke??!x$@}4HFJq*B5g>Gy1fwkz>8Kq!C9I=jOzd z>btd;@P=AT7{5?{A^fcTEc`Tns$ndBp=PdXlJ{{zdyI)A)B!vG!n;W0_snX~?5%Uy zbAwkY{dxE5Qn7CrvwL-VqlCGWTH|e@UZcrWV`6*s|C_19~ z#;<8tn2g7Yy*bhbyth6aqAs^_wqo89eNa`t9k+Hn7~}bjZ~2j5pon<+(98d&c2xAt zC15MzI5cegT05G^o^k=Wa9&z(uh)s*e@&Vfy?a#;yVAT3 zz?ac`n7nP_mxstBAH25qpy!gcTK3=9N;&LPhQfn4YP=7()t{fghSsmcJo3)2kcD3A zT$P3ngnW2J&sZY7tC{Q5&^d%ogORI4Rkq-ipdw2B(EJPX9oUx5UA_M-bH_k`q2EyW zB{Ht1pGo;{&z8Ln+v(pQs_#DX;g-FZvfpFR+%PdDV%?+(iPt~7O&vY7O)Z?q_k6zh z;ognzDE7t7ZxMmz;Ix%9wu?LqL+}4DID!S&t-pWoe$KqlhB>|DJ7V3L`}Zb!)}2cZ ziI_HVLSob_+iD_8lZ3ubeSVZP`a#yj!>om6r2ALkKpS`HD$w=rS59(m`hVTNo#!vG zZx^&}cY^u-ByF$H5C07|?$8%`K#Nd4g{&VFX|ojcG1-&UQ9E{u?VRoHO7++{FQ=fJ z+9uE+@r<;%ZBHAz|NC$?c^W~x zerecME9C4Vdqrd~>c#D0euX_9>yF0G-=th$2K`glqsZDuEGrS!{p-+E0l)_g^hF;94-$<`?bQI^nOOUzT3mr*+TP0@K$}zc*6c-rNsCO~PV7l# zfBhl*Y#HNncOmE8Q|ukN|1<25vnMU4PNyzWwDo zH8$NdwecBfBYRQywZ>i)eNmjTv*@Gm$eMNr{GPFERr|rQf%oE{kk?zw|JSy*g>nB1 zdcF3c*XtxS`issj&`|6I4R>xq*OtC#FJgU`{)XLb?xUjM`Hz72AI%*=4Ex`aoNGpL zt_eZMt)+e;Jj#4{vI}gka+potQqAry9jB^RFptRoU-Ei`zHvJ8LOX_kJH@r>+uAWq z89UgH;jQHPCgbHuMvNqAYQz-_?Ez~#UsU@m$jFLGtqCE2`U6RAYj8tg>tYYlprWeyixitt>s zN~muD-PVOkYW+Oga^-^IMv#dK8@B_Nd67;9pKz&$M9P8m!fxA z>=@QL&(k{zoMkP&8R!6aKk-fx@2_IRP|C-KA$mAWdYkqOcd)*59u3YvGS}Z^+Akc7 z{lYwS(s577nHq?$knzC&_6tQM zpjYQC-=cr_?4dkgC%SiH&<*?1mFUb)g!l9-tFP_Lt?ydYSnt=xt|mDT3xE5oElU|+ zOBiR18E=aici-jy=6cSXhHbA^%&F5Y<8*su(U#D(x0BVZMWa;JW`1HreQq-PiqS!G zi`C*?j}G=?=n{%fny2B9eLpPJ`!n`IPqRn4!>Y2cO?n?2fNxem7#8mB!T)3Y%URd6 zlisV&zU0m7zYiPdoo;nyCt(|fyYcLvX|A5>6aN5D^v&u$VbR_Y3%Z1{VKSe*c3MN7 zq448^<-9~*JJkf|)8xAuHFoR=gW>o!2FiR7eE%+NjQ0cZeGhyav4waa z`;Ezz*M~3V30*Ezq0Xz|IVMq7613SCrg}45nE02#r+fnXL{slf%E|=Cs<0Su5;$gp-m1qVs)bXdHpWlax&UDeY9UVw!K5R!9 zOAU9%73?J|vFEo()7({>jXNSO(8FHQHlvcgqOJ9b5jJ-vd%<8iezC_yUgOAH(&=%q z1K2-K3+Jm&bPFG&thtocg$|%&T8z#ka**b2_(ARP$&YgHBIU__iDQOgcQDShI~c5o z9~(_lp4_2GTCqDAXWAVM#%bYRqI065f7?QN=&nQ;w^cu5ABOMRsaf6anjK!ZRkuB8 zpJCV@d@stdJt#D4!43~H?XgzMku+j=@ICmo9n@XIedIftvtAAE>BJd#*`D|yP4cke z^eSNqW>^eiLEQYsb{+i zbDvbv@NdHcA3~q$)Az);^WA>A>iNTnXt(r*>FgIfr>UO)<9~WvZx&DLV&SPRk$gHy z(n!U)H@cIL7v}op-b-K)`vKASBE35GtAeY zyv$t8oZYqK8eco}ZjSo)wgmqk-O6_M>p5~JlYI@elRc6nG1up0t{1(JGS*~2i||!J z`d9PbU8r$)t~py@#!qbFc{9E7qGQs*nJhKZ>E=w^w17TGpGQBKO+UX1-zz_Iff0xE z*-&u=hZN$eS(Uo3q#^n3|9dX@e}Z5Aivj%VFNWb)PlQ+f6g=x)@T<4OuP*M#uO4LI z{J;5J@Qu2VtrL%adMKufIi=sd#<*_wECye9yS1TWyQQJ`RtvfUwT24#zQRWybG55c zbP^t$i~eoaxBhn|ZSy8z>uXdM_DZWxymgd-$uw8fF>Oq#ov|i&A$2=$9(+fW z%=~Jd_>KB@nR|QWjQXhMfq!b@ymv)y&+9q z>8_@usP&Tlp73IVeqHR#+5f%MPQ8!Mi>;biQZ#$zrw_dQp=V{|PvI?p8lZ`4b^f>R#6UAfC$46bi+H+vS`&VpO#Ayp-J`ac1;HfXLA--_3+ zQH`3?oNp0#F8Im4ibHd_-{Njj{LqzOdYn2++9=XKYQuI#7`(H&=oLq11No(+>+XN< z$3m+vboDFb&D5mUc(r<3qm)Hlz0T0B>THY#zsgzqB)H1Gnv~P_;M|6au!|c4ce$FL zvBoyG@5pV~X1S=r!#RsKc_%^}<363Bn%3-9Rb}LN=0)Xu-WqZ=llnb%$a3^Ut6iSP z#m2F(jN3e=QOem0PrZmclGD&{cc|0*L(VEc;7k<0`S!-KTA2GkEMwiXlm8<=$Lc8k z3G=h0?NxE57V!Gx#nCg@SZp&iYk2D?*sI8KsjhwW$*HIB+xv(X?yZdsx&AC`R+~NC zdlow-in}SazU@DotGb?qb~!2{(9Aw4!Wz|j7TtHBaIgI4)k^Lux(*WlTlNIlG=a}H z)>(s2&E2on#Gj$h{L9T{jSoZHPoVReD;j=W8=4DUw$0h**f!_cTvyYxtijxUH*DLU z&``sD!#?odwyCUfIegmF+*O_i?}s(p4DekqXKm!pxC2zNmzLePS8zTJ&bxJ-qv|WP zoQ4YRJkH114<#^LdIK-HlkE`|J!e!*jUCGIzhX!2QJ+~*uT>rZR}l! znmb&7Fzz52OYf}6e(uK;Ke=!3O6AhWb}0QJ>>X8g2Yp}qpY*#V#^T4(Mjv-!e=^ZF z0+E&|v7MyzQZA>@a=42vqCMKsRsRL|n_A@q4c0wd8$ugv*Cx$>dhJ|(#r$^ii^E2{ z=KW5C^@q~Ow5l%{bKB^nU%+S2v9Qk-89Qvs|3Vwv8i&ko+$F8?aV3{DBFJ3zg*oni zNBw%O8h6m>kltd2SEH)>?kVQG8vpm6BG-2ceq$l~D5WjO5#k8|2xivM1~x?-`NRQI3Gz|LqbRSn!fPHaqr1u)BnuWjg$!so>~^ z---Q-_{?G@S6ree!Nqt5wqPs4W!=h~s@ zSxa62Pw0snlRrz(bc;bxKXYS{o~6*!Lmk+smwQZl?lSQg`Y7ar1YaM#efW6DAgfrR zm&a_6ZUOV$C<)g#cl`XbJL>|EgF4F(d{putv zR_}{nsrB4B>0!D*>q`Q-*{~0WOjDDbS^g*6L?6V%<}T#ix@dT5G4Rwz!dn{!k1dvY zaWwj~L%%f-dz?kZMnql6!>(Yj_icIDw%qePRpB4!W54k>+U)-p58H+fzn*)gVDc-U!I4(4G$L->Be{~A1ODOY&drI)J@;AJnc+Pobj#O4~1^U-Wze_poOa_Qq`n|y7Z zmwm$Ej|(rme#Z^n9q_Y}4@@h)RLwehF><`tkbvbzJMG1eDJ>SCVn?O z^FLu*rst2jzOUi2L?`_UUh$FYJ&tJZUR>oat14H>Sw=@8^K6awE=u}sU${ni65$pz zd@|wFla5{xzK!rOGyLxeZ--YuJyH14Mj3JBv57cwW}I^3bTTokq_?Zpq$AZ84u$x( ztDL8C<>B1f3-36bd;B(w#W^>rxq2>fwmU4|8;SD^;@n7_v1%;)Ojq_#ltQLH%$W#I z!Ms9=_nJkOhY~N-66#dM%9^*2Asd6NJwr`~=}A;QLCPTZxklPC?wS zCC<-?bFGe3xN|OXUP2Bb8GM3qt|rcFX8j}_**b5uWsK7TF8$-63#I&O@(HJIw-9d; zvf@EnTP&{f6@-UE>p0po*jC$V>qX?hhp*9iX`&Y)kz zQ|yHg$GGPGPQ{XY;lW!;*9#A|13tIhd1P9mo$!v=A7(#rC*Q)m+$B2Qan~@e1Kg{K z%+6fa%>cY;aVH`l=f@7_Pc*0dN#S*KA1SiWdAw8NO-t*?5jJ-nd#(QE)v>omE+kgY z(UMk=haJs<@k%&X1mNc$qa4}e1>i@EyF%{8;U_m!<|~>5yQWT^pX-=z@Vmc=a=721 z%wT=$On$fUZzY}ZyT5=B-9Jtx{O-U^;c+{4TdD!!A>*cJ7o?J=jj}p5?DKK|(@Fj8 z(+z%iW`BM+`zqo2MpKTY5q`JGCkOf6EuUdm@mg0;q1cdzj}YL#Kya_+eaWlvm3z3? z>OpS#6#NW%`zQ0Q*kkyd@!rjS)0dpX&T>8zyM1Sn6ZoETx?RYCiY!SRI6X6CXZ&Y+ zn8cB|l19=>9+H>jDS1m7;|b53cyoz&oOt7iC;cj&xXWjGyMBkU={q`yhn zorFn$t2^CW@C*FKE&fILUtx{+mSel>3F{c|@0Hd2jMCCdwP=3KyYP9oGUp!pZEwNP zSnq$q+SSF}-vIyoS=P?8tUukyT)yMK&-KZkkvehz_dWI|1?*9lvR7Hco@Fuje~Zw? zZ`}V$T!Y6x23yZ@I-k9swNmG^v*rk&-H+X(9C+(>z#3~@paj^T$Nm{}e~`~Ew!PY* z_h5dy1-Sy@vtP(hH~8=42l3^DeD-Hvyw}&jS|WF#ovbHaJMw((tOb7wpZ#TM{6Ber z+TZ3(67P~ku6?WG?J4u$U7SM)+NpVwJ%4bu_q+Bwur0@VaSwgB%9i2yu_MEkx;oW9-kFq}YRj;Xx5eZ+6EsJu z++%Ro*po`UNjH~ti_Cn`E>49?cyGA3&BOVts)v@iOxq51j4NAQnr?4Hh5YRtW&7JX zmAo&tMa1g7grYWQsYHRca}h+rPTzU4w^CZIA(RB3~c0%O!G%a=uH% zeuvb%)`TgGT$}7#NR@@K)J3jt8@Lni{9Tf5HE(-0-DamPHm%1Vv0Chew2D0-TXb5F z7QxR3y-EL#JpLVyqXur~y9H}}cjdXoV!Q0X=k!nE0SbSrCPH<|dUy~0xXyaZAin(a zpNahOnEKuwj&J16cf)Tfq3;S!WWJLzB69Jp&B#>`mf7sZZdtM1RgVtQ?R2U{!%pXu zNt}bP9=X&OxnZvzIfj&rHos_hy0YW#3+hv_xn&EzbFY1b_-}gAKFXCHtJ&+H7{guO z4%hnaKfLkF7S?CIFL7oF<}L4$b9kfvB>N9rWb{%a-?*8QuU)gJmC#2%hd(_*8{^$I zQQk|84WtschP%%^WEJi7sRI_fS7V6_5A#@w4R#Pmv#TiG9ln%O%@ra zzH(WMrCi>->-6m%$@>`ivP0pJv(2^MM%ZR>5gw8~bi&9Sc&WMYX6@dGmiShC8hvAs zwSy*U@MH5sH|=$T|2*uN-iQ5b!PSqwFWahkXt#Oq80clw@wRy_BUDx8w(U!vvKaWw zK0wBujPJb8-hzSkP-lA!QUwRfvPZ_v%o~C}DbPjsC-xXMGG(Z6_Ajx}E10)VAJ$|2 z9>vV}7SdVGJgzYF2;%$-vNxK0^K7BF;2O;5Hs01tUTyGgGPtVp9&jeFb)=#Fo}_-bm)~E=du$1zC@Tht>KzY+9qItm$QkDzA%I*|Wj@ z<%?DJzLAMl{xKm--?PMdcQH3he(2kszOuN-tzpqJbjaXS8})NaF!^7WIBTntsjrE}&mOL0d_` zPWe53?R#VB*Z1so(0B4Kdf>(QaSO0{DmK!Me%gOb=xKQmrH@}^7#xg=e8$8rj0t~i z;^ifzlliXt{oVsLmiRy(G7U1uYZ>Df`fR)YZdKN5qwihCT(Z@vy4>&e7UWTWWkTG{ z8=R_YLXvB7nX$hNRIt{F9Y5)-pONn8*vj2cy`(MbsK;T-?4a$X-B0n3k+#;?5-vb+-g_ZmlEfZV7pft?S3h3bQe@^QKt^@u4lZtk##KPoyAm7>86M2CmEjf zOMTjNVLZL!;~%6YTHx*F1zME{K=pP|M~mNCd1 zXMGH|yxJn7uD~dX+!QVvNBsV+_{W)hya4_P859 z&aXm!oeAN-ui=ffb4Hq^#7H6NJl)X|P}ABFz7Uv@+^y&NA`UU$WGgZ|%{p54OSH%5zZJ%;_s%75!E zc#g78z>oS%Xi*_kkI!+3T$Ck+oMn+grf+ z9n1aItPR+v|AM{WUox)h_MabDdAKiVTk{>{z_#t*uUhJR3xroNXfDdWbNDeKbJ3jX z=jWnvaf9Zf{$4TQutS{Kh_OG9x@vm|<-eIUcNlH~&pu6-((Vx`(G;0LB zg|pP-l*QKShi3qvzN?tEy8}7%vrFN3yW!^|uU`68Z&qPDHV2>TEm&>JnCjlsl(fAb0zzNlvd`zVPa6 zdoSSCpM|HhA3k9^?_$>Q<}tw7SgS?28z#S1y-5@qmjPcVGZ6eSY9_`p4L}H1P@MC40GskvEm6g4dU33vUxzrQK7J z{};NX5T}H*pY8`PlD7?9T9*q2|Yda&7X)ISzkdiKmBOK;l_gtz}C`?C+Z z8(@BjZKFR5Z%Cgv;e*PWC3t@V-|*OfVvBuGZ^38G0kW?P{FpTl-19DnA3HPOR|WnF z$Ol`%J3&Kk2I%3;?4WN%>a>gqNV|$|D#5jsb`5|l{aA0u`!qG{9_9&Kq}vFmE*FHu zcUw#NOAWnQXXm+ncE<>BB7OGEmDl+Wqq86xcSrg{-#okBTMQ4{YEfD2YxeA9?Crd% zxbZ{oG@edut$rFE7q?rj?x!ccUR{b_2zgWfeRLA|WN&t5^PILFk6aZ4El}0>&Schs zr{P7`5U%1}o1aoUt9QbO_>i&vbVP{v=@jH$;mH({_T;_T9NmJg%)5a1s-6$;Qa!SU ze#rNS>>>Ja*|eguutKf3(#{v+6yiRh;}qhQbg`6A`|f!f{GYz5s4)Tgmx-kLhI7OJNkL%NUHW9(B_XR!)#Zl$b=w1u?Qhw#v)uSq+-LSE8N zG7i_%hpe=|6g&r{ukz9>?a+Cyu1`)4#A$>h%|6kCiiE zlosdhP@`LqY4(8a3Eux&HSE=*2d5m_<%z0C&LqEJO_O)|Et`4^KIKmAUo27HLTh*+ zkMAt_D>asj11|$qQ`}vgwm4dkLC+5O zLmlw?J1lm-dB+KFyYBAZ0(oCDp7ET7eclum$9a>m6TJneo$Q51@w1L^l`$#f@e9lN zR%rvlO>Dhyf$!P8 zWT?IQ+Gu{`_*uNiRAivF;^FGkBamw$>}Bp9o~iIwi>$S*m+0*-ko$>J&DKi)?%Kh3 zAyD+&h`zR5`s*q7noi12*UNV3WxvV3q?a?@*8}Fb4(JwuZa?9y=coNnaVL{U-ly10 z3cfaQvw@opTx1?g5F9wme*Lp+e5Xh&W%r*mPoSe90l&G#ae&YD;1l3J*u}z z57t7t3%TyY&3n_g@h+C1+`m+WZf)2e`O5yH(42-9k=ys9M@N^%EYu<|tOx09-{I}7 z{r>-wcOlnz-M=?oi(>5Y{*7^y%CA9-YE|ENolE?_I@ge-UU-uJifrhhe2U)gEvQ5< zKnd?$x6)41uOEPR9nj_ioLL``ZHje(v&bg?f7HDRe3jL;@V%dNLUM)#0t6BQngP_4 z015(f4ehFfn1vAwZD zE9z~1d;NU|#5VEZz`ZJjLi7ID^Xw<%i9_G}{oe0;;K@4A9@k!btv#$gtT3`1fgY8{ z2zZ9GYw*J<`rlH@u!u6GQ-(~+utS#t{d4cUNw4}SduAxZA!Nr(8O}Jop^wP-71BFO zU3^IT`+@t(7Q|ULcihrnp--jz4q76WRb;a`||%AUj7ta>1T{{KS#GIchzV;^X@i} z=xfmrArEaMvpd?+Ir$7%OEYav+pz48&j<5*veEA*o9k~UXiu#35u$_deHRV+Ck=Er zNxiG#m@ za*t|@=$<^Zb8|MtTKZ$kC%V={v=ejP{#}fL*WNSe(5>Hb-}SuoxmVHO&mE$U-AY{@ zL3f$V`Q&_b3!+n_U7MEa96@_5_X$b;BzN6U^e}eh#}ohCG1!YI%)1WGg}}Em|37Yy zsVrTp=*X`kjL^M}F~iT{-SU2^uej3l- zt_1dWIcxu${AE4I8eizOi!G^V8>zoQYIcXLEd>TA9h7yY^~jjq9Z?$lP+qBrwI})Q zR2L3&FXX4l>1Lo$)_i`jd%pVz|7NcF9A*t(bm67MoyPv#M~10mQs*ahUu?<^VLk^B zY)ga~=(W@^zvHax!PcwM%dkE`|BaqV?(7+5(n#XC=(pdCW893s0(}#Ef7QNH^uZ_C zvwEC(LQAoa{t{~fspy|`oyjdV=%@Opo7yYg0{Ry--Er&@r0D(&lmhK}$AmY6WdxkT$P|xi9Tt2z}o%#>YuzxR>GXQ%NDIU-#zi^MkZ4 zK4e_vvjIJDD4ok-F{Z?hAzO!u!&W$Zuxiv!(th@L&u6{!CE6XiN2q}HMCxu=04Q->QTmB2);N9APcZk}j4sxLoV3vX zM`-_##8@ow4JPRw@4myD7)+63R&+oX`oUnOc<@MUHGAsj>uYt)z2HOU#fjB`ni$x zKa}}E!0hKonEiYJo)7ANUi4%E>h^Bx_HOF7d9eRr8u%kOaxT`?@o%Ru93KpHtqs?+ z_BjK8yZ^Ss$r`k*J!4y`cFo1CE22Yfh7Q4pxs&7gQ10>bAFQM<#}DN`6+<1YPlbN8 zJ2Ib?wo&A@3_5=b4@h4YjZf(3bA8a-)bAqyf~x^^5qBeLj3a)t$A7RU1|2Z{qoO~R zFvsBm$)|vD&4am<8Yp>ABs}f|=J!RoWRZsGIkKteV4{C*7WF)bdJd9qv&YIq@|5wX z$b+=gC$&yo#y>9Hf9_GN;W#3)m*47>on7lTeQ_0f%6e|2BPkRx{g?wfYtVt8f*eLD3c;ca@@c@9MXcFtY(9B1t%e)}-izR;)4rT*>lQ$?`iY%zRL z&v+w97{NWj`tJMi_*7(Vp!8jg*#hun8e_I>#%psKul>%!JrWMz^eo0_9(Xd^dVH9* zO~!~Fuadr92D?lLzJQ+&d;u<`S(U|jPSTZqSbQ_?RvicU-E&V(I(%RZv2>^+cZ`D$ z^lWeCyOA(orF}1D-nucBz8Ze9_qdqtrtaH@Q&;``knf)OSYr@tjiGdyh8J5<;!68$ zr!9S%r0+BFQwP&hR7YA4@A;UpVqY6!lcM>#@Cy^iJxcGLaWj4y^ibY5#y9Q+Ywyf9 z**g==>e@TgxkYRZ#L)i@q92T5N;RaD-EiH-@bQ`9-HdnH2i;Q7-K1=iD?W<<9M;}@ z^1Q662Y1bg%Ja9u^BbM6$Sb73@jb@UqgC-5(tN>@LYiYD&75WQ%Ni}?FMEA<{Wlc% zA0&m2!B=g}FNODg@V*P)4-7+pJK8th*JExXWvZY(?kdy6GjgRJ3e3N5txL~8_iPe5o=56+q3Ea77aKa0Hyb{sn_bJF6# zFvg>q&8hk9_n501=4U;(J@x7h{vWNsTy+FT`aANC(N;Q|@79l$y+NbR{7Q$Z4*v-H zBGPEiZl&B4ir#d0c682)A@Mh3c98l zV)61$2>dXy7N72Mj< zcU)zRVa}Hn`OhnNTjkZbTYD{ac}Z&zK7oN=kul3B2Gr>dJuwg*XaPGPo_%^ie=6kEW!guZH=3K^@PyiXo zCr@#MFIq-321+E}S^7)~6B$1v%z4%h7xRt+!qqSa6C6c$UC6GR@bvSieb|!-Qh%e- zfeGJTSU-n0rhvBQdfJ@pXnU?@>^+;Yw`EJ>YTAFfPg`jJDezZ(|CfBzc8JY`Qp)Jp zdj)~>rL9CBl*bhtdu4@@n}&_DFw>(ZTz{IW{?_x}|d_I!nw@=Bf9^#U7p)eTk4)&x0-W7?({yY-5FR$X<* z&;P4W&$7txXyp-JgH^v)ne4P|nn?VwLl;C!4h5)@ysV9@F}&%#KHf>Ze%@+cvoZu} zK~fkR88QRcVHoia&zq#ckpK=R7x-N@T1FO|?q0PeO_odoD4 zKqmn@2_TXna@R?KP6BiippyWd1n4Ayhzc*;Z#W4~TJp*xP{=J%NZ#`m^4qW7HudCx zyrVun)9x7n9k)D^U9U&GtAYHbKIAz-Oo}Wh_Ii%$6s4Yc`la8dU3A2L{-?Cdryvfy z^-I51yJ$T6#Xqb4XAhA7H6koLPYMyE;MZysfcy#4KYwXtcuwKZ|9<{Qg;{v8l_7l7 z&;JEsa-Pxw;*SyL=lRqE{mPdpLd)Z`eERw4Xu_1@6Ak}IMUZ&XVV-F9*EH7hf7Al~ z(!X(>k@d4Tez zUv2ph6#u;TZzWi?`hDjbEB-+8(e@?&pMHtIImjZ5fzpqcLD(1gr)YmorhfHTp#2N1 zWctx>r}o!u)X%?B`%7EI(=YvJwSUt9{()~=9-0mM#kcK^qf?5?KkVBvpKAU_u%t$=9p3uMsAa|`jK@o&R-Eq`5&{qTQB`@c-EXz4fHYQ;~7xp?}; zKXjYrKM;MJwSNumOSJTFEV1J607T_q?LT_}|MXHT{um4N!|xjHulc8+|5ojP0M3a< zznmpj!UOU5Z0$c#`FAc>iXanHG;AnWYChkk8v20Z-?T_6f=qk{h||Ps{k=wiUjvkQ zi5fPSDV42M(aRRhdlV??lmcPJqT4N)_crCr;`=QN=H&nxUrdY#N<056yu_arMGLmESQ%Ayo`8L zEtq!{K9h8sEtt0yDEO2DF9EuMg2&tNt9+cl(eG>VZNw_sYN#`yLE}RXNd_G0~gkEESQm#+GZIx#NkglW1XTiKDkz>KX z!Gd{cLAmRML@HBS6h5>6e#@HY{7+1K#DYRCy*jf zTnj7%mRkNxZ@1vWYk=P)UXBG99{q;dk4!wE;T{dQYKR$anRiYs($KHrR1IT*F8udQ zG3Pi%k6JMAohuc`7F5yO7R>Vj6Zsxz!Ms}-$A~;m07^N07F?JDq^J`=nPipYZJ?Cn z5KzLsV8MlZfKrY}Ex7PL##KWk9v$ys@;PO}yoT{sK0ARDe}@GZ7GGw4-)O;wlYlYA zfBRC){VfYFdlkRIY3}~1G6neik#vDTxy>7w06d-znq9hCEEgo&^4vI=Gn72FC zDhGOCCHO72;KE|yH%PB3#VW^6pp;`RP{OUT;KE{{l;cJVF06ss8G;sVwP4;`NmjWE zfU&sGwqV{Em|5r-50vy=7F@{PgyuKv0sc?=kvY>F@JoCgqTMXgTSg1TF^NXjt`1wV3S= zJS6jdN^j~t2RDEpL1L>lEY;AjVY-G&!&VFb*h3mNXjrXbsfK6Wb8` zB=F_f=Gdda*IjS9-gd<}o83p1!9jQB0cc;1>XGfhM72|wn z^s}Q6j3%Yg)nm4fiE%!e)|mE88sBNv>08rXj<&Q@X>pF%Gv3OGakh>@T()md)$Lo{cniS(aIkj!-si|>})~ill z73bKU^Jorf<-U~*7ISva**%B!3r-b~TT%7At@C1>Z_Rsq-aEk8Z+Pp5w{IZS%{y=2 zeRG`S)OSDmZjAGVvO{Grm$@8|mhCBvaW*b`X3?{Y;v7#dZd@Gaczek^OX3`l-nr+_ z80S0pwBB>_9+#u(o)_+c2KOGl_w{?@9EYl2t|CO$9{!$O-?pCL_wBha#(7{v(}ou| zP^t~5Hhi)n&e3%L3-`x4-q~ujZZ*KR#(1j+*!rMx@g z)`yImhk!dDGj=~F{(FpuJ;2xZ7;g#O`D0`EkAdg^$*2~1bg%LHUSPvs<4F^SjVHr= zH|{f@*=NK!Kl!Qg=}(QbKjmlJzZj?f#rWi3@NNFNarEcF15HL#6Y!lTqg7zr3&yDz z#Q)!nqyGkc>#*_mVex;-XnhIz@)4u?h;c_8!VbgP&)xD3FW+c`v@89Y4cj)hRv@?=llm7ld z%1@ckR$ApftjmAbo!0lGI=x*w{8;fPjy>Psp#2}#{(ltwdEeIY|6PCY)Zf3<-@^h{ z`s?KzoD!E>-`Kl1J8`Sw34Iu~g&Jpz-;E{(e$_vp?U&r%`{upueBd-wXBkbNc&NQXf6& z{d4&yPrLj#%l9Cq(ltF?d=H_FwtlsfV#&9yFMXG|^4$uQrN7@Z0pK-^AogTv_^LbW(+xoW=lvl#r`pjSJ^lkkq=aWr; zTOYVi``h}(PVH~&EB9!BTmQLD``h}!TeQEeKm0)Zw=!;#XN~^0^_wBw1V3Bfa-6!5 z@2#a08eM`e&o!myr}Rmtf4crYpugW?a3jw@X?ofEzZsfdw!ZL5oxZI<`GNkn^(FI2 zL-M!va}D~tAdeqBf6(~Y`l%o5^lg1%Q2X2ZukY&gZGGL}^tY{l60{{hTOU@az3r z^8n#{eh=;A&v~6*{%iV#&+FqqrqB1ZKHuZWxo3WF_sMS-o<04q?Gs;>+&c5y*Ijqd zq^n96FDYNK?5aS% zmMjRaTQX<)9V?2K+*wxMBS86zyQ*f-TC=u0N_XPD-B**siaWHMjY;{cC1q=t^bXj| z%?^0SswI7b^>^vcx#aHE!R2?}xN6B=WviAfwvxYY!L?GNMRy06E}mUnwrJ^+l2v8* zsuJxEB8zXBwc_sOYX&5gNuJe9B!DJQ-yDUM(R^nvxih%jLdpsy7TD5wWm{mRHDSZJX(z9OV+Mgu&P{Yws^(tE|%!V|IQ_A%(}m^ z3=ROHF8&FwzIN5B6|1`N>H4;j>2g@KZpo?@YH7*kFcy?6xvOl=nkB22tCEtE@<8S4 zHI*fc%U0bR#KDf*jj2gARRXCNFS(=a?xkyPSg~rENwHqv-@2~1|I9hXQqMu*>;-F} zCvmjfswGQTlr8RZEh$;OrmVbDFe$mCEVwi(5=&PQBDh?zE+a(WYPx*jSgPdO`SVL4 zqDd@JfhBtoag|Vf*^=dpVbE{gy+*2G0N**wwWlqV<*O0QB}*4u&X9K5ihFuS?xx|a z70cHIm)|X({a7}--{K_;maM#c$@20gmkX1Yt?m=IhrjUd7x_~&mVepOJ69A3m-R`> zYJp4+>rrrQr_IB#g5ULXK7oqGH zh&%5tTeX-LuWTt2pi0U$>@CNWuR>q7?5?T3hyaI}VuvELr?^;cZV$&^1nUag?Fy01 z)Tfw#uT)Ft7SEY{Rf+ZE$|?M?lb1MMxpq5CTdH&IcI-|c68B2M;>XFjN|`2``Q>0W zRPvoNUH_PRmHq)HmKT^keK%B`f;Up zA$iN|%1QiSO=9vDS58XrekMLkr0K;_c{*!aR z^*cx6@YvrByJcNb)JW!2QnH4QM}GiHN{X+&rMUas{?)w9`X%W}l6O@r#r{o6h+o|g zJ;{pYtGg5Io1UGH=mpK^E^F^scM83K^-pj1jN%#HVQ$n}`Lt8bJyv?pZtpH*cW5b} z47SS3*Oc77oStrRNlDS{p8hs14x!wY=UJWJ>!f#s<)kTUeW1=a_b^#ifjTk9R4Iy% z)Z9+xe}KJ8nr1Q=y6Zva8o*~C#@}P@ZM%_gdB*Bj5W16BPfhss)gRfn-1QA z`L#~3mJxZ5{rpZxZGEC;*R_?i7j>i~XMg1U z?Z&Kb`@Oqympc~S?6Gz6zBk+mFXb%mvJq-1^Ol1NoCEwNcW<3_s4J_u6Y6$s!XM{e zkg25g*a&s3_9As`6X)}OMBEdd_1uBT8G!2@VfK<&77XEDfkA4j+#Ot^uBm8cD=2hH z`rYOJrrR%hGc~IWn?tx8>^YZvZ)S1Mde6qh1*>POp|+nNx9xFiScyJA#JQ}Y+lM$7 z?Ahp8uo}Be;$BLaZx|kLi8HBE_K2q$sg*N1U)XS+FVyDrWoO~Xd3>*H!^Sra?y!TV zy9L+d*Ut<~8iD(r!<%37h2C`xjUX2$j_1G`b$gP)zG1?YgLC^4)D7V4Sb%&d5oQ>7 zO&q+2a(zymwsmRTGpTNJ8!3g%S8v+x^mwxJ)bJXo%i{$uHQa?8jpR!2b30Of+!aw` zxGQ~QYf^(5+f%cMmra-wL#>?q?d`XwJds@(zV#bx^YhfI_T>81G-q<OL56}wy)))&Bo*Taj~!IRg*o9u;OF)IwOn&&LP=)O_+?3&&-t%r+EYu7RK z{X69z5qTRq$9w58IXfA{ITh=CWe4Xgg@?oHP;Sme{$0L{)Ua^O+39J{*vL!V2i~5> z9d1K7SHs!BS$zKz+dZwr{n)(bEbbJ}w9JyTxN=_Gy4yzN%?IzEld}XWCGt4u8BRPn zBdc`*;fa?)JmDdc(G%SLoe`&wIi0C3Cmg9E*1pYiUg9t3cO@-3hq46vq`l%?d4#jO zR(ZG=!_9fvj3LL8;Tt&{mLW2v&jZW7YV|XfWlK%lPrG-BI)I#VuDN=CHt*9F!JLhG z+}{CymDqCHQBf(jr-tsR7~dp*g~+XIP{<2E4ejJCO$}!>-81|*{jRfqn4Hg-`zPGo z8RbF7=faP2#;e`wE|j#fL6XWDoI;=2Q5dS`&&_B~6&{^|e7Q+4TroYTX09*f9)vA; zzHvKP6YJ+(NcAqE^H|P;!2i?Ru&)*%T{^DXXlHX9INMMJZCrmfj>#P^X+~@$lXJt# zoyM_F$Ee6loN=5Urw+^kr%sPr*}i#O>UiX1W3F2H9^t~&WyJ<#!86xohjt*_`~BIW z{lFIu?lj+2bnXc40Cyq|-PnPxEY4=i9d6ePufo64@W}x0PU;xG`@*|wxf}D1a7n7dl46 zFP(F$!dsGmVQ~Gf{hQ&p_tm$4`2PA`mm7mahu!}DV`Ji1j2n}F!%sJ; z=KBeL@7M&541>F*;v;3?w2?C;e$p%%wBf%P92C!6xnb8c+{O6QSZ|1QhphN;!>)|r ziu0K<@mGu;lRo&RP4)4Woaud$GqjvFDSnaohdB@V3gDXgY$Oq#;m^W+r?)~&O29TkxzqZ=kR;|aA15>j4C^6<0NH4i8P{{!iMSngljH=3pmR|01-H6?+3hq@c zOQ21;?*;FiWgPqbW(WN)Hs99AF!nQQU*RLkf=>UTi)Oi43_il-gnpX^C)O)&7Jb zg_+c|oo6HWmwweeeVp~|ndeKKE0sJ;xqtY}@_d&(B}@xAnRqY;`jC4#Dj7>eoT}pn z?gFczymB{K(Iv0cndKa0nD?)>G1l3}{ed3Jie1fpQvNV}w1_m@$Ib|gJN>A6Cttqd ziX6I%`>e=oJT$w)@U+N1h85h&$N00Q-K2qaC!d7ra?|*X*ZB0!uMHVK?e%x$J3Nuc zk&S%La{F@D0Mt{jac+ng-p{-+aD5kJmI31KQT^C>*PM0 zm#Ejvv0wQ*_oW@bRO1fUC91^GY50GFJ3drPm}})wsolYL?EIbW<>70{BzOd1f7;zK#*U(<#aeB)N$NZpg zxK|j%A0V9AL20GUmAEcs@r2V+SP4BVFL|kMxiL629vUr$MvI_PC3KwV@Op(N^l!OB zi-HV^<1New@0Wx}z_Ap(rQXMa_c-M>@vekFGWacc@5c_cq%j`6(J7cRG9JHZJTf%> z7`EzPs+++0<}@_?m@y6QZY0cI^;?OH9PK+pzyJ5hSvmOjlrt$0Z6Noy4c{kqw~>4T zjImdfPc)fhBj^8^%$c;Lz5axDPx7~ULF7(&;gFU)1DXznRw9dH*FFQfdZ}ki?hI4z zq~8*Hcn6>5%duKqA4rYgxjQL zMP%=BEqnWEzqlh&%byAzH|1}rDSyuqUgWPd1A9!QYd8{2nI5bLhfZr5>?zYTRDyRR zGFXPZ3LcW~gf2M*mmYH1&K>=>jC~zBJPnQ0DfeLPLWxZ%vHjG*eVfOT#Wd{q6mb6f zxU_r9l11TZkwpjgnZ`l?OO&JKMclSd+MJrn9h@iNX%!z+*a}Z`FLnq0eU~i$C%h@~ zGKph`!?si3a3YIx_WuO3cwEb(*l8N;a9XkmeJd|H(n}u8wLB&$OCI0T^4JXjj&*no zOTb;^u>?G;wLH!S_iNz^!94`unD&l($YWs-c`PJcGJm9omtMN0PBaJE->0<`~|*Z>7gv{^GM7waaQP zH)>BXZ+?%t_({gZ?}NLMZr$Y}^XD4osR48pav#+P!~F+c%&TA{>&V|8r+{H_gQt1TkY{RhbBr)DG85T8&OL80G4}ced@A_bVH)ARuaD=o;4&MWW}!oy$vp|ySVnXf7uHAj zi)uS7c582aniqZA5p~SIgHrBY)OR5DkV)p?KLUSb#86x3OF06}XI-UxSG8TnojCZ3 z?H9R&(k`Qq@~2@#j`9~Dh7ONIhtDqSO$Qf#Pf}l!wv)8KYMp)QT-=MU=7?fm*F6_M zzv5+cekb_V#BfirlDUpGSHdl+zpdC9^yu;EDifghVCX&s`X|B*L*a#(+V9dw-NHNy z+mKa0?#FW($syM$ReKL@ICBBors`e$u+C$KGga*O}q`{n+Ff1c$(_(7q+qmX%0 zguBI0ac62sesg#6N8|k+zvuVs=Qh4M6x{xqx51GJ?+gw78e67+8hfPf*2`Y0tBXwy z-RAV?-i*zZUvVGtIqtH)ZS2c+>+yRmc68`I{MO=ko^5Y`<=*7`#{Q;m4}N=M$AmWF z_mB87x6YOOST>FQZC%E=SL!y!8e-QvHv`@%#IF)tl}E<5U~}`8x-GHJ(7pJT<0toj z|1wtPZc!=T+2FGke|9a09>ISr{)@Rko4tm)PpDDeCHOyu|Mz1Dg?@?uQ}{2zre!kz zhp~6LW$fX8>0inn+&7CqdE0o6)p&6yTkb5%*%PO=q0X6b0_1FdVc#D zFJ&Q@4fWWeP3I07W!dyhQ*n_)v@Mm4-4aw>p}}}4AGg1VZOO@@RK{H`Vpp*|-diYT zc$zu%(_2!`N}4sayC@ry;>bhd%Q*aL3Cq||!dCVOE92I6gnN;AGInGAFG+Be`vC96 z-lL=^^T*cf(HU?LPB(rY6F-;`{5%>zPvl$={655%11+qGS6xVPtIg#5A z>7IS`*^-wV=~v8kn7;0UL)7t%Bg%MY)>jzM3?E=T!@abv`1Kvn1avtZK*ls?IZhHz z#+P4tjX=gFvj!fQe9<~+=d7{4*F3Si*g1TVxfa+uYg1lpKJV4M(>LXHmODCHui*E1 z-phE$ZpxFj&_)@5Oi>3%GFN(cCTkIlzhn;9mQ0x$2efV(Q+s08@Y?s_xs(6hf6hha zpmSxMZj7uHeU{9zqS=&+;wK`RY7ddNl4yzqv-2X4l%%zT^yKg7|Pnd^( z;7r^%@w<05C9+N~>j=!vhAuNnV6C%M9IWKOSn- z)*If+z2GWiXUV5EZr1*WxZM2_+K#84NlnL{GxzUx=Ijp+S5v8%H{y+vg{Q7i2gQ!U z1GTF5!#M2fFh)PcIPFq+{Fb6m;A% z$Qycu{{9E__i^j)Xi70+3;*OuDa_6MQ!2I}Dj%mWm$;oOq0#|<$!UpGjyqgeK5oRd zeB_MVSK{X`T4b*1)P1{tXvBrm<7004n6|dn9T$2J8v&g9+t1Bv&y*8xFElK{cE%yr zE}t<5w|q>$_YwM}!`CWV13!Hj|3A{EpTh3(4kN`|&pos|ep8?NA-wae?=Ee602+S; zy%Vn9|5(GI8T%Xl;p+WAo#8+DQ^p2+4gdbVTfVWs9^Jtc;Jj(=(xx)jOHQ#zARe3_ zFkDyW`&my$Mp)NEub`4HUwYrJhJ=_KPJ!QF!_z>Z{&xRBplVE$X2y8U0O*%JsoZZU2srW(u}K z;5VN^d&Ig^w6?{M-4FVR-N@M+i*kSV*w~Nm+qGEvO}QTgkHo&AYVSlYgeQd;Gmz82 zBwGAm+SXZ|?i%tKCvC7tZk(1fO(Aa?6P8j>t=vs7HW`eX`}aF{ZrnepsbP7>?5CE` z*2}Ve3I?^UZmq=_{YNo2G(r~3EI!*zc_=kO2o5oZWO;;6UxC*bp2 z^7?@%HuNXL{3~JpL>O)|@&1-DPpMc`JIUVPf|DKYkAyozxIYrk^dsD#2{%)X_Fe{F zJ#kOgxX&aF!9NcCu}>E2iQ6MmM$&tP^aL;Qe-gZG+#kii3I9j6zv#Jt13so+20H#L z{(r*%U-1_@{zeT7T?!t8?_-qf4(Rh|{O^D^g6DeZG})2tO@uy)m%dWB(~}sAbNH*+ z-&++&8$8(&=Y5XxLLBSJiRe!nGGDJ#r1g+Tq03^8oNx_wEZ?Ibl0%i}&)ogx_=6x3`wxE0F(RyjvAMo5}tS2YVZd|E?q1yt6rn z_3HoSNG|+O?q}YJ&19LAPoMH=>K`1*Ex$l_GI?;axwa{D@#%!^a%XK@=2*L6B9eNHEP7}8nGNnsw}!Pxh6@_84x&⪙e9rKF2K|VNPbn07oguw5 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

p?bru4R*BU>7b_aG@6&RhT=!5G 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

H?ek= zYcFVFzf&Cch%GMIZ;gGtZAORMs&=o#9&in9{(a!SH(R*xRyY@<)cq9uC3cr_aNo3# zy<=lXyaL$LV;J$Yx za2xJ~+wcqYYa;IZeiQc%=G-CAO&s^_HF4jc=DBZkUTD2&u5COwP}IizopCJN;X!oU zm+F5#upq$i+b$W76K{iK@u%Ry-(YR_fMGAX-3W$=!+iIPw_(4z6+6x?*mG{iuCti9 z)EeSaQ{s6WllGno*;K?Q9k+Sp4(2|J^S3AMJ<`>a_MW7@$JWb|_MRd8RMOs)wD%q`fC;?@8Kw>>P5#Z8$-EvdSTswD)AilJ=g^suFKr_$ByI zu!(JWEpJ213wd8_5%0hU8Rwt0_mHOxNk0mtM;t~uG-&%Zz%VXr}r)=U#%zjYLU^=1x`YIwR5oZ z&xSLnXS*+Ia@M{s&f1h{H~G*;=c>KYraST_z?TDiSx#1q4up^42cG{?GHqja8V++;(EY8^AW2_zcA&;Nx`TmMt-+#_}7# z-O`}A1o&!&u^F%2GTJ*DSFQ7T!b8OQ)27C5u=vyZz$o{CQ8x25nd1tdDHsWja}$1l z`RaOS${$b^JNEjbC>WbTob>5@^?P<~UFmSFH2$OhnfNt^ahYB^gqg15dm?7~Qt}EP z;dhDru4NY|a$x0W2A3Mc_*t{z=dtT7oAB%S8HK|?$M;^^BrNz|{1M{dg)8qzA5F94 z7d~&sFKnirW6jU1!r?JB!iGBMr}Po${2UgCV9iad%-|d}%Ps+%n@-VFSX}gLSL)@q+7}NF0Np6&W%!L5zi7%ZmcpDlo`%l#<(SL zm#qi4qrIery<{)Bi?7QxHk@YO6*5L=!MCP^uknZDW3*IbR4l%0_dTQv9;4X~{LCL> zj4ElfJw`!4?S<>O+@Bt9W`2w|HtNG&@WX}p?JoG?j>6gIwhp?ueg%E*cF)T_<HUAij|~AGJBUt!IFtnea34>m1-2iaD_N0P&7H_ZWMfnp|uD zJy5GX#V$J(3y~7zOn@&q#f(i@|GxNwQwC!bwh%jE$0ms5&yG#dKBw4(HJnrOSyfVJ zwc#z-xC!bcyix*pvY&Nx#L1nEZ*ih=8p0*mu?}t=s}*2W#=|~~e>j?EEKp8IJ60mj z4?VQMYfo3dZ#y(lyM=MG^Dq7}aTCuRg`3#R+;YZ8sJ%{Z;tvxapuK*;>yPap28%l#AN44) z0V$)#26!F5_%*z9tk{6Jtk{5<*)RCUi4WL-PyV!3m+|5QR8RNVfIw^!J2rs$F0=#B+Vo$H-A3KH^mLuxQh?_5~He z&R5dB(f+2?X!n&y|MC2ksPZ2R7wyJHd=@O%iYwtF2KROb&U>4Oc+rZHJjBtayW9P6 z0I1$J|85Ze-IMU|+I)s*$de&?UASmF7xF^>FFft?L@r|HvHWDNc<81;-?n{sx5s7W zV)8)5`G>_zT&m}d!a>~4JeJO*=Q_EDC9myf{v=*s&KioAJ#1o%KVjv1=pW?ZFK!cV zu$%o_a&uQvypQ}>Av1fxr=uI4gzMDgF!g4JwO^eiFRGctc+Jyh&WKm?!DxL5%qU!^ zi{Tk<1%DfzulUr=NHsC%bHTuC4AlR}^KXpKLf!+1dOcXy>xE_YToaeG@1tyk#eI4+ z-(z6$gylWy%Qm@BzXKQP8SqF&aP>;q)O?%8pf z?!X|P5|}u_2CTr(U47B5vYRxM0g!A0F0;+qicj%iKxZ z-0pd~Cw#1p_wGW^qP?r0;P0>}CoJy!AMm#`?}?W6d0%Z&8-0{{jApO&9xbn`7g$7wEAuW%cr?${Fi&5 zdbuvS*5>r~qC+y)qvG(*@x|`3mUoWDX+0BpA)J8Uo(QM)3h-|wJllB&97e{r_x{S4 z25O!A^_x#EH1}-ho?FQtVZf~#f?L(jwO-Fy7;rx?f%~}}?q~7}4C)hE;G7#hhi_Oy z`Nm0mZ%`S-*AERojN1j_WF9pQo6o$59MTc%X?mi&Qvu{PU8A2iMz}+ z7JQm#ts3QA@w4VjIA4_WeuwdXa^6oe^|=z?G?Qa`E@#(hIq&zf_er0Vts<@y#W|*J zy(b%vY4Hhfn$)m!OZMI!jg!iEuE}1r<27`_rSxM1dy-pDmTclqa^ab-_Dqhv;K}JU zz8pG_ypPjNj%l5@)mFbNCrcOc<8J*wlYPh5dn&=%s;{N@G$4arM_jbcF};qqiU+r! zvveaevWdqf50?J#hAsZVdGJc#_kr_DPa5QvPIKrpZoJZJv)XdT;`w#*N=p~`ec+32 zUg=hwSDNz%-EACv@uWWf!;bl{6CEqt+aPKZ}}aRRW}gV zPVH<(_uGmtC4XR2e@yC+FJb>W!=H@_v|~jtBrj1?e~jyuN&OLj2XVCEMLN>6;xYFZ zq(4r858UP(6CZdF++f)YjYDbU@PSVsg%4aj;kAoH!JaYsz|%(M1INcx)8O@o```iZ z1&`Ru_p?n;nw;RhaDumSAAX8F?0FAldKy2z^3vwOPGVkm;kR<~f-l4Wa}bWhPB;!< zfaCDFF*w2Z<8Pk`@0Vg!k6OIgHZPYr!S5+mjOrzkB}QZaa!-o+naBlx1lw#Y8~_G( zl~(Z(fGy`)BRI+8&%ZEEvc%_|FBiCYz*WcHoNcP3ILYkx`UcycGZ>#MPBODi*r8Qk zzOh73vfsM$fKQz7E69643(v$?;hFd>JQLy&d%w>VUh;A{Do(>uVLk7Cagy1-nVEkL zFWId|P`>pZY^sSo;QrOdq5agqXO=g5qR1CLjxYT^a{Z2mr#+7EQv71?-5d9z3s1ZE zfsq{Ga3qew0bck!=KvRX(uHt<+rL|by&wPS^~&*hUt#Dv{Bz-8UZh1l)kAo-!uQ1i z9{2gjdC<%`Zmq+ky!)`$C40bO=CC-+x@eE>(+|M^T}K{bA2{0(^-+r4g!|J&`J zk9&P^sN1*(ae(K;l@{mc%?BGCXp{e5b9F0zYGE6KU=oB07LSQ|l;11@w{YbUHdwge z=oQ0p!J6~k*pS7y?8F9dzIq57T+jDJY_N$(;I}3=*d9Od2o>|W}` z6`skNa=Wz_j#z79^BCo~;OD%_D!+tsT9Y&A<58c_z3VAI>V2LeeyLIKQzxA^>KR zd4C*pQ5a}@E(ZOqM+XLayg9hrnuBipcH$VB^Y6%jnLpb(U$t+$mEHTBf!aS~tcLB| z;E&zPF5`NQ%ed;DYrr4eILf^(zaFR+{?_f8dw(@h`{7aUb^Yf+t#HzAzw>f$HunHsd)N}4B#zeSi=RO|CcZ=&jeokm_XaN5(`^ACU z?#v40p!nIKJzw~4`Mpbgg%-ZMFpdX!U)=MBgZS<>;Ft#S-K_mVd^g`^&k;sfcz|o^ zPqpJLXI?S*w?1T(ApFjD-JJMt8;_BQ?*@lAh{qU@hhMmT8)I=5-)(&MP@aHz->KhL zJUdYP5A?H*QTRh*vlB52Ge^NF9IFU*d`rq>t;JAM&f#Y5}jj0Q9_8n#4`JBmdKgr~ai+@k#xc|){ z$9=1VFOIS<9QVV^CUV?s4@%^V6UTku$3h(sfn%3!A{=}AAkRH>l{q>Z&;9BI9J?FO zePjfVz0j5CUYPPRaqPqd3CF&bHFX+UOy4D+fQJ|b%U)<=+2!XyV)5MDetsv<{TAM9 zW7&oIuzBvu!(sB=YmJH%UO8I^;CWjI_U|9?&D&h}TZqY^-lKBe+jU(=xqoMUC34*> zzTm49!m}5~qR5Od@eDUyf?FH>aNXPWe~dc!Iq>Xo?G}xPuhKf{h1Xu3YBjS%QLw7H+! z7j7urp1^&Xhkj)S_S#U# zePCs>(;7d%(=)jy$Jh9A;u>mRyOP*}JmZ0h*pim`JR3&mJ5z4CnWhbCna3LmVN>$@ zLtpniG_xHZaq`Ke$7D;|6^PrCc1?-fk`npoPc!B=hrDU0A+A(%&vBowg+Fc`ml3iPv$P z@9w@jW+cZ)*D+_ohJYI(FQ~clX`ZZr7vhF?f@SiM9F9 z&xgytn=@0`VVlc-DgPICcnj?)yLwGa2>x?nhmR3gDtn9G>l(K)$Y~Uh*)Zo7&(b`R z9-#bJ24~G+{x+Vk=Q(3Fn%KKTv^z0Zmgd1I`0L9@g3inFon+ zCVQEWV_`b&_>2q61HgDHc4!^@_DSXjwy6HO{1M-GuzHqzJj^z9u`23mzxRCd03^nR zbg{nACoW_U@fg2gZN@Z@ksD80aUsIFFfYfA3-M8I2WxN`?>}}+{eKbISDrCyyn+2Y z$;8AHOo;bibJs0?N3lDarz2u_tUXhErR;XvD`mHH?te2FD?9GPUN2e$PP?7T%Wh}x ztz(q8?RMt#DW~$L-43})F=8X0Z`DNQ~R@(GH!VcKpq1>TRE)J>R&I7#z+~ zD+b3r$B4g~P2ai2-)L;bGcewK(OGKBZ1jP1{8zh-zd2X_eW3Os*0IWltg$~jO4+?H zlYfk|s>@)Ulw++eC#=7+Ss`MDV~!!e|2vQ@ieug+}n%I>E==H zb-gf9`=_Ja^Kwry_-^l;`8>QK+#3-)gzjYKe=zsP$uZgESnubZ|6v7jSOeh36|bXn z)AjtLzl?^16*P8c{1WoP>|OELCDlu3 z|4_`*l-N4-=n|iuJM#U+^TcyUDxPOAHnqWc9@;mE$6~I^ez%2dvfs&OuQ(&OzEZ9V z<&L!DeH1I^Y@gk>%Jw){g>7g1V~Pb@Mx3o{i~)M6)6SNP4rS++oQ2Q(gz_?EhWfpi z4!5(JF+<8D&F__yVJG|6MD1*0=H-2ypMQyNd_TJJWOQRtdgBAo{J%FXN!MNO~}hIJU`@cp1!n%ybQz3CfeDw*EsEL zLori#<8MKppB)%f zLiRYqzN4+J=jL2Q+Uv~UdFLJfo+Q!(I_%dRO$NLg( z{(ZzxElteNfLw;Xa4>#q9`V=_cq78JH%xnxE6JTf9!~s=KW8o5n7cKcAHPNRI>g`a zgRgJ1ou7gFI^(A#M~)?H+woJ9Bma&$V8&AMUHPNzdy*r0#;9@9_U|M|?nI7!m6+%k z!B6ZWrdn~-Lp*up5yg+=7DtshKguZQX0sIUkM`9Z=FBPP^7{GkFmb+N1A~8{z~uU% z4(6D>z}yml-*e;g_c4C##ec@LwNKmeR7cN_Z|~H875&w~fYnW*Q;-X`vu zq#e`U{+YC6y6c%qJEn2Sj7>+^9ZR;d?TJY{X3~yn;}4y7tj#XADckOuv}58MN!l@! zc1&j;+oT;cX~*>BM1B{XMoBy7{75Mnp9TkBFrIHDX~#_3F_U)8q#g4@?U>0tB*{D^ zaByQ^$M2NPLxQhb@rLV4hsPTp#gCWFLqbd-en2}HP8a?p=1ejViQmYq{#)aAaBbma z9+E(xVyKgONaFiNG7pK-pUgvI)VlRSG7kyyn{d~79k>(4jM=!8weVxuv0FhacFWG? zk<3Gq%tNwPc?XkuNPw^ok6}sXAxY*T3478b;_zR}ewxffGBW>6G7pLI!(<*3_RVA- zl3%UNu8zQ`*9iwuL>xfLJS6el7|A>&#yK#$KimwyxWSVXTaCR(aiiJfD_IPlw+#$& zbD;r_IGKk;`Dm&vEWI=5L^2P_2b=ePkBy@ze#D8R-#bAZeKHTp)VAMg9+HZ&{Yia3 zU)$&5k6lk*`{MPXX#OP?!E|F`M+UqeonZ3o;Pt4U9|=VC9iEJ8cw+Bd5ejzsjDB%) zgnjvu7&$DJk8oPix5;yu6E^#czP~V79NgCIhb7{TGKi4$KL4)Ob>B7JJfbT0N=Z(siMS z!=AN)N>5RZ;xX&5+Sqc6oR#-^voeWwuW1!${>ckzu4Vu_mqedIRmkWKaoG5mHO zM)9X?Vn64+H)E;vJTJdyK&}e-*;Nl3tL-Cvfyka&fU&+sduXms*CF6Rz3>< zK}nu*MmcNO`HDMfYvHQWsN5bJ%;!y z`X@rZ%4+^!4WEUR6JRy{L@ert@$ytY%{Z!!kMQ{p{6FFbSjQN*O@>R_mlg|Bw-P=z zzRE3j>V4%FOS5u|O^{!I*d{-=@_#YHABR(%XHgh|5Dqm=vQC$+_ zGo5^4qjsCXOkzCPb#8*#)55bOcRIc+sY#ifsGpCuxq?#C1)mu5u_QDtD zR{urBOWQnP+ft4G16RaznjL1Hej6UF64q%w^IV*r`NROlbD0I&&Jo*a$K`dhZl7b_ zX0VQLW=-D0`rXCaZDj3sdLn^aSi6eB`%81}USY0Xt=p|dCSOI(fHxyt$#=!>WwL%3 zvwju3w|PoDc5nRza-OYY4m;!a9)P#eEpG29oDD3}g2Y(6<*XMwwylEsbQs-V@m?p1 z_flTE-6~1NZvSZ$p(@;zOo3pqi=M%V?A|~+;QjX^?{76g&np$ zqHB^ZZsPhUYmrBgEhLYuL>@T_7k-_`7h45ySO%P7VZ}ZgnKh3i6YPS2J{$h|9ha^T z43P6LcJ=xI>n&5~`!f~O+PA>-^4v#4{m)+<>VN6Op^g_m6zb0*F8Vc3ZcQF>(d4bI zIm7u~ev$D&59|5?xDhwNjraiEhz2p+jeK9i_Zh@&A0=jcuh+9dd=$&WEBlr|Vr*P) zOg^~$k{4UY}_1je1*l*XbF?VDgRe$l&JL|c`rJg4p^?ZfzW_i}D+9lg)E`9hl`tWn~;UW5N z3H@d~lDpBM-wgWAL%+?S-_}&kh=k~?5cS&Z@t9c5h4fqL!!ri^Z3cTqkhXn}G5R2% zsr~*+#`iVG*Q#T?@kkEoRwq{*jD_cs^gGU{j^)TW-o-}k&zQRhtUU0NlY_{~Pg`>G zHn=thQ=%u>3*IX;`V|v?j9l;MkfFztoi%RdK3~jR zIhyR8X35TJ4%s!?-GX%pL*sLo}ud|mk!q@!|S?u{B(Vje#iAa zR(bW6?u+|CpIW>6OtC(*t}OsozTPRX_reV} zn!J9LvwEWPy7<*5@_xzj)$oFzMqY09WycQCwh}%y-=tgZAf{Woge_mU-ejCviG0*Y z4tw=m^+LE#$l%10j1G|1USFq}zDF0_7r%jZfMVuuzKg%q>|1rq+ zYO`c}<%u@)6<_AgQPPJDx8;%{`Cj}JlJ7AXTyx+Gcz)Tt!bV07dS6~E=WG_|Y~<2N zpuxz9oxC~{;2oLeo{aDs`m2*O_Bqbj7dc~}=Zu|vp4=l^^ShZZ+5@zvKNqg=%l%Sn zoa5L0p2+e0tUJeVSRB9861Yc(mrdjz(Z1p29vRYYd?xRRWHGJvHsmqoSLpQ>wjE>N zyNo?u*UvF;B?rO{(l%1pNki93bLct&Q`dRX+-rw)oo-9lsq+FD!tCclv>O1UpW9d6}yniD4P8ah0czhy0$|zsG zo4zyiJoTN0?4i%|EOBc%?Vz%6+Pol6ePL|H*S>>L(@08CB>!$H?vN#%bbwo^&2JJ`>5d z+OKUr>JZPW8YhRn_9*|a2No3ZTQ|;;XIZB`*t!CruyveU&{=LqcUg=MQ-dy3jgC_l zMYoCTI87<&I9XiJ=Kf^LpZKQsohvu`-+;qbT&8aJ*k|Bt*+$*FKNjNmckz4Vp0A)Ukxyo3 zjZu4zX`h{L+Gn>-4|POm%RcKSW9B1creL3a+O*HEH-_x9%dpR;BSV-nrgz9byOeW4 zzp1#Y#UWn?+GMkn45zvkVw084u`q$(VH@ZA)+X6xCs{VxK$~o`k}qYGm3*mZlo*Av z;>K^bG$^+a+?BS?)p@;(HQ&KpODx|6cjYr%S4CB}7rp&j_*|#M=PI63FFM{^%xkk= zv*6YCOv~)~DEX*L^gTbb050L4GV40}E!S##u)ELp6-ENcFy~T@AE`gv=ugRuK~G`k zTu*wsPBtFUJ|4vOCa&>x zzE@!juf~>U+rpQ!=h(mP!j9dOe-oUB-)d2PjKVlSu-Sh6`91WVcn#O(yK`Y`T%z>< zY5MJL`rro6$+P6LQSLJP-k=^}aSq1EDbS{OmorWV?T7g=xQ-8-Z` z9-^gK4z}9mByVQWUAm*ojCB6bPpGSo2 zdbi}_QsnXmnl?gwh z>JYN(pfYit!Ee^#dY-4bd;mN4fmHe&+uaSEV=LGzOBROCG;xj}#5Oj^lVS4k%Qn`D z9c?z;YqMt<8}?(zi^AD|j`8YEH5OdU^OXPW6f&P|^*6ur@Ym;359uziqRTW+YS_6Z zd+&}Vlgf84%U-kN1=_ZhzNqtL$96O4>imEEzjo7qx19Ogug~>Nj$~nv%<*MMf}ZRM z=X57F*K?(h8RvFde*ZepVd zIW`|THU*o#_VX*|Xg@b?_VDRpH)fx~X3zH#HhW}S{cbUPdSD0zN?`x z67Bw5SSu5ePxn#R3CqbA$KEb-V??R@DfR@XjQm{YaGyY&V~_Ts6Yu97vi%UhZ;rjA zHa39znlkaMxJ)}PHUL|R$*aelYh{cjH_LYas&#$YIQ)A0jrMpqAHWc|UO{X&-0J&T zE81TS_KW@O2eQ38=fhTb^`1+xy+4obUHLi^W$XJ*UqWF_>nc&M9^aQx5R0OZe46KK z57xTUT>A&)+k=;dqCxf}+3J6eo!)IN?}Kah7m{P)&C}Y}0Oza6gxFd6d5hSvEiV?!LGzD|z!cXPIQ$Pgh{C z-xR{9JgqNn6uH*6+5fql%^rWgZ1$h9W!;J*Q`TMSOLMi`ulJ3#+qdEybG6%(H|Tlt z2E9bypclv+G{SEGvGcIolkf9`u-hvikiq;_KD-aqZcqIzyZtafz&#gew>NXAv1U}y zrE$Bx>93FsX8RRv--UEAvt8Q5RGvL)nBAVbec*Qc58#=yT@2do(u>{|L}n;M7pt~)G4!)aFj!|X!-?|w>p+4R_=V!Nv%up>n0%*YlKL zHt~5|Ip37$E%7?osM`OFHIjI}4BcR=OZnyG2GRMJSYG*PhxE&#c64)YrMi?a8_X3_ z5W9vvuf?WrIX$L69UOP;g3>ed)wi~uSz+s$g_+ZxdM3I)I%19V(AoH=q-T;x^+)@e z9|xspA_E7}O-((Mxn$~@71A^FhxAPJPU)|0%so@jM8{Mf1yj$=F&@}Qze>;Cg`T;B z?}>Wm9{SS$ZCua%Q%ldxAE9T;CLlet9v$vvYEdR~68OrbUq6U`{dAi2Yy9}Pg1JI>d>h$A_5h97K60wQfo!Dz z>$?Y^Hfx@Wci0d1t%v<7hAme5ck3wnck>wf_uI5*JpKFgmi}GK=Z}$x{u=#zt)+iU z)^GJ@#p>ys60nuTVAe*^l@oRFmCS=a^!cmR|KsS(;mnEa%eV2oM1A?A=*vA|HlzPo;M*|0qu_43JPLfw5{2;70?fZwgTi8(^kNzYz5jw|9Euq z0#{vp4Zby7es}g`7iW%B7q|P&^sOm}Ccd?ZZ=`Rn6~6ZozP0nrpZVK|=C@-z!msL& zHL@lo)9sclXy?x~{b^o@Z_Ss$>;G(EN!9#_VKnxaJNU5h$>Cc|8R1)VmX&YKC~fSw z^9*Qz9Ohd?Zuz#i2;AWGLEoC>n3vFtj^I~|R@~XH{~wFo6qP*l2DY-du}jG3VEWfM ztDZCM5;m65hkwoI@UInOmq-iiOnSnUXReqddB$m**fpkYBJFozn@Ab7P2{uI*grNj zu+~PmO{gD=EZYSB8T8L)`sep)n`pId6YQ7c+a_q=AB$~*`kJ;0{1hffE&I!uemTpA zA-~=*+k|!fgRxDdjB1;3&WH1{O`P_|`Tj4=Hjy%Do6z}W`}59_W5Q{hc-di_aPDmt z|A~#+woR~J3kPizcVKJyI5vmdu|3>|4dPa86SqVMe3LBOg#2t7T+ifw7Ui-j503DQ zIoKxRSi(oJNvy}urr3pv_}NZ=!RWZ-#-aFymGZISWfE>>72PvwQ!ii=Pc$ zOS;``bh~X8)7qQS@7BuKM%+R(`W_I*J~67Jr_6XO-Ay zs>&)OA7O3Vu?(*uPn*88{6D39sQ=8Z!V6h>CGR$B&)jNs5b(9(PH@rK{PS%8*-m85 z8c(*Rt7SWMHQR?4*VE3=hxYVfp2sfV^fo)!qv|-#($A(P=x04&Ag-aw_Mu5uo<52X zZCb3b@jETM(8=~W;ucDbq3iOY{bW#w8oFMA4=rl?(5A&ch5xL;%!gP^KEwj@Ar`hN z7ozG|hMZKAZJbdb_Ldp7XP>w!S`RmB(85+7W8JqJR;&YS|5REWUsX=5!--EViq;n= z;HLt}9gcVhjgR~|Z{D#mdLRCloB3E)|X!syZTR~C0y%8zN(+Ut|dn73pUZr2JrJ0oc+zn7_!CppdUzw zSN=oW=eLk+C+Rooai%UtAIRsIm=Cl>F}&=frq7T3cWtSKBXlv1(esS)S=x7v`jPg@ z2c_#y-D~)qnr8a@CAO@3M1->2V6uaUn`b}{K7_BGjpwdS1HDkx|A`v!AMQpW^+ zIeV+ed%Hr(*W^HkbbPIQkpk zFMZ9Lv~tEd*QEM;t)st#e%i9ixV_w;9#$V5yr6!LuiYd3R{cDK=d1tJ$20j}VfCl} zzlAck4yymlhc=>bmm0TMJ9xS7N5@s&Dp}*swdA%YX7fDhG$CyComwXjAK()Fd*%25 z!}x7hVt)(E_l6HpxWOfqZ^RF&GP>Si`5_;o?kal_|JXrn{#DrgE0MF(vn-tkU;Kdt ze0-+^A8-2r@vklT8=loqUI=^tQJe6eoBPfR^2TW|(cYu|#@SBinh&y;73Uf7StWkmN{3(9_I+MQtdjOxG(dM9`t=4V6SlcKJ!M&GqxLD zT64{gjduFF++w3`-{%?hDKp2I*(c-}L&x~f-;<89dYl|%?*30=bI>vVl{xu`@_!D- zMoYc`bMb1)1a%Ax`xnZT8Z|K)V|L4y4rDLR- zI>x7XuJ$6WFU_|QbF9-5)AVz&7;bA>{?Bh%I!69Y;P_16=dI`qx1cxNjQ+3~J)#Ev zq8k0e@_klFzsTfz7WcC$H<|M27GDI*M;XN`owZ_>R-k9d=UK22OrQLpzG;1_S(r!JyzvM_&bTkX>^TK`px@_ zQ+mJ8MBp9rcgE}J;_sYz9qYh=bv=YX#&>sLg(o%c@62)N#QUbUOJ4S_HV&oyiE+rE zZ5&DmZ`Skup?IbJ#`MS}&fDYY#XoJmD%kZzO7tvx@wt~%qpy6!h$_CuO*dAY{~N_0 zi~h9rbHQ%*)Bbyj$)`TcK5x`YC%(fsy=EnPkR9{CbKhN~=*040riPUtKFIm0*#GAe z{FnX2PK}N)O${rb@$#$4-)wOJ*!WV_Z8Y6Dt`{rbKhUPRwA)%A@*ipbqcfUzSNRzS z^ChDX7ojK1cexxrIYi&6>=LW2){I+OA3Cz)bX0b?RaSG>t*m^Q^7XjglmF=dWbV7& z>&9m(Uys{8ANLAJxmSiyQ@WVj?Er%(GR2hYYxm={d9|T;Zr$7`v0rg^6FOR5 zo%+A#;I-(jPTha$l@r(f-(-#zTDt#A-d*mS99tVSYA+@B|8;B`YR~tZ?rN9*Z~MQ_ z@x7cjO81xEkItX>Mf6a6&hKE(H=~C}675J{OJ5l#9W2~FeMP=*W z@1l#&kS=OIBg35kalG%)8ZdQ3hu%M$4_4zNy@@S7@E%6&c0x&G|u3DbAEV_w?V z<>yxn*NFFXU3sh%uP>wS1c{EgzJ<0q*URAZ=_g@25}#w+F2?euo;r=6lsTmN;)Sb0 zwu=X`UF>8|eKcXttYprF6Xwi{3Cx*p+PTu2Gi&*tXfM*<<~nB*^4{CF3$-Wc$1iNz zE`Iux&jn?>7%^A4KH6N_g>9&j{@f+okTq9A)Xf}QKJC6V=Lt55CG@Yxe~DE_cmrn{ zFLUHht4yO+=4e70&4XJUV*@CA%)K(9z%NmHWRo0lFj5toSDOICPU|x_H?_Am7N2oe)`8?Gf}_FW}draXIvDbLD(?IVA^u=P6Ax4GDtJY3UnmCOFVtH#e|e}4FScz!H=eUZb5-Q|L> z*Zh$0rr*-})jz$+yXn6t`_g9HzGS%L>$6;Q*wem079aMNmVF5yfqd9q%=0mQ*d_6D zK9ytaO{_iNOFm$d{cGTXR7;d#`C{`XtZoXU=J@$EBjNY0|%)^l#g7$5TwqgzTqD|8_h! zAnD&u`nTip!#0QK`Ri&)|8_iXIqBavR;A;Auz4Ai{_P=-&o1QY^WpeR`nN;Q>dHCgG__R-QuhnCiyv}pr&&l+J`iUDq z*k%|%s`BjqRWNV&uS$tG7N^17Qe#6l?K}ye!7fi$O!mpo!UcO8E{7lR34hYTE8v1X zVEwKtyDC!ZN$-^HdLBN&I)1Yid#Jc4^t}n2qGAoCJJy4njPacN;4ml$msp(_X$kS$ zpkYvFUksmDt$0PNr{hob7{vVhW5T*bsPjDP40iG0+;rndD|mN0bxxuYI28X@a_n>*++9DE$Mm9E%t90!M{Pd zRg_yL4$=(X4WGqeIX!n7{%Ok4Pw8eq(TCx5`pNmOM;W7ZBR!JIIQ4)v5!P)B^Qy!240e^ScAj(ON$ zAD{7Tz@HL=PjX>L^NfRmOkyjpH2j^v#m02TlTlNGohc*trl2@x=6EB482uiD_bo4L zVMiJ>GpL6CJ9i@!PWS;%PrOyU(Kl#~q)mig!3GI91 z)o27=HHEc-olu_mJN@r;fWm}_USVEdlr5FAiw{u zFLzFKtT6-LWFwcqa}_U_82K^T z*~JO=Z$@t9O<$UcW!~kT6k9|)zXjj2Fu*_I^DXa`gCAxL|INGmS5IEV@3U$n@*R~J zDY3mgO!$`{BCd?TColSDi;?@SmJ(yKxgJXlIP+=ylitwv zdj3C630>Ffof0;3DaXE{di8Sub+~UIG>m>?%OVY4Z|rr-Zo`>nzy>xy6`u>A zx!$ad+`B*5F0Ksq>l$o$+gUey-xm0%zv&IFn!;S)#XAa_o;~;^~(|Z1^-chDcB&@{|IG|;CEBMMEO*|Ea%hi7xl>& ze7Ao=8`VdN^DX5D<08Awm(u3%(dM7i=I_&H)qgYl-eHd?R%Ny8u#plzPP>2pNW;s| z(B{kdJ4`*cQa3;C5YKWs|JN9+Ehl`bZLgbc$q)aWK6sXP@1otq+cL>&%cQo(6Y;iG z@u{}>_;j{K{Bc*)7U#Y(8Gpc6@dtbsf57j2??`vuJN`fR-UlwKD*Ycn_g4-5Zv8d+15-xU}}P6rfH>UiAtpol^R<%`uT!|1*V((m91g7&q`@( zYL=^OR{lPslA@S@R@0fX_`aWe?!^&i2Fz^Te#6W0ednHY&zyViInQ&R=bYz#?T{TS zAv>(cFLWq7?2sKRAv>%yE_Ouc0%+ z54(I6|B>-4sehk9*c(BxL3Rs4IlqPdFbHJX21l1B>^7ESE;$jl zMK2-1uyt1KsAq=vvJ@31*gnW)NfayJ0=sZNYzhNxic(zbix0z`t21?cwWB&>UgKOx zXKp2>o_5r8CF*G{#T=)z^{l$V^>lvE!u8a1i&H&YHWNQt2=?fAfn62~`z#FhX;|_r!Ga_LwL8y?&PJ$5O9bE!)~1hyL1rj43$HKa~gzX)B8XMia|L+y*@VT z(GO^ES1@>`)O^0^tGxu@oI^gE>8~Q5^ceU#j*}0C>CH!AzjQ@^4n;k~P|k~p75q~2 z?URB&`Iqi&*+p=tM--UqY?CM2BIo%;M@SLbmwN3r+Mn_n6`3E?#gUb2iIYkk2UsMy zI7=KhooRXGrKk2rO`c_on4D_6ttE5srT?0{+^&nTe99s$-@wKj174LeLF~~l#0q1v zWW+g^=9qkYs_&fJZEIjBZvuVBc-U!lFTTT)ENgV8x~jQ8(aTs!wh!v~0t?DX#=QK1# z;EyqGj^AzkQ&_hyU-n?jo`LPW6}IzM7U;J%OdQn<&*$~~AA*f!FfYXXM~l7b4d9}9 zeO5nP8OEv^GT<55?OT}7$r9K?e&4s;D&kpDxqV<`W(TlGo6+88p~6Vqi3YSw(BwX; zet3RU!DSza_IPu4AKN{*!w--QKfpxvpGMTt7v*Q; zw~42gd|nN(kDr+}*~U;eE#_gzVb{$lnrLfbq2~7>M>Z*QH}Vto#s@xv9Sr+4ul5u8 zHW$GcMDZENF?VZ$jk^%-)53z9$3v#HD7GHTNIMT7!c5rnu`JAdJorUx1LktE4A;ZP z?kQ+;Cc1(#c?4EmiT=pV>48+m5S zd0UOoD%5KguXTd(t~IV9zd1!WgFyao4Vf@8!EW_dyo?9x@>pvSAct#P1N_ zGZH-AoIjv-yp;;c6#MdeiLgwIetaDLI26z80-kwSjIqZt#`c4!AohuFUUK6CG1(5K(lceVUc=xVW{ zPe)>mMPiJ-f-#mVMdBPwduMWL>IcQC${5qgV@wM|cTY zD!*2F8;JV|a3gOahZTA2??T>|8T}z|H{khJV6Sf350JNaqrbY7x81Sl`50vFaqRCT zc}x3vJ<40OqicC9LEc8U%Gqq}TTWNryKbKdHd z+?61A=Pch1xw`>!mpx+|5rTf&vp9Ct5y;()vbd?^OASFL$X^DOa{UKB3>my0GPvp- zljSdQE1BbW8P`R|wvoU7kiUW~f491nzx{2Pf4P;vRIV(4Lm+?A{;uTj6v$tH$lsli zzw4dk?}%%XzX2V}--@5T{Kb1&e?<9vxKr|18Gn$!fA&ZOK%i;*nvbaa5 zWU&ZYY;-A$8$vpo2aAx$#jWy~WHA#>BN`!#eajN2_QK~Ld10P|T z{*N%sk4a|wKt5NAtd?YQS-(A2nr}XhHN7>ML#<&Uerv)^%MnMG^1_Dt}KoRpJT^!;VZHjF}dw! zF`l_=Su8>p8(qrc`Yx{K#OaX7#qH%W#+@g5Oyll)JLm1RPXcAR^hv-c z0-uB(cE(EhBzC|jVYR~!ip-z8+@XuS@jeOoOyHAP37^CcAJkFtNmvJ>4rlV_F0axD zd3_RIpTvKbPXhh;DxU<#7<>|T_#{@sC$R%Q3G3VF-}~Wfct;<8bNeJv_XymNlTSjH z74S*yfKS321;1n(WW_hSsQ)OR#I?xXdpeN29(@z8VfH!%>{2FseH0z7*Lh{~ zk1dmbu#du7Cga$(OiqVPE_NxCZ%Q9UhjKX`a=F;0T>ek;Q8@F2bmXIO&g=D2c=t_s z_f6bn`zD;_FzuUgIXCwDC_1}O?MCdIQ0K(Xvecd2RecoBd7b61*GHl5Tl4Oppm$Yw zw13UJf8yHqul?Zt6V7tj>!Y}8AKT5gf8tu?vFf96Cy%{8injZSz56Ji2>v{IsxA2` zzi5hgNCvOK>Z0kkPlVtl@pA^*{#2CQ%0Uo*cZ@g_c_P`zzLSzmC9rk4uBQ`&0o?o=N=f}o3?>F1#30m`m*n>rT-JgfAdc7EJ z`3moeTaWk1eT8?^rDC7guMxxW1m3wi7W-ba5qB^gYy2nr3N=Mt*fM(OxDGK0O#@k7 z4Pr+M@oDPKYNn&S+6<%3@mrsoBY4;N*P+aDQS$3EPlz^mN4!8a3%BUOPcc+5nh)ds z!~!@f8t{&hqoH@zoJZUO@eo|V9%={n@YDX6bKva$3f$z!i8nD6T&38z?)YtHO>M>) z+YxX|GQ{B?`J7 z+wop$oxSgz%gi#2F+C;3XEp(TZ!& zAuhs%`W`|o#0iv#z5UZGf!oCZL*EAq!E+D-o(()Zyt_3H^;Ca59ebHj$JwZ(%<0hw zoF0DosCA@zjYk~DA;dSF?18?Fy{+`F+k64Yj!Dyr0SOwIOT2n==AqCFUH!Qa#%xW5YZ?Kwa7<&lhah$)0)!FfW3qI~N zX5s}`$K6`U0U8snV-I79-s^VsMLz!Q;A{9A@e2+qSRQ|8G5$_t>>UGNsT~~Ij!!dd zXbhgmd$0M}3vL~II*GchxceJV=qh@d%+lc(dKk@>?yz9@z{&G zGWK3`9(%@4jy+!YD`PMCM;&`+#KL>Wo_FkVz2_Z!SL?lNAA6mN$NqQ4jQ50&z`W|F zj~Ty__53ko#?^YZNLttz;g|zOU@jDiIZ+hmMn>2d(RgpPX4%mmmDj>o~y&||I>fLO*CkarVe$JZyn zU<`)+6a;&N<^Yetrg#gwJ{k7RIoLC2o(zdTBLrs$!+#ej2IidZx!Xu~0mY98A&yhc zCm{YEk|w8tmkmO8)qHd{R6SBE0L zcs%C5bT9E4iI#Z8k0;L!i5?^d%dzqUaIe9=b{hjxhuw%DUp9PzB@VwmRS2}yBYr#( z@#A|CKYkjv)>+tCL5LqeBLw;dA%6U0#E;Yd?lSB#G$Zcu5zOh&A%46-sK4_)r}*)K zh>bbhe~&c?@#8Uwl?gt=W5~0?|Ik0YTbFYg!ZHEz#_@=iiDvP=B#X6n|7T9Et_~JWktMI-h#B+}nG;Gfx7A(ii?D($b))P2~`0qzg zqP?>bKMwwQ3pjYvrWPfo8u0vb5Wnb$_E<7I$rcmLYC}<{Bq`cL^TrPeVY|VY-1CPv zcAY%8#Jo|STlQvkN$T7ZcHK<$v(vZ_iZQ1c-UirY^Te3uxB!;>`Rp0Cd@0(z05@Txv=IBVXM%)`%Yl~s@ihIm#ErI zn=vo;Y_E~*4{Kfw`>3fm%^8h3C-A-lve)>WQEa||IpchA&e1!WI%6X)=!Bj28tk;g zt#+DGvC|@&kATOmV>^x4`2^mFwpWd1m)gg&50m3}9)OG*16g%HWY%cNu0OzjyASWG z)XMgo9nY$D{44R4-4V|&VeI2Qg*gf6A77#mYB1)X#h5>iad(VqvbQE|Hg22iGwS%* zm@Y34?`WqyR-81uxDcD`tm?O0K7+d~-hTgT2_{;XbOc?diO`@kcB`0$bC z81rvq%1_oBxs$oBu=>kIlaib`Hhnzl3|4Sv*AMdtBqgW7?0vP9j;kdB0P9`@cyyyhXYJ zaqd4lSXRvl6Bv}uH_CuYZvdf!c~`!wi_-~oHAvaa|Sk9U`Kg)!EJ zt`M$YS0L8?B--DrE4bg!t1Ie1=RUp8>5BP3Kvz(_XFFYiKImFkNYEA0t-7KBW6!<5 z$bi0>(_UXd26)mJBm=HjU%cOGeZjc|RDIEa`*Ei;X#H5#84`5Hel_m%2kHzp{?nyB z(T~x>W9FcW~KkSJBSw~V_zDJ#beFv^} zh6tTubg45+5Fgy$u1JU8C~mJe!aeJa9-Yz~BJ_r_%byjyg7n7oifvJkxO~s{1;z9i zgP$tMQU?3t1=trQf@#E-PR8ZS`h#o_#N}tl?=<=i_}F?DbL#0>(?|wSb250alEY2Q zX?^L>v#}N;Dz=6gZGI27Mm!6##KG1Gak4e0BR;>c=y$cPf%yEBcowSuSPWa^`8Kx3 zS`W5H?KRpOv)b7jkvGWJh-_nPM9Q|t67ZRkkG%7?M&yrVYeagqHS9N~tr6MWk*)Dw zr}c*-8(?cBy3!x$gRb?52>oH~vQe=$NPj%5*c%POC64wsM>=#!@$xrdb3Eg0b3h(= z(jg=du2+Z9I&bG}4$gt#N{3Kbk?$8}*h-aqAIa=<^e68kusU7f7S+`xz+RNOJ#T0nb5gz?iu5<+Xsa)!a4CshCtvaF}bBr76r*f+& zGN32swCV}6H@to-@0x~pO+(jwU4ANOok4yompUT@I%7_&&LBJEruI{Hs5dyTgsL|h za6j&J$A5~S>RNOM#Xoq`9UlEvu5<^^xz-)&&>h7tb;k|!SGm<6>Chj=%m1v{8KghF z{;I3j#=ZV3Lv!bB53j#U_GLT!tDN-+j$P}Kbm)=d582j;zDwSi-P88Z z$-P>6MS3BQ?;hkmj=aZ__c-$Iojl1_EBYEX-k*ZJy={L%e9b0NBlC*T`(A#?q>Lub*0pgvZJ5s^-5hm4tUQX8s=34x59mV%8L>ai}=GVYMGEd~(Cgl{DiEHh6 z*K36sX`a#LW$O%4*h#-hZBx#|b7nGzx`kRQaLw1q%diLZkQi((I@6MicjHcv1MU?= z3~%2*L+&%gK{6BZYA<(ZduHMD3Sw7@vu3DdG)E3*%P!r5_lDB%bXj4g`n-x5xtB%L z>{M)lp~$$Lv`JZ_`lClCbi>T!-iO1XI(8@@eW)q+VBw5nunopRY-#T z>|aMeKE%42k403-V`L4uIC|l8h~eIGPkv~RV~F2HoMy9#_Im^GqTP!Ry-Rl+-bK3+ zpEY=2?bhIDt%vY_Te{{0yjOM;>)M=!{6V;W4Px7lgJ0u(m??D=uA{ta9%{E|&~6W* z-Fo3&y;R26;KM1wwbX7kU-EV<0Dd61+eEqD(h(Eb3-?HEoFJp`+U`K~HIH)Xd)!MP z_Fz7bJ(yFm2b1KJwpBiDb1R?X+sLPZZse0MPPA2tK1*JoonX7QuxG1$>IwM-S!RbUTe%f^ zw<2%v!iQ`dMIXZ(_YX$iUW$D3ZIw^;5@M^7zrN=_YwuYFc=vITc>(0p<89^BNXRG1 zl=VWGET0ZTKK0dd`SfCY`DBeLo@xW9kXh0w@(Hr-709R4kU?MEW3siCO|x+Ra4f4^ zlzxXIpQ6q27+Z2|EM!t+Pb{qZkXaF}G7GXv zky$aVGV4Q$%d3luyh8t$oKnHg1p*_SWs%y`L4 zD5FIbWZBiC$gUPecA*YwRL&nEyCAR3m%5Z&&nwr`7|fNlvh3Q2_;Zq77cs8laE~o4 z*u3~OAA=^~aTbC;H%abK4?=c5j4?M8a_ei7Uyxf4d}5_2^Iu4A;WGojbE(T8tyCXs z_nDAeU*kh~oY38urmZu@Z*Fbh@(4L56HIIYr8jAKWLfbqI z*|k+N)zSGcA-~o@ZgKc)P- znK^*&f=>BQ-~hUj_53k8fYf@nWN0ww4u!oJ2D`5-_qf}R!mfVn7beG_ZZ*}d!JK5xT%TwS_P6c^f5)E^b{n^W z#D= zu?U$zgzo2=VM&&);0)S~b{UU*^+6q*B20A)m@a30!u!St!DEt+_DRUIv?kddy)%z}d4ktXr4k3t?L_#jY1M zelxP9JVg3oW+}k-F}bug6^bMHZPe1M||2ut~@-a0xcgYWN1o z*1)xODVRG`y#|M}W&6OdxgT@zw9pr=^gBo3(?Oou$TM5c3BGV6U7<-HL(e+dEQVx4fv>ErWwbSsoX8J(DgX_8(=?eE%%^ zNih0JgTgb#&`;<+?1AVfyZe7)-F;YCen?>FGNVkzC0dpng=h4#5My}@cB&12Hh;;O z69C?+vv@9hT4TWj5DPAjN=DzAem}*62g&bfH%TEDCdYuM+0qogsXd4RM_i&D15SNs zwhybNG5)u^$*zro&&{9v+%VqH<2QWJjx*41xc(f&bAfGBmj#Y5&hra9w?*NA!ZSPy zzgr{v2=Tr`2bB}|DEGmIH=n?>hR+Q?xUd}JYZ?w8Tn)H6$^S<7>|wNXwF@qz)$o~d zJ9aeW?H?d_?}PmPJ>+mM{BEP*chkszw?o*c*#vpC4IDSjf4!1!ab!)VL3*~=klT% z;4t!uE*B#qPd_uR#C^=ceH_gGrKJS*{}w#Y1;9B5)AHOozqApj7x^?PMr^stLGf?Y zXX{CyfxGD1^%>_9an@%A@t$>BHu`U8blQTRT&EG&kw=||=ipkWNziH0tvaoshbO(p zbyb|1tJH1EoZHsRLz4sC6J(+*0y&d-_*l};QvEx2wK{;>X z9T3N#^}1>>+Ti z`$XtIqf6aq3N3N8x9fP!Ts!?2;aUF?M~hqi7wv4%HE5|dR%AqAMr@F>OYMCR(ns8Q|oYtssHGG>h0}5 zE~nb*K*%XiI*{bl_2|G?JFNpn=s=@O9aw<-X>0!p(1XuhhaU97o`O>BDVTsg1wWBb z(*d96N)4W;;?uNl`;N!T$TlFwSV9N3@oDZ*e45tl_G#jGUHUZPgN0Ai4xi>q^83K2 zX|;lN+&2k2(d*On`ZUdhy*|yK zhffpZyq!-IatJ!k4xi>q_%vlXv;uM{5^^X_7kP90G*R~`+>?_}6TDYGE8)|`eSBtJ ziTjv?`#5NbzM($NA5*7w(y!@4r*ZBXXPxH4uX&YTyDq<`E4@ZO1DAR&1A1*vt6sa| zeoc?MEd#o3POEP7`Zc|4cR%^so!77VgVynWkYBT{&QoMmd!3g7oj0dd=iStP%?|Zm z2K3&XR=sy4{hB|f?(3v)vsL#gzD?`#?>JwM?AuiAIXAvdS^vSeDcg0|<=b?n|8UN= z{!54cD|V^>ZkTVgtq#26+k}0W4jowRQU`i{n>^OWyMIO9cv^lg$3 zZ0p-}Y4@c=2Nt{3fj6aZvqL?Y4n0`xQV-q;-{u6w8+d)2?sTBnx9Q!l>D{kM?*;Yl z*SrDyHQU;Gv|rPuj`R99uO5WVHH^(J-eVbn2 z<`0QeQ1`2JXw&_4zRe#~_j!GrYCPVLuy3=i4)ppqy|H;WNo=0ix9Rn5{wVu4JJf^M z;oICy+)uuUf7BojQj2&<9pWPOh(kBje78_scC-g`T)! zM8qEm@tchlgRTcZoj(3UqXF^f?;!sCv>1?cM${wzTyNGR{yYxx=cf^WenJ$?X9h1e z>hb>Q806O>?pzNpxAlkvUH@co^hj{hCE>b1_x#WpfOzzpk;#@g?8zh!J5k}VBaWzr zaht(m*P{=`AxpSsJk#b>u!vS3yJw0ffX6NvJa(I9j;?#a{q!{RT`~zgcA4OQ3Pdae zaRnWF%C!7h_!z%vc1H74KwZ^g1o(LrHBKsV4TOUR4`Z?doxG!Q%~)U zKsoPprSV{E}0l_-T@iKT7jj0yr5R2Yw^?QL>2-^S|BY-Ba3Zxd^1kM)_2CLE{N zG~b4JbeZEWf^*z~M=D7O&pFxSN_=e+IPxwbzILb()?5$(o;SpSHXyF}KHSGe)a@tz zeQI7nQ4R@Jr>hnzUW#{H2w)rnk&nz7KMyA;`bMHV|x|?OEriU31lJ9Am;fEC4T?B6x!z{#2X(#oPOlqd|Mjg^ohG_ z9Ac&Ol{o$Vh|#y<6E21C7@}ph`w_#wA6$X^l{o!G++zgp*^U_RSV?Mr4bLxD@@Za( zGGe8$=J&xvfHKk?i2uGl!jyVQ1g~G{E7ou&PG664`wn;}?6}tm#2&qaSp61}?lpXE zJ)X%t#H$y9I||$m)8l|MM24|U90-AC5pnj!9rYQ;tr6`^oPkkj`_JWAeyf#!hwAb^ zxB!r6HuB7t^I+fW=W;B+nkTIJD9ZW*W$g!dp#z+WcEs)z&%lG=srno-{8ay6J!`Um zE*W>+j#&Qtz?n$x5FT`&Wxo>3za4q^p$w|~MeL<-SxEBO2hYYA&q#x3rNuJ?Kj<9D zWN<}4zwU@~sg7;08$clI047`25kjXx{rWDU;6L=CQ zDcpU}7EQFDog2I|81GRIzWCJMNrlsFuQLr~axdG&!a=PvdD}eG@)wbJ##6y7>7C0n zkoWPz8Mb$r#_;(4w;}If+ZxE^O-w6u_br7?J_~u9jC|c7lkZKyHQe*f<56Ae>0hw&=q)a}4jWXGpE6OXAy)xM=lew+nmC66cdGgOuCT}MG zysprf;n15A(4UdeqfwYA8{xOmEK}#mI>wgj1hSD~LrX?`JbW03;ll{Vyfp|sN+IAw z@`L|^`1Sk2R$l}TJ$+(EQl03xv%h4>86fF$Ho>;j!H2=%!`Lk>F&f~zAiqTb{1)l( zJ^Y#l*wW?+(co~; zj_ke77&XslR2q1mKF>;%`SR*mlpN#r3izthz*qITdA99s42 zH6Hhx4Bout|BC4%W+%&hdFKS!7h;Jc+0V4RJLdFz%n#b$Gk3QM;8TcaA$|h*^5Vf! z6_2>oV1r;eEC`l?;2UmytlOwKR)1%_6JOpy#KWKIzr`woFYo+e&X*SiE`?I?<$Wm$ z%N~Mlx)mG>Tfw2QHB21U3$}`8%tPRO50v@xCJ7o#1D@IIvj*DE_;S9yhhP`)WuaH` zy8NgUta^Zl~5IoO#4GR&_E+NGO zY*W#1-ctDU{tUaj1oroQvcvH^zrr8> z{8LeDxdi^aRJ@CUxbBHRFV@K}e+PE?MKOFwIQa8ayZlqw~fhC8+JPJ zOA~({+1ILFZig=+O18_Rz=^%WdI`3yd_8RDN$`bC0)O5cVuYoIg*6{XUX?%Z0LFs@ zAMzL2VQ+sX+uW~!$9jd#V@>>d$TJ&xX3KeCZ+|A++-jb%R{p$~U~}8SFMSC%cC5r? z{=Cm%b5q@nnBUzmMeRs~%{@f1xi1FZhqmGMRQdDBH%In#N8&{8UIz%5} z*@=3ZB|kYHd?#$G)??T<>hUOW+szAP(~EC;-ncu^RJRkpI)C`;7U}(DU)^6}hutyz zVcWZ1Sju|x`;c8H1hv|Ug^G_ywG*${M*&y-b+9SU;N5Nx$#3l`*oj~LlF2^1uYPH& zIR&1CX4pt)dbjc0$-H>*1-Y@0;sW8T!92VY_ToX@+qi_a4oju)z8q`c67ycA;?@8PQmxKsQ1LX9}&=;2=rw^E)uAyGHxUI1|J8P%@bmHjvaC{ z7959>sAEL$myN{Ze}3@G#>YjiUkeL2Ke(+WHv+nl>K}=FijX35BB4WP7fq6NUz!x2 zo!0wPGXn)u94hi#)=+=3M30zz5=N>#3uie}OykVZ^9>g0)&#mLRhlIID zbnD#11a8C5%|9f}KjyT~KjKPFBf4V_k_k@3?rt~@A5rEa=g)CYLwOzoPQ&)|5aGw2 zhlF4rf@k5Khj1QW?>xji4pTGw{~_eqHz5xbCCkvkGuH@aZi$7i@jOr zBjBTa|3{vW(0c^h`a#}rGapIs%zOlKA+F~mBIYATm-CT0@Se5zhw#|Qc5@Q&xOtkB z5RY5u<|N==|1YDz$V@==8iq;bC?$FCngyw!RYL110?ybDeV&0sETfV_(xa z>}&eb)@iUG$-_F01M4&^u}))^*J*+SJgw905YY#ebsFmrTBpJFZr5qBc7$~rJJxAd z(z|xCPGgONKP?UGFQ4n8ewuX}tS4ceW+m2XTJII>G}dHrfhNPRCmKS29_ut;d)H~a z>ol;nyz4Z|9>c5ce6N4x%DbpM@A133-EQbQ4Rps<>om|8Sf{aLon|Gi>tdb8`YE_h zFF{U68X|7~bsE$^68Ge^P9y6+tkdkkI*s*q=suYTTgQ2@-T6g+taX|jI`?qBR&!l* zk8575aX0s%wHlXmj||K`=CsZ|ev-8sxATt-%s=L|&Od%uYc=Xz#Jg7G-816dGlICY zt97b(E^=e$BG9 z%}K6#y~f>~1m|7PNzySVDRwz0xuNSdZs#TGn3oj0oR|E^uh*#a67PDAcV6P1mw4wT zh=cqo_Of2rdX4kE1jnxDCFz)#6uX?4+_dX89nMV@Zh04TlN-5SGY(wG-t`*qdd&@w zt5N47-nbg?T*NyU@ylg8^*LY)m*|Pmz)c9So*&E}_as_bcHGu2Lc~5~i#@Btjcw>A`jwJ9` zfMc-PyI#ZNd|P8{I`oPB^y@V@bWY-3uW`#a(k{Nn?YzXhUgMpYc;_X~9F<<~5ij?M z$~j70!b#vsb>>OwXiuwmz2*uBNo#yfhjWwbT(4Q^3!h0a_+3K4^U?);FQMRl2?GaO zS8xUU%3Q&(N)h(MJ(z=ddUfFGT^hzl#)7k`5WKQ_aHAy&Y}pdVg8LRtOU(v%jY){z ze+sr|*V>vVW|- z@Xo({oz6`zqjPWnYYF0eCL_KFWvx`ovIaq46Azm{##Cnj-&$Y95f_4w?Rg<6XBW7c zJ`!{}72sksfro9Ku-F&^&SM=oj}bdQQV&k}MC3gzCHC1a2F6>?BJcUsGMaFPmOsNH3Pqj))VhE7!1*n4{M*WmlsfI@IF?V&dZOFSND2e+{_n4zU2Ue!&Y?e^Fz3Q~HB_-NFd_ zs`(b{n?j<&jB69J`&y1mK5OlnCYztaduNH?XN~~ls>%s38h4|nId>YWsP2fgr%3+TAv24#DgV>&zwBRcn*28l2HCDHFVWh30 zg4KPk)zy6afVPJEz-Zz`UN{alRIg2>K1x>REEC8QyG|rC$z9B{0kAUOpwS|AMU&OsM=72K@oOoY@2kMff zSxY>;$G`>F2wv?sq|x@%;57SMn^kibd|Bs)-d(e1^Y3kXaELX$Fe)igFj`LH6DveC z7Y<%x{q})-YRr<}GEazUKCEH6R&di&9Spa;V9i24Kk%#-p$&FQPpwdCgFUhHZ<+}m;Fxr97*63;XLY)ftq@?@jUa=3^81!r3*|#QW}_V^2V`5?);}KH>nSMPjC}cM%gtZ6 zCo)iu6gs)>#?)tvxOS|ZcS!5p27P9EVQ+sC? z7TSsm6Kxfuzxl&Rmb+jK`JKs?>CLUi-1 z=x47=QMOu)n=th8`C^Ra)zBwu&P&qT*U*12%6*&n>!WzLz%lgav*_E@m-Q^ha-|PP zH!r$niM1Bv>{aQ08_5r<(^@?nh|C|cFpBV!yHyb=>%}ARJnO1{#+9Bv=Ig^j_Xk3lM zeLashXu@+h;9lo3*8Cy*)Ns-%jAEVjJM;!to8&Z3sE*k4YfVA|n=R+Vco~7um3)7Y z^Q9vnakY_*r0Zzxpf9F1qYqEP*vZFlP`S{NJKNT;3H^=kb%`ikHHLO#9K~V`y^6B; zVQe(@<$d4;V!7`|U14so`-O6n{?nFL!X`Bh2>Hmv%qtR z`*rA^#5-NUqi6s>>RE8{(R@P}%5wcM-!Kap=a_FijQK_xcos`A-`I(|`eUvUhWny2 zsjMbxk&)WwOZ@KZ3xz#Lf$snh11bL$%r(I68pf|J`^P%WGw4~$X_#ZI!yKawbBrmN zW0;@xUwIN-u9JK2uu8*BH6gzM=c_N~1DH4XW8Ofz&o1@tV`jlSrwAcA4-1i)XGEI+ zHh-BhZT4i_P$|S*gf+lFW3FI?JlM1_(tZ;6IXo#N=>+<|ZWwXPhT99DG%c@wcBHT{*6NBHX>M^S(Rxmb)CtI!Or6|aOaLd;i*AZf<`#k1gj^aRE>jgeT4<;CFTq+>rCyXX(uLX_VrjNv8t-fj$IOnVx~ z)ylKofjZN8$j5U(3mJ11?~PfFaS@HSrDw06>mxb(Ofs@8GgO~3jMiD_m7j4*#-7{PUpYVX^^d^wS(qARo!BzQ-p5W;kZ z(+9a3pHpV>^i+&I?V$GKyJ{{^PjQoepu}^!|I<9Zia)0I<6lXyc9TB(8GgOHboMMy zpN2`LtNt^sjHfShlWt$e)63nYm%Yr>XSqrD`EQ=S)J=LhCOY)D%1!#9YR~0YulHPj z>PFAy@3ZmrnUK@2+9&H>o<7%2`j$im}p3Cp| z9Zz3@@#(64wg`O4)w@YA)p$7Tf1KV2A42d}Zq z`(x2OUFT;0po0-jfBW2Ae-JNQqrb~;(hm&e>HcoYZye&eeA}I#%dgG!Tz-8HPj@F@ z?j6a~-N~=U`#h)58q3pX>0Gz(*$K+;yGbv3n5VCDlOFRpPoL{1eZ^Bez1&TDzh`+m zxY%7j|6MP5EJ&@-gY3Br&Dn5>-_uKHOl$bJiiaeyaT8|l{2A& zpD*B;HwZ}OO#43^8~>Z*Xa#4YUFdhGam>pEQaJ}+;^+5q%&P)YIgNi*u2*nZIsa}) z`%^g=IOc5!QaK}@=jXFH=0yUjoYBv5+*QWWq~PdhdH!6Ed5J(Or}k-negnt65+IdR z4+2KQ6a}jn^6y*FpQt|d9P`S7R8HcP{Con(ybE)c>lLh?!@tKUn1y~z&vA0;wL=c!?rmjDkxa<=@v~d{8;n9P{P^sT|!De%^;;-aa$WAEw}<$^84} zBBk7kJbxs|yi*vLR8Glwets^;yb(aEN7;iMnSwLN@$Xd_?^K^kj(JsM`1z*$ITk2* za5VoO{CkeMxg2+m;+Uo2+~4x=^}pe0Qn3El{QJ9*UsTT#+5C62IOc@`sh$Tj`S}AJ z^ELn}e^v%RpUE-LA4vHd?&RkWa?Gm*QvTdK`1yM|=0yT2zyEFgypCgD!w{Z-+O7Qj z6pneRK+4ZBQKt5}JW$5GeLyOI$^d@8kYnB;Am#T-;^!I1yaUiDlz&!letss$ygPuD ze-QK$mEVtJo)3`nm&ft*OF8C^1ycS*=r_urz%lQ#QOO^r>#B0x5q%06#yLV_pi-g!5(o92@;OX6bnTMH0t`?*(2z%s=GvzZH1D;+Qw+ z8=kJa#LxS1%sYVj4CNpDH9tR^V_wsFo_`nSLv+8}Ip(bbQvSp<{Con(yxOmL{%Xvx zD1Q~lyjeiXf1!z=Kg%(%#vx0@Cwcw1r~>=I8Xi z^gW(m_jitq{>t$a*bh{G!8=Mh9P`G)?x1oq=c^k((8|*2{SIaSPDUk9duIA?xIOZk(xAL81 z9s^Ro%9Z^5Dvo&@UgqD|am-r;qs|Qkf)j%q5DUiyW1*G!s1yXs5 zKq{~Lzj%4}vAn#4K&oFokjkq9QhAGjRNfRIm3J?Y%1Z!JdG-gC@_=-|>+TiUVBjj? zEx(?AJWKX#`LI1W4&+K)Sv*o!55-km@@ZNcAlM zQhhUlRNq7()z=?L^=%l&>st$?`%eH;c`+tlo)1udK0|qV`+!v5yFel?Z{g|hCiCGj`ji8yK4n0< zzfvI8XD*QHGZRSlnF6Hx_n*UxkkbZAUsK5pRPj%tn zYk>ptJyOBT!92YIH~{CH0y#DY@bkNXl)n~8=`(>;Ziz-<{eTmIZ~^xZ_7yM)@H;;I z{B|InABznPbiPvLI15PE-3z4j7&~LVfehFO*m#MtB;a;nFW@?0PvBBu4`3EB0T=`9 zPU#n!TpxcRU4QCpe*G?BBBcYV{4yYwHw8%LjR4B!0IA$l7kGK^p5xcq&hqkB0jWME zKq_wnkjl#fQhEJ=R9-NU%4T(v;NTpaJI#)^Z$M!_Q{|DStm8rJt(i<=9ulAC2z^fpE?AUsTB$Tmbzi0O`C5 zNay$cAAUYk!L$F()3*aD{qk~UTmqBueHW0%K`oHR!73n)gHj-kgDF572bsVgz!+e6 zp#6DXP6Lq2*$$*~HUO!d6+kMd1W4r+0;wDmkjjY!QaM|mv@e z0_l0q1=91J3H$|c3NQvZ0Z7kt1dyI*3Xq;>!$4kMBz~OaQ8196gAPc~lPX2e!H!DN zb2tm6=im>d=Wqd)q~|ae7!2HiLP>s<0;#>{0;# zFuv%3P546X7YEb;OMDr_zY%je-Wlv8F9MJ7=Xhs=#F&WmIF5H7WQ+;;et_eh^kew0 zX+Zge^$J!hSfXHof+hvy6l4lEpg!{T3RWsuqF{l7CI#aZWC}Lm=H%-YB!4A+FHx{S zL6d@U3Ni&7&?xft3RWsuqF{l7CI#aZWC}K*G3DzOtW>Z>!2$(M3dSkO6l_5I%hxMd zsUSTcI$xlmNx?V;nSu>?Uh?${Rw`JcV1a@r1>+QC3O3;R%GWDcsbGnM1qzxJj8l*) z*nmzVU$0=Lf+Y$TC}>hJPC=$%11^@YSFlpS5(NtsG$|OTAXBh`_eV{=f|UxEC|IDN zNx?V;0aS!WD;^LI3Rmo`TGMb^(|DQ= zmuMT7Xd9PkeWZOaY7e}qJ@_IH?JsFBzoadB8HXj6+R{qxqDmaDdriCHHEr!{IILf% z-Lg)*eH{)jyrs3jrM>(X9on>ZoA$B|hb!LIu6kEn`7REtKhUoGK)c}s9PZn$J+NJS za61mq?$KV@qqXnBVbwpi)&JD4`zIa#ueSPswd?*DhuaTpcOBM#au|mPPHGRH)Ha;N zVd-h@qSM;4(>ScWq^-K7t-gfAgH~OGRo7_M;p`e+)f!#(8XT^x)@`WP)mGzh=|)}o zM%{{yIIMbGSN*nb-P?5bJze>Gx)twH-YvQfTXeNsaCl+2&c0iBc{dKRhqCk^x<&uM zVbej~se`(+2XT1$kglXbSK5HXQzvz2PwFn5#NndTy0X){rKfTDiCwqPt~+4I;lXcp z4d3b-zs2E}XY|{j(eHXjj~iO7Ke$-muo#Ei%k{g;^`DgEu(D2HRj046!{Ozv`jTz> z(rq|gu|vOVhrV(L4oeT{7ah=-9l&Ar7y5Ny=r?>p8BXX|ozPdFz~Pot`t7ImyH4S- z>KlFaH~Mwo;IRHX{g&_a+rPu%28*HAVz5~Zcoxqa4m@u-_&g4`uQKdfW%y(j4lh&~ z>=lN~6_jDU;lO&s!Sy&iyTNc_gTcN5hYf!>H2&St^miPVzHeCczM<@W9NIrNT>jWl z@`*t!zPr~@zZbZ!(XgS>Fb2v9reEvdbo!35T~&+!@b^3Ad$scYmu=FEl<(`5^lat( z2Ic!-A!n(4bw337E9CF${)aN?5lUD0Q(VB$(syFLgcmpUU;>`tlH^KI(eo3Z*{k`rtk#U0v^-pwvfQ zf7B`Esq2|rmHMdbhm)21sOyoUQXh4F^mXNWb-i_^lD+|cKKlDm=}+o@mxq=1QTNaI zD)m*@+XpMZudc6us^nMK>+$}1`FW`OJ8G2j)%_g5R`RR+L(VDXtNR^BDc{xo2`?z^ zqwcqeRoe&tbNbt?-v6ik`+T*1F7od^m2`DK#Q!MQtNSy?Dea@~_jo|5zq)^9u~L6^ zzes1S7*{f8E%e04wC5tJd9 z-yIq82lH0`?jJ|rVCdu%I~TB^IlYbPu)*Gk}zT7grf1|W=@=tSu}p;sEOkq9bYIX=TCWLoP4h6 zk*VVzRdZim%%n#rPMn}76-}Kn@zI&XrcSuKh(3?bm^pmvgo(4<{(ki$@eDg^ zj!x!Q>e9KQd1iMlAvc}!6g)j_Pgx$E$$!IB9@jY@n>sW9mKhT#Jv?#h%o!{{KYzx| zap?Wy3(fftjVqd>R4DWJ>ACq2q0^>MoWUE@WliN)%NXS4I_UrX*bPu^oC zu6mFzbE-{zbq8^oRjI10GSLb0ADcD-9r5b6p7hwbM<*zSrOzbs(Av_iV{eF(o;BWc zdfV%#J|fEjcb9jN?4rf<)uP(|($#I#nyqbx-DLaSBTu-wvDT8>Wl<~dK8MTtd&qv( zQ_COXKBp=;Z*`wVshx)$u4?Bg`_;AckW;N)N{6-cki%8&JY~PSc2{z??I&vGZtb8) ztLbg8SKHOi?@b&QtcQ`;3R2YVA@wteuA(u4?Bg`_;9(lCy1(Y^|J|F4;D{?e)r2PjPd3 z2gxq)N-3)CFSY3o?taltHV-{oEva3W)*kIPhpYMz$#Zjr%r`qhdx-U$rorfH* zYUe5Y)wT1GQ>|S}hqd#N!&U7(Wxu+1S8`r$wkWe5r4L=5CQonJl$j4tyG8y#nN7*g z9iEz+&kvFn97KprgVbbxkettP5K#H+kv#C0L2+09l5e~1wv@C%Lv9%y7kBHRWF+w9 zUX#$Xvu|^9pu0K{F!)!$`?R>e(qhPbFX|?kAfAy0F?(* zmqm7$*UxCNt3=I1m=6WnJ|wk=OBht`eg4?*~?b>U~O{-4Twc-lDFfR9am0#nNT z{1KVXIfAjcNPlt4ecI!Ac_pYHTt4(i)ouN|1xNTv-mtV1=z|ab2H=CGKDHg#5zuY$`p~VweL+h>*Zh~nOm+G&R%ZxCytt34ZZboRwa9Ko zt-`8toCH3UBE)>_gIOKw5tay^gUP@D!JiHHsU z5btV=osF36x|is(1NGjlSOIi9EelgvBmJ?9?lKG!F2jz(o_*ggE%Wh&sy=t;w-T6q^@--=GCNGwH1B z&W6q4*VxFG9j16|Ka&HUq`U!KG?xdO>c)QGl5!sB(09USbZ5&DH+`=1yB6@HAm$w9 z#R_4~87(cjMj_JDfEeq;;5-r07F33gMJ>_KEm%I;&s5hOYI5XAemO~k-`bts5I>Jt z?T^AujzHYw`hY;o^S>}HubDl-z8G=h6cdkoHzo;v3`IqWsYeh){oS15XvZwH=RIiG zyV1UPA^tiO@z0SCp& z2K3jmbNQ)LW>3NI@pC4`viB=2yy{#Dox}BIzNR!auRnMksEkUa1$1T0bciqCB#6zM z@m};qv{3-~IG#rzd3e?U`)=IJ^WZ5sBnZ>zBYh~+%aB$$tDn7$I4+P@fwW;r!=8aK ze_yujIiydS)!)9(Dg7{bZ~7r!OkK5;2xsuuKw+S zwa(vLGPHY6^ay|W@*@#=mXUa-QFyjSJmYALm6)3EBrUiq#I=hq=kBc-VfvToyU5yo zEUWzn{r)iey)XJ$C_af1rn)3N?_S_mn!tQ4iRe38L6Z}KF`;96#Qulc??d0$ne@w= zGMFQ5^xuAWEAnUgupsD}uu5wfN=QmDPpAaDSHJ1Sey_~k>UY(`&9g}e$7 zVs<9Z8J3i!C7zu~GuCF%{w4qTR*GEvThyT+&adsh%eolj;{*fA31m)x@W-qN_N`?# zef2D)AiyUu-rw{cOIbajI~|w4I)MFR+<-WL_FdmN6LCp|^o?V6eZx$SiU2nKK|Fhm zqkmuzO4tZr)4!g>J+BkWtRn>fopAv^zxfJ%;S9K?PUCYH93Ag1J~ZOoFz^D8W6R?E zRZcxDu>TR3vw-*o*pa)G{rU`ejn;>-bF1-evr&dQz~3?joCjsN&r^fTj8mRwwrpQ^ zZXEi>&_S#&3GGvZHqnDO%ehS!TmrWno=*j?qdF$VfbR-CBh*f@lD~YeUnHxuqkdFQ z+qO#wKSN)%&9_LOJnWYiYR~NC3UE?H*iVATsTq7wkf9bc&b-c($i+sHyIdBuw{*4Bmx%Cbka}RTD5`vl^yo=>Fqx_2>vzp_vtgaC<{TO8Gmwr;s>V;kGM|&{G z`tIAUUzwSMWOI!)%02{j`%3Dz^DA(FEkd6?1^N6>aQSQpmrwP=F#DgR2>W*8^pV2s ziFhvHq1n^a+rLJK>ze++!1HmR9b;=x(*w+L{vMNq_`$xJq^-FGJ~7)PeUtt!b+x|@ z&W}@*zwzZ6(HSNO%{$(F zvS4FU40y26|N9qBP91f|mBOKV|OOmC@RLUZu)W!CtmrPedcp0@5@w%D2s z9XnKH&E5N9Y-s3r0?ag~5=6)j2JR9Z9}|5nn?(QSBK-b`;4^v}^{rw09gD&JrSj_# z_t#ML`-P}G)^ftW#CWM$m}}nz&M?ybxUTLEe1-~Ia}9W?w&Ali_*v_k;KkM&iRXI_ zoLV*DVxeo^$5_QRX~!hrwcEl>;91d{*91RftzrH<>31@~hea}(+A9ehJ{2s|d;%P6 zbne(BlVb~H^D)d-wxNu2d|FtT`7qj@WbYvs)4UkRTYcD`XYr|E;mwVbc5OBK!`smP zYJFaXu0tJWqu#USdh1Yce6G}+*L5@M@;Rl{~vqj9v5Y`{r~5g0i9vEDuSW~c+0_iSz>7n-~|}P8)@1FFKOU-$?8;Sh6tKE zSW=zpVCB64CG{NhFxJUic@)&N`|X=}2S!Bl25RwpuV-cy&C@yG@9+D^@AZ4-tEcCg zhyCo!+H0@9_GhiVwx#YxUDMJ#8X7iNDz2Dmg}xG($knFR=NeMV$VYhXK4NdB>zklI zc=~J+eYT7~Taf=Dv12^_Hi5W(jr*+w{kF~BZ`+{B<9EIReMi;33tjK)xgft%@wPvv zH5mvS^-y1nR2cxgGj@Kf^z`MdSLWhL1UlzfaV@w96kyd-r!MhvLd z@RHDQP4?)zoF1>|3$LX!_r|DRPBVA;`w8d?PaQf1ubroiEnHH!NZN$WKCb~@+e`VU zNVA!1o8sj>f!q^bTT8yn6>n!bbT_N5;cG8v7SHI?pG%o*={HHgsHP$1xW0ASeEMt~ z`ANHsypwdIgPeHCQvV|5Zsrm`k0ibpay)Ojlui7s9Ljx9$|uilN-*U&Em}zVkGpwo zGWX-OBPT-i5*>XLQgm1cz0v#MfOjwIZ!h{5Im?;#rM=cL@Fc zTE5in6X@uvtA{VMPc)>=r=HRd;Ylewn>c{zt)VIK?(xx<`d{g@<+>JHys_7ziRAqT zG`Xk?DZK}peA0*}IZEr_(8N<#yQ2*$Q`}_;#-J%ChZhfGLo1{)8H6eOV2#)~Ic)-RCK0wz@i`-xFC&nVFAd zj$*@6{RZZz9?Vn2SziYF2ia?xpG>oQ);XD<5+nA8rK@J2LguHpRDb3`^f^6o9!nci z%12u2U(+jPp84GG*M`ueFUO;6jHo+7JiL>v*N&sNo(i`(E`DYy^ys?p(=WvQE33YP zSZL+yrUb@H0y?qix4MFcltkLHn6~Wg=(9{>ixTh46y>crL^e0pi^sp$0P-?dTo-~@ z80Nn6%j}2I*B?S}AB+Az20i{k)?}j#E8C5lhJLTD%Z})j&8+E(lS!4jRMlEQT6wNg{jI60&c;H+(Uy7AMEXq16#iR8`wTse%Zx#+7gQe;GSXopFKxX9 zw&A0yon>9fn!eshT|2WblsbYLXzL)UBl@9z$tH_ASM@WYN84n5CH-r3*Qp8_nnk_9 zT!M-J73E`4>gD@b(uMOZWi{+l!3R`mrGsXAXy*kDy;<`#Df}f{&8s6e-zDZIiNkh* zv44^Ej;u=}TE;p$wU0LohB1Ns+M>_1o(kUcf~9_sqHH!S5gbFAnZSG2O6+1*g5li} zdz!^MDw-;eBg7~bz3v2g?Fox@2^S2O=>`TNbTQV!lpmMw~je zW#<(giHGV>oWCZnGa#a}7Up+>KDk;S8l9F7#L;BFDOP>$?|)!17pwlJY3MC_z7zVS zH&NbW<_LFJyEHsvgdSQ*`)i@gec9;# zU?fwhb1r=0YxZ6C7IW;I4dcGZhvx?CTbh=$7AT}HQ_=IPo65S)k9E#l`NZb4ZOzIL zdn;>szEh|4nmWhwiqzc?zP6K>$!uC?LkHYOzYA~A*pXU7{9xx^eMs+0&%r$HZ~i=Mi9eqX)R(CgpPL1-Yf5S;5~Iz&*mhEs9B6&(Zf!K#8 z)mWAp3BE%)gLwuwsoh2YWOB#XQq#llr%j$RwR%~U+C=IT;Y~frKRidNH4z6hQB}0^ zP1MDyGudrBl)Q1&Md~_^x=327Un>17b-9mx<(oo(rJn64!4lh6VlwySxkB}|rqQpj zF<+cU{&;w0s;W4S5~J25gN`z06Bz>{XAP_|jL16lOp_7WWuyNkPT=$tvtAiYxm~$r zy}iOavv`%?&h>M>V~Xeb&0AkXTV*Yfsroy&)2>Y8oS(M~kJZk3Ww07x@5*In&Pd`q zpazsh%(q;%%vY`+h*UPM)V>RF3T`QD!mgwl%vDI7(M2tkXyI2$Q%HZB-E9rGSZd>- zaiu;i${wHu6){#VMkT{a+d8ve&5X6w&ZB&*pOTRjspJ*Wj!-a*#$$Tbk%p88T`Ony zapL{b#`W-!U=X>iPlhlii|;g=&+@*gqea$yWwLIG;(bv^qxmTBZ^fhS8M`<0sqpA8 zvj-we2Ov}XBU|HO(`|m7cCcHIxz(pmCVV{T?(zdYf5_?; z`1#83pTD?k{l3>Tb8maLY|?+V8}0q<%)h?$@oW40`~7**KRa(ydjD88^woK_|ELa1 zO?Y(HGmrf;Fsj?_&tLBL?ab12bGNM@KKg3qz_&ZkJL&zxmQm#^^lv})K+HF<>BlbH z@{hnL_Me}(?3=6gj}92WBk{$g58hhP;q&?9FRwWi{bA*YugwVg)8^VS#wQc*4qmgh zqiyTlLDjRGwJYz_zvF>}hOeF*_w=-Tay|~NezNZy2MSbEeEzC-yCTob-Eb`Q>j{5( z=u+-mw^jPC`)El1p_4E9k9_ixmjM} zQ9tZAZ^Ze4$3O2kbbNK(+p|9%Jz;zES09QCe$=j%1h2IA+Y!{J=dU}`9vHm({%0yC zKXP`$&f2Iq?SH@Wr=rWxEIbqS;gg3Bu9>j-jr{(9U;SFY9nb3@+41()52w|Zzj9l6 z;DUcH`}>Nfg;@)}aje@r!Mq{t;&-#kzPK9lOP9zY6Z${?Q0{_n{_E+t77aVuVdB%f z-a8-VwYBvAu>IC?Mq`o!5UVlO?mW9t*vCw#^>|LFUu3768o zeXGg3?T+$ATYGC8tv{JiD9j13Fl{NOJy z+6L}EH|D;~qLAGScmA^aYTRcNOS7zxue#^J*l!n}TGTG%3!ArJ*Du~qp4#W(6Yp+6 zIdj0UD?5TDa=O0X8GqrMc_NaT# z7L{CTpEKj>4~OhnfBgK|KSeiL(EsE=E;N0vU!P|_eCXwAABX;U_mBPepVb?uwyOQ5 z>d7sS*UlSU{c6KA@4ns7`%|yL+eYYK+4t7L{H?u*Us*rPJmf^qfL_5do1zs4+eez(p!J)RP#e|!k72I zdfqf=-Nh+68xp5ab{c*j>px|Gue&d`o&4zZhic+V-=AZCx6cD#oO{3Pg2LNhdO5M} zizlD_YI{H9$Tn|YxUyi|wvEQiEtW@49$&esNA{IZ{xSK>Q%_VD{CxNHrzVfB*}CKJ zpO5)r|LcpUeLm>(e}28X^-p`M`XpEVykYh7P4>4&erxzDb+CWEasFK!u8bO!y!ub) z?!T?YOWnKect573GVh+yjEU;DQA@^_99wL8yjk?T>}kgB|7g85z%l9cM|YXOnDYFe zzgpa-`=cK|(`nlIsbTX2`aJpl&Xq%&oZPi&3osK%P zdVk{Gui&SPJD>XI(T4`#^HN){pgwE-4&OiP?NN`Xwg3LtA75Jex5B@__xLl9-j)%+ za(VR7!9VVQub*y*edE4O<`egRym?mr&{IF$IX?MM0}l5oh)bC`^QRFX$2_)aM)zm4 zW_=dtbNlO6Kfm*B_9L6mExUhu(r3r}ojLXAJG-PLr0wrM`MJT9j~qDuN!s8+_LM{Y)1eB*b2+PX7xUW$y60*&IRMW@vcD?ksxA*<$ zpUe>rFNIfsR~fwO(_HVX?O%y~_SeB1m91MhjQA{|+4B4z%_dBkbo$(bYrB8^{Ve-w zYusIH-ha1whY7K7zBl;JuU0K7S<~r(_V+#Y;^({GPn-5adjI@RA0~GH_|?GK#f$rO zn|S)eVcGMlj~Ha*M!=6!rm5ncNmT>G2Pqm0s&u0OK)p|HW< zy6*ix;)nb$aozhxbH|6F>vTT;l6XzzH6#0 z@&3r0-Jwl?q$VhaWG4GuJpV%6zddx1lHb(D<0q1Q)9(cNO&dIZAL0ii`zAd9u6FaJU!{=Kl8UgO`1OOhWC$8nm*}C{I_rZ+f$RKPMY|%ws*u+j~P!kD(>+~ zIL<$pJb~|Se48?U!qiD4(`Vrkeywhk)2B{N82?n7_BZ$YfAy~aj6adV&8ek@kF!-J zbu#-;8s#kS$kqMk!3PuW>2;$km*%nM>XHAhUskWX@4Pb_udHi+Su>t^`rr9wrNOUC zgsVK^$8Q@mfa~?O|8HFGdR!>q@XzyG28Ub>d+pzU>X)_tFRt{GpJW-mN>T7#_;34V zdGhJ%u2-+OZXsM_#wrRFr91a;*CETPDAUC?zp+T3m&4)pqzZv>Q<9ouwR_yb64> znVMID&%>Xwk9Wdvrt%IY;2z2dQwm0$IM$@_WQiQm7D^9C1FK3PAUtCn7^W1d7R(Xik}omCbqP=IoRUvQtF>pnwAk#cjn2^JHV%Tfn7TY5rt&*!cyMzQTE1C%CSHji0&?I&cP=qQ-o^LLXWp=e}ffCY%@N2G;R6 zp~I?p9X<`M_@<>siz5B#5+5+ztN4Iqj!?}NM_s;rCu1!2FW>{xw0!=EmEc(mIs2?} z8?Hjjdh9BlXk#`u#N*KH)LoW(dH)%h(DHefnerUVw-sOGznBb$1|ARg9mF|YV-1l; zlR=FhE_vXl8oV5TKY3D!PNaVosy@uiS&YzgB_+gDQBvm!EUD> zsnnqp-{*pfFM&>H;II9vpY;s=a+v&fP`_lOGW-C4dmn6d1~#@ck^ZIwYE#qDAs;NO znxmS}^i<6F9R*2V_^YJIc|9*>BbNrko0^a!*=BQg>52YZRKG)__SViU$k@64E166d7^#RYC3o1HX1S{*ySB$D5e z{Ek!nOdRB5isic_k*a9|^@^uHQwtPxCcdcc`HhV?2s`~)uLv(KU8Le=8m}l0PhHcn zF|ucRIR2b7-5kcF?o5>(0Cd)E2 z5_@J1v^fJk_QSX0UnpnwR7d)mis9R{&`9W(PTBI^N-%hv+A=5?zqDM^`7_q{NBUa3 z@Vt-vdezrz1Kai;(qh?C%Fk2-ZPWa)qx0KLz0Cf~-99{9v8DOyeXUEV?|R<9kB^P` zKNYv44%wk4nfUGMDXaLd>1G?WTGzXqS7cpYy%yHM}Ot zQvbxc)aaUwCrWB)M-6ofq<#Ty12|hSz}let+x#Qov#cdy>x7?ae}tR`h%aS4^yo_Z zWX7ZLAxo9u<=E70E$m@a8AIY%x4jcSp=Rao_1U9KZmvrL{vv((hIPu)V&r~tVtO?5 zzJ!*|`z&!<^jQy$$4o2n(3m=zYM^g`F2E%8UQT^P2JNFCa;d-2*SD>&DVKh@6RYoib%giAkr^ z#$$C=LrN8VC$iymZ@$GxjxmtZ&>DYo>RbgqM6TK35oAh`jk+gAnoLgUkwo8Ak&f`1 z+MHmZ4&Jd!p3Dv9$Pn=}K8DOaugwj?MfJ%1Q^@+8=Y)yO2|2pf*7JOGeNG5wPH3gg z37n-@V&H5`ANqGuGUrGkmpZF0O{X;(>1z`?-FSYez~?WMdAoo+b}oB0gkGo2RHgrpEG5Y@nJAA=oAVruiA|PU_2e+Pn_?ptOBGFESoT8LP@xyvz3Y*8Qfx7m*-V;L@&im ze-D>2(37)4CGTDMPu1#!qUIt~739r!Rk2zkMfGcH%A(CNN*miE{Kc4Kqjb6eYnH^HBfPE?V>og zSZ*)bg1p;;f9IBHd2rNEZ>g$L@imaSDo3+ z2?vma($=NO^1zP%ro+hcJY=~tFE8w9lZVW;aY=;kI3)XK<0|0`Ee@AC+MHApUlW=U<`cYqMG`%b#~!Nq$^-Nq#fMk&nLndfe?L zuQR{DemmE_ocFp@%{%3$=QgE@voVjB)0X*ex=NpH(dg=>(bdD3TcPhl#;n0T*PIF+ zSSa)U>E0I2_g3bW^!*Jf9jT*?0r{Jx5k0AKn#6q#DKd8!Gmh55ZyV6LWX_kn6PY9L z&!{i_wI&k(CwO>Y*30=a-``4>C+uxVIgL+?M{fB}nHv2WzddswOQGPaZvA56&<~aw z%@%VdI;*j3tl5`2!_P0at{A;}J$kb_O6m2c-e@K6M=xK|>#^%!)nmUlDUMvdQr{9^ zYlDfs2FyLnyQ*f9U%5P2;}g8Zte6+^u9$N#moV29bC%^2=9{is`Q$~}!OT~3H!)|e zW6m;AK4){5q%vpig8l`}Sq1T-B?<7C%+;*9(EISuXt6lV1f5tX%v?b_`J0K*y)vKB zZjFuw{9WF^@1~{P_l&V=wA=?R4?xRIXlc)SDSs-oET)_SeJE$?&K)6VgD#|fxwO;O zz7{vMsgO1;qD_UgX%THQ(uOY3Ckh%GX+L&dM6Fy7t zT2j5+rTbLxR&LZsN8KVVYaN-xs}Cp+berMZRF@19y=lMRPm>{@xqm-%|CtfD$fMMq zN2%iIjz3m4^x39*J4G*VzzFww)fkP@4`0xEyTySEAKf^+1?fZv#zWM@Qcb=&m2A#+x>EE_p9-%=*E~p zw=O$?-F+zh)BQf9c{F8gRGOBZQ3LIsvcd-{wN~m?!yJ5eu9Bzd4)>KhC{1?uEvL+y zEPN~ROAvpFv&mmIK|~NL3x_bM1$LB;wU~7hg6+i(dq1gIu(Bj)gGzn%9I6`tK0FJh>URg zOf;|$CJP#aeFZC|J48Bvd{(=KDAD1xQG6yE(>XQPGE>@hD|)YDJ`&wvJ^m8wB9*+( z_&}YqMA?tg$DVPKeyRa~I3>7SZ%ZM5RAt5V%RRk~=3C{rnz?!@a=e0Z6E5Q>ry-?+ zao|}Wde-0-pDT`5SMmF7Cwo?uUI}xqulGbIihMnGho!z0S$h@z&hvYsrLSH79>TY$ zI?LXJF?B}9keM+lm*_NE@I=KO0}3NlL)kC0M}e_C0M?QM<}woOWd!~g!|?|kHVsTh z^9K}6;u=nq-2|MbIXF!)XJA zH1WTW)8vBFoE{1W@OxMd`!jBd)eJ(eYFJH+k`S<(TjMm|E}X{Z#%Z{_a2oI8hGXC~ zGr(zf-GtLHRxh9vdT^R}#-h+laGDK*)5LS`E%a`?nz4f}ogSy;ooY9z&;UkL*-lsZ z^ePulbFrOI;p-lprl}HeFZr|qr?~{L)mhoE0R|;{hv739pBRx>QOuKuM_P`o)SIIW z9rlJ9B7ICsybHHc!EGYvv*!rxM(~@+5^$XUE4x{8R`@INepe0bskv6ScffMMRw~q{ zWffpL;*Y4|Ij@4}Aj2-zBo?~%g|tL>4=B0-?s6QQ??h+O-9w9HUx^FP2`Q<77VXg8 z*XUYVg;uMw1Q#O37yz$byM3-rW4FNQP8M6dg&>~#U933I2e!i?Kc+Y z%xLfvJG= zn8@Fk{1<}t$T;>Tf9acQeHZ#>f7l|yd{l$gg(5)-a!H>e2TWxX(8AR=AHJ=d;fpA@eNt zcHuqDFHXw872fj_?dq!cw+7H>vbI@?%uJ@82UNrGp{!42-F{ZzJ?dbGgJIqE;#2Ks zVhwM4LT7OdAF^dx)C;QFh2?~ry5H%-fDWi$+Pc%o8sjj178L)GS%IFaF31!ZlT;W) zdqB@kk^7XOF4Pm9Wa&hBV?x4&=wskLqR&5uK0oo{mLpH-+eb}o|7jTZj-_i!vz9cv zu@f{*Xdr3gNOMZxF)FV8Kf}=ft)l;bs)|;V-Gn8GSeE zav&@>GQiZ${l16$y?@68VF!4BtGuUyiy0|PFsqaLprVfWEuW#y`wm$g2NLn)|2Z}K zK*o%cm%*Jpb?>PUv`YQYYV|)z-a%U4ht&WLciNYg8)jEsxRb(O#u&G*D%hFms{2%5 zO?ULz4svh6kfugU`3Ir-0in4Y)5+soX=k~|G8V=Duz`wTi9G+OF6vfep}?!PfRv}6TX(RQ$+ z6<|f8v-v@avo$6jPTPePq?*y+t zNtxTvG8b@``vsFyzY@OiQn0u1doKK|{r#ZD;jMTL-<^Q&W3tpg&R(6}&plqk9<-o; zGQRHCH?{88#`qmkyBXuVBU(^y6YF7c1@DNtBUa3v8z%eeWUVowvLVH@W(}M&B|3>Q z`3d>Ycjy0}?%(H~(7?p zqQxP4SSkH0_;MUHOM<4y^lhV(I_wGyY^yW*=zOek^zQ}QDmt{(Tb^ZJN+Nw6yqBc- zXuQYVq~YL62~))FLVJ$mxpd4F+2b2Dz@7hbOvdkJM>+>i9-=Np`2L zVGJhGzy59gP538Ulhx=TfcIeG|913A6zK%FlzLvHWzzLBJ^38h^7$m}02rp&0+Puq zO6O-vf@l1cCg9aNE`Ro4``MCMfA}Hu-bc25hP+5+4C14l5&-6WmUjXE7DteerG69p zgagBbpF=dvxgGW27&FzpF+QZ^3FNNyGkE3FBvr{vVmy9J|2Cl8%m5c={W-jWwftP@ zSfeO+Z^#~1BDSzi=qEkE-BzN5$ebwm9uLkak@peG3x8#Oktg$Bz}&3-8tS%*vNr1F z8dX=eNinZy9ly`0)C(@Kk2Uss#??}Ozsz$!)mZDrVSd_<8Ipq z?k=on)Ge_d$(y~{T%)dG_n!Kul?jF%YLk5%N37^wfe0Vsw`D-@%DDK!cp5}Q;c_$C2tkbkTTyevU3tTZK4dZZ3%w-ta2ScJ~kkv_IbYT>g4I@c#t#GgHF#ActaeKytai(?YOv}h{{pK$ z9$=}LwUuZ6*AE)W@5XCF7&;hV1{WT}Iz{Z?H>dH`%`kM!vOx47xw|mm5I5!!+MlOK$OYhEU6{ukW5|BwFBoz; z{AbZNK=Blh6F zX6Xy+cL3bCX8Z5s#cfIZ{{lwbn5G_#_*S%C1rE{}Bet=(STN$6#u#x$LrOPf?(|;Q zG2&UhjOJVACm8W`#z13?e@3*?e2VWc3Dzsv&#{EUn%LfUf5zIW`+g7S9puJ&$AHm3 z2v$29%ytym?E~PvDd4;#r!{0ZxrXyLWUGhjQgx)$limwVmwnFhYTh|~?;7uKzS;k- zA^`mM6Jp8emAm)0wG@i)P!>F0!M@;y=w_8svJcwFHqIyUaztdpEWwTn*jLCt=lTND zRA3W4+77+|D?Gy9=40Sl$MGrj_!7$AK?Q8Jg8hsJwRsshNqq(SKhLI$wt8~~bE41RsLYcuG-1nP*H|)~0FWd+% zefZWy9=_z|2hIHPSJdZ;uc9HEat*PL#lc`ftT_@GFU(fqJEvjS$~F4g=c?gf zN73h|aex0@)>u3{I^Xm12WA^L?JC z3$a(csxM5_b8oHGcW(x+O5SgVD~A>bD2K3lAF5cV7N)@;6<`DY?8iO#qIcni(Td|D z*mWH~pEA#kW=&QQKZY_5w$;th<&{9^(><2vUq%Ouz+S(4SD(Vd?68s!UP`Zpx-jD4 zg*bP@qiH->U^`INVEa*g6^{qR7oI~OzVwvhxCDlDk+u8<>{oT*-@=16=t*_xC1>EX zYWVW_L;VYD;oD13SsW+e*>f)rC^S-DCpFAIMeiy{aB>4arWZzA92V-D#(N*i3)d@7 zGdz*V9PC5CCaT8LLa!TR0^LRWO6(|t6Nf7%E%t|%wszslRDErogOt3%TuDK>`Q{*d zz7t-LQBBSXZDAd|uBD45){Cq!lBk=|SZJpQzkMHhyJ@6)Nc4ye+`$hV@UUZ#+GMz~B{48nz2*yi zSZz{k$XXtDHbCNE23n!baO9s&AwK3Wvy+htLy!%Fkr7s8MG|s1k^RkjP0k=Mi_#U9 z*pCv^Q0FxFoR{B)*kVHGD*nd0-YIR=#<}Qes!u6QxH-{H*9dHlVpHu5HsJ^DtKijb zs;}1f(}|T-jSYSScd)`z=AX@b8}*0S{{;8wf^C_;cCMzJF2uo-=WOUNd+B#FcGESU z@X>f82A)WQCoFu+oKBtfPWV}i>ybnZBy5#-`EDz8(kL4r-R}+5 zSs|VHf1`UkhH$aYwh0eU0r9E@gElhR71ii8A{wld+x&-OCyOLmZiA^kCBx`tTUP1rsr%110rT@=n8# z;y-pbd{%y{=?pCLzevA(p0)fb>tE&%AKj2Yzi*Yl_#+5LKUMYbY$46R%5NMz(Kx?} z{JvFwA`dFHJ~B8(PmuYASTVPb4-+pslgb#^G1l2PF&n)}ud;VSuf>5ej${2ajP+eF z;)wPkJ}zq=3-P|v(0^o)fX*+r*sDccag*EPi|6L7NM4zde&{XU599stTf85^`;oVJpTheGZt;E; z??>O_{e!$8bBp(5dH>KY-apLyM{e={QQoKi=6wY8#SWf4j!P-olp^qxwcc5)|U&`BzIV_HhJJ}3g4;4W>sYl4Xj;>?2!7*BJhd5&qMnRc0JR}t@%&?Ut#V8TXZ%+hn)Uvr+0)FIg~k(=Qz3KnagX5QmpVhQZ9ZgT)Hf^IFNb=4qOY3 zxOf*xJ=Gn$;t9}5p$!)5uF?*9mbM$IpTv8b>lLigB+IK!@?zfk_x1G`A9dmpn~L~5 zHVKmgEu>5-E0TP4e4``ZI4@s*ui|$b?cUj)r+nKqOJAIR546ROAhgx_Sr~uu&==Yc z7*O17NdMyCp6q$YW_TiJZSr{P70G>9&Kj+*3gc4hI)1^X(VvBS5ox|_7+}CpVYN1lUICyOZ z{Ixpy6!%lyo7|?O&O+Z6(*qZ*PVULQC-=YsdaWHJ_&tK(PjP>Wd$S>4#la5@D1MFK zukrf>?jLXue!#mpgf?&Ix7NO%bNflVvba`q?ch4Xr7nOLT(Ml^xw5!ca(Vhr#*+!U zrNcX&;hl8)$#e+c7cfeRN9BJTv9yh`X0NVs_W*D~^*eU=)$RDCuW=6hG-zjg`Zk;UMEGMSW%Shfn;yXC{xvrI-b$dU4xGEEuBGWY z_~QfaE%EF9ntL7d(k1RabuCO^=|Z);8NE~bW}?LFbdQUkjElY4Rl8B=%JzrCm=l8h zJK&?hI~gZ&ykqVR@-eFB9G-J{w(&O^H(p(JjGIH+xY^C$#2)F}N^f4v^ID!2?rba! z@>adf6M3Gkppx^xUvAg?DB+W$r*7U1n^C`+XML8c(#s`!U0zD7$ zjDLAhd&Wl&^n4w99)OJz?yDpJ`~ZJS?60w^PR5CFyrsh;eT) zrSTm!%G;*%s*Ocwk#b~C@M$@3gh}PcUpPF^;&s8lxK{M$TLL_%a}_0 zgwDQ^`@(W*UncFd(>}A&WY4^x@)*Ni8ntf`?K9K9&tem;0g<1D#n8UW4$w9|s$|Cf z-~{NF>3qk0nwP4&+Lt!Lg(sJzd!<2p@tN{rZZfgw#}?^hJq-q*tNLg@Uc}PJhpH4G zEnm}ee6iEig<)xN@Bp;);kyLBW6xSImtUB{DmL^A;xi|7*rWM%jl0+KkBHlt3$*dE z(qDYzj^bk%n{#XbIIx*uAL@}1X|Ue>t!F>v5%y9>!|$l%k2K>eevjj zajfx(T?JkyIdf%Y`jJs3$hv*pSyV}0R2=Dk}#amw-A@geF+vHVtx zBh|QKRn>8~a94^A-i$@~b{zbt@@=G|UIYczdZ2TrLL6?Ky} zo!+((y-qNmb=`HH{}GqWBj} zd@{jLB<@&|JMLI4vT7U8<;We`^K{f5$5HB37-exJX!u8{&5}2ImXbAURyJ}AUU0B> z?iI!OTg;xOB-U}PTWy7u9mC$GH10)=74|L%Eh3(ECt}dCesIV>(8c(XY0r!Y@h!a7 zKI?yX#zkM&lfChgU8oNQ7t=e_X@i0sxC8&G%i!4c_~_I@r)xo5afg z-QmcyW^s{w!z%HmDN>ELs=F44*>tgv>9<=PGoXKa>SK>63)`srTf=oG+d9_DaLXPYtkc^;hzi z-L4#Z$6q-#uZeOfPibYX*SCt=&<$G$cqaDD;7j0#eeg{^13$zNUwNl5{TiUu%GxqO zk6fnSXSu?4O>Mj69p41Z&M5J`6D)5fbU3RIi2A!OuZB)Y6q;O5KT5 zjSuJdHQ+Ptv^obA;jd|@&$PJF@=Xo(KMqcjrKqJUIK{PZ{D<0W)UYzyZ+3|@MH+Os zJ9Uh`vtSHIs4M=owzJ^6N0f4(Y@>hvBj2+1) zX=-#~Wi{};r#(Bt<+|xwnGPmL*!}M()B(Cp1LM2^Pv`e_q4vXSuyY4K`x(?j@^6dG zqYfF=Aw#Q!4|M>)xn750r}$Ew)NCvMMGZbm?Lus20W01ZQM38oC#TNt$LHn4|xD0o&6=-v}r#s$8d|1$h3 z=>!K$Ra|r@J#^O<1!;5-vc&~1%^!;Yfs`Tra{&4ufY$Hp0_+X3?VO+FrCg5Wd+gpp z5sU}HUOf2<4n}?%l%JuM4^GwtntRHZGP9v~1@xA0>DQtEss?dEd;tXH4d&Hfm5 zUfBVC_`bNp{Tba$mV?c$f*$w}5`Td6h$58XX~>CxcfL$h=2&FU=iMl$27B~p=qF2| zZ=QRc7Spbmuqm8jjLP1fx*qef75GNI1UCNzXX7}Cml{qS%te$vn?Amu>j!=7(kskA z8T#$t_i4`65dTHAo^<+9XBzz89a>ywpK6RgNW%;p!CKrBlX%bH!JL2)z|tBW9H-p*O+-%+Sb%k`^nOj%i{MD!MIwW8hv&@ z7e2C8Vn_Rd^yi}Ao$_2X*tQnOcPeyW&U}=JKGTjioZ_2$<^hpy*s-*~71I9W?$`~; zvzc?*m)wQ6OaJM}U-rG6MBe2K6XyYdz$-k?oV&qavfzKQn-$@Ku)svmiXhs`(E60kZJ9aX)n9w;80(YX|8c_ls!J9$fqG*&Wh55 z<9ng&d86|+LHBD4=Er$adR^Xq%%gpoN7M9eZkR{^37zVhN3X|A! z{VKdZKE7|Gc{Hpj2Ojp!qivKnCP^#v=xpZE4SYN6rg?MPznC{CFmF~fkF6gwL7O}M zZ!vcc(dN#sQB{rR&L@~VXEJw2QjgBeoyU-0nTpBgWbTYuY?<|hx-={t{oE9?JZvU& zXDxGiPv*~X=Fd*ZW<~1HoH>y>^Q5Y`zK2Zu3u7^dv6ziaI`*nsc)!xpTF3sym3Jbe z(IV>*k2we;}E#0Lx?Dw#LgFBp7m)^jDEcWt5N zR?;2E=j$V#SJ_+e<1xy|HfXc7dsv$<_0;V$e~;0HIp-mph!(`!)2r;bqPNHBn`-lA zJ{bE|uH(!D`TDR@{MP0{4;lozieEF87r`}oM`+b!*rETD? zEWROb#P_iQvG#UK(=yrDBl^`5>`tldqXuV8$wGF=Q_mPhZ;NHDWotHxY-C1O{t;|@ zk}e*(?2!kg?{kcD9+NXZ6ffjKc7D9RY1za;CCJk*nKus+BYOujpr@}(24pJ!woa6{ z3HxUZbFj>tBFjBx=#b^)ok3kPw7MXdvNgMht1eQ0JLo0xJEVW5ud3CqKE=p!|HQ8L zgUt2S$njcaZ}(YkugP)vg!8o&M*(&+mmE)E3=Lu|4P;CWU~KirMi$RH%5_edM~?TT z44G>q+wKUP2k&IVJ2~)<=m#^A7q!F%5*xU$TjuPdZX(w&A=m4X>ofJO?0wM@O1M&$ zmYQ6LAL?)C`cdDe^hf0SoAggh-EUIaJ^oW>kBA@`9PEF9qFTY zxZXmp_d%}55NAQ;I%zUUqsjG-(C!_s>uIjb^%%EYCw-r*$j^7&a=lOUxAKwcWuAJt z1ugT+#KjiTr^7s#V{D(aLLmuCZG5tH;_>=#kJf4aV-5>J!5B*s5{y+5N zKlJ1O@ATtcUSJh|tf%~0R|T-X3S^xX1Xj@u|75ScXt0XAz$y&-=GU-_U}WiFF#oHp zNw0wUUk2~L2+kvCSJz;3If|cm2D*AC{=wz=%&sNwYFqStHU2K}3OSD|4BWp}(PQM( z!L1`VSDKq7z2Frk;1!2-Ez4@bAZqZ5T}yltJ^FYp-_-Mt!^9i~Zv5Ya?H6DNSO=c5 zmvwv;c7Q7E0OmP9tt*H%(Fr@B^A3E$iIE|(HVgD&B?Z_5i0f2WfIR@);&AM#%{p;z zEAcIelhg@24Onj5cym>}#6SwPS9QlPnHW?);ICDkmHNs|?4vrPtrGv|%Grve5ZghK z8~ZSG)>~)%+3|g|k;ZDlZqOB*w=Fc9%o{tFmLCK$-p>{fMW ziLX&>RqBt~6^GE-(1JZ4U?OeVS0AnOv+l-@@Gw5lgYbDCiO+Ly{IK_6L#V*N|FXVy zR5^ammrPz}!9^}Wud(1F_0T*OAL5<(JEww+WU-Db06#F&?oQNC>`B;NZ4-GfZ8zfk zkgB${Mf8cEbxhvHV*`)vWEa}{fYsx-k`(iZ@}$b&R6p^@Z&I`hU)kdU0}3zT%Xdlq zn|XHy{*d+0DeN{UwRiYGoBErpsgLyOF}n*Zs$~z**_eTa245vei)*VlM8)V^ICc0v z4x=4~&&?`nT+gGtFQqQ{t4EdTjAi)zI`DZ-N_s?T7Owi)EMVng<1j$K3+}vDvDaPp zidAuj)n4`*EyuoMWUbl>dqo)-OeJwih`&+VN#)G7Mn0$pa05>s^H}S4ArJ8%#Rq}$ zfIl>R-I+Wjo>muZ9{3lQn!s?<-9EGie3}hvld{J7#IX-i_V!gkqj0sU6Q7ZkDB952 z$5i~a#jjd?OvBaY&WT_-MbH>~pN8+6v4d1mrWGIT7_d`GcXK(qvz)i33o}&>>19uh zRLq>k8-(4?R)FndkFJHiP|MHgJc4iYgVaaLISL*^U2gDW?TjtNQx{Ji^rSn^`dWAl zJ7%o`pH3t8kV@!By+YAV?a8I)lzkvbIW$7=Nu`BpJV&buRS4*aa$ z+Y+A_T6F3v`%Z$3ewjT2**Y8t z!thx>T(%=->z$A?}U8SXZTLlE@aGIWL%Z9PkJ3~NhSRS#?BFV z7=Nb&xtrI^j#f2tB{Wo|2^bx8Jzu!L037aMdfp-PWp1Vjw~z

7VI6!l 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 Ji|Q^n~bVj0cjhly9I@Nk4r<`97wy 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 z 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 literal 0 HcmV?d00001 diff --git a/macos/main.mm b/macos/main.mm new file mode 100644 index 0000000..d32f1a7 --- /dev/null +++ b/macos/main.mm @@ -0,0 +1,548 @@ +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +#import "../client/IOCPClient.h" +#define XXH_INLINE_ALL +#include "../common/xxhash.h" +#import "Permissions.h" +#import "ScreenHandler.h" +#import "InputHandler.h" +#import "SystemManager.h" + +// Global state +static std::atomic g_running(true); + +// Client ID (calculated from system info, used by ScreenHandler) +uint64_t g_myClientID = 0; + +// 远程地址:当前为写死状态,如需调试,请按实际情况修改 +CONNECT_ADDRESS g_SETTINGS = { FLAG_GHOST, "91.99.165.207", "443", CLIENT_TYPE_MACOS }; + +State g_bExit = S_CLIENT_NORMAL; + +// ============== System Information Functions ============== + +// Get macOS version string (e.g., "macOS 14.0 Sonoma") +static std::string getMacOSVersion() +{ + NSOperatingSystemVersion version = [[NSProcessInfo processInfo] operatingSystemVersion]; + NSString* versionString = [NSString stringWithFormat:@"macOS %ld.%ld.%ld", + (long)version.majorVersion, + (long)version.minorVersion, + (long)version.patchVersion]; + return std::string([versionString UTF8String]); +} + +// Get hostname +static std::string getHostname() +{ + char hostname[256] = {}; + gethostname(hostname, sizeof(hostname)); + return std::string(hostname); +} + +// Get CPU model and frequency +static std::string getCPUInfo() +{ + char buf[256] = {}; + size_t size = sizeof(buf); + if (sysctlbyname("machdep.cpu.brand_string", buf, &size, NULL, 0) == 0) { + return std::string(buf); + } + return "Unknown CPU"; +} + +// Get CPU frequency in MHz +static int getCPUFrequencyMHz() +{ + uint64_t freq = 0; + size_t size = sizeof(freq); + if (sysctlbyname("hw.cpufrequency_max", &freq, &size, NULL, 0) == 0) { + return (int)(freq / 1000000); + } + return 0; +} + +// Get number of CPU cores +static int getCPUCores() +{ + int cores = 0; + size_t size = sizeof(cores); + if (sysctlbyname("hw.ncpu", &cores, &size, NULL, 0) == 0) { + return cores; + } + return 1; +} + +// Get total physical memory in GB +static double getMemoryGB() +{ + int64_t memSize = 0; + size_t size = sizeof(memSize); + if (sysctlbyname("hw.memsize", &memSize, &size, NULL, 0) == 0) { + return (double)memSize / (1024.0 * 1024.0 * 1024.0); + } + return 0; +} + +// Get current username +static std::string getUsername() +{ + struct passwd* pw = getpwuid(getuid()); + if (pw && pw->pw_name) { + return std::string(pw->pw_name); + } + const char* user = getenv("USER"); + return user ? std::string(user) : "unknown"; +} + +// Get screen resolution +static std::string getScreenResolution() +{ + NSScreen* mainScreen = [NSScreen mainScreen]; + if (mainScreen) { + NSRect frame = [mainScreen frame]; + return [NSString stringWithFormat:@"1:%dx%d", + (int)frame.size.width, (int)frame.size.height].UTF8String; + } + return "0:0x0"; +} + +// Get executable path +static std::string getExecutablePath() +{ + char path[PATH_MAX]; + uint32_t size = sizeof(path); + if (_NSGetExecutablePath(path, &size) == 0) { + return std::string(path); + } + return ""; +} + +// Get current time string (Beijing time, UTC+8) +static std::string getTimeString() +{ + NSDateFormatter* formatter = [[NSDateFormatter alloc] init]; + [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; + [formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8*3600]]; + NSString* dateString = [formatter stringFromDate:[NSDate date]]; + return std::string([dateString UTF8String]); +} + +// Get active application name +static std::string getActiveApp() +{ + NSRunningApplication* app = [[NSWorkspace sharedWorkspace] frontmostApplication]; + if (app) { + NSString* name = [app localizedName]; + if (name) { + return std::string([name UTF8String]); + } + } + return ""; +} + +// ============== Check if camera exists ============== + +static bool hasCameraDevice() +{ + // Most MacBooks have built-in FaceTime camera + // Check model identifier to determine if it's a MacBook + char model[256] = {}; + size_t size = sizeof(model); + if (sysctlbyname("hw.model", model, &size, NULL, 0) == 0) { + std::string modelStr(model); + // MacBooks (Air/Pro) always have cameras + if (modelStr.find("MacBook") != std::string::npos) { + return true; + } + // iMac also has camera + if (modelStr.find("iMac") != std::string::npos) { + return true; + } + } + // Mac Mini and Mac Pro typically don't have built-in cameras + return false; +} + +// ============== Public IP ============== + +// Execute command and return output +static std::string execCmd(const std::string& cmd) +{ + std::unique_ptr pipe(popen(cmd.c_str(), "r"), pclose); + if (!pipe) return ""; + char buf[4096]; + std::string result; + while (fgets(buf, sizeof(buf), pipe.get())) { + result += buf; + } + // Trim trailing whitespace + while (!result.empty() && (result.back() == '\n' || result.back() == '\r' || result.back() == ' ')) + result.pop_back(); + return result; +} + +// HTTP GET using curl (macOS has curl built-in) +static std::string httpGet(const std::string& url, int timeoutSec = 5) +{ + std::string t = std::to_string(timeoutSec); + return execCmd("curl -s --max-time " + t + " \"" + url + "\" 2>/dev/null"); +} + +// Get public IP (try multiple sources) +static std::string getPublicIP() +{ + static const char* urls[] = { + "https://checkip.amazonaws.com", + "https://api.ipify.org", + "https://ipinfo.io/ip", + "https://icanhazip.com", + "https://ifconfig.me/ip", + }; + for (auto& url : urls) { + std::string ip = httpGet(url, 3); + // Validate: non-empty, contains dot, reasonable length + if (!ip.empty() && ip.find('.') != std::string::npos && ip.size() <= 45) { + NSLog(@"getPublicIP: %s (from %s)", ip.c_str(), url); + return ip; + } + } + NSLog(@"getPublicIP: all sources failed"); + return ""; +} + +// ============== Install Time (persistent storage) ============== + +static std::string getInstallTime() +{ + @autoreleasepool { + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + NSString* installTime = [defaults stringForKey:@"ghost_install_time"]; + + if (installTime == nil || [installTime length] == 0) { + // First run - record current time as install time + std::string currentTime = getTimeString(); + installTime = [NSString stringWithUTF8String:currentTime.c_str()]; + [defaults setObject:installTime forKey:@"ghost_install_time"]; + [defaults synchronize]; + NSLog(@"First run - recorded install time: %@", installTime); + } + + return std::string([installTime UTF8String]); + } +} + +// ============== Fill LOGIN_INFOR ============== + +static void fillLoginInfo(LOGIN_INFOR& info) +{ + // Token is set in constructor + info.bToken = TOKEN_LOGIN; + + // OS Version + std::string osVer = getMacOSVersion(); + strncpy(info.OsVerInfoEx, osVer.c_str(), sizeof(info.OsVerInfoEx) - 1); + + // CPU MHz + info.dwCPUMHz = getCPUFrequencyMHz(); + + // PC Name (hostname) + std::string hostname = getHostname(); + strncpy(info.szPCName, hostname.c_str(), sizeof(info.szPCName) - 1); + + // Webcam + info.bWebCamIsExist = hasCameraDevice() ? 1 : 0; + + // Start time (current session start) + std::string startTime = getTimeString(); + strncpy(info.szStartTime, startTime.c_str(), sizeof(info.szStartTime) - 1); + + // Reserved fields (pipe-separated, must match Windows client order) + // Order: Type|Bits|Cores|Memory|Path|?|InstallTime|?|ProgBits|Auth|Location|IP|Version|User|IsAdmin|Resolution|ClientID + + // 1. Client type + info.AddReserved("macOS"); + + // 2. System bits (OS bits, always 64 on modern macOS) + info.AddReserved(64); + + // 3. CPU cores + info.AddReserved(getCPUCores()); + + // 4. Memory (GB) + info.AddReserved(getMemoryGB()); + + // 5. File path (executable path) + std::string exePath = getExecutablePath(); + info.AddReserved(exePath.c_str()); + + // 6. Placeholder + info.AddReserved("?"); + + // 7. Install time (first run time, persistent) + std::string installTime = getInstallTime(); + info.AddReserved(installTime.c_str()); + + // 8. Active window / Start time (initial value is start time, updated via heartbeat) + info.AddReserved(startTime.c_str()); + + // 9. Program bits (always 64 on modern macOS) + info.AddReserved(64); + + // 10. Authorization info (placeholder) + info.AddReserved(""); + + // 11. Location (placeholder, could add GeoIP later) + info.AddReserved(""); + + // 12. Public IP + std::string pubIP = getPublicIP(); + info.AddReserved(pubIP.c_str()); + + // 13. Version + info.AddReserved("1.0.0"); + + // 14. Current username + std::string username = getUsername(); + info.AddReserved(username.c_str()); + + // 15. Is running as root + info.AddReserved(getuid() == 0 ? 1 : 0); + + // 16. Screen resolution (format: count:widthxheight) + std::string resolution = getScreenResolution(); + info.AddReserved(resolution.c_str()); + + // 17. Client ID (calculated from system info, same algorithm as server) + // Format: pubIP|hostname|os|cpu|path + char cpuStr[32]; + snprintf(cpuStr, sizeof(cpuStr), "%uMHz", info.dwCPUMHz); + std::string idInput = (pubIP.empty() ? "?" : pubIP) + "|" + + hostname + "|" + + osVer + "|" + + cpuStr + "|" + + exePath; + g_myClientID = XXH64(idInput.c_str(), idInput.length(), 0); + info.AddReserved(std::to_string(g_myClientID).c_str()); + + NSLog(@"LOGIN_INFOR filled: OS=%s, Host=%s, CPU=%dMHz, PubIP=%s, ClientID=%llu", + osVer.c_str(), hostname.c_str(), info.dwCPUMHz, pubIP.c_str(), g_myClientID); +} + +// ============== Signal Handling ============== + +static void signalHandler(int sig) +{ + NSLog(@"Received signal %d, shutting down...", sig); + g_running = false; +} + +static void setupSignals() +{ + signal(SIGTERM, signalHandler); + signal(SIGINT, signalHandler); + signal(SIGHUP, SIG_IGN); + signal(SIGPIPE, SIG_IGN); +} + +// ============== Main Entry Point ============== + +// RTT 估算器(参考 RFC 6298 算法,与 Windows 端 KernelManager 一致) +struct RttEstimator { + double srtt = 0.0; // 平滑 RTT (秒) + double rttvar = 0.0; // RTT 波动 (秒) + double rto = 0.0; // 超时时间 (秒) + bool initialized = false; + + void update_from_sample(double rtt_ms) + { + // 过滤异常值:RTT应在合理范围内 (0, 30000] 毫秒 + if (rtt_ms <= 0 || rtt_ms > 30000) + return; + + const double alpha = 1.0 / 8; + const double beta = 1.0 / 4; + double rtt = rtt_ms / 1000.0; + + if (!initialized) { + srtt = rtt; + rttvar = rtt / 2.0; + rto = srtt + 4.0 * rttvar; + initialized = true; + } else { + rttvar = (1.0 - beta) * rttvar + beta * std::fabs(srtt - rtt); + srtt = (1.0 - alpha) * srtt + alpha * rtt; + rto = srtt + 4.0 * rttvar; + } + + // 限制最小 RTO(RFC 6298 推荐 1 秒) + if (rto < 1.0) rto = 1.0; + } +}; + +RttEstimator g_rttEstimator; +int g_heartbeatInterval = 5; // 心跳间隔(秒),默认 5 秒,后续可由服务端动态调整 + +void* ScreenworkingThread(void* param) +{ + try { + std::unique_ptr ClientObject(new IOCPClient(g_bExit, true)); + void* clientAddr = ClientObject.get(); + Mprintf(">>> Enter ScreenworkingThread [%p]\n", clientAddr); + if (!g_bExit && ClientObject->ConnectServer(g_SETTINGS.ServerIP(), g_SETTINGS.ServerPort())) { + std::unique_ptr handler(new ScreenHandler(ClientObject.get())); + if (!handler->init()) { + Mprintf("*** ScreenHandler initialization failed (no permission?) ***\n"); + return NULL; + } + ClientObject->setManagerCallBack(handler.get(), IOCPManager::DataProcess, IOCPManager::ReconnectProcess); + // 连接后立即发送完整的 BITMAPINFO 包(与 Windows 端 ScreenManager 流程一致) + handler->sendBitmapInfo(); + Mprintf(">>> ScreenworkingThread [%p] Send: TOKEN_BITMAPINFO\n", clientAddr); + while (ClientObject->IsRunning() && ClientObject->IsConnected() && S_CLIENT_NORMAL == g_bExit) + Sleep(1000); + } + Mprintf(">>> Leave ScreenworkingThread [%p]\n", clientAddr); + } catch (const std::exception& e) { + Mprintf("*** ScreenworkingThread exception: %s ***\n", e.what()); + } + return NULL; +} + +int DataProcess(void* user, PBYTE szBuffer, ULONG ulLength) +{ + if (szBuffer == nullptr || ulLength == 0) + return TRUE; + + if (szBuffer[0] == COMMAND_BYE) { + Mprintf("*** [%p] Received Bye-Bye command ***\n", user); + g_bExit = S_CLIENT_EXIT; + g_running = false; // Stop main loop to prevent reconnection + } else if (szBuffer[0] == COMMAND_SHELL) { + Mprintf("** [%p] Received 'SHELL' command ***\n", user); + } else if (szBuffer[0] == COMMAND_SCREEN_SPY) { + std::thread(ScreenworkingThread, nullptr).detach(); + Mprintf("** [%p] Received 'SCREEN_SPY' command ***\n", user); + } else if (szBuffer[0] == COMMAND_SYSTEM) { + Mprintf("** [%p] Received 'SYSTEM' command ***\n", user); + } else if (szBuffer[0] == COMMAND_LIST_DRIVE) { + Mprintf("** [%p] Received 'LIST_DRIVE' command ***\n", user); + } else if (szBuffer[0] == CMD_HEARTBEAT_ACK) { + if (ulLength >= 1 + sizeof(HeartbeatACK)) { + HeartbeatACK* ack = (HeartbeatACK*)(szBuffer + 1); + uint64_t now = GetUnixMs(); + double rtt_ms = (double)(now - ack->Time); + g_rttEstimator.update_from_sample(rtt_ms); + // Log at most once per minute + static uint64_t lastLogTime = 0; + if (now - lastLogTime >= 60000) { + lastLogTime = now; + Mprintf("** [%p] Heartbeat ACK: RTT=%.1fms, SRTT=%.1fms ***\n", + user, rtt_ms, g_rttEstimator.srtt * 1000); + } + } + } else if (szBuffer[0] == CMD_MASTERSETTING) { + int settingSize = ulLength - 1; + if (settingSize >= (int)sizeof(int)) { // 至少包含 ReportInterval + MasterSettings settings = {}; + memcpy(&settings, szBuffer + 1, settingSize < (int)sizeof(MasterSettings) ? settingSize : sizeof(MasterSettings)); + if (settings.ReportInterval > 0) + g_heartbeatInterval = settings.ReportInterval; + Mprintf("** [%p] MasterSettings: ReportInterval=%ds ***\n", user, g_heartbeatInterval); + } + } else if (szBuffer[0] == COMMAND_NEXT) { + Mprintf("** [%p] Received 'NEXT' command ***\n", user); + } else { + Mprintf("** [%p] Received unimplemented command: %d ***\n", user, int(szBuffer[0])); + } + return TRUE; +} + +int main(int argc, const char* argv[]) +{ + (void)argc; + (void)argv; + + @autoreleasepool { + NSLog(@"=== macOS Ghost Client ==="); + + // Setup signal handlers + setupSignals(); + + // Check permissions + NSLog(@"Checking permissions..."); + + if (!Permissions::checkScreenCapture()) { + NSLog(@"Screen capture permission not granted."); + NSLog(@"Please grant permission in System Preferences > Privacy & Security > Screen Recording"); + Permissions::openScreenCaptureSettings(); + } + + if (!Permissions::checkAccessibility()) { + NSLog(@"Accessibility permission not granted."); + NSLog(@"Please grant permission in System Preferences > Privacy & Security > Accessibility"); + Permissions::requestAccessibility(); + } + + // Create client + auto ClientObject = std::make_unique(g_bExit, false); + ClientObject->setManagerCallBack(NULL, DataProcess, NULL); + + // Main event loop + NSLog(@"Starting main loop..."); + LOGIN_INFOR logInfo; + fillLoginInfo(logInfo); + + while (g_running) { + clock_t c = clock(); + if (!ClientObject->ConnectServer(g_SETTINGS.ServerIP(), g_SETTINGS.ServerPort())) { + Sleep(5000); + continue; + } + + ClientObject->SendLoginInfo(logInfo.Speed(clock() - c)); + + // 心跳保活循环:定时发送心跳包,服务端回复后动态更新 RTT + while (ClientObject->IsRunning() && ClientObject->IsConnected() && S_CLIENT_NORMAL == g_bExit) { + // 等待心跳间隔(每秒检查一次退出条件,保证及时响应) + int interval = g_heartbeatInterval > 0 ? g_heartbeatInterval : 30; + for (int i = 0; i < interval; ++i) { + if (!ClientObject->IsRunning() || !ClientObject->IsConnected() || g_bExit != S_CLIENT_NORMAL) + break; + Sleep(1000); + } + if (!ClientObject->IsRunning() || !ClientObject->IsConnected() || g_bExit != S_CLIENT_NORMAL) + break; + + // 构造并发送心跳包(与 Windows 端 KernelManager::SendHeartbeat 格式一致) + std::string activity = getActiveApp(); + + Heartbeat hb; + hb.Time = GetUnixMs(); + hb.Ping = (int)(g_rttEstimator.srtt * 1000); // srtt 是秒,转为毫秒 + strncpy(hb.ActiveWnd, activity.c_str(), sizeof(hb.ActiveWnd) - 1); + + BYTE buf[sizeof(Heartbeat) + 1]; + buf[0] = TOKEN_HEARTBEAT; + memcpy(buf + 1, &hb, sizeof(Heartbeat)); + ClientObject->Send2Server((char*)buf, sizeof(buf)); + } + } + + NSLog(@"Shutting down..."); + } + + return 0; +} diff --git a/server/2015Remote/ScreenSpyDlg.cpp b/server/2015Remote/ScreenSpyDlg.cpp index 5dd12e8..90930b8 100644 --- a/server/2015Remote/ScreenSpyDlg.cpp +++ b/server/2015Remote/ScreenSpyDlg.cpp @@ -156,7 +156,13 @@ CScreenSpyDlg::CScreenSpyDlg(CMy2015RemoteDlg* Parent, Server* IOCPServer, CONTE LPBYTE pClientID = m_ContextObject->InDeCompressedBuffer.GetBuffer(41); if (pClientID) { m_ClientID = *((uint64_t*)pClientID); - Mprintf("[ScreenSpyDlg] Parsed clientID in constructor: %llu\n", m_ClientID); + + // Notify web clients of resolution (important for clients that only send TOKEN_BITMAPINFO once) + if (WebService().IsRunning()) { + int width = m_BitmapInfor_Full->bmiHeader.biWidth; + int height = abs(m_BitmapInfor_Full->bmiHeader.biHeight); + WebService().NotifyResolutionChange(m_ClientID, width, height); + } } // 从客户端配置初始化自适应质量状态 (QualityLevel: -2=关闭, -1=自适应, 0-5=具体等级) @@ -758,6 +764,12 @@ BOOL CScreenSpyDlg::OnInitDialog() // 注册屏幕上下文到 WebService(用于 Web 端鼠标/键盘控制) WebService().RegisterScreenContext(m_ClientID, m_ContextObject); + // Hide window if this session was triggered by web client + if (WebService().IsWebTriggered(m_ClientID) && WebService().GetHideWebSessions()) { + m_bHide = true; + ShowWindow(SW_HIDE); + } + return TRUE; } @@ -1299,6 +1311,24 @@ VOID CScreenSpyDlg::DrawNextScreenDiff(bool keyFrame) break; } case ALGORITHM_H264: { + // Decode locally if dialog is visible + if (!m_bHide && NextScreenLength > 0) { + if (Decode((LPBYTE)NextScreenData, NextScreenLength)) { + bChange = TRUE; + } + } + // Broadcast H264 keyframe to web clients + if (NextScreenLength > 0 && WebService().IsRunning()) { + std::vector packet(4 + 1 + 4 + NextScreenLength); + uint32_t deviceIdLow = (uint32_t)(m_ClientID & 0xFFFFFFFF); + uint8_t frameType = 1; // Keyframe + uint32_t dataLen = (uint32_t)NextScreenLength; + memcpy(packet.data(), &deviceIdLow, 4); + packet[4] = frameType; + memcpy(packet.data() + 5, &dataLen, 4); + memcpy(packet.data() + 9, NextScreenData, NextScreenLength); + WebService().BroadcastH264Frame(m_ClientID, packet.data(), packet.size()); + } break; } default: diff --git a/server/2015Remote/WebPage.h b/server/2015Remote/WebPage.h index 75b37a1..b230a4a 100644 --- a/server/2015Remote/WebPage.h +++ b/server/2015Remote/WebPage.h @@ -1298,6 +1298,11 @@ inline std::string GetWebPageHTML() { } function initDecoder(width, height) { + decoderWidth = width; + decoderHeight = height; + needKeyframe = false; + decodeTimestamp = 0; + // Clear canvas before resizing to prevent residual content ctx.setTransform(1, 0, 0, 1, 0, 0); // Reset transform ctx.clearRect(0, 0, canvas.width, canvas.height); @@ -1319,6 +1324,10 @@ inline std::string GetWebPageHTML() { lastFrameTime = performance.now(); decoder = new VideoDecoder({ output: (frame) => { + // Check if frame dimensions match canvas + if (frame.displayWidth !== canvas.width || frame.displayHeight !== canvas.height) { + console.warn(`Frame size mismatch: frame=${frame.displayWidth}x${frame.displayHeight}, canvas=${canvas.width}x${canvas.height}`); + } ctx.drawImage(frame, 0, 0); frame.close(); frameCount++; @@ -1330,7 +1339,7 @@ inline std::string GetWebPageHTML() { document.getElementById('frame-info').textContent = width + 'x' + height + ' @ ' + fps + ' fps'; } }, - error: (e) => { console.error('Decoder error:', e); updateScreenStatus('error', 'Decode error'); } + error: (e) => { console.error('Decoder error:', e); needKeyframe = true; } }); decoder.configure({ codec: 'avc1.42E01E', @@ -1340,20 +1349,50 @@ inline std::string GetWebPageHTML() { }); } + let decoderWidth = 0, decoderHeight = 0, needKeyframe = false; + let decodeTimestamp = 0; // Monotonically increasing timestamp for decoder + function handleBinaryFrame(data) { - if (!decoder || decoder.state !== 'configured') return; const view = new DataView(data); const deviceId = view.getUint32(0, true); const frameType = view.getUint8(4); const dataLen = view.getUint32(5, true); + const isKeyframe = frameType === 1; + + // If decoder is closed or errored, wait for keyframe to reinitialize + if (!decoder || decoder.state === 'closed') { + if (isKeyframe && decoderWidth > 0) { + console.log('Reinitializing decoder on keyframe'); + initDecoder(decoderWidth, decoderHeight); + needKeyframe = false; + } else { + needKeyframe = true; + return; + } + } + + if (decoder.state !== 'configured') return; + + // Skip delta frames if we need a keyframe + if (needKeyframe && !isKeyframe) return; + if (isKeyframe) needKeyframe = false; + const h264Data = new Uint8Array(data, 9, dataLen); try { + // Check decoder queue to avoid overwhelming it (but never skip keyframes) + if (!isKeyframe && decoder.decodeQueueSize > 10) { + needKeyframe = true; // Need keyframe to resync after skipping + return; + } decoder.decode(new EncodedVideoChunk({ - type: frameType === 1 ? 'key' : 'delta', - timestamp: performance.now() * 1000, + type: isKeyframe ? 'key' : 'delta', + timestamp: decodeTimestamp++, data: h264Data })); - } catch (e) { console.error('Decode error:', e); } + } catch (e) { + console.error('Decode error:', e); + needKeyframe = true; + } } )HTML"; diff --git a/server/2015Remote/WebService.cpp b/server/2015Remote/WebService.cpp index 026ea14..183897c 100644 --- a/server/2015Remote/WebService.cpp +++ b/server/2015Remote/WebService.cpp @@ -1428,11 +1428,9 @@ void CWebService::BroadcastH264Frame(uint64_t device_id, const uint8_t* data, si // Broadcast to all watching clients std::lock_guard lock(m_ClientsMutex); - int sent_count = 0; for (auto& [ws_ptr, client] : m_Clients) { if (client.watch_device_id == device_id) { SendBinary(ws_ptr, data, len); - sent_count++; } } // Cache keyframe (check FrameType byte at offset 4)