From 1de8d3e56dfbcb2cfd6e6b51045d1bfcde21f316 Mon Sep 17 00:00:00 2001 From: Aakash Bakhle <48802744+aakashb95@users.noreply.github.com> Date: Thu, 11 Dec 2025 14:17:28 +0530 Subject: [PATCH 01/29] feat: legacy features to ruby llm (#12994) --- Gemfile.lock | 1 + app/models/message.rb | 15 ++ .../conversation_llm_formatter.rb | 2 +- config/initializers/ai_agents.rb | 4 +- .../api/v1/portals/articles_controller.rb | 2 +- enterprise/app/helpers/captain/chat_helper.rb | 12 +- .../captain/documents/response_builder_job.rb | 2 +- .../jobs/captain/llm/update_embedding_job.rb | 3 +- enterprise/app/models/article_embedding.rb | 2 + .../app/models/captain/assistant_response.rb | 4 +- enterprise/app/models/concerns/agentable.rb | 2 +- .../app/models/enterprise/concerns/article.rb | 2 +- .../captain/llm/contact_attributes_service.rb | 44 ++-- .../captain/llm/contact_notes_service.rb | 51 ++--- .../captain/llm/conversation_faq_service.rb | 54 ++--- .../services/captain/llm/embedding_service.rb | 42 ++-- .../captain/llm/faq_generator_service.rb | 46 +++-- .../llm/paginated_faq_generator_service.rb | 49 +++-- .../captain/llm/pdf_processing_service.rb | 33 ++- .../onboarding/website_analyzer_service.rb | 37 ++-- .../content_evaluator_service.rb | 80 ++++---- .../app/services/llm/base_ai_service.rb | 2 - .../llm/legacy_base_open_ai_service.rb | 7 +- .../messages/audio_transcription_service.rb | 25 ++- enterprise/lib/captain/agent.rb | 137 ------------- enterprise/lib/captain/llm_service.rb | 64 ------ enterprise/lib/captain/tool.rb | 66 ------ lib/integrations/llm_instrumentation.rb | 95 ++++----- .../llm_instrumentation_completion_helpers.rb | 88 ++++++++ .../llm_instrumentation_helpers.rb | 58 ++++-- lib/integrations/llm_instrumentation_spans.rb | 1 - lib/integrations/openai/processor_service.rb | 27 +-- lib/llm_constants.rb | 17 ++ lib/open_ai_constants.rb | 8 - .../documents/response_builder_job_spec.rb | 6 +- .../llm/conversation_faq_service_spec.rb | 130 ++++++------ .../captain/llm/faq_generator_service_spec.rb | 110 +++++----- .../website_analyzer_service_spec.rb | 93 ++++++--- .../content_evaluator_service_spec.rb | 194 +++++++++++++----- 39 files changed, 860 insertions(+), 755 deletions(-) delete mode 100644 enterprise/lib/captain/agent.rb delete mode 100644 enterprise/lib/captain/llm_service.rb delete mode 100644 enterprise/lib/captain/tool.rb create mode 100644 lib/integrations/llm_instrumentation_completion_helpers.rb create mode 100644 lib/llm_constants.rb delete mode 100644 lib/open_ai_constants.rb diff --git a/Gemfile.lock b/Gemfile.lock index b42472ef4..15ed841ac 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -827,6 +827,7 @@ GEM faraday-net_http (>= 1) faraday-retry (>= 1) marcel (~> 1.0) + ruby_llm-schema (~> 0.2.1) zeitwerk (~> 2) ruby_llm-schema (0.2.5) ruby_parser (3.20.0) diff --git a/app/models/message.rb b/app/models/message.rb index 2faba1215..0bf7a176b 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -254,6 +254,21 @@ class Message < ApplicationRecord Messages::SearchDataPresenter.new(self).search_data end + # Returns message content suitable for LLM consumption + # Falls back to audio transcription or attachment placeholder when content is nil + def content_for_llm + return content if content.present? + + audio_transcription = attachments + .where(file_type: :audio) + .filter_map { |att| att.meta&.dig('transcribed_text') } + .join(' ') + .presence + return "[Voice Message] #{audio_transcription}" if audio_transcription.present? + + '[Attachment]' if attachments.any? + end + private def prevent_message_flooding diff --git a/app/services/llm_formatter/conversation_llm_formatter.rb b/app/services/llm_formatter/conversation_llm_formatter.rb index 4e0bd7013..38d7c9e26 100644 --- a/app/services/llm_formatter/conversation_llm_formatter.rb +++ b/app/services/llm_formatter/conversation_llm_formatter.rb @@ -48,7 +48,7 @@ class LlmFormatter::ConversationLlmFormatter < LlmFormatter::DefaultLlmFormatter 'Bot' end sender = "[Private Note] #{sender}" if message.private? - "#{sender}: #{message.content}\n" + "#{sender}: #{message.content_for_llm}\n" end def build_attributes diff --git a/config/initializers/ai_agents.rb b/config/initializers/ai_agents.rb index 37bdd589f..be8a8a9cc 100644 --- a/config/initializers/ai_agents.rb +++ b/config/initializers/ai_agents.rb @@ -4,8 +4,8 @@ require 'agents' Rails.application.config.after_initialize do api_key = InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_API_KEY')&.value - model = InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_MODEL')&.value.presence || OpenAiConstants::DEFAULT_MODEL - api_endpoint = InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_ENDPOINT')&.value || OpenAiConstants::DEFAULT_ENDPOINT + model = InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_MODEL')&.value.presence || LlmConstants::DEFAULT_MODEL + api_endpoint = InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_ENDPOINT')&.value || LlmConstants::OPENAI_API_ENDPOINT if api_key.present? Agents.configure do |config| diff --git a/enterprise/app/controllers/enterprise/public/api/v1/portals/articles_controller.rb b/enterprise/app/controllers/enterprise/public/api/v1/portals/articles_controller.rb index 240da0dca..77162dad0 100644 --- a/enterprise/app/controllers/enterprise/public/api/v1/portals/articles_controller.rb +++ b/enterprise/app/controllers/enterprise/public/api/v1/portals/articles_controller.rb @@ -3,7 +3,7 @@ module Enterprise::Public::Api::V1::Portals::ArticlesController def search_articles if @portal.account.feature_enabled?('help_center_embedding_search') - @articles = @articles.vector_search(list_params) if list_params[:query].present? + @articles = @articles.vector_search(list_params.merge(account_id: @portal.account_id)) if list_params[:query].present? else super end diff --git a/enterprise/app/helpers/captain/chat_helper.rb b/enterprise/app/helpers/captain/chat_helper.rb index a60e3015f..9bbbd86a5 100644 --- a/enterprise/app/helpers/captain/chat_helper.rb +++ b/enterprise/app/helpers/captain/chat_helper.rb @@ -21,20 +21,18 @@ module Captain::ChatHelper def build_chat llm_chat = chat(model: @model, temperature: temperature) - llm_chat.with_params(response_format: { type: 'json_object' }) + llm_chat = llm_chat.with_params(response_format: { type: 'json_object' }) llm_chat = setup_tools(llm_chat) - setup_system_instructions(llm_chat) + llm_chat = setup_system_instructions(llm_chat) setup_event_handlers(llm_chat) - - llm_chat end - def setup_tools(chat) + def setup_tools(llm_chat) @tools&.each do |tool| - chat.with_tool(tool) + llm_chat = llm_chat.with_tool(tool) end - chat + llm_chat end def setup_system_instructions(chat) diff --git a/enterprise/app/jobs/captain/documents/response_builder_job.rb b/enterprise/app/jobs/captain/documents/response_builder_job.rb index b22fa5bc1..553cec110 100644 --- a/enterprise/app/jobs/captain/documents/response_builder_job.rb +++ b/enterprise/app/jobs/captain/documents/response_builder_job.rb @@ -26,7 +26,7 @@ class Captain::Documents::ResponseBuilderJob < ApplicationJob end def generate_standard_faqs(document) - Captain::Llm::FaqGeneratorService.new(document.content, document.account.locale_english_name).generate + Captain::Llm::FaqGeneratorService.new(document.content, document.account.locale_english_name, account_id: document.account_id).generate end def build_paginated_service(document, options) diff --git a/enterprise/app/jobs/captain/llm/update_embedding_job.rb b/enterprise/app/jobs/captain/llm/update_embedding_job.rb index 20d10f8f5..72ab540bd 100644 --- a/enterprise/app/jobs/captain/llm/update_embedding_job.rb +++ b/enterprise/app/jobs/captain/llm/update_embedding_job.rb @@ -2,7 +2,8 @@ class Captain::Llm::UpdateEmbeddingJob < ApplicationJob queue_as :low def perform(record, content) - embedding = Captain::Llm::EmbeddingService.new.get_embedding(content) + account_id = record.account_id + embedding = Captain::Llm::EmbeddingService.new(account_id: account_id).get_embedding(content) record.update!(embedding: embedding) end end diff --git a/enterprise/app/models/article_embedding.rb b/enterprise/app/models/article_embedding.rb index 14665a24b..4dafcfe06 100644 --- a/enterprise/app/models/article_embedding.rb +++ b/enterprise/app/models/article_embedding.rb @@ -19,6 +19,8 @@ class ArticleEmbedding < ApplicationRecord after_commit :update_response_embedding + delegate :account_id, to: :article + private def update_response_embedding diff --git a/enterprise/app/models/captain/assistant_response.rb b/enterprise/app/models/captain/assistant_response.rb index 7ab2878a3..12dcab1cc 100644 --- a/enterprise/app/models/captain/assistant_response.rb +++ b/enterprise/app/models/captain/assistant_response.rb @@ -44,8 +44,8 @@ class Captain::AssistantResponse < ApplicationRecord enum status: { pending: 0, approved: 1 } - def self.search(query) - embedding = Captain::Llm::EmbeddingService.new.get_embedding(query) + def self.search(query, account_id: nil) + embedding = Captain::Llm::EmbeddingService.new(account_id: account_id).get_embedding(query) nearest_neighbors(:embedding, embedding, distance: 'cosine').limit(5) end diff --git a/enterprise/app/models/concerns/agentable.rb b/enterprise/app/models/concerns/agentable.rb index dab76a726..e5b0b8eef 100644 --- a/enterprise/app/models/concerns/agentable.rb +++ b/enterprise/app/models/concerns/agentable.rb @@ -43,7 +43,7 @@ module Concerns::Agentable end def agent_model - InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_MODEL')&.value.presence || OpenAiConstants::DEFAULT_MODEL + InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_MODEL')&.value.presence || LlmConstants::DEFAULT_MODEL end def agent_response_schema diff --git a/enterprise/app/models/enterprise/concerns/article.rb b/enterprise/app/models/enterprise/concerns/article.rb index d3a94d7b7..4527bfdf6 100644 --- a/enterprise/app/models/enterprise/concerns/article.rb +++ b/enterprise/app/models/enterprise/concerns/article.rb @@ -11,7 +11,7 @@ module Enterprise::Concerns::Article add_article_embedding_association def self.vector_search(params) - embedding = Captain::Llm::EmbeddingService.new.get_embedding(params['query']) + embedding = Captain::Llm::EmbeddingService.new(account_id: params[:account_id]).get_embedding(params['query']) records = joins( :category ).search_by_category_slug( diff --git a/enterprise/app/services/captain/llm/contact_attributes_service.rb b/enterprise/app/services/captain/llm/contact_attributes_service.rb index f2c48de57..803c06f09 100644 --- a/enterprise/app/services/captain/llm/contact_attributes_service.rb +++ b/enterprise/app/services/captain/llm/contact_attributes_service.rb @@ -1,4 +1,5 @@ -class Captain::Llm::ContactAttributesService < Llm::LegacyBaseOpenAiService +class Captain::Llm::ContactAttributesService < Llm::BaseAiService + include Integrations::LlmInstrumentation def initialize(assistant, conversation) super() @assistant = assistant @@ -17,33 +18,38 @@ class Captain::Llm::ContactAttributesService < Llm::LegacyBaseOpenAiService attr_reader :content def generate_attributes - response = @client.chat(parameters: chat_parameters) - parse_response(response) - rescue OpenAI::Error => e - Rails.logger.error "OpenAI API Error: #{e.message}" + response = instrument_llm_call(instrumentation_params) do + chat + .with_params(response_format: { type: 'json_object' }) + .with_instructions(system_prompt) + .ask(@content) + end + parse_response(response.content) + rescue RubyLLM::Error => e + ChatwootExceptionTracker.new(e, account: @conversation.account).capture_exception [] end - def chat_parameters - prompt = Captain::Llm::SystemPromptsService.attributes_generator + def instrumentation_params { + span_name: 'llm.captain.contact_attributes', model: @model, - response_format: { type: 'json_object' }, + temperature: @temperature, + account_id: @conversation.account_id, + feature_name: 'contact_attributes', messages: [ - { - role: 'system', - content: prompt - }, - { - role: 'user', - content: content - } - ] + { role: 'system', content: system_prompt }, + { role: 'user', content: @content } + ], + metadata: { assistant_id: @assistant.id, contact_id: @contact.id } } end - def parse_response(response) - content = response.dig('choices', 0, 'message', 'content') + def system_prompt + Captain::Llm::SystemPromptsService.attributes_generator + end + + def parse_response(content) return [] if content.nil? JSON.parse(content.strip).fetch('attributes', []) diff --git a/enterprise/app/services/captain/llm/contact_notes_service.rb b/enterprise/app/services/captain/llm/contact_notes_service.rb index 4ee4fcb5e..d37f9fea6 100644 --- a/enterprise/app/services/captain/llm/contact_notes_service.rb +++ b/enterprise/app/services/captain/llm/contact_notes_service.rb @@ -1,4 +1,5 @@ -class Captain::Llm::ContactNotesService < Llm::LegacyBaseOpenAiService +class Captain::Llm::ContactNotesService < Llm::BaseAiService + include Integrations::LlmInstrumentation def initialize(assistant, conversation) super() @assistant = assistant @@ -18,38 +19,42 @@ class Captain::Llm::ContactNotesService < Llm::LegacyBaseOpenAiService attr_reader :content def generate_notes - response = @client.chat(parameters: chat_parameters) - parse_response(response) - rescue OpenAI::Error => e - Rails.logger.error "OpenAI API Error: #{e.message}" + response = instrument_llm_call(instrumentation_params) do + chat + .with_params(response_format: { type: 'json_object' }) + .with_instructions(system_prompt) + .ask(@content) + end + parse_response(response.content) + rescue RubyLLM::Error => e + ChatwootExceptionTracker.new(e, account: @conversation.account).capture_exception [] end - def chat_parameters - account_language = @conversation.account.locale_english_name - prompt = Captain::Llm::SystemPromptsService.notes_generator(account_language) - + def instrumentation_params { + span_name: 'llm.captain.contact_notes', model: @model, - response_format: { type: 'json_object' }, + temperature: @temperature, + account_id: @conversation.account_id, + feature_name: 'contact_notes', messages: [ - { - role: 'system', - content: prompt - }, - { - role: 'user', - content: content - } - ] + { role: 'system', content: system_prompt }, + { role: 'user', content: @content } + ], + metadata: { assistant_id: @assistant.id, contact_id: @contact.id } } end - def parse_response(response) - content = response.dig('choices', 0, 'message', 'content') - return [] if content.nil? + def system_prompt + account_language = @conversation.account.locale_english_name + Captain::Llm::SystemPromptsService.notes_generator(account_language) + end - JSON.parse(content.strip).fetch('notes', []) + def parse_response(response) + return [] if response.nil? + + JSON.parse(response.strip).fetch('notes', []) rescue JSON::ParserError => e Rails.logger.error "Error in parsing GPT processed response: #{e.message}" [] diff --git a/enterprise/app/services/captain/llm/conversation_faq_service.rb b/enterprise/app/services/captain/llm/conversation_faq_service.rb index 47d1433bd..e9152bc99 100644 --- a/enterprise/app/services/captain/llm/conversation_faq_service.rb +++ b/enterprise/app/services/captain/llm/conversation_faq_service.rb @@ -1,4 +1,5 @@ -class Captain::Llm::ConversationFaqService < Llm::LegacyBaseOpenAiService +class Captain::Llm::ConversationFaqService < Llm::BaseAiService + include Integrations::LlmInstrumentation DISTANCE_THRESHOLD = 0.3 def initialize(assistant, conversation) @@ -35,7 +36,7 @@ class Captain::Llm::ConversationFaqService < Llm::LegacyBaseOpenAiService faqs.each do |faq| combined_text = "#{faq['question']}: #{faq['answer']}" - embedding = Captain::Llm::EmbeddingService.new.get_embedding(combined_text) + embedding = Captain::Llm::EmbeddingService.new(account_id: @conversation.account_id).get_embedding(combined_text) similar_faqs = find_similar_faqs(embedding) if similar_faqs.any? @@ -81,38 +82,43 @@ class Captain::Llm::ConversationFaqService < Llm::LegacyBaseOpenAiService end def generate - response = @client.chat(parameters: chat_parameters) - parse_response(response) - rescue OpenAI::Error => e - Rails.logger.error "OpenAI API Error: #{e.message}" + response = instrument_llm_call(instrumentation_params) do + chat + .with_params(response_format: { type: 'json_object' }) + .with_instructions(system_prompt) + .ask(@content) + end + parse_response(response.content) + rescue RubyLLM::Error => e + Rails.logger.error "LLM API Error: #{e.message}" [] end - def chat_parameters - account_language = @conversation.account.locale_english_name - prompt = Captain::Llm::SystemPromptsService.conversation_faq_generator(account_language) - + def instrumentation_params { + span_name: 'llm.captain.conversation_faq', model: @model, - response_format: { type: 'json_object' }, + temperature: @temperature, + account_id: @conversation.account_id, + conversation_id: @conversation.id, + feature_name: 'conversation_faq', messages: [ - { - role: 'system', - content: prompt - }, - { - role: 'user', - content: content - } - ] + { role: 'system', content: system_prompt }, + { role: 'user', content: @content } + ], + metadata: { assistant_id: @assistant.id } } end - def parse_response(response) - content = response.dig('choices', 0, 'message', 'content') - return [] if content.nil? + def system_prompt + account_language = @conversation.account.locale_english_name + Captain::Llm::SystemPromptsService.conversation_faq_generator(account_language) + end - JSON.parse(content.strip).fetch('faqs', []) + def parse_response(response) + return [] if response.nil? + + JSON.parse(response.strip).fetch('faqs', []) rescue JSON::ParserError => e Rails.logger.error "Error in parsing GPT processed response: #{e.message}" [] diff --git a/enterprise/app/services/captain/llm/embedding_service.rb b/enterprise/app/services/captain/llm/embedding_service.rb index 5190ed28a..2fac54594 100644 --- a/enterprise/app/services/captain/llm/embedding_service.rb +++ b/enterprise/app/services/captain/llm/embedding_service.rb @@ -1,22 +1,38 @@ -require 'openai' +class Captain::Llm::EmbeddingService + include Integrations::LlmInstrumentation -class Captain::Llm::EmbeddingService < Llm::LegacyBaseOpenAiService class EmbeddingsError < StandardError; end - def self.embedding_model - @embedding_model = InstallationConfig.find_by(name: 'CAPTAIN_EMBEDDING_MODEL')&.value.presence || OpenAiConstants::DEFAULT_EMBEDDING_MODEL + def initialize(account_id: nil) + Llm::Config.initialize! + @account_id = account_id + @embedding_model = InstallationConfig.find_by(name: 'CAPTAIN_EMBEDDING_MODEL')&.value.presence || LlmConstants::DEFAULT_EMBEDDING_MODEL end - def get_embedding(content, model: self.class.embedding_model) - response = @client.embeddings( - parameters: { - model: model, - input: content - } - ) + def self.embedding_model + InstallationConfig.find_by(name: 'CAPTAIN_EMBEDDING_MODEL')&.value.presence || LlmConstants::DEFAULT_EMBEDDING_MODEL + end - response.dig('data', 0, 'embedding') - rescue StandardError => e + def get_embedding(content, model: @embedding_model) + return [] if content.blank? + + instrument_embedding_call(instrumentation_params(content, model)) do + RubyLLM.embed(content, model: model).vectors + end + rescue RubyLLM::Error => e + Rails.logger.error "Embedding API Error: #{e.message}" raise EmbeddingsError, "Failed to create an embedding: #{e.message}" end + + private + + def instrumentation_params(content, model) + { + span_name: 'llm.captain.embedding', + model: model, + input: content, + feature_name: 'embedding', + account_id: @account_id + } + end end diff --git a/enterprise/app/services/captain/llm/faq_generator_service.rb b/enterprise/app/services/captain/llm/faq_generator_service.rb index 634385b36..b22a631b3 100644 --- a/enterprise/app/services/captain/llm/faq_generator_service.rb +++ b/enterprise/app/services/captain/llm/faq_generator_service.rb @@ -1,15 +1,24 @@ -class Captain::Llm::FaqGeneratorService < Llm::LegacyBaseOpenAiService - def initialize(content, language = 'english') +class Captain::Llm::FaqGeneratorService < Llm::BaseAiService + include Integrations::LlmInstrumentation + + def initialize(content, language = 'english', account_id: nil) super() @language = language @content = content + @account_id = account_id end def generate - response = @client.chat(parameters: chat_parameters) - parse_response(response) - rescue OpenAI::Error => e - Rails.logger.error "OpenAI API Error: #{e.message}" + response = instrument_llm_call(instrumentation_params) do + chat + .with_params(response_format: { type: 'json_object' }) + .with_instructions(system_prompt) + .ask(@content) + end + + parse_response(response.content) + rescue RubyLLM::Error => e + Rails.logger.error "LLM API Error: #{e.message}" [] end @@ -17,26 +26,25 @@ class Captain::Llm::FaqGeneratorService < Llm::LegacyBaseOpenAiService attr_reader :content, :language - def chat_parameters - prompt = Captain::Llm::SystemPromptsService.faq_generator(language) + def system_prompt + Captain::Llm::SystemPromptsService.faq_generator(language) + end + + def instrumentation_params { + span_name: 'llm.captain.faq_generator', model: @model, - response_format: { type: 'json_object' }, + temperature: @temperature, + feature_name: 'faq_generator', + account_id: @account_id, messages: [ - { - role: 'system', - content: prompt - }, - { - role: 'user', - content: content - } + { role: 'system', content: system_prompt }, + { role: 'user', content: @content } ] } end - def parse_response(response) - content = response.dig('choices', 0, 'message', 'content') + def parse_response(content) return [] if content.nil? JSON.parse(content.strip).fetch('faqs', []) diff --git a/enterprise/app/services/captain/llm/paginated_faq_generator_service.rb b/enterprise/app/services/captain/llm/paginated_faq_generator_service.rb index ebfef4b5c..149152107 100644 --- a/enterprise/app/services/captain/llm/paginated_faq_generator_service.rb +++ b/enterprise/app/services/captain/llm/paginated_faq_generator_service.rb @@ -1,4 +1,6 @@ class Captain::Llm::PaginatedFaqGeneratorService < Llm::LegacyBaseOpenAiService + include Integrations::LlmInstrumentation + # Default pages per chunk - easily configurable DEFAULT_PAGES_PER_CHUNK = 10 MAX_ITERATIONS = 20 # Safety limit to prevent infinite loops @@ -13,7 +15,7 @@ class Captain::Llm::PaginatedFaqGeneratorService < Llm::LegacyBaseOpenAiService @max_pages = options[:max_pages] # Optional limit from UI @total_pages_processed = 0 @iterations_completed = 0 - @model = OpenAiConstants::PDF_PROCESSING_MODEL + @model = LlmConstants::PDF_PROCESSING_MODEL end def generate @@ -43,7 +45,19 @@ class Captain::Llm::PaginatedFaqGeneratorService < Llm::LegacyBaseOpenAiService private def generate_standard_faqs - response = @client.chat(parameters: standard_chat_parameters) + params = standard_chat_parameters + instrumentation_params = { + span_name: 'llm.faq_generation', + account_id: @document&.account_id, + feature_name: 'faq_generation', + model: @model, + messages: params[:messages] + } + + response = instrument_llm_call(instrumentation_params) do + @client.chat(parameters: params) + end + parse_response(response) rescue OpenAI::Error => e Rails.logger.error I18n.t('captain.documents.openai_api_error', error: e.message) @@ -84,7 +98,13 @@ class Captain::Llm::PaginatedFaqGeneratorService < Llm::LegacyBaseOpenAiService def process_page_chunk(start_page, end_page) params = build_chunk_parameters(start_page, end_page) - response = @client.chat(parameters: params) + + instrumentation_params = build_instrumentation_params(params, start_page, end_page) + + response = instrument_llm_call(instrumentation_params) do + @client.chat(parameters: params) + end + result = parse_chunk_response(response) { faqs: result['faqs'] || [], has_content: result['has_content'] != false } rescue OpenAI::Error => e @@ -180,21 +200,26 @@ class Captain::Llm::PaginatedFaqGeneratorService < Llm::LegacyBaseOpenAiService def similarity_score(str1, str2) words1 = str1.downcase.split(/\W+/).reject(&:empty?) words2 = str2.downcase.split(/\W+/).reject(&:empty?) - common_words = words1 & words2 total_words = (words1 + words2).uniq.size - return 0 if total_words.zero? common_words.size.to_f / total_words end - def determine_stop_reason(last_chunk_result) - return 'Maximum iterations reached' if @iterations_completed >= MAX_ITERATIONS - return 'Maximum pages processed' if @max_pages && @total_pages_processed >= @max_pages - return 'No content found in last chunk' if last_chunk_result[:faqs].empty? - return 'End of document reached' if last_chunk_result[:has_content] == false - - 'Unknown' + def build_instrumentation_params(params, start_page, end_page) + { + span_name: 'llm.paginated_faq_generation', + account_id: @document&.account_id, + feature_name: 'paginated_faq_generation', + model: @model, + messages: params[:messages], + metadata: { + document_id: @document&.id, + start_page: start_page, + end_page: end_page, + iteration: @iterations_completed + 1 + } + } end end diff --git a/enterprise/app/services/captain/llm/pdf_processing_service.rb b/enterprise/app/services/captain/llm/pdf_processing_service.rb index 55177b78d..82e3e9fbc 100644 --- a/enterprise/app/services/captain/llm/pdf_processing_service.rb +++ b/enterprise/app/services/captain/llm/pdf_processing_service.rb @@ -1,4 +1,6 @@ class Captain::Llm::PdfProcessingService < Llm::LegacyBaseOpenAiService + include Integrations::LlmInstrumentation + def initialize(document) super() @document = document @@ -19,13 +21,30 @@ class Captain::Llm::PdfProcessingService < Llm::LegacyBaseOpenAiService def upload_pdf_to_openai with_tempfile do |temp_file| - response = @client.files.upload( - parameters: { - file: temp_file, - purpose: 'assistants' - } - ) - response['id'] + instrument_file_upload do + response = @client.files.upload( + parameters: { + file: temp_file, + purpose: 'assistants' + } + ) + response['id'] + end + end + end + + def instrument_file_upload(&) + return yield unless ChatwootApp.otel_enabled? + + tracer.in_span('llm.file.upload') do |span| + span.set_attribute('gen_ai.provider', 'openai') + span.set_attribute('file.purpose', 'assistants') + span.set_attribute(ATTR_LANGFUSE_USER_ID, document.account_id.to_s) + span.set_attribute(ATTR_LANGFUSE_TAGS, ['pdf_upload'].to_json) + span.set_attribute(format(ATTR_LANGFUSE_METADATA, 'document_id'), document.id.to_s) + file_id = yield + span.set_attribute('file.id', file_id) if file_id + file_id end end diff --git a/enterprise/app/services/captain/onboarding/website_analyzer_service.rb b/enterprise/app/services/captain/onboarding/website_analyzer_service.rb index 02ba35571..a5879ba33 100644 --- a/enterprise/app/services/captain/onboarding/website_analyzer_service.rb +++ b/enterprise/app/services/captain/onboarding/website_analyzer_service.rb @@ -1,4 +1,5 @@ -class Captain::Onboarding::WebsiteAnalyzerService < Llm::LegacyBaseOpenAiService +class Captain::Onboarding::WebsiteAnalyzerService < Llm::BaseAiService + include Integrations::LlmInstrumentation MAX_CONTENT_LENGTH = 8000 def initialize(website_url) @@ -57,19 +58,29 @@ class Captain::Onboarding::WebsiteAnalyzerService < Llm::LegacyBaseOpenAiService end def extract_business_info - prompt = build_analysis_prompt + response = instrument_llm_call(instrumentation_params) do + chat + .with_params(response_format: { type: 'json_object' }, max_tokens: 1000) + .with_temperature(0.1) + .with_instructions(build_analysis_prompt) + .ask(@website_content) + end - response = client.chat( - parameters: { - model: model, - messages: [{ role: 'user', content: prompt }], - response_format: { type: 'json_object' }, - temperature: 0.1, - max_tokens: 1000 - } - ) + parse_llm_response(response.content) + end - parse_llm_response(response.dig('choices', 0, 'message', 'content')) + def instrumentation_params + { + span_name: 'llm.captain.website_analyzer', + model: @model, + temperature: 0.1, + feature_name: 'website_analyzer', + messages: [ + { role: 'system', content: build_analysis_prompt }, + { role: 'user', content: @website_content } + ], + metadata: { website_url: @website_url } + } end def build_analysis_prompt @@ -95,7 +106,7 @@ class Captain::Onboarding::WebsiteAnalyzerService < Llm::LegacyBaseOpenAiService end def parse_llm_response(response_text) - parsed_response = JSON.parse(response_text) + parsed_response = JSON.parse(response_text.strip) { success: true, diff --git a/enterprise/app/services/internal/account_analysis/content_evaluator_service.rb b/enterprise/app/services/internal/account_analysis/content_evaluator_service.rb index 586e9fad0..7be5647a8 100644 --- a/enterprise/app/services/internal/account_analysis/content_evaluator_service.rb +++ b/enterprise/app/services/internal/account_analysis/content_evaluator_service.rb @@ -1,48 +1,59 @@ -class Internal::AccountAnalysis::ContentEvaluatorService < Llm::LegacyBaseOpenAiService - def initialize - super() +class Internal::AccountAnalysis::ContentEvaluatorService + include Integrations::LlmInstrumentation - @model = 'gpt-4o-mini'.freeze + def initialize + Llm::Config.initialize! end def evaluate(content) return default_evaluation if content.blank? - begin - response = send_to_llm(content) - evaluation = handle_response(response) - log_evaluation_results(evaluation) - evaluation - rescue StandardError => e - handle_evaluation_error(e) + moderation_result = instrument_moderation_call(instrumentation_params(content)) do + RubyLLM.moderate(content.to_s[0...10_000]) end + + build_evaluation(moderation_result) + rescue StandardError => e + handle_evaluation_error(e) end private - def send_to_llm(content) - Rails.logger.info('Sending content to LLM for security evaluation') - @client.chat( - parameters: { - model: @model, - messages: llm_messages(content), - response_format: { type: 'json_object' } - } - ) + def instrumentation_params(content) + { + span_name: 'llm.internal.content_moderation', + model: 'text-moderation-latest', + input: content, + feature_name: 'content_evaluator' + } end - def handle_response(response) - return default_evaluation if response.nil? + def build_evaluation(result) + flagged = result.flagged? + categories = result.flagged_categories - parsed = JSON.parse(response.dig('choices', 0, 'message', 'content').strip) - - { - 'threat_level' => parsed['threat_level'] || 'unknown', - 'threat_summary' => parsed['threat_summary'] || 'No threat summary provided', - 'detected_threats' => parsed['detected_threats'] || [], - 'illegal_activities_detected' => parsed['illegal_activities_detected'] || false, - 'recommendation' => parsed['recommendation'] || 'review' + evaluation = { + 'threat_level' => flagged ? determine_threat_level(result) : 'safe', + 'threat_summary' => flagged ? "Content flagged for: #{categories.join(', ')}" : 'No threats detected', + 'detected_threats' => categories, + 'illegal_activities_detected' => categories.any? { |c| c.include?('violence') || c.include?('self-harm') }, + 'recommendation' => flagged ? 'review' : 'approve' } + + log_evaluation_results(evaluation) + evaluation + end + + def determine_threat_level(result) + scores = result.category_scores + max_score = scores.values.max || 0 + + case max_score + when 0.8.. then 'critical' + when 0.5..0.8 then 'high' + when 0.2..0.5 then 'medium' + else 'low' + end end def default_evaluation(error_type = nil) @@ -56,18 +67,11 @@ class Internal::AccountAnalysis::ContentEvaluatorService < Llm::LegacyBaseOpenAi end def log_evaluation_results(evaluation) - Rails.logger.info("LLM evaluation - Level: #{evaluation['threat_level']}, Illegal activities: #{evaluation['illegal_activities_detected']}") + Rails.logger.info("Moderation evaluation - Level: #{evaluation['threat_level']}, Threats: #{evaluation['detected_threats'].join(', ')}") end def handle_evaluation_error(error) Rails.logger.error("Error evaluating content: #{error.message}") default_evaluation('evaluation_failure') end - - def llm_messages(content) - [ - { role: 'system', content: 'You are a security analysis system that evaluates content for potential threats and scams.' }, - { role: 'user', content: Internal::AccountAnalysis::PromptsService.threat_analyser(content.to_s[0...10_000]) } - ] - end end diff --git a/enterprise/app/services/llm/base_ai_service.rb b/enterprise/app/services/llm/base_ai_service.rb index 504685e3a..a5a91cf24 100644 --- a/enterprise/app/services/llm/base_ai_service.rb +++ b/enterprise/app/services/llm/base_ai_service.rb @@ -14,8 +14,6 @@ class Llm::BaseAiService setup_temperature end - # Returns a configured RubyLLM chat instance. - # Subclasses can override model/temperature via instance variables or pass them explicitly. def chat(model: @model, temperature: @temperature) RubyLLM.chat(model: model).with_temperature(temperature) end diff --git a/enterprise/app/services/llm/legacy_base_open_ai_service.rb b/enterprise/app/services/llm/legacy_base_open_ai_service.rb index ede9f0d8f..f431830db 100644 --- a/enterprise/app/services/llm/legacy_base_open_ai_service.rb +++ b/enterprise/app/services/llm/legacy_base_open_ai_service.rb @@ -1,8 +1,11 @@ # frozen_string_literal: true # DEPRECATED: This class uses the legacy OpenAI Ruby gem directly. -# New features should use Llm::BaseAiService with RubyLLM instead. -# This class will be removed once all services are migrated to RubyLLM. +# Only used for PDF/file operations that require OpenAI's files API: +# - Captain::Llm::PdfProcessingService (files.upload for assistants) +# - Captain::Llm::PaginatedFaqGeneratorService (uses file_id from uploaded files) +# +# For all other LLM operations, use Llm::BaseAiService with RubyLLM instead. class Llm::LegacyBaseOpenAiService DEFAULT_MODEL = 'gpt-4o-mini' diff --git a/enterprise/app/services/messages/audio_transcription_service.rb b/enterprise/app/services/messages/audio_transcription_service.rb index d3cc91376..1676dd862 100644 --- a/enterprise/app/services/messages/audio_transcription_service.rb +++ b/enterprise/app/services/messages/audio_transcription_service.rb @@ -1,4 +1,8 @@ -class Messages::AudioTranscriptionService < Llm::LegacyBaseOpenAiService +class Messages::AudioTranscriptionService< Llm::LegacyBaseOpenAiService + include Integrations::LlmInstrumentation + + WHISPER_MODEL = 'whisper-1'.freeze + attr_reader :attachment, :message, :account def initialize(attachment) @@ -46,7 +50,7 @@ class Messages::AudioTranscriptionService < Llm::LegacyBaseOpenAiService temp_file_path = fetch_audio_file - response_text = nil + transcribed_text = nil File.open(temp_file_path, 'rb') do |file| response = @client.audio.transcribe( @@ -56,14 +60,23 @@ class Messages::AudioTranscriptionService < Llm::LegacyBaseOpenAiService temperature: 0.4 } ) - - response_text = response['text'] + transcribed_text = response['text'] end FileUtils.rm_f(temp_file_path) - update_transcription(response_text) - response_text + update_transcription(transcribed_text) + transcribed_text + end + + def instrumentation_params(file_path) + { + span_name: 'llm.messages.audio_transcription', + model: WHISPER_MODEL, + account_id: account&.id, + feature_name: 'audio_transcription', + file_path: file_path + } end def update_transcription(transcribed_text) diff --git a/enterprise/lib/captain/agent.rb b/enterprise/lib/captain/agent.rb deleted file mode 100644 index f0b511115..000000000 --- a/enterprise/lib/captain/agent.rb +++ /dev/null @@ -1,137 +0,0 @@ -require 'openai' -class Captain::Agent - attr_reader :name, :tools, :prompt, :persona, :goal, :secrets - - def initialize(name:, config:) - @name = name - @prompt = construct_prompt(config) - @tools = prepare_tools(config[:tools] || []) - @messages = config[:messages] || [] - @max_iterations = config[:max_iterations] || 10 - @llm = Captain::LlmService.new(api_key: config[:secrets][:OPENAI_API_KEY]) - @logger = Rails.logger - - @logger.info(@prompt) - end - - def execute(input, context) - setup_messages(input, context) - result = {} - @max_iterations.times do |iteration| - push_to_messages(role: 'system', content: 'Provide a final answer') if iteration == @max_iterations - 1 - - result = @llm.call(@messages, functions) - handle_llm_result(result) - - break if result[:stop] - end - - result[:output] - end - - def register_tool(tool) - @tools << tool - end - - private - - def setup_messages(input, context) - if @messages.empty? - push_to_messages({ role: 'system', content: @prompt }) - push_to_messages({ role: 'assistant', content: context }) if context.present? - end - push_to_messages({ role: 'user', content: input }) - end - - def handle_llm_result(result) - if result[:tool_call] - tool_result = execute_tool(result[:tool_call]) - push_to_messages({ role: 'assistant', content: tool_result }) - else - push_to_messages({ role: 'assistant', content: result[:output] }) - end - result[:output] - end - - def execute_tool(tool_call) - function_name = tool_call['function']['name'] - arguments = JSON.parse(tool_call['function']['arguments']) - - tool = @tools.find { |t| t.name == function_name } - tool.execute(arguments, {}) - rescue StandardError => e - "Tool execution failed: #{e.message}" - end - - def construct_prompt(config) - return config[:prompt] if config[:prompt] - - <<~PROMPT - Persona: #{config[:persona]} - Objective: #{config[:goal]} - - Guidelines: - - Persistently work towards achieving the stated objective without deviation. - - Use only the provided tools to complete the task. Avoid inventing or assuming function names. - - Set `'stop': true` once the objective is fully achieved. - - DO NOT return tool usage as the final result. - - If sufficient information is available to deliver result, compile and present it to the user. - - Always return a final result and ENSURE the final result is formatted in Markdown. - - Output Structure: - - 1. **Tool Usage:** - - If a relevant function is identified, call it directly without unnecessary explanations. - - 2. **Final Answer:** - When ready to provide a complete response, follow this JSON format: - - ```json - { - "thought_process": "Explain the reasoning and steps taken to arrive at the final result.", - "result": "Provide the complete response in clear, structured text.", - "stop": true - } - PROMPT - end - - def prepare_tools(tools = []) - tools.map do |_, tool| - Captain::Tool.new( - name: tool['name'], - config: { - description: tool['description'], - properties: tool['properties'], - secrets: tool['secrets'], - implementation: tool['implementation'] - } - ) - end - end - - def functions - @tools.map do |tool| - properties = {} - tool.properties.each do |property_name, property_details| - properties[property_name] = { - type: property_details[:type], - description: property_details[:description] - } - end - required = tool.properties.select { |_, details| details[:required] == true }.keys - { - type: 'function', - function: { - name: tool.name, - description: tool.description, - parameters: { type: 'object', properties: properties, required: required } - } - } - end - end - - def push_to_messages(message) - @logger.info("\n\n\nMessage: #{message}\n\n\n") - @messages << message - end -end diff --git a/enterprise/lib/captain/llm_service.rb b/enterprise/lib/captain/llm_service.rb deleted file mode 100644 index f0faa1002..000000000 --- a/enterprise/lib/captain/llm_service.rb +++ /dev/null @@ -1,64 +0,0 @@ -require 'openai' - -class Captain::LlmService - def initialize(config) - @client = OpenAI::Client.new( - access_token: config[:api_key], - log_errors: Rails.env.development? - ) - @logger = Rails.logger - end - - def call(messages, functions = []) - openai_params = { - model: 'gpt-4o', - response_format: { type: 'json_object' }, - messages: messages - } - openai_params[:tools] = functions if functions.any? - - response = @client.chat(parameters: openai_params) - handle_response(response) - rescue StandardError => e - handle_error(e) - end - - private - - def handle_response(response) - if response['choices'][0]['message']['tool_calls'] - handle_tool_calls(response) - else - handle_direct_response(response) - end - end - - def handle_tool_calls(response) - tool_call = response['choices'][0]['message']['tool_calls'][0] - { - tool_call: tool_call, - output: nil, - stop: false - } - end - - def handle_direct_response(response) - content = response.dig('choices', 0, 'message', 'content').strip - parsed = JSON.parse(content) - - { - output: parsed['result'] || parsed['thought_process'], - stop: parsed['stop'] || false - } - rescue JSON::ParserError => e - handle_error(e, content) - end - - def handle_error(error, content = nil) - @logger.error("LLM call failed: #{error.message}") - @logger.error(error.backtrace.join("\n")) - @logger.error("Content: #{content}") if content - - { output: 'Error occurred, retrying', stop: false } - end -end diff --git a/enterprise/lib/captain/tool.rb b/enterprise/lib/captain/tool.rb deleted file mode 100644 index b3ed6f69f..000000000 --- a/enterprise/lib/captain/tool.rb +++ /dev/null @@ -1,66 +0,0 @@ -class Captain::Tool - class InvalidImplementationError < StandardError; end - class InvalidSecretsError < StandardError; end - class ExecutionError < StandardError; end - - REQUIRED_PROPERTIES = %w[name description properties secrets].freeze - - attr_reader :name, :description, :properties, :secrets, :implementation, :memory - - def initialize(name:, config:) - @name = name - @description = config[:description] - @properties = config[:properties] - @secrets = config[:secrets] || [] - @implementation = config[:implementation] - @memory = config[:memory] || {} - end - - def register_method(&block) - @implementation = block - end - - def execute(input, provided_secrets = {}) - validate_secrets!(provided_secrets) - validate_input!(input) - - raise ExecutionError, 'No implementation registered' unless @implementation - - instance_exec(input, provided_secrets, memory, &@implementation) - rescue StandardError => e - raise ExecutionError, "Execution failed: #{e.message}" - end - - private - - def validate_config!(config) - missing_keys = REQUIRED_PROPERTIES - config.keys - return if missing_keys.empty? - - raise InvalidImplementationError, - "Missing required properties: #{missing_keys.join(', ')}" - end - - def validate_secrets!(provided_secrets) - required_secrets = secrets.map!(&:to_sym) - missing_secrets = required_secrets - provided_secrets.keys - - return if missing_secrets.empty? - - raise InvalidSecretsError, "Missing required secrets: #{missing_secrets.join(', ')}" - end - - def validate_input!(input) - properties.each do |property, constraints| - validate_property!(input, property, constraints) - end - end - - def validate_property!(input, property, constraints) - value = input[property.to_sym] - - raise ArgumentError, "Missing required property: #{property}" if constraints['required'] && value.nil? - - true - end -end diff --git a/lib/integrations/llm_instrumentation.rb b/lib/integrations/llm_instrumentation.rb index aff41fbce..34281c738 100644 --- a/lib/integrations/llm_instrumentation.rb +++ b/lib/integrations/llm_instrumentation.rb @@ -7,14 +7,6 @@ module Integrations::LlmInstrumentation include Integrations::LlmInstrumentationHelpers include Integrations::LlmInstrumentationSpans - PROVIDER_PREFIXES = { - 'openai' => %w[gpt- o1 o3 o4 text-embedding- whisper- tts-], - 'anthropic' => %w[claude-], - 'google' => %w[gemini-], - 'mistral' => %w[mistral- codestral-], - 'deepseek' => %w[deepseek-] - }.freeze - def instrument_llm_call(params) return yield unless ChatwootApp.otel_enabled? @@ -66,16 +58,57 @@ module Integrations::LlmInstrumentation end end - def determine_provider(model_name) - return 'openai' if model_name.blank? + def instrument_embedding_call(params) + return yield unless ChatwootApp.otel_enabled? - model = model_name.to_s.downcase - - PROVIDER_PREFIXES.each do |provider, prefixes| - return provider if prefixes.any? { |prefix| model.start_with?(prefix) } + instrument_with_span(params[:span_name] || 'llm.embedding', params) do |span, track_result| + set_embedding_span_attributes(span, params) + result = yield + track_result.call(result) + set_embedding_result_attributes(span, result) + result end + end - 'openai' + def instrument_audio_transcription(params) + return yield unless ChatwootApp.otel_enabled? + + instrument_with_span(params[:span_name] || 'llm.audio.transcription', params) do |span, track_result| + set_audio_transcription_span_attributes(span, params) + result = yield + track_result.call(result) + set_transcription_result_attributes(span, result) + result + end + end + + def instrument_moderation_call(params) + return yield unless ChatwootApp.otel_enabled? + + instrument_with_span(params[:span_name] || 'llm.moderation', params) do |span, track_result| + set_moderation_span_attributes(span, params) + result = yield + track_result.call(result) + set_moderation_result_attributes(span, result) + result + end + end + + def instrument_with_span(span_name, params, &) + result = nil + executed = false + tracer.in_span(span_name) do |span| + track_result = lambda do |r| + executed = true + result = r + end + yield(span, track_result) + end + rescue StandardError => e + ChatwootExceptionTracker.new(e, account: resolve_account(params)).capture_exception + raise unless executed + + result end private @@ -86,36 +119,4 @@ module Integrations::LlmInstrumentation nil end - - def setup_span_attributes(span, params) - set_request_attributes(span, params) - set_prompt_messages(span, params[:messages]) - set_metadata_attributes(span, params) - end - - def record_completion(span, result) - if result.respond_to?(:content) - span.set_attribute(ATTR_GEN_AI_COMPLETION_ROLE, result.role.to_s) if result.respond_to?(:role) - span.set_attribute(ATTR_GEN_AI_COMPLETION_CONTENT, result.content.to_s) - elsif result.is_a?(Hash) - set_completion_attributes(span, result) if result.is_a?(Hash) - end - end - - def set_request_attributes(span, params) - provider = determine_provider(params[:model]) - span.set_attribute(ATTR_GEN_AI_PROVIDER, provider) - span.set_attribute(ATTR_GEN_AI_REQUEST_MODEL, params[:model]) - span.set_attribute(ATTR_GEN_AI_REQUEST_TEMPERATURE, params[:temperature]) if params[:temperature] - end - - def set_prompt_messages(span, messages) - messages.each_with_index do |msg, idx| - role = msg[:role] || msg['role'] - content = msg[:content] || msg['content'] - - span.set_attribute(format(ATTR_GEN_AI_PROMPT_ROLE, idx), role) - span.set_attribute(format(ATTR_GEN_AI_PROMPT_CONTENT, idx), content.to_s) - end - end end diff --git a/lib/integrations/llm_instrumentation_completion_helpers.rb b/lib/integrations/llm_instrumentation_completion_helpers.rb new file mode 100644 index 000000000..50e071119 --- /dev/null +++ b/lib/integrations/llm_instrumentation_completion_helpers.rb @@ -0,0 +1,88 @@ +# frozen_string_literal: true + +module Integrations::LlmInstrumentationCompletionHelpers + include Integrations::LlmInstrumentationConstants + + private + + def set_embedding_span_attributes(span, params) + span.set_attribute(ATTR_GEN_AI_PROVIDER, determine_provider(params[:model])) + span.set_attribute(ATTR_GEN_AI_REQUEST_MODEL, params[:model]) + span.set_attribute('embedding.input_length', params[:input]&.length || 0) + span.set_attribute(ATTR_LANGFUSE_OBSERVATION_INPUT, params[:input].to_s) + set_common_span_metadata(span, params) + end + + def set_audio_transcription_span_attributes(span, params) + span.set_attribute(ATTR_GEN_AI_PROVIDER, 'openai') + span.set_attribute(ATTR_GEN_AI_REQUEST_MODEL, params[:model] || 'whisper-1') + span.set_attribute('audio.duration_seconds', params[:duration]) if params[:duration] + span.set_attribute(ATTR_LANGFUSE_OBSERVATION_INPUT, params[:file_path].to_s) if params[:file_path] + set_common_span_metadata(span, params) + end + + def set_moderation_span_attributes(span, params) + span.set_attribute(ATTR_GEN_AI_PROVIDER, 'openai') + span.set_attribute(ATTR_GEN_AI_REQUEST_MODEL, params[:model] || 'text-moderation-latest') + span.set_attribute('moderation.input_length', params[:input]&.length || 0) + span.set_attribute(ATTR_LANGFUSE_OBSERVATION_INPUT, params[:input].to_s) + set_common_span_metadata(span, params) + end + + def set_common_span_metadata(span, params) + span.set_attribute(ATTR_LANGFUSE_USER_ID, params[:account_id].to_s) if params[:account_id] + span.set_attribute(ATTR_LANGFUSE_TAGS, [params[:feature_name]].to_json) if params[:feature_name] + end + + def set_embedding_result_attributes(span, result) + span.set_attribute('embedding.dimensions', result&.length || 0) if result.is_a?(Array) + span.set_attribute(ATTR_LANGFUSE_OBSERVATION_OUTPUT, "[#{result&.length || 0} dimensions]") + end + + def set_transcription_result_attributes(span, result) + transcribed_text = result.respond_to?(:text) ? result.text : result.to_s + span.set_attribute('transcription.length', transcribed_text&.length || 0) + span.set_attribute(ATTR_LANGFUSE_OBSERVATION_OUTPUT, transcribed_text.to_s) + end + + def set_moderation_result_attributes(span, result) + span.set_attribute('moderation.flagged', result.flagged?) if result.respond_to?(:flagged?) + span.set_attribute('moderation.categories', result.flagged_categories.to_json) if result.respond_to?(:flagged_categories) + output = { + flagged: result.respond_to?(:flagged?) ? result.flagged? : nil, + categories: result.respond_to?(:flagged_categories) ? result.flagged_categories : [] + } + span.set_attribute(ATTR_LANGFUSE_OBSERVATION_OUTPUT, output.to_json) + end + + def set_completion_attributes(span, result) + set_completion_message(span, result) + set_usage_metrics(span, result) + set_error_attributes(span, result) + end + + def set_completion_message(span, result) + message = result[:message] || result.dig('choices', 0, 'message', 'content') + return if message.blank? + + span.set_attribute(ATTR_GEN_AI_COMPLETION_ROLE, 'assistant') + span.set_attribute(ATTR_GEN_AI_COMPLETION_CONTENT, message) + end + + def set_usage_metrics(span, result) + usage = result[:usage] || result['usage'] + return if usage.blank? + + span.set_attribute(ATTR_GEN_AI_USAGE_INPUT_TOKENS, usage['prompt_tokens']) if usage['prompt_tokens'] + span.set_attribute(ATTR_GEN_AI_USAGE_OUTPUT_TOKENS, usage['completion_tokens']) if usage['completion_tokens'] + span.set_attribute(ATTR_GEN_AI_USAGE_TOTAL_TOKENS, usage['total_tokens']) if usage['total_tokens'] + end + + def set_error_attributes(span, result) + error = result[:error] || result['error'] + return if error.blank? + + span.set_attribute(ATTR_GEN_AI_RESPONSE_ERROR, error.to_json) + span.status = OpenTelemetry::Trace::Status.error(error.to_s.truncate(1000)) + end +end diff --git a/lib/integrations/llm_instrumentation_helpers.rb b/lib/integrations/llm_instrumentation_helpers.rb index c03e3e9c7..129092ed4 100644 --- a/lib/integrations/llm_instrumentation_helpers.rb +++ b/lib/integrations/llm_instrumentation_helpers.rb @@ -2,38 +2,52 @@ module Integrations::LlmInstrumentationHelpers include Integrations::LlmInstrumentationConstants + include Integrations::LlmInstrumentationCompletionHelpers + + def determine_provider(model_name) + return 'openai' if model_name.blank? + + model = model_name.to_s.downcase + + LlmConstants::PROVIDER_PREFIXES.each do |provider, prefixes| + return provider if prefixes.any? { |prefix| model.start_with?(prefix) } + end + + 'openai' + end private - def set_completion_attributes(span, result) - set_completion_message(span, result) - set_usage_metrics(span, result) - set_error_attributes(span, result) + def setup_span_attributes(span, params) + set_request_attributes(span, params) + set_prompt_messages(span, params[:messages]) + set_metadata_attributes(span, params) end - def set_completion_message(span, result) - message = result[:message] || result.dig('choices', 0, 'message', 'content') - return if message.blank? - - span.set_attribute(ATTR_GEN_AI_COMPLETION_ROLE, 'assistant') - span.set_attribute(ATTR_GEN_AI_COMPLETION_CONTENT, message) + def record_completion(span, result) + if result.respond_to?(:content) + span.set_attribute(ATTR_GEN_AI_COMPLETION_ROLE, result.role.to_s) if result.respond_to?(:role) + span.set_attribute(ATTR_GEN_AI_COMPLETION_CONTENT, result.content.to_s) + elsif result.is_a?(Hash) + set_completion_attributes(span, result) + end end - def set_usage_metrics(span, result) - usage = result[:usage] || result['usage'] - return if usage.blank? - - span.set_attribute(ATTR_GEN_AI_USAGE_INPUT_TOKENS, usage['prompt_tokens']) if usage['prompt_tokens'] - span.set_attribute(ATTR_GEN_AI_USAGE_OUTPUT_TOKENS, usage['completion_tokens']) if usage['completion_tokens'] - span.set_attribute(ATTR_GEN_AI_USAGE_TOTAL_TOKENS, usage['total_tokens']) if usage['total_tokens'] + def set_request_attributes(span, params) + provider = determine_provider(params[:model]) + span.set_attribute(ATTR_GEN_AI_PROVIDER, provider) + span.set_attribute(ATTR_GEN_AI_REQUEST_MODEL, params[:model]) + span.set_attribute(ATTR_GEN_AI_REQUEST_TEMPERATURE, params[:temperature]) if params[:temperature] end - def set_error_attributes(span, result) - error = result[:error] || result['error'] - return if error.blank? + def set_prompt_messages(span, messages) + messages.each_with_index do |msg, idx| + role = msg[:role] || msg['role'] + content = msg[:content] || msg['content'] - span.set_attribute(ATTR_GEN_AI_RESPONSE_ERROR, error.to_json) - span.status = OpenTelemetry::Trace::Status.error(error.to_s.truncate(1000)) + span.set_attribute(format(ATTR_GEN_AI_PROMPT_ROLE, idx), role) + span.set_attribute(format(ATTR_GEN_AI_PROMPT_CONTENT, idx), content.to_s) + end end def set_metadata_attributes(span, params) diff --git a/lib/integrations/llm_instrumentation_spans.rb b/lib/integrations/llm_instrumentation_spans.rb index 9199aaa10..824b6aa4a 100644 --- a/lib/integrations/llm_instrumentation_spans.rb +++ b/lib/integrations/llm_instrumentation_spans.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require 'opentelemetry_config' -require_relative 'llm_instrumentation_constants' module Integrations::LlmInstrumentationSpans include Integrations::LlmInstrumentationConstants diff --git a/lib/integrations/openai/processor_service.rb b/lib/integrations/openai/processor_service.rb index 0a0dfa8ae..2f0180701 100644 --- a/lib/integrations/openai/processor_service.rb +++ b/lib/integrations/openai/processor_service.rb @@ -77,21 +77,22 @@ class Integrations::Openai::ProcessorService < Integrations::LlmBaseService end def add_message_if_within_limit(character_count, message, messages, in_array_format) - if valid_message?(message, character_count) - add_message_to_list(message, messages, in_array_format) - character_count += message.content.length + content = message.content_for_llm + if valid_message?(content, character_count) + add_message_to_list(message, messages, in_array_format, content) + character_count += content.length [character_count, true] else [character_count, false] end end - def valid_message?(message, character_count) - message.content.present? && character_count + message.content.length <= TOKEN_LIMIT + def valid_message?(content, character_count) + content.present? && character_count + content.length <= TOKEN_LIMIT end - def add_message_to_list(message, messages, in_array_format) - formatted_message = format_message(message, in_array_format) + def add_message_to_list(message, messages, in_array_format, content) + formatted_message = format_message(message, in_array_format, content) messages.prepend(formatted_message) end @@ -99,17 +100,17 @@ class Integrations::Openai::ProcessorService < Integrations::LlmBaseService in_array_format ? [] : '' end - def format_message(message, in_array_format) - in_array_format ? format_message_in_array(message) : format_message_in_string(message) + def format_message(message, in_array_format, content) + in_array_format ? format_message_in_array(message, content) : format_message_in_string(message, content) end - def format_message_in_array(message) - { role: (message.incoming? ? 'user' : 'assistant'), content: message.content } + def format_message_in_array(message, content) + { role: (message.incoming? ? 'user' : 'assistant'), content: content } end - def format_message_in_string(message) + def format_message_in_string(message, content) sender_type = message.incoming? ? 'Customer' : 'Agent' - "#{sender_type} #{message.sender&.name} : #{message.content}\n" + "#{sender_type} #{message.sender&.name} : #{content}\n" end def summarize_body diff --git a/lib/llm_constants.rb b/lib/llm_constants.rb new file mode 100644 index 000000000..054b775a5 --- /dev/null +++ b/lib/llm_constants.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module LlmConstants + DEFAULT_MODEL = 'gpt-4.1-mini' + DEFAULT_EMBEDDING_MODEL = 'text-embedding-3-small' + PDF_PROCESSING_MODEL = 'gpt-4.1-mini' + + OPENAI_API_ENDPOINT = 'https://api.openai.com' + + PROVIDER_PREFIXES = { + 'openai' => %w[gpt- o1 o3 o4 text-embedding- whisper- tts-], + 'anthropic' => %w[claude-], + 'google' => %w[gemini-], + 'mistral' => %w[mistral- codestral-], + 'deepseek' => %w[deepseek-] + }.freeze +end diff --git a/lib/open_ai_constants.rb b/lib/open_ai_constants.rb deleted file mode 100644 index 2094567a7..000000000 --- a/lib/open_ai_constants.rb +++ /dev/null @@ -1,8 +0,0 @@ -# frozen_string_literal: true - -module OpenAiConstants - DEFAULT_MODEL = 'gpt-4.1-mini' - DEFAULT_ENDPOINT = 'https://api.openai.com' - DEFAULT_EMBEDDING_MODEL = 'text-embedding-3-small' - PDF_PROCESSING_MODEL = 'gpt-4.1-mini' -end diff --git a/spec/enterprise/jobs/captain/documents/response_builder_job_spec.rb b/spec/enterprise/jobs/captain/documents/response_builder_job_spec.rb index 73b67ee27..c3e5eab1c 100644 --- a/spec/enterprise/jobs/captain/documents/response_builder_job_spec.rb +++ b/spec/enterprise/jobs/captain/documents/response_builder_job_spec.rb @@ -13,7 +13,7 @@ RSpec.describe Captain::Documents::ResponseBuilderJob, type: :job do before do allow(Captain::Llm::FaqGeneratorService).to receive(:new) - .with(document.content, document.account.locale_english_name) + .with(document.content, document.account.locale_english_name, account_id: document.account_id) .and_return(faq_generator) allow(faq_generator).to receive(:generate).and_return(faqs) end @@ -52,7 +52,7 @@ RSpec.describe Captain::Documents::ResponseBuilderJob, type: :job do before do allow(Captain::Llm::FaqGeneratorService).to receive(:new) - .with(spanish_document.content, 'portuguese') + .with(spanish_document.content, 'portuguese', account_id: spanish_document.account_id) .and_return(spanish_faq_generator) allow(spanish_faq_generator).to receive(:generate).and_return(faqs) end @@ -61,7 +61,7 @@ RSpec.describe Captain::Documents::ResponseBuilderJob, type: :job do described_class.new.perform(spanish_document) expect(Captain::Llm::FaqGeneratorService).to have_received(:new) - .with(spanish_document.content, 'portuguese') + .with(spanish_document.content, 'portuguese', account_id: spanish_document.account_id) end end diff --git a/spec/enterprise/services/captain/llm/conversation_faq_service_spec.rb b/spec/enterprise/services/captain/llm/conversation_faq_service_spec.rb index ee993da37..0ab7f37bf 100644 --- a/spec/enterprise/services/captain/llm/conversation_faq_service_spec.rb +++ b/spec/enterprise/services/captain/llm/conversation_faq_service_spec.rb @@ -4,49 +4,42 @@ RSpec.describe Captain::Llm::ConversationFaqService do let(:captain_assistant) { create(:captain_assistant) } let(:conversation) { create(:conversation, first_reply_created_at: Time.zone.now) } let(:service) { described_class.new(captain_assistant, conversation) } - let(:client) { instance_double(OpenAI::Client) } let(:embedding_service) { instance_double(Captain::Llm::EmbeddingService) } + let(:mock_chat) { instance_double(RubyLLM::Chat) } + let(:sample_faqs) do + [ + { 'question' => 'What is the purpose?', 'answer' => 'To help users.' }, + { 'question' => 'How does it work?', 'answer' => 'Through AI.' } + ] + end + let(:mock_response) do + instance_double(RubyLLM::Message, content: { faqs: sample_faqs }.to_json) + end before do - create(:installation_config) { create(:installation_config, name: 'CAPTAIN_OPEN_AI_API_KEY', value: 'test-key') } - allow(OpenAI::Client).to receive(:new).and_return(client) + create(:installation_config, name: 'CAPTAIN_OPEN_AI_API_KEY', value: 'test-key') allow(Captain::Llm::EmbeddingService).to receive(:new).and_return(embedding_service) + allow(RubyLLM).to receive(:chat).and_return(mock_chat) + allow(mock_chat).to receive(:with_temperature).and_return(mock_chat) + allow(mock_chat).to receive(:with_params).and_return(mock_chat) + allow(mock_chat).to receive(:with_instructions).and_return(mock_chat) + allow(mock_chat).to receive(:ask).and_return(mock_response) end describe '#generate_and_deduplicate' do - let(:sample_faqs) do - [ - { 'question' => 'What is the purpose?', 'answer' => 'To help users.' }, - { 'question' => 'How does it work?', 'answer' => 'Through AI.' } - ] - end - - let(:openai_response) do - { - 'choices' => [ - { - 'message' => { - 'content' => { faqs: sample_faqs }.to_json - } - } - ] - } - end - context 'when successful' do before do - allow(client).to receive(:chat).and_return(openai_response) allow(embedding_service).to receive(:get_embedding).and_return([0.1, 0.2, 0.3]) allow(captain_assistant.responses).to receive(:nearest_neighbors).and_return([]) end - it 'creates new FAQs' do + it 'creates new FAQs for valid conversation content' do expect do service.generate_and_deduplicate end.to change(captain_assistant.responses, :count).by(2) end - it 'saves the correct FAQ content' do + it 'saves FAQs with pending status linked to conversation' do service.generate_and_deduplicate expect( captain_assistant.responses.pluck(:question, :answer, :status, :documentable_id) @@ -63,6 +56,11 @@ RSpec.describe Captain::Llm::ConversationFaqService do it 'returns an empty array without generating FAQs' do expect(service.generate_and_deduplicate).to eq([]) end + + it 'does not call the LLM API' do + expect(RubyLLM).not_to receive(:chat) + service.generate_and_deduplicate + end end context 'when finding duplicates' do @@ -70,9 +68,6 @@ RSpec.describe Captain::Llm::ConversationFaqService do create(:captain_assistant_response, assistant: captain_assistant, question: 'Similar question', answer: 'Similar answer') end let(:similar_neighbor) do - # Using OpenStruct here to mock as the Captain:AssistantResponse does not implement - # neighbor_distance as a method or attribute rather it is returned directly - # from SQL query in neighbor gem OpenStruct.new( id: 1, question: existing_response.question, @@ -82,87 +77,78 @@ RSpec.describe Captain::Llm::ConversationFaqService do end before do - allow(client).to receive(:chat).and_return(openai_response) allow(embedding_service).to receive(:get_embedding).and_return([0.1, 0.2, 0.3]) allow(captain_assistant.responses).to receive(:nearest_neighbors).and_return([similar_neighbor]) end - it 'filters out duplicate FAQs' do + it 'filters out duplicate FAQs based on embedding similarity' do expect do service.generate_and_deduplicate end.not_to change(captain_assistant.responses, :count) end end - context 'when OpenAI API fails' do + context 'when LLM API fails' do before do - allow(client).to receive(:chat).and_raise(OpenAI::Error.new('API Error')) + allow(mock_chat).to receive(:ask).and_raise(RubyLLM::Error.new(nil, 'API Error')) + allow(Rails.logger).to receive(:error) end - it 'handles the error and returns empty array' do - expect(Rails.logger).to receive(:error).with('OpenAI API Error: API Error') + it 'returns empty array and logs the error' do + expect(Rails.logger).to receive(:error).with('LLM API Error: API Error') expect(service.generate_and_deduplicate).to eq([]) end end context 'when JSON parsing fails' do let(:invalid_response) do - { - 'choices' => [ - { - 'message' => { - 'content' => 'invalid json' - } - } - ] - } + instance_double(RubyLLM::Message, content: 'invalid json') end before do - allow(client).to receive(:chat).and_return(invalid_response) + allow(mock_chat).to receive(:ask).and_return(invalid_response) end - it 'handles JSON parsing errors' do + it 'handles JSON parsing errors gracefully' do expect(Rails.logger).to receive(:error).with(/Error in parsing GPT processed response:/) expect(service.generate_and_deduplicate).to eq([]) end end + + context 'when response content is nil' do + let(:nil_response) do + instance_double(RubyLLM::Message, content: nil) + end + + before do + allow(mock_chat).to receive(:ask).and_return(nil_response) + end + + it 'returns empty array' do + expect(service.generate_and_deduplicate).to eq([]) + end + end end - describe '#chat_parameters' do - it 'includes correct model and response format' do - params = service.send(:chat_parameters) - expect(params[:model]).to eq('gpt-4o-mini') - expect(params[:response_format]).to eq({ type: 'json_object' }) - end - - it 'includes system prompt and conversation content' do - allow(Captain::Llm::SystemPromptsService).to receive(:conversation_faq_generator).and_return('system prompt') - params = service.send(:chat_parameters) - - expect(params[:messages]).to include( - { role: 'system', content: 'system prompt' }, - { role: 'user', content: conversation.to_llm_text } - ) - end - + describe 'language handling' do context 'when conversation has different language' do let(:account) { create(:account, locale: 'fr') } let(:conversation) do - create(:conversation, account: account, - first_reply_created_at: Time.zone.now) + create(:conversation, account: account, first_reply_created_at: Time.zone.now) end - it 'includes system prompt with correct language' do - allow(Captain::Llm::SystemPromptsService).to receive(:conversation_faq_generator) + before do + allow(embedding_service).to receive(:get_embedding).and_return([0.1, 0.2, 0.3]) + allow(captain_assistant.responses).to receive(:nearest_neighbors).and_return([]) + end + + it 'uses account language for system prompt' do + expect(Captain::Llm::SystemPromptsService).to receive(:conversation_faq_generator) .with('french') - .and_return('system prompt in french') + .at_least(:once) + .and_call_original - params = service.send(:chat_parameters) - - expect(params[:messages]).to include( - { role: 'system', content: 'system prompt in french' } - ) + service.generate_and_deduplicate end end end diff --git a/spec/enterprise/services/captain/llm/faq_generator_service_spec.rb b/spec/enterprise/services/captain/llm/faq_generator_service_spec.rb index 7d799dc18..003d5b715 100644 --- a/spec/enterprise/services/captain/llm/faq_generator_service_spec.rb +++ b/spec/enterprise/services/captain/llm/faq_generator_service_spec.rb @@ -4,58 +4,40 @@ RSpec.describe Captain::Llm::FaqGeneratorService do let(:content) { 'Sample content for FAQ generation' } let(:language) { 'english' } let(:service) { described_class.new(content, language) } - let(:client) { instance_double(OpenAI::Client) } + let(:mock_chat) { instance_double(RubyLLM::Chat) } + let(:sample_faqs) do + [ + { 'question' => 'What is this service?', 'answer' => 'It generates FAQs.' }, + { 'question' => 'How does it work?', 'answer' => 'Using AI technology.' } + ] + end + let(:mock_response) do + instance_double(RubyLLM::Message, content: { faqs: sample_faqs }.to_json) + end before do create(:installation_config, name: 'CAPTAIN_OPEN_AI_API_KEY', value: 'test-key') - allow(OpenAI::Client).to receive(:new).and_return(client) + allow(RubyLLM).to receive(:chat).and_return(mock_chat) + allow(mock_chat).to receive(:with_temperature).and_return(mock_chat) + allow(mock_chat).to receive(:with_params).and_return(mock_chat) + allow(mock_chat).to receive(:with_instructions).and_return(mock_chat) + allow(mock_chat).to receive(:ask).and_return(mock_response) end describe '#generate' do - let(:sample_faqs) do - [ - { 'question' => 'What is this service?', 'answer' => 'It generates FAQs.' }, - { 'question' => 'How does it work?', 'answer' => 'Using AI technology.' } - ] - end - - let(:openai_response) do - { - 'choices' => [ - { - 'message' => { - 'content' => { faqs: sample_faqs }.to_json - } - } - ] - } - end - context 'when successful' do - before do - allow(client).to receive(:chat).and_return(openai_response) - allow(Captain::Llm::SystemPromptsService).to receive(:faq_generator).and_return('system prompt') - end - - it 'returns parsed FAQs' do + it 'returns parsed FAQs from the LLM response' do result = service.generate expect(result).to eq(sample_faqs) end - it 'calls OpenAI client with chat parameters' do - expect(client).to receive(:chat).with(parameters: hash_including( - model: 'gpt-4o-mini', - response_format: { type: 'json_object' }, - messages: array_including( - hash_including(role: 'system'), - hash_including(role: 'user', content: content) - ) - )) + it 'sends content to LLM with JSON response format' do + expect(mock_chat).to receive(:with_params).with(response_format: { type: 'json_object' }).and_return(mock_chat) service.generate end - it 'calls SystemPromptsService with correct language' do - expect(Captain::Llm::SystemPromptsService).to receive(:faq_generator).with(language) + it 'uses SystemPromptsService with the specified language' do + expect(Captain::Llm::SystemPromptsService).to receive(:faq_generator).with(language).at_least(:once).and_call_original service.generate end end @@ -63,23 +45,57 @@ RSpec.describe Captain::Llm::FaqGeneratorService do context 'with different language' do let(:language) { 'spanish' } - before do - allow(client).to receive(:chat).and_return(openai_response) - end - it 'passes the correct language to SystemPromptsService' do - expect(Captain::Llm::SystemPromptsService).to receive(:faq_generator).with('spanish') + expect(Captain::Llm::SystemPromptsService).to receive(:faq_generator).with('spanish').at_least(:once).and_call_original service.generate end end - context 'when OpenAI API fails' do + context 'when LLM API fails' do before do - allow(client).to receive(:chat).and_raise(OpenAI::Error.new('API Error')) + allow(mock_chat).to receive(:ask).and_raise(RubyLLM::Error.new(nil, 'API Error')) + allow(Rails.logger).to receive(:error) end - it 'handles the error and returns empty array' do - expect(Rails.logger).to receive(:error).with('OpenAI API Error: API Error') + it 'returns empty array and logs the error' do + expect(Rails.logger).to receive(:error).with('LLM API Error: API Error') + expect(service.generate).to eq([]) + end + end + + context 'when response content is nil' do + let(:nil_response) { instance_double(RubyLLM::Message, content: nil) } + + before do + allow(mock_chat).to receive(:ask).and_return(nil_response) + end + + it 'returns empty array' do + expect(service.generate).to eq([]) + end + end + + context 'when JSON parsing fails' do + let(:invalid_response) { instance_double(RubyLLM::Message, content: 'invalid json') } + + before do + allow(mock_chat).to receive(:ask).and_return(invalid_response) + end + + it 'logs error and returns empty array' do + expect(Rails.logger).to receive(:error).with(/Error in parsing GPT processed response:/) + expect(service.generate).to eq([]) + end + end + + context 'when response is missing faqs key' do + let(:missing_key_response) { instance_double(RubyLLM::Message, content: '{"data": []}') } + + before do + allow(mock_chat).to receive(:ask).and_return(missing_key_response) + end + + it 'returns empty array via KeyError rescue' do expect(service.generate).to eq([]) end end diff --git a/spec/enterprise/services/captain/onboarding/website_analyzer_service_spec.rb b/spec/enterprise/services/captain/onboarding/website_analyzer_service_spec.rb index a2735bd69..4dec4c051 100644 --- a/spec/enterprise/services/captain/onboarding/website_analyzer_service_spec.rb +++ b/spec/enterprise/services/captain/onboarding/website_analyzer_service_spec.rb @@ -4,40 +4,38 @@ RSpec.describe Captain::Onboarding::WebsiteAnalyzerService do let(:website_url) { 'https://example.com' } let(:service) { described_class.new(website_url) } let(:mock_crawler) { instance_double(Captain::Tools::SimplePageCrawlService) } - let(:mock_client) { instance_double(OpenAI::Client) } + let(:mock_chat) { instance_double(RubyLLM::Chat) } + let(:business_info) do + { + 'business_name' => 'Example Corp', + 'suggested_assistant_name' => 'Alex from Example Corp', + 'description' => 'You specialize in helping customers with business solutions and support' + } + end + let(:mock_response) do + instance_double(RubyLLM::Message, content: business_info.to_json) + end before do create(:installation_config, name: 'CAPTAIN_OPEN_AI_API_KEY', value: 'test-key') allow(Captain::Tools::SimplePageCrawlService).to receive(:new).and_return(mock_crawler) - allow(service).to receive(:client).and_return(mock_client) - allow(service).to receive(:model).and_return('gpt-3.5-turbo') + allow(RubyLLM).to receive(:chat).and_return(mock_chat) + allow(mock_chat).to receive(:with_temperature).and_return(mock_chat) + allow(mock_chat).to receive(:with_params).and_return(mock_chat) + allow(mock_chat).to receive(:with_instructions).and_return(mock_chat) + allow(mock_chat).to receive(:ask).and_return(mock_response) end describe '#analyze' do - context 'when website content is available and OpenAI call is successful' do - let(:openai_response) do - { - 'choices' => [{ - 'message' => { - 'content' => { - 'business_name' => 'Example Corp', - 'suggested_assistant_name' => 'Alex from Example Corp', - 'description' => 'You specialize in helping customers with business solutions and support' - }.to_json - } - }] - } - end - + context 'when website content is available and LLM call is successful' do before do allow(mock_crawler).to receive(:body_text_content).and_return('Welcome to Example Corp') allow(mock_crawler).to receive(:page_title).and_return('Example Corp - Home') allow(mock_crawler).to receive(:meta_description).and_return('Leading provider of business solutions') allow(mock_crawler).to receive(:favicon_url).and_return('https://example.com/favicon.ico') - allow(mock_client).to receive(:chat).and_return(openai_response) end - it 'returns success' do + it 'returns successful analysis with extracted business info' do result = service.analyze expect(result[:success]).to be true @@ -49,14 +47,19 @@ RSpec.describe Captain::Onboarding::WebsiteAnalyzerService do favicon_url: 'https://example.com/favicon.ico' ) end + + it 'uses low temperature for deterministic analysis' do + expect(mock_chat).to receive(:with_temperature).with(0.1).and_return(mock_chat) + service.analyze + end end - context 'when website content is errored' do + context 'when website content fetch raises an error' do before do allow(mock_crawler).to receive(:body_text_content).and_raise(StandardError, 'Network error') end - it 'returns error' do + it 'returns error response' do result = service.analyze expect(result[:success]).to be false @@ -64,14 +67,14 @@ RSpec.describe Captain::Onboarding::WebsiteAnalyzerService do end end - context 'when website content is unavailable' do + context 'when website content is empty' do before do allow(mock_crawler).to receive(:body_text_content).and_return('') allow(mock_crawler).to receive(:page_title).and_return('') allow(mock_crawler).to receive(:meta_description).and_return('') end - it 'returns error' do + it 'returns error for unavailable content' do result = service.analyze expect(result[:success]).to be false @@ -79,21 +82,57 @@ RSpec.describe Captain::Onboarding::WebsiteAnalyzerService do end end - context 'when OpenAI error' do + context 'when LLM call fails' do before do allow(mock_crawler).to receive(:body_text_content).and_return('Welcome to Example Corp') allow(mock_crawler).to receive(:page_title).and_return('Example Corp - Home') allow(mock_crawler).to receive(:meta_description).and_return('Leading provider of business solutions') allow(mock_crawler).to receive(:favicon_url).and_return('https://example.com/favicon.ico') - allow(mock_client).to receive(:chat).and_raise(StandardError, 'API error') + allow(mock_chat).to receive(:ask).and_raise(StandardError, 'API error') end - it 'returns error' do + it 'returns error response with message' do result = service.analyze expect(result[:success]).to be false expect(result[:error]).to eq('API error') end end + + context 'when LLM returns invalid JSON' do + let(:invalid_response) { instance_double(RubyLLM::Message, content: 'not valid json') } + + before do + allow(mock_crawler).to receive(:body_text_content).and_return('Welcome to Example Corp') + allow(mock_crawler).to receive(:page_title).and_return('Example Corp - Home') + allow(mock_crawler).to receive(:meta_description).and_return('Leading provider of business solutions') + allow(mock_crawler).to receive(:favicon_url).and_return('https://example.com/favicon.ico') + allow(mock_chat).to receive(:ask).and_return(invalid_response) + end + + it 'returns error for parsing failure' do + result = service.analyze + + expect(result[:success]).to be false + expect(result[:error]).to eq('Failed to parse business information from website') + end + end + + context 'when URL normalization is needed' do + let(:website_url) { 'example.com' } + + before do + allow(mock_crawler).to receive(:body_text_content).and_return('Welcome') + allow(mock_crawler).to receive(:page_title).and_return('Example') + allow(mock_crawler).to receive(:meta_description).and_return('Description') + allow(mock_crawler).to receive(:favicon_url).and_return(nil) + end + + it 'normalizes URL by adding https prefix' do + result = service.analyze + + expect(result[:data][:website_url]).to eq('https://example.com') + end + end end end diff --git a/spec/enterprise/services/internal/account_analysis/content_evaluator_service_spec.rb b/spec/enterprise/services/internal/account_analysis/content_evaluator_service_spec.rb index d7bf26c35..f959a9afa 100644 --- a/spec/enterprise/services/internal/account_analysis/content_evaluator_service_spec.rb +++ b/spec/enterprise/services/internal/account_analysis/content_evaluator_service_spec.rb @@ -3,60 +3,103 @@ require 'rails_helper' RSpec.describe Internal::AccountAnalysis::ContentEvaluatorService do let(:service) { described_class.new } let(:content) { 'This is some test content' } + let(:mock_moderation_result) do + instance_double( + RubyLLM::Moderation, + flagged?: false, + flagged_categories: [], + category_scores: {} + ) + end before do create(:installation_config, name: 'CAPTAIN_OPEN_AI_API_KEY', value: 'test-key') + allow(RubyLLM).to receive(:moderate).and_return(mock_moderation_result) end describe '#evaluate' do - context 'when content is present' do - let(:llm_response) do - { - 'choices' => [ - { - 'message' => { - 'content' => { - 'threat_level' => 'low', - 'threat_summary' => 'No significant threats detected', - 'detected_threats' => ['minor_concern'], - 'illegal_activities_detected' => false, - 'recommendation' => 'approve' - }.to_json - } - } - ] - } - end - - before do - allow(service).to receive(:send_to_llm).and_return(llm_response) - allow(Rails.logger).to receive(:info) - end - - it 'returns the evaluation results' do + context 'when content is safe' do + it 'returns safe evaluation with approval recommendation' do result = service.evaluate(content) expect(result).to include( - 'threat_level' => 'low', - 'threat_summary' => 'No significant threats detected', - 'detected_threats' => ['minor_concern'], + 'threat_level' => 'safe', + 'threat_summary' => 'No threats detected', + 'detected_threats' => [], 'illegal_activities_detected' => false, 'recommendation' => 'approve' ) end it 'logs the evaluation results' do + expect(Rails.logger).to receive(:info).with('Moderation evaluation - Level: safe, Threats: ') service.evaluate(content) + end + end - expect(Rails.logger).to have_received(:info).with('LLM evaluation - Level: low, Illegal activities: false') + context 'when content is flagged' do + let(:mock_moderation_result) do + instance_double( + RubyLLM::Moderation, + flagged?: true, + flagged_categories: %w[harassment hate], + category_scores: { 'harassment' => 0.6, 'hate' => 0.3 } + ) + end + + it 'returns flagged evaluation with review recommendation' do + result = service.evaluate(content) + + expect(result).to include( + 'threat_level' => 'high', + 'threat_summary' => 'Content flagged for: harassment, hate', + 'detected_threats' => %w[harassment hate], + 'illegal_activities_detected' => false, + 'recommendation' => 'review' + ) + end + end + + context 'when content contains violence' do + let(:mock_moderation_result) do + instance_double( + RubyLLM::Moderation, + flagged?: true, + flagged_categories: ['violence'], + category_scores: { 'violence' => 0.9 } + ) + end + + it 'marks illegal activities detected for violence' do + result = service.evaluate(content) + + expect(result['illegal_activities_detected']).to be true + expect(result['threat_level']).to eq('critical') + end + end + + context 'when content contains self-harm' do + let(:mock_moderation_result) do + instance_double( + RubyLLM::Moderation, + flagged?: true, + flagged_categories: ['self-harm'], + category_scores: { 'self-harm' => 0.85 } + ) + end + + it 'marks illegal activities detected for self-harm' do + result = service.evaluate(content) + + expect(result['illegal_activities_detected']).to be true end end context 'when content is blank' do let(:blank_content) { '' } - it 'returns the default evaluation without calling the LLM' do - expect(service).not_to receive(:send_to_llm) + it 'returns default evaluation without calling moderation API' do + expect(RubyLLM).not_to receive(:moderate) result = service.evaluate(blank_content) @@ -70,34 +113,16 @@ RSpec.describe Internal::AccountAnalysis::ContentEvaluatorService do end end - context 'when LLM response is nil' do - before do - allow(service).to receive(:send_to_llm).and_return(nil) - end - - it 'returns the default evaluation' do - result = service.evaluate(content) - - expect(result).to include( - 'threat_level' => 'unknown', - 'threat_summary' => 'Failed to complete content evaluation', - 'detected_threats' => [], - 'illegal_activities_detected' => false, - 'recommendation' => 'review' - ) - end - end - context 'when error occurs during evaluation' do before do - allow(service).to receive(:send_to_llm).and_raise(StandardError.new('Test error')) - allow(Rails.logger).to receive(:error) + allow(RubyLLM).to receive(:moderate).and_raise(StandardError.new('Test error')) end - it 'logs the error and returns default evaluation with error type' do + it 'logs error and returns default evaluation with error type' do + expect(Rails.logger).to receive(:error).with('Error evaluating content: Test error') + result = service.evaluate(content) - expect(Rails.logger).to have_received(:error).with('Error evaluating content: Test error') expect(result).to include( 'threat_level' => 'unknown', 'threat_summary' => 'Failed to complete content evaluation', @@ -107,5 +132,68 @@ RSpec.describe Internal::AccountAnalysis::ContentEvaluatorService do ) end end + + context 'with threat level determination' do + it 'returns critical for scores >= 0.8' do + mock_result = instance_double( + RubyLLM::Moderation, + flagged?: true, + flagged_categories: ['harassment'], + category_scores: { 'harassment' => 0.85 } + ) + allow(RubyLLM).to receive(:moderate).and_return(mock_result) + + result = service.evaluate(content) + expect(result['threat_level']).to eq('critical') + end + + it 'returns high for scores between 0.5 and 0.8' do + mock_result = instance_double( + RubyLLM::Moderation, + flagged?: true, + flagged_categories: ['harassment'], + category_scores: { 'harassment' => 0.65 } + ) + allow(RubyLLM).to receive(:moderate).and_return(mock_result) + + result = service.evaluate(content) + expect(result['threat_level']).to eq('high') + end + + it 'returns medium for scores between 0.2 and 0.5' do + mock_result = instance_double( + RubyLLM::Moderation, + flagged?: true, + flagged_categories: ['harassment'], + category_scores: { 'harassment' => 0.35 } + ) + allow(RubyLLM).to receive(:moderate).and_return(mock_result) + + result = service.evaluate(content) + expect(result['threat_level']).to eq('medium') + end + + it 'returns low for scores below 0.2' do + mock_result = instance_double( + RubyLLM::Moderation, + flagged?: true, + flagged_categories: ['harassment'], + category_scores: { 'harassment' => 0.15 } + ) + allow(RubyLLM).to receive(:moderate).and_return(mock_result) + + result = service.evaluate(content) + expect(result['threat_level']).to eq('low') + end + end + + context 'with content truncation' do + let(:long_content) { 'a' * 15_000 } + + it 'truncates content to 10000 characters before sending to moderation' do + expect(RubyLLM).to receive(:moderate).with('a' * 10_000).and_return(mock_moderation_result) + service.evaluate(long_content) + end + end end end From 2bd8e76886e23f90ee67e36be8ce8ba746c7c37c Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Thu, 11 Dec 2025 16:36:37 +0530 Subject: [PATCH 02/29] feat: Add backend changes for whatsapp csat template (#12984) This PR add the backend changes for the feature [sending CSAT surveys via WhatsApp message templates ](https://github.com/chatwoot/chatwoot/pull/12787) --------- Co-authored-by: Vinay Keerthi <11478411+stonecharioteer@users.noreply.github.com> --- .../inbox_csat_templates_controller.rb | 160 ++++++++ .../api/v1/accounts/inboxes_controller.rb | 38 +- .../whatsapp/csat_template_name_service.rb | 49 +++ .../whatsapp/csat_template_service.rb | 139 +++++++ .../providers/whatsapp_cloud_service.rb | 19 + config/routes.rb | 2 + .../inbox_csat_templates_controller_spec.rb | 383 ++++++++++++++++++ .../v1/accounts/inboxes_controller_spec.rb | 95 +++++ .../whatsapp/csat_template_service_spec.rb | 376 +++++++++++++++++ .../providers/whatsapp_cloud_service_spec.rb | 88 ++++ 10 files changed, 1331 insertions(+), 18 deletions(-) create mode 100644 app/controllers/api/v1/accounts/inbox_csat_templates_controller.rb create mode 100644 app/services/whatsapp/csat_template_name_service.rb create mode 100644 app/services/whatsapp/csat_template_service.rb create mode 100644 spec/controllers/api/v1/accounts/inbox_csat_templates_controller_spec.rb create mode 100644 spec/services/whatsapp/csat_template_service_spec.rb diff --git a/app/controllers/api/v1/accounts/inbox_csat_templates_controller.rb b/app/controllers/api/v1/accounts/inbox_csat_templates_controller.rb new file mode 100644 index 000000000..d17fe35fb --- /dev/null +++ b/app/controllers/api/v1/accounts/inbox_csat_templates_controller.rb @@ -0,0 +1,160 @@ +class Api::V1::Accounts::InboxCsatTemplatesController < Api::V1::Accounts::BaseController + DEFAULT_BUTTON_TEXT = 'Please rate us'.freeze + DEFAULT_LANGUAGE = 'en'.freeze + + before_action :fetch_inbox + before_action :validate_whatsapp_channel + + def show + template = @inbox.csat_config&.dig('template') + return render json: { template_exists: false } unless template + + template_name = template['name'] || Whatsapp::CsatTemplateNameService.csat_template_name(@inbox.id) + status_result = @inbox.channel.provider_service.get_template_status(template_name) + + render_template_status_response(status_result, template_name) + rescue StandardError => e + Rails.logger.error "Error fetching CSAT template status: #{e.message}" + render json: { error: e.message }, status: :internal_server_error + end + + def create + template_params = extract_template_params + return render_missing_message_error if template_params[:message].blank? + + # Delete existing template even though we are using a new one. + # We don't want too many templates in the business portfolio, but the create operation shouldn't fail if deletion fails. + delete_existing_template_if_needed + + result = create_template_via_provider(template_params) + render_template_creation_result(result) + rescue ActionController::ParameterMissing + render json: { error: 'Template parameters are required' }, status: :unprocessable_entity + rescue StandardError => e + Rails.logger.error "Error creating CSAT template: #{e.message}" + render json: { error: 'Template creation failed' }, status: :internal_server_error + end + + private + + def fetch_inbox + @inbox = Current.account.inboxes.find(params[:inbox_id]) + authorize @inbox, :show? + end + + def validate_whatsapp_channel + return if @inbox.whatsapp? + + render json: { error: 'CSAT template operations only available for WhatsApp channels' }, + status: :bad_request + end + + def extract_template_params + params.require(:template).permit(:message, :button_text, :language) + end + + def render_missing_message_error + render json: { error: 'Message is required' }, status: :unprocessable_entity + end + + def create_template_via_provider(template_params) + template_config = { + message: template_params[:message], + button_text: template_params[:button_text] || DEFAULT_BUTTON_TEXT, + base_url: ENV.fetch('FRONTEND_URL', 'http://localhost:3000'), + language: template_params[:language] || DEFAULT_LANGUAGE, + template_name: Whatsapp::CsatTemplateNameService.csat_template_name(@inbox.id) + } + + @inbox.channel.provider_service.create_csat_template(template_config) + end + + def render_template_creation_result(result) + if result[:success] + render_successful_template_creation(result) + else + render_failed_template_creation(result) + end + end + + def render_successful_template_creation(result) + render json: { + template: { + name: result[:template_name], + template_id: result[:template_id], + status: 'PENDING', + language: result[:language] || DEFAULT_LANGUAGE + } + }, status: :created + end + + def render_failed_template_creation(result) + whatsapp_error = parse_whatsapp_error(result[:response_body]) + error_message = whatsapp_error[:user_message] || result[:error] + + render json: { + error: error_message, + details: whatsapp_error[:technical_details] + }, status: :unprocessable_entity + end + + def delete_existing_template_if_needed + template = @inbox.csat_config&.dig('template') + return true if template.blank? + + template_name = template['name'] + return true if template_name.blank? + + template_status = @inbox.channel.provider_service.get_template_status(template_name) + return true unless template_status[:success] + + deletion_result = @inbox.channel.provider_service.delete_csat_template(template_name) + if deletion_result[:success] + Rails.logger.info "Deleted existing CSAT template '#{template_name}' for inbox #{@inbox.id}" + true + else + Rails.logger.warn "Failed to delete existing CSAT template '#{template_name}' for inbox #{@inbox.id}: #{deletion_result[:response_body]}" + false + end + rescue StandardError => e + Rails.logger.error "Error during template deletion for inbox #{@inbox.id}: #{e.message}" + false + end + + def render_template_status_response(status_result, template_name) + if status_result[:success] + render json: { + template_exists: true, + template_name: template_name, + status: status_result[:template][:status], + template_id: status_result[:template][:id] + } + else + render json: { + template_exists: false, + error: 'Template not found' + } + end + end + + def parse_whatsapp_error(response_body) + return { user_message: nil, technical_details: nil } if response_body.blank? + + begin + error_data = JSON.parse(response_body) + whatsapp_error = error_data['error'] || {} + + user_message = whatsapp_error['error_user_msg'] || whatsapp_error['message'] + technical_details = { + code: whatsapp_error['code'], + subcode: whatsapp_error['error_subcode'], + type: whatsapp_error['type'], + title: whatsapp_error['error_user_title'] + }.compact + + { user_message: user_message, technical_details: technical_details } + rescue JSON::ParserError + { user_message: nil, technical_details: response_body } + end + end +end diff --git a/app/controllers/api/v1/accounts/inboxes_controller.rb b/app/controllers/api/v1/accounts/inboxes_controller.rb index ae1d4369a..1c8845c04 100644 --- a/app/controllers/api/v1/accounts/inboxes_controller.rb +++ b/app/controllers/api/v1/accounts/inboxes_controller.rb @@ -152,31 +152,37 @@ class Api::V1::Accounts::InboxesController < Api::V1::Accounts::BaseController end def format_csat_config(config) - { - display_type: config['display_type'] || 'emoji', - message: config['message'] || '', - survey_rules: { - operator: config.dig('survey_rules', 'operator') || 'contains', - values: config.dig('survey_rules', 'values') || [] - } + formatted = { + 'display_type' => config['display_type'] || 'emoji', + 'message' => config['message'] || '', + :survey_rules => { + 'operator' => config.dig('survey_rules', 'operator') || 'contains', + 'values' => config.dig('survey_rules', 'values') || [] + }, + 'button_text' => config['button_text'] || 'Please rate us', + 'language' => config['language'] || 'en' } + format_template_config(config, formatted) + formatted + end + + def format_template_config(config, formatted) + formatted['template'] = config['template'] if config['template'].present? end def inbox_attributes [:name, :avatar, :greeting_enabled, :greeting_message, :enable_email_collect, :csat_survey_enabled, :enable_auto_assignment, :working_hours_enabled, :out_of_office_message, :timezone, :allow_messages_after_resolved, :lock_to_single_conversation, :portal_id, :sender_name_type, :business_name, - { csat_config: [:display_type, :message, { survey_rules: [:operator, { values: [] }] }] }] + { csat_config: [:display_type, :message, :button_text, :language, + { survey_rules: [:operator, { values: [] }], + template: [:name, :template_id, :created_at, :language] }] }] end def permitted_params(channel_attributes = []) # We will remove this line after fixing https://linear.app/chatwoot/issue/CW-1567/null-value-passed-as-null-string-to-backend params.each { |k, v| params[k] = params[k] == 'null' ? nil : v } - - params.permit( - *inbox_attributes, - channel: [:type, *channel_attributes] - ) + params.permit(*inbox_attributes, channel: [:type, *channel_attributes]) end def channel_type_from_params @@ -192,11 +198,7 @@ class Api::V1::Accounts::InboxesController < Api::V1::Accounts::BaseController end def get_channel_attributes(channel_type) - if channel_type.constantize.const_defined?(:EDITABLE_ATTRS) - channel_type.constantize::EDITABLE_ATTRS.presence - else - [] - end + channel_type.constantize.const_defined?(:EDITABLE_ATTRS) ? channel_type.constantize::EDITABLE_ATTRS.presence : [] end def whatsapp_channel? diff --git a/app/services/whatsapp/csat_template_name_service.rb b/app/services/whatsapp/csat_template_name_service.rb new file mode 100644 index 000000000..223efda04 --- /dev/null +++ b/app/services/whatsapp/csat_template_name_service.rb @@ -0,0 +1,49 @@ +class Whatsapp::CsatTemplateNameService + CSAT_BASE_NAME = 'customer_satisfaction_survey'.freeze + + # Generates template names like: customer_satisfaction_survey_{inbox_id}_{version_number} + + def self.csat_template_name(inbox_id, version = nil) + base_name = csat_base_name_for_inbox(inbox_id) + version ? "#{base_name}_#{version}" : base_name + end + + def self.extract_version(template_name, inbox_id) + return nil if template_name.blank? + + pattern = versioned_pattern_for_inbox(inbox_id) + match = template_name.match(pattern) + match ? match[1].to_i : nil + end + + def self.generate_next_template_name(base_name, inbox_id, current_template_name) + return base_name if current_template_name.blank? + + current_version = extract_version(current_template_name, inbox_id) + next_version = current_version ? current_version + 1 : 1 + csat_template_name(inbox_id, next_version) + end + + def self.matches_csat_pattern?(template_name, inbox_id) + return false if template_name.blank? + + base_pattern = base_pattern_for_inbox(inbox_id) + versioned_pattern = versioned_pattern_for_inbox(inbox_id) + + template_name.match?(base_pattern) || template_name.match?(versioned_pattern) + end + + def self.csat_base_name_for_inbox(inbox_id) + "#{CSAT_BASE_NAME}_#{inbox_id}" + end + + def self.base_pattern_for_inbox(inbox_id) + /^#{CSAT_BASE_NAME}_#{inbox_id}$/ + end + + def self.versioned_pattern_for_inbox(inbox_id) + /^#{CSAT_BASE_NAME}_#{inbox_id}_(\d+)$/ + end + + private_class_method :csat_base_name_for_inbox, :base_pattern_for_inbox, :versioned_pattern_for_inbox +end diff --git a/app/services/whatsapp/csat_template_service.rb b/app/services/whatsapp/csat_template_service.rb new file mode 100644 index 000000000..43009b484 --- /dev/null +++ b/app/services/whatsapp/csat_template_service.rb @@ -0,0 +1,139 @@ +class Whatsapp::CsatTemplateService + DEFAULT_BUTTON_TEXT = 'Please rate us'.freeze + DEFAULT_LANGUAGE = 'en'.freeze + WHATSAPP_API_VERSION = 'v14.0'.freeze + TEMPLATE_CATEGORY = 'MARKETING'.freeze + TEMPLATE_STATUS_PENDING = 'PENDING'.freeze + + def initialize(whatsapp_channel) + @whatsapp_channel = whatsapp_channel + end + + def create_template(template_config) + base_name = template_config[:template_name] + template_name = generate_template_name(base_name) + template_config_with_name = template_config.merge(template_name: template_name) + request_body = build_template_request_body(template_config_with_name) + response = send_template_creation_request(request_body) + process_template_creation_response(response, template_config_with_name) + end + + def delete_template(template_name = nil) + template_name ||= Whatsapp::CsatTemplateNameService.csat_template_name(@whatsapp_channel.inbox.id) + response = HTTParty.delete( + "#{business_account_path}/message_templates?name=#{template_name}", + headers: api_headers + ) + { success: response.success?, response_body: response.body } + end + + def get_template_status(template_name) + response = HTTParty.get("#{business_account_path}/message_templates?name=#{template_name}", headers: api_headers) + + if response.success? && response['data']&.any? + template_data = response['data'].first + { + success: true, + template: { + id: template_data['id'], name: template_data['name'], + status: template_data['status'], language: template_data['language'] + } + } + else + { success: false, error: 'Template not found' } + end + rescue StandardError => e + Rails.logger.error "Error fetching template status: #{e.message}" + { success: false, error: e.message } + end + + private + + def generate_template_name(base_name) + current_template_name = current_template_name_from_config + Whatsapp::CsatTemplateNameService.generate_next_template_name(base_name, @whatsapp_channel.inbox.id, current_template_name) + end + + def current_template_name_from_config + @whatsapp_channel.inbox.csat_config&.dig('template', 'name') + end + + def build_template_request_body(template_config) + { + name: template_config[:template_name], + language: template_config[:language] || DEFAULT_LANGUAGE, + category: TEMPLATE_CATEGORY, + components: build_template_components(template_config) + } + end + + def build_template_components(template_config) + [ + build_body_component(template_config[:message]), + build_buttons_component(template_config) + ] + end + + def build_body_component(message) + { + type: 'BODY', + text: message + } + end + + def build_buttons_component(template_config) + { + type: 'BUTTONS', + buttons: [ + { + type: 'URL', + text: template_config[:button_text] || DEFAULT_BUTTON_TEXT, + url: "#{template_config[:base_url]}/survey/responses/{{1}}", + example: ['12345'] + } + ] + } + end + + def send_template_creation_request(request_body) + HTTParty.post( + "#{business_account_path}/message_templates", + headers: api_headers, + body: request_body.to_json + ) + end + + def process_template_creation_response(response, template_config = {}) + if response.success? + { + success: true, + template_id: response['id'], + template_name: response['name'] || template_config[:template_name], + language: template_config[:language] || DEFAULT_LANGUAGE, + status: TEMPLATE_STATUS_PENDING + } + else + Rails.logger.error "WhatsApp template creation failed: #{response.code} - #{response.body}" + { + success: false, + error: 'Template creation failed', + response_body: response.body + } + end + end + + def business_account_path + "#{api_base_path}/#{WHATSAPP_API_VERSION}/#{@whatsapp_channel.provider_config['business_account_id']}" + end + + def api_headers + { + 'Authorization' => "Bearer #{@whatsapp_channel.provider_config['api_key']}", + 'Content-Type' => 'application/json' + } + end + + def api_base_path + ENV.fetch('WHATSAPP_CLOUD_BASE_URL', 'https://graph.facebook.com') + end +end diff --git a/app/services/whatsapp/providers/whatsapp_cloud_service.rb b/app/services/whatsapp/providers/whatsapp_cloud_service.rb index 1968693ff..e13ee8979 100644 --- a/app/services/whatsapp/providers/whatsapp_cloud_service.rb +++ b/app/services/whatsapp/providers/whatsapp_cloud_service.rb @@ -62,12 +62,31 @@ class Whatsapp::Providers::WhatsappCloudService < Whatsapp::Providers::BaseServi { 'Authorization' => "Bearer #{whatsapp_channel.provider_config['api_key']}", 'Content-Type' => 'application/json' } end + def create_csat_template(template_config) + csat_template_service.create_template(template_config) + end + + def delete_csat_template(template_name = nil) + template_name ||= Whatsapp::CsatTemplateNameService.csat_template_name(whatsapp_channel.inbox.id) + csat_template_service.delete_template(template_name) + end + + def get_template_status(template_name) + csat_template_service.get_template_status(template_name) + end + def media_url(media_id, phone_number_id = nil) url = "#{api_base_path}/v13.0/#{media_id}" url += "?phone_number_id=#{phone_number_id}" if phone_number_id url end + private + + def csat_template_service + @csat_template_service ||= Whatsapp::CsatTemplateService.new(whatsapp_channel) + end + def api_base_path ENV.fetch('WHATSAPP_CLOUD_BASE_URL', 'https://graph.facebook.com') end diff --git a/config/routes.rb b/config/routes.rb index 9b22cb333..0ac001612 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -203,6 +203,8 @@ Rails.application.routes.draw do delete :avatar, on: :member post :sync_templates, on: :member get :health, on: :member + + resource :csat_template, only: [:show, :create], controller: 'inbox_csat_templates' end resources :inbox_members, only: [:create, :show], param: :inbox_id do collection do diff --git a/spec/controllers/api/v1/accounts/inbox_csat_templates_controller_spec.rb b/spec/controllers/api/v1/accounts/inbox_csat_templates_controller_spec.rb new file mode 100644 index 000000000..7ca9083c0 --- /dev/null +++ b/spec/controllers/api/v1/accounts/inbox_csat_templates_controller_spec.rb @@ -0,0 +1,383 @@ +require 'rails_helper' + +RSpec.describe Api::V1::Accounts::InboxCsatTemplatesController, type: :request do + let(:account) { create(:account) } + let(:admin) { create(:user, account: account, role: :administrator) } + let(:agent) { create(:user, account: account, role: :agent) } + let(:whatsapp_channel) do + create(:channel_whatsapp, account: account, provider: 'whatsapp_cloud', sync_templates: false, validate_provider_config: false) + end + let(:whatsapp_inbox) { create(:inbox, channel: whatsapp_channel, account: account) } + let(:web_widget_inbox) { create(:inbox, account: account) } + let(:mock_service) { instance_double(Whatsapp::Providers::WhatsappCloudService) } + + before do + create(:inbox_member, user: agent, inbox: whatsapp_inbox) + allow(Whatsapp::Providers::WhatsappCloudService).to receive(:new).and_return(mock_service) + end + + describe 'GET /api/v1/accounts/{account.id}/inboxes/{inbox.id}/csat_template' do + context 'when it is an unauthenticated user' do + it 'returns unauthorized' do + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template" + + expect(response).to have_http_status(:unauthorized) + end + end + + context 'when it is not a WhatsApp channel' do + it 'returns bad request' do + get "/api/v1/accounts/#{account.id}/inboxes/#{web_widget_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:bad_request) + expect(response.parsed_body['error']).to eq('CSAT template operations only available for WhatsApp channels') + end + end + + context 'when it is a WhatsApp channel' do + it 'returns template not found when no configuration exists' do + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:success) + expect(response.parsed_body['template_exists']).to be false + end + + it 'returns template status when template exists on WhatsApp' do + template_config = { + 'template' => { + 'name' => 'custom_survey_template', + 'template_id' => '123456789', + 'language' => 'en' + } + } + whatsapp_inbox.update!(csat_config: template_config) + + allow(mock_service).to receive(:get_template_status) + .with('custom_survey_template') + .and_return({ + success: true, + template: { id: '123456789', status: 'APPROVED' } + }) + + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:success) + response_data = response.parsed_body + expect(response_data['template_exists']).to be true + expect(response_data['template_name']).to eq('custom_survey_template') + expect(response_data['status']).to eq('APPROVED') + expect(response_data['template_id']).to eq('123456789') + end + + it 'returns template not found when template does not exist on WhatsApp' do + template_config = { 'template' => { 'name' => 'custom_survey_template' } } + whatsapp_inbox.update!(csat_config: template_config) + + allow(mock_service).to receive(:get_template_status) + .with('custom_survey_template') + .and_return({ success: false, error: 'Template not found' }) + + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:success) + response_data = response.parsed_body + expect(response_data['template_exists']).to be false + expect(response_data['error']).to eq('Template not found') + end + + it 'handles service errors gracefully' do + template_config = { 'template' => { 'name' => 'custom_survey_template' } } + whatsapp_inbox.update!(csat_config: template_config) + + allow(mock_service).to receive(:get_template_status) + .and_raise(StandardError, 'API connection failed') + + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:internal_server_error) + expect(response.parsed_body['error']).to eq('API connection failed') + end + + it 'returns unauthorized when agent is not assigned to inbox' do + other_agent = create(:user, account: account, role: :agent) + + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: other_agent.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:unauthorized) + end + + it 'allows access when agent is assigned to inbox' do + whatsapp_inbox.update!(csat_config: { 'template' => { 'name' => 'test' } }) + allow(mock_service).to receive(:get_template_status) + .and_return({ success: true, template: { id: '123', status: 'APPROVED' } }) + + get "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: agent.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:success) + end + end + end + + describe 'POST /api/v1/accounts/{account.id}/inboxes/{inbox.id}/csat_template' do + let(:valid_template_params) do + { + template: { + message: 'How would you rate your experience?', + button_text: 'Rate Us', + language: 'en' + } + } + end + + context 'when it is an unauthenticated user' do + it 'returns unauthorized' do + post "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + params: valid_template_params, + as: :json + + expect(response).to have_http_status(:unauthorized) + end + end + + context 'when it is not a WhatsApp channel' do + it 'returns bad request' do + post "/api/v1/accounts/#{account.id}/inboxes/#{web_widget_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + params: valid_template_params, + as: :json + + expect(response).to have_http_status(:bad_request) + expect(response.parsed_body['error']).to eq('CSAT template operations only available for WhatsApp channels') + end + end + + context 'when it is a WhatsApp channel' do + it 'returns error when message is missing' do + invalid_params = { + template: { + button_text: 'Rate Us', + language: 'en' + } + } + + post "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + params: invalid_params, + as: :json + + expect(response).to have_http_status(:unprocessable_entity) + expect(response.parsed_body['error']).to eq('Message is required') + end + + it 'returns error when template parameters are completely missing' do + post "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + params: {}, + as: :json + + expect(response).to have_http_status(:unprocessable_entity) + expect(response.parsed_body['error']).to eq('Template parameters are required') + end + + it 'creates template successfully' do + allow(mock_service).to receive(:get_template_status).and_return({ success: false }) + allow(mock_service).to receive(:create_csat_template).and_return({ + success: true, + template_name: "customer_satisfaction_survey_#{whatsapp_inbox.id}", + template_id: '987654321' + }) + + post "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + params: valid_template_params, + as: :json + + expect(response).to have_http_status(:created) + response_data = response.parsed_body + expect(response_data['template']['name']).to eq("customer_satisfaction_survey_#{whatsapp_inbox.id}") + expect(response_data['template']['template_id']).to eq('987654321') + expect(response_data['template']['status']).to eq('PENDING') + expect(response_data['template']['language']).to eq('en') + end + + it 'uses default values for optional parameters' do + minimal_params = { + template: { + message: 'How would you rate your experience?' + } + } + + allow(mock_service).to receive(:get_template_status).and_return({ success: false }) + expect(mock_service).to receive(:create_csat_template) do |config| + expect(config[:button_text]).to eq('Please rate us') + expect(config[:language]).to eq('en') + expect(config[:template_name]).to eq("customer_satisfaction_survey_#{whatsapp_inbox.id}") + { success: true, template_name: "customer_satisfaction_survey_#{whatsapp_inbox.id}", template_id: '123' } + end + + post "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + params: minimal_params, + as: :json + + expect(response).to have_http_status(:created) + end + + it 'handles WhatsApp API errors with user-friendly messages' do + whatsapp_error_response = { + 'error' => { + 'code' => 100, + 'error_subcode' => 2_388_092, + 'message' => 'Invalid parameter', + 'error_user_title' => 'Template Creation Failed', + 'error_user_msg' => 'The template message contains invalid content. Please review your message and try again.' + } + } + + allow(mock_service).to receive(:get_template_status).and_return({ success: false }) + allow(mock_service).to receive(:create_csat_template).and_return({ + success: false, + error: 'Template creation failed', + response_body: whatsapp_error_response.to_json + }) + + post "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + params: valid_template_params, + as: :json + + expect(response).to have_http_status(:unprocessable_entity) + response_data = response.parsed_body + expect(response_data['error']).to eq('The template message contains invalid content. Please review your message and try again.') + expect(response_data['details']).to include({ + 'code' => 100, + 'subcode' => 2_388_092, + 'title' => 'Template Creation Failed' + }) + end + + it 'handles generic API errors' do + allow(mock_service).to receive(:get_template_status).and_return({ success: false }) + allow(mock_service).to receive(:create_csat_template).and_return({ + success: false, + error: 'Network timeout', + response_body: nil + }) + + post "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + params: valid_template_params, + as: :json + + expect(response).to have_http_status(:unprocessable_entity) + expect(response.parsed_body['error']).to eq('Network timeout') + end + + it 'handles unexpected service errors' do + allow(mock_service).to receive(:get_template_status).and_return({ success: false }) + allow(mock_service).to receive(:create_csat_template) + .and_raise(StandardError, 'Unexpected error') + + post "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + params: valid_template_params, + as: :json + + expect(response).to have_http_status(:internal_server_error) + expect(response.parsed_body['error']).to eq('Template creation failed') + end + + it 'deletes existing template before creating new one' do + whatsapp_inbox.update!(csat_config: { + 'template' => { + 'name' => 'existing_template', + 'template_id' => '111111111' + } + }) + + allow(mock_service).to receive(:get_template_status) + .with('existing_template') + .and_return({ success: true, template: { id: '111111111' } }) + expect(mock_service).to receive(:delete_csat_template) + .with('existing_template') + .and_return({ success: true }) + expect(mock_service).to receive(:create_csat_template) + .and_return({ + success: true, + template_name: "customer_satisfaction_survey_#{whatsapp_inbox.id}", + template_id: '222222222' + }) + + post "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + params: valid_template_params, + as: :json + + expect(response).to have_http_status(:created) + end + + it 'continues with creation even if deletion fails' do + whatsapp_inbox.update!(csat_config: { + 'template' => { 'name' => 'existing_template' } + }) + + allow(mock_service).to receive(:get_template_status).and_return({ success: true }) + allow(mock_service).to receive(:delete_csat_template) + .and_return({ success: false, response_body: 'Delete failed' }) + allow(mock_service).to receive(:create_csat_template).and_return({ + success: true, + template_name: "customer_satisfaction_survey_#{whatsapp_inbox.id}", + template_id: '333333333' + }) + + post "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: admin.create_new_auth_token, + params: valid_template_params, + as: :json + + expect(response).to have_http_status(:created) + end + + it 'returns unauthorized when agent is not assigned to inbox' do + other_agent = create(:user, account: account, role: :agent) + + post "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: other_agent.create_new_auth_token, + params: valid_template_params, + as: :json + + expect(response).to have_http_status(:unauthorized) + end + + it 'allows access when agent is assigned to inbox' do + allow(mock_service).to receive(:get_template_status).and_return({ success: false }) + allow(mock_service).to receive(:create_csat_template).and_return({ + success: true, + template_name: 'customer_satisfaction_survey', + template_id: '444444444' + }) + + post "/api/v1/accounts/#{account.id}/inboxes/#{whatsapp_inbox.id}/csat_template", + headers: agent.create_new_auth_token, + params: valid_template_params, + as: :json + + expect(response).to have_http_status(:created) + end + end + end +end diff --git a/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb b/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb index a44f60391..fafd6788e 100644 --- a/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/inboxes_controller_spec.rb @@ -804,6 +804,101 @@ RSpec.describe 'Inboxes API', type: :request do expect(found_inbox['csat_config']['display_type']).to eq('emoji') end end + + it 'successfully updates inbox with template configuration' do + csat_config_with_template = csat_config.merge({ + 'template' => { + 'name' => 'custom_survey_template', + 'template_id' => '123456789', + 'language' => 'en', + 'created_at' => Time.current.iso8601 + } + }) + + patch "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}", + params: { + csat_survey_enabled: true, + csat_config: csat_config_with_template + }, + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:success) + + inbox.reload + template_config = inbox.csat_config['template'] + expect(template_config).to be_present + expect(template_config['name']).to eq('custom_survey_template') + expect(template_config['template_id']).to eq('123456789') + expect(template_config['language']).to eq('en') + end + + it 'returns template configuration in inbox details' do + csat_config_with_template = csat_config.merge({ + 'template' => { + 'name' => 'custom_survey_template', + 'template_id' => '123456789', + 'language' => 'en', + 'created_at' => Time.current.iso8601 + } + }) + + patch "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}", + params: { + csat_survey_enabled: true, + csat_config: csat_config_with_template + }, + headers: admin.create_new_auth_token, + as: :json + + get "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}", + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:success) + json_response = response.parsed_body + template_config = json_response['csat_config']['template'] + + expect(template_config).to be_present + expect(template_config['name']).to eq('custom_survey_template') + expect(template_config['template_id']).to eq('123456789') + expect(template_config['language']).to eq('en') + expect(template_config['created_at']).to be_present + end + + it 'removes template configuration when not provided in update' do + # First set up template configuration + csat_config_with_template = csat_config.merge({ + 'template' => { + 'name' => 'custom_survey_template', + 'template_id' => '123456789' + } + }) + + patch "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}", + params: { + csat_survey_enabled: true, + csat_config: csat_config_with_template + }, + headers: admin.create_new_auth_token, + as: :json + + # Then update without template + patch "/api/v1/accounts/#{account.id}/inboxes/#{inbox.id}", + params: { + csat_survey_enabled: true, + csat_config: csat_config.merge({ 'message' => 'Updated message' }) + }, + headers: admin.create_new_auth_token, + as: :json + + expect(response).to have_http_status(:success) + + inbox.reload + config = inbox.csat_config + expect(config['message']).to eq('Updated message') + expect(config['template']).to be_nil # Template should be removed when not provided + end end end diff --git a/spec/services/whatsapp/csat_template_service_spec.rb b/spec/services/whatsapp/csat_template_service_spec.rb new file mode 100644 index 000000000..f21d87227 --- /dev/null +++ b/spec/services/whatsapp/csat_template_service_spec.rb @@ -0,0 +1,376 @@ +require 'rails_helper' + +RSpec.describe Whatsapp::CsatTemplateService do + let(:account) { create(:account) } + let(:whatsapp_channel) do + create(:channel_whatsapp, account: account, provider: 'whatsapp_cloud', sync_templates: false, validate_provider_config: false) + end + let(:inbox) { create(:inbox, channel: whatsapp_channel, account: account) } + let(:service) { described_class.new(whatsapp_channel) } + + let(:expected_template_name) { "customer_satisfaction_survey_#{whatsapp_channel.inbox.id}" } + let(:template_config) do + { + message: 'How would you rate your experience?', + button_text: 'Rate Us', + language: 'en', + base_url: 'https://example.com', + template_name: expected_template_name + } + end + + before do + allow(ENV).to receive(:fetch).and_call_original + allow(ENV).to receive(:fetch).with('WHATSAPP_CLOUD_BASE_URL', anything).and_return('https://graph.facebook.com') + end + + describe '#generate_template_name' do + context 'when no existing template' do + it 'returns base name as-is' do + whatsapp_channel.inbox.update!(csat_config: {}) + result = service.send(:generate_template_name, 'new_template_name') + expect(result).to eq('new_template_name') + end + + it 'returns base name when template key is missing' do + whatsapp_channel.inbox.update!(csat_config: { 'other_config' => 'value' }) + result = service.send(:generate_template_name, 'new_template_name') + expect(result).to eq('new_template_name') + end + end + + context 'when existing template has no versioned name' do + it 'starts versioning from 1' do + whatsapp_channel.inbox.update!(csat_config: { + 'template' => { 'name' => expected_template_name } + }) + result = service.send(:generate_template_name, 'new_template_name') + expect(result).to eq("#{expected_template_name}_1") + end + + it 'starts versioning from 1 for custom name' do + whatsapp_channel.inbox.update!(csat_config: { + 'template' => { 'name' => 'custom_survey' } + }) + result = service.send(:generate_template_name, 'new_template_name') + expect(result).to eq("#{expected_template_name}_1") + end + end + + context 'when existing template has versioned name' do + it 'increments version number' do + whatsapp_channel.inbox.update!(csat_config: { + 'template' => { 'name' => "#{expected_template_name}_1" } + }) + result = service.send(:generate_template_name, 'new_template_name') + expect(result).to eq("#{expected_template_name}_2") + end + + it 'increments higher version numbers' do + whatsapp_channel.inbox.update!(csat_config: { + 'template' => { 'name' => "#{expected_template_name}_5" } + }) + result = service.send(:generate_template_name, 'new_template_name') + expect(result).to eq("#{expected_template_name}_6") + end + + it 'handles double digit version numbers' do + whatsapp_channel.inbox.update!(csat_config: { + 'template' => { 'name' => "#{expected_template_name}_12" } + }) + result = service.send(:generate_template_name, 'new_template_name') + expect(result).to eq("#{expected_template_name}_13") + end + end + + context 'when existing template has non-matching versioned name' do + it 'starts versioning from 1' do + whatsapp_channel.inbox.update!(csat_config: { + 'template' => { 'name' => 'different_survey_3' } + }) + result = service.send(:generate_template_name, 'new_template_name') + expect(result).to eq("#{expected_template_name}_1") + end + end + + context 'when template name is blank' do + it 'returns base name' do + whatsapp_channel.inbox.update!(csat_config: { + 'template' => { 'name' => '' } + }) + result = service.send(:generate_template_name, 'new_template_name') + expect(result).to eq('new_template_name') + end + + it 'returns base name when template name is nil' do + whatsapp_channel.inbox.update!(csat_config: { + 'template' => { 'name' => nil } + }) + result = service.send(:generate_template_name, 'new_template_name') + expect(result).to eq('new_template_name') + end + end + end + + describe '#build_template_request_body' do + it 'builds correct request structure' do + result = service.send(:build_template_request_body, template_config) + + expect(result).to eq({ + name: expected_template_name, + language: 'en', + category: 'MARKETING', + components: [ + { + type: 'BODY', + text: 'How would you rate your experience?' + }, + { + type: 'BUTTONS', + buttons: [ + { + type: 'URL', + text: 'Rate Us', + url: 'https://example.com/survey/responses/{{1}}', + example: ['12345'] + } + ] + } + ] + }) + end + + it 'uses default language when not provided' do + config_without_language = template_config.except(:language) + result = service.send(:build_template_request_body, config_without_language) + expect(result[:language]).to eq('en') + end + + it 'uses default button text when not provided' do + config_without_button = template_config.except(:button_text) + result = service.send(:build_template_request_body, config_without_button) + expect(result[:components][1][:buttons][0][:text]).to eq('Please rate us') + end + end + + describe '#create_template' do + let(:mock_response) do + # rubocop:disable RSpec/VerifiedDoubles + double('response', :success? => true, :body => '{}', '[]' => { 'id' => '123', 'name' => 'template_name' }) + # rubocop:enable RSpec/VerifiedDoubles + end + + before do + allow(HTTParty).to receive(:post).and_return(mock_response) + inbox.update!(csat_config: {}) + end + + it 'creates template with generated name' do + expected_body = { + name: expected_template_name, + language: 'en', + category: 'MARKETING', + components: [ + { + type: 'BODY', + text: 'How would you rate your experience?' + }, + { + type: 'BUTTONS', + buttons: [ + { + type: 'URL', + text: 'Rate Us', + url: 'https://example.com/survey/responses/{{1}}', + example: ['12345'] + } + ] + } + ] + } + + expect(HTTParty).to receive(:post).with( + "https://graph.facebook.com/v14.0/#{whatsapp_channel.provider_config['business_account_id']}/message_templates", + headers: { + 'Authorization' => "Bearer #{whatsapp_channel.provider_config['api_key']}", + 'Content-Type' => 'application/json' + }, + body: expected_body.to_json + ) + + service.create_template(template_config) + end + + it 'returns success response on successful creation' do + allow(mock_response).to receive(:[]).with('id').and_return('template_123') + allow(mock_response).to receive(:[]).with('name').and_return(expected_template_name) + + result = service.create_template(template_config) + + expect(result).to eq({ + success: true, + template_id: 'template_123', + template_name: expected_template_name, + language: 'en', + status: 'PENDING' + }) + end + + context 'when API call fails' do + let(:error_response) do + # rubocop:disable RSpec/VerifiedDoubles + double('response', success?: false, code: 400, body: '{"error": "Invalid template"}') + # rubocop:enable RSpec/VerifiedDoubles + end + + before do + allow(HTTParty).to receive(:post).and_return(error_response) + allow(Rails.logger).to receive(:error) + end + + it 'returns error response' do + result = service.create_template(template_config) + + expect(result).to eq({ + success: false, + error: 'Template creation failed', + response_body: '{"error": "Invalid template"}' + }) + end + + it 'logs the error' do + expect(Rails.logger).to receive(:error).with('WhatsApp template creation failed: 400 - {"error": "Invalid template"}') + service.create_template(template_config) + end + end + end + + describe '#delete_template' do + it 'makes DELETE request to correct endpoint' do + # rubocop:disable RSpec/VerifiedDoubles + mock_response = double('response', success?: true, body: '{}') + # rubocop:enable RSpec/VerifiedDoubles + + expect(HTTParty).to receive(:delete).with( + "https://graph.facebook.com/v14.0/#{whatsapp_channel.provider_config['business_account_id']}/message_templates?name=test_template", + headers: { + 'Authorization' => "Bearer #{whatsapp_channel.provider_config['api_key']}", + 'Content-Type' => 'application/json' + } + ).and_return(mock_response) + + result = service.delete_template('test_template') + expect(result).to eq({ success: true, response_body: '{}' }) + end + + it 'uses default template name when none provided' do + # rubocop:disable RSpec/VerifiedDoubles + mock_response = double('response', success?: true, body: '{}') + # rubocop:enable RSpec/VerifiedDoubles + + expect(HTTParty).to receive(:delete).with( + "https://graph.facebook.com/v14.0/#{whatsapp_channel.provider_config['business_account_id']}/message_templates?name=#{expected_template_name}", + anything + ).and_return(mock_response) + + service.delete_template + end + + it 'returns failure response when API call fails' do + # rubocop:disable RSpec/VerifiedDoubles + mock_response = double('response', success?: false, body: '{"error": "Template not found"}') + # rubocop:enable RSpec/VerifiedDoubles + allow(HTTParty).to receive(:delete).and_return(mock_response) + + result = service.delete_template('test_template') + expect(result).to eq({ success: false, response_body: '{"error": "Template not found"}' }) + end + end + + describe '#get_template_status' do + it 'makes GET request to correct endpoint' do + # rubocop:disable RSpec/VerifiedDoubles + mock_response = double('response', success?: true, body: '{}') + # rubocop:enable RSpec/VerifiedDoubles + allow(mock_response).to receive(:[]).with('data').and_return([{ + 'id' => '123', + 'name' => 'test_template', + 'status' => 'APPROVED', + 'language' => 'en' + }]) + + expect(HTTParty).to receive(:get).with( + "https://graph.facebook.com/v14.0/#{whatsapp_channel.provider_config['business_account_id']}/message_templates?name=test_template", + headers: { + 'Authorization' => "Bearer #{whatsapp_channel.provider_config['api_key']}", + 'Content-Type' => 'application/json' + } + ).and_return(mock_response) + + service.get_template_status('test_template') + end + + it 'returns success response when template exists' do + # rubocop:disable RSpec/VerifiedDoubles + mock_response = double('response', success?: true, body: '{}') + # rubocop:enable RSpec/VerifiedDoubles + allow(mock_response).to receive(:[]).with('data').and_return([{ + 'id' => '123', + 'name' => 'test_template', + 'status' => 'APPROVED', + 'language' => 'en' + }]) + allow(HTTParty).to receive(:get).and_return(mock_response) + + result = service.get_template_status('test_template') + + expect(result).to eq({ + success: true, + template: { + id: '123', + name: 'test_template', + status: 'APPROVED', + language: 'en' + } + }) + end + + it 'returns failure response when template not found' do + # rubocop:disable RSpec/VerifiedDoubles + mock_response = double('response', success?: true, body: '{}') + # rubocop:enable RSpec/VerifiedDoubles + allow(mock_response).to receive(:[]).with('data').and_return([]) + allow(HTTParty).to receive(:get).and_return(mock_response) + + result = service.get_template_status('test_template') + expect(result).to eq({ success: false, error: 'Template not found' }) + end + + it 'returns failure response when API call fails' do + # rubocop:disable RSpec/VerifiedDoubles + mock_response = double('response', success?: false, body: '{}') + # rubocop:enable RSpec/VerifiedDoubles + allow(HTTParty).to receive(:get).and_return(mock_response) + + result = service.get_template_status('test_template') + expect(result).to eq({ success: false, error: 'Template not found' }) + end + + context 'when API raises an exception' do + before do + allow(HTTParty).to receive(:get).and_raise(StandardError, 'Network error') + allow(Rails.logger).to receive(:error) + end + + it 'handles exceptions gracefully' do + result = service.get_template_status('test_template') + expect(result).to eq({ success: false, error: 'Network error' }) + end + + it 'logs the error' do + expect(Rails.logger).to receive(:error).with('Error fetching template status: Network error') + service.get_template_status('test_template') + end + end + end +end diff --git a/spec/services/whatsapp/providers/whatsapp_cloud_service_spec.rb b/spec/services/whatsapp/providers/whatsapp_cloud_service_spec.rb index 69ba69379..156e46349 100644 --- a/spec/services/whatsapp/providers/whatsapp_cloud_service_spec.rb +++ b/spec/services/whatsapp/providers/whatsapp_cloud_service_spec.rb @@ -312,4 +312,92 @@ describe Whatsapp::Providers::WhatsappCloudService do end end end + + describe 'CSAT template methods' do + let(:mock_csat_template_service) { instance_double(Whatsapp::CsatTemplateService) } + let(:expected_template_name) { "customer_satisfaction_survey_#{whatsapp_channel.inbox.id}" } + let(:template_config) do + { + name: expected_template_name, + language: 'en', + category: 'UTILITY' + } + end + + before do + allow(Whatsapp::CsatTemplateService).to receive(:new) + .with(whatsapp_channel) + .and_return(mock_csat_template_service) + end + + describe '#create_csat_template' do + it 'delegates to csat_template_service with correct config' do + allow(mock_csat_template_service).to receive(:create_template) + .with(template_config) + .and_return({ success: true, template_id: '123' }) + + result = service.create_csat_template(template_config) + + expect(mock_csat_template_service).to have_received(:create_template).with(template_config) + expect(result).to eq({ success: true, template_id: '123' }) + end + end + + describe '#delete_csat_template' do + it 'delegates to csat_template_service with default template name' do + allow(mock_csat_template_service).to receive(:delete_template) + .with(expected_template_name) + .and_return({ success: true }) + + result = service.delete_csat_template + + expect(mock_csat_template_service).to have_received(:delete_template).with(expected_template_name) + expect(result).to eq({ success: true }) + end + + it 'delegates to csat_template_service with custom template name' do + custom_template_name = 'custom_csat_template' + allow(mock_csat_template_service).to receive(:delete_template) + .with(custom_template_name) + .and_return({ success: true }) + + result = service.delete_csat_template(custom_template_name) + + expect(mock_csat_template_service).to have_received(:delete_template).with(custom_template_name) + expect(result).to eq({ success: true }) + end + end + + describe '#get_template_status' do + it 'delegates to csat_template_service with template name' do + template_name = 'customer_survey_template' + expected_response = { success: true, template: { status: 'APPROVED' } } + allow(mock_csat_template_service).to receive(:get_template_status) + .with(template_name) + .and_return(expected_response) + + result = service.get_template_status(template_name) + + expect(mock_csat_template_service).to have_received(:get_template_status).with(template_name) + expect(result).to eq(expected_response) + end + end + + describe 'csat_template_service memoization' do + it 'creates and memoizes the csat_template_service instance' do + allow(Whatsapp::CsatTemplateService).to receive(:new) + .with(whatsapp_channel) + .and_return(mock_csat_template_service) + allow(mock_csat_template_service).to receive(:get_template_status) + .and_return({ success: true }) + + # Call multiple methods that use the service + service.get_template_status('test1') + service.get_template_status('test2') + + # Verify the service was only instantiated once + expect(Whatsapp::CsatTemplateService).to have_received(:new).once + end + end + end end From df4c8cf58b7b593e0eb0e0206dd8ef048ddaff77 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Thu, 11 Dec 2025 19:58:59 +0530 Subject: [PATCH 03/29] chore: Strip unsupported signature formatting by channel (#13046) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Pull Request Template ## Description 1. This PR is an enhancement to https://github.com/chatwoot/chatwoot/pull/13045 It strips unsupported formatting from **message signatures** based on each channel’s formatting capabilities defined in the `FORMATTING` config 2. Remove usage of plain editor in Compose new conversation modal Only the following signature elements are considered: bold (strong), italic (em), links (link), images (image).

Any formatting not supported by the target channel is automatically removed before the signature is appended.

Channel-wise Signature Formatting Support

Channel | Keeps in Signature | Strips from Signature -- | -- | -- Email | bold, italic, links, images | — WebWidget | bold, italic, links, images | — API | bold, italic | links, images WhatsApp | bold, italic | links, images Telegram | bold, italic, links | images Facebook | bold, italic | links, images Instagram | bold, italic | links, images Line | bold, italic | links, images SMS | — | everything Twilio SMS | — | everything Twitter/X | — | everything

📝 Note

Message signatures only support bold, italic, links, and images.
Other formatting options available in the editor (lists, code blocks, strike-through, etc.) do not apply to signatures and are ignored.

## Type of change - [x] New feature (non-breaking change which adds functionality) ## How Has This Been Tested? ### Loom video https://www.loom.com/share/d325ab86ca514c6d8f90dfe72a8928dd ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [x] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --------- Co-authored-by: Muhsin Keloth --- .../components-next/Editor/Editor.vue | 2 + .../components/ComposeNewConversationForm.vue | 25 +++- .../components/MessageEditor.vue | 119 ++++-------------- .../components/widgets/WootWriter/Editor.vue | 31 ++++- .../widgets/conversation/ReplyBox.vue | 22 +++- app/javascript/dashboard/constants/editor.js | 12 +- .../dashboard/helper/editorHelper.js | 111 ++++++++++++---- app/javascript/dashboard/helper/inbox.js | 5 + .../helper/specs/editorHelper.spec.js | 110 ++++++++++++---- 9 files changed, 270 insertions(+), 167 deletions(-) diff --git a/app/javascript/dashboard/components-next/Editor/Editor.vue b/app/javascript/dashboard/components-next/Editor/Editor.vue index ff1c616de..90b7a0c31 100644 --- a/app/javascript/dashboard/components-next/Editor/Editor.vue +++ b/app/javascript/dashboard/components-next/Editor/Editor.vue @@ -24,6 +24,7 @@ const props = defineProps({ allowSignature: { type: Boolean, default: false }, sendWithSignature: { type: Boolean, default: false }, channelType: { type: String, default: '' }, + medium: { type: String, default: '' }, }); const emit = defineEmits(['update:modelValue']); @@ -106,6 +107,7 @@ watch( :allow-signature="allowSignature" :send-with-signature="sendWithSignature" :channel-type="channelType" + :medium="medium" @input="handleInput" @focus="handleFocus" @blur="handleBlur" diff --git a/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue b/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue index 52ca95a07..77267707b 100644 --- a/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue +++ b/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue @@ -6,6 +6,7 @@ import { INBOX_TYPES } from 'dashboard/helper/inbox'; import { appendSignature, removeSignature, + getEffectiveChannelType, } from 'dashboard/helper/editorHelper'; import { buildContactableInboxesList, @@ -86,6 +87,12 @@ const whatsappMessageTemplates = computed(() => const inboxChannelType = computed(() => props.targetInbox?.channelType || ''); +const inboxMedium = computed(() => props.targetInbox?.medium || ''); + +const effectiveChannelType = computed(() => + getEffectiveChannelType(inboxChannelType.value, inboxMedium.value) +); + const validationRules = computed(() => ({ selectedContact: { required }, targetInbox: { required }, @@ -202,7 +209,11 @@ const removeSignatureFromMessage = () => { // Always remove the signature from message content when inbox/contact is removed // to ensure no leftover signature content remains if (props.messageSignature) { - state.message = removeSignature(state.message, props.messageSignature); + state.message = removeSignature( + state.message, + props.messageSignature, + effectiveChannelType.value + ); } }; @@ -214,9 +225,9 @@ const removeTargetInbox = value => { }; const clearSelectedContact = () => { + removeSignatureFromMessage(); emit('clearSelectedContact'); state.attachedFiles = []; - removeSignatureFromMessage(); }; const onClickInsertEmoji = emoji => { @@ -227,12 +238,16 @@ const handleAddSignature = signature => { state.message = appendSignature( state.message, signature, - inboxChannelType.value + effectiveChannelType.value ); }; const handleRemoveSignature = signature => { - state.message = removeSignature(state.message, signature); + state.message = removeSignature( + state.message, + signature, + effectiveChannelType.value + ); }; const handleAttachFile = files => { @@ -356,10 +371,10 @@ const shouldShowMessageEditor = computed(() => { v-model="state.message" :message-signature="messageSignature" :send-with-signature="sendWithSignature" - :is-email-or-web-widget-inbox="inboxTypes.isEmailOrWebWidget" :has-errors="validationStates.isMessageInvalid" :has-attachments="state.attachedFiles.length > 0" :channel-type="inboxChannelType" + :medium="targetInbox?.medium || ''" /> -import { ref, watch, nextTick } from 'vue'; import { useI18n } from 'vue-i18n'; -import { - appendSignature, - removeSignature, -} from 'dashboard/helper/editorHelper'; import Editor from 'dashboard/components-next/Editor/Editor.vue'; -import TextArea from 'dashboard/components-next/textarea/TextArea.vue'; -import CannedResponse from 'dashboard/components/widgets/conversation/CannedResponse.vue'; -const props = defineProps({ - isEmailOrWebWidgetInbox: { type: Boolean, required: true }, +defineProps({ hasErrors: { type: Boolean, default: false }, hasAttachments: { type: Boolean, default: false }, sendWithSignature: { type: Boolean, default: false }, messageSignature: { type: String, default: '' }, channelType: { type: String, default: '' }, + medium: { type: String, default: '' }, }); const { t } = useI18n(); @@ -25,98 +18,28 @@ const modelValue = defineModel({ type: String, default: '', }); - -const state = ref({ - hasSlashCommand: false, - showMentions: false, - mentionSearchKey: '', -}); - -watch( - modelValue, - newValue => { - if (props.isEmailOrWebWidgetInbox) return; - - const bodyWithoutSignature = newValue - ? removeSignature(newValue, props.messageSignature) - : ''; - - // Check if message starts with slash - const startsWithSlash = bodyWithoutSignature.startsWith('/'); - - // Update slash command and mentions state - state.value = { - ...state.value, - hasSlashCommand: startsWithSlash, - showMentions: startsWithSlash, - mentionSearchKey: startsWithSlash ? bodyWithoutSignature.slice(1) : '', - }; - }, - { immediate: true } -); - -const hideMention = () => { - state.value.showMentions = false; -}; - -const replaceText = async message => { - // Only append signature on replace if sendWithSignature is true - const finalMessage = props.sendWithSignature - ? appendSignature(message, props.messageSignature, props.channelType) - : message; - - await nextTick(); - modelValue.value = finalMessage; -}; diff --git a/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue b/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue index 318727acc..7a2a489ac 100644 --- a/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue +++ b/app/javascript/dashboard/components/widgets/WootWriter/Editor.vue @@ -54,6 +54,7 @@ import { getFormattingForEditor, getSelectionCoords, calculateMenuPosition, + getEffectiveChannelType, } from 'dashboard/helper/editorHelper'; import { hasPressedEnterAndNotCmdOrShift, @@ -81,6 +82,7 @@ const props = defineProps({ // are triggered except when this flag is true allowSignature: { type: Boolean, default: false }, channelType: { type: String, default: '' }, + medium: { type: String, default: '' }, showImageResizeToolbar: { type: Boolean, default: false }, // A kill switch to show or hide the image toolbar focusOnMount: { type: Boolean, default: true }, }); @@ -105,10 +107,16 @@ const TYPING_INDICATOR_IDLE_TIME = 4000; const MAXIMUM_FILE_UPLOAD_SIZE = 4; // in MB const DEFAULT_FORMATTING = 'Context::Default'; +const effectiveChannelType = computed(() => + getEffectiveChannelType(props.channelType, props.medium) +); + const editorSchema = computed(() => { if (!props.channelType) return messageSchema; - const formatType = props.isPrivate ? DEFAULT_FORMATTING : props.channelType; + const formatType = props.isPrivate + ? DEFAULT_FORMATTING + : effectiveChannelType.value; const formatting = getFormattingForEditor(formatType); return buildMessageSchema(formatting.marks, formatting.nodes); }); @@ -116,7 +124,7 @@ const editorSchema = computed(() => { const editorMenuOptions = computed(() => { const formatType = props.isPrivate ? DEFAULT_FORMATTING - : props.channelType || DEFAULT_FORMATTING; + : effectiveChannelType.value || DEFAULT_FORMATTING; const formatting = getFormattingForEditor(formatType); return formatting.menu; }); @@ -301,8 +309,13 @@ function isBodyEmpty(content) { // if the signature is present, we need to remove it before checking // note that we don't update the editorView, so this is safe + // Use effective channel type to match how signature was appended const bodyWithoutSignature = props.signature - ? removeSignatureHelper(content, props.signature) + ? removeSignatureHelper( + content, + props.signature, + effectiveChannelType.value + ) : content; // trimming should remove all the whitespaces, so we can check the length @@ -370,7 +383,11 @@ function addSignature() { // see if the content is empty, if it is before appending the signature // we need to add a paragraph node and move the cursor at the start of the editor const contentWasEmpty = isBodyEmpty(content); - content = appendSignature(content, props.signature, props.channelType); + content = appendSignature( + content, + props.signature, + effectiveChannelType.value + ); // need to reload first, ensuring that the editorView is updated reloadState(content); @@ -382,7 +399,11 @@ function addSignature() { function removeSignature() { if (!props.signature) return; let content = props.modelValue; - content = removeSignatureHelper(content, props.signature); + content = removeSignatureHelper( + content, + props.signature, + effectiveChannelType.value + ); // reload the state, ensuring that the editorView is updated reloadState(content); } diff --git a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue index 0e698e0c6..6f955ffd5 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue @@ -43,6 +43,7 @@ import fileUploadMixin from 'dashboard/mixins/fileUploadMixin'; import { appendSignature, removeSignature, + getEffectiveChannelType, } from 'dashboard/helper/editorHelper'; import { LOCAL_STORAGE_KEYS } from 'dashboard/constants/localStorage'; @@ -564,9 +565,13 @@ export default { return message; } + const effectiveChannelType = getEffectiveChannelType( + this.channelType, + this.inbox?.medium || '' + ); return this.sendWithSignature - ? appendSignature(message, this.messageSignature, this.channelType) - : removeSignature(message, this.messageSignature); + ? appendSignature(message, this.messageSignature, effectiveChannelType) + : removeSignature(message, this.messageSignature, effectiveChannelType); }, removeFromDraft() { if (this.conversationIdByRoute) { @@ -757,10 +762,14 @@ export default { // if signature is enabled, append it to the message // appendSignature ensures that the signature is not duplicated // so we don't need to check if the signature is already present + const effectiveChannelType = getEffectiveChannelType( + this.channelType, + this.inbox?.medium || '' + ); message = appendSignature( message, this.messageSignature, - this.channelType + effectiveChannelType ); } @@ -800,10 +809,14 @@ export default { this.message = ''; if (this.sendWithSignature && !this.isPrivate) { // if signature is enabled, append it to the message + const effectiveChannelType = getEffectiveChannelType( + this.channelType, + this.inbox?.medium || '' + ); this.message = appendSignature( this.message, this.messageSignature, - this.channelType + effectiveChannelType ); } this.attachedFiles = []; @@ -1121,6 +1134,7 @@ export default { :signature="messageSignature" allow-signature :channel-type="channelType" + :medium="inbox.medium" @typing-off="onTypingOff" @typing-on="onTypingOn" @focus="onFocus" diff --git a/app/javascript/dashboard/constants/editor.js b/app/javascript/dashboard/constants/editor.js index eaec36371..087caa99f 100644 --- a/app/javascript/dashboard/constants/editor.js +++ b/app/javascript/dashboard/constants/editor.js @@ -210,7 +210,12 @@ export const MARKDOWN_PATTERNS = [ type: 'em', // PM: em, eg: *italic* or _italic_ patterns: [ { pattern: /(? arr.includes(key); + + // Define stripping rules: [condition, pattern, replacement] + const rules = [ + [!has(nodes, 'image'), /!\[.*?\]\(.*?\)/g, ''], + [!has(marks, 'link'), /\[([^\]]+)\]\([^)]+\)/g, '$1'], + [!has(nodes, 'codeBlock'), /```[\s\S]*?```/g, ''], + [!has(marks, 'code'), /`([^`]+)`/g, '$1'], + [!has(marks, 'strong'), /\*\*([^*]+)\*\*/g, '$1'], + [!has(marks, 'strong'), /__([^_]+)__/g, '$1'], + [!has(marks, 'em'), /\*([^*]+)\*/g, '$1'], + // Match _text_ only at word boundaries (whitespace/string start/end) + // Preserves underscores in URLs (e.g., https://example.com/path_name) and variable names + [ + !has(marks, 'em'), + /(?<=^|[\s])_([^_\s][^_]*[^_\s]|[^_\s])_(?=$|[\s])/g, + '$1', + ], + [!has(marks, 'strike'), /~~([^~]+)~~/g, '$1'], + [!has(nodes, 'blockquote'), /^>\s?/gm, ''], + [!has(nodes, 'bulletList'), /^[-*+]\s+/gm, ''], + [!has(nodes, 'orderedList'), /^\d+\.\s+/gm, ''], + ]; + + const result = rules.reduce( + (text, [shouldStrip, pattern, replacement]) => + shouldStrip ? text.replace(pattern, replacement) : text, + markdown + ); + + return result + .split('\n') + .map(line => line.trim()) + .filter(Boolean) + .join('\n') + .replace(/\n{2,}/g, '\n') + .trim(); +} + /** * The delimiter used to separate the signature from the rest of the body. * @type {string} @@ -97,29 +144,36 @@ export function findSignatureInBody(body, signature) { } /** - * Checks if the channel supports image signatures. + * Gets the effective channel type for formatting purposes. + * For Twilio channels, returns WhatsApp or Twilio based on medium. * - * @param {string} channelType - The channel type. - * @returns {boolean} - True if the channel supports image signatures. + * @param {string} channelType - The channel type + * @param {string} medium - Optional. The medium for Twilio channels (sms/whatsapp) + * @returns {string} - The effective channel type for formatting */ -export function supportsImageSignature(channelType) { - return CHANNEL_WITH_RICH_SIGNATURE.includes(channelType); +export function getEffectiveChannelType(channelType, medium) { + if (channelType === INBOX_TYPES.TWILIO) { + return medium === TWILIO_CHANNEL_MEDIUM.WHATSAPP + ? INBOX_TYPES.WHATSAPP + : INBOX_TYPES.TWILIO; + } + return channelType; } /** * Appends the signature to the body, separated by the signature delimiter. - * Automatically strips images for channels that don't support image signatures. + * Automatically strips unsupported formatting based on channel capabilities. * * @param {string} body - The body to append the signature to. * @param {string} signature - The signature to append. - * @param {string} channelType - Optional. The channel type to determine if images should be stripped. + * @param {string} channelType - Optional. The effective channel type to determine supported formatting. + * For Twilio channels, pass the result of getEffectiveChannelType(). * @returns {string} - The body with the signature appended. */ export function appendSignature(body, signature, channelType) { - // For channels that don't support images, strip markdown formatting - const shouldStripImages = channelType && !supportsImageSignature(channelType); - const preparedSignature = shouldStripImages - ? extractTextFromMarkdown(signature) + // Strip only unsupported formatting based on channel capabilities + const preparedSignature = channelType + ? stripUnsupportedSignatureMarkdown(signature, channelType) : signature; const cleanedSignature = cleanSignature(preparedSignature); // if signature is already present, return body @@ -132,21 +186,28 @@ export function appendSignature(body, signature, channelType) { /** * Removes the signature from the body, along with the signature delimiter. - * Tries to find both the original signature and the stripped version (for non-image channels). + * Tries to find both the original signature and the stripped version. * * @param {string} body - The body to remove the signature from. * @param {string} signature - The signature to remove. + * @param {string} channelType - Optional. The effective channel type for channel-specific stripping. + * For Twilio channels, pass the result of getEffectiveChannelType(). * @returns {string} - The body with the signature removed. */ -export function removeSignature(body, signature) { - // Build list of signatures to try: original first, then stripped version - // Always try both to handle cases where channelType is unknown or inbox is being removed +export function removeSignature(body, signature, channelType) { + // Build list of signatures to try: original, channel-stripped, and fully stripped const cleanedSignature = cleanSignature(signature); - const strippedSignature = cleanSignature(extractTextFromMarkdown(signature)); - const signaturesToTry = - cleanedSignature === strippedSignature - ? [cleanedSignature] - : [cleanedSignature, strippedSignature]; + const channelStripped = channelType + ? cleanSignature(stripUnsupportedSignatureMarkdown(signature, channelType)) + : null; + const fullyStripped = cleanSignature(extractTextFromMarkdown(signature)); + + // Try signatures in order: original → channel-specific → fully stripped + const signaturesToTry = [ + cleanedSignature, + channelStripped, + fullyStripped, + ].filter((sig, i, arr) => sig && arr.indexOf(sig) === i); // Remove nulls and duplicates // Find the first matching signature const signatureIndex = signaturesToTry.reduce( diff --git a/app/javascript/dashboard/helper/inbox.js b/app/javascript/dashboard/helper/inbox.js index 501375ab7..05823e8a7 100644 --- a/app/javascript/dashboard/helper/inbox.js +++ b/app/javascript/dashboard/helper/inbox.js @@ -13,6 +13,11 @@ export const INBOX_TYPES = { VOICE: 'Channel::Voice', }; +export const TWILIO_CHANNEL_MEDIUM = { + WHATSAPP: 'whatsapp', + SMS: 'sms', +}; + const INBOX_ICON_MAP_FILL = { [INBOX_TYPES.WEB]: 'i-ri-global-fill', [INBOX_TYPES.FB]: 'i-ri-messenger-fill', diff --git a/app/javascript/dashboard/helper/specs/editorHelper.spec.js b/app/javascript/dashboard/helper/specs/editorHelper.spec.js index 07dfbf1e5..1ae765ca7 100644 --- a/app/javascript/dashboard/helper/specs/editorHelper.spec.js +++ b/app/javascript/dashboard/helper/specs/editorHelper.spec.js @@ -5,7 +5,7 @@ import { replaceSignature, cleanSignature, extractTextFromMarkdown, - supportsImageSignature, + stripUnsupportedSignatureMarkdown, insertAtCursor, findNodeToInsertImage, setURLWithQueryAndSize, @@ -145,10 +145,63 @@ describe('appendSignature', () => { }); }); +describe('stripUnsupportedSignatureMarkdown', () => { + const richSignature = + '**Bold** _italic_ [link](http://example.com) ![](http://localhost:3000/image.png)'; + + it('keeps all formatting for Email channel (supports image, link, strong, em)', () => { + const result = stripUnsupportedSignatureMarkdown( + richSignature, + 'Channel::Email' + ); + expect(result).toContain('**Bold**'); + expect(result).toContain('_italic_'); + expect(result).toContain('[link](http://example.com)'); + expect(result).toContain('![](http://localhost:3000/image.png)'); + }); + it('strips images but keeps bold/italic for Api channel', () => { + const result = stripUnsupportedSignatureMarkdown( + richSignature, + 'Channel::Api' + ); + expect(result).toContain('**Bold**'); + expect(result).toContain('_italic_'); + expect(result).toContain('link'); // link text kept + expect(result).not.toContain('[link]('); // link syntax removed + expect(result).not.toContain('![]('); // image removed + }); + it('strips images but keeps bold/italic/link for Telegram channel', () => { + const result = stripUnsupportedSignatureMarkdown( + richSignature, + 'Channel::Telegram' + ); + expect(result).toContain('**Bold**'); + expect(result).toContain('_italic_'); + expect(result).toContain('[link](http://example.com)'); + expect(result).not.toContain('![]('); + }); + it('strips all formatting for SMS channel', () => { + const result = stripUnsupportedSignatureMarkdown( + richSignature, + 'Channel::Sms' + ); + expect(result).toContain('Bold'); + expect(result).toContain('italic'); + expect(result).toContain('link'); + expect(result).not.toContain('**'); + expect(result).not.toContain('_'); + expect(result).not.toContain('['); + expect(result).not.toContain('![]('); + }); + it('returns empty string for empty input', () => { + expect(stripUnsupportedSignatureMarkdown('', 'Channel::Api')).toBe(''); + expect(stripUnsupportedSignatureMarkdown(null, 'Channel::Api')).toBe(''); + }); +}); + describe('appendSignature with channelType', () => { const signatureWithImage = 'Thanks\n![](http://localhost:3000/image.png?cw_image_height=24px)'; - const strippedSignature = 'Thanks'; it('keeps images for Email channel', () => { const result = appendSignature( @@ -166,24 +219,31 @@ describe('appendSignature with channelType', () => { ); expect(result).toContain('![](http://localhost:3000/image.png'); }); - it('strips images for Api channel', () => { + it('strips images but keeps text for Api channel', () => { const result = appendSignature('Hello', signatureWithImage, 'Channel::Api'); expect(result).not.toContain('![]('); - expect(result).toContain(strippedSignature); + expect(result).toContain('Thanks'); }); - it('strips images for WhatsApp channel', () => { + it('strips images but keeps text for WhatsApp channel', () => { const result = appendSignature( 'Hello', signatureWithImage, 'Channel::Whatsapp' ); expect(result).not.toContain('![]('); - expect(result).toContain(strippedSignature); + expect(result).toContain('Thanks'); }); it('keeps images when channelType is not provided', () => { const result = appendSignature('Hello', signatureWithImage); expect(result).toContain('![](http://localhost:3000/image.png'); }); + it('keeps bold/italic for channels that support them', () => { + const boldSignature = '**Bold** *italic* Thanks'; + const result = appendSignature('Hello', boldSignature, 'Channel::Api'); + // Api supports strong and em + expect(result).toContain('**Bold**'); + expect(result).toContain('*italic*'); + }); }); describe('cleanSignature', () => { @@ -331,24 +391,6 @@ describe('extractTextFromMarkdown', () => { }); }); -describe('supportsImageSignature', () => { - it('returns true for Email channel', () => { - expect(supportsImageSignature('Channel::Email')).toBe(true); - }); - it('returns true for WebWidget channel', () => { - expect(supportsImageSignature('Channel::WebWidget')).toBe(true); - }); - it('returns false for Api channel', () => { - expect(supportsImageSignature('Channel::Api')).toBe(false); - }); - it('returns false for WhatsApp channel', () => { - expect(supportsImageSignature('Channel::Whatsapp')).toBe(false); - }); - it('returns false for Telegram channel', () => { - expect(supportsImageSignature('Channel::Telegram')).toBe(false); - }); -}); - describe('insertAtCursor', () => { it('should return undefined if editorView is not provided', () => { const result = insertAtCursor(undefined, schema.text('Hello'), 0); @@ -884,6 +926,26 @@ describe('stripUnsupportedFormatting', () => { ); }); + it('preserves underscores in URLs and mid-word positions', () => { + // Underscores in URLs should not be stripped as italic formatting + expect( + stripUnsupportedFormatting( + 'https://www.chatwoot.com/new_first_second-third/ssd', + emptySchema + ) + ).toBe('https://www.chatwoot.com/new_first_second-third/ssd'); + + // Underscores in variable names should not be stripped + expect( + stripUnsupportedFormatting('some_variable_name', emptySchema) + ).toBe('some_variable_name'); + + // But actual italic formatting with spaces should still be stripped + expect( + stripUnsupportedFormatting('hello _world_ there', emptySchema) + ).toBe('hello world there'); + }); + it('strips inline code formatting', () => { expect(stripUnsupportedFormatting('`inline code`', emptySchema)).toBe( 'inline code' From 696564863cecc1e74fb5eec9966a104ce760522f Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Fri, 12 Dec 2025 10:14:22 +0530 Subject: [PATCH 04/29] feat: Add plain-text editor for non-rich content channels (#13058) # Pull Request Template ## Description This PR restores the plain text editor for all channels except Website, Email, and API. ## Type of change - [x] Bug fix (non-breaking change which fixes an issue) ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --- .../components/ComposeNewConversationForm.vue | 3 + .../components/MessageEditor.vue | 6 +- .../widgets/conversation/ReplyBox.vue | 213 ++++++++++++++---- .../shared/components/ResizableTextArea.vue | 7 +- 4 files changed, 186 insertions(+), 43 deletions(-) diff --git a/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue b/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue index 77267707b..74836219b 100644 --- a/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue +++ b/app/javascript/dashboard/components-next/NewConversation/components/ComposeNewConversationForm.vue @@ -200,6 +200,7 @@ const setSelectedContact = async ({ value, action, ...rest }) => { const handleInboxAction = ({ value, action, ...rest }) => { v$.value.$reset(); + state.message = ''; emit('updateTargetInbox', { ...rest }); showInboxesDropdown.value = false; state.attachedFiles = []; @@ -220,6 +221,7 @@ const removeSignatureFromMessage = () => { const removeTargetInbox = value => { v$.value.$reset(); removeSignatureFromMessage(); + state.message = ''; emit('updateTargetInbox', value); state.attachedFiles = []; }; @@ -227,6 +229,7 @@ const removeTargetInbox = value => { const clearSelectedContact = () => { removeSignatureFromMessage(); emit('clearSelectedContact'); + state.message = ''; state.attachedFiles = []; }; diff --git a/app/javascript/dashboard/components-next/NewConversation/components/MessageEditor.vue b/app/javascript/dashboard/components-next/NewConversation/components/MessageEditor.vue index 2cda75e53..ef523a288 100644 --- a/app/javascript/dashboard/components-next/NewConversation/components/MessageEditor.vue +++ b/app/javascript/dashboard/components-next/NewConversation/components/MessageEditor.vue @@ -1,9 +1,10 @@ + + diff --git a/app/javascript/dashboard/components-next/year-in-review/YearInReviewBanner.vue b/app/javascript/dashboard/components-next/year-in-review/YearInReviewBanner.vue new file mode 100644 index 000000000..7c262f3b2 --- /dev/null +++ b/app/javascript/dashboard/components-next/year-in-review/YearInReviewBanner.vue @@ -0,0 +1,93 @@ + + + diff --git a/app/javascript/dashboard/components-next/year-in-review/YearInReviewModal.vue b/app/javascript/dashboard/components-next/year-in-review/YearInReviewModal.vue new file mode 100644 index 000000000..b6cf23975 --- /dev/null +++ b/app/javascript/dashboard/components-next/year-in-review/YearInReviewModal.vue @@ -0,0 +1,384 @@ + + + diff --git a/app/javascript/dashboard/components-next/year-in-review/slides/BusiestDaySlide.vue b/app/javascript/dashboard/components-next/year-in-review/slides/BusiestDaySlide.vue new file mode 100644 index 000000000..3f76bfbd4 --- /dev/null +++ b/app/javascript/dashboard/components-next/year-in-review/slides/BusiestDaySlide.vue @@ -0,0 +1,76 @@ + + + diff --git a/app/javascript/dashboard/components-next/year-in-review/slides/ConversationsSlide.vue b/app/javascript/dashboard/components-next/year-in-review/slides/ConversationsSlide.vue new file mode 100644 index 000000000..7f92fe05a --- /dev/null +++ b/app/javascript/dashboard/components-next/year-in-review/slides/ConversationsSlide.vue @@ -0,0 +1,94 @@ + + + diff --git a/app/javascript/dashboard/components-next/year-in-review/slides/IntroSlide.vue b/app/javascript/dashboard/components-next/year-in-review/slides/IntroSlide.vue new file mode 100644 index 000000000..8f47746fe --- /dev/null +++ b/app/javascript/dashboard/components-next/year-in-review/slides/IntroSlide.vue @@ -0,0 +1,43 @@ + + + diff --git a/app/javascript/dashboard/components-next/year-in-review/slides/PersonalitySlide.vue b/app/javascript/dashboard/components-next/year-in-review/slides/PersonalitySlide.vue new file mode 100644 index 000000000..016151c12 --- /dev/null +++ b/app/javascript/dashboard/components-next/year-in-review/slides/PersonalitySlide.vue @@ -0,0 +1,99 @@ + + + diff --git a/app/javascript/dashboard/components-next/year-in-review/slides/ThankYouSlide.vue b/app/javascript/dashboard/components-next/year-in-review/slides/ThankYouSlide.vue new file mode 100644 index 000000000..79c6293b9 --- /dev/null +++ b/app/javascript/dashboard/components-next/year-in-review/slides/ThankYouSlide.vue @@ -0,0 +1,43 @@ + + + diff --git a/app/javascript/dashboard/i18n/locale/en/index.js b/app/javascript/dashboard/i18n/locale/en/index.js index 17121fc61..a55f54165 100644 --- a/app/javascript/dashboard/i18n/locale/en/index.js +++ b/app/javascript/dashboard/i18n/locale/en/index.js @@ -38,6 +38,7 @@ import teamsSettings from './teamsSettings.json'; import whatsappTemplates from './whatsappTemplates.json'; import contentTemplates from './contentTemplates.json'; import mfa from './mfa.json'; +import yearInReview from './yearInReview.json'; export default { ...advancedFilters, @@ -80,4 +81,5 @@ export default { ...whatsappTemplates, ...contentTemplates, ...mfa, + ...yearInReview, }; diff --git a/app/javascript/dashboard/i18n/locale/en/settings.json b/app/javascript/dashboard/i18n/locale/en/settings.json index 4e51ef37a..3017e9464 100644 --- a/app/javascript/dashboard/i18n/locale/en/settings.json +++ b/app/javascript/dashboard/i18n/locale/en/settings.json @@ -234,6 +234,7 @@ "CONTACT_SUPPORT": "Contact support", "SELECTOR_SUBTITLE": "Select an account from the following list", "PROFILE_SETTINGS": "Profile settings", + "YEAR_IN_REVIEW": "Year in Review", "KEYBOARD_SHORTCUTS": "Keyboard shortcuts", "APPEARANCE": "Change appearance", "SUPER_ADMIN_CONSOLE": "SuperAdmin console", diff --git a/app/javascript/dashboard/i18n/locale/en/yearInReview.json b/app/javascript/dashboard/i18n/locale/en/yearInReview.json new file mode 100644 index 000000000..d72e0c679 --- /dev/null +++ b/app/javascript/dashboard/i18n/locale/en/yearInReview.json @@ -0,0 +1,64 @@ +{ + "YEAR_IN_REVIEW": { + "TITLE": "Year in Review", + "LOADING": "Loading your year in review...", + "ERROR": "Failed to load year in review", + "CLOSE": "Close", + "CONVERSATIONS": { + "TITLE": "You have handled", + "SUBTITLE": "conversations", + "FALLBACK": "This year wasn't about the numbers. It was about showing up.", + "COMPARISON": { + "0_50": "You showed up, and that's how every good inbox begins.", + "50_100": "You kept the replies flowing and the conversations alive.", + "100_500": "You handled serious volume and kept everything on track.", + "500_2000": "You kept things moving while the volume kept climbing.", + "2000_10000": "You ran high traffic through your inbox without breaking a sweat.", + "10000_PLUS": "That's a full city of customers knocking on your door. You made it look effortless." + } + }, + "BUSIEST_DAY": { + "TITLE": "Your busiest day was", + "MESSAGE": "{count} conversations that day.", + "COMPARISON": { + "0_5": "A warm-up lap that barely woke the inbox.", + "5_10": "Enough action to justify a second cup of coffee.", + "10_25": "Things got busy and the inbox stayed on its toes.", + "25_50": "A proper rush that barely broke a sweat.", + "50_100": "Controlled chaos, handled like a normal Tuesday.", + "100_500": "Absolute dumpster fire, somehow still shipping replies.", + "500_PLUS": "The inbox lost all chill and never slowed down." + } + }, + "PERSONALITY": { + "TITLE": "Your support personality is", + "MESSAGES": { + "SWIFT_HELPER": "You replied in {time} on average. Faster than most notifications.", + "QUICK_RESPONDER": "You replied in {time} on average. The inbox barely waited.", + "STEADY_SUPPORT": "You replied in {time} on average. Calm pace, solid replies.", + "THOUGHTFUL_ADVISOR": "You replied in {time} on average. Took the time to get it right." + } + }, + "THANK_YOU": { + "TITLE": "Congratulations on surviving the inbox of {year}.", + "MESSAGE": "Thank you for your incredible dedication to supporting customers throughout this year. Your hard work has made a real difference, and we're grateful to have you on this journey. Here's to making {nextYear} even better together!" + }, + "SHARE_MODAL": { + "TITLE": "Share Your Year in Review", + "PREPARING": "Preparing your image...", + "DOWNLOAD": "Download", + "SHARE_TITLE": "My {year} Year in Review", + "SHARE_TEXT": "Check out my {year} Year in Review with Chatwoot!", + "BRANDING": "Made with Chatwoot" + }, + "BANNER": { + "TITLE": "Your {year} Year in Review is here", + "BUTTON": "See your impact" + }, + "NAVIGATION": { + "PREVIOUS": "Previous", + "NEXT": "Next", + "SHARE": "Share" + } + } +} diff --git a/config/routes.rb b/config/routes.rb index f2f392157..15ab79822 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -425,6 +425,7 @@ Rails.application.routes.draw do get :bot_metrics end end + resource :year_in_review, only: [:show] resources :live_reports, only: [] do collection do get :conversation_metrics diff --git a/package.json b/package.json index 84c266880..1abe4f375 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,8 @@ "flag-icons": "^7.2.3", "floating-vue": "^5.2.2", "highlight.js": "^11.10.0", + "html-to-image": "^1.11.13", + "html2canvas": "^1.4.1", "idb": "^8.0.0", "js-cookie": "^3.0.5", "json-logic-js": "^2.0.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 602a3c5c7..28b82df6f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -127,6 +127,12 @@ importers: highlight.js: specifier: ^11.10.0 version: 11.10.0 + html-to-image: + specifier: ^1.11.13 + version: 1.11.13 + html2canvas: + specifier: ^1.4.1 + version: 1.4.1 idb: specifier: ^8.0.0 version: 8.0.0 @@ -1672,6 +1678,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base64-arraybuffer@1.0.2: + resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} + engines: {node: '>= 0.6.0'} + bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} @@ -1918,6 +1928,9 @@ packages: peerDependencies: postcss: ^8.4 + css-line-break@2.1.0: + resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} + css-prefers-color-scheme@8.0.2: resolution: {integrity: sha512-OvFghizHJ45x7nsJJUSYLyQNTzsCU8yWjxAc/nhPQg1pbs18LMoET8N3kOweFDPy0JV0OSXN2iqRFhPBHYOeMA==} engines: {node: ^14 || ^16 || >=18} @@ -2686,6 +2699,13 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-to-image@1.11.13: + resolution: {integrity: sha512-cuOPoI7WApyhBElTTb9oqsawRvZ0rHhaHwghRLlTuffoD1B2aDemlCruLeZrUIIdvG7gs9xeELEPm6PhuASqrg==} + + html2canvas@1.4.1: + resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} + engines: {node: '>=8.0.0'} + htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} @@ -4217,6 +4237,9 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} + text-segmentation@1.0.3: + resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} + text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -4413,6 +4436,9 @@ packages: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} engines: {node: '>= 0.4.0'} + utrie@1.0.2: + resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} + video.js@7.18.1: resolution: {integrity: sha512-mnXdmkVcD5qQdKMZafDjqdhrnKGettZaGSVkExjACiylSB4r2Yt5W1bchsKmjFpfuNfszsMjTUnnoIWSSqoe/Q==} @@ -6248,6 +6274,8 @@ snapshots: balanced-match@1.0.2: {} + base64-arraybuffer@1.0.2: {} + bidi-js@1.0.3: dependencies: require-from-string: 2.0.2 @@ -6530,6 +6558,10 @@ snapshots: postcss-selector-parser: 6.1.1 postcss-value-parser: 4.2.0 + css-line-break@2.1.0: + dependencies: + utrie: 1.0.2 + css-prefers-color-scheme@8.0.2(postcss@8.4.47): dependencies: postcss: 8.4.47 @@ -7464,6 +7496,13 @@ snapshots: html-escaper@2.0.2: {} + html-to-image@1.11.13: {} + + html2canvas@1.4.1: + dependencies: + css-line-break: 2.1.0 + text-segmentation: 1.0.3 + htmlparser2@8.0.2: dependencies: domelementtype: 2.3.0 @@ -9158,6 +9197,10 @@ snapshots: glob: 10.4.5 minimatch: 9.0.5 + text-segmentation@1.0.3: + dependencies: + utrie: 1.0.2 + text-table@0.2.0: {} thenify-all@1.6.0: @@ -9358,6 +9401,10 @@ snapshots: utils-merge@1.0.1: {} + utrie@1.0.2: + dependencies: + base64-arraybuffer: 1.0.2 + video.js@7.18.1: dependencies: '@babel/runtime': 7.25.6 diff --git a/public/assets/images/dashboard/year-in-review/double-quotes.png b/public/assets/images/dashboard/year-in-review/double-quotes.png new file mode 100644 index 0000000000000000000000000000000000000000..252eb7b284a43fac7a90c26ef6567de2ec0666ba GIT binary patch literal 723 zcmeAS@N?(olHy`uVBq!ia0vp^Q-L^-g&9cRx#_bENU@|l`Z_W&Z0zU$lgJ9>GZqKA zJ29*~C-V}>Q4H`2adj{70W$Fb-7mR^fzn(hL4Lsu3-;STlZdOHa6Wzp>t_ZACM!=D z$B>MBZ?9W>Gdl{ff9O7`nzgj|Xy~Gj30fVYT82L!tP*zpsI}E+sgShx$BQ?*6PBL* zIm>^g#*CYH-_++x>E6js|9ST9nR9VMuKUuze^S!=e?(n2Kj-(Xj8%I|W?VWTZtd%t z_}0`uoZn&17SZ{2Yvpov1vS^aDt|OF?2dBp*6EY3O9d@mBcIiBbcNBi2}QboQ#VLF zjXJ$#bo zu%vXMd+Rm$su1>pO6u)}MNArnd#`aIeQi^Bnc(-JylW&R9 z{mnn}P{mNxb)U#W}h|JBxU zP>bS}n%K1}rb67b;7f~H+KL&UUOw7hDK8fM&)oE2*!}}a+d|xvSVcEa@IKG~O=nl% zuT4kw4>4bv5q>jkQI|=AVX5fK6@B9CPPAlgT76+w%0>5!s}8?k>XN{JES3;;m2M@K`})SZ14Mqbcu zB~>H=fW}1JM{^8h8O2jmUJ6h*^Y%BgK&`HrRU^_EgD)MF-+yNGZ z|5AzS!vIKtBOabHF1Z^C06zvhdpmr+S_1c`=jSgrHoo&cr3YuV50qmAUc^xbU>P~y z*56y2JRKKb7jJc~QLVmpxxN;mVF#GyZUh)PqP%mRtCin~Dw9i{?>~Mh4+jGJ8%Dxf zIlTf_QgM)dc2DaI?%!d7>Df0_#D17N8sB?}UP#RtwP*d5p) zc2R!(0M^|9{(VILp!nK(xjQMQYXl-f}1a;wbpqb@O6yzB^Vu z3*QO*0kWTE;hydJeNdUW6FcAUv`_#5L&N0SbJx1_@HY#8<%m8YgwAcdI|%5%mIuq# zb$DfK4EXVaRPX80$!ck;ZT*6N2nCRNRoc6;GEtTj+v~(l2axDEsVd;T%y@rqpzAdK zkDL%dYcxXyKJ$3!suE57h7EWnzPIr=K4~Df+#}qT`#nIS?ybk&S6#6M;DLdb3r@Kx zibS0+SWyCQZO;$fEH_7)GUY1V+-RNrao-Ki<}R!sdVvBkuS#|Pv*q6s=qLKi zc4u3B9cT5U7ET3g1b8p{@%*wqBsE#ChD!z@@f~}n&5!pq$~#@*X!}Nb<;R?0)3opJ z_HW<$A2==10ah5`4)&Dx#iDJ3I4t)fQ?^1^5x2?Ps4|)xQxrg301fBav{O&~pQ+ql zJ!YnGu#0{~)6Y-1CwN4FqyrNl^UGYHE2VdT@oO*r!}iuny_f;xB=k800b=$lD#t_F z+pcE}n~uyN`g)}gqJU4xCUdBYc+8IRQ;la$nVwqP&e4^yNtUq>fc7d+4NT4G7cm(1 z(5d5@_0s6=**0phLK%D!P41J`5wh*yaiq|<)@s9*K31bkMjXH<%P2%Ip{ zF-q7Raa13{0K~q%>)~4#=6rBVaW>rXI-HpPpo2`Sj?mcvW3@ivg3b4ylwHY6S&Sdp zP(ubW!Kbdg_8QLoLumQa;|J{Yl!4xu_yA)1tEVp-Uj(#2MD%@!)O$!bBSs&IPBKs= zBvA`)`KBsWbAg~o*hI0bcEfqRQXH`XL1@WWl+ZBL*5z_fR-S(o!4)+ z+10Q%YeaXaX)ykjk&@$IeqZ(a{Tzb0?1D-&@aXI=1lN}sfF(`cgm^~-=q}3hpn9-5b_kHBfMb$$tYuUaalA+v9%)V z^6Fvc4h3+^a>(n)8E^0W%OE#qSyXM2&M*wQ3^o{#v|7Zear~Vg{nweW&t{Vo5DVyc z!5I^oUftKi4XnNU=yQejME&p#m%%;M1WVLjJsmvGOab&Q2H&BWv3u`pu#Z^ zm(j;$=MkL+3f~3Pklx&i1&-c8T;}RpzmJWDnPtc7!x(_GR(mahp(I2JdnZeVjXUc; zDxfX9UFb?hB~aPtr=E_o1G$3ru`W_dZjoune(da~ooL#Lg}uPYUK5N5I3sSI@HG_d zMGLKrX6FtvR1ntN%Y<12%*v^z&`ifmTFHvfrzR1S}4sgKp0C;(1c?i@XN@6`JzYi+Jomo^YH9g`6=0D#*Re-g7;^0cZ-<4{@G&`-Uivm%K(5bw)hG{Mm$tYlJ;~s0oGl{i%lN?>3m_W)*7XZ*VemQjNe7=-S*#2)(T5XSimY)`flHnlB8?Ut@Kp}eA=O(r2;&e2COwKEy zp}pW4WJGl9ON~x+v*IBd;NX0mW97}8eVvpwWM>jq7zdS;_y({Bj!!ryydKo{Y_n1$ za84y=+3`-e^+)TB>9F^;(6WcEG&@Y#-8H=7eD4m?vz>RF7M1)y&hfZDnwJxw!sXcc z#Fc9^NmnT8`6m}ZKy)i2<)h9HazQa{*~!X5hm?9)F5l}@&~qAH`4ndJu258pY%IhA=ap*Kb(&F@ZZ}vYDG`Ra#>E^O1LDluYbXx%Dz3v zP6UOvUI@7{U*|FLq%zC$M^f_Sz+!;HOXR;@hV?3{voPL?!CKKcxov(j|IK5XJxzb( zGVY{5p*oYjAU?gY9Gm)+-jwl5Vc4kS2#6Wn(s?A59=5S)+wpF#Jo7B0a-OI3^&5Zb z9Gc`l37=ny^&BkQ)&1Iqxob`t4Zcd-D(Tr zmk)NH{*)i0T4TI?819KvpV|1!5mEs~Uuu(ojgtu+(N8Fzq;a+*iR_9+Kn|ZSSec$x zs)`W(%Yo>h5UR-QvBkq0@{Y=cIN~q*2r?{ypcH2=Oc+EaJpb z?3|vHHRUa$h&r+6l?|h@z}RaeCC?!8diK zf(ZvN9JeuBD9!=Zq^j z`B87_Jp8Jnw~GZ1GN^FgT?yS4(H{XFQN-J{iL3Fars z6Ri(HE7t>LgM65HCJ4X6h)bKZVY4xGS9rDEYJrF3X>y2b#XW<;ym3l>Y z$WK-txn2O|HuzRw>+yj9rC#P*j|O?Ng(Y4Rs(f@gFdllG@$LJ0a)6dW1tcTY__bV( z)HIZ;9F7ga7ZRyjO%Kc7&Yb5>45na%$E#8BbNA~AT&||rJ3XSf5}57s++0rEO# zM_TNEz-Z>hf%{$<+0)(5B@Ee=B2^*MwQN-ue;9is=Xp5G@Y4}E*#RB88(#V2 zqc@+30ZFjh?mynaCcIORg*>LsX1u|7XKHrte`s(+uP#nq9p_2OsyerJuTiYL=5Mhw zyn?57^d=>;%m(c8|3w|Q!yc$YhZ?l6|7~cdT=L}AlZjqI9hOM8X&QV7iOf^Am9AHQ z7edHBsdu@xjvb7du?~@D02qJJZ1e;SJUWEN_x0)D*RAfOCUILZc-`P_zZM4v+ROZa zWK26lmlBgD<69~6i%tJvW|@f;)F{W!K=6Bq0VHux9F5Z>#+n4`BjR>CnGnG`=L8BX zto%@-yD+uy|Mv1qI>p~F@MVjJq7BF2wE>P6(X`!;qskz@WTR-+D~1L2G^J|`awFi7iIZb8&uo0 z5>l_PM`xCPc${Nf8AI8>Du+V7GlFYnHT8rnKNlL2gy3*nvly7tE?C53uHptRQi|%$ zKH$eA&Po%wvRsW<#<0He-+l9XN*HPR-eeut8P6qX#wl%j;_6;PUb52@gg9Ce$sdxy zqhg*vHaZQ?#hL(}cL9SU8!-zs$RmeDS>JVk7Hn7g#t(Sd)pR*`{9}5Hc$7Nu)W@X~ z+bE@wF5+5DKK{-npHe=vxK zWKeD%Xv<0zbn21gZ@FZt(;M69zcI83A{L5m+k5}1@98%|P~nwiO+>;FGL+$Kd}TJf zq_py3}O+m#ZYXG#}lT!lK#1F#hXF?3r^PQ-qKFuP6Cbh!^gY_ z2#~gMK8s}@u^laF;GEduEqNvy5bmnfmb$CCMTP={=gA*>0+PAvc$(ai#gO>VPVQ^9 zZ7m@z*i@-97#mHpxAedO^|-zZ+c6XjjDEQ9(aX1r*y^tGL|G;s7xKs#4& zHv>lu?~<8I#bUDuH}d=VGtx=dZjAGPS&#N;ZJ0?aBX+N zP|t0C#I6Zfk?D+XTFrW>b97P#yyRoGJvS@`XK`9|noXTAzD2bH*9t=}xR6i}xJbF8 z%y`{&lXl!RHh>^v_0v!-SZOnQ&uRK;TiWlKCy?i3_3Pp@Fda9I^6PgSJ`eJV61cnO zl4o9)0&w$K+&@to^EgLNqtrvG&mL17j$B4(?3hzhSlHI{HZEw$B|}-(ZF$FoRomoH z=KFD)S5(pr`Zy?t(OB_6q{tNOFLdH>$T7KT6Km4rim>`^ z^GG53&72Q7g{7V2g(ape_GI?<9p z!X3L$$U{lp?4U>E^4@G&u1bX!v9&iXdn%MmqidP=39%S z847|7Lq*O-YaSYwoxE9)>yu#aPp0H@{r!Db!W>L5=<}v-8}N#70|t0GD*SI#>B$`b zNnbo-5yz)*Qb35bfeCY=Mwf?(WlvyvxtRirc}CMIdJ6tTI;@J{`&`o2`t50WFx3Ln@!Qt# zfNlUrs|tj;qB4G&h}ewi&F;((h6f|U{Z6A z5i(M=mXe-c&3&bYv_KNjoI3g{uM0*sUj0z8d4ccA;*fs~3=r5QJtxeA~R<2*!&~XT5YYS@kVr$1hp{B66(v_UYddWn{n4S!kMQ z9@#p$HzuE9gn@b80F*G3SoiIow2hqCuk29%_VZbSl(z(jK1?_7sveoGxWab{w}irJrDRTea;#c5G!u}71tFV%+uz6J zDf&064uN2UJGS+~-rCA4w!eA96LZn~o?r#sdHb%<{+nZh_>t$X!M-rPs*TMH3C5tp zBnqhGa9!vz&khkIYVY22{YCXp}BMb@$3)Ry|DI-%|@fB>mpNjgTKm)WO74A5$96D}rb06W#bOsF7tzBvGj z+2EiyGdvUFycFw_ys1tYmEE7fRMq2qpBnqgWM1da)(@~(F~H92%$*QKh;+5{ap*sD z3jeRdddASy-h2XKnnhKB19O9>a{&EO6n{*f*6Ykc(9NdQjXxL@f(1qE2lek~xi6Wm zosgCqeibI$q-oeA#Z=3+9wNc`N*Z2_`Rn{ID%>Hb7;{RyeO0)(^EXu};;eIomdL8c zuC{Sk?9p;F%x!U(x@I2@s`Tx0^Ks7@i93Jer*wyZvuW{a+QV{d&x7ijn_5DMOK|sx z*}Tqq)Zpv@M4UP>H*wC&CdH=k4tUwObY^NGZsFFq?9+CbMXP~s~;n>xNaW{$TIB{ z>MpRW(xMc#5Wj4GOWPWg8BHw@9zgJ1EQH28QcZ9#`q_YHWx<`^&tQG9ang<^E2zREMkNLHHPxK7Q6YzWUBZ-|n3K&r77b;h^{@sBL``$FD zSAO!K`xukLb@N{xnY(phw_Wt5!9A6q{O0B}s_GxKJnh!npWCnbf2Tj>4}$dC{%Io_ z{}HeB^@&kD3n9e&J|i}dQ)hdq{7C^lGH%}Uwt}kj( zMBa7LaTWO5#gv_-ASe`9-eeN&!V|mkEm|+^!3F}&k7jaZ78_F#)vn1+UztdB_-}cY zn8&xgG&-Rea1@(y=U3HfYVhf%tmWtQ!fQJ#96SW@t36xOF3>YS!r>FSOKh2t%ve6?Q>R)pqY zCfqvGIQ4@7W3NT|l56i!m9~o!pw8LSA6e{Bxz`MMGAH%ff*~s z1>cxE--Xf!F=?(Mv(Nt= zLMukDj`hNrhsGe3Y5)|1QoPEyQ}fNIP>e-iSd=vt;c!H8Ibr-dbCx&hSZ93UNM1rd zy#nbw={dJG_Z7BFKXQBI3ID^JN{{&4xs|);tHW1wDEBiMQC+XsHb?tUe)lU3iDck^ zH#*99Q=)WW`BJI;W)+95%Ri2Glb2Xqn8kY>WM$rp1xGm@Kbi#1rV;R`4NJ;1!AT~o zbE3M6Jh@C+XlJX1tiWl;0qAfPOg;~5uqL9lMflG=R~Bar$p^1%(z^9UR$VT)SV&Q@Eus(dUl}IesIsh|?wwEncA(-AW;(jWcu! z(=Y5~VQ^#;&|*1$U>q~P75DyUbLrr}*;ZE( zRU%_A_$dc{bGjs&=wei|Y1hRVjiV)}MZxgmj8wHSuiFmo9Fs#`LXz7*l^?^{ z7WLm5KYi@H&`o@^{=f?_=5f5CsWOA2xkh^TIeF+_#;mJbKE`V+pvOlTZ)6 z7lPQT3|gbCaQqHujwHDc+k104-!GV_E#@M_Dew~bNvpuzStWtvgqS#}@EbpN2BUF% z39BMrL#pmLH_c}z-%(>_i@|1&?9i`dK>2~sS*}>0A42Qh>U!$OC>?nUbeuGpIWjDP zpatx##9xA!ua8&%zvim`k(X$ZkWo__f=PCC z{*>Xi;&?Fvinur_`)HU=SKQCcPv#LtvHhns&^R+XhL@~yxy-057()~z2-42QwD+}L z5;6g@=iR|~l4r64cHDe|(wo7O(>1j@w)!%#F8ZcB^$6>A^A1W`>7KDbcAz)$h%H*rj0#r3mWhhpS8CcteFE0V`tW@Xi$m}Ac?T=giMDSK)x?(AWlN^+O&XVCY zvYM24ZFeK*F>^LI3EL_57t(ugUBGoC>n-kqe+`C7F{Okj{o*KEcugaGd-K1f*Vn{* zM&;1)6nN}XU^sG<`1IW9Cm~+^bsKLpaw3-h7{H57KDTJobFcyTW<{c@hLXXvD6Ps_MM&UoKNz-R*OK2D2WWr5RURH@I??r- zhO`SVxM5L7d)DXV^dJZXWvzfm{YG<#ne`!5nga^Bbo_i8TCTBKuJr)_3fGZ1goooT z_a^Z?w%Qc;GxHgX>T1I`->vr(AQ=K4vQ}78CgLVFZ$;h$c*L{CCo5yha7*n|csY`= zfd=AO=(8X8N{&Cg)aYb-Fz#oH_(QNCL>I=K5p*_+@r;dg?}1*>UXsD3rKD5-QfwznEo(Lr0Xb*< zZ?w?v^M6XhtSmjJHkKUSQp(=3B`c%9bU2L=X$Wf5#vzEF!N#JrmKAA(h#Hgar{#uY zmK9gUl1QD+HJ;YkCC_6mXn@mveIRw9OFY6Z_6%_IjNb0%wEN4$y0%V2`Dj6*J!{1< z5gKHB+&gA1HV(QOMh{bYouwwsT+5vOMBs5I4!FUU9iMXZ+Pzhf6oHk zrsmQ38IOip*{JD%E&HW?Hbl8v&`r{vgH<%ekw_Vur)Pg+z;^Dpx^gC_tPX_O{s$Xp zQ@pDo^{^)L6E869V@)Q9b=2l18c5*7mtO8nA5Vd9?kWFZN@N$ch#%mtrWmW;YHrNc z<=j3>#!%yOZrN67&oFElsq>kY7!e372AELu$?9tK7w_T<%PzCEoI>TFe+;Xw%6z6w zI<*21ewpSwJ9=;tqhmmGCs0Y&Idlt>QcvdZIE8Wqs~2rpAWz20M7qTd`?4@ULaQMo z;(W5qgCHyzQLFwn#id|gRt^mv6Kr{;o5SnF*>7@a_brUpMT|QC*&9z#w!J5`t5Ll| zNpNM=Te>8oGj7vaqbk>Vg9b{uUyf-D&gwk^U1%=&2q_Po;3tCgBE+-Onx`7wd--kTA~S#{meS~t5heOj*g4b6ZavGNW@D?sD3g}AKk~8 zzGkd@aru0O|0maD?=Hl)p|Jp|nlc4{MB5s4D#@xG z3;yP;rHqv)j^m^Zy9&PhRJIu-YxYMzJX@=<=4^=shTp6e$y+eMM37C_Trv0U+Yb?f zpv?}VxPH_+_?@|}ljSNB6U9UgX>Zay8B}?lLClERLHaIpIEtAA3Hv2U)dx)z)+sHR zNxIy8&@%2fPmBnsK_-xu8%$a~4=cYV)06iFN>&XEe|c>cbfzxJ)z@7H+HCh|A6tXE zLT5T@V(IsD(2SCwd*V&(pa{E4Z$jQXnxv4Ctl53%@c#s}tbqeCeldGkfmU;X7;w04zV)Xovd+E3oP`EiTZZf@rbw8zOIK*}D)gnuU z`t9#;_rK5&=X+P&I_cyjt@XySdS}HJrOw{x()(?GQP4^wz2bNqpG$;4OYVUjXWprh z)?t>`0(`!!;hB^M$}6-OBD!b1l++gC7czUDCVk+xZ>AFHRYcSotJ}>4MjoU5jaez$ z_5W0MG~~b~EBbk$<^8be9iDO~aL^V{a8aIF#J#L&@5ePwK@KK6nE>Q?2vpijB}-ja zQEJwz0VT>^9A@UINL2MI)}4225L9?|%%2aska{o@%beX;N1Fk$!F zfuS#4d&)LFfzmu_2piI3>P!UAq>rIBxYc+M-3B=6Lr4yPsyGxs>~8S)$ny(Aw+6;Z z_V1BJ*&dCT-BVm8ULyV2Yu{q$Yek>YV(?=u-tY^$ zRpUPQPEetmSAP-b%I|l@kvyiB8fvV_MEvq!H+~rMlGf*y6I~OnylhFYY2J|HIm9)UOX=n`-nx zSl|jX)%{&Oi<9(Sjk;PWpRwY~zm3&U(7+0@KTHePpVw-o19S`d2`yL7Es5ms&XNW3Q* z`>(0{SkQ$leZ>RSFUKA}_XKrjv0}e09cXHJicrkWsbh&PBm~JuBDEa z@pN_UuliUFy(cKZ6sn*2ZR#bz;53LxlOc#_uU_CNQ`{uQEY|*{e?9Uc-5ShO`ru24-hDnGDa+$y6 zK`JJFBdal8A&$K#jNq*tg-lmx-mNH}oovDnx>@yve2gq`jh=7)nU~Is?Y|YpE?mlb zmYg~NbS8pmBDo8umsMAZHB{KVp#f;wDMkYa%Z_bGUaw+p9dARL!r9?d&EPFH&}Zp0 z(|9bc77n z3kfLEbUz_$;WCuCSLA!qq(9Aai=EX8GV z9^>4$&hOT^0T+osTu|qubWO)3-C14>!+?S7c!WFh0|Z!^^jnQr>`0mSZmWfJBB#?O z{aGg(S6K|E8F;yh2uEbk_N|rLOIv-zPc89;n{V_z{nPqC$&G<@xL;*Ft?&2-+@tP^ z-zIX`<0ChLC0H0_Owy+r!YnfW@;^Ibm@~`EteQHgD8%k&c(;fATn|;F&7nCt&gbY^ ziD75R-J&g?&_0O?lzkdrFCEd!M7UT2oWUaXiBq7*bkVY#-BXH(%d}6r& zGh{f^_47OJ>*jZ`hqD~pmt*?gE!Soemb%?|UW2@y5zMhI)0xnif1?-IH5tm;3}j^i-X(t-Bbo>zbCdM}Q8bSqugD3TB@;xPC28brNOr1% zn_CUNPHQB=joX$VKEJvUWW@Z!P_QE9!-OEMppMw5H?>7R#0Ja;Y4skz6oXAK+5{}T z+wl+bYtwkCZx3g!k}rHQF?QqIw#@zpJ^7IRZ@%c&c$Ab+?V%;a5#9>xgi@Cs-k}(m)avauixKY!`R+Q(|8n;#1Q5UjK=~oAaF)_lV!mi+N6$*{}~bo zGSNWAcq_MOG4cTcpzWv|B#K)jY0iGY3oK^7~VaRAz1Az zC>#I7d)VIRb(U7Mr26Bv?nTQaf+J9ptSm8hg>6pI@U5;EI|8QJ+!rPdoTaLx4L*dQ zo9rhM4B^M-gYqs*c=L8d?oxbU*Gkh^7jI#OxoR8;XnwEKf42m&1)#jCqAlY(;VcXv z*twlRN5g+Mw*DVSeH;ZvvQ|GOgE=>RNce8Y&IkmUUGRKg{tG6MP{h2wao+L1d8#?A zrZ7&s*4$5WjlE|pJ%qb3?IqPW5d_8vVrNB-*|aaM=CrhXC2R(YpH9|o><-fH5MJvj zPORKI{|A)7$1e#7<(+lw%4MWFs+O0egVNzQFbj{vDRtA*bdV7k{ss?r)Io^5U%yPb zqsaZQ3*$DS2RIeHu}t863bbUE3QRYIeYyR>9l0TK-6_J*V<>MHvfka8wMl=EuIi;G zGpczg&WMSiEAYJ}wCq5*u%m^7X4dqAciNxQqr8{pz{>3d5zWMfU^Z3mI$qtV2}^YA3whRa<3`?JO3rn;Wi$1&sKXl)sv$@ekhHPuWhM6mKHvhzq!HOaQmm0 zj6T?OTn>1IN%j%}xP6I@Bu4Ius;9f>S|z!Z08#)hyWMiWvVfZoO(r=wTEz5 zrost9ZE6Q84*p|f7ra)+0-rG4Fc2Csza3*iFfXPVyxJ1%(Aef%RY*Rp%n~MMgessiUYQ2aWiO9Xef7ra?hNh^i>SIbKo9E5XY@D*ebQ-oQ1cp4FX`T}O{Mkvic#*Y~z zgy>>znRqvjmC%)tw10<%HlL)gbH*(mTF$63Nhqz4y5&N2@b2!^*_OK&soNAyXSQwcONta{~6}Lpf zL=)aE@=>3z-3`KwVArX?uz@Y*UgbzXDuTI~JJ1nK`U^k0EMLT>a3Mw&N>XFMxfn=) zoP13OnX9^;_e7+USAC33iY8>*;Y0r7$pih;tNs4Jro*sQ@*ph;8|IrSK4B@LbBti~TKt}dL z(PxJ_@;Q2bUVe96f2gYR=>L=ckKe*BRyj=x#`u$dOciWU@}cT%W<%;%xdMSBI|4Ot zcl{$NQl;=sLYPSkXL>hR&7sk#0k1y}c!iVWx3IZ$G~qAw6>7Ty1&Dv->}?$Eu)IEH z>*W0$7&7ey>b#&?via;J2h%r!77X6BDuRigBe`B7b{U{{wOfMCl4LZP&U%0MEJYgfP8oT zKBJ|;T{#z%vz-kG)+Ycvo$_f+_x^VK`$?b)<6t{cqc`#fLa8L<;WZmlYo8x>1Vcd$ zJ}K+9GQ4Ws4czKh6M7|@9QNH9qBEF-fqddY)u9ofFD$7c93ucn=F*-DUH3#n5RP-QYj<%r|1+9gD3}D{U$l++>2}4f8eRTUXZ1z-JW2Rn6OMe3$SUK5f@gnw}XvJhS z$W_2!DnRqYk3MGSC75HZL%jbUt*7ZxOrBy2IN! z{dUgbGQ~#0fUWA4nT5dn=T;-Mf7b4%65%6CCw0>QLn0UxSjzrCHU zyTl59&0J8@%G>t`dN`^y71L>3JY1?oU(fmcvo!MHzRmsj6**OAR1TWs@%Hm%WoGfa z4&Q%c&GKn0;B?c{?@X}L_KRDMx#L*SNLc}icvoZgwcRMV)13m_=Nxpb2oD7otSDK} z_65PGfWRxS$iHnW|4wVC_?M5fGzc%YWqA>YwRyot#}PdjhqW~zNE_dSKhqUs=0%Nv zyIEuk-HzLkQ4w(6R1^c~)HI$LpOmpdZbg)sF6ilMtG||2>iu9ufOh?*cb4~7344WO z1myF6yA|#y&H|+93}CmthA00TQ;t7Wnq4$CY19DF%YwJ%Of#B%hxjm5>sDw`ZD12i zp!2&LVDXMn-xBi>=Rh|M(W0Lg8^aeG^F>cS%VD=*bt=X zp>%^P_*eLyX7dA~O;57ruOAr~bY)5V+_uPrXg|sJ~1TnS-EO5q&SfSSD zW(RJ-%#Da~S)kuhJt&2%6qke<;eU7B*3L=%COixEm z{+&+mCAIW1TL5fTpC5?5vcC8U+;|A|QdD^zTJrG0Q$X>D>(uk>Y17@(u|%3+`ql(s zXE1#F1~;ygZ#WscAF5T9P*1;fov=z)ZE-TRUnpz&G2GPmIgj ziKNK-y=26BB(OANjna-cDxu^-bB{a+H0&$i`YK9^F(;qYv!~(n{5bZHWE=Or9-{Y_ z!0Mqo`9LF$x!}@U8f>$i@R-0Z53h`Lx>}MdNCs(AhDkP0wQOHj)x?QDeNiR70dI&= zG&(~+_?N8t7TE(WeE$nLt_c8DGA-k^|6mOF*OD34C zTeVW&-@_CPM6#U99+XN2F!6_)gAORiJ#LRw19L_;2g+ulXAgnHCS1Y1kKK9!A*^$R zXN6nGBazSjD{YRZy5p9Q`ag49FWfbtAneE@&5$AXs(s^GZzonGT$sFUIM1STVw)eVK~4>1T}+kdk_X%-wf=;OB^<_x1{*$X@f(0h(d*I&kB zAdVfugV#$MDuEMY9G0#zeiTqutV7FJ!@G>4ogCLB1xr{ozD-#!?nLY4csV2GTcnls zr9b|hnl!?$DcCh~RCc=2QaPO}sV>m?lU&K0uC-<;U8bA$4EFqKmKpGzn_0~ti%eyM zB$}~2&N@s1u9Tp~(C~>dz$ep^hB}~ub;3Q~kdB>Y!@@UE9O*>vzb0S)X=fw7Gysa! zc4f^uy6DfJtNRJpEm;=jRjC52+^So6K53`+lT>-CsRJ|TULwUNc0u}&?eV27->)tL zE`!7?((k@g$&Q-5VWWCwKIL<<+im<$alM#s3)>5*$2rX&DuvTcQ(19r0m^rwq?p9wTy! z)wvE$r2`fXa|^O%g$4NH4uC$R1XK9WT~2ZM7S4PQX@h<;uYYe`Z`Q<~`nO(QG1Jpi zH$X*#F2Cnvh*sy=htHaKGso>BukypBlpOP`q%~r4n;Wu0bQA!{Oz9u`w9FhFJ)j1) z%b`cx5=sRXyiqU)lj`q7!^^eGNKbu5B_bn{~h72W-W`0%W$k&>|+gJ_c38@^Sl8P!F_dKsQcp0vL zG#gbxju#?;_$<`trM=w|g`I2-=yR-i7Et5RUyg4AjN)s!e2%F%6czI<_UACC_#e23 zJkw$WMoFBi0vi&xkEwgfAMeaRdDR`IU0R-2pwQY&wwpwCP(xxg23Pd*R%zyyh$AaBFM))dEd9s1?tD;4^m zd)Vj&1}D@tKBXjE0~pQT>2T3+mKQ7d4nIX=>{X;(N`)IyT*6OG0-rcYTM$w``k$sw zWhRx~b|ovhDzYkREx>8*$%9z#l-~qrbZ!B3z4RfSN2mk(b?K#9?->NlvSwi+s?^%Grwkg2&Ry3}UNspbU`~FZ<=-<658)L4f z$u*;^0t<8mkz$18Os-TM10*9E*H^o=x6Q#V!lI}})k!WBUaQd_jQ3=@5siXVn>8bc zJNO-wl%(-k1Y-;K_HmwfJAwhJ_|t0O=5KoUYqIUG^^h<7HsEw25-YVsFLva67@}Y6 z^vk)%+ms0jxlP|+3cOvFHYYC16lxu^;^@!d?SJL4F5_yXDyD9iE&|t9Fk`C;kE@G>ebdO5E)Q;b)*Sb=mI!U zEf%*`T;8p99g_PoSGprnaLWFfr99Ub-2A%ln zH-Gw-;<#I7$>*36;7HMStXuL0W28#2!nl`a=a1_ZQ@LYBAh!&6_Z1%g`5GPczT#J$ z8F0-ylkXLq4{D$=kZAw40Ge-BN5-)i-~RkjJ>D6QoWoTHEiR{>rzJATMkWR&Esfq$ zgjUS6#8I{LCm!-bYby61@EhL}e)fe{)60aItGHrd46;gl$IR^jo)=Atj61tUi-G6N zZVlG==So@JJ4gf5DIa{Z}eI9 z(_65PS;BV7gDMk$f9o5TJd3=4MWZEx-5!@c*9`Jmv#F3c9D#q|W#npb`Pb zNTNHB+%8b_p+C080`{H_onwbRxM~J`yD6eeWMY5&%@IIoDGj&)HBIxC?IvJjMV+JM zTfPAP|La_X`9@YOIU~1gD^0kf44rS<38a7@hPb0<=XS+w^L5dWo<|(^lJ6mmI#96EZ+8j ziy^e$8V>S82?;;gIbOuZ!m_>O`wg5OkOfYDIZX*$?xy$Pe~y_ZT#??78ftvF(5W!) zui3dh=fwbC_Po`Su$SvI>l1#>8r8}T(?F*%sM%&`GpLC_AmTPJTqPJhP2RT>=6fNc zu0ihVTVZ~KFofnxKDKC?LaR_g$_RtG3A0eJ3L?;cxm<6=(;l&X{G_Bt8-7m)LM6^f zR zwA%hupM#~{+EL+R$|-xvcLHMH#sTzmzgxC{`vWdU`mK#IjydbF8LrkyS%GoHB0h5l zm#86gJ0ek;uhN98GaB;+8oKOh;Ox%qv`*LI>xzrvlkW!Kl>ALYPVWXod`7bElTWo2 z?jyfiBZ1#96LSe$cMg4Jdu`2WmiJ;U`5wW5weM)PjQz~_PRYj>t-5(J+wS6fDob2mz#m`5z!2(ykzW_<)6ZZ2{-69-gSeeC@9dUF zslK3VsEZdyn1utqXtER^&&kCiA{a)^%a&DKR_?~bY%EKil-p~y&oNBBOq4RtXg%L@ z04Mj@0YC5jMZ-qN$Cj;Gvk|QmZZqUyS;de)FTI%*R)_8+Dq1y?9Eip zVV}QA=X&^$e800>6s54Rz|VVf;rPe`N_3+erf1X#j!&sD(%b~_OlLpN89y$CrAfx^ zwH|q=itJ2eSW`>xQ~qhYI&>2!4%S@zWBvW;_6J-HFW{MuH&!4mh7ltwE3OP}{3$Vx zYlpZYGGFQNYEOx9W%+!_a&Em_gD{a4ZDlxd&z321&KYe!5VKYmrOp^SI&&T$?|1eY z0rYnjB^C4cG#I%>-p3chWi}7_R;#ya(?E^pnTWpqexEsPWCw^ zC~qkBp|omBcx?qEAW(nO#DYR4ZWBRR3Yo9R9IdwXFFvzA_o?GH`tRG&OSG|rsW4ND z4R&1W7>lyC*G{x{!gag}5z> zy%P)2*&BMB4>bP&WrbdHi??FCD>wi8F%LAjgDF~8L>7Sg_L+D62JyLSu#D_+7vA&r z93hz?puU#w+zPOK;ie>L7s%j1gk`~O@?8SX82}Kx3|e=%%$GY$)|3QSaMSZYuKzI( z6iU@@N1rI~PUvmE+T%qEhsQx13{Rgw+YLC<$^z_0l(nB(-`#XMUt7WZogO=mJaEBF zpLmr3(Pj=bj}iDX;&0n&vE882tEthW^yIWk*)8{*f4-7lQlHCwsmDMnC~#H#8!<&o zaW>lR=o3{_Psp$UGSkEk`&1n}6nLE<)**HeguO%(PaKqj0oP`x{-D5oOV(ZgxW53r zRnE}b&_l5asj2H43jc$O_}g}Ztt?2m?ugvwXi!F1%q!M4| zd|V{v%RMcOh>)rgq5|%=G;`ULJ(qj60A1gQk^h{i*5|IGWiE?(qR9M^uHU@;9{m@& z6N;v+8=Xl^)2`4hVKI0YF;(PpAB_Vn7$xTU)FlCy&I2q_-u`V5xcGz?Pqim_)0EnY zNJO27ON9Q%%kRk7{Al3E82V z6lTVcLSZ2KZe$m=Cz(j)Ec5Ys2hV)O7h{!(iYIYVRpNhAX$WIcx|~9bx$8N?_bMvl z2`gFWfxT+yB~h4fb^(Z1d~{^{|zzsf3Q+W_{P){Vd(WnV-ataVv#8~ zSEWuxB%$s-q2Zb{Fg5lz`ONrPxQ{R)hN3w);bgv^pJ}rI#$s5Z#T+-S@x6)~@9o&k z&c|)sCilobh52%CQs?Nv7^0@Xi2n|DYn#5A{8x}w68#2Re<@w zS`v~`2S|cz6yi%0oI=Tk_gN< z@`GE64crvB;diFeyyf@@o6c@wqUjsWNVI4sqeexKf+UO>5_Z8(m2%g`1Mf1-H#sF1jrx>VyB* zD~XawPS5n~nIR~ziHq$jnE+WN}X8M@ko0S zU&r1m(elg=3IRCDkWZDnN%^>WSV4d>-{3t1?;k~>;+RjAr-QB1{s1!+Q;sdjHxVU{ zXN)ObhIsMT2Q-uT{ePpNZi+e(_-W*GMl2%Ho}IIJ<-{rHw$;${xseYzBu~G#Id+C< zd7^PDC}GNwFWXVd$9;mQf!!+y46R3ht;E`W(xC=N)BRina^h_mz;IQAd@>)5x;Oi|27pGDbTCw+Ac+b8oj3BS;k(a^_+`E>D9rYOWdbd3>8ODA z7GkBQ?jSRkD1K)^{1YQ>{rbv$&LKljbJK!%6Cq!=t5msWB2tMWUye{LG+dQnC8iiG zf_3}31}_=$!Hkti7{i4B&O2*6gp!XfO9sIVstrn8+wCBq<99Un=7l>7YB)%iSOjq+ zpFw!X5@qpdSAJN;H@6FcMz1BvR}U`0*bH*wiF_3ju4)YValEkncD&(JtHssYm%!0dlP@6lv4w<0@M_)qyCO@MqvxPz>QG!$n{joptm9Z3{FisF= zvMTI%bl?hTX-aVj{wc#{YxJ!v&|jH)3Ev51uc__uSo<<|nQtUfBqhjaGL*YvmWVy} zb^*>I6p*EX$fr>#bx3xlr6pW8j3QqG#Wswn z7jT2{fXLUyV(Xvnm0P`ENvhZ_mK}H_Uq$oalap;S8EfzReGx=?+&Z&`w3CyaBHuBZ zg**~RW7U;Aie#X8rz}QfEOp^VTK;5j<(wZ-5v@w_TRL``FSWHY5$2{OjXpiioiHm7 zxq4eRyj*65B3}!!3oKkEIDd)`M%E=y_j0G08$6kl5;S}(Fq(QJpQfJWpWl4?=eOfQ z*Jc^I)eoOg;s4UqFQG%x{fEl#-inb=++DjrE)c36wrA=)1@Nc*FkhWngVZs@_)ArY>LojqAy7{ql*9x}SPy-cN|M zmp}-8W)sWz`$H7qTbjvvpt(h2ZV&6QT+hWH-7H6T#N4M4{%`xxOSEf559Iv*(fsCP z82K_x#)ptk(g_$B`IZ6jdk~NJa;IBGd^UO|Sh^NO$=(zBGJ>0bwe=ZVYw!C>xT zRv6t*BA5A$B=RA;|45fmQ&cCkFrp`KoSkhkTG1cc9X;928%_+cr`HfspM$Z` zqOY9Kj&_UfQ$C}sK;a&!(B^Poa< z?CAC&FNcV)HQAQ(@;K)x@|D;cL&(<)CSzhE-%H?lgC*vBxpU?E+EMgTc%l6eEeW=s zKCR7cpbDR^<1X8&8aJh9^Fc{?$d51o`9UW6iW?tV*%Vtw;A27OiOjr33(2$z5sq^D zeiv?QWGN4|eILYBmyCl*QRaM2egW(W?-! z5-*}PUN^V7Yw;%nLO2^29!?$Mg&wwO<;iFN!jP{9q0tBI%o<~K#%uFfs0mzJ{_kGrQT2oFW#u*;tMxlo6Kt3wW6AXK8rzddStf4qV z#I?c_P=b-xqAcFUw5nF9Oxw&YmigXoBL10UvmF(L#1uQLK}0ojj(yD}zr-|K4PpX< ze3fAME9N|3#w~fempf(h*R|CV$2fq_u^bbXDQh$RtcM^o7kqe>SW`-@Qjf1ku|?z~ zoRCtxQ_KBpH`h)OODYIUOf0DzgR~us9TsJ=iD*^pd=N?8=ur#r9BRaw+p*)`Q~U1{ zxw#%hR3qouU7xtHJc^m79r+h$v|#*FMQYkLc430$BOea-mqqSgbx{Qe+8)mLFZ_^C zo9U+>g3QoR@he~6M$K21c+W}^8WLT|cg=&t@y1TCta{=W#t#uvoDkutw?tzGY55$} zqAbR=s!Uw0Yv`t%SnlmIH$#Y*0Q6W5BdT?j3RTOIFF||vTHfK%N#^LtSF(Y$6=3o{ zYAE>alIXDely3#!V1kn2rBt|Q#_emjoA=z3z(VrLtHyV>pf&w6 z6}(5bRph(j{(5F?#4#E;p)YclCP6K1=5pvJvnfx+NM-Rik+LlU$&m!ITR2*+yzNgMNKLz5^{o|B2#>!0G z0Nk2V7H?wCKc(^x_AKU11NE^c`>}2%{ItrB(T{UE^iiYix7v3oXJi7n zXiy>9F7j;zfZkl<+};4#xRqGIK(y(jg|++2h+fCie2WsY{~WUwu9mYrs^K(1aqSHJ z&ur#a;F)G&dV3;yX7a>yKja&8Wj^vX3cT-wM?NiT#m(^15g|#s0Udrn(q~Eejy;eM z7ds83!$6}j>(+@RMm?PmCO_GlI@a{Ng)j2uX510IM-tlZ&LH2qS2SigtL(_vx?cp4 z!%Fk*DtrE;os@<*XYAoorl?O~=EBu5Ty`%vBv@Y_GI#A=V znH>2ly!h2{RFl}T=^)5gLrY%mdtAVjZ!PwL$S3()dhR6@5^mWGVpJX=E)b;YcizZH z@U&i%^L^o`6~oBq=2<0Wp;Aip2!V^cm9`2=Do z*4@tfnpx&^A%@ZcBDX1K+}7U6mzwKTN|3Miy|F#8ZUnKZqvkXo_n znfbA`Rd}o2RGZH+2_gG0l9G+MW_RjkZkG{V+%$k&8z-9M&uEtUTo3*7fdP5;LHG|- z=A*c-5~S6v8TGQ9>d?v@LwVH=1l@rm!snavts4r6d|J@l1Whyp{H72TZqpET!R&*W zXm3+8d+kOG0b4d6COY!17GDyx#^#cVj6nb1wS|{Ftj~$xympZ7i7UrELIU8d672?a zRX%3YM~zeMCQq?KloGtTsY<7UQdbpFaw4LKD#gf`3exJ5bGQ<(84^zApU@kw@ez$* zzxW=PmKkY)k*|<6HvtpIkgp{ImZ?J+w2@lOPDH}K^T*CaF~c<>{C9HU}DHuNt&CybnX#fQg=8}fz`6X z2VPue{=v!YI1t2)1JQ?M=!*ru6~{FjG)$Yhv4k{pse3l1Xv`fg9mICz=3BhFYU23! zrMHd^unfpdlBoR%&E}5uHixfqJ0#8!XmF6vLd0Zc+G@qv^Aw@0}b+JI#PaK4tExiL?_JvWy)|{Sn|H^Gv2(iSiRrWXd8w0r7p_(q?WAZii+! zvJ!B?KB&XKF+ipjBVR5k&Kz(NPz%-RE)w#o5`77R8vMlGx%)9 zu?u*a$qU0avwfyVDR~8fo~P$OQ3vTmF+Jbbzf?I4So^8{VmxJQ+Z_dDUr`t`^brsZ~k?E z_YJvh0?&0-R3wQ8(wYX2e5LzDYm!7gDc$+%sypF7Opp$FiR`V6cn2=|%8;v;fE^Bw z`DXy+wXL0w(Av?ht9tG8YG3UvY1J!Q}H!M9sB;hRQuse?UQ|AbrM%^Stb!a-bKCaE@Q4Sr@oZ%v1Hi0uy zeWcmpS}wm^Zk*$yuGbU$N`sVqBUB<%X`bHkwNY-pi7}YX4d*Y0#9%u&Kp zaraIh0dm{yY%!1DHB7z&iB}0zWEoKz+(#O-?B(BEv-2DmbR}D#kvLU%3HcICC=VL( z(K@CIwE0ToG!@rKKv?Po@(z>uZEW%pb52Wk@Nwq21sMfc@(s?^Au~FalOb&28CJ05 zyN%f96Pif}Ng<4Uk5!-+=sNM87zR72&6gT=Xg@PA);swc)p4OGU&Y2y`tfStnn?g% z!if@I9YOJP$ms_un9W#f9J4o zjI5`!4FNae<>5QrJ&QAL-rq4_fTXvs$8NX`f=ki2 z{K#>1UG++m&$KUlH|J%-Rxej1g~8MvKCiR z@YVfn!hiLe+_7iA0DBvkAzu&YQcg)flCHW16P?Ta#fGvH2zVj+O0f8+$@bmT`VifA zWgM2{<{*yxF*Z|}001BWNkl)QW!c(}%#azN&cgow=Pl%gI+bWuuN0 zswwp!B;;#kV2DzVI%q$*dO`ASLd8xwyQX!5Xu;9U^&iiR|C^rx`z~B|@IUiMgnaj8 zeB^^c0st$Xt{Q(&`Y5UUxX_TV28(~KBHN!E>uruGn88TCB;NerJi>ehDzU_x4|poS z<)puEIe&bTlW%?>=aQXBE2zLDA>UF42F=xg)9&F#-Mt+7cEQLfXV^!#O841n|tSV&9~iJqSz!MUluK!=l$YZ zYi_rOyO33LvGMHrrn`{e1D{?+4rMEbd?nVbpvec$I4pc4W^r^CQnkwy%7!h=COIzBfi#KjjfB-=5xT)f%#)GF{K>t@|_)*tHF2VtA}SX`R03b z+w!J05Sm*;z9L#S&-=wjYi^cz3T4&YCA9MG94$zj&xye{@-?nWwzQ2dv0==TyxkTa ziOS?wiruGU&$7@{Qx)-lmi**p6Ay7D=y zI_bONbEsb`037+|d-JVecijCvK;&a);th31!>Q&YI45r)-zL=kSj#>51hx4Vai{A& z(vcw_G8?yGUWqF4k*GY%@?l-&m3Wty^aZ^AB-!CL>!#eZEHvbs-SIJld~Itb-!fWa zaAh15&8_5Xe4o#>@@^0UQjUB_@J`^MICwwbMJjgs{?bWGzIkR{NyJ$jF0YEn*9*E}s;kwH ziKY>UJ4Fw$hE_gj!8O$8D_Z zq{qs>qToHQ^0Jb?4ryty-6*lP-*B(M|_#@HsKC&AG zP2LT7Y$vOwR`NZH>baBLW<2@BPcfe(U#lpt`b5dWzt?-D0%9(9juwGb#T)Ld1k$C& z)Z9F4dVoHC6)~~)5Mb>r`Apjjr${oQ$Wkj3`>Pl|+*+ZlyfZErl=Ov$+3s}YgWqXz zVyvXt@rvsJ9gt5?9~VYm=skC2CJsUY z`rbn+A4@)bxG7bTkDZ7-L%jf8LN}4xd>r{6(a&4Sw_oU!z9(t<@JB()_1!8(vC~_` zIePc%BbpRhik-O$qeHwI)0S`Z^@5pQ!UlI0wA4OgDc7G_liog}1t8)_mE0`i3_n{H z`4UByHBjETn1ftG#hp7P`S9T;&GFG(jgU6q!A`z3Qk##P;|DSc;vsNgyrbP5yUm(w?I>&05L|Lh*-~1*|tx8zs~y z@hJ5ZSqT!zn=u0UMn#o%5jer*LXy4*G~zPk%W)7~DagmE%me1BxR@uR@?E?@BrxEu zk$l8C0`H@weE$6S3qcN6C{u|#bZ?!gs)c8{D!fVd-*sSGBQ3c}0FV0vLQdnE7 zhZV3A{>COF`G~hE`5(8Ifx-KC?)V&xBi~85q#thX-hF0kY2Ki&3{do6n?jqu@H%pc z>fi!CXD4gK0Nvc*npr0lS$p`ogvqDtw)J)^%eCsE))ksQgDVhsclTQIb+V}kEBUzk z$}Ofc6%~d)QZuNvwfPDw`KWhFUPnp!{CjnD|NT}#FwsNq0+?(?$$1ecndf-3GCArY z;+;Hq<~OhzvQ_C7rU~?~Z1`WND~Q!Ns*F$UuY&%bsTdN0e6;l z?ywZ*$>M31F}e&ka8iG1RvO&GWnL~fKO!lVDYssF)k;B3&}8^?36rl;)qgts>N|De zX^gJ%eiK*VhuBF=r^%-{u+^~_RUonXnu2_(dL{)R-vI^}yp)t;Z3)yn-+}Ff-GnrIL(}^_sM#WTshI}SpYZQbLnhgG@TKziycfGQb?-jZG@_OeH z&NGgyiq;Ga`R>3{wDa3J_gGeB>3%d;Ssmfnp+Ixtxw#b;o&s<~z-zGKq9$MBAM_{* z@^$!AZbFbru%=5q@@eu7TIPM`ud|10o#X*FB>5EYG^ogzn0#%tPNh({fEsS4UxzoO z9&CZ|NtXZkGB`Lk{*fV3rXJr-Mc;>g+SL5$tQJ>9D+w-1bL$mlUUgME(6~_Vbmnh8 z5JOyr!hMF&gGhC~+}1qb(;J$|S@bdHPyY(db<**cB%f-=Xu!!=n0&2`LB3G3wg&%9 zrEXXHDUOnFpg%61@BH47*@jk|DFqri(fo*penyBmu&TFI$Vz zQ_zW}O5LvXKg5GAS{%jt2)fgy;BV}(h)QmBE%?6BPW>ys3a+hlP#$yB-cLp#%HNRX zzA2py^T~Nc@>Tx7M2s(w3gJ40SlR08KdrTlotc`*Z{rU#f8y7JZg`s{U#BtR0nfim zi?5Zcrc-Zk8aA;)Q%<6&SQ(4J3nyf3?Uf7UJ&;gh{mm;6;pb7=~^2olX zIR-I{@lFFhtHTGk#9X*-+4hlO%Hv>Ny2dJY?)+Q#AMUQEId0>KF0jCYyfIQF2e*Yqec(n(aT45EmSq)g zD_J?OH)!MS;JVc}>{i2{!qp8S=I zgKs8!=o6ju*XfZcV}#&k^nQ*IlRn40Y*p{BzuYK3!5iy+!t;3xcJ}NCr};?#G?>tq z`y9xBSVM;pS0D0~p#D>mom4$*UDX!I-jy9*1?z0C43)^al>6Yr_nH1&I5QN2bQYendE zZ?(;$z0`~wm?KD4kj$iH;CZik1o<+N04_wn1Ql(`WzBi(s!)2lbHjUhi(t|M$OoRA zYK?s7fUg~x1T>^VLG5X9!O02r6228XEJ@(=o}1u7qI+MJL@%i%>HGDo-hWamP?8h} z5Odpu!Zf5iE2CdcAZKkh+l4onO?}+3hHl)rN%H^+UOe*Eymk3l;`P%zUl9={fP5WR z^|D63Bf!^?sH4Yg& z_aoof!`~sExB}v}X5j~MpP%0500D~1GYVR8t;Lg{emj2Ovloh6#ge|8PyhPkc=^S{ z7-mUQzIf92_^10liQbQ6zf+s$#j$&xV9!$P2y0OU*X!h+k^&P_rQ(v(I8oheP22SpyS z>13;Cs`rg1ed2MOa%W^PC6CUAXN^Pq5%xTZ;=OMG4y zH@M74B42N!PgGlAd{=Jxi+rM>=|{dA3>U`8cLVV?R0$%X}&2 zRYp>}mz7?p{p{W%pX`)UKk~I8Vdy=S3`D+DYM+JD`5g=jPZ@nl1o^P33zjcq79(tJcZH~szFMP-c?P(Z!?80MfQt#lr%7%Ui zSm|PNUB(@fN_&wnMPqPnihLK4njysZj<;YzJB3LkZ7ZM)z(UZ$pdDx@8+ik2Dqsc8t}zQEvpqcM{9`+*iMYV z(fg0Mg_@#iw=MF;B%lW3rb3|xsJxWKo`!-hk`yX1qZ<)A3lNfjHPb4|WD0$$S^kKp z6;iUbIX(wvSn;cRKp4OkV?LB0f=&eR#@D)=2JK@JV234w28zkPlXUl1r=DG`2W!M_(hI zY2o#Hxb%==4WS}8I*K9RfU#dU^0hDlrI2rGBzA^a>9yF};6Im8d_bvpp-Ob^YrO#` zFgMSL=AJlR1rE7d5|Os2b-6@!*Cm0m{~ND9G6Z#I$OpEQI8-F`K<05?b7malz?t?V z-5XT)hv`CVm0%Ac z0$4l$CkNNXiF_GeK4FkAwG$LP8=Wbo|LTl81{#tN`4V{T6HDYf27OH(j#{G@z!u-r zFyp17PBr%}4+dkgnl84WcVZ~hSTg9wqWxdG&rx39@gm;}Ghlu1)HFy`dZ&-J;JP@GuO*l? zVP~zK*cr5o+moFhvw+ehe>ETSmGBw>$TvmB&Z!lxF+1M8!{Mu@n{`qhTNw-rR-FF$ ziQek1^iHUqBquwNA`pY2sAxtM4pF01R$CQSyI}6qyA~it*Tsc=M4694zT8sm43;83 zpX~4mv~_Cw(o#z*R(ov*wH3wRP!1%MNDYvP17O@(j&0a|cHy%6!aTAyct4=qkJXf%ZUK zr>c9$gM1ZUZUT@mL!(n^6xTAd%wT}!o*Cb)vw8CO54!Ap0a+q`s2J8|_Kgwr0XKIg zxVYHqSaGCVW{|w>Tg3%y>(YZZfLGz%XK=Y_jb=+Ow_a z^^r&=DlhPMndV34q&T2n95LKqe z-2#olz6O!ptb(3>Fmv;Nab-nL%del`iF_@3OBeDr3?qS&FS8XpC&5k-%{JOAHNL*Q zw0S8v^1(-!O~juCmndejP#j1%j*X&+HZ!QO+fRE60*!csa1Dy6Vkv*`rRTwD`PN|o*soWC^-6P0C& z{Ys2OBT3(fd>O$$a=q2$U`iff{|80}qRk8v_#!3G*GpX-%`KWf2q;3e9HXOL)F@M! zZI1BfkY?Lxz`o8v?iLk0OCx1@h~z#l`CcPHhA7G&CJ}5 zd^JIk3%w13dkR8l^}aKT9@@-c4{guPd8ufo{N>C_xdXdSK77pkt$38FE{$3FjK7|Q z1t^bdoMPHTW|ZAK5MUk3ynk>8EHPF&kZ+(Q?FI})m1zxGuqZp&;F*^;?aO}TYl$E= z(|2ghFn>vmrXe@X3^FuptNAC$l=t0S`wQ42G3di#Lw{=8`YwHYS5iZ^AT)Fi+1q!} zW|-Jn8}ZO8Hp{IeF>2wpb$sEyq*l2FU%j=hA^QdT-G#p3mL}~7=bgw$?Pmc#ev@Ki zXJ=H!84M-49KA%tmn>^7U0IrO%pO6$748GtE|>M(fm=#fnS$B8YTDi?-8U{Yt2=0O z<34L;3~yqy>_EO0_uA>mCJRoiZLypoH>-n-4P@8$Hq4q!LmYP^AGMz)1^8Zx$SYy5 zpBqIFWoEDkRyhiTl4Yy?Vas?pg+y$TOj%j{{oLTwXPvd!=>k(F&lmK!sL$pvAh9zy z>L$vgv)qok!W74+A&` zeqj|oPFM)IARpob3J1qpZ#zJZGKGK-C$)v{KDXu*{tGa0Hm{TUb>`MY-~AJdha$yJ z4G-<2v)qi0sK-HLZ-jCK(Oo@uD&dbE^!wZfFginp@ah7eewT(5`KbLYn*sPeh8LXJ zsfgmSru-Xhczj2Our&$?QM0a5jNKgI!PPKuB&yqdHn%{T-d^l<;F)tWqNyd|%}^4!J0R6b zjT#51u?7K_U@gcHCMB?mTBO+{8(9NVjcC9n{7zF%{L%zvT$(t&--r(|ez=}o>1^1eveH^vH0}SdInpw3`ml*P)&aF8n`|O23XVQr4d{yiAF?gqg?v57Z9BE$ zcSe_!Vco$?-CGUgWT zsC{7-DOZ#M%Xw%ekUYxK8V&?j?QcFPS?1fk;0m4cQ#05If8S&mpl=oq_K;@lLcS$c z<{O#L39|0ddq$(}G3@4Wx!mdhlIS`$Aj}2OKT_K8O!(01BkX=+arNel@ao7L!uI&K zU!nQQcU4AH-$&RpwR-kf*>D_J&Heo(ihL!3RU_mh%Y2(TqX_x(?HJep$KmB}LtnVL z1#D4uAYZ|i`9@510jxVMuSlbKVHuxY{(phRKRsct0Mgjn6yAh;8dlFrla?B(*tz<0 z9+_o1scE+&b~-uFF=KAO9DlOQ;1{d~9HFx@o{o{3GiAO_aASrnI~4{IhOufbTOCd@4m)roF!C40EM{KK>P z=ozt=8kyL6^VvL}x4mU|2b>-7=2TN)(rob1-GT&1kh|%X}kK zIfeY+_A^3}GTHiMa)n0>_`m~59mqG3iFcx8F9njZjrr~hu^m~^7M6o5R4W|}2y=?8 zTE%7eo~x|BdpLrvnS4#_AS64Y2002ZY5)NoHbUGs!pb?*bP8`ii7Xo zLZWytLOz-Cdo~8fEq_)T5at9a&SqRi_ouNOPuIP_zkKrecmEy#`s34o{LS}}h+vpH zT6yk$|MKx)e!kzQVw5?C(ZHzru0ly{B<1@z`aqrD8y%G5TST`IwRn$_k16wQBHw$q z%maM1(iDe0g zfk||ygW#QA0?5Y>LC-na1;lfm-Jl+MW(SW7C%bt3da_e-!|sLxnw#?+0WTOfXT=)SsWfs+ z?S7^y9OvekPgLe}G9SJDI3^lc=BasV*l%1ll|RRh_ktHLBNu#GKF@r0F&G|Epg-e; ztj4y08hPTGF~+N~VlX%ccYwR0%9jpb%zZQ>;ngNroD_i-rzuBKKd#q zw0%gJ&D`|iw3&O=(ijcbX$E0S>M-;DXHt5eC13clM6dz)bi^M;rVg`RUP+_Ih@fpT z_%0EQkMsW6C;Kms56a>S!xRZ|L-GA;BKxc}MBlPvG7-x*u2pfi1M_M{;AI=M-!u$% zamH|oSstGIaAu({ZO#mg#X~ny#LU z8{b;HOHCB0;O9HWxt@3CJ5xXSvWNAYVdiVgcE-VcjAK446ai%fHoz~(ftfgj%7S%Lh!Uc?duWm;vNE5G`5N@? zoS>M>9wW-;kBXa4ejkgBr@O?*e^mp(e8&pg5Te1&Cck@>A4O)2vdw)PPHs$)(_0x6 zf=u*#@hmYVfHwq=cbIM}{4j?zxx?pZK=KilO+u|=nFA!%d{m8WZV8I{&WMu?>h!!t z0OpU|lr=M}ky8XccZ4;vOuNjN3;cUj!teQG6hz204jE5(iBH~-Gt7J^@-iP@u*`GX zvgbhqB^8m(olakX>X!pY7MKuZboiFhAtM@eV$HWAt6+sx;*@=m&LH{v3M>h!84}>MPZBw00;9?3$U4XgLNt) z000uQNkl{K6C78Ca929W#<20WG^Hy1ssk*15Jl zzz#}AC~#z$QZxs*pruP`w{CEl?^KFaa`_cwL&?y437Kgd#9PQBufV0J@LF z&@XU|lTuds8;kjNHJOjsYtlwK#r7y9AC~$?Bm2r5sJUqr8(hrCD&>&$yVm3Z6sBn<^l!8%FLx*YA z!6}rc`_H$$CYdV69fzhy^m_$9xf}+&$Lw!Y`?JFapRE7AQ%-3RFweAvqIK_Q4-~0eF(l1sN zPto9!+RI-?*A4LP2G>*P;Il;5tlTCtV5WF%$i2WGFHoAqDlSZNsKGGK3|TY>@nKfq z>6fMEb{<+Le45@SLm?QRr?!R8Z!|=p;Jk0EmiesA*I^P1=3yShntdA>nT zO6fH-frm1myMeDFFipt!h{G^Ehm_yKKLHa-x+!7p+^bcZXli|bKf2M zeid!kj(B*vz=T=j$|CZeYA-m18j^-S&I!La&_g~7G`ByI=5`)2-NJUJpn@1P6#o0t z8#fT8v0I4Ql${|Ujrn#pnXj+5nKM}8>lMQ?50ES~nEo_Y6~2M^)h$@&WA1&;Zu01L zzl5aqM^C=ulJT*V`e4#c5#=DPbhA9l*25T;tT9hu`X5AkfOZP0$?`zs5iFFsWcY3l zm#?zwF!1TiYmz2-uk8~|?zwJma2ezx1OVvMeYD{<#f1O0zV+lT{ND{*(c>Hkc2Nin z$27N9%Y3C+yVPUOU9TZmJS~W57SQ`$NVzZg5Eo2*F6LwIy-9m@uU2qrW1u;1l!Tj( zHl+ZT)IE1q>2f^&#)!A1^Wm`#8{rbvT?6$@{F(O2WG5s@kTYMS29>_FSbR+dxz0?E5cE7aK;)__h zrN%e)dFDQXf>0zrYs|yn`}&};k>Wt@?%^MI(WC=Qp#qFBrMl$CZSwtq zq}VFcI`<@dymyKapxY?id5yE(YhgNlHke!BDd z5E>Wi8+`Xx?^}E}7zy#&nU5XcHVY$*9$u;8Nyiz5y8s|jc$QG_QFx#WHg*B^CTzb6 zBuzl-do8Yp_g9>V`Q+!#C(1T zR3-cag>cFK%9D`Aw`~EU_M-Wqbe#Vg<^o>BEM3EQ7ZGDo)&t6n*DcW58HXM+I>FXU_qb zbJfz^+`-4KuSyZCHQf5&{cPvPWF*8DeX~Ach$;GR93*g?Z0GKefiYsb3r9NQ$A0#H zMOUTyQDB?`X8~{Q)S$lePMv+R+^ZzhLNckpGu;NT_iH6}CFg1s#& z(u-%E1t;tT$#gNJniT8tpf%EgLT*EvR4Smpws6e}j->aKIs->fH++K-V;AmwkndMU zoGGjhSy8x9XF^q_!OYhZ?PQY+8>1NSWv+O*wX;8Gzr%Ua{wwzekNpIkmOeY#-X|O+ zBMCMj1gFx4Ey$$f5oKgfK|6?JRo6Pk3)?c4L?ay83z+i6i;PYShH}5&eZ@!*7)|L+} z&2#m_;yneFC(^~5YEmrX{j{OuK>R(ENd>wDtBdZ}RR{xFxvi z*FsiGM(@57JoEE$GO4iUJt)@CJ5ryx2yhCBfO(?Uykj)tkWQ9DGI!?=D!P)~mxa~1 zurZoZ*8lE|%J9t+3d|lWYPS+T}k ztudnBH61;%rizcVJaBI)<>XSqb_t{c%W(xFQz`FAYP0F2#Q+egr|O%EaQtt3*V3HE z5roM)z?lMUaT6*6*T@h>+$;e?x;Y@M+MD$N%12~m*~d7lhd&DnXq6zom8_<{Hm}vY)ck4qsCDP!X8;E_%Mg(>b z_=iIcLm}-Wt(tj2t@}Oja-C{oe`Ae*(g^Eq@&Q6$+;w11-DO+__=KA8IG`!@q!c=h zZa*eN`BF}zGM)wUX>l=KD2<@cpW=WdYh-B=S8JC?09>zotMwd`A}(AYzFXs59KqEb z5A!_vfgPuUMvkLHUz2>N?_VK#3z`4eL{)(B1AW)19OWUbBe;CVRo8VC|)-C0kPUg?>Qt#vbP)rfPD4#k!OywYBj}yw$#fwK)lj1m4L?SCcpe zHuDb-iK}t8l#AZ#P%HFm9yt?Y9r;w0BICP-6ia;+M}AKeNKVoP-$k$)un~)-4_Kv= zUEiq^`eYD8zVL(b?~s;Jnzv5E5%#d>jTNk zail!G50>BZ7_)W*-hUGH39GcKc?74Z8La3pI7$O_=X1$4s&@oV814tGCN_mnMf&K7 zB3fqRtHVUki??gM_0;9GwrOa0f)Ai7J8mvwbJr`X_P#~rU0SXhpP00WLG&d)(MvX^ zWo~?rTCQTX{pY{Pt9k?#+!!gM;TLktPNx6-x885cX8+k%Vtis(h@jF(=^;lIHVSc) zQ-rxG1X`zP!Z*Xvr+tNUBm-7I(3VDQz0Hud_bo`QWFb*QgG}FUqVqh4cYKT6r4b3&ny69{Y6?Jh%v?NvpmD9E!>FMzLqX0U!bH4P?<=UQlQ!)b z7SmWQwuhO_ei&hX#9m3T{EYh#-_`aS8Z;H^18bdGt{^H%U|0Q$yox)qH*)Cjiv88> zYzdP-iU$aZn+qr4ACE2ugTc|4b)=y^qma7VD(T0e&gk;)RW@|zaT>_IUy=ApfNR_H zn1Xwjgvz%+ruor`KO0qR`KMh`Co0JCbag!6jh82SdnnTi4BTBev>4;i$$v-!^LD(& z!v?mkM#^Wkwa>Gk==AxQd76|`rvG&DwH!vIp*yA~_cV6XibIWjh~ZP^&38|T#>vV~ zgCQGgO(M14mW_>3>pzO$TIVDY%#)dJ8||A~3BWt3Zj40ApFU5%tG%p?7#+b;&!U}> z5V)+*yecmtwv`<1E5te>)r-T<7dnC&AJ+ezS$*!W_K{_IcVy%#1}{8t$9kBSxj>{o7^N((>&`jH@EY3{F$}iSl|q2 zyK%<;YmM%?F<+rjiAx;vEuOZuJ%8<7y%P^@m^^!*w$~+=0w04B;p#<(eO{Mh>kgyG z+gs=5Fu+vITlwA#pPw{dqv)z4Go?G@Q0VdeG7^R1W~dHzh;+!AhHBq!cb%8QkhfZ* z#sZ$+W3tB1)qykI=6H|sQZV-S^LSUJsp?^Hybnyw7y*2Q_OV-W$La^ma>g!JRQuS0 zpVfvB21A7u=H=OYD@7}l%ErsxkGIxXzKTeKik0fcB@|B&fTM4Z?p$T iy4RaC7z_r3k@_EghXP+1RG%~e0000V3cW`+fiGausIpz1Dix{oMDxp0&0!dmU^<1Qi5PD3plpt{wYO zC_IEh;ZQg%_|5R}&^7QM&YxsYLZM32gnk^vgP+mi`)szOirbXFfFD%$?%8i`6SC)I zU+$^C{G|T;lkf9S_T_``!M~@G@AEn-Cdicn)O`+4sKkC%$onyI)0-FPTTrOgDBB&R z{l|O9*>=H-HZu4>>ks9aHTya~$=xZ0ty8~_mYm#3^i4E7tcL4fcS?t!fK`I*Wqx$a@l3S2&w~bB=J5>o4A~qWJAO^X%}~#f7f)lKt@( z_oe;zd)jdaENeLX1x-eS_P);#Hec9%Yizer^@wSgKZ@${MB`Gbjb8c)l%qSNFyz}_ z=YU~-5Kc@LQevfQFjA>)1sJlpn}HT*_aCGHi|Db$oyBV`I+=8t5qTx~%s$h>4bjI)PpP}Rnd@F_oID-ZY&mc0&%Q-=q$tG||g zorC*Lx~mlC@^c)t-%&5(mE%;!Xr5swgm3cItIq`Mzx?Q-TtmQX_yP zXZlm%Kwo&`AlJtlc4lNUgYf3M+lXQUWFe|HhI1?%M6s zwZh=fp#R|O3$yD=r9LIPbz!YI#Vzj|$=j=s(U@T2ai4$j?$^S%nNSRJVNqVezeXa6 zTBKNN>*|j|7YadWr?zq0f)Xd?n3I3$25HsbuqoK0 z_b_BI`%ma(G=bo0KmgCIIxK3cPSNLt!b8vas7X);F-<+Op6Y6wD6=Ee8tP$EKHe^rj>g4sPawPeFdea;f0K!9nYR-WBPu)yr zJ{bo3`HZ2+#{L)pR`%2Cm3d)Nnl z4mF(=|-9j2Oj6a8|zQ7M!2Dju8(~=1a$n4CUo_a&yS-c%C z1)#Pn3`wleruQ6?*OyBj2=-9-Y-d~{UJ}9qMtj*wo#=}@1Jg6oW5+GkYtS15g z8~-Sd8VN}Z5yO6Q7e1D&75P4b+G`yy!fqy^DdMaTiuw8d1;w;1V4^TlP zRKRP4k8O<6DHh-(XBK=Aru>Cxt5Y6n^hgk0FQVCE*~NUE4Wz!hMigp-zxpaP?QXYB z(O;>rRQwrk8MoZ@#pg$PzG78E!Ue_r@T?7Jju#n9YJ`&RHEh+giMEOk>-iQHs^=gx z)Y>yYJsG0ESvK%f{Agjrp|<|d8VhkF?d;IWs73Sn!uZ$+oihBHrk+nVm05+seG49Gmr`?@N*+$wZch00J-qc{z4lb(UBeE| ztg0nH6Sug}EeXY@p0vHk9K)jO`5oO3l7s?owr5>gx}4CpWYo27%rD)(owli1iE+IK*c;Um1*NYP~&z8rYIz8{{ z%5VIfrW7z)C|hMU`QjCx)P#vsk*1!0A@lQ#jAOzIG@c!oC1M!13P*kX0J@R5hQe?V zH|+m-06;Iv?>F=`#oSDy?Kc4k0o+9#rCm2LM-us82ssIXPomKOgW3BZe(BBFTkZ~b z;#X^u+i$XuY^`r0C{&$QqUIpCCiC^mGb4ZDHTF*&dBrECoFc?eY?%=jsXijyTlhSz zLxI{LOs%Vg_(*9&VsI+-h$yxuF<$!~KY=Xi<^kI?jAB#JfVw7&PC`$&VR>LroI}8F zyoxl&eF;?ALrR#n$?>UK6KK+yuCf+Q4)I$HRM2yN5#fS0gg9G7dhob7KjB5K$kMjI zK3^EfrmG~A(w^_Jz3l%de7q${S=LMEd8v;*Y?`8a;iOb|tOQ*~>GM9g0`yB2b_E)^ zXoTSet$_ejd>Mqsy_)tSyo-X3fhr#q?j5@&Dk9F!P~fPL>}G{UtAmBBRck>P z6X|Y+Z#(hq)kqTQ6OGx1B5()vWifG5ip35P1_bULtb-F7k(c|gc+XoE6v-i~a$E5f zhOJ3qq>5H&BAL7k$>hTWw?HO?d7^cb9Qms+K@l23qO{9`l!JM65+Vg2#}O$21c*ec zSXr9&Nzn^oI|)NliK^pSJ|1ZTNuvUyK|v)Tf&#SUZQhzVg{hGHSTIAIU4R-aUF$&5 z651+dEQqD0A=FJ(M;PurQ20ppm>r)&l^{uqTg;5CLH*C2CGP-ZdZmI9t~$C8t@DqJ zB5j@~x#oUoxeulXm&?zg>vKrsKDlSw)uUXX$LF>)GHa)|BNMdB7mioXY$X}D5~G-m z%&XP=VBPW1k7%G2yCF{;9OLkn{WuZK&6XRCVsX|mh$k)gOexUaai3f6E!$>9NeJjn zd73P*&2w!!#Z_3g*ld>229Co$s0mkuua;8bb|8wx1d8N`3;fPgGq$@OnpANl27?I0CiKa+==#d!~q+|0bVf94kkk-*AwGC zH^IEL>ej!6WF^DPfYu1rd5tEn0#4-c4H6s`-Mt9DDgw3T=YZ4#vLyUpkefN_N?`BCvo<;c)yd7?^EF{sn4cW-MT=(| zdZK!OX}G|&&{N`=BeK+Q4x378QZ}~3Jl~>Qi})503!e2T`BIg$sSg2Y66sf5dm>8o zkhXDkZGXLx;%Z5pCgh{e}blW*a`2=F3!(V99Wp{5eoA;TJpI z(IqL?H=@wyYdK*I@Tmr+rv=AgMm9p8+`(cE4qbxdk2seaTY8WJbMB~oKa1e0kM-mu zI_^UO^qB&aYsTopn4d;127V;E4l;rySs!Dz^3#gWr0R1V000rh=#zwIg@vmRBQ&+y z<^6tKt{XkGyEdZlXS6*RuXiwyVSw7I8%vDhCkt>*Fq{?yI4##1#S==L8x7yT4aQgI zBquu-B$wtZ>dF3GoKJ4}t{rtnv_1sIkpLm5n)?rDUA@+!`r;AWI83uDv|KK!>f`m4 zKPC%CG-fS~n}*&;hITYeU0QP1%dD_F4(9?ZrJSmEwyH91WhMJ(0^3pS#d40`wK4GW3lhvjZoVBH$*3Mo^X{QYOLiD zFSP#bSY$e0qZ9x3l0IgTgZXt+ok;Njoa)(3V3SqK=mgAaIH24VJxWz78S&|eoC(C;k|3)Ek6 z4*RO(v+icSTg&bp`CX#NB)s(sQHVvHT{=RMe*x|cgLl;sER2lUGTtl*@h)&Kryty=`y-ALrMRW?*!HCQmY^H4cco}QD z5x8R&Nm4jN72MFh0}C#rTO5Q>Ws+?BP428di%~X7mgf%i^3m497#&#AAI|yIaP{Pr zyM=i)+!)_T@HAnHHb2p;C5gQ!<^+VH11~F9d*BlL`3;4*h8CO>aOZg$sv4Y{rY}yR zkMxtt{4@yxu7)Oj{Fy!vyE*@Wr;bAl9LHh@YeGYa9adn^*q9yW&F^dj2Q3WA; z(Md2(&9g6nD#Z92t_|vXJPtV*;$4^y=yZpbKu} zNkj-whTQpS6T-CI+RJ5M<64>=p!OMb;F$k0SjrzJ3A9KB!*MonaydiArVjMoO9=Gc z1kG6^2IBCogOSJ28uAqePp_(wp*JqdD;lcsx1g1!cO|cKJPvIw^^xO*ZiCB%3mm{T zOygqJRb0Q?cm*;c0+a@1=h$1|7aJpCJ@6su$t+*1TP4wV`J9MC+W1H%|5>nBIsb4@2h^u#~FVqT(!$BOC{e@B$w=$@s9))}9;|CeHpUv8Y>lp>r_Q~Vrpr*st+^xl#n$*hirZ1x zQpiw%t4Kc#pz|$*7-NxT1j12@of#j6KOBbi2XPGBzgg%>O&N&G#9gBW8hFk%oV^VZfmGMuqMr zN#jjJWI&hbsW@7O6lEKr9@F*bWsokLnUwm7b2h6`hO+qXgL%|}KW>qMT_q68dJ8Da z`(1??Cn;%qc_IFXSKeb4r;H{m!aO+{CP3O=I>&I6E=lHj?*+XGRp%STm_gPCH^J|pX z7h7n|`}%d)7mtsKMSKd9yQI*XYB#;|YQMrl?MkI|iMHZCbKQjfb7CjO6}g)7N1Vel z@;^C?R7J^FmyGF!wQFVNT-RPd+3jKFeM#(IHymT*FeLD3(O?zyWbxrTvx6p6vn$i~=S3-Z3d(J-Nt{W~IeiOE?M#mrl!;gxE-r)Y>lX{@5>%@|r@wyq+wy>Ccfa zvDBD9SuxYppLk;1TeMwS!+=q&Q5zXUbN?E6v%KHK#Udtv`lIqkT`YHaXy5$3Yf+$M z-Sa}1OH>_713zr@Ui%wOVziIHDNsbG&r|nQew|PX?x-%zIzOH@E%p>zCeNQ%J+%K@vKhZ2-8J=iu)U`OHV z9x(b3p?l%YoG=L#O$Xix`||L)MS{}AQrhOmJK$b3ak zMIcrL;X}{|9;E?3Q08L=%KGqb`-jGu>FJu_`WdKo3v)(G2oWMAm2P!MiTs^PnE%0L z72PQQR#TUwRdy*cUz`%&3LX3LF?HH5tNj14Fpq^KAv=HAZw8R&ypFd3t0=#ely(*2 zfV5iD{BIGX$WyEMQJ#W82(<8=?m#TtP6#OAKO%-x823K}A19at1tVCvY+J(^L72$3 zD$!`JY(Z88w|Ig$PZsLkWCrA1`t!mXj7Xag-||j`Lvy&{*{e9W3^;zHygodhT+IoS zD$D=>_=12|sP-Jy<=nC%OSsD8M531@ zG3V%jI=^+T`9&6d&%%g&_%}X?&=WLWgnKHZ14t#H>(2v%h>m5bz+W!K`&|^T2P~ox zbu9qJ9In;vcofO~u^HShXqXrBDpcYUC;}LecZg?fOY^TuC09u$`*^Al-D3{#gu3E)64)T7nGeQA zX`cwa9vyP5Z=#3C3$FRW!)s97-9Q>zaFAj`b*32SkA1K?eJ&ORP}QI`lu&2uxu^Qk zIL{vKU9GC>T0K>Q9Mm>u6`6EA>SC3xy$h~9{4*=)f% zxJ0xU5(7>sF9EEp2ZY zc|wLd-UW3i8Ge~4zJ%N#=gV*{7ypPWtCAx>c?w%mJP~@ z_t=PdJWJS@Rc9~yik%WVLezJ^nC>3}|6gORuOALpEUjpz=v%gqOt&BC;zQ#?LT&mEdTR@^}5jITs8#(2K7Zj5&FV zlo)#rC`JY@yb0OS57WKYq1fDxN3q2DHw+cAxxp}c0>z&RuCw%|F#xxsGt^63CPMW^+kh6GW#=YuD*#0nF92*U12z5rOdXKNT z$2+wL8Hhn8ZTSYCS zqbeR84}bT}%Wm?-RLShOrkZDy71{Hy2eNfOKV4t*^vo)&RO{uj7Wbfs=`)$#k>70A z6?8||J%|}+`p&<59+NR&5^q^uXc+6R`c-CaZKXO?eH*h-pQw2(8|7 zE&Rt9c35d)zwb{xb4F-s5^~q80sPMq+W~3?f1~y;SUwS=)c()PGi=5|h`Iq; za=gSNKJ=oosMhK0M7}m30?44|bHp@YX3dEu4>5HJz5X&Q9qD}RGDhA`JhJ>eD~v2Z ze-N{D@a7K^^EB{v5)>KEksqK7LxbmtVkq_?~ z?=;rjEAmz2h7o39pSr|{9HHlXW7N-E0dC)=KmR!Jm1=LsqnjgfpId8t*i%YWaqeN8 zU`vA5JhA!jcsS=L~7BKeOM;0VCeGkfS6%?tcghnw#Z3S3~MfkUtGP3 zBLHd+3FpQ-nqdgPf%y<9*!5j-ULDw?l%lSNTP_iYRw0{$&IcM95rq1qrV%qoMah}% zD&V$(fI=P4ku^{|^Dx*wbFHgC0$uR>ln&~O*-&oVb~5DO2>HKeg4=8t5+T0@VG$Yy zRK%XmzzWnRVQNV+(qbm4+#B#JYMTU<@?A7=)l#zDuoc(if1d?74~bOhuck1%>R952 zkuuwvjY7{x6X&#cCF8}u5yvjAvJ+(eP^@_vE4Xhbtb@@>3yn=ORfG3Ng6eWZeGWn4 zi?wL)^t2gLtdwG{qvX=13^S2><3*(Qy8D#xQ&4Xdv|OX901j7UB~2_m?f9w2x*R8l(fdYT+4aqv{qW5Ai?;0)`1na*u+_LK zv-E=#D27JNT*T-+j<+Q_f*`K)In`~On0Zt9C9>m6i|Zh&*S#P;R-=Hq&59k_K>trD z#)Mwg%jh&5*e%eD_ld^P%<}+XUXF=L4tibHe0;`n?o&j5sEI z6?z&=Af&jObcKF&J}58Lg+q{msk^g*LTdJ5=81#D2Yx4PKYV9xUI*_&0@^vI$fxjy zx3`0(=dHyll<+G3&o;~4H~1RSaW_3nlCm%#ePTiS<~b-pkajLHv(cp9Dp!)S7ARoN z=(kp^2zQNF-6B%7pPpNSyrb-ofREg>z|``XrZCO?e%V}eskwj-D3$k(BlJVJ}@3& z&T3|iTNFPTHtrmE;f}xSEOp+KG0^9jb0|LlC)aaB>n&UF>%2S{z^vG7d*7A(h(3OSH>2FF3yH~OuGluG%hNJk!95ck+ z-GAn!i7(}v7kY-jn>cW({!o;0N6F0N+MScsLWRBGOJfq)$I}NMn|W7gW@vu(*h!MTG`hiTI2nuY9WcF{cT_9*8YSuaTz~nKbqB4 zR7kBWdL)Xe`&k{9#$KG9*R2t|b@fzzk|j|~hNe1WcQ$%E$uMI+#GNl|3s)X^ri-b^Ee1*0r%=F&^D9o$MU5wYIyK$#Y# zz>=l6Egq!%zlma-fRgHCz!McJ+%+3uJ72hk^VAeOa5Hv0Z?{IU2{4A%Mjm5~emV%9 z)K6opOyc--cFD6mjwgCag53t&@3wG}DrNmIxc}mgniaG!Jmd(dP*m1n7=nj5xa2D0k+43<3XL5 znz#R(0YTb#g0#PdQ>cu!C5a(BH9qhAuZfCQtE0_N3p5wMi~2EYYF8S9;2)BD2N4OpAhwk4TxC)>g$(CXLp#4r55x@V?Ixks-DLrodA_^s>60o~R zut0L&8RUHTX4n#(0@41f(!2Rjt6~r_{!_Tl(2e5@!AfZ9;>&=nmFe^a?KCm(c94v7SXA~=Q zu0mV-Owc|CM*I_df{Wa9xTmcvIIewJb5 z1l{8}c(7UvH~}L7PQZBWyo@WDCHiks`bCZtateT3*NIbB-#S8{lxNQMzP-lB$h$*V zkzyGhQc~bn>2qe^A$Yu+n**BKr-hG`qEN|4-xe2L(A7VU@{<-fxoe-rG1ICyP`=z8OVvj9D$3VxPJX0dRF<+$RFu&C35)ENdjQWm_JL z?gV?qn{4w41i#Wd-7$+zN&#n`_SKGi38nq+1XugOthc!_h{2(==5Wh76*tBDF8oTR^Y(t_v1}^ZCg_+@-JS zkh>+%|4acR=$(3rs0V~k_CzPZ_<0$jt}533-&EKh?f6)FEnh3rZBd=E;{{}6^I z$wFkt$6!4t9C!^&I0@%z_Wx&%w=eC4xNDDD;5VpqWaybq2nTpU1nh6}urT3F+P;pj zs|{539w^VUDV%HiF<@iU5bQ0R5VLTN<0Jjyuag*XI>-QKr++*aFcPL(<7`$F*z;qs z9Fa_4)*Ey%-?UKz`P^j9o6GZiG9C~A47;qwPnquAK37x(d>rFJs&q@C=a>7(9N&Jg zP#$m7748AjX`hjtye5BP{OR49mdNX;Z=XG8FS%cI7QKwBsVQWqw{GwDh`g0B?6xX( z!gO)%&)H(z@8uVI?qqBA{J0Z#??*_~y<@%JY*N;^?09x8Wo)>A z`1{jJs&=vXN6aae~z%z0cX&yIu+&p^J0XBs$M0f#9y?isa*99&BocdZAIP1w< z4RWkl=O}y~zYzIryCn4$U6DC?if1<~6j>Yd0gwDaYDwP4TUwaFfX%ki9%ymycCy4( zdnCA(BhV7?eMURS+?f`X)tsC|M5~@}s9Y%^sz*+!o5gDs)*%dDwM5wjRt&|8fWYgf z_G}|M3XqK}9pO_DB7eS&%!FmqWpMg{(|j4v(++=Jov)#~FMQ+O(|eGtJyz#uNFW&! zOCiMs>c&#Q5lc=YV41~4a2!CAV+~r`ond(^Sde4IaOwMc6`WV$C=}y3mjBArHWzh`8rB5+h?(G~15=PaYXZbVLpTT!bb_F@LP340vs)PfAdi!Eb3| zoY^N(7OqI~zCj3sKoTN20M9H!uCL4ddKO5KXXjtT1O_;3oQ^EG*f~EkZM*Scfd>?) zcB9=WG@Mg$0t-9?qhG|dM3s|s83MVErzv5n`4D#Buck7C`?tf5Pz0gh15OYWB5w)- z=^hMwg78H$c~7q1d{{=1dkI+Oc)jODNbIN>?N4EvI5MvOw1y3+lVJyQ1W1bxH$%-Mm>jD%P1KbC&>4q|_@62`kkR_kUq&RCGa<-AW2Of02 z^DGv42-hvsT@r|Y17Ds|@Zi&%c=Aegkf-eT>5qTf!!zbLgh`I01RyA+3OsA9V4J&8 zZ}J+_(ww9)tI`+r9emXRiIOtpC&QKim6nw0wjAE03oFC%aa+J4s338$5Cc~_5LmUv zr;C42%Yw_)VaU@`TC;z*5u$-O&)3zO)=S@J%Hv|=`n*(%`i{p__y3rSn6AiDJ*&I( z5r!SCP0>56P)BuK$xA5H53kB%e~ygo^ZL}TTRu@qaZ|amoL^V75IAHqWYT8L>aq{= z#ns*-r8A7LYcV+Mtwf&W%nTB$R*_Z{E3O~;po0Ij_tVaOw~Lm8wcTZ^9%c@%9L|e& zkN@oR~Lg3 z&b*mLjijCLy{o~43$>;_8Cs9)JHCpD2+vP zCobODDv&UK$S`}~aN($9O1{=W!ey-r>%G;{M^ZeK{A+TA4pw9qvV8^8YSJL*yB-w zpZ&)zN9|H=G-{%*%p7ryOWdB^9VSzG)6vy@$pmkipcR9_g}Oa^<)Y+~(Vmo*5t6 z!f~}8JmYEOD?7Pt=4yn~Dcj9g{q1&T?5`1Rfr^OUhjHZiH(sv9m_KkVf9*s9Yr@9P zpVVUW@*bpz4s`E1{2><~rzFGL6hfSmpe)?2K$9M$4Iu-9Cq6|JLMzL1Nj=bT(fUT+ z_e)X5$N0&I@sy7~Hi-o8+`iVn{!^C^V;47Stk*l6ICl&WClaW3a8{zOAglF>nGo3v zbp!&JQY(o0Xa!g#LKI8Sw7Jp1o1-`+YNU~sS42HYrq_;=V}gqh!l5O3dgSRz6MfF~ z8k(OKyv!h0u%)xaIPr&IA)-6o;uSwDw%Fa3n1&9-Rf|!GONm}6({&sxVxNl&cCmC# ze(hcQBzUmQEX4%o1+NkszHtZy@hVBIg`i`p+4T1$jok-ROw8fFr#X3SX~(ggsBBX7 z?d2^$#eJ(C-OLAzeiiL^^e^yH9O1HZht7#d z(e%vx?x68!bqSxFPeBnb0;H1N*a>M*B6jh)tnQo?OV*kgQ!Xjal>@OdgwpBd^2dGP znd0F&sPja(m!8K)Xr7h&n;qypt5!4yL0T5{9?vi9GLHi0`5r*VdmI#UIu04KKLS+V=8 zN`>ZEa~SBX!nR<_K`TJYZhp?KXkc!Nc95c9f?iC5MjfT?KL` zG3ZYCDpBsi7mnM&hj;fd=q{?RI!G2GNjV`*j@z@#3+gO6dH^_^e9Ioc?Rd0K=#Uy{O2T%Nf+DN{l>HEXGMd_wsWU zi3NPiHEj$PmB8koUd1hXdR@a~1ye1bIy+i_*1xNr8*b0hxJ~M>JP(zib5UH88ohhL z!L7BiSK0Pk*_V<>e-y`7Z%EhLc{k#C{f5r5Zyy|v`o$(K)YY<>@cH!eZ4LOU) zTw`3jrrsKNb{vj;G;d}KSUmjRTa0O8ydWH~LWKCGn$L zHNCfD`%e$uEdNAtc&2J5pVGKL+AG)aR`a~b-I+-A2&THR_<0$-Py0C4p?79_d1`d% zHnHjZjgXeV^xekE8s>X4`o^Xr@4eq68*EqN3Pb*#lg>l0jUt1_*5x!j9`+Q?aUU{^JRTJIuFl-7%s|v@v_|A_9eOtP(Tw{~Gm=n!x&V)L{OPTb3Pf_yEKaT&r zcJR^ug@^ji^>^EC)w=K%cB%dohs~n)8tI~xMX1AsUemmsWcC#;SwP+ELG1>a(?qC& zDF_a}oDo78`XQ-LSP5(s_ybCC%C+7E59%M(;;aHVSy$>s@9dU=Gc0|>hr6_?3J$>LyW-oy&;UE>>o z8AzN9T(=%@3%1$}TKYw5$lY0JvhaC+vYZJ>Ro3^ii(rshpa}%=Y*Mmj@Ccr4ZuIs) zkA6c}0kCFc;<{!s21zGB5^HvJD}xuah)d-dBwuwnTOlD#puyL-P=Y%F%f=c)H!8wB zv;fb7=D;x{1x^Bp$W~^TL;sJs!;qz|@M8MA411CuIu{&s@qw*W;pd;AG&@Y(ySZDv z67swj__&&hMwq&DaJVXr-hfQTc@TJA0j^X!JxYNq2;=E07}Ir>kBVvt^G{1$lcY?z za@KHs0ksA2CWFU6D$t|lo@ly^@%48#A(I1D57$wytb$G^N1WA#=5eeC8-grJOFY_C zBL#RjfIw6+y)f0Q;hk7VQJR7uWBqv7V&GCj%+-q9|Vp|Z= zG!6a_YpQ_X_Re66%-1#b|0Bw8=rVKS!5pE3K#@6+f(K{aG=ouyiX=altbHNK-Kfv$$>9L4PebJ@bDVwPLJpXb{0uBj z<-;u!30Ml{x57Z;ZS;xSIfHZ3+FsJzFQeAJ$x(x|;9Qs#gkIfDYbbEOQ z_#RzuM1#${q%vp4h^dw@o>yvDMq@qWe^8z7ncV6cnvm1I*WTWqKu(+D-ZUBwteUA9 z?K7$xyuH6hqQV~v2xn(KiuyF^S$(|o{v_A1sCsh?(<9n7DEtxmXL56>YF<7oE5h?c_&1*&^)Ol2vlZn^z2y5LPnOmQs}HgZj^zq9hr$h8aVYmG>s z>Fj*=<8<}>aKnhzHJML8%RM>St!iRfpMT!9=&#<}o2i{1(H3Fsn&(=PuTyt%q&kNi zv_DGk(b(vZZp1Hk)F{!kQ{1q!N1Bzo^ zmzQ$~c0oY;q~P+`5#S|B2{^9^hc9Ya#Y@Qvtv=yx`jlzcbzA8cApeILU7}iViSqz@ zwWNT*8DS~0EA?Wl5G(WC+}}pWKSP`wF_yJb{t5%U0lH2PI_a6$6e9puD3G~3qC9K` zDxSk2_6gUvAbyeaqUdzmSTi3hq!ehF2xWrai8v5m7R5t)$@rqU4Tq-wu?Am=LNTXV z{^|H%{y+g<0sgjU_g=U+_!&>gdy5~oK9OR|V5U2DhffbhsGC1-(t4ji$gFwf_wIOr=>k#xvcuWxF zxguZy1z05`(1KhoOkR3{0!FmS6Qz^4{}x?^fLmVs4h;dS#=w9AO)WUl4~~P&Uz6r{ z6Fk=uJgtFcqxIXvt_=)}UBZjdS+5>(YRPK2S>?K|43v9)3|)<3tpeQE!L&fJBsgC2 zKutZxIrpTX5)30Vb&3F*v^FsM>SJUm&b|y%=ad1!r($X|ZPmo}458i~RdANa7 z=)h3%$MmXIGyj74EFiv@B*$iS(YRVOj=Oda7eXaqrbOv^!2gtz>>jK0%!CbJ9Eh>M7_CYcdep)98*Rv{M45uW z%i1W)*Sqc?(x}LI0u_L`ymdLOMiN7LiUT*K$yWz>1I_N@_-%rpHGtk5LAS(z2@bpd zoFr3afwg(JD6PvLeuGFr`&DB8IzpTbGBRgb_N=vMFqwlZYumnwAr?5l|x zxJ}xX;?%s~k7m3a9L`oZMFAV<7)L^Cbnf}$z zj)|XYYZnn-A5|Z-Tq9PKm8?Rch)K*SD?~x|*X=;%U|#Dw6Dk6mL4g}mNk4h}rHn3= zj#FqL443Tu03l`M(?tJCA~t0mC`+J38bJ-EIu72I0!m0*h*MOoA=gilPxnCBq`KBzWb@`+~B% zh~}2aeZv=nHPd4w-7{`P+}mGMUUsPLaBhRJ;r0zOuzmRLpUPhxnvEkkD=#~&WslO{ zxlMK~&HT`PkmPRK^03BmYNG|ip~A7G#u3iw4!u#B6zcUQG$~`9O`OeD>S_)D7WtCt zS7BE?jq}_liN;D_eB@FNi@@fhUq27u{2HPBG5_7$K=V`E$oW6XI;sl7tHq{T z_p+GS7+qDJWxGqAeUwylQ1JcPwqtdN9vzd#1bR1*%(kdTW-f7W{dllYH8}kw>JQpm zH%ZNovGlu#w!m&_RKeh_K72aUdn-Tg&t?^u#p*pq8?>}ONN(FGu=!0@!uqwG<3zi^ z!kv5rOk2V>%nfm+kB%68!V!MO(oK>(<#r#k31k*07n3~p`N4NZIQx~kBopYG`Hna} zV$P0krAwXfcEjaE+emiI-2!C65r(@g3WeQ-{9OPpJqaq|H)rmf#{8(VkJaBb>3$hQ~@<8pC;QfNbTPL{z;I~038-p5N9Q7E6~H1`{c-IX zIza(Ix(Kb1jJ$=7;S7b4^e&O~$e@`;Eou1O7m*iw!KS!CanD0Rp&y_9SZut4Cq2K< zB^G?78=Wo2bMPcPdi{(j^|d+d0$!+pcuBbeGGK`EbJqyMNXhK!*(MQ%g=^bEPKYx9 zyD`cq8~hJUN^J=BKMyt}Ia*-@r9Byw{K%NXOx-r}Qq6Azi1Y>U4hY^;lDY}<(<&CO z{w%}godyB*$vV7w7*2t*5sX2aa>zzo26;h@v2!x$ns7D6ylg$^pb2zANA^WwXc8oH zJ!b>6?QEBU5MvULGZho1miWQQFjN)^v;rpRy$psuE5W@CG0~noPzt8XSpb1Y) zvlC@xqEZ5@P%FjjN01TZA^IjyC%?0e7=8VWx- z%X`mNfUH}#r$L=hBzCdGE}vMS?g@`{8@FxbH|=rc?{&K3euq{ARvMuAQB^8(j_e+-5tUxA<_uaF@l7<>PZG=g-@kV7-{ zz|?>I{?_lVb=SJ@?#p}6i+N_AbLw$^-5FL#*WxZjP72xzczE?Glqg$b+;4n812sjw+6j(5+;^njD{s-VI~(4s7uO3MSZh424IbVrx!bkTt0fL>5$0wQ_j!x2A%```A9Z8x_hiAAU~c9) zu!WeGbg|zatT$^zm^b)C?o4RN7<&2l<>Ea8^%qww9BAku0y>IXi`E#cK_w~)0(JfgxV69c27=PR;$B>;SDS6t$*$+Jw$)5 z-fUVT(3a9QeI)jZ_qb~R)P>^)7!Kc_=!}&>efqLjvweHHfgUg0u3JB@okvz2z?)WK z-{ypEwFlj}2PfJwm8jE@r+@$((yROuEqL$UCfYj=&>tgp~X#dK> zudv)t19OVMlT|2fR0aG^eUcrlGu@}+74w>dYsAtfa6VDtZ=hp{xBdS#@c-{OH@6A@ zyFt0Nz0Gt-ahrT&j>9m0`~EW_{-D({|Lx5u4jX@n+2v}sduZQ87o~5@2poH*s{9{l>Nx(uDoDx8i5Fw#T-&wlueYZEqLRZ*!7u<2Y<> zZvDI9uG=H!Thj?^O(vf!Yp)Zwe&gZY!_!b!FbZBe?7_#!iSRxZQ+G`EFB1O$@&8#3 zykBewnhey7zVEZjO+9`SM7G7)a;N`CoPhGP==Zb5fhH|ye&bSB*i|zpw|O2}TB=t8 zgig5-x$_loE~jnr@Vb?S=QsBnmL;{r4!;0! z33WPRmGjAw9+R;#Ro3xn9B#(N*g@Z0X8WyV>*R_y>IsUpo;pUu~JcyA0G^DvfA&iG{ez`q;z4e~B=^E7hihl<7; zA6rIY=g=XArtO}`Z*WsJO*VPUyvH$z5t}xQDkeYCBRx3YO}*Ha5=J|!>sxRv_Ug@V zZah4`x6*}P<5&hvOCHuY><$JeQ7as*i@-($$ztF*aB(?7Sz(A+H3V!PY_vSH^pDP$ z!}d{c@GHm%1EZU}5<%)S9onia=6?XsxGQwnpvj%l}h z-u91@OHL4E9JCJdqSb;C;FvYAPCgyA=>`1E3?abl{yQcaYn6D~I)IJX1e#CgQ{woH zcF5D52JT_Wu#fxCo##mL@X8!#TS7V{fte65RO1i1xmpxH-W$8C)tl=8tbICgx&7=v z9nV4%=HZhDZT?~ZIHil#fm=d;W6;s2nidKF@Vc%;!dn(c%frrPOA`cuIJlYN;qG~; z0iF`8laYUR+^&*8vhD-ce{u=4lwrY5_!5BaT&6iKMH@c&k7s58P}VEf_Ou%FCFaOw z6ITP^9BTCT;$R-`2Ll;=AN!~BixFTrB0w06SlQ%m*k2jv{3n$ts%078IEH1ybU|@N z1%r5B`4isvx8ZXj!W(A@Cg#Au_+ZaJ{)On>TBT#G!W*9sbvqiv20W+6&Bck8wR`BX@p#IeB+TKT7eSRA^CGe^WY~sk1LQFrB3Ps8%AK@*MaE-P6T4%E1TexDAx-P{fO;ECNwzfTmlYP zWxPs8m_Dv2mKd4ERYw~UaW?mRHnkFw;VY_h60p+KgGU!{a?0boe#tea*Rw{~Tz{6^ z{JyG6#9d`t6R>gnui|cho^hkc?+Kl-PX?!|Rw#Q&jX*>k=XdN6uVrl0K0tB8;~j28 zf~%Kz-+st)VrV;+l^d`i#`?ZGYK*=~MI~vt;Bp!s-j$)GB!V<$rOvYl;%pUUv3=$z zCD7dUgA#S@P?yTb>N^+oZ(93sTgB{TJXm|TR!GgIAaFh@qOX~yN%I)QTm3D(#2JQC z?7>Now=m9YV?KXyPKBA)Ui%w5(n5iWcS>Vc%a{Am^brNv9b?|Ka~FlDEx@@(^SGOpR$cP8ct~k+3oMp~Q@^ z@J2dIV_tG&LoxhFm~R<3IgU4=Uz&Rf`qT!(!m9jPb11mIxeewSzZL}!Z*WF_yS_od z#JmQ5+|SZdZ~=`6SBeCp?jvH0w08^}ZK310FWOFy8+srN`m_18;VL?2f0DGUnvFXX zIaG18yHm(9840LsXx$gGrIxORCwW=nY($gLIu-9jD6p-6Tu;rTs+m#$$ClGEJ#IcK z8VaH{cHZ)sDEp$%9`}gzXF_`yHD;%Cqpn%nw<-lF&~|@T(YZ#BH|i@J<^L?fV`fGv zHIo2^;(6{bwM|MQiOpIbn%DI}SSkXXKc0Pea;!6x*NM|Bbn*l1**f>erQw_xFG3X# z5-K%v=K2E}ztGJ*3SFLDwKR<@pEKd9P;uVr(>WhIyMI}-{NhKUDost3NUO#_;g4>Z z^8y%-7C*Tud(&bBt9LxV&9+6%b#%_owt=iww6%uwM7U!?D*D`Y!pLGCeOU&zJvO`=uc<9K+%6m6S+1>3EAK9I086#o*2yD1GVCkm zPRvfT+~6W)7$EHF=!PI}{o!sJt(SR)1)Q0OuJFe&;9?(j&^jj4?vpd!)Fx;A3ku?R zj&KS`kD=FY9j&Tp%fniNIvw8XJ7zIt;r6vRU@DV~OD#CFB*HBZWxN#L`8Rwb_L+8? zs8QirNvfs*>#J3Li*R`&Z1WJLNnEDmCwRM|*e$e$P5Rp|&L4l+tO)155Zy3I2Vb@< zL%H{F51hPLwb~gPGLujTLT&|D1NsLYZ$WEoJDsy?Y>Qo&yzBnU?8gnYsybDbh3#po zI3eDzI#_umk`aW^Vn&j#sV?U!&m-o>J-#;u>7sjyu@0Y7mSp^dKaPaaVp;}BjueN1 zn^h~9T6bMIiHi$z6NPYc{IG$8aM8+gK87ws`@+GQtNA2FV*5;})vr^^rsKAL7o`>} zN+XRMUX3m#-!{245Sc4170>8DOnG`%7uqN5{Zl0qD$l$k3~uUn))F_SY$G&yJ74X* zqsel9c-~5keF1RyQ(G)wi>;71*nL2I|29*~Vnz3}dC&v5ZJo3q_i!cb8JmdpfXERGD#}}#+SAl(;4O09+68O%!aV$^ui$x+ zrx$mXv+xStBJU0vZujoiiI)%Pu>lBTj-7Pl0udthNtvewUflkZYtuY&&m1U`0zIkG=qvzF zfALF>?XMPjxYpPNiy@`KWWCe)d+=O03zhzv*m_ycd_akJrEm6jJq1k>ttq{RD>#0b zvbB=}Z|)<)3crJWsia0>FZYN1^RH`OFFz*2$T0JO=936T48s%ieJQ3bPDQkZ=L+j2 z5bf9!jpvHE{Px2h&b)sO6y<7SY1kS_FWJ{TuUaS)!_4>+Cb1~M^05haKbxsOq@Z0A2huo z>s@WX8$7G5jQ;JYg)k`knhN9jw1E;MYmQ@%lV5ViJQmH15URU9{63&1Kj9)YCXT2x zGw0RhX!jfB!%DsbZHn~$I3~j^OAjI}u6mj8-B#tXNBV zkl{)yymlXLj3lBCji?(2kONxZ&WC@TA~})qKAEH+DY3Wa3RRt0%s_FU%q@s?djATN ziI6stL_mUgf4Nm#!kygj;G9BU$4vh3aA*6rL}e^UHaH}1=x-^8b{IfqEWreuDWcrP zC72ynRMJIn{CETVn#=aCAm;Y;5sP`~8*5ykbz9e($3 z?+;jI|2oSJtZ=$Qf^}k#Z~8J#Xy_zKg_*_W6NP(9(gDm*sQxk48CY;V+BhD9g04Vh z7&9r;KR{X4lA*c+~PzT<^xjwb?64t)x28h-ex_vi!84msSISPz3UAEYd~#YSr3g!sV>=2(98R16^+%m2j>6?-HNE3W$n&6*)N zs6vA}8(}`i^S$0`_J7R$wbTPY3#Jjbkx)d7Dyj>7NRE$(WB^0m6&-)S>dWub{y2s_ ztXmv#KN2m32iK!&?HL23p4GOwh5H!_VJyGi>x5j1v6sO3210~RVGCwB=y-Ut=}lt& zoo|01uOfM+#%XJ=9R>gn=SFjCr_4j@UU6rY>}kyiT4x2w(T1ez6CrowQ;{%^;(sgg zg1O3n30Zxlu5mgNtZe7bL`8K-HA(=CkOc@`wd|?T;VJ=v)ro;~=2MWUS>VtruSEi2 zoMj7l5W@{w(~+`SquFhLkyFq|Gu6dl;k)Mx_LFo@>-Wu3-yEk+5UrNJr~-r&9k$>% z^6cu_?hH!K&i-9*>3^_;i_aXbhC5=@z<0&1uK~F>0VB(9N2&zX*R)GrTSH^m~b z5EAZ<6Ur^bi3(lH?Huvo$%Yr8@(-?x#|^lVjt?kR=nTL$Tv~CX&?BRsS0A{3m@-LS z!ni)g@zoe}Cq-hf86nOsyxUIS-nlI%WJhz+#Jr?s?q2C4ganvb~TOT8@9k8iS6| z`N=$(&oWzYq@G9#1Z+&Ie-}{N9rLt|pF><%bn2ku1pZg`V*+)m^Off{8(@9Zq&CmW zp^cZojR=xNXFjUwRynC+)(X{WhLY3&DbV4sc0Rcry)!%^-i3a;PKDb!-vd%90153vc){5c0 zwq>xHQT#*!6{k%HgugiTN*6hASJ%Fo(-pZjn1Q*MnV~WaVsl1wO$;kgLtH@Hy4VU# zY;!&T@t^q1hzgDNB%a2s{MfP{gf$M?$rH?l3W|J#)|wxq^P8(5q@I)~vy#x2X$go2 z!?>LuyZvF4u-LUiSyiQ>^D4fUgn5Z3T}GVvrT>kMBSWCzghagfXHnq=*;z%GcU%#wOM*xY@{sh`87BW zt1vBUMHugpvLSMKS9G;XEKoOVbenVXE~x^W>5;Q*&=CdwJUsW#I;U?ktEz=Tb@k?_x}p7M*qFNTHJZ}ZBk~M??OV68W5&|Ch|-P(u$#PL zU)l3XT+|0VlGSNpnF{-!BBn;)mcHB?J(2-B*%0~N?CSv*85TiOS%+x}uSlWF_RS%jvsEz`8crS>0tN8(;d zod>O;gzNTfO8J3c_He9>lbh>FSyumkQT#WXnbD&i4gM#i5Mv}OWx6D!tjncp`vtx8 zRRlyUS^TqvSKWNtFH358Wo*{PHE5zjsA7rIwe0WM-A-0%};mGIu3T9oB>7MxK znJ-@C?<4h?hoy}5dg>gwa_YUuF9FGS6<2PP5==6u^PK(IBaNyae&H?QKFid-rNen6 zw1|qtRDMhGQD^7zMpDaV@%)+X)jSoaIxPOm+z*CM6ET!n&`QoXZ+2bs6wB4BJ)(Vb zNK)dqR$0pPsa^T?uP{g>yQ=Wp$TTdyr^PW#s&Pd7ed8zTky^5qxPG@sP*+n<6J|^& zUu}UQhvKBzOINmS;}@MDUa|ZSz@!5#6`OdafQXZu|T}eZHAPCNGD7w8Mvqm+$HBQO42z{`3i9 zl^zZ__ha34R1IqD`pWv|VD?y@z1p$t>6PJjWlKYsre?P5z={!ZO%icU<>-mgK4|;{ zQM=I)25wC9pe%V3o7Ug=nyt5aM|A#0Y8pk;SJfiD?=9V6Z(dBU96ukv>lZoC;uh1t zMl0#;*Q6ihRL#7(WcafoTK5)hx*)CBpEmHPx7)t}zKU;qNs{Gn)+chLq1R|oF|0I0 zN0P@qOaZO(^)@Upiop1i(UbIZuSR`M_Sb*Pu?)0nwcX?E1R~_I^U;2^p6-X|-;6oe zNuv~t^srCxfYi{s_2}4m?(wNXEUjMN^-`4oVnRq$W{-E~7cfY2=C!dstz4-WhIteX z9XYOV*5%BV#7B(>WPc4H2U5&ZYQDnBWg@Y@kREE6O|;r@J4EkZ{qb!AeqTnK{p_<6Y8LK-JS@Th)0eR z+~y{n+)0Lc#7J>j*8Q}T@sJo}&X;}O)>-W6Fzo}rw?=}2UzAsW>iy|aM+&f&H1ecj zfM|v@!C}Q?wc?#ZKF5`S9ve=M)EgBmvmeD$;?^L(U$c-Y9vCx0k}t=ZIKsPV=EZfg9l zV8}opetLtCQ65*D{ti(*p!LRDGe$58rm>r$^yatLOQ$hRxwBmpPB-BM zCz|rYwvq}p(=;fnsD|?7SB)(ymb%+>RvoiF&o}vXW(!c$JxtR%H^D+^rNkJVcLaNm zls=9$P9zSrwTol=k7aRHV5$5{`eBe@CtC8=O!4o8Vs)jJet=f?P3n90HDAvq@e7IG zBzAtez^uv;=b{%e9go9*LSk)P9x{y0ih3KKQlq5B)y(&l7ezB)g^Iv!=qckdLp!Qv zQZ5D0wJh4$kzXA-?0j!qN~$8>gG(s*>xys=f*gYUxDTbj>Xo?@hRTZR&odWogM z&}7N!l4wA-Ok2Zzpt{3d>>1w3ghv^cE*oEL{K?NFzT9$9VnnrGHUy;Nxl^#ed8(0K z8@#g1`-A&u5+gI*<_eIK`C2IAHhBEla!Qt+p~xhMBqamDs#WaLi+oE&RLTYJIE)i8_jf_f3Etgua> z7aA&>s&$#P#DeE@Rx5Pu`zTCP$~fAe5A@%~sYwW{5+apitVkTh50b-|HdKoOK6Tz% ztg-ZiarH{@K36~NqeuvKNU+&TxCMnL!#R}iMa%R)d5=jc{^y5!Ws}7TAq?TH8)!VB zXPd5*I9f6>{`o7W+#Eozt}&Y&#krP+f@`&cbfe z{Gtg0KlXQ*4!|FtC3+Y-qLIX`H}?T2Azxd1dG9lhwRf6Nj7NfFa=D?C07^^*%e)d` zT=L2^(#0_Iz~FTR-bm7%hQ#d6>YZ%5w>~TeZ~~yPZe;3rVDdZ(G8w+=E*<8WUsOCv zn^2vnwaF92$6817AF^^H;P(>Aom-`ZXT6aYDMsuE)GJub@~iQ<2uUZdF&8** z@zPe3ecpM$+osy#8-N63`-RCzjs)LdnJ#;0taJtSE`Qim;+aoA#J5(JeR5P~o(9)| z+8iJ~rYc`+YSS0jF5K1K_DZpcP*$1KwkMyVU9}#GeDA|E5G@VFK~p@74Xo(#1uVZs z(H2CJeSADA_H96J$~TV~xFVi{*ronE99dxaV-!*6_(ZfVF60ZZAt$r`LSYUDwekV$ zx+l=Rh^(V*aJCV|FrWaAu$xC4)m&fA()6{!V~tSkv$LjA1#$VUqLXPtDND3UR`3=( zVi`!mK^$;4#5ADP8w3^EMYVG-daP0TxpXHUvnoW+(@|1|&frQL@kp>7_8tTrd?Rzk z9J>}&KHhY}3?CSxWBW!%Jv9p>yL|Rw9%&z! zbAfg@`$E>q4yBxXLGbHjB5c#{WrlaAm<1u`r#piw3`tCwcN@X-F(R{Y-4R4*rm#3q zfk|x_1EiL?Y&k>0dJ|0H{R8SX;aG#xtx?@E1oOEMlzYoe%GiK?Ar|`>5vEl@pHHaK z`wQ_$w}^B7Z8yjhW+Iiu#mM%wjq}I2J1OR@z&@w3q86~^ zZExm}F2Ji%A7?E!zt_;MN!cF{2z+dUKw0iGEf2n3(4)XZL)^c(U#YV+yJnDpqqB5cW6mJTnT#@=C^`x=< z6BWXlHn_%<9$C9$7njWT?nr-S6{=L2wT+=49x@gB1a~@N1@7c{y^D1jUd*Kp)%Zme zfM?(atU~)E-p!$Qca#@SnMF=-GEo8yD2AX3uW9MLV^*N(nH2s$vMubqwk=tHF%sND z^vCdH&Bi0fkskZMk$}5Fa6oO3u!kCi>+@O-IJx_g>a$rHdAzX%PnP{+PStu+tPo?a z_MI5auKS{EHOcS;?m-$PJwF<@+5qbMi(v0ALS05wDir1f%xO5ZzmPOO4uY4{*X*Cc zc7&pyAMic8EMkYZ0Da``fuCpSEhNeDu-=@jTF!_;+0Sgx>`ejDoCv?Mf7P>8#?SM+ z615VTbz4IH5d~|&#nth4uN%DM9U*zCU{ob2l#xls6y8#0-{|J(g82OQ4VJEtW;#?c zgez$Q9s>0$A3pBkj=q^!69YuszBWDFUBmT*xFVqSH(O=Zy;U$Gq&BcHmRIlV*e;j% zt+*vLb1TaAsgdywZ*ssSvj8PR^okiX_XXT;&a zR^5;{N$SPRXY%g>QXdL!D@?WlFU|`b!v|1D;X|%NX=AKhq%^o)Tp@nd8|a|YDVhVB zjVTPuxaQpi|J{AstLFa+cb=i?LdRQEXtu~>9?H6ZO4=XbLQz}sSx3*buk~XBwMn!) z`JrGI`T9!3owrQ+ll-J2Z|#hAzq#j@?I)l%pCnBzin{)EJAUgue&!0N^*x{B&yTQO z3mXAMzopRuAlHQJ)Ce&tz%afJisdk?h*z%`1fQq8+H&oIkP_~1$XVQtq`NI01hUd7 zwDv~>C}Mn1x94?yi`tjT{CzEl9i(L)P{J0zAE4L?JvvwL!UIH|7Nc=^!FEW+N8tdrb-~=JPvU7`^3F>+A8Zze5~fEiat)KPVP)$SQkiwA5U*W-`&;;glql zJK5qyEs~(>|H3>dMt;^sA04mEz7vVB1_4*8!vTz~VVQS(q$Tw=aw3XzR4vDbP2uGi zF~o!lu8Kd~xC4~Ju`X@gzok%%5%NLqVI-JHNx2s{?b;X>pv#?w-3zI*tq^k@aKr8S5RsFhc!j1SEo)RZDYb;4G3bMo6BV~Kae zBExmK@;I^qo2Q!y^3t}^Qd=PedyJQ;9mRy`b^bXPcM|Oj+th#bcS!J&S7#?XJSEvx zQ*&7uA?|vVqm*B8v!nglks&zf)-+*Odytz%Q$q0}`L>a6K+)OXNAkp~<$fF>-CzFL z$_`G`*i=qLqbcv#sE#9;X6_{XYkurIVJ|7}iDwsTD2nUTukQTA>P<+g_pRH(klm}c zZ53dvv#K0W1-pZwpHZmZH_IFP6iy6Om6e;PI7j0$jE0%iB=070^u*x1j%+mKtZjqc zhW-Ur$IHbLYnW}`pE%&z8bD77m(n#~IYUS9BcrO-k`btic z{2Pa0);G8O?O6NM;xSwESK0)tz0jcBv0=k(e&F$vO?riF*3n9|1^k+9Mve=R3~r3a zchs4AyYOipqs-++7$l~f{xR-4Z^nndyt<<8@qiK?F2V(}Lmk}0J7f?HYhxIozkpTSi^X6mj2CN=J{94KB*@bFU98tp^Q#f~zY)2#* zY)ABJCX8NjtAOf(XL(~tw5$&tW_K7brVSi#`jfuT&R~Dk1MEH@^2o5_o!>W-DO;vY zA;sRCIB>lt6MoP)&K>7xQdB^T3n|2`>0Be9k?2o+pu+Gw<$B%R%iGN05{_R>Hl$HgDQ4jrG`HaP?Xi@?hY@@nZm zb7P!SuOL1B;stm0im5FW-sD)hSOd}5u*W((hYop)+^z+5@c6&PB*LMK&ocK~c%iyw zoQrMT2p}U{NY_og@@xz5i$(P1d1?;K79ZFZ2{^Zz_hfJ~+|>8o#>m|)$J9hDLpxqx z+Ho%%ti7oyT5d?Pr9>FWIUKR5Q{*d9o+3UKiz5Y^Q z+*R}p90}egAlbv7BE#=Y2Rh;)@njcH;g3^is7NLG5-ZBQywb!VHFW3qy%iS?$dr$^ zsoC9{mAw`6%bpJU0@=tI_;zVfutVb@{wYN|)t|;;q?j+uYSwyJ2kwsvCDi@qRwbKZ zJ`-$*#{uRc)P?r`8VyPT+IMo{i0|x!hUQEG9zU=^W`SeU`|ngV(nOt;y|g+`l#BFg zBZ1x%)KHh-%@FDLVm){2T*1gAQj=m_Gf&_)xUJZ)wjnV4ZC}4wmz(fD5E>!$h~4Hf zz;>#doMB9gN4lvpTEj+VnTaCnQkQFVMMn<`A;kF19rT||6?~GM@iI-IuvKiSM0@B< z`PWOa!};+r>+G_2dcgV=((ukQGc6Q83M{7`pgFUW?_{<-o)Pe@i>zLbJfwf?xh`7I z>9ruPHO4`LHLTp%$Tr1t62EDn{ky~rp?0fh69nA}9c8C{;S}u9#`DPDgOoKl>v8xR zWn0(TbAP9W@kW1iZwpb%1@19F?)WwC2%hBO$#^My;$E*o0xV5V;l=%+BjF%>O z99L>=h=A;T0AQF#LsxCabXpYsNA$=cFtX0#>q%@EZd>+8s7&ede7>R$GOPQUh#kTB zdUk#75gzB;w2A_>em#m$IJ3*nn9B`AHLzaLpjJ^5T@I*KGIs7(;1NeDPi@McQSYN8 zam2YEpmz?IP2EgSFowjvwzrXxi;So}SSS5CpMUn#)SwqC_A}8s^3T9vhkn#a1cbKh z17PRw!-OFx8{Me&Oy+2PC>0IM5}S=qID?&_bL@l9>LLU|+oGE7pJUiB8=spfT@m-m zSdD;e#%Ouq5Oze%xM-5sEdlCj5wIq~^UqyW58ZFODj}|fX6}nE@9U@ij~wr}7;qzq zhDg7xm5={^;7#6HdHz8yY7MQj8~{kOxFaf&4qG9N;Im};aaBYz&MD}{Pd#O@P;1YjAKuyH?WS3$NtP#)8A6M0s9g`3z6UOLvJzl9 zg=z$M9S@BCk1>vkkVrr~A=X1qx~<7+=QSMys9f$&@jzga0+Tj;+-T&dF8qsV%9nHH z1F*y+6}0pAM%=^yGpgBPzSLbcxU%RA7UTbzlvfdQtl$K9%GcHH09A~LxrHTVzSVjj zAwI+?$dD>?={@XoO*Fa3x!Q@!FIR=x@A75XuYzGOF3 zb;fM&H9g>1{Ri}mP1=GyhS}T0JE$8KRs6Z9v;z#>8FHLMQem$a@7hfcJZ~F_K$#7m z=Ktwdyc2gJ2Bn=~B1t6gpoGI5-A7PyVT(N<*_)s3__95=Ckz1}>XRp*=a%a~*r3G7 zw9ct-MSyIg08M@R6_aX^#3uJxeR3^U{r=Yd#>oWXD&2yOn)RtBu9sId~5U#Avh{-@eR|gsHMi zOHSHFDy=2^P+=7C{ga-Qk{0dnR}F=}q7sf>m5I4t>|B z#CXp9?P7WDYFZ`BPKy+0D3#*}s}BHg;34_xrZ}cMO$tgYX4FwX^r+_W%PDgT{>1tM z6dwfg&&yt-)@6_Ixb=5~^`Z4>S>IOUAW?q6);(i)<()LmPW*89LDu8oxsRcOd5bLz zJztyO5CcUhhB7CX3b=lKmvvJ;-sRdTrj#b;8I z6{(gv3xyn+o2B$F)qH084Y{kd>HFd0sZMiGaQ9uLxD@>oCg)Hf{C2wmAN^gMjs)(E z!WEHb94y}-jsOudL4tgHtL6TzH{!>lSUn~t)YFXjx>P+NN;K8MY+r>tA19RWV<{>N zngWg*thHF3r^n>Cx4V)FCEPW z#i%B#gt}^l{_`xEg)ciHg?#0kQYQ?Q2yQ00nh~%AycP0Aw?KekXL1eCs7f zo%YA9%s~m0R@Up@9F;cTqUP)!>~6k`bE3 zm(Gw#B~N#qu3iE-GJm`5Z)NE4)@*xEim&CQ8~f=l$2+BnFLWOw-feQfdZTcx23OYBUZn{P%(>_iw>j1hJ7c>0X0q9nO^=j<#l-=*>_cWl1g zJ|=9F==Anvf6T`f{0H~2i(4N0CTo&{V|PyBgA+W(_mbIbL7OA;3Yg(WN4EF<8gGORX7)9^~$;V29c;Lu{#yg zgNG0&#Xui_Cqvmd@bVkaNv=*ctNdwFSzdhk)2%Hcx9monofPxNbA0x%g!a6F!f=ah zSwq%g5Hw|l+n~W0`4xkQ>F{(}Kc+*4?~J%h!dr&aE}-{n4x3JVb`$D>GNBOFp2dFd z(0m?o8f^s&_BiFxprQSMPjh&?_6*UNdPa~aOg0=$f^Dj~p++osYJ1DcJ}>?3kWP;? z!IN%K@}epIMWxZ(jKXO_-SdV=4T5zIy%bC9iS=6f?4E-(5n!J3_LKER_clCiV^vDk z33Gs2jJ!_jDQ#!_j`ifs1^tnZ^ec;Yd?2KdD}{PGtvaig>~0Qs43;aom5ShgN&d2! z_U=R?PH%ZidPUtlWXaaC*|fryC+}DLG%-WXgV6(+4Zoz8XP-NgA=H8Jg@#q(*7aTLsq`#iLOEXfLpY&37_842)8EURfyr7nq zsf!tYrTOfPGy;E@R*7un(S)`9Bdrjg4pJZ=-%{EY-)~T>%l)w=isdiJprCUiR=O2M7r zz-;CQb87-Htt^3`eP2|U; z_)0IWwohg)eRnEpPkOKdWsW7-`XEVR-vdpSE}~>f#g(Mp0=pkfovw7N{oIs83xm%u zhItnF$WLRS8A=nkn6EeGro4+D*J@&N^>XQ9I-NOG4-<|D1GBg?D%Wz`wW`qcs0w0W z*3E2WxN_bvXKqGL)wN5gm#nvdt!0TYi+}&~Y@!%NxjR}TMhYJ7qUT_VD>rgAUXiB@ z&h~feVXRm#l=kP8AYZ5XFR7*pcaiQJ)uF+^Tib|$iszD4bjlbe-4{)G(XmROF6%_v z31$8cOCt==!x;+wdxjXm9-F0txifDX$q_QHJqxks?pb9$Hib?o6?5TV?>IJpgsMji z4CDGw28EX1F*}%BI*t~#tq9y>_1DG4XN+(8;iR#C*`8Yux6ffJq;QC5iv1usZ=(A8 z0Ogq{)SfL9ygL;q@6a1N%}zD*kD|(n^*(Ll2)Asb`0z+xYGo6hgLo-sb z=-4p7G@jMsjeSjzm1+;~!e@hL1AeBhiBPay=ec|}TN0)W+|qL1BmmsMT@>?ZQBy}y z{!qDR_o<2_QC7wD%@ICDbN){}Ou3lzf-|MP`bOL1@u`wCv3tiG)x${o8bf&b!Wy#O z!?`FR#!$s0s*d%xP-;<3Ygh6~<+Gx`kd~Sg)^6^fEVb@aQ3NrHtE~-0DumzKU(;fC zpn87b#D6Q|fJ8XW_47uv z)tBZjX^ut)4|gj-W0WJycE1m-G0FCS-vxNbar9oXs1UDHQ-H!HN*wN#W+*;dDuZuGZ;)i&h5Qx22V0*Z{mcwn#ezN<)JF>cw%_lD2D=yuy^(zs|%zv;r3 zZA{N+?NXpRT~{MM9mywe;4MQ>td#?O=6E$PyW~kw0#Dl)7w5g%_bzp_pGx*}1k&or zmq`y6tpr&2N7KeAqCpg5nzc2cy@Ji#PrbzUE*6d|Wa)Y!C;SC>&-Z}-zr~Hm+~|un zd03B8bN>&}W>Ey4KOWFxbF$lnBaB-Ad(0)@;rEMvJj|_7`IpU7;}6GXQgHS#XmzWivoabdr<5xd!4UcPSiM!Rns;aY zQ8urkDLC~s{D?N*e|k*5pG;3|Kz-PuD&fS?aGxvS(x#z|vY8%QgYJhoR$C*=3T9~wirac3nnuo|=SoNw~Tb1B+ z@-D%0WIEU(PxcW=tQ9d)b-wIx4r5x+;+9=BP38IC-;Mn7SGRf8Ue|P8xskgw(4mK1sjIT!jL;n6<~yKNH;9@( zU!+-h)6GJ#g5N@$tf8FDxkPkM0nUK1@VZnkqI+k~eVNufnajuDtMql&AM}K}D1rl^ zdGE`Jnf{}iH>IrM~dUcg?c2Qp*t0g2O-7-3(AxAXU#E4z`Wq^ z!~%m$?yvx-0=2XF$F~e=ns!lB+ZMj&D?y8|KGZl;IUxJ-*wsbvR8Ql|2tcnaiZ_A5 zL5t_N56H*w_%N4q|2JCu1U1-87&Z3M7cukMorqQr3&`9}^d@=wkGNZ~gE@-FJ=J5q zeA(WDy~e8dDJ(#FZqX%1@kN1yv|+E#CKuJp!Fih{(f2r=MV4-`PxRbd)IcE+9XkQi9Y*uSWb$0k3IZRXViT*#EiNBriYQw&H^I`KqTvAvhrJN@x=XA;8CGLu*AhrDES8$0_`N zIDEuFLWK6qnceyZ0uWNF&aOuZD?@(zg|G(%4nxAv0k!|12q~JIrf$W#T`xh2!-l+%hCxxq?(=b#zzg3NC~;` zd{r#k-{a4+(Fk&$K@%gs>_V&Am+MT+7LEh3AZhdc*X|^u#5Te?9_r%r$$IkWba>bNHhku}J z=P2OyP{sAjB5UgeHKH$m^5=!-=P5yc)QH%uysRyHB8=l=x?+(gF&!^Hj@yBadNosO zL|2>nozVqR_wp0;Vm)?L2BHFZTrGOVO{%ES9A!p)$e+X{-z-}85blDB+ zl)yQpgC%9VxaJrqK=s^zm{t7X`q$rR&GkslgDt7eD=hBnQUXva3Dnn8&G$L8sm9~< zsgaNH07z-esnwuO*HX00+d$|gxQOQhq1^Gs9}vJ(R~`e6`@Ew4?G-4;G<<;s@( z#X|MB46}1W;-aA@+OH^z6V;&8TddVvIr$5MTmvIz%7u3{3&Mf|2mO zt06ZxN*i#um;%jK&3b^)e38bg(*^g)_6X6FRnAV&EAe`HJ?R02{ssApGQ-6=eOfS+ z?L=Ps?vr$KjdSR*wDrvDvv=W;cad%s2uyw|Z_n1JB5;VQcWfXFCV#A3sKh^IXQR3Cx7l(;0*YU`e z&c0k}&`$gEGTnaDjoR`@?(eM@s^^#sz5+-rs_+M%!e?uTyN(aqQZL$>(4d{rTXE|~ z&%a^0f~uY!+|uNXJDf#wDPg-WckzUK81r4Oy5*GhMgabC!%?V`GSs^|OXSMG8y2uU z1f95m*Qjd#bIu3RsskBe?MPQ^Ie@-GrUX+L4Xq3l)o^|D2V z(koeoT3Y!`MDUqDWv-SGL;BHYm$S{$tx5l;D+~X-;PJb({Ur7BmHGJzZMlXPu}n4{ zwMw{Yc@;Bv`exm?cw-ht-#_TD&k|d|ywMt!=Vg)4y<+ubP_z4wFIojWyv!>ljNsTB z?LKC>A46+aQ*P*Qk6&V;7WhzeZA3^aggVHkKOuDq-$mRuY_9FG4QZl{6${QkIXQWB z0a7e?g5zrA5o}{)4H=Aznj-x~TC21nPV29Os{aT&BpW*x7XHMN8TDk=FSJ(vMc9_* zy|?N$$;E;ndgO4AizG(SEwFL20UIUG*Vn-D^}lD?e=xhzKGKxU2w%Q>8ps(pI;qv5 zMYp$8vopPphZf3hx&7f50zuf`-7GB+-^H}0c(8+vM2bZ*e&^Sc3dswwCWeL0l{!M> z<#YG@Ax@XVxKSLB#D>wR=48K+W5bL``=G zkJ3h533wQKFnJXMO!X$Ms45-+&Kne^6a1%)i*6;Dz#dj_g&&DyQ3JiS|KlBisV>_4R=99+6VCCss`0hlhJ09k6D^0GO4qCO0F6vs*!mDGO zO$|NKZ5WCw@$Z|w#h>O=6M;ryppqklA`TzbC+BnPVi#~6i~H8a_b1Ff;OkZ4P9m3J z`F1Q%lgox6T#(_h6SVKl@h3OhppHBY@JXN|0^h^^F{;qPC z!@Y%GB83BYAEi=9E}l$Ef~s!WeI*wLYCIU9Ze_7~gV4iCeL4!lL;V$>ktf)FU)Q$x z^}Gkdtem=8w^<>9F+}Lwi_DeuTu~E_Kz!8KIMLrxf^cv>x=puxhC~zc?khOI+d6o7?FfvPh6D-~h6775lKbFf$ zQq-XZ-3KT&Ua@;Zdr;ppTra73>6_KVKy})v&ElFID#S?9HYN~H8yU$h%tP~O{OgXb zVsa(cO!vsFibR%0)LA{WoD3oHd6nudaZ#M5#9PsepFab%p7~}^<>Y65sZP=%wUh>J zS*UfEfLOfmJ}gNrX}(2!{c3rD9#cYcb8C_uR`wP@c6|9YLm!q;AW%$Bj1uiyR+hp> z6#aD@CV}~Fw=m{$AU9L%iB8+ZH?Tlfe10r4!`jcDToa*s5O)ykZGb8~`6H%T1N={dp-wiO@g) z2VF>N9|@eHFhrCSqNFO*?O*=fNiYvzd*#?2QAodue)?{apWa>U{lf7+s;YKG3e?zGYvIomRfArg^gk=2av=Vk3jCI=Wf2}L=> z9K+Bzs-u4Se|x;tKisMMs9{ z9EUg(9;jIVc7qkpe7ls4sBW;EEOE{{xuCqLLltlvu+~b!`vU7&OP$uLn-txQ5k)0) z;-*gn77xQeX^xSDG%vtROQ2Wzlk~bEG=d(I!x%uZYN&_*a1)9Uv)8%?E{MdR6nOw| z4`=02swQhDR`AQq?el6Rm+iDp;*%xqO;NwDh3K5G$NDpl9?rCxO+rtuVSTUNEH2B5 zpZi0N-RQ$Gff@|goQqV;!%-7wL=9g$8}`a)5t6Q&nRAPMQFoh1gj3>bM9z__-}pWt z5&!*y!z?hF;cr@83R#r4;qleg%>xpkb`l*~Kr(`a)XyHwiVMsQ9Y}_0`2=!o=XnN8%9Xvwl)E2&93-h; zAh@6TjD`M`%x$nCu0I&}pOJ=6{5SU)R-687RL^UapivU~^7Ko=(36A6?=MP3)IqW=}GL2W=cInog|3-JC4bQ>j2Mq(Wk6Y2V+r|Cjfy8PYUO1<>x?V@)V**c{HKtD+<|O^1wS$tE@{F5InZK z0pEMaYFfDwP_a<}8t<;XoBk&TT9%XDzVmQ0d)aCg_XtLV;VNOQ``d4$!8N$w=AkWhk_Mvh22L)2sm4GF5k zTTcF@z%EtArkdQ}XN_z7p19;IuiB`Mg6#VGLoH)@XyC~7P2XPCHh@UpPp7g~osw{N z5lu5RN7iPQA)?wpS*P#*v{DZYcm$G&K~JsU|8Dx{<&L0=(ZfHo8+K(sWRDl$EZGD{ z67i*c^U^m=(Hj$L`SttQ^@{I|#JBhAGw?u6EJtw{wGJ?jGnZcJ>G@i&V%`9l!Jo4 zvP8oaVTUL8HKEYE(Ve2aq)*Cm+k@Rmvh`$e+b1H#(|YQfzXYIt3rdPS76>1g|J(dA zCM*yI;q^;~uL3fYRI|eC9}()^e5bRYKdm&CB1SYihP8|_{Ai)BR3H@#Q263? z*JAkvP9QTiIo4<4cMxfNO|4i=o!ct{Bk6Iak3^NPhIFCdXe8rThCp6Fe>WSK7b^J& zIbQh3Z9`aKG!K!?%2-JzRmko1aY((pV_zfDJ%UFAsW0|i?iL4=Q$gvIJ-mvMXQeot zm1NSq+xZ*t2$kgnV~EQBs7|+H58J#Weh1EYF|zN^&@ubHhRT!p;aSBzI&uX7iLTq+ zIPz{9!wW%^Q}YkAJ`AqQ!EB>)Or(j^Z4u@ z#rO@fJS}EaWG`LXA|ppht0g5AENmyLWyk?!YuPlGr1kQ=` zkR2gu&==w;{4?=+>Inb%rt2eN?0znvpFMLZae;iHnLh&neJ{lclC001MbCYb`|-mD zmJ*Bwv$ws-tgP=I3jM&rX;4jex!|=yKKpv`Bl_bcx@yHMIK*x!`zgg}wqGs|9gLvp z#O;Hylq<)Wlx%=K;;hhWXW_5C8YhD-b_TBrN%O4XURpM$RT;}xpf*?hE>_B0vR;0QBUYMh2pVL z36_+5w;|uE4kYMO;Vw_;0(wRnFYH}#7y==f?Q>G;0cd6Qe6|&2Bl95ky!m+HMp5Ed zgjfhcztL5>#3bNfenAKw+W$LpM~a?IMJes?g2O?ermj<_x}CB9oSxY=Ygx-xg@4Ht zZC|om;cPoXV|?ix8fl2-!NPfEa6up%D z6|Is2I(Kw`fYqDVWljm#pDYaLh_0x70iN_#?Ic&R>t{F^dWnH%9!uY;>O313AlAf# zk!bgTwmp@=8q5(1XNp@v$v``Yp2sMnYR!Nox(yYcMsW9%sFj|pxuD+K6do1ykirVDzq`fKbt(~|gTZSLmF z@g8&zrg-LMu>DiuvORl;( za_zy#!wKzTtC(mU5tq=GVl}$hK!=)oz87_QQoO7SdmsEy|6&OC1kuySVrU;JpTKhV zPGD+dL@wyZ15yY5DF8UQIfjc~UxT@~nohWyIQ7*-%=*SfjU{=YpVZVN>hY{Y-*cs9}Z9O z=1dUrLwjR2D@W!cd#k#QZ6M2Q!Dk3C9qEHiK1PRQzii|54w$jS0uDVf4eo{K61x4Q z<+pB*xq0ynQ~Bkn`uFu(^DWggWwKuSYEJUoCgtc-h=4}bQ*9;(4wok!T(ca6e4C&u z&j`sI7zr=&CzToLOnjWs*Wh1EFJD!=>`kb>NgLY~8Vl_Bx+T$`>CA+P$CeJb6f%YT zZf=povmU?;E4jgmNX`q8ABKg27X~_aMSO-ZSy}+6>=4hVs*vLVBTqS7BA+5GP;1&H zeR9#q7fV8uOaL*C*f$(*zf$CYPM1nl{=U-qp!wqN?K?uzac!w#$B%RgGZk2%&{A$+ zm09p+CGADhGnl0U>$DGkQ>!FYPK4zJ5C1kc!nW&%EuGNy-*GuP)P)g2kO7{iCXr0E z2#QGyQ4&4uySZvvpZt*>1Zu`YPfAqZEXfK5TVUk5)&!-hw?5C09MF03z=3WB=O5Iy ztTPij)0K&*)i#BMxe*z};`=q<^5oNKVYAX&Jr~yp4&MKMy??}>*2BVP>TN?X>17`R zVJZ`3*~tS{pBVDw1S7}aP7zf<1xZC6(_@bH8g8kYUAN@R*xq0rWDWbztb3k6kajz7 z`02;7O@KWrAVPP6V{XMIOq6Mz@9>eF+{Tp2yK}aksi(dzekO=E=SvoVv+>$iy(T~m za9w|ox3c%b@ZQNg&CYaR1VOK?o_?#6B>osbruk#jc7j;_wXoHcvN*1$V`@)lPJU}t zXoSZgctF)OD!9Bse4Fk`TrpwH$&0$5-{y5+BplwF;ee70`cZg5eheT{$i(ai)>5js zcxWV7F=2UgQ)Au*%O7Bl>lYL0C+@7S(b{OvFe=crnwhNgdI+dlW_2C-3MR&1vSbuI zl^hO0dU^-0-zW1@jQw$0DHvq#Dc)@pWPA7uV2qFK9ByWES?|@z(mfHrAx!z0Cc$v> z@tz3qqfit!yI8?W7ZK4tatF3x8ecwh*{o9&6v` zN>TA9kQ|YlWp-^@RLOJ!wo}z#2I7Na!yr$4E%**g_Fh`LK9C}0>NclHU5#`1k}HvW z>2Lw&^Jt?BNLx;4%}_lL&;A6#Bkd&W*=uhZDT>F9^2*&j!VSL5an#QltEp5?Gorky z(YvA4=P}S%gruF`#oMeA!R4M);S9RVnfw|?b*K|dSL*lpXhOU35R7e^We;5}_FM{q z4Z}U?x$V?fNg`zEI9lDA+B4U8AU<>wZf)(yyCBP5%Tk2tc7XKi z4;Fg0F~qh2f}r`>^x&o{{1^;k-2rOw9R@#BZMP`w@&Jh448;|<*-C1 zLreXW3KSj+(Zd`W(RU#j3Cw0Maz~Hq{rWOkost{dQzA^+rGu`@mI^iLt##W@_ z5ulTN-S~fR=%aDQ4#r)<7k>yEi-W2Xwr{1}BG%Dc3hES0$w7i_#zv*On zfPF0%gtJYK)xCFg`%qN`Wp!}3;IY<7sMnjkRtxr5u^A)_Zp^%RDdPmSA55~%uC0?V z{f<5KM5xTIu9N+5nE-0+$olgYPF_5yavMmp0;(%i5(Ug9ElWCIsM z_vWqG{F2)9?{N@;t3~x0s14yO*g0u!fAVlyouM*KzCLuS?rt>ggZg$!_iK!va7#{S zVy$j$xQ1{x1cu*k3G zu23m>$7*0?n$OF*+~X$(`^eM!r6}pCQJh($@Rxf7Jt22;*hI*Xwlhpb%Z)s%KUl`(lsGjPzz#~n7-iG^iO z;#}=Hx}Bu4J*AtRygeBDg~`k%D?1hPjRxERv(5|~_&+W{jk9fr%A229iS6gxr;TgX z3&hZk91v$8+HS+2nd|1(7?FGGy#ozEWP+6z;+PC$0KEMyP&>t%QrVTEncq$?QQ|o3 zCA_0D=l0&C8Hzy480x;D@}v(Ac9N7<&c1VbvpUh006H1*s8Jd$tc7se z)-;saxxJ;uNsw}>tF`4&lzqUD-;8?MQony0wLYJ+GQ~?2&3X~g>EGGJ)r?Z@ltR*3 z-R|H~qv1ccH=HGzxn~b#^!nwXQnJkgC z1^PfXk)8TXCTRLNeSe@*=T&j{I`VqA!+t{|Y%yKtty;#-qWI=KM!svIp(Q)pG7Gc> zzj`60Mj?}us=6#uaif=O6Crs|%RW`ZWvD-cmDm(o!U%PEwY3c?I=rrno>d}4NoD@) z>j%w|1UNy3&R+iICU3z0dcij7|bk6it}+9JLem!{$DWqe^V&c;&}+Nvx!Kzi%mQU&6Qp&;Q;;Q6Zi+pisTDhu+W^QDK0@$P zf7IzDLfW4}E!58Z_ui0BsUl*mxj{L3kj^jz5E%ZfYLJEHiqxoaBhntDBR_ZgML~mi zMZ#ByDe>PZV@XkO|7O32w-TCITHMNd@DD~lEJ6$W8JEYzE7Uc2G z2@`PxMh_DW^^j@<5g*@J=4U=gdB(rH6YlVF6S;m{unVS_6E=;0cF`DR+QjNbaenLV zB^9sr{uEeqG!*m9@K3O1IaC2rcixFzK!}C)u0q*Ze1TWDRw?j_u@QnqIlFYoU|ZfV znekILuq%f3n+ap@BV3(D&^g`g2(T5lkh4mwbg#iRSncR*%wRn3&pdZrH32>H0=^#L>h66t& zT7XejGR}YJ7Xmz?(MO#RjgkEW`Rp?%a!~Fx_K`cLp?tMWeNb*Z`jwj(H|mYFm^((> z6bn{X(e%_;e{dYAe;Ee(=H?{>rN_-K;vUjT0W74L`Hgx9-xb14MxUt~;*`7J$yzjO zZcnXdl3eWU>g636Ke&L?dH5#5^i^a!G=I0%o=j7|74z;EHF z^{C|5TJT9fovh3z$KaG3=uV?nzGDgr{R#E0-wi6+1~5;YmAio;k~xg$ZsHkYhc`>_ ziT!-r#|$nvXhCO-s|Z?l9}YCmT9nd@+bgA5IcO$j(oJaee;VC+zca5NF!6v&ohw)U zuH>2rQ%~qnM2zTd>X;?-PBP=3F$;HSs>`PMnO&|PSP|hg;ob1`M+P~;z#Ug7TFpuJ z$qN+npt0)(?0}njGcJI?=o4P{+4&@G^R`gU0Lv9_kbJ69S|tZB5JFhFKJ{o@$eR1= zg91i3lByPAjc{P*9%g?Rf&#@?B6Id>(M00+@4AY+TvRKcvu`&v+C87!!_B`r5g>X_ zi4ir0AXIDf59KT40E!y;l=hfuyPy7sM?E!YeXgFx;+@fBQZf>YF} z3Ad3*?`6s{uhor;1voW&%LE3!|BCOkqqH7Sy$x#i&5CG0XRCuLrGoaDlIdTYN5k6% z;XzQLNu`C%!V1{lLE?)SV{T6j`B42g9|GwyGk#vru*QYTe#!3uH#*$#4%+SsVMmOL zOP-S8A9>X(_h4|y90T}_DN@S3iGxY8fbGKX2Ito+U_JzQ)ndz+* zfzILj;TDD5J@jX?I4E7;t(O_6DK`h(Eb^V8x*OF2w5@nPjZJ_QP{l@q@pZNC-WIvh zdogM|R5U*-AmN66P@LohMUS#J6uU`3-3zaUwNqeR77Tc_o2Mi@d89xQc)_*w=l#G^ z!;BjNVnO2@x25Dsg2P>_WLch--Q$+5>;3cxMQHl?>a}aIW$$^?M zvuSM!2M*W$n`&pa(3tiw9eJPyHEB@=72uZHfsAN-6NBMzO%eCe)aj(`ldii91O!r; zCIQf2vqp`|YBc)4DA8Yfb^k2!#rG#@Jt)q7FG@dD-n}E+eH<#TyNPS5I%{ikZqyGM zET0dq>ui?ElAF65K)Xw{Kbn%hwpdcgYx|+&c=Py0RfNN@fngu7%n|g0GMv28gu8_g zH5?t&kh>JN#g9>gtX^Px{)Q>8vcY}*dESvD}4lV93-3sQuCCSe? zI|oM`&hN~EavCM6(dTpj#Dasf{@$4dF(iaP8V_Lskn&%2@aP2LAqNrnBRp)y-5Kg? zV9*Fr>DG6e^nQqRLO0sxoYb3Uu1Pph@s~C!n^ue%YiQ`BvHsVOH(wJmJklqi<^0f1 z<6ipbrvY$F2afm3;$UBXf9?GXmFo7Hx$kq)`)ICw9r7y1lZhdZT96+begS5;5LM>7 z8BO2M2Y}MirXAPwvj9i3nb`Y)-|c5vsVX^wT)_nE>bq_7vU(gc zUgqH(oe5x~R#$eSE){Yr+Xi2~-2Elf9P(Q$!jOK^@=6!3+@+>ZektN+$b{xa|>gN}X5V?*tQ zMki?I(wV=-fP>!4>aAgAiL^zeqdDfW60_giq#iL;8n4%Tn@_hG|>=>g%j^ zTsHusX!Gg%);Gz~_^~L39vxSzDIJdyMqS;EZ9eo1Gy8Kxys@2Rih3v~qXud31HON! z4I%H1GHcCzhAz4Bu$CxX2l8!M_()BO`0%1asZM?o?sU4*yk2D381Q;!5q$GI^wiW4 z&S{bPzV(d7)Q&%p-v`KJB8K>0R@qTQ^b)#ow816ePJ)>-@Pf_ewom0#z;!D-6cOyV z=U%EsfvcUm_{0Ai9)c5tmL;)_1vJNNG&S71KeKHwuZ{yzeEb8WWJ!@4-#E=81&LZ{ z(N})gq%v@6W#6+Q=cAn~SZ$x^a*XoUG}0X#yU%>{rw51af6M5MavdT!;6k-czN;}W z=B{&WGc4LhW7vN@AuxcH-~jjwCR(i7P-y^7O0V8p$MC<1U!dGrBKr30jon@eHllAo z{yFwD9+#Ul)Bq@CduOFife4t|cd%&I42d{T* zISp?4EvGr93pe{!dehr3bXNPbaqkg4!<`eAvYb==-_5#-k66nVFbF8buw28f;7G@*Umccp2aSfN)_!xn!3mkS z55~UO7dlXo>1N|ya3aa@kHBr`R!)(2Cxo4_YIN+EoI(!^O|OqstRh2# zLG_gUL|Mc( z?MY#nULGMUR?>s($^YzHv`j0<&TcYhg9&sQ^>9t1$0A{#*FGzkBWM1<<9@j%m{%PI zM`luGUT_|U?@vWQlynDzwx{foi)Ib^U34JL%*T~+?K=*4Ge@3O=npbNYg$eTIp`~XDEBVWHrg^LY9}ywtz@1^t}A8i>ZKvVWuu!3 zv#_5DqO|)8b!8XazwVQ17ghL~_EHHZxe&4eikIhPz@{N>l~znx{l6Z;m|WTEY`pm{yzlqo2;LWx&=0B_?T zE|Nt0uufF{SA%^tr@5W6)~dR$-1%t=->=nNxM0(N%G5lhH}1d5wq09P1wGcN}W-Wq(p!Duk^ zWW|kR$`(c!{jlZto;RIMit(Y$f6PTE++}=jYnEK*Xy0VxMm-b*hVU?BamqJlD_|sH zg^oF;Va)6Sk>Vl;?|D-vwvWR%VxcfqJp3$6_#ZGetri$2IbDH=vU`0 z4;Z@QpiqIDpV`NhCZ~(6{q~hc7L2|V4>dw^lKpo%6#8!KN+*6=>NqsU*+HGY^F6}33AQZU#x$0|OdUxL@;H=ZU8#u2 z4E9vb<>0!hv{O9 z*RWO(#3WZN;s8Uj(3(;)PG`S!erTPsO~)7dM?=8JxY{X3rpBEVwepx@aV4zBLpKVD zq|U+iiuh_A*Kzq#E+LeW4$Z)faf@jNXxuw1zaKpC%qSe!ZEc_hG>*7e8rUfKF9d}} z6ZyqQ;>=r$sItr1h;xM4NbU3S)RIHN2~G;*S?yb>kXy{(9lp^Pf)sjC6>3gYP@JDb zX$a`cH&tEL=4=yyalS)(ebIq*6X<)lvW^%?uZtAnEq1e=vbNM?kC!Mzgk~P|dz+14 zysPOj>Xa=2P{Fm(Mkk}wvMsNPsiQi`mCQ=qY$pZNo2w4mqVBzNat{JBR}ER$un$sl zk@id+x!SFS$kd+J%Iiag+~X!3QgMxvW#$m%G84k<@1I3Q9X+_rIw~px<{pOh#erW~ zDCIG?0Hl=V&kqd-Xr>UEE4Y5R*tq2>=EqI}pRPVKrZ&JD;?Sy}`s^BqTlCTb`S zz~xN*9W{tvl4)N5-6(+NB;eAV5xGh*Hse>H{95hsYbtMKgeGla2#@OtpCD`QlTZAw z>?82%8vk-bZu~6w$v@^;2JfFVp5ms6%eDUI%)I%|_WI59$kS6dp}IzIM|w0VgyxXs zM71ZY4PeQrM1k8H6|D8B*Z@`H8O)A)Rxa1QW|#~XLd8R+KSzFtk)&*?PAaWQTCeBf z<8$Y0-}H3J6MBf?`7cuRL^Hj9W(dMn_~tZTGQY^FTyDS{0~pGwCLx!;VYv5m(&9J& zYLme0x;zkd=q?;oSnTwE_Bk>Sb}Zsr7|lvwIR1irMm>f15MRe(yC;m5(8CCwH7M}F z4i#ZjA1J&HwNl$1%C952x?goR1IvT{W>SKhoRm)@$;F(d$Q7(wX1Cow^s^`k=BPS5 zZ7DOb;d4I?JI5T%jD%>CFxKHYgbn4PKRa@0TbJW`cVfYCQqhMM!~0rcQhI}f7|g56 zhf+>rc6i&)lxV}AM+utf7MH=j-_IWXP4|tz!qMwr$j$)0G*yzDe+Lg9e!)2fuAg*7 zfetCJL=wjYP+0aW?75U0?_wFPPX5mWJOzq@9}1m78D=Nvl}03-Z@zvA*=`VqZvCYQDyEaxSrA7{ovbzbbd6^6?n?W<=B~#UIBzM^Mre5_~&WYh3&LexgyKTHp0|y$gRB z>zz7c#1XpiGh5ojzTGuy49pfvYf?UzVd&BLW2!$juNbFNEhtAT;;%%l&;9D~-AP6q?_=rAzV( z692QfUYu+NrA=`Tk+uY>c_~&ONtfHDwdU4EF4EybWOCGIt ze(0n@JE>Nt;oSINpz=&kVv84lc)!ZGf|&nUI8HFD{L8a2M&>_z{`hg#sb%|GHrZj@ zhj*b83bn?sVs&}iv+|-@hu3oS6%Zp;Fp@mF51IHv_=kE5Am6VFspgI|@WOkUXkn%h|(saner3Qh=_yK_9Z}&}g<7OfMR4R?9G5 zwZ-L17`Dnu%!=`NO9c{Onv4oDx1r{aPiT!*$2(e|sJ&9}0M~pL+y={ziLT8OFfufv zIj%uddl0NIQhhUY$!}@DNmovr3zWKY><67 zmafrmR=fLa!26(n;%Z>s>b+sZlJn23JzF?Kquk3UWNqPFHGOA#aHMOqWewAxP;!gecGVv85u`6Cg6 z%y!}at)!?8hjhWbYT`!KY$HOOH)IOm8dnJT&$RtHID!y(8$Ls9IRKAH{lCryF%Y7M zE75aqXIb|RYP11-%Kd}^`w-B7Xt4pUnEHB!0d%my$Mca!j^Pw2t6!oEDNL155Nhq28=+7l%-x z)UQ1K0J%0DJB=+lcSD+K;2c{ZGSyrhGop4dLOG{49gmQLMxM<$uelkGjrD z+&ry<>O;L11FF_xj(SL;NJ9@ZlHI!a^x^Z3oAv+g5O{Xhz@yMHnu{!OH5`YXAc z!0Di}>yv^};A=Qei?H4nzi7vg-e9xIy?)EawXv#B>pK5wmo)EpNv__lZ%C5Y{S4{P$!+h>mqpDA zI@-_2;X&Aw2JgBgEsk|q2f-s3|DIMJ2+^SX@0Zd;0_BCu$&ch-z7weW#+)`~+wchw zj+4K8<=phazTT|X=zLPt6fSe5$v-#ZEdB4-Wr(OT-gClV@>d_$!A-{4(DI~WN9w8I zVcT~}j;j-vdgt_B4r`tYX=rvR;Eq%iF2ahabJ4r=IkUgbz8v@W@w(PukScgvnxtm3 z+D_LfZiP%Yzbp+WD`9RvqWJk@$d>bUd3<;U^0;Si>TNF4RFY&Jyj2%7UjFp;NVpfL z-bp39kp1O7DKf==4}!#hg0y=IMOKcH|{=~r;X(()km`Zznf06W__%8Fu}5!>6SQ{_BiuU{Q|`lt*m zY}0=sMyD~V(Rv|Z?her5cg4PkjKAYWKV063U7XEE=ev;JqdiVk z3LR@O+Ns}F&jv)V3bX_#9Q%6-XX0)fTohKJ5`sy*H|nap*)ZS`vS{;8n(d9DihO4H zS2mspZR!x#$T!YYZF}$!ZD ziK4R_W@%l85tWaR=6XGOp*EeJkuOCF+9IS1h7IF64^^ z_h92~2hW%4m%?{WaexZszejM8UUqr&<-dmeQRnL~#@d14;3~)1ZuQF7D*OCtrc6pG zjGg>dDc)D~#sh#sPZke#7mwG7bd?Vjr}i-bZkJUf>XI2q1NxkP3V7b>|8RS^(Olq+ z-1$?Y20fvdQCi-oFr^QaUpeg&`kkR_#Yfp!xk9gz ziBg$7LP}@$d{vaGQe$-RY-kEig**z;oG55C*@5Vj<%=AMTrrjoARsYvm%wl z$zWrP>Zh;0$RrK@9-%0jml?I+N3Jmhd>rE(;cyenC)i}V^jjxEA#P*jD>+*9VoEm8 zgYgh+G>AD3`c8R_jjitKJ*ORR{R`OwyAtw4_ALL%_{QyO?W`p4gi@!ok#V0P=Y1-b zW1Twx#|6+*nS$h5tTP4RvRSit4Yj8Yg(1c)G<$T&Z?F_xu-sa3EASJ~|J{r=2+dJP z;O6SgdyR|!ayCu3hCTRR$>7RKpacEv0Aphr>!ny(cV!dh4j+a#6xrAQqzi|-Cu%BI zl~Wn}G7PJ)Nd-(_>c!!#x+VXbxwN6c8dXmf_s10Bq#5k+)gD#cA(QIdmvB(f6}m*x z;&nZVNweAYS_SI6lg;2Vbk8oPi>~#f`_mlEiDW8x396Y z5Qh>0iK6EuVCUh;BYnlZRx3Xsf)YU+bJuVFpJ3}|L!Bw?Y7c{zuXqTNQI;DgTD#eK zhYp|Zjq3~Rp>~1Yht6M*73?M<=JOV6e+L`b{E1O?sY%BYwR~8|L+r^meP|U=&F@k9=5|@E2pFq^4a1e z;Hc{k?2{gPOnD?Z^7~hlP>6#yKuhw1EjZ@Cy2w0bwDI{%W}w==n7pKpFUcBSMRN$q zt;_LegU@FW= z7Id+GQ139iKII{M7T)k^RcP$oGT;x-{HvtCt7!j;i~{`4 zYa)a_1l5q?gNRY_>pe+bc9RQqi17(XU1E4o;nTT>XL}%WSZW=9PMu(^tnu)kSM#00xMX3Min2D4}$ZgmkEMj-Zru zH%CS35Ri@$5Re?{W<&-M5ReuS28M2i9GICi-+AwM@Binw&yKbCs%Jeby*T1Mxy9b* zd`YlSnl4MtWzY8oCEhKJnw38=+eSYZzUP;gMiJSF@bL@mySz)nNy3p>s^c_d((AL+ zNg}F}(*NU~^tULs`hgSWEB_TOc%BKh^c|V@{g9COCTSsEasDmLi3Q&u!GYzFYHE^} z?0^M&871U&zgHY>sHr~rQ`g**go4PsJ`|i?$p3bGweruVc_ZRI3bV^L^k;RgJl8Bt zN--4vkNP3fv?i~|<`7hS!I|h#UhGAGy01d5L?_5HAFi17E~94m!}glD~%0)96ft6DQ;=_G|Jf( zed7&XOsN&Cf^YwJ)PvIe`<3kSu5ZqrXZduQfc5;1V5Gi?lNRD{dg>*_RsJM5!PMgV zp0P~&2GnB+5{9YtDb`(xmaFaQaPg)S1t5wBFk5=Lc*4!48a86t_=D|grf<39Z5@{& zI-rc1U6OU%j_dp`{f^M1@gC+q#2jlmVwMWDoM!uBFaG2L9owBT4gOz>~7?cMRY2 zw0WB%Ykyz967xa?t@Y?Bh1*a2fI(WeuQKjlT`-HYWo~@uf!>@u>>O}<;cLm4 zY-%#!dGIPmA<(C-ly1IWp~PsYq=&qeFLd$MoermXe3pFB2?cnOguL?y>vk1Ce<_GnvehL+Oxg;QS8uO5Y^||Tlv-LtJNRw4a`Ev-+N5~4p+LHI;~4y@cT?J zd!9Vk;+1~>6%3VmOmXdQMV4yue^kNyr<1HV=Z{QZz%G!P(;Xwuc<^w^tkDka+}2qu z`3A7KCmJ#_j|gat?y?aw8Qq+!-P(t$GA04o{H{`Qf{tW6|2Y7n#9Yc`Tg(}f-a)xC z7qtZ-5-TLnp9jm^Xyx;x3?2+ej*u0cS z916b8E-yH1`B*!GHRwC%5BWX`55qo>e9hJ?tUk2}`WCbBsE6mF#^fd4L%Sbq{{Q<++J;|$^5S7+8V`!3_Hg+kplhx&5=tZPHI zsE*24J9QQY6N`Lk3w`8U#OK%5*a`*IOoF@pKPbb$!QTSA%gX_jU{Fygb80#V$m0+0 zJ(G{3Dorb{isbZ{hi#)IJby^rO^i!rF~si1C| zc|A8l5jGAEO~uqNQC}wDukWSk6h^OGTq~lehO(mw9hC-!C($2mN^iJu)AK)K;yNyP zMz-E{He)lcekAwc{%5lkBPzEyEU^{ZLhlBWxeGE}V66~XI>50)2PR83b)4C2 zh)2O*eI>|)VZ9q3;#m+tmoB33U_d8mu$#cvIOSwku!*~}dOH^Bjd5KgAcV9g&2j((zRjVoCE# z`1X}-dh#FPLVU7If=LZ__YrfmrJLt1?OdZW6fAxmZFTS`4P(%Sc~m|u-+jCx5Xf!( zem961P|hPxPn1My>I-AW=$81=8G=~U8b4ex-}48WSa`@o5AF&SPc<8y z{64F{|JrFYI0qtrh#md>S3ebm9dd}LhoGHezh1H~ z3#4Xk)i)%$<}=GCaa0WeD!arZ5R-+5AVo@L2bXI7#`(2EnCUuw>< z%QM2Av{fQb+Gduwx1Ar0(K@j~Jbz^g;%0IS#?S7J-uLibNbD0W^tbt-F{3wh;MgoA zbt8MLKJnh}Ntkmpx(CWv(TeD`{VWP*bM?4RzCPtUkABzYeSu(qn#GIbD<>#|Z5>Z+ z14?@>SxBL%+*yov0{ME5f*A_N0}?sG(rs!>(1qptzx(%XxZYSR5R5o}I>Xdgh5au> zfTOsb)_r_U$+s9(CgSsap`=u=$b(Q2pQV7?4gLhU{n;ehirir}Lt{i@?PIsc&qxC) z_?}od*Kfwy1S>>+0z&M5cDmuaQY0Gj{cn$sCGoFRyjYmn z>8Y}L7s4CXg`_7>`8&i3=!fCWyBlOb1iT6HHcZpJE&kBA=BO97T&j%JE5q(meVkXz z_(6ztW2(xKONcpKA|XJL4{2<6%{2Mh@$9@Vr??*z+r(;z2M zZ=EfTSc1yt?if8h5jA=l4IyFI{syL1rZHG~Ng6sw#h|@B%C2O;yunzqncy>pwXXPpkZf4s}fU$6-^dOo}jY$~xE5;Me*QgmUz zx}+~D(8DDS90>8}AR@I*9ptV7)Pa@M(_wL%ab84_LlNyol_b z#ey>@o5K#T9dFM21PlZI=xwXG)~~&)vL`XRoINP{RM*c^Sxt{WZ)F2~p#7%}2qj?e z;(p3CYTrVw&n0OK(;jxFPLD7p8FygIVxJP8^wkJ6Cm- z#q$g2wp&%!Y+e+fGf*&D|92>I@f-T>#W-kVzZ_gFx0`g6m?JfMFG%Sov4iPIY;rsGzMT^QgZJ*=IYy!TG~fMJ47W=2Xlj$hk3x1FrOCu zbW4tW{4PZGp9X#`gm50Wlp|3S%bS%hW(-i%5ZvP*Wp%}s#6NaE>W6v0rug_Da?m#X z3BDMZ2WbHR5a;~TwoBU87diHm!XNl~%@odj$Lmj@N{Bjwir+#0cNN<^QXfH{fhMM5AKRcb@0T)#_JJ3XNE z${MLJ8TTSv2HIWYg(AmVp>3(kp3;&enB8CK$|6g!L-z+p2Qk7;mV%W7%IWrB$bGSb!UR z@Jw7K8A`y{cFOfpB0WPKDuR@sng=-?Q1A97tK!mNRZCfWpO^PGg1Rur z?7)TBXDjcVrP-k{k^@DMIvoJz(Qt--G4J|YpgGw9DRbivW}8t+(g{~0>nl{Zx&uuaO_=U1jsZyDVR#;@Vr)dKwu{pW`IqQkkxUTq#c_M z;Q{kv^onv;g(Ua7hI>#9z|w8hmW;ILZUCkGh9ZnVf6R=^YJICT;5cOYH=6BGPW2?oe%N8|Nsu%`aUi>sjYkWQ>JY zX;IFs;tA@Bkc1tJ3HgdEip`I?g-=a!TCAEqMp4vPw_VO7#qNR_M7W-`#o^=kI%X3 z6H8oK6GKJlm%YDu5~mTI`O-LY)5xBJjfE!=8K1+98brwyI3 z==T8h^y`kgWW_O;i$WY1DH5d%SO4sk@%mdDIDEsiO)lPI<*1dbD^e7aD((?&MKcMB z*46ucKWn`yt`PVAJO>14s^tg!$F#0=V^7eS?k7*((Jxu0GP}s^FUI*6ojS$pB2i-G zO&o)^`p`xkJ(s^rOquFQ()Bh47j|)dWaN4k-fM74Snk>_NXn86*#e^U=%%)0xA_dG z&r8@ogS8goy#j1{_7kq*?Clfp%CeEIZ-tjA5(nC?X<4oVI%Sf5Q$<*mrF$RY*87;5 zfGtlTT)WhZUCmuI|`Mr)lY@ekzFLyBSPD5vjD=CmwXa(L;+^;+T2o0pV?v zWj;NijKs@Uv5<*V{a?aS5;(Pus8m|>stHMZ?9f=n!_(;>+-=}RWB8VoNB49J-26^V^oVrp3~^ppF*!}F6w{9i-us4rKLgtjd{8d1@8nL7r5y+ zuLB`FrW^6vOqff)8QIj*;P0Qfksy;-&6T~6i|qn17xLRILOur_71-fe-G!;$)>#>ThsxU<4d(|Nq+2 z$$Xk4Y2N8%S5FcT8m=GQxz0u_B5hoH9<+EijV$=kA^(BqGk)|tUX(fPw?ZT|rbm8K zh}>Z04Q8PGw@kDDy8xVIq!EtAgN6Kaq3i4{Ny0bzawO_b^>Suc;Vxl%Xv|rSW}!)( z@lj($RT>sH2zjKscIfEffOjVsDDG69w*2EF^dypI*gW;6C951MmBU;1J_U zV(P9^O1VSwTdDnnYn^|%gO4qZ1HRJK-Gk!MGD7`6L)=~=OygSu#u`_lX*yH-$?=1< zf>^yCEQcG*uUzAa$<Cu1=~xF#wqsvF9a9bCMm7_FW=*9NFE*vs#@ zwHnCt&|IUSP*G`K`qrm#fE|it1fECW!`83NZ9B!_6CMWlSP(~F5E0rjZoJIfVCmzV zX!vNC`PMYExLwYbWpQUSDYQ4oXn2->l)}Nl=x2OEE(G&aQLCRm^>WxZhZL`(md~Tn zxymwqqIBNB_=ZS+97YG?rYw9d;&C1~X$uZII1C1U?srOGwWy6B2XjhfDly;tg>TAF zR?=0BLQC%JZ6dDDKto9_M&iSowyk?6_(5$~F^(iW-(e(q_*|u!;OFK7>o6}>2%f#} zJ|<{gQ0O;tKOuaKGfyK-5dws9?mr#AlexeS{FLtaN3&AfP%h)Y&H&`0VRME?@eenn zR9+O|cXQbD24jn)2iNa-9W>^Wr zrrl)(3@7;hHKn-={b^$P9R*Yg-5fURf#>iCP+(EA+chnC8L)SW9u1!vH)qiP-155sXv37Hg8BmUf#SwIh{_dlE+6Gdy8+iHhB4Mw79&X&uE``+0r7qN3 zW9mk+6d!2tC7th5Q}W{D+t{H-ItJB$U8pZ;K!fG-*R!?JF`Iz`foJ3rd_S2h2RHNU z4*SvprG^3mdB?)8hHTAf_?+XXa&mabrK2q&k@EkJ-L`71B;X&?`y7t?2mYak_Q{2!XVY)zMI0jD}%k}ntZHw^QKPs5s7B(ZA79{q!kvLCDoimfEn~XN{=RbC~ zT||==b=_~9i^a}h^_spZ6L)t=AC(sT{}4v3+H@`94Os(rWrY$HVO}L<>O7ow+GeHg zU@hj0!6)`sNS)tB^!1C+Oe0u;K7WpgAVm{muT2*``Y*V*NHA8|#RRiUS518PUf7du z!zRdp)0LJjiZ}VJaV*&r{lCOf2QPE!s1QMbn6a^b$=Fe8{;X>s?b{J@2d_X4Xq<#4-XGX z1FNX6fQz*;unoLZi|;1$Dm(_JCVkrC^=R$L)wNw6hfyz-kdP4R?;jzhrAbPhKZVH( zYtO=RDh9_JHEpD;xrDn6Uu)sLq zUyBt_6hdM4pG81(b#--3O-)nX!Fn+YW`|RYM+uc$nm_9PyDbCWVfCN2BnDNi3>^4s zMxi)1P7;TbF%}Io1F7ERjY65-EWw1|;jCv*h*1mU-zy=guE1~9hKcqc{`aOPOdYYk z@`Ud9cfrr%bJ;uP6%}$R$Ef<6`lhCugPD`Zy24?2m_>Aa-#%U8nfm4B{CIjQzawx6 zsGS}{AmhcMEbFI(n#@ECxTJZ-+*H7V2q_Kw%RoG6N`**y%?SFLoVuT&Yt(x6{l@Pt zAA=Y0CQQx>*A^$;6@Cy&-~N@j3f{-U=FE2JFbK^lpcD<*+CH5o$LPVpd)<8(aKQK1 zF@w*d71-cGi?Loxmfm~KGg8ch?P7@H7n*y88wrC}7*#=>vk&dFK5Arz#7g%dQ1C=a?Xm5)co zPJj?mX7byClnOmq_ldt7GnV|efOR}xYy5Oh8YlVfONjc~Y%6N=4bo1eB+kH2I+kp9 z`qke`(j_(NJ6=v#N;aSb?^LpJ>>587GhCKH&?C7D!K62H%(PQLL2>$L3lD`f9lqjh*3~I0VZo!+# z)taZzH-smdhW27qye6*u7Dwk@qbD%_l6<1(%pk6_ps!7Gh!UpSuWNw zZYjYUA@0;{oPFI%&^T^uP-K^-c88As*n8!-lS2E@s@Q{%{zl2RrhYkoBcfuapTtwN zCKHdUXjF(U`N;`EUT3l4Yd z+7{NQ$E%1b`d<2+np;~+I!wr9=3nImQ>`6q=zXVSqfxoFf4a!#;p(u*0ANhivBK%4 zni>(MBVnWK=FCAG zR`{#eb-*b2@BOX6ffC2loS?GBc@?7kfM$CeOim~vM>Xu9YeHFbL))W-K*(z&ex__y zuYld=s^4{Yw|Lm3x7DdQ3y<)Ul1U7G0J_K&0*287%#Tx02zu%fT3q)#DnvEW~;S=i5M-{d@uyz$dhx(`8AFiSewOFNxI+kzkPH$U3!tso2q?PyNiPfC>pBBxv(aK<-j_^^j?RY z@m5*7lo8)z^~N!}$)F0!DM(G~;5G$CC{2foP;T6>_g{LeRhHUp!EK!u!D2UAP*gZz zd{!-`+9wkAF&&=kHBDnrR34tmibX_|(I#}!B1Qfe;C@5ef?#%73Vu{xR0NG!7?IR} zgLkgb1-%o5b7DT6M*|c%jCt{nLOH%=of$s))xNDhz*1(W zo9pUO7Yg<~QR>L0J~F7N5DjyCMqKw(8xl_FAx7u>9R~1%R=ar_S3$QTFGr1++~9iw zWnxBU$iY=TV};_HQ+`9IWN9?;B>qiUG~ni^cNa{qXzNfR=}Xl>Z^hp%ExFqse+)Wc zYa!&>E0lM^k-KP&ra($;3~GplQQl7&O9hUgiC<&n2 z9)8@-1kS|~3ARvGiqGUnr@zstSp{j0_O*vTfaCz-2?^Rd%eta;ZKsi$hBLd_`UOeJ zoog2Y5-y=JW>{3yD^UwvLN46yd_*%oL7oNR@gg0zWOTt&``c~rgW25nkcY1NJIyz8 zIVS(05HCFR%Kc36_U&;Cj<`sG55HSfeA?_dN8N&k7Brr38CxtKKiX*55ZdvrSUrhd zkqvOt;d%hJKF0ZNKo3|Yp2JGPB|~aM^v)}DTm)Wp$=U8yf$@#xp<@gxE&@;YHq;e4 z^U8oYd$DEnefytQx^5`4m~Nu=z$%r}aH2MMN4|3t#spNb_vE`kUfZ|GRz=)u0bEG* zRo_G0NnjiJd$PC(qYbqSxl!O@9Zcmw9od}2!gtYIF9);`11)rRQKaT2UGPj)&W~ zLJ6Kg6nSs6vmnFX;M4ycczCuTBP&-f3p@%HnH)sm9hPtFe>v8(y)H)ZHa_vZOoSLH zUW!d~(9{pW5`VwZ8J#R6D(Q8Cd40*(6qBSPQC%yeN?cGlnWMcq;|M@v_0Z(q2p7?z zZzl5nRZQfkk+1^$`j5-uyLI@Xipu;FJxm%DxbO|ID7a3}6(S2w2Kww?dJ0fb-0V`i zo#iU2lRjvBulfwTHk*pSsvHFq2cUm!Ifg?=#w*`=FdB&x_72%{!T$mLH^K>zKH^06ozC+WCx z7ID*U_FpqTWa}>NmANPgVq5gcXS#I!rui$U{ z4%lkwvA)a%c!?_9p`jY`{^i!)vwmJmfs8-=vnP$vvn*C`<+w}^?Gdl?Ti9>hzPI|b zK=RnHX>PK9cn;dp*y~#3nW4Lr8Nts0cXmM0XNOqYMa8})kMJfefo&c5d5 zWh^u%l0waPQ2S5U?axE&+}+{9A~l_70#;rsQ2i70_YG`Dp;}s6>RRfaw)^^>oan&- zFxV`Zdu3?!4XP3xfajd1#PP(Mp_0kpRy=id^0vI)8@=KZb%09w0xXp64lY~s|+lXE;gM+{z=TZQmv4R?d;Z! z^pkN>jt0bnLvx`x%WDbTiSgkX3K`NqvroGkE;fP1r1E zRz~WSBWU#`S*p3)!^!1A5&uUjN}f30w~f{G$++%Uu`JyVs%8HoZ+7tBohrXAT+jMJ zUi&9|9F-CK*p^fnOZQehn6VmyF$(>?bB*)x14HgmEDd-!Lpv z$X%5>d-1y2-u|B4cBeTFMGApQ;`Ou_LNZ@ogY<+yYG6VY*O1tK&O0konddT; zKVrhcqXh;A1V2t#mOtY^Y|taNjWNCsX^z4fDih&#;Vh!2&B8)PTI98FUMfOXlwnmS z!uK@R_Dc{jQA+pWT9-MAmz4wtZF_iYSJ%Gc8Ctz! z1k7{+HiGBf#w@*snwslkFOm#nPDGMCgZ#LH-gIH&TH#e_0izP*q;i^?f4z%LJ@@Ql z07f+G+c#&gi8ZW z+4*qW#}e^}B{zU9mtWWZt4008>XrAgXLYss=)RU6zU6FY>w(ofvxss%$=f8{NSiu@ zNSul30)`h$aNzLMQ^mxa8gv&-gED>`zfp@pnLg(@r(DGe#(jE`ER2Ok*202*5rV%~ zC)6Sq-KXHfq=RduYeNNI=N}V#s$R!_t$vB4a~^bidn(zw8*%J>3`|9YM{KVc5Is78 zU!mupLl@*NbNaOb1^J%I0xOX=go}MM<`2^q=H2ZFdn0X)kI0$d6259P3(FOxcqph4 z^|UmbY=6A5J>PO$?icV#WK+BfEByVx`52E1V-b3G)ze(a$rDFbM_5EBsd-11ec6lR zHTVyR@AUs7P!NN9dc~C_O_qRD3_C~OQYH?>oV}#y)7pbF1QfMj`L&1aPHh#Gt|xYPOuRY%LR_Y4QWmgvj@V zxT$bC?2S;eNGs;j-hukbIt#9Ny)>4r)rC;Q(ANQ&@UV`TPm;bqd2~|&T(n>e7$%z^ z%Ox9C5yJ>%FWPnPVf*moN!5_!c?ZZ&{X;LRl~+(Oc+wS?00Meo?5p zsaP23p^^Fdebw9jru&o8WXm|bsJ8#AO9UjW8XPQ}O!u#oo0rBdScQ*2>DfC*giTaf zjdh`%LDgC~Do=xm@Qs|DCT$y5(QH13~y%%$>Nc4%QtubpD%WY>>W)7ZBA zDy}$-6YLCn^qWNOp)0eV-v~1KZsm4*Tdz9}R5Spk5 zg)v>#Cke6f!TLD3U8t{5e@Vcyd!;>O)AQ+7Dcyz!CkCV+&sY z`OUQ{`BX^zp*k@ zkHYF*X4oXSTemu)fzTL7C8EY!9`CHS_K zVBI*XyR3I1L3J26P^!^`=Q9YgXdNvoF7QU8oNTQxNO(6qLfN`NS)1v%JQ__8tORUu zehC3`x#yG#!}csE9WTo@iNhK{2swkZIYlf*7e%`;S`}euW7fPSyveuXeE;MRH}tpB z95_?Ro$7P1BrGae(B741`;h@4{I6l*L7dX3ehj!aJ@^PCi|j z>HZJ0{^di5N@EtdlgeG?zYB!e;ujj?t383bDpv5?G7lWfK|7TYljxlH8r-v;GXu6uqzPUs zyy&}LC?am5GM&(cS@%eaCg0!LO3_l>B8p>&oCo~s@mGtCh|mR&0zi?%+?Z^I*oex= z;IIui7yz2@BIV8_3lF{*mOWHYl=3~uv)1ndb}#vc{-@?Lq|FaP@t%u?_h0NtLM})j zC2f=?Hz>Pc<+O-}@$cJ-Poh;I~{aVx{Jw%g{JOD9$=^e3&o4fLj#F;6(F_EwpqP%?!R^#dT zu=ehpPzuc9h*nmlWq)C1rIYO(Ux@n0_O{D_T-f!}&$FG~gF!`A(J0CQ)W^$IDK9)I zR!?&vUnh!u^EkA@qSf&H3t@dhaP76?#(b56s5+4_zzA4VhA)O9I+XILV_-P%a^hNi zyNw$GjTkk!j|XZNd$vP5Q@ZDl9f7Arm&=j=F`m^9{`)!I*CM<-_pI`=7aBPKy08pQ zo^Mpd^^6iSery*3%sD(1-u?>yAQixmHs+~ zyZZX0^}Q~gb5)Bu@!LB&r@}$@gyhEhu7wNJpOeCwSJx+Q) zMi(!9EAiW_*9Hd97@2OzBcI!|ud>1`4?12CN}pg_gLaK5pQqnj4riEn6+VpqWa2{D z8m|L3U!juy_Aliq9{SU?rUh3noL*dgkymFd(p2xkj>5#o%pyooK6WLq?_(F{bNDqf zUv0T|NGCR7@mTyABt)YIB--dmhLE6l#h5wyt^NeS+23h*`xxl<@_mB6*kai#7~k0S z9R5Q-#lOO#nyw_phu)(H{;j_fd!PaOs)bC>RlpdrQtUTASXCV`KyihBiHTxy>Ax)M z-1KQ_R<)mw{T=2u$6pYK%{z2Ym9Po5MTY&Ds$lrtXG}U5cob(j$r38x>G8VkQSYGv8o?S0&#h7r=W{AqoSnUZcKxXp zbGO2$gQLyRi$fs)Acjn|mI)2)vw6y=2pX3AVv#f_@6{3P&1BhEpwSCl!&H&c%K->@ z_2u&IFj8$iGsjoN#56JIoua?0`C}|>BrF>={*B0A+UxRRp$8V*@NBzXsP<4{|Bw~? z!)S<83I7m>XiuEmCp4MsB^~g8%}#WXWA*8ww|d?aGuN+`pw@X!rZ#f#Eq-;iUv)Y# zx{D(VwZ5yj6Ea5>m857)nEbL&`~W#_P0c%@?rx4~Ah3`!UKV;Hcq=DnSH8;U#|y{d z3lcp3CYn5M4S|*O>70Jl0{4en4!(4{Hk8dF-)@qQySuyRPY2rYUbnD%&)ch}s?F7~ zRLQmTrJjq&^zY&XXnE+Bm7`{73+;5e5G)Jprsr^ag%!`Y(d2cRCod@@4}0?*-LIIU zAofVU-I735z?oiS40J#a_dvlM64mg*pU+=BS`s=O_iBBVD~deP2=66EC|;g4G?>7y zLKJOO~^Kv~M z5hgx!4V^UvQ?IocYm`d8%?&4Sr{03u!CSe0tmiov+ypq_lktni#TX7W2VdZub<%_w zBhhQk1W{!;6Iot1X!Z5LTwvvm`K%HFi(MM~9ouCm0c2%@o1OohcV*XD|I=pk&9l;j zvRdLkm!e?5*(h;CSN2~Yj!bQ5e1O<+c)-SKw{oAGNZej!Y-%12ZgO$9&9*MS+%ZS5 z#^`wXu}7d>)Vl`N`qb1^`m|Qn9X&M1#Ge2S*ROhu>cp~0d@?6cpH6DiYsJt~lG!tl ziv=ZOcxsH`WRYD(p4p^`H18?$eVo?at^5qpeh4 zCp%bU|AuGJHJhq1o*dmQ{#&id;c@$vco{$)jp0roi$;CQA8vE#vV%t2)o_Sz$Y|x zw3lC582$I4vTv0Im=Y#SHMh6T+{@H^A!qpO5~jO=BNWDy7-cyWN!~MY3y1)yT=b6ZR+t2^pp^;%9ibPdyt`P-djp&3UVd9SoC9MXcww_g`_~gW@#-al&xL-42`&BKT0SwbIuua{N_sZE%H^H;dQx<8n8wY_nWSOY2 zKy5>VUTAw$qOII^7|m{Kh=S+NNo?y!We6SgOzd{fIWx61RiYy|_({P^8jF!F66OSH zI@K3y4um3Rb-Rxgn8+{ph{T8`wK?*8JTmm={W64fhUeAt%@TYv7t%FZ*7JLd++ldO zg*OgM=d`AjJ>UJ%hQM3b0~f_L7+vNBr40*?_+zFlDx&a{Q_kZOOQhuF7=)zTw`Z3u z&ncbop*~Otsx!2G?}dc^i-VcWg*(HhrFVd^(NVf81x_$wZs^(m0Hp}oEG3o-Xt~$u z=jY{nBZ&zIIIsr({n!7v)AqO#F_vywzBf-wz`8|e=2xjZOAl}5iQmM=baCW+931#S zlo-0EHshBqcm*X+s{L=jLvxsgR6DR{SO0C#aA6kr*Vj2J2^t8us>v`RV+RKZ;oiXb^Y7;x4pwW=ytijv z&Qg4>42ez7I5l`>`>tS_L)OHpa#@PFJQH9Pl~{}QKo0-i|1`KMSno2}yLrYn!3R5G z0d=%H1}szz(DGyK$}8aF2Xhe0}f`K9N-Y23pVYw>}#_v4lA zJ-Z^w1ncmH{aU~z;?21){Dqj!8H5__D}ec_RV#D# zh$NAclNpb9nDp^Q_~s=m#K&>sVVZUXK84}27gU& z8;WG)m84xbD_x{HUCdOvOvY3+7 ztby@g1XzJSM-&ig4V9#NU&20A)N7*Mg)C#dy^#wQq1*Af!1H(*Gw_(goc`g5cS=~{ z(~`ZFS)a7wg+~%%b}=v^{KKHr!{0GXKq-wI2v2q@QMPqwEOXs9G>g+gh*ZX`A zF6mr7Pdc-Al0zOmnY0MimB1QSYVS^Jl63?Oh+a2ya;r)L6iyNqkdJ|x^ZTK&ry7k* zLraV#oa4~5Z0-uB|FF?dE;M_@!t~N0S1?nFJz{W4^9H%;@&g2Z^T-pwwG%uP8G@2f zCVG%in;WV|^5mzu)x&#jwvDJdamZf9!;S}!_~LwGI?rX(DD(dQ@tP5>&3R7dhswx@ z(8MC#g~y)0@6I{`qwd}i9|=?}_iJ?t@_6`0yl7*X4*eQIa?1^fXnAjxuJPAeUL$K_ zthTy1@Bgp>ydhb)a!qR{+yo1vUT~9`ZovZOr?>hKO1{!rUR^m8=EWs;u)miZDt3U& zVomw>K_wbK{#U~YE=A%)UBZlk24RzhjJOS23P&uvvIpRhV!(6a<sVEWOyKLcy%2o{g393DL`g_})E0$o4E`iF-O%q<)F4{=Utj{#lYui};k6gS-qZjm9E}Q=hut5iMx%%x zeiU_hmM&D~vmt~_x9%b~mD6g22}}Mq%Qp>^xw;7fF)3cZ}nKw z3$1L3JPg%4c9Pl~x2gthIxvjw?MI$#F63k;z-HOYE0l<$AAr^UzS|3#zhe$2V;s3s zCT8MV0}4lJM9Vx!e?OzF#kc{ETQ4?nEC>|DII?n-mQnp4P|I-yyH7JL^BOCV^?1El z#jpPekAe!Fh=XOA2S^01=H(1~Kup>rZAIC!8$+H{S53TXwkeS!u(^7z- zwuI+dfXq}}fh$L*(Ku87$Hm3AKkNEgi%lH2tdMD~@N>9`XtHv*vgz$8=s7lhaX$V`exW$DBu+bsxA1^aZ63%;msm zyp!;&DIC^nD{fcq+s>;pNfI^N6cfN}l>wrpX~~_iUdACQ4gRx40nVq2GF`|by7uC< zW=m-ta`Am<9Ve*gQQcNmLVWmSv!xI6MlO*h!T?X?Cu~;Gk}&c(2Hutb zycS8gkSzrrmO%4p3ucr+^#0tx+jqh%iY$uto)fo6 zc3aL*Hau1&(J*#d7wDLs5r(>99dPPf;SfAFAR+SWm$Q#5D|f5J)_yvsmF2o~JSXOj zuU@8`mBMNmC6R)g;8r-lByB1*Dpt}VB+a1CZPWQ>#3XU4a=zCIcsx?}y>>FW3`7P8 zQy)Pw5Q+?c`Rj@~)P0e#Qs)sd$a||&sJIJ~4308kT^`vd$1*SLjBfxfmMo15F&-QC z0|=+Nqnvy^oe`wbI_$3wNC zZbCzy>con!I?KD#I68K#%a7j&wlC?Gi>-U_mcS*=lAOKy?!o# zx%~0G?$`ai@B4Y*kH_Oiar1T!ShAY2fmHL*ec~yoe0TURD<%Gb5%}t;@|%=&P8f@R z#spBr5?79_d0x~^e={yCdOZx)8<(yunj7sE=R)(>;^)P|=Q|NQ&9RPR%>WB%er7hCmk@H*+KCNUnYtzv1cN-j!Jq#LL5~mD zVD`E!x8-QWsGS-A1Y#NS9&YygT#*Soi5gw%|atZ#7NVlTy{1lA?%1fOO6* zmL(3^&%*I~>+33xTP*pM9_fvx>4AT~=)BibP&4+zQH!v4k!&7b{PVnOR@b9q6@#o% zRyh0Zn6Qi@z?#1^T3MCedfQreWe>$n(9T7VZqeIXU|D2I3xItc~xIvjQWd8`o z&At0(V?LFRSjx~u!rvucdDW7iQVPft7XbNn@B~rjgYK3Gi|RzSgPz}ihD{BR3H1o- zhqLZxD>`4KS#+OmKV$+_`vgWe9tv+9oLUi*hM2;6h-QP^()xTTgq^gei{}~Ne8qXf zjaVe$jiXwM`45*C6)Y6@Gk$h$eX7~S0bb5VW+I?b_A`bT6KU!lU+x(3QLclo& z`8vmv)6CmVjX!HBm4%4hsdlh>zw{l$Ld;7X%Gf!vSHk)!80DW9OARhj6I;~c;Hwe= zt!kkk{)XX>sZ^wHw5p9O=9v2li-YW*!z);rt!o*aaHG4gRZQZM))zQE5Wdi2P9GeP z`_ZwG*n|AXBfr!uBHDVNkuCo#UK3(3h8xr{j1O`ywU{2Cl`UT=CC|CnZ0ut(ufkq! zJoDi@GJ%PJ7o9_jbHPfSc|+o9jlp+gAE>&-2xu#5hgrX|rpK6sPP446D;de?_Dx~~ zd@@q%{h_{z=zzFK1U^l5=|nHK+v8r9+EFZ#0M#1_2P|DM{|m~W^Z8vb3B?^Rvd=I| z5XtA#>p?7xbAJR1*ST42-9sHt0owEQa(9)Vhy`PoV&}5C&6<9_sML3;$?$EmfUq~- z0bxrhL8ojQx6Kgo9`22fbyve-)3!7IIAo`&)Q`;Jb-sfTi(}0rrDeOqV)MK>;IcHyhlV(OqFT}`qd{cL5NKDouFF4i{)#_~Iuo{ z#$vT*GPz-|C65C(BZ1B4liWr1qDs%vKy~UZZC;D^J9E|x8M4S$V~u?+{k|nH<2!-d zV+Eu%|C3z~6FccnQ!qzi(Bk)tss+|HvAa#;;1l~5^P}D^_QRmoQ2sWxzZadMZC&u< zDl*<*ZW@GZg#Jl%^C$_#BEFr`SC+seCwG7__dS+8?l zIoKP|@>m8M;NnqOm~{i*@Vb$3usVTTElUHoFnQBcqX1J%UWuMDVIcam=eR8ZvJ-A zLIj+hp^)>~sp~lB{MC(&WjQF*U%udS=)vxK^>ZZ(EPYhz8%_C2bA^RabcPci-6Rwc z4-?xpxgat6Nhu|m?Et(C^pV0w#K3-z3Bjuo!`ow+65!smxoIeJs;SfW&gdkpxb~Rb(&ebr z0E*%5l`A`E95c^>kMB{4Ov`BJ=MtVor{y3NJjRlX^XT+j9Lx_0xpA)r>ET&@#`{Hj zy#X;YLknc%CNnl1XqqLLVGp{vrxc6X6m|-j`hPSUd`^kNeu3>I?`sN+M)mHT9AANj zIg@KF*0rpkd2<*AaFkaY5K`0~H^&yn%=-UZ_7w!LUd6lN0xHtq3FrjX;3YKu;Y;1*$40aU8bW?eBnu@AenjAgHHw30{f}(u8+Lbj`#sdsvAYMS^y40qna~=o z&r9FXVy!CId?D3JbCcnnZOvl3sj_%OFk8^sf&KI|yFBg*J_}nZxU=AHEm~L=5MDWv zdRn6(O)C65uAxW8BMu4e)gj`tB$3YcIOTFY!}dv6GHO&`C{0u&%Ui9s{qHiix>#*$ zGI_d_Nh{Qj%;7C2d;Hj*;Xwfq^ai~oIcVuRz}KMP4F zEjA^v-3A+EaSo0elf@a(#emEwCF{Zyyk@GuBqJ>9JUtb5vmt%iJO;+KJy3i?$(=yU zht;`OapRx|3!}_vG>ob52TNq(7Y&tZ1@+?j7ZOW2t!Q^fVXTprq2$)K)$zzN!-DQq@G}^;=qT5=$84u zO{d@E^>|)irTsP$b?`!qAd6J2r50HG@!`q6RWzx&>DLEWHbTOHr2=bKhl$V4<|tTK z)ar}d8kB8qD$AS`*HSqlGrS0Mq3J?Wv(3yj;(2%dm6m$X3&eA*CTvISaSrK@LeEMR zvbq4S{zp*4mb>fiAF9uIA?lEIdagb#`Z78A4Jjlu%OcK@Jl}*5hW_!_R+b9>{??Cp z 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 z z`sHqxiM6x>)sbk79Brn{_HP9$-u)}VR+6%kNJXVlwssP2A8gkdTxb#gpc-qse^>L$ z_)hQ`4)AmnX2;aOXMc4feaf>p_Jz@`vXt1&g%eR2Vi3`3iKNA^61=-A)OgYGCeKF; zQ`Vos(c^PTZ_A8A?ZWxIECoO-!zO}FrX~T^G&OC*`#psLcm1{6CGMZcVh5tPiU?9% z1Ytq&-Lb6$qJTrs>icrN#KHS9IP{>=&-L**bzjBIP=kd$N)Z8dl7!;EV=Q|7c6F>HwL0ocX7B$rm12ouP0H-W9QmN7vJ8)JeT!- zUWQQnC&jrqXz5*hG3jp-CVu;!7$_d-6 zT1`ztvH_XPv)-Yv_#pWK+smNh63TDKxAM=3lxcd{#*FL!Q1Ngv)l8l;?M{MR+(HGJF+GxkMM5i=jzb8quNr%a^8ueZ-Om#6XQizEf!e~yyIT!7Ha zG0x<$FWfOucPT5huWL@@MQwl2e{I9z9T?M-q9bGxU{j)EczP)rsBkI_ZmHoJK>pSi7!F1BHdDE3f)nfX& z3wt~FtVm<~#I+W@(wU+t)lr?st3T$v^;=c4Q-`O}u~rz2Q4*m2a=ZYuZ@t(>X2LZ(xR0!lxS*G%L;!>qyNS(;~DRe8!hRv)MI?V zG(^W^k54uOKOxYirFg9zOU}AOij4SlSll!pIRgMf=6SGK3;_8EI z=VN!(CSSFwHc)wf<6*Y8LzCjjAr243#0j!Up5eP~(G@2pJLA>5iM7v5C!?T_{Qjk( zQmMto*$A!=3OaubleM%QQ(xAY(y}C1{z(N_rS|s;V{P|OvO?iMr&fYlScXV)D`&@*?VGgtJ>=9!y|rPwWc zOIis%BeBONIDuUa|5ajoc5vH=$X$y3XONqN4Z3%QJDQ6OJ_3JBeag^pSsBi2`8>{? zfl29mrH4|?c%2b^$nZePZt*`ZsPKyR2rTM*?C{DUDs%Ofmn(qV;}>w;tB&`^A-bDQ zlU@d+>a0x#K*=NCfXI*K-(kUgt9~R5b#LAZMpU`6cO9$#T{JlR{^tNZ6 zA>ql5^Nv?oP6@$q;HG?KSZ#O{&EIc_(x(d2E^qBt z8$E%2nni%Vbmd|8VhI}%!u(q`<>k|}7&b(`J75YWwS_y()R)j6X!;%dlyU+ zc6k#7c$t*LoHhdbU&MZ5`~O}5wDJY&9NzuPVIpj#t$5zQU!OEbzi_frmJhL+|FDU3 zR)%>3-C2RE=8-eGbb7d$aA{pZPmA{c4HI!Gm+j@JD(<_!aruG4PjMI#^HW}h)IN9S zZ^;OF7WX>(@=vze{FzcE=6gzhWFJ?Vz>g!x`O)W)5Xo@kYaMAN3X9hcdJ!A84N4v(v4e^ zkE_fWKy8`}aX92;$DZ<(8c)s+S?0tCCaHkP6_|dWRC!3>E=OW;%pIQxsY_lb;_y26%f%fwHpv znkZ!JS9LV=sGey}g92;0rN;IB_N$vALGCAVm`WyW%7@z`H~KmX*}TvotApB9>27X>|6vJtwC-oZjMsP#2oL%rgZ zD5`7d@q{(g!?#Ic9PB`aF!<$G(5%TRO0BFAoitvTu@D&caEj|ZA^v#Q>0u4J>TRdf z!efl;p(naHfmj0Yw2tEA-Tr!oE-&=jNl>g3D5hq#*%c(DkW3$qxd03TAiRdRx_4x* z_3fSE7g+S|E&k?|(n>&`)_qdN69s{e?oLv1yUE2!ZiqU5H~2V^TPe5o9cJDb)@f*d zM(^Oq;?Mm=ZT?P$PwCgI*Ds$M?TO`CyvZ`1nbhq^R_iM*E{t;M=z zn{;QglR6scqhes(efh4g@vo0>Tlebrj%(9as`j~vX`j_ZGrAH&ZTaf9p7Ko}@XbCS z)$@|Q*0X0(C_^Cn8(U{R3*#i9U^FfxK~SXC3Ww(@;}%3IO+)5bz|*ntp~1txU%b^e zAZHKZcmIkT6n((WGrF8_2x6kZ#ZR~%{)duM~`IsI~5i-hqfY8l4YPcRNC zpImrHx*)kq_d7F<>T_hw`<$8jv^%h;h5=J?mlkUyYI#NY@fOt_=G)7|&!`*(9L|XY zsTRuFnd^~Mlit6y?NiE2H{nE8-{&$jTdC3?F(QV-5hWsoaJfO#Ip`$l zb|(I_i6thY15 z0KI?lB4Ey#A%n=bDdIKTaS03!&z+sCILi&VuM`dVcTBHEnv>5>M@QiQ-cS_m7IxlVc)*-S-*TfonXF~e*hIKI8jQI0oGspl0#|Ph#iwr5tj%e;X=zDg z_O-(WC1b+2>1|I=^Ph42;B(`;qRuNU^7!2YL;dmDmv(^@>JeD{qf?btteay4j_6ie z$Cy-V%rXdC;Iy7l6tK3}0DoGyeG|d(DmV`ld54By7L!TwBl(|jQFpuCb4q*93x^ks z4hT=PysEYEyv8@kXWnB z9F{!L+f2ReS3T2zqDx-~^i~=^vJqhn`qXos<0*j)S8LJW9$HC^s|*T!OAJ1oL9STxe=B^8S<2crG!Ti6p!pJ?L9kA?`q*6$6#*%gC3QEJ9Ilg8uJu%v zHUDB09g`mENS)C+F5`k}(5JadDHkN9Mp27gU-0h?&236;^d6)}s#l|ZWVC5Y|LEe~ z?N8=Ea_LKfJ6ri15AuvvGPVLvyity(j)kkL8!Bg0L0nElmM9pVs{H1-O{nA75pj)O zxfl$GLnq=h%niikvhE&dG z5u-k-w#^BZnkLlMP5utH6o1tgAVQQNl<95DS~kaMe3(_#f=lz#xC2G($5PE-ZC1JE zW6@a#-xg9l1opRtxS_uN`WUkUD$ArcH8`x~q2>fPq?Jq}HYHO{PQ3d;K&Z|4{Y}6` zE$n{z$dVZL@&V@%FWcnMH16ay1?A_{FiC2tu>%{UF!fD;j&^`EcYe@EQ{!OexE;aj*&w&S(!*O^U|M#~|p3)_ez3E@9GaW=mdvBme4I zk`vrRd@~7)V-Z+9yu@JlE_SIui0@iG(^$3(+Q8H<+|>Zt@wwu1q|?ikNiX9t3Ct09ydR`JDg{-<`r~VjK{qBlirYOLLF^LI4y<3io97O=NkkklN@N z$n4$GoRM@@^Z0XWt0DfHlP8cKh_wr*g-tiUeojvE$v;C2!7x=@9OqqR-ggdd3n!^b3y|=Ygq}u^s*SlRab=Nzf;q0rD+>%m46D9dx zG&6Zr^(!KSqqSdL75>l%XpnoAc#saP?j$(dr>|vFs_r{7sTOPz`B!N>KJp2Hf>2M8re<2`HSxhU|>Xd>z^1lSC);#ms--|k6-4nzR~GT zrDx>kqVRv=5zod`bTOWTe6h<7{ch)ifUAG-2bHqYsJ4NoIu~k6F9AS6_Aa_>&~} z=lyCeFt6IjbVcB|7&8Z!9Oa@8{AD}``^LSy*+r~SzDFH-Dk7l&AEu7#ZyJvj3i$fu z7rK1M>aoSgx0*M~tDDp&mNou*W{$UewZ5MFaH}cXziKy}Mj;RJ+ZN%_UtEY!LAF)m z`Q}qq0{cAjlxQ7h;ESh#9AD!l2`~0wWb%_c+))^F7lg4)sJTsMtlEMgJYi3sz4izd zdQcS7Zu=fb*+sfYd3~H%&^e@67yQkxTQEaHJ#N_ zj&Ti%!>?^_rdJf_!k90~;q>kr)UuiKQRtU`m(H?vF-1}U0|CDnQ0!z}(B z0eSwCr?kk(WD)xMJGLXxwDo8A&OKDLOh=$QV-s2}dCkQ+nu-pyS@US24sC@Ml5zM8 z`>uq(NbRY%F3-waSBnBGw#FX5=QggyhQF3>d#GZYHyKX}xQ2uA?@qn?40A~y^0!}n zaEyoWi~~BfwO6fuBRj7b*}Sy&>=K`(2Ho0hqN)80$T4g{6IvQuV8JW)e=y_zI&ZsY zMnDA7{n&2ET!(HFP#|^3^$+!;?}2-J$Uj#~{_c`62xo!)rXFwo z1ro+-=RDT^3+BscrM=rZ$hAO9;5S2psG5*Mxy5!_Ar%=ys*Ar&Qjo{b`B{(@7}OTG zM}vhJs^S!b-Nkg#0wG0lFto@|Gj)3y zZd~VXN7=?|Shbh&mB68w_sJsP6&!x&%Am3XFFEZJ2sbbVx*VSb%XlQ-CzgqT zM~{MQg5Bj*7mrA!BvpOrKkfI|)O0FN@fd0`U11X3t$X9f90O%UZ;4G4Jry$po{cRe zze+#%RUe0lfx^qCnKea@Rz5gN;&F7vNVhaQ&o7%b_H6z1{+A=c;m%y8HGV$~3iXF2 zp@3|!_I^|5!!CkvuS7Ft=n2>9f*JS zNE#Cx98&L0zP7mS^4f6w2p>J7Wgy3K2Nie6mk0D| zqBo9=4@u0RM8(0uYXTb#}YOs?c+P&r;I%P^tMCD@?J@%OXo)TSw&>^>LK z+gAywg2m&J5J%pK(;HUVz!?XUh+4Opd|90)Es?VCEVE#>%kAD5MDf~rRAYr8^*syu z8XxMZKQ%F7PQ!Utmbd5^hVP8+t-~yII*vb6Ne{N=l?RvpI8$QMizVyC?o)wo|gJ+hhZG&1q_lp7V0J|;OzT1 z@2zI^sntD?+Fdb1d=*XVk5BcsbWLB)!#yq%{_eA|^o7oLulpye zPz+4MNTb^)f>z`huQ4g{(2q}(VL_gMId&yybv^G2znaQGUAg9?K$I9YxV5fh$*AOrS@A%XWofUU!UxjUeb%=i|h~^r`IHth36P9>mL;^NYLYn5x4c% z`}SNt^l!T;EKfgYMVBEx`p{D1JZhVjBVlETp>n~tJt#AcK=g)Rm!$74Q*=oI4F$K3 zlFWQ)N}u3zv?q!^24loa;yE_EwfVBoO+L8n*?vHaP28+A{%I+HaOj@#KB6U4k^q!X zlho;iVTec*QSGbyK}~uTS+JWA5C`A!U{pd# zh#coE#JKv`zClm zJ?ugtX86H}%4^og1K;fjpO9zl(z9#g)Zve)SOF!s-7!G1-nsvV(>J!>XC1 zCwCc-h!fpk`_fXBcztg0F^hw#7omb7<9kUdw|__`3BpZwj~naMu}JpHr$Z~bk(iMy zhL})@%>o$TAGv&M_r!CQ+}N7}`G{RgHS=-Eqil?FYEbzkiU&B#+bcM1#5=M(ORA)r zo!>vH^IFh=-sSkir9vKCWlukGA(X`nJc2!lM4Szt+b3W8q0ZL0Mdf{L@n){&PcR_w zKYzg|4TsUPAk1a&Z8{wZ1kyfB5(f=vd2y_O@86oAuY@U$<YMxVNsj2Y#d@10iUkGo3puYX812v@w?EZmA2uW1<}NVTjo zkyyGoKc!L`kGx(5Tmt=F6J^Xk)g$#MLiShO18kHxylzGT3lV$29eh$bvu_gmuAT!Y z!gNQ1ri-##mS4Zl-Ph2>+N1uSIWtp1Eu$Yn1^=fqXtT??GL?EpK_8If#1T-7I<#vt zvd^D-0nq9jPD{Qsd7q2JoDJx138LvMc0zL~78|8i^)i811GxjS;>R@Xc8O>k8|kq~ z%pl!i0)=^qo*izLJPrtgN(FJ4`G}n-i8Z|EzwEstElXlv;gB|Fw7fM(Bdk)Bc_Ie4 zpK60{Q0e^7*-3YhzIln!G|Mvd?S;#*ESakfxfC6mS7p4b+w!oK1wpVN6o4uPvq>gV!S+_94#ocRmjj)DB3x_3>iA ziEDP2Ql`PyoNwclM;dPoG@OPE_lj9++;$zDj}Hso?P%ixnl>vHKy*tL-G#TCu+d&I zcUGff_DTi8lsh$D!IPunrPQ^Fo|CV%Clcn{QodXj^}e{wD9iNuOoHDjD@)BS36lp^ zF<+i)6=khq8Yq8GpEh}PmhjMGn*6oD@YKDbhnrMtCjQz|F!J@qQ;Q$?4Nm>=FPpyj zVW+k#^v^ZqVRW$5xQF$6MGu|DMu32zAz7jRf0`PqaBZGjKhbu8S9DU?|HpSiN_e4U zSG&l}v5O6D6(y>vXUxN49`{3;X^O6a=9GB}99nWzC*{hCdWYCbTyOpRHe%e#UCseU?`0G>lolvrmAsb+nbXBh2h2cLLD%4Cb3V@nD zcwAiDrcDh0jwQW&eZ$j?79pwM1Ew2$u7Ve_=pe!&QpZ>mcQocOJCt~56UQsK_x(|| z8EwjAA_`bs8@)L#uJ?@=PEuLupz`okQ1>w|+qVhv&6vg#GhUq~s)3U4yC50f-r)3vl^V!)VoV{}WYL znl9Xk>|60k0Hc&v|5(j_pK=)_^Y2uh;|LK0O1c-b1LnAIynx#dR+vo8L*|UR| zNVRR2-59dXbE`b$!50hfcO{0;nvil;o${Q!*qA^luYci-2(;jQbLR5XK zHlCj@Rsy_G#rHh6(~8#w}!LO@=$HsK0(~Du5Us35=hFD=#W~^`uf1RK@8Lk#^~v?OGJwW`Mj9j5N<)? z&1ebRYXiGS})ZgIx zuAw+YA63{4t-}0hTdSA2EkI;BF^YL2@BS=ttkoJ<%i*t;-N)DnvBJFjeE4?=F_e>#^mc-S9{kDE`i%ip*k}O#*eP_+LN?w zz1M3wU?W{4Vm=x~;?X=dvs9!oO%1O(89)2NS$2bJp^B0r#g9eh%o-={GR&G0@`Os$39Ae$i@y`VFw~2_FlC=om;;rDe)mtmA#kjBFkH7|7&8S zBN8c-{?u(n?D|v>N!c3qtn1|ehW+OS;#athFUqsqwTXXNvbpr(jpT!(K&z%?V;#My zyAm6@Yo&a;V&MIJLOc$CdKu2XylD$(1!(fw=GOYc$#@lO4Z)5!wNV@Y1{)-vl*I9$ z4AHz?$f*H8L7F1gBb`xA zCI3fm{8xQz*RGu3QQI0>qMY{7mLoGquA+}VVK+}d7sdmb$^ zK|8=)%^IBfHzuIG{I0R1Nz3r8=BGbw*=r@%@Y26o&@q66s7P070`O~Oz4PbT%g|Ck z^^D;4ii+68#MSgTC!zT1yM*O*}MC=r?VdmFsLhEC_wP;FB1H} z*5r(Ne2a%7zY%wLImimnb}_9>&rgs|SZ1<2h&{@Y`-n=(+)sKiUq>=4kbRPbH0!}f z4(AmgI>ht-?w#BBO~0#d8{mL%@N01a65hL-8qqF)74#^IADAga6+K+0zlbiyiN3xW zbXG}yv+&%a!#mpC5CdI>3$Tz>PZxm)?Dy|^D!O2QItp_#3J6eDIV}W;1qMLO9Y#mF zA%o(+_F& zL+Be8@)SR&uud*GYto|Wi*bfaieNp#R&?xQ`#~VGm{FnUH>vJi zI~J*!8NqKeYPmXMCG*BKffZ_K8q3;v&j#1d+)r3VMgiaWx7Nn^VLt)Kz`S`4XFFVL z@^qH|HAk8W_&2;2iHvBm9s1XnYApa;ZSfM-^ZykM9=$%r>C+|6driILZX_UZvZU~x z_x30s5#FPF&U$z+|RF}3LT^;bn2I0JYV1tSuT~{GSoqC1E3*C9Rd*ps; zv24SNe^eAwX7&_`MPknUB>}-EaBf0*4$lTZ?vtzsLx#EtNTVWJd`nfR{$=Y~Pc8oT z(>XGiZ^otGw$ohEJu{yC?Lvn{*s1J4?Q&txyt;BR1NYJ+5lO7PcV+GJK7Z1vt&cdC zbZe#@n*ZP=TOk#!c$XiY)jQ4OPBz}d#m%Qr;K@x5s(oj0m`_)F{M1~>yhC@2&qW~% zq9B+20@>0W`qwrzIX9=5Hwp?8W8~m~=kdsX{`!qK6(Ze6dP>cam5G);`rl@GP7ZNF zhQFYhpGl{G@H!I=>2Pjr42zEz2IsjU-|jw2&0LfCpRozIY~e+*708%YV=8`sq0OZR z{YU9|ZBcTILiCs$1MifA&aO7J zGLCut>@s2JUwLfdf&JROAUudNAxbDhL5wyE2m8Y>{x!vLeiMQG;%)vj^z56??kwDl@0_z5>Ow^oywR&^$itgD=}dPlDn78)e4&vS0WbM*W~N!&iTX6B5yotBrHqG+OkJEjO$6t3vix3}oRK4iH3;4+BgKNGDjvGgRa^$2D$G5qjg(l;3M?t}4bZkDN+_y|%mcO;J@ zfB4EKb7wNvAi(NLq*l zYLhm5AXHAq`%MHw+B8>{fRO{c<9jiw2kxEKadOmb_i9Ybi8J2#QWN)x0~j>^WTs!< zG?sxA1z!n+no&;Zzwo00emj#GASgJiC2ns+M+D|_k|&u#tQw3_456I8qr|E@mc55j z$jr5a6r%6IN8fA7|E5A3dOavtPiT9f-M$1+tT%Yy#wg>YhDa zq&K$TX2-$~kTv(3^Gwkr3^#6MKTb8U8Vc*#Uy>^HbkVi1oiaKvUUm}+y{7D=&TrO@ zd^~;*9;km#>-WO~bMYM=m|$au70}^kU^N?gKts=@Q-=s~r?HU1&26RD3xGcDOjWQ8 zMS_{ca+y?@Zb9P-ssTO8lHCgDb$l{6AU)a$5hs>9?pGB(&C?&G90-yvK>bO?f7zRU zLmJU3csoeS%20^3N=z;AW(W%P<%II2Sw9596ur~!Y*3E^=5>W0 ztwfuq&$~^M3Ld1#^5jl!i_zJKXQGM9lLbfyZ{ej@ZlL7nS%pkU5}O= zSwTJyF1UW#;oOTqmsWDisEEJpP&AH{18UIw@bOd#0hJjA?e~=6i_^CaN9bA1_m^De zZ}x5N+=BxPms&$Zxi!T4%HAEC5ln9=H&Jpm)3%5_^CrD)Bx zfj5cRjbvyLA*W=iVcxjVL<^9QrJO#FX&I6_MwcC;zxHLlwm0}DPZDu#SLA@k_9^#8 zSmFm2ht|kjium<(xqrk5IAALN38*7;sj)MWa(N-Y=4eax-rM4Sft#aN?jPUx)lglV z!cY?6dbAf1hM_i+12p+zqS_4rF6E9{%Z`^Zfd+siv40 zRU%C41wZ<}BJPuTzVwHxoxZMqt1Lc_fO%<1yXzAP$fr6w9?7Nhe(ojH=Xtfx#=|}1 zL`7NR^7QL$VK8&>gNANn!k+EPkp8G?ot&vPzw`$h1997bszg10^lBWT^5b=&#$$nTg<+c3Q(f+B%dKF7317|JS{@dU8r-&?;gIXqG z5^K5X7~=XAjCOEJa__`~R>k}0!{~khEv0^kar+dFXYqScno=8IZ;Drgcp;VOrYzqU zZu(Q^n8s;yEdGLo6O(sJC`JEwxE3wTU_pgrEKqa4c3)hFY75^MZ5Xv&lUDntg14J0 zU+a^dw%=37g6>7Yi+@P3eG=5rZe)i(?dA66-P2~!=~&RZYE&``Fno7XoG!|sqE-{o zzR`MP^sX!(mS3KVmou)K3^i0@T89e)b0YyqN`JTmfp}-q2lc`KMVi8t8UgPXvt>?m z5d=%4^I%J#o7vY%7lBVx->8oCl>^f#JPS_a2->u=#?b1FLwA#2en-dm!2lHzXJu0F z98*7aTzhxr$7cJBxl7DMt(7Q3pQ(*%*!I*)rvIhnDhJEIxK46I&b7}Hm4VJRIWI#W z5}@8iHN+@Vb+9OgN~Uu+ z-#*Aw>it~Ng;%9j3TvALqf|?8k^f$4cRrJOvm1H7_Q$S`bpY+i1lCq4Y-5s16w($& z2stXNfO^$#Oe9LSn}-X5n4L~lDw|MlW2Ss6=-csj4mR7ztYxhjo}V}$q4eyc7c_B z=)h6S0J}OBM59xWw^yT!VAu9xO6(!=9AJyEY%je2KY&8@Q{c{c^iS{JpF`tzuV6d5D-jF%v*E zw^6^_%SX~O?V_TG@q;cHJA$E%YFd0b74=&_>-sPkl)CnOp>nWeD%4iFzU8{wpODrw zdyA~ld)0O7E>cy-`g5MnJ`St&Of*t?sK{76H@di4;VBXfSVW=s>Ky z(rqApH()O`3$bn$l@4F2fxll&HZSpi!%ucZM6NZ0t64r45DQ zr<1I0rxPpmy~FBIc8~WvB@`}&#ee79X5=*b?U*ps8n2X@PTx-pQ zk#j3XVcBP7t)LTEPmm~#CDWPgOSL1_^Nt)dI~NHB%i!>KETs5fhK_lk&k_1KNOkR9 zzs|Jb@C&+moxhNCA{CQJ} z8qrFSMYtU_#6Lak)4!P=kK8<9UmkHjxvIg_1+N!~gT_f?e2CDdqPc%c* za%xP@S&ncSF-++13#$lU6kz_r;_T9BK;zlVl5Rgz*tK z&7-yXge`mAdY>1wsC8X;%Nua_xlcPf{~pN(iPXXtT0NB=Eqi%M9Si(l0PhA6`NA5{ z^Nml-28+Lc`S>`UK3-g0UEMi2_#>Y$6e?r(dySK`y+r&^MY6tkW`!^_GZJ)>{{CRF zkGc5Iu0fk80002MhC3U(ov5l}-&Yi+SNyU1D{(CTjb=4l%^?!b;hCCJk}JUyFWu0L zzd7RXpc8*vwEEl{u9T2T;?HZ=SXmL-`1JNF>0^xeJC_%+?_=J)USBVj&T7eItz595 z`D5{qxlV&!(f<`QLjDn{_V)#YF~;6c&h}2il@0&^0AK?h`bX6SHGf*`e>w11ys{jR z78~d7c5@%Qzr;zB#8muic^G8rWB`l5$3*cDJb7*l2N{?uBV<;QzeS2`iTE2>=NS$= z7Z28})#_QUTFqrLCj%5!@OD00013 z5xMh^`bCE}`*@Wr@mJ`FEGvqvDvd_#yuFXbUz6Cm5=!#fi7EK;>%?sFe{T=*zcrT6 z@`5Si&+%nToMMj{A^xe}GSATJdL~0tfjmYK1fEX{$bNyoZjC>w@4?1TbiWUKf6(R9 zy{YSa%e%1n2j?K-4*&oFu;k80{UUlu7xohIk9N%;dp~&(5RWGkj~_SM630st%OR}_ zR*3ljxp6bbW=Ze2VDVqrggc`E0000}#!r?mI){e|y2tl=;E&B;mPxaJJYH1W)f^|V zO!*^8D?vTAULHPw?+JkT|1iUqvKbM7x-FoVx5~udN5ubnzb;epPlc9u4zd~2{M)@s z2!v#ktJyB=Gki1~T)3I=GhEX9^{HO+wPNDz+9X`)00000w%l8~_|J{_cgt%%&oY-2{~qzTU&w#5LNoq-F7aziXFcyHUrlsD#2)|v0ASDkdgm~%T!}v&_*3&I z?LLa4s%oRr&Si2rfk%jEa>`eevesxg|C@`yX%m09!{d2plZpSp{Delt-{7D>R$!jb zPFNwMZH)N){LWM=91exPEWXKQ=#kzY@#m9C!G3%ChSp}q;8$Uv8&zjp>2vB5W1Dc5 z1ONa4m@~ey+lkYRe@~-lx7Cw~e?orTXjYr;W-f;~Nz-^16MwF3iK4^5Gn230IUbl~ z{%()Q{qB`L#D91Si$8r5^2Ulk&nGpDi2rU^{6oyd-{-^PkF`G>PA{(>oROL&s{2&@ z`R>GDut=v7Lq@Uq$NrD_vnF^dF08?QQ2+n{fV~%-EL|LW6{Sb~ul-+ERW&X*&d(c4 zYrl%uPEFKiu23?&yD!gUY{f?+b*awy15VwnkD|O*lY!+BLDyZfB`CW zzut*nia%-gxzc`G>zPQXWbQ9})mEEUcW{!xVB}w$sEiGR`s-i-i@(FfiT{gNFYWPj z8>*Bu8S*SP`iw71O67SAxNqcS_pOhVZZZ`AloM-z`grwVUqcyQ`m^}s4@p31!frv8 zfid&MAAghJ+!S0P0RR911H@o_Ff9xId(l6YjW_#;x}Z;6@hN&T%ajLn~2#@~m(SSY;n z@!%{+4l{f`@#h6B{x$m@;Gdcc#>|=blN$e7NcsQ(0071~Mlsn)}zrw_~&|7XA0MEoPe^Ap(&X`45CbFWp-w|-v2 z;vZ%y{!U*yo&LDKeue}deJlQgrt!#r$9N(~b6ChvPfbbsVDUd1hpQX_003YFC-sh+ zh$>z$-QpYV$@t4EHvg!is95|P&E|QlT}6oJkbu1g{Z;?xd4zIWZ30IAdid$-6Z6F1 zef!xXyCk*;rt&oo8D8d(#b2^UqvhwNJzv=AW4OR875Z|#^SYYJNTlcYyW($+DpR&k zoXV`|GDrN$MqpUm3jhEB7(?V<{lChU`1khuQ1Mq2bl@)+8?8pM*xJwVS}rG{41NP3 z{N=@72xWv4jQsWd(jNZ&-fg1zKedhcljFTSN#YnT{(LQO1$q1T(q78RQv6dXUuYG3 zKbCwXTx&mt)_L+tPMeswT?hT}+No$jap(8VAJ+B)z>o1ihM#faenfqA00000NkvXX Hu0mjfbZ9R! literal 0 HcmV?d00001 diff --git a/public/assets/images/dashboard/year-in-review/fourth-frame-clock.png b/public/assets/images/dashboard/year-in-review/fourth-frame-clock.png new file mode 100644 index 0000000000000000000000000000000000000000..b81f754b5f4e952339b5f25809b8e1db261b5ded GIT binary patch literal 20993 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 A+yDRo literal 0 HcmV?d00001 diff --git a/public/assets/images/dashboard/year-in-review/second-frame-cloud-icon.png b/public/assets/images/dashboard/year-in-review/second-frame-cloud-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a422a8c00a276293fb27e6eea8e709bb9e20912b GIT binary patch literal 50817 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%0ATJU*}^{)#4?TiCEdww&X(! z$J<+V{>o3MqP|#8rbj2av?utrh$M}veu_LlR>!J-IVHJ3&7QQi5JTeL|M@PC$61pa|d+T2=klcFeoPD9x9s%}fCqQ_WI+9Gf^JooyXpN{!CuRR4B4rm{kww<#? zQe5k*s_MG##zt}x$C*+u-5SnXXH56J-7hc8v@AWxd8X8-_`};WQ@TfQ1eelkRtkn? zJ^6~g=~$_y3EEm^NR?Kg$x!k>cR}=iSldZSrC29WtWRTUUuRrIMnvM(G#s`1By2XD zd8Re>u5D*K1bsr0U#zo_EL*NnvrTTy;~fA10000000000000000000000000006*0 Z^cTGM{aFpzHL3sr002ovPDHLkV1kmP5#j&< literal 0 HcmV?d00001 diff --git a/public/assets/images/dashboard/year-in-review/third-frame-coffee.png b/public/assets/images/dashboard/year-in-review/third-frame-coffee.png new file mode 100644 index 0000000000000000000000000000000000000000..c54fb302f32f833bc723abac63ec7f94f220baa3 GIT binary patch literal 135450 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 z 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�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

3UAFn4Gp~I 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 z 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%0AXI~Q5l{ZWJ z#cXW#`ou&s=nJ|jvFFdYznL~oU29~GYaX#4-?U(6f}XfUV@ANZG~W>6Oe%xJF8>s- z#xeMLPyLq_ld2YvNjx?&ljkWstN8&g!sZ{GS09G5JW5lFv!(X7x&Pxo7?`@UE1?S( URK6&jn%+-eaCCQ|*@Y1P0fO8aNdN!< literal 0 HcmV?d00001 diff --git a/public/assets/images/dashboard/year-in-review/year-in-review-sidebar.png b/public/assets/images/dashboard/year-in-review/year-in-review-sidebar.png new file mode 100644 index 0000000000000000000000000000000000000000..e087e15d9ebd930a3d358fffee6fe0e79927ab69 GIT binary patch literal 114977 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

rG zT?y^F{liPMG0mDG^;$&&CLG}qC@%*C0W1E!-oAF0jDW_ zIt&Wf(}hB?bJ^4v+Z&mWJ5`2Q3fb1Ki~cZMiCNBxH9gznlyOM^nhzp=nOkdb5=;Vn zu6Sb=dlAF}e%Km_y-yjDU?s4VA(VJ>F(RE$!|I zvN5iE+3e|G4)FY$Rz8R0zM%_^HFmS}r!8oA&ajE;`f@Ypl z%M>GT5k0dhjtTWTll2@J@t9v zM_M+~O1;;tfBBXFA9M-E=%W!9Rm*>pb1BYl3l(D!*P z0))vdRy(gz;&d(^$_gVKjx6CtDH#9z5Osw@pdd!{Tl}QWP9dM|-ey8zYm_QhnlH&U zHE%IfB!&nlbCd{Lve%*YWzoi;jv=ci@cuom!Dr!WN3%brB_qm^_qSqO5ivuD z#mc}RAe6JI-R7q? zl_}_F_<5%-q5t?W#H)K*hMTW;qz3)RQO27v9d2nuoSrZF+14%7+URi_cT;9{q!#Z3$HFXi3<+3(4be2%9)V+#02i1 za7t8YHWtuLpWQ!SJ>@d4*LaM~d}nY*XNmqOU68%8Vt}@5iJ_O}H#9xfieu*jg-Hyn z(KCvdD9%@{`7GHu=jsI~!&GHU2q85skMVG8o)n?1+}r$LgS=LaDL{9wJad3Gu*WE_ zy7{W8+mIsQaY)bzd!GME{Y_Op2uc=PYqa`>xWnc4DNz z`@uZ>kd|=uVR}d)ujEDe;)p-h^*N7Zn#>45(v$1phZ=})kFSaK_a5WP&Q{&f=^~nY zY%bBUamGpQ!tSYm2l$^_&{gs`CBK_Qs;2Xju0Qgb^!|~C63z8N1u*Aq^tT|j3TY!Z zP04FDd-DJ&Rq4!|t9IYOOpMqYbwcT#WZZbqzTQOZLE{(3j*@29{u2-NPx3Z($xW4L z7AV2#uOXJT^3~gA!G5bZSR3SuLmx!5PR_o4R~Vw0Kh#kbmH)ay^Eq4m=X2?ECv)DuT1~td|GirTGv}$V~>E4!tXyrLeXG0nzE^pDBAZ2>kd`b3H?Z{jzhc+sTQDtc6C3U zxwXDWjuODkBGzmXOYJ`zAO}JTtQ@}`pTDTH%jxEz) zzt#mm2MdSQ8#Uu28mp5Kcs>*MC)u5T9^S8

Z%hl6lqw?bhm5Chy_Gzb1yx`VGSI z^igB{HDbn|3A~FrgKV3u!~3Gax8D~zsq+4w_hZ7uNMtA&2BBMngA7UJ6$A-Zp4=tM z&fIlFAp{cU*ZtQ+m%(-YXQrMzbY#49%1B{A3lNL}Hq&osyUQnm`Lz2WRWG$V!Rb9c zz+O3(&F3(TjH3IWW$5n7Nv64ZPpD?<-DJfd!_Vt;ML5`iMfT`bQ3|+9Azj%YGOE8I)IvZ}uYMeq(IiWQq^7l^elO?!%>7Z_ zc|P*m+Wf&l=U;9`q__ofo+c_yjUionr`Mg`Dj%CI`?%kICfU40tg5s>Zk>Re)@3Cq zK6O>L4vk-^v`?FG=y%YL(Y*<1pPNwlu4P6~0yMRHvlBO0w=&07etd30$*BD1qGaAJ zV?n`k5i>;=g+{Zc%{zF-O@IOmL+8y!BJn~^lAISh6#32n`}J+-5evivREf%WIQZY2 ND}y!U>trp${|BdOS3v*( literal 0 HcmV?d00001 diff --git a/public/audio/dashboard/drumroll.mp3 b/public/audio/dashboard/drumroll.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5284a9d57072867d10011837848cf58334f7fbd6 GIT binary patch literal 176378 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

~O#}SgP@qId9I7LlO)li?A}IY2 zL#+V3O{dxUJezYrx1dl2o0FYinVjDml3-lm__|3K%Ub}dW?hMg#|niFBH_9;csRH? zo#JY6ExadkAR#{Zn^78KhhSu-V3b`Hel+W*;5I}_J`KCV$S{`IZ_ts) zDKMlE0SZwzmT`C3g*>7^szDXdW+zFgM$EiYYV#dYbc zJ!S^|Rm*CY|F`a@Q>~Y4cwZYOpUmI=m0R#u{ovc#^z$#xH0$1otJODbLI5EWb1Nw~ z4U<$v3kAo*7_!?~V-y(J6D@15|An8Yp`Y8 zSbXm1mMlF6#bmnnHst9iXhUV2F2dZvbae2PHX1v9hgim~oMkmQq*Qa+S3f?FJP{2y z!&?*}?Pk-#S%SBX;HZ@O2)mN8y@P5A>H=^8)<*CQkPk^QzQ7TsE}RPD5Hk?h*$5HC z!irVvM)hD3L{&FHev2Y1y(%;-O$;DiDh^pS>7Nv^)1xEs4Ds`o(AKsQH8{nY<4HG2o#4y;{?HbpYzSAFUX=^8m`2EjZG{`3bzJ=DS-r&6oj}yVqIKTG87k_3W$dn z4He_wP&C057rHfyb+;dDc*sZKS`q{CacF}>zOyj?v@|&dG}85{AY%p9o9DUC}l=@LEE%aaq2k} zx1GO7Xr>S>u@b~=u2cR&C+=QCy*usKtNV_J`3J>0u7a%oats=D&ONc^$RX>xC|-)Z zVo8(|1uCAr*ojL4uFC)i;b@mw*P+Pe`nOE6@t>CCYhL^K?HS{_{gCn!Q+Jhhi&#?#B0C#)mzo>%M=c;=uRR?>R$*X7s7mJC8Fa z;@WZ%ZJu=WJEb1%>o7h3O7vQ{fU(xy#a%kc^=hk8?MDgVhW<`luj~jMQ9FDxbN0=Dn%4ZM!TUPp8RJ&k`f4 zUOKX?&7vnD?q1bmipY?<5q!0_%~QgyXIcv;V?)MzAN%T~u4HCm8D^$$+Ud}{JC`BR zAGO6L8J`iZNYES{r%HDZw1OM#`VUs}xphuoe(Xu_ZFfFUq;{9NP&!%sSSv*<#Qw+l z^5N2<`TdHKg~qMm&4aLptWrRGbb68T1CapZbTC=z2SEY_?rFy7q=0|RkQW|4p3@9N zm(96SA|c8TNzYpbMs?6#9$I4QaZv@aHB;#YZnr;u4wj&A>Gh z4Qq?{h|vnFZ4ntx`--Kg^dYk9lEC}v3B^05zMj_dpO;Ik9(NG{Ni9l&lK8(YLkif_ ztX2XLzyxAH0={KRr3gr%j2|dbHO&IPf%XTjQZw)r10-X96X5RKKd{Ifdrw*pxD5A0 zRp9BlwpiAsIv;42Bf&aEiLHfrc{ZjJ(_-i>z2C5iYBOa?JALQCCyiEzh!yHdw9?>Q zCOb|(NLYgQd&VL)9o~Lk zX7O4|JEJUS2GZiIZ9DC!yFISNWCVMcfwxJdz^I|0E$eUglDG+9Rs6cP!4dh-ih+?y z1_1e2LseH^vj$?n8D1eW$f>iB|3bQ$d4C2b*nxzY1WGH&byQ1&e^q~|fCd6jxU^|w zYR;zEE3=$j{VFh|$$jDztAIZ&DFSwC7UOHD^`lcMFCYE4aPRT+;@#YBU4zyy!iRkC z;?e2#ET+F;)|cn(`+uK3w5R;VSUnJ=@4#WQ@SU#$ZMi~!l2;USChfr1y86~~BDTyB zOSx^^DeCk(06zN>0*{Ju3q*~MD7Pkra@7}F&obEj7a=YkOOK|CPL6sL5?!4cfAeMf zscP|;r;taF?D}^&6vruKb@yx$E&kUAWdOFxnPgH7>o(B;wxLPg3ui48js%Pio$Vs+{ zq3L1Zla{)~D83*m{xJuOzifDF(JEW(6QHrCzK78p%iE0*ea1e?+9SvPe;BI9;~aC+ zXXp;ta!xYG&=h1DNy=1p_74a4VKpLIdEyM!UHkUk358bIEWJs%ioR$YT>|z=E&z)D z2_0@BiOc!@ryKr*VS+B_()+(b_7C6zDnHTCf zOyQe(QA1}q&-I8utC8O5Gc@B+>{~kZXVZ>oQJ%#a3)?517S9kb`GsaXPOh^x$14IW zjjP?!t_Qfxzlq!~j9m_68w0$c<7z%ngQ<7NO?zqeo&7}hJvRi6=3zwPgzme(iyI*- z!<>N|k7Al<3&th?N z%i6HD%#2HYg0PGCoH@PHVLAD*)jO9E+t0?cRU?V1_+-mzm*V(_8 zYJKcwpV(X_OVbhs(X8$ksC4(d7CP1yN~}wm2xk&?Q*{NJfW5zVBF7SKO`$~GZ5AN$i6sOv*3ImW1J)?MPw_K zoIIrQEG-jbc@iy#3JuF%M`m!+%*fY5mOL#YYbU4_^m0sn({ia;2~Tx0jkV#;zpdj9N3y9czP_!d2tlb!o=$_ysaI-whPsH4 z!7hiuA12)OAXj5oA~$rit;1!sExz=d8BDJC2CLiB%X-ApeJtd!CRi14~7o!c}y?($MswEXCN;rn_Y+dZ@v;wtN9=O8>{ zS%33esy=bUx<%xL!s;ekDUugcOi}ND`w%@xyA132f9SdDb>Bv3xC)y6UKe@eVbuP@ z{!eodW7K&?J3o5(sm8UIwsA#XuKJ;qwNrhsHwJ&a zbW_2^%y~(~=bSr}dS*&>wDUj}220L*JiNb53Vbv!QWGE@+O zH$fY@kFmAr?CrMsICoLq^CEViAGxsR6`VHfQ-u6J$abhg*tx+_?V3w>W#d<0{QJI= z$0>_e|0(bHusgUcj~t}-?blq|OZK_u@4x(o#>5K2s~i-xjfAi;1kYO!5rrkMzXepV zX0?Wa)Cdf4$gwHFO42?G{h5SFZ4JsdQ!MO+)!DI$iGzt6m0dHD4D9d(TxgG3MDSw9 z6R5L?3&Dijv?)nwf;r5zOrtp2<(gjM)5e*N)7P|9A0 zoDb#vVouqchUW(!!&Z)$hDUYwSjkVl^DU2g(f^qnxk?|OZ5Ci+7y!sKXci$AZe^CH zhV%>$Wi_W8^cs+617$pn#L41H4?zGbzfGKaGJ;{8VFwzCX%%4xGnY!L&tJ>)@W$$h zMY2ImIJq%B%1o~7^ku3=X}&}n#Izlxrg^@w(S*3~HTLZMl>vSC4F`dD``zs@+l3bB z^?sP7>~D`kPym%`BO);#^CPeT5oXzRJe(1QH4zYkVNdxwNNA&1vaT&80w@s!k%kN= z$R|K(Arp}-vA-Wd6r)O_(jG%F{{B&bM=0?az36j#hJvmyN`=2AO8#N!5&-hB*ZtrF z#g29T!-E-u=S7kycyortLA7$d#|&fjq{qt3tzoE+h-g5)p{uB%r|2qTh0My2QvhOz z9q=;1EDZ4UtVBNUSO%1JV0{_^F&5V1#p_a3JR*Vsl6N9Zrxu|w8-ty#Fi>huUdDti z*c63>t)EGT507Xi0P;hv^$URvG#4+}TW}(g_61BhKq5Nmb~+^)RdQT8qdEc98qi5u z`vU@&njp`XPQ0^Y5>NV0f^W;+@GB|`sWhofT)14)W{x$WCYyI04AP}})4=MH5D}k3 zQiWE905agH849^-iHJl{{{-MDkp@eP9MLJx3jyM5&=O)J_$_vFx!+Q1otUoLQ)6-A z$(fV)M9RB-smf~B=0;R4xu>Zz@Q(7aH0yIMbfnm7ms`mB7GB}>cpZGNW~jaEVcb*y zO0U9TKmb;Vqq?(FN9Vq0%QExo)~ z_9~wtR`Y$nkM6gLI0q*SX!2!RChn7s9sAVnNPB}w=?t|;LK|{&{08qmtY~y}*-7(|bZhC;Z{z z5()UXLHkGJ!F)us#WT$md({%sCOQM*uSx=2$+w;$PHnVDemQGZ%tj)A!AW~OWHBeZL<@F;GZFZ1?b)-_73w?G9OkxPfM(lCtae-O_168-s8f8L< zI!~$GC2~f?h2w|>Xw2_Ts6!d@jExT zCf0LFT(!)E{U-cx;LGip%_XL6i@Tf6+hy)o4?alDBf!GtMr2eq7Uirb&CRVtCOa@0 z#*$sz&yEQDj9}o(bi+qXE2!kTN9*Fmn<~7DJtOYLX#rm=jtZC4%z`H!Z}Ppg1BDum zsyS+pU&d6<)8y-$b(EG}Uh3<86(*`blXkKC@%M>$<7RJrvF>*!uGRLxeJZt3pl0Wg zoR(ekRVZ2-OB>nGCP8Mdu9e2F>-ZzlnYc%-?mJEl3E!CY+YGhsH0x5s+G=q#slnfc zY{oA>a#nBDE1Ev9{gsueNtxB$*hk85D`x)l?W8+;)Ht9>)_U%{zRI6`#`Y*vA2COt zyB*CleCjVK=%3xzzV! zY^!rMyCwlZg;s7c2_yiq!QpmI%4dG+U+?9rTp*UTk6YF`+0ySU>TUbi6NI^snPNCZ zsQ9ll_xW28n+RRV^pGhy8stQUBzUkPIREOHMaTs*BDiakoyPOxa(G);TM5x7u{&1U zX<4=PGst#E*A#BF5{&O=Nv~h?pKiaS8|=Q0Uwvd&*W`zN9V0AGe)*r#PlajAz6`ai zg+KW{>&*{U*I^gm&I{^YEo6R`-N}Z!-#K(%xTeCyrbU+6r`uhY{X0rmMXEX;yIB1V z8tgdJ^ypf?blXz`z(xQptOm}kJKDjb2V8~u#2JVkHK`mM+wHc|N;5hL6)B7sj2nfI zT|C!x-fxdLEVo_q1tvK|bcw3LCKmSu7rg0Zw2wqYEGi^0V7b#>;q`IQpH65^Zc$}8 zOp-f}GK<3QBqT6^d!?+hYrJDMrrqZ%mGZH;}s5It0m&Pl#;?d{l|8Hdu@$@LTSb5PR#hxx+BUZ8ej`P5{WWx&X{<~l$jVQo44LO68p`%; zuhilxxpO*d0=;~Cc2k3;`$5mVF^blmiOXVy;#H~c&q7s|&DMk2FL6Tt>*kN%laC7T z4e1~HjZd?=Jf;mh-nk4Y*C{eT9xM#b`i*Aw1OalQ3ZL@ zB754Jhru&%D<6=}f0&nE)N9#4*g$ZGaRw&0OIX#~AQwAQ8=Ub`O-(*u6Ym`UjD>?w zn0!TTBqW4038jG&qlj5;SO`3mNg3d#jO$uZTj^q5$A9Y(3xELMcEQ*O3W%=@Dx4|? zSaX-C|0``T7dpRcO9P~xe&eYIgNwI`fi#07nrg*h+Ji*6_}K#g6Re z6UsARLd<~*^eb~LBDrCn{P1@dOc(2M4lLj7JI=HBj^3v-3QjJ}&V{m*EqLPvI!bWo zK3%$re*XP~z?v=U@7Fi&b>;2thR+2R0PYWWn#g!K00zL~Dh1$D?H!1p_-$zc#HDq` z10;skE4p`j1=_+Z%5wFU6w32iaM| z$bgi8cXRS3Z-QZ7>KXq5qEtv;tCSC_@ZoS+B&+Zw0$6o{*cs8s=hpGEgYr;?KrBES zGQJ-PAJ7F53)U+=qcxz^id8C{iYR=XFWQ+ntZmzPlGw8N<+}Hopo4^-cn?89A@FC` zp!KVugSEWuzfzB5S*qQSJizk{8rSySiwLtA; zKP9J+De~#wYCF}R_1GS-rSv~GPj_b4fArq|w~}+x_)_~eOd~IB^Sd{lqYkzi&oe3B z(J%ZF6z}4*{PUxHj8IbXV^pEVc>hRvxLS5jhK#DHA8^!fCDbr!Ea<>1$z=s5kAmYy zVvn|2Zvl&Opd&sy_{5N-P8&d!4j7>0GB~*4CH4468TzOzh2fT`;!xFg!XvQsDZG-%cfCsKCAueAesYa&fjKkbF{EJf!qAW zPut2=5W2A0dDY91P!d2U>8lH+rGY@=<6q}8=Lxei*YfijuKB(QryEf_sH{kH;)P`v zlzvgS`)?)>Oau*4G%saU1SysvuKrGMyKS@^zrOpTW}3u}qgP7zF4v$x^dwC?>SxE^ z@69-X6JmrFAvasCpEqhxKc}u$UEE~(n1!~w!jQCDzw{eId(R_f%g#!%TncywARk%N#(Uct)<^(ucKuAPskhpz%2!)u>c z(^4{1Pg0(~e^uD=p1CKEB;?}U2`v4oegs8Z5f2atd)E9o4s-IGv(8+vhcg0jIP|>a z;d5W3r&2b=~Y?8dy{EjwS3oz&9(P&VOOaQ`#sXeeQhuQS9RMHrx@D?&hUM;rDtdlWB;ENBIH1I3 zK|t{5g^~7D#i+bHUcYD**GnNHUA@>0dPWv_P{F{xH7qIOKA40e?OT`)t+CCCI_2Yv z4s64Bp{#P<4Mug%o`dyb;EoCkzd&z(wO!|xK+BHf@ndvsNfmdgQz1_-*X*K-zPY(V zFbz!0naGo+42Vf$v=3-d@S}w~F7}ABZC!)PkuKL15x(XLe~%3#3W8ZXA@Pj1pIy7Z z7UQ#8YM1@>cBA74%Go3~HO0L77pt1`9?k#AvKbXm?3?vLuuK#8m)2v~;w?r8VV2d_ zFvejDQrLY3CZWvY!bt*;dV0osqeh!)9oPuVG+816fzk4ET=YP^y?(vO95568Yv>#~ zA3J^Az&akj<;ai{)Dyx&oSU)8Z|>8{n-@ID>U=@U`zybpJ85^w&UKw* zVWsvxm-dV>E}yYqj?!E}Dr=PVh@Q^ffCkR~$Uh7{#lwH&^bA9nJAXwGl!AygWUMcf z{(k&qV1*qc!6R{IwMg3&fU8;1Es^eaHcKmYyEZS>Jbw;feoX1@FS0$TJE+?(L8qOR zP;ltx>fX|or>;6V$@9g1u~j&E{Wi9wFT(NX#;MvuEqk*#x$U{C>-CtCk%(PD ze`P?rHES4tb{6*8F+}2>&a0JI#xXh@J_#Ecgamt}4t}>GKogu^{=L zv%{;ihoH63Aurg{l%@tO;_HrSl`>vPLhe(%7rxNSG#H*bel$wmfdC8$2vtM~t1OBg z{9t&kFOka3WveV~yew%Rw!jaJc}qJ8BTdSeSeaUNaHW8c=tsi$*2v zROl#EQ*-mhRQv`LCU-T(-7_X@7?&2O^tsUYnN2Db<-fSo?lFE*Y2+8z_Qe@tQ9j=e z3$Jn7bSpXG+;5Q0__U``1DGHNs<8-FR1h2$i=J_0awMn>*po<~+8E*`=qt$5yqe{H zo}Z**d&<$4_MVamvFh00Kk&s>D4#9-$j+9S$crTP9$nb}hap!a$j@2d02R37K|&vjh!JJ{ zP^Q-)lRD5VSabA~`lwyfihV7nCT@rK6nt$T)Vrrkiw9(Z+0p#M8B}385b$*Kl9(<1 zsJZyxW$ov|gLeZFzlFyh`Z2`QcnmX}GJw1&BYV|-XL3`37Mda3K%2Oh0}06b9s+7zVM^zh~j`Yk3G)e@Op;PmW7^EU~M#RQUz&P`Qs||C*K>b zrMcQvPtaFZxMARHT3Deg@Lb}2 zb|yTF{>3NcpDYirl?y)fj^5S(n0>fEdMT-~A2gG&${rKdjOC^0O-uxiO|1B0D(P(g zujZx`5wS}aFH~tYuL}C9ir-2Hn176n0$`Vs44s3p8ELy?Nh52g#Q{D2Xqu*0HgDGx zB_6~Kt7~uZ_mgUo9L9`vzhrwH4r|x!P1hepa5Em^hoNck$&1US4vLL>(^d)FN!;x) z+aIU1q%Bp`g=qd1<%^@h<;3vLOtg`3Af5i$glb$4v%H?*)s3TKjZu zpmXMF+wrA5pVv}DBdyL8JILpvr!HsR?QSOU`1L~fFDxx0&4{bPkvEnjWrtr8#)9Sf z^(-s%RivgemZ1co!L7Z$6<`{Yv25bp^RvJ3#XYLjP${q%Ur^q!<13J zMDd?|2whg|9Lo}L?(HO(V<0aSe(8dK0Daom4$C(B{;5?@`RF($)dywr>EjQ~2x4dU zXGLH9u!KhFw5m5ML*mgNi}3+SB2=4PI^$8IG#cKSXUIg6EKWBoJ?yE>q(wp4FE{)9 zCSU^=u1D1g=OyjT5VT=#hFZXzi0!qC9Zu#aWcOw3r(o)UpnQwDjbZ2R>}mH!jkg{| zW7E)6eSM7#Yp{lj45?CuO`sBa&EhAPh;LdQrg1hZy;(0T3o-_Ll(WOwlT2TrbDmjn zD%KPzmZh{OkTuE|AFzhLCg?4V3(J^5#O!^*PO)cw$hW!vYV1E3%cm?L3}YS)J2U3v zV2XFiN>!et%TMR?(w%8}^YPox;6TCISHLl%_VO*S=UXlOew<46#w<=JT=@JZBicqH zKleHL-xZ78168r5haW%tL_2EVri{G}Idh^GQjqfd5fq$NSoEG$Aw@Nr*ZK=N83q0B zDeNyEQvpV9;>Bo7=2w~GeDfKhNKHKJWdhx}iSmQ8+dc_hc=x-Rx`*U~HN^-3#l$tg zk^meO3*X^lrYFuNpQNDzd?dxv)Ainv_cYFj0tlmP1Gg6ylV5uvc&(|9A~*IlvPoSC85 z;-wB%z7UH`ozngVA(BLrV&WNC#mgc%c7jRx?Iw#XAJmXW#o>af^d3n_p5r#@%>8U< z)^8r+52bc;>Xir~4G?eI>t-IXK=$4Cm04~xG&lOd!4%t0fK^2HZ-}{~khOz2a%-YP zHpoQwI{Z&@j;2c0dT5Ob~b7?{MC+p&m6?uHh`=6ikA)> zpK@<#(C`J#P+KGyIe;hxF?p`Acj2u&`%|~lcnPx(&Df3O;WOLK8*~Qh`X_0GS`WEd z%D>fYKqL+9upR%(Bqk3c;)yD3JrBv+66c`F3Cm0w zOfPS;D|RL`k;Ij&X5u}WQ@aWa@h+DQo~uW>-dnanq}jRVy`;+y-VNC%t7O7YD}ZSl zW`bd*yZ$DvTLb9uK|d(Z94P0wJ@F*)6A>RBALOV@N%+1uE;i%EI|i3N==JTllbaNv zl*SU<7>$defaz>rKQnR8slo112M4N$PUypx#gOcAOf2~$YA~jgWQocQ3G-lS!)8=| zAca|W_e}tzROkMVJrwg;jv$#L{ITRC5gliB0h>@X^x9U-*dl|>qQ`eFD1QrI)Fsp^ zD7e26entF;eU>XIrl;T=Ima7DvlJ>~;vZ}rlDwbjX$kAha8Q%bWPlj&Y9z~Ra|7kW zPzIsSk}q(axdaMTQ|vGXs;vY=)%p`2OJOezaPzcKk`)y8!j;Ni8`a?z`oqOqr%SB{ zzo1-WI(Rty15YVko6IH6CVVC{NOyccxd&I5caOlSxo$^m|8&(|6 zv9e?F)_NbaxsR1&oBE5rU;kP2rpu#gWmQ+*uXyvV$39qjB__Mv=W< zHIKfJqXB1@gpE$4R@dzb8d!kF;Nzg`*A8606+XrUmFS_d!J?pODtcEQVE0o`K;4MZ zf_akh%sE_DW1w5Rg@LFbhC#zaN$0n;DOO2ZjfL`%VUVn$@F z5N%z`7uJg;1(9Q|<0AQho)!{FX*?akIt~a+sh7!ZIH)aiba!O5`q%*0J1A0(K-bN! z@Oan_m@oFe9nk!^5zatN>)HoLgwq;^`qrN(gjt{!o$REGW;A8!36lLm1Rd=R{0sk< zp*tK!F}rDT414Gm$Jld6tN_NuB4G{3qrN9i4za~?zAUi%&8jc@-NcNK9FK(9BaKl( zxg?-$__k-&KG&xIGtQw0QZo~f2mN^)%hk%s`cHVn*iO_!i>WYQuw9M$dAo%{v_JDz*f$J|rgbQ9mc78k` zYSi9*UhOJ!&hkFXCCk*GRU++8<2GaK3S44f%hqWMB7+1PHLFZu*h-Ry4msskn<#Sn zKCa#-)hZWpRvg(=sRd$JW2$uHbYbwMmHu*UG)1`^J8G8P&WbNCN&MxhK0V`7{i#FC zxH`S{ms5^H(%~U^@;9T|c~XTc1zlU0cB@3SW>URv71^|nNpjpJRR?BVu2*u4IJzrJ z2nT}@dRk+St>v^p3P~*BN1}R@T|&XR1c1`*AdZeHyBH}a21yf#h#0&A(o}WvI6McoPG*cc`71=|*Z6$CgRkp2AvXnH^wIj|NW%vI_--5fsqshc&v z`QqWxfX#1`Z7Y=ru^Vdn>$iM1C#f0Zxm|@ExzQec$+@ z_A8Co{*#Jv8WzIFlzEfJ->*npX~<-fjIH&m#-zW}=I=Cp4t^NDNQO&ru`<~pc@bTe$lWs%I_i4`fNMAm?0Y?(j$DM*REJK2_;m#Qs zp}j$9v3Lpxkr0SKTCv}PQk59BtjH8Y9-`P6LmEQ@>WKhM-bVChp%oQqg{|I~{)?eY z0A8fS)Q%4VkQk*b`CbBm+$0gim_A^E`F>Oho&cFR1Qjhd?Sx=Xm4Kz*OmZ6l--&>! zu|QEjr2x2)>W5!aZcr+KsgQJw5RV_Q2xmY5;7KVA zrihY<0xVG5QaC*Psp~<%>G_aS_ym8{`j#n+`_ZGaIA9a8CoFZE1;E%)?gIxtD`&1;1l@W|w)5)u@Xx#o7BV9|Tc z7tCpnL?0hKt^$}OZT2Ys0@YSdhhhat=kshnmj7ySMlXLoaqcBW+(crP_S-HP9stt| z5o(d1PZX>k#@KrQ z6w_q*-*xw|5IXf7%D}RL!u{!;VB-CU~{n4w63E5wzpmWP7-$g5qXJYk7N$P&}Vf7~eFzjC8vD(ZZAcX(Bt z5l?&`t@bmJdQrmgk-+M8XjSS#K*4@pE5TB_@u@TQ-Mg(Nu(MgxL#C7a>)40Q)o;4q zCV{{JaS`D%g5r%J$QamVS9&#d!${my{ijX@!iK}SehYR9}Czx)Gw>!Xwi#* zs1rPvMIGFjx%j1cO{w(w$l`MK;Q9;Wi@Hizd1koE&3%o`3;+MlvKs?&{l^O7XL*NZ z@BTYfd(&L|Db{!lL!lT!1i`>SAi8G;A!yOE@-e;^c4mQZGd705F@D07<0}XO>Now> zngQXe#eTI{qXV(swrB6KwVR#dVqBieKMl}K_adHSZT(nnb#e9nrOHIAj4@uS|8#5W zjOj30`Mt_%aQxzPH=g(W@?hnM^-1dWx5WFMhndo7YBUDoHeq3@6i56$syDMK%f6S? zLZ28OgbD-nSwx11DsQ8xxlcmL2*_gb0R0G-#hHTC>uLQZ<6MfQx583pHsZ$zV>{#z zc~){$U4u%gY2&iYK!fitJJe4)8{VVD1E04zIZ*0R#u|G!2A1$EEmtMmQ#aK>TAaOv z`AZtvl2&WmzVT}6=%t(mc4UTo1Y2qzIZWNuUWLDo(~tJFPRh<)>UucswRF6pa^01y zrnyjC-K_Sz#V54$T>Flqp>OHI@z*q!OCcvS4YdHq(M-Aaj$d6E9$Z&4>}vjGmbh(G)Nkum!|}aN;tBLqZ&+VOaBe zk7WQ-a9vHJ^pa;0DW4+EKYyIrKXjX+E^t(e8T^_?#N}78Eb}{Us@a!l-8o+1(c4Fy zbHaN9ZlZiN@k2~P<(84RAF&U~qf5-2Yi}QOjOl%*J?6)>yjH6Ger|QExm6#HC3a1$ zbkguLYmtpZ+&U?lHFzQdu0{x=L9`QXFqkL&Nz@Ps1V6Lwvy;HX*g|PvWS|pM!_wcQR5e{jdSjR%A}=h=86bGF z*b{!nuZ1lV2C(eHU$R2RFy6%Sl%Iu{ zN?>*4MI@7|n(ESIsZ3-AW_;d(sQDZESQPX&&Woe_zgg`+x7$zu|F1hrGyp+kUYg@+ zBK*!njt<4Q353iPF!i^Exkz1i9Iv7oe#qC8in`iV#zWKfrFY4s1RrZr#Pp2QwJPL{ zx#q#>PU6!zBrKEy`yO(xJ`||4FySvXqs()ZYi|) zo%rN3)Vk$=@b!1g@zCVo`-|U~160qeOeoxnUEG*C0QwnF92IPIj|I{xU>+to=?NE- zTOZ{vqPmTRu?St|5U2_KNKvYEm=%$tH59W*Sc#Hj#jz-#Y)uR=9 zv3dZ}QYNxRVr);)KE4^3vAItOZAS24H-d{4$*$#i*^63KsU=D!sn7YxHN*hg;NHUP zUL`%JH*NJ96i?=k5=(Q!3?n_W~<4@#Sb=9Pr#E@l^U<+c;FUnD-i zes`_%dZF^t?z8I;ljp5=iw9b(b`d)T;`dg3t1+}-^iP;;TSrAh^jt%R8J9Tk+JJLM>`pu@_sq(Uu*me3 zj$yj(1oQlFLP!)9PdU z06R(6R2_Sjc5I=wCk8y3HyOY7m{QuGzO#FswC|A8&6(aF_Qm$L|I*;$n{SPARRjQ5 zG{%qB?HTwBa3Jg*RMyYkjgJ0B0AJm)@2a3HZ92bKZA=oY;YR=Jj^3WPG#u7k!RuB_{-cg$?TICkRf>fHSkv z1cQT-d=`jiXoe8pdnb8X66Q{5)Le$xv2U()CI04|!D?1_d_(c57kg(~X9mc&-OYIv z{(5g;MsxmO4Do?+V=)Sinbs%XTv2Z<83N2HiZs-Bwt6cNj_0A7nt*2{C5(g~KYrw1 z_5s|fz?E#b@)Y8=lyUN$-KU-UQtb@_efjPTw9=+r(k20vB*Tp&gs@J+1+kUPl|Q`7 zK_Y2S+Yo@kuruF?DEwlxXWp&fUVR}-t`!I<3zqhJZ1ApDzY}?=i1beVlQg=4+-9ZQ zMlr#8RbM@O!-sSi@n7#NbvjNc_X#I8Z~g$H>cjv90AxYRf9GN%wK!F=WP$~rI21|g ze`sO3?Z2T}CSxl(n)k>pW7nHJsKU`;sE!jq;*YlDJH|eJVQ&T*ktX}Hvh(E}is*ZU zN1r)}1GVDANwwEC;3 zhlRZdB<1+o0=%_kqe&mO4AaZWN79i7Tb)B&(i!qor1PsHnNx%o3BY;yN^T-inr}%t zHvRor=?Tfgo=(4{0OU}~R4?dFt-a+FA-ljHO?qZ6KtrssM>cYZQ9H!W^)dtbL9a6B-uNv3v|tw`e@T4UJ-&$9Is^=M!GB%IJf zpD+&)VpBjJi{5Nw=Khl5?F}yL-OKyDNc7lkBi{SIX$7f|$^6cDM(-|+`SN~$zjI1^ zclqu<;^&XAzm#pA4Q=zzSBwUMo&Ic#o%hCQ%mz<&eD#(5lO1~>RlWO+j3m- z8ODaA{=pKB!S0C!RPH}XLgsu^M7f00e{Y{;oTr{`iD+wHDTh`Dq!X4prKKvoaGqAz z?Wb8PB->Ubh}%8>7ef|cTuu9#PK?_2%kRdbmb*MO_ysCzJCVIB)fML<_*bZ-Pu)kJ z@*IaMM=7e9T((#)Qt_m2<3lsSjO-epVACQao@wOXCAF6!5R8fL-DMe1EK*U;l=3L? zb$p1Y_JHTR!s9p(biz?}OtxUG6}@7e`ya*A9EK@gvw^S(lXSGQ6&tzijg3J4xF?VT<0u-c;0CgOU)tfMI9JTzQF%y(mJLaJsh{d1Ts zNc$ZcyO(zuE=F7mi2-M17xadQVkv4ZV2gtZ01bGSWNbjsy1}=RY6}YXQMMATCC|s} zK2!^yqxSfh$-pU1uT-GFI%yLVwaH^A!-pot{6#+mZ1gjs|Ip&>#b`u%z=EnQH@8#l zn9E2Waq*mf4p$7->sijp4c_uKe$vo{73NaeqnTyZ?Ca< zQhc0#daB`}ye=Xku7Mu6B}b80I*?3HZhn<5>TF~5$ZT#;gMLmaM%y&#<;0YN=}-yL zAoLN>d%YRyVgQ<*@$t)dr!-%!7}-=hvx9dN2yQm8RKLWmK9%zdw=mp5^hQg3C{rhG zq!67@yqXjR8y3>h5$74l;|Vk42sX{83TG7i2Ze^=(&9zMl_b)Ly=xsg6iAKG#v2*= zB(0;eqPzcD(U@-b+uant#e+W-ew9)Qm`M#pwG|KUgfL$dF`=oQKv7|6dUR+HeY?Xj z$f`#G3vIxrDJV#Tj6h_-IY2@B5JOlr71QDaJ)k6=R+vO^QP{+9wh1pFATI(Z$i;v(QK=4~<}=2oF&T z0i2cf0Y4`ZnoqLk0a3^8Yhq76M*NmSASz#TH3B|pPmgk?oo!Ww*UR8d_LJw5M$LA& zeC$2PD~-veao2|R0Z|Ah*5~xNN4m2`@?Y5@d4I#E4J_9leJSThkz(F4l>9aRi3n_1 z%bhu)Cx#|-f4Er{MH{H$a zQ|s67j>N|?3k!&We=(E+#(ji=Da5NvqKeue9#&LfUrB*(-8bgCiurvpr$%N4P ztuBaCKGWfQkZ57x%xs}H`Z2kpQN=IsDq6|INTn@bBiqxbNSHxgsMU5fXx(Ti<+D~!8_UnUwP_Y4u9QkhxM8}&mhr^EH>%Dr zk2P+5J~6)UnOt9!t7Y%&&Y!-=&-$0)0X(N@#9$KFmdwIJ}zAY^mUOyrA6iFPELrySd|+Ap8cK4us-x2vR071PltIGMs2XFYSLF`N&+ z7X)oij9I>@r7^OJ@p~`QKxuK*H8Hs|98&06KLT%9eoZ%yy+yxcyBa4TSGLQ|Oy9Qi z&TTYy2QpKW*lEtpxZ!`kJ8zmGvgoJEEcu49Y`83HBB4g4DlL9y*;FJVEX3oX;E-Q* z{UxDr$N2Dr>>6(ZO33son`wiSd;XU{9cRDZKMeGr*kda;Fk%kl$%&9D2LPye|CAN? zzK`gMEuVX?ThV8)mHpFI4*xYiRLZ-{F(anVYv3TH*Wt;95yQ^6W~M!@^LR zC|wJ6CF$bIdNyiHLc2$y-(Yb^5pb0fZp8fb^Zjm@@t@=BEHS<9ME1AjO{&o{>dI)@ z-L?6{G@prbGz@^&0R2Z!p%DicX|FZkX6^ZEEbEochzo6Ou8iIq8u;}Qdu1IOFcZY} zHE(8kQ)DnnvwtI_zn3e5k`_yq6fl5dOJK5u;@|)W5FC`L(tUq2$Z>}n@yj&qp6rtV zmI{rXcXT~Kfwse9W zYXN#;D&mVZ-#y>?yiTnWT}}J)bLY0pUc8mZbeFo>D&2QO`>WyK)g-?via;^vi=Src zTFd`V$v=YS07x_$IQ?~94{;x^WOhSnVfk%8#&zMvt{<06^12E4Xq{mG1>RW6 zhipK9igte(Tb({5EiIYY7hmb4G?;%xsSc5VRF(H`oN=05r)uGl0v&TsBVqS5N%``v zA;Ll3&8>x(?rf^2(na}VU~Lz2-JqbPjoOnV000k+hs87+7O3_;D4~ymM-76TGC;2| zITX<}976(;kX|3z)*e75S(`KOlB2aPWs6OcAu_;k9~T@uJT`ZG zh2dC#@0swkIcr%v1~8rlA7~3{C1evKWskH%_aha9Q%E4muuT4q7#I#ETqZJoFk_W! zD6AryfgfR)V+mvtYq4h8(ELTn%QwGB%(t-RO3saHtWu%J#{uO#fU(=DMk0$Ts89(a zsMa2-BB3Yz^S^lT%}P}Xh;fxl+>{1i{3?u!3Wu;qSQt422TRE~B%WAR?vC&j6EXYu zeNwq%mNzwMmxBq@+EB8lG?#)R$q(ziFt?1{@BelqIHBuN}vbyn~@_Vu*ec za_LktQc?fh8aHr~NWy{2=9{J)jV~Ziq^ySVVV>fqc#`5eREZ+H9gl&vO@qVov2ZVs z;nK6k2bk%ASsMPYcCwjc>)vVlClY-3?Ei+i>-sHW-DmQk87?%O3_sPjF29_Cj1nIe z^=}>8Mib4xoyfyb@P-LrsZCk{%q)vk|6*#}Tbz4UO?7~EksfozFI^Qz1``N;=sJ2%78=5?oP0`qvaYtL&1yee9Ye5I1CNF zeF+shCAxZ{?h)@a2upRSDZOO-cA^Qw(^MwGa`UWiJsxtgH}PG{C@pH|P5aoeztsA2P*~JB z;iBX&pk#^3)kj>HO4GcLuD)IVa@8yV7GFbC!4qyRwDokBPuhN@Gbwvc@#tpd*Zt`uPMJVsvq0Ry?o{lr zIQGBM&-elV;CpIISsX%eQ3VVr20q5|pm<2PWjA@Pn!nk0Tq zo{gBU%`W0q92Iv{^tF-mTzRB*_0o6A%FHLuvLUR=Eh1+9=ilR4c<8w}X>*l*a_B!V zzgRfciH>7XVetc=T`dWgQd}-JzWJcnMRuS-)yS`F6CTi((5H92e8$juwXvml0by_r z%+0k`-x9H&rngA#1)#~eN487+W)iGzG;7lxtb@d$3~treuRPm8(ma-tDZMi+k|M_I0AWvR8CYte^~GO1rsza@^Tg-xGorpL_7@aIjkS{wL$0~& zAN>${zfPct2C|QR4m$#y3P*>YWxilR?}dXN(5gysVVvhsm&?+SK^Oru0D?t82$Hf> zfh%IqEa`wm9&LME@Hj{XJF-k9X)?YLjejt<6e1Uq^7w=F^kRqy&Z&8bS=WP@VbZ0s zzYn+H);)etj`P@Vf@P8YgKa!Br`NC9&=X$y{fAZ>X~Mc%rSAMaW}F$`*r+nQV9)-D zFyw|yGKY3%1Xi1c=p(%T$Ye=souG-UBel75e!a1I-k^r@@dfI~oVk8W$*mQson%WE zVKPziS>`3F!(4fN3ok-GNgVAxQW4tCXm#yCDgxNbctXSdiR3wnIxj#Z!f(ma$(hbg zIxAY6e*f~&)CoWNyQy58GTEi@r|nWTiYN?pJr>!)l=tyq?Edtw@G>5IC=NU0#9dJ^ zsIfE)%@@0(0oQAW}a~ZIq9_9)>0{LVAeq$1QIsg;Y=Lk z|J{7>1rE=re{i`mG|QB|w$5`~&6f}Y1Dn3;hgul5ZO7<7JT8akG&}2jKoCx{@>}>h zcW#z+S5g0zALDlyxK9BbPIGYmwV<}-YrARQdxRhhJp=c<+;rUO z=f_(j89%4P9WZ$jfo(nuSMZ{DUxzwy>=RgC<`d9US$rtd6T)G;lJcyibmk4-wSicV-Tjp#^Iy*vUG#1c`dOLEp_?{DsvS5gZ*?^4B*13-ZF0*@weIEgD_@C zl|H=k@Loe&Z<94_q+KFQL~u#B`6ly&!XTV};?B7)SAn!gS)DFZ`x#7Cc$#u-zVqjh z6+nz3vpBD+A#PO{qDKXr&#qEYTC_U!#LQiyCNWOXd*;I@Mq1;)PG<&6U9PDd8Jz9b zY-+#Pbt_Ak)1!$Z2~wA$#U0JtsW9kjPP4TF)6802TOszg8Tf06nG3M9@2I}yY|GHu z!&eqL^+i#~_m@$a*opF?<un%n2#I@=`nuH>sj(Lyv01+5N4*-Y}uTMwisECrNUzn(oGz>`= z41+*8aP<>|>BXh^>rHppOGR-X4Y+5p#0QI`6AELiLIog}a^bm&jQo9tm3Cv&qz)5$ zF%4}N%?BR;mZ8f~hfRmMY`n|)(8+X%OJi3JKZI|seHh##ZjR9APt=AN3Lv{mRE zS#?@)eoARsSW<7UYGV*uoN*M2goRem@EUB0mh@h0rI={IgmkAVY+ug!2~rcb!oh=G z4BIuRR{7cX)HS_H+M&zhvCOk$o}bRmkk2C7rMHJ(5Q21(baVYzxRyU z_F_#PT;BEH?OXj$&A7L&cs(s-Dq|T&Oz4uTTiX@#)H$~1{RA7AS?XdJ^%p0Ksxo2j z#TMja#UVh50UA-^XtX`=m1=o86^v84!bkjQaP;Hu10K4~WX9iPIXlxWZ{Cf)NHa40 z7*4ps?{w`!7%Ow5>i58IlR)z2aRI-W%a8l^hh^1ji=drr`z@)!`k$}NeIk#3o=vjv z;L6gYvZ7+O`=Qw$o;LNC51rr}EP4Qd7Y>pY$p+COYboQCCXo@WdxSK=-GW-uAVFXm z5L6Dy0B8jDxFd-G>xu#x4NDk_Ds2ypTrLEl5bCIuRDPW){X-tWVjCX+KzJC~(*q8R z&CuSZP4dn__c0WH8j>cW)GCrNZFQHyQr@wVx(o|%SL=I&SUI~I6*UvuWdvf0RN+(j zW!32tw0R~7#kZ@CHt8NicseS3_RnKQG{oLYxs4~S@`tV7EZQD6UmMnPHWRHn9H!~u zrPer!OekF!ziayWWU3@~N-w80KYC87$TQN+cT&*lcS}GvyXr*CU!y}&I~8NQXH?B9 z_J>{urO(x${ZZqgc$zHGP@$K-$UNh3*ZrkgyXEfr+0fwadCvJ>ZGY=E7y!U|nOf1d zHXxf!JGK~=*;f*{#pyl#(!Co7WI*}H!ekQg#Z(qD7e*sT5;6@Yb=Azh^<@pzDbxf6 zO7^hi3{#J-l)T%yG;hLL-pf#5Iv$dlW(omk94sFrU`^(@qR`Vpy>}CNRhRvYkN)0Y zE_TIZKek|RNH@97&gQ$^BKcBr;kns#e;TWD@0XPe0Pa5AAS?|m|1-o^P&FiFNG^{# zl@FQ0<>X;(+BkR_5IYhPd>jI_(9i>4VisH|&n^}o%`O4@(Jo;G)DEls=@6(6B#%|j zT1vZ4t=MG6`yckuJpk{M{S?J(6d*y>>2Y;2Kt!2}Mf47U71_vkiBa{5fyjUSNmBtO zdnhV^?#*X>^9aJA%wKOYP2ldWJE)MX7(1b@BM^ZYj-5A^hv-`fLLHDeHc*jSD1;u2 zH`b348OY??CnOSO39p9@ z()W|c5Sm*;y+r5|n70ox(IJLX(N})u6P^Rdns=bV+A56&N2c70uZ3T?y0 zZ;&q#RCfP&K>g4CK==FoZR7uj?i9Gc-%ox-frmgrBY@B#B9`rzH5pirL*KmE2aC4f zj2r|Ya1s>m)<^=?wX zr6{^!L>K5s3*P3NOgHu&&VBAQmU)yW$HH8n@m1@?_mj+`fO>CURV5mUN-eqHy2j~4 z3|^-qJlwSHsh^kFIffm4fGRb{cT+txU#@Z{eDD_i9zWr$`Y^Us>K^D(_THJA)2nsQ zVdp_nGc!!+=U-t;pNaGPwby@lGQXNlo8A6=PBN4g9-geTR+JgL6)^eX-`f@dFpwWi zaA5}`jkNoPfKGg}PS$|BD?WSOEnTY-2Gy4W_C(hK}p1p6AR_O3lf?dI-QHAc=iW74j1sVr3vHx!!vIh`_g{x0t zN(!&bR=-W;1I(~P6yIRPwpSY*4=`mpLhSTY6MfprM&l*5 z@tbd5EIR7;t|qtRYU}3yz^^99XUK}i;7sHDKH(dw-DUpQfsmGu-zwPv#PZ6U7^c86 z5<-pKRu&@e=XcN%5D5Vim%{L|P=@8Iw2%x%991X~$xsdk^?Kk{V;cm|r3vwBM(CK9 znn%t2$ya_KQMC8Ul;VMccM(s>LtLdWdD%AcFx365X(9-(SE^2N2Rf(~2a;9~P@pHJ}mv%4T)o$~=R?e@B9g9^% z%~*5limWB1H@fM2qAIC=wbKL~9fjMU=AKi(ZfvA;hq`mLbxYd%S>g-mYhQ7rFYv=aw7`|{yEsaT7tf*W? zd>1Qy6-V~-ZSCB_m1Fmx&8L4q7FvIgKKQja^CL~FlHcV1a345;**p^4yx|)atcmcN zi!4xNp#x^7l%_L-yyyXtCnVVvHV8hzs6$fpDI^_&?-$Ks&5wtx?RW&YsJ=NQWQj1I&97#i~hvntwZ>ttG;IhS9%I&QJi zh$gGmY((}}m+U!WOu@;9Jx;!yLTCzBs3a|3GPZ1tULBw8+P{sWl2w%;7-(3@%ycyg z2VOUE>aJ6Zb-Ae{Efte^1-4}RwXJ?15Kqqpha|X(<~E%6YPHPa6FBbpMweMHr-j;y zzpJw}eq$K<*D|^BSBS;BM1+dGA}L{hkVTCx79p)6^G8)K`bhgL#V1IwMIa>|=HFnR z_Sk@hXXnoiLd-F?8Jm0D%Ih zikLF&VQxbsxWY!)HVVeiKYa$fR7WyVtjv z^Dw>3X|o~{*3mSoQ?d}Ovlbq4sKk*TlNaVEqGYk>=t!#+l22<(M@pY`a&`4V{3X{9 z#1;LeOZ%?laT_z0x5JCO0}kE6$D4bJ7fXU{Q%*)qzf@w(+{_75$x~|tP@???gabtl zZar47XE5R$wr{CCD(1!23|Q!5m(vEyayzEZC<$p<=AzR~H>C}H5wdT<6jCBAyPo9V zp<1HL=Cf?Ih91{ynzlMR1X5$7)Kq@r=NmSGR8RMYdH%#b%bC=Rg;d^NzCFjrhNK)m zEmjw?csJ+NjK;)_PlhSLS{i@t?`{w5t&OT69={G=4-kPiiUAbh?<8>WYucbZ)cP}u z5{&8zt=C)7A+#x~j+*SM)g%FrR>ajg4Viv z#))v}dilkC?V{L;BpH7wb3Ot#fXEN=6~+pGQ<967guI!0rE>6^$6wyu(>w}TU6)_H z`Z6Wu-FH!EPFP-z%bQ3GfAe-vlQ3z0j!8962E+1Vrp{rP=4WEOh295pONKzKR>or+OoH3RTnOO{sX-HR6v@cxVLRKkcCx!MId*TH=`)1FwoKj3S8x z^+u+Gx@~lCcLsZNSw=a4%*D7EXi0tp4^92lIewAdb1WWLBN za?)vZkYrCO6?HJ+MxnY}Vl6l@TMi~BV$;M zSjpa&y?y;3cFyb@%=I`yY0j&m=%Hv337#Zcvq;LON0aPN+Ik~UilWamh5D@#V=0aW z*dl?%SuS1tWK9BKh`+Bzg=pkzhN2u37}iNo784LySPlw($nqzImhM*EW`+1GUcBfv zXrJZ=VE$nkhJu3UOV#&;eltx8hBPS@e$clbs#Z355=9jNLr!_S;P`3p05 zPg&Y=UOy&j@Kr4#AO=8k8BXub%Wj$fpfuHQh46v@_HwN_Z2C5{otdvZ9ZRW=ZNsf- zgA!FSiuF>BxsKi`vA!y}{#70QngBCG(1arCQ&1@10&ySQrpa1c1S$-MMxkT49)-dY zOj`-T%k&O%LH+s6)p--^JQyLxzv+od>k-n^>r-mrP&J|xz9t3bWSB!;I^_bwJbd{} zKtK{Xc*@3=Qg?u%Z9h@A$2&uwYE#*|PtZ`~uquw(H0(;|t**js5^1Dl2U(Pq)`AjF z{sQU4h?%#j#)8)~W6oMBFOiZ98B2J$FWmcS**tA-D!?xS_LL-3KE0Ip0x`yk9r$LEj+ zP%%JvpKg&;#SlB=VpKCr$q6%j^-V%x=y%B8MjyG~L-2f&!X7Rto6OKDc`Xs@kdDb* zmRZaZUCmMbVN+%0ho0i9!cz#rlYyPtvWDD*I*iv3?uB__%B48Ta!H!Safj5{X}KRF zEuH>}8NOK&>vvNVM80Et(zdRjbO#m>*DQX!ahK2JJx1#Fz)?Bs8p8lYPu++fNunm!#?#!Bz zlLK|VcI;|LO@WMbyVzE%uk1#?{m|$a=4w8d8GU*8R{Y>fzE4+$(PAcV%zzW|-gl0> z0iU`(|K5ei{}tT0{2tJ#p{FNS*?O+MCBP>H#BiQK1wm{ia0)EPs2i>fAv7>?`6V%6 zB|>omP67gUf#E;)RzZ;vnuc;i+CKC!P<7iwH74>F1|>pMy1?c58hh4J`AE|SAW*G4 z_>fiz4h+-b>)~LtEKZMHeOBav>~pExQUCi-q0wd=%*tf*4|3}H%BAC(C8G<2RI14H z=d8+%H5gSNs%27X#3dgxRGOvTosd!0+nCg$!&)7^XpMzc{H*X`61gA#6af1+hP}Xl7z9xd$Gb{RznS>(EqgLpj&6Fgn1dug7eQJz6`tZ zlmpCOdrk&7M`0@SiYS+(hwv=x!CyV#@w^>umyk?cQc-R7RFgBV;9Tb#7u`Eo`6nYS7 zSCR}4A+SJ;OCe7rKPVK=yanhRX~K(`*R+}|q1d$lV(2#xyQ}?7cE?CzxU-m;ZTKsb z)1rUtP|!jiyJTpAFR(@*6@#C})|nk|AT7(qphEg&F1r4|OaSkwRa{zs3|qee)K(KWh}7%*UTr*wm)0s_*E zZWu_Hw6vh8bdC-w=@wK%nx`{O?6I*;dl&W%Xw^b;Uu`cge9I^a-2 zIOab_q(1`%k$=6Yz>NAafEw*ZP3Se%%>1QO9Lk+o1-&0icpJ#rcsxCTI!yBr`X-EJ zC8!#GL&g2C(u(<(F^}*L{X=s!<|=Ty!D!{iE4w6i6|cfe-u&Dwr*LnG;t|+Q?%M1S)faqOKJY$PXE!4h3Ag z?DdN27qLy^nm7?|!nJl2>_Qp)F)?z^6-8qRx&t&{g4$1t$A+EZOW=;Tq3@@Y(!~P{ zX>n3cK8D@|5w`}(kzBiDg!X6uiIdj2xOCPlJBGa-1bfTAeliqvkW?xJ${C;wOoIt! zmK9??YgZgB-W;JsG9_%)TA_33v+Cubc|nM;&sypL3cFkR*7#dXy+ki>U&i`llVM zOee#&<1P`E#2y~q9ZMc71!(4ZOY+#9TyB!<0{iD|r9pFhsm3=>yA~W)#E$RcPzAB! zLMKb29fjr$MWmiWy9T11NjqZ;K7ngdWrO&_9Qp)soF#vf|y3QEt zo(PKrlM2M1rsE8#&uOvqiRjPuw=?02+Lv?eaH+B@GS)qgj06OWMhA@8xW}syGOK_S z;=qk-Xr$je5*`bu8eL7kL!l&Qs^DJd{>KIN4T4k%Mh{yJw$2CMEcnGn|7qwho@m)s zf1xnsGUZrH!IhYq{i0Ix@neo?%eLCi*fifbyr+y>+dj#~)RoOet@t_~M2{K%eE!UC zzu^1(`_24&5e*NmaT(e-AB(h}fmfG}#$~BWka?6q4HX?@7czF z3tNomeNj!hIm+jBT3mxPBgU#wZ;pXk(mkrox$3jc8%#>`wHA^b_d9WwRcAP`_<858 zB^B}IFRg(}HYx*gD_^C}rlMd91amq3-#bC#{d@@tpR-L84rg9rTXrBxIss~0U`wxfjG?X@kEtzQ3lj-7)1O7h=tM@0JNmO{S-|`%oROpZa1Bc zj}HIV4yzERHW`i%-qxbv)#L8v>e#4qH&&-w5Td;T5nidgIe< z6q-B9>mBfAsNqXAH~({Pj_g<<;=fvk*P-vMKAQ-fyD_jvo$j;W<%oQr_ctBe*2nf4 zKA^?xDzWw%IHqf`wotSZ!#SV%+wqx}6+Upt@6mtuiR^Svba}azTxDwSkN@oN)~>I@HZKe?E^z1gnXw2JRYRKPQsm|_hi}{CGwT1XCIKk=Rg6FzDp4&f&e;S z2?-|lJ&KD$cnzT#5nDVw2zL)hKMap7B)JE-zzge$Ti3!8k0fMZ*>nkSE&U%;xQzsg zIP1Q9ri7c{Fu~Xe2ZVO93dno`;F-c}e~8>i<53y;W%b3g;4%cpyG2{nDAiQSK+u$w zbnr6tV1Kqq9=4GH2*U&mIS(834y$*w7I8ueA)Mo>{VDBKG{ z8cMZ{x`yb;Xr*WXQV9X4E87PI@PbhOsW=2F(RldTq`^jF7zJYf>ZF!sUva`h3z@iq zWVjp6(A*6(-Gf+>K}1w4zJmxQ&zw33fOtH5q>2Ml#pBdBNK;`WB$g?aY!q?m(BzF_ zbD$LcuHVd1WI5U8VpNbmhLcEHb`6G65%dGTFX9V}bmt6ITHG=&8<351H;x>A$gl66 z4j8Cg6|;$&_uh%v2ubuJ5_j~qh{fx->v4&T9w7i>q}dSkaJ0ApP|4xD5(lTIP{98O z?f?B?7)P|RmLv#jac2L&@BdzD0n*#J``lnYCqi`v(@Fp(08R#*B#fMbXkfeYWv+s! zeI(wWdR;!dS5-NW&I}21KR%ivl^tM`TcQ}XQc{c(stDU!n}!iErs^11zccl5kP&R< z4Bkkn048>2n^lXo&~iO<1{+UD?xyn{Mwxq`IQh@;KkYFu#-zM`meWmDb7Zrhr)=V} zIeKbk0k8827$^>9_-LO$a@?d5(U}~)m;UvE>$mIXh-imTMGv%FPi!8bae9-7<+N3q z?rw*_-u=CMC~(JolYejJq`*W-JhOQG;Ku>x?(^CH^49&|q~wiV1P}soad7~>)m+Sc zg>M=uCB={{zLNIPD6|S5jtaY|8Zn-7WKE$ot+EJ@xp||Ner%u7*v1tPbXk*)x14q- zlW$vk;hbVf-}&964&B%`((33U!lxoQif4xefuG`s{&pNOK4MGn6W5=t)Mh?7MC=SO zEb{SlhCiBYr|1yfT`f!1(_P9NgkzrMHBNE-`Kx*2IpxgwI;Hw=gr~IxMa;~JojQf?X9qYcl3z!s^zAn$L?>;K3V?I&=NCJ}s#tvT+F z-NWzNZz97A;O*C!gO#vT#f_wUg+nzo-jyHDElHldc;fcK+I97}Iq&N{;>6CS297xS zZ^g%1iZn>>y*U@?s`;@hEqyxi=&;%lzSpOG6BI#~2g95X)cq9nBTFFcEL?&0(VI`@ zGkNL9Zov*u>G${}Y~z=EM?ws@e~iAYNz40AU?OTBP^;7AN_p~IOE*B|r}KW-jEZ{i zlGUH$SZOPRSAW|70`9T15@--XrI1Wqs4qe`omMs$!wqBobSa zp}%h&VxU;Zy1+<*oFvlD7P2(1$eq3`;z6W-j!lXZ%_Uog!Coo~suvS`;jRP&G-NQDS`TtY3Ek{V@_?cqLbxcBk&Px@nV zl;H-eS$^nFb9SuGgI`{`9 zX<51r7BV`gBfjh;M-2+pE5r~VM|hbystA?**@orPKlw8JnH&e8M65mOV29~&`*Q8T z!$awcs|@IY*rUOAZYX(XKmzy=WSYg{9M(sv#zNCz4ZnRc7VTtZ?3)w3$@@$<+*k%9 zD9OvqMdQ8D^KHIXX)z&X@R0D=b8d=HOU%?u_S!`MuT2lUqyR4(E+qH0QhGv zL~`$AM7&J&DY5?6Up)iA_%0}vlT|Bnl$TwR&k~4n`pH*s+8nr>ufWNb8X`&N^pBoA z{eXs~Xt{h7XR`CuHonC2ad3m_<`mI2JGtd9>^>fYyTyKAv+WJn-|&>N-%L**DCd*7IUB4Nc^xK`SU(sJ+h!F1h=U*x3Lc2m5m_rPJJ zUtfAKYU3mG{%90z;+vBYeL)@#M1TN25-v_vF>Kh@z*C9q@-lZovp%!t*0m|67{1}Ghf~>c&l*btD(;D=AU?6vLyK;)v zqDXoiKeWL7hhKKLKJQj}7^)$$`_0N736WHy8G$tB?my-@I}uMjq`e^9Z15 zlvRiIP=-#cv_ceWrVjN_8s~&EMUM^2rTh8l^On_gD)Oiq{YKwwj~Sz4<>(YLSncBH zm(Gk+ze@X|Rq%!HE@uJIXl4HAHrJxNKIyS*o#XM%Ln?W?_m^>)O-;?<0Pd-rOhJk0B&{;jsui% zxTrsdtu-w&1BU^g=p0=xe3qCkq9G~$j}*6Rv@tw~092)4@}K4OAdQIHO`qwNj{eh= z&`{@id3LJ%dC2=@z)8T3w~G-TJ@mXzEBaTxuT&OlDBxGa)JN#MxcaHli|zy-GOlVy zix0jtL#?Xprg5#3wb?WCpsOVhw}!fGtq_!}&L+daOJ5sC?Kvp@_b%X9W`=DI-{>72 zDcWf=&ZvSr;g@a1>QiK=QNvlmK_go|icNnSeTS@h{#JGHd%s*@ z=ELXql7q3yw@gpa=uoEY7)S|-x^Li2K0{QAW{2GPi_ zY<`PL^-_>Wm>$uH!mvhxfIro5^V*!)Hj^yzoU6v+g?^M~~8lMk-0 zH^sj=R3n|{3UPX$vDW;rvI|||=u^XmKrw=g^6+LtJe+MqFerwkEP^sJGd|ER@qRT` zf=DSA)EQZh4;-YArJ)AdNm76aso=2;p?>TuIok9nAaN`|R2?Fk_+~*vX+}e~eQa^38d(913pZ(Uje97EUht_I+xV!nE{VCn9o=M5u^kNMToM)v~G? z$Oa&$Ofm~R!OxK)$<$QPu5ds|T*zqXP$9iv(vFM^%4|THtPEGD{0)cIxy+Z6t{qZU zYbN{V0Cf*oxxN7Z$ak-)`1tH-XfMVc ze>^Tj76Zbuh(i-Y1OPozv;3F`fRi{%5^$t)WH&x6BZD|s6ReCd67pT55|tn;$R}MR zrX(@A;S<3!)dj02!l;60b%As}U|kOUiU3iqLk564yRgcCZRiIf(L1;4g|(1xX$@Km z?uUwOQOsZ4ec(G`x{^BL&Z^zAqGxJ1 zy1_l;fv4Zp<>!INVwP-RthTzEf8Uvf+j&f-;P7DG+=S!qtUnujw>o=mh{<$T8G|4% z!_Xr|)rxD}%yCq0(0JO6hLh;MM@|_+D!Gv#UZXs)ONf(UxL;Q(!Wztwy#geDKKv42 zd!qVRWQ+RV7s7IO1@_F(K^CZX(g$fdVI`N9SNLL!wHn%=&qDoc9_bg>|9%%@wY*?=4`R_ z_-G1u7?+FMH6VPN2?jdn0F=1FZUPQLJKNa+ahWPSLK1K~WB{K~nmik-q|)5rN5VN=~6n^LJyHWFS>6BNURRCIv*Ym(^hdJ8%ob za&hc-@T$>?H1Eyr-Bzp}2vc4on2Rxmtz3c2bOqS&%a0@?9z@s2CgCM!XjXZ?g-_rD z`?2A ziG?b~-pXr*hkow;e_{2n%wT&zIGx6aeu#UvY)~%PE5Mg0+{FCA`Du-FP)RaI zgHV?v9~VGH49qfGbt4!!l&{GaP04$pwMR!a0E~vSNmDwtyfq^dd4SeWR3grf%I#{i z_mq+vAvPdv+ZtodCzuLfH}jX{qvznFWv4Bmh*IiaWoT8ZQC43?Fk2_7nIbGsI>1?a z2B&3w^(Zh@5w_(7ekSLc&l&A5+LS^=_GI?^3Bo@Qwx@n}!1E$sDOG}@cT3o`@@qo? zB3cKc{#S|%jh4Xd&wuZ#uta*hyn!7dfVEN9cb#1AY}X7OiM3jwzI$?u!^IDwSyEJ*iD4p4l(+Xi=PwJA@jAB`5H%IHHZ#+#{A! zPfO?EOFV&DsxW}%>yFwP8ZbphPUz6A&yW5QOZ}M(-~79td6KOG%ICSm5BD3r!;b95 zz3ciq^HU%dhz}s?Ibon?3O#nbXf4+QP`1V+D*Yvds~vaDJqvWyC+ z0mS(t5+ek2;HkAF!L9P~J8DvP<=r~wV#Xv-xZAJzW4Zj#vKZF;t2F4XAEI*y#C>I% zM0pVs@svVo?$t?LeG#jSiKRN`6OCMc&H7-TM}_Qh>_382dDA&zmT_v)#Ntu3a)u+j z^!icy z-<`c@jJ?DiE(*>*HdID9`B9KkkeGkon z`_Kq7pKUthc4zEIKJi#;X|XxP$4_-JcvJ&sql}s?=})Ea##Aw_uOU`gt9p03_zmeCfpothKeFl zrZPXVK*3?sTuYq6j(4h@2Wo4vA)f45K9;<4yGc{=1mp}5M8m>fz%meeW9Jl|dQAVL zU^kz}c5Ts3Th{KCrx^9nor_#pzt3>Ss}Jd~Zkohr))#meYlGgo~E%#UuX{KUs#*xc5Y9x{->e4*b%hrnr7|BWs0iv!Y6m1 zj}43m;dpX86L{7j3YI?bdbHG|WbnwiiOO9KIN}9jrjgt8Av7yqwsY@^lZ~bB&Y8kI z63t5gL=}+94KjfZ6p;7VkB!QQDyYVb4_sKN6O@P$Tt2K2AV~ZHAxqjaCV=GC!$@=o#hBlqFK9Gkd3jfaL2W)vU5qb^S^w0r{_WnD1( z!FlO&Osotxs;1eAFX9Thos6*sn`66-!aStdb4ndwldjo%9(Q9Zrw|f1HRMar4|H}G zRn~i<7T=8oKl%;H&G6Y-4$biA(ma?jCd<8?scG9NqRK=UfAm zvJ*jxZ;0yu=THDpm6s!NS&Gmfqq4-nxMKJOjtY2wl%x>Jbi8OAi8+4GzZL3r*-sT7Qzw59TGT?$>wT(txh9#}aI#QzXXC=z`R`AVrS9J+^iO&- zZ0;ue*nnBE?&Awgv4Wr?E_sOdF3Up)(afD|3vnK;{}V=*Z%j z<6F)eQ+1=UVZ@;1$NEP{e-4WTAF{oaF=@MU*9z}BL|SG3r=cG}LQS{H>~5`Z{Y?yS z0*GztGs{J%TgC8LI=G0joWaBaWbzpgMOS7x`4Sk0j5g<`hu#)s6|P@5Gb3m0FcZh0A*WJ#5OlCG20P>v=YewzlZkWe0?^{r%m4Dz!lg7CiKy-Nne>En9@d zY!%1%G4!JGfz(XPIgZMGexyJaBIy(`smO7z6?R2He__TF$JaP0hgv!??ot)aJ985s zHg4VVJVlC!{WfnjE&*z{U}30dsJ$yZx#hs2sZds<^kXb;B-0@e>bkDQqSBXO8 zveBevD^xhexemo{%MsctnKM0mtlnr>;_u#4ylRyN%`o(+^!?kMDi{5IKpKuc(8TYHjZWab0&p@6~iSZ zq(LoYp$14%as;GIRM2pxV7hK!Laf%sdE#hb(Ul@d09Xo6i<(vv zEwg5nl7PHXA=fDnN!1X+`NwS;@E(_hbK5f2o^na{C!&Wb?AyB>UkQ=~reLaS&010> z>I7SEx`sH0T$_Q=;@?r6ihKsUmK zBChs2noKr+8|g>8ML#0K{rbB3t~2%c>&9_CG<$=u?dEWH6GjX;FqCd88j`b-KnD0q z;2@h3K21TlF*w!(AWi`0$h%~+00{}GtC^sxNiF2H*GE;M;Fil^NROpOT;+$UGAP{SK52~R-K+VCo-Y9WF?)n5Xt}RLuf*cz)6xGEvI3Df`oew zF%T383n_>WYWGwVj4&Smrb&6rByENxaS|oUsW}T@AnY_#tC=fue!hy*s#B2r-V{Wg z&DWTfd=!PY5U6ayE~B3aG!Haaf2GzquCF&c;imt$>B!_Usvn^daO)O5+&5!2QZf>W z&cvLeyl+7RM_X$O>SM6?Rh$=DUN1cv^ z87i{+w7Sm^f%49-Unm%byXyY^u`Fr9*3LL0eL=Q}R5M)gU5$R>n_F-mvIm$_<@YRU zp1+eT_ph>EX!XcjD;}30G#>pcQ0nMBao2ugdr|r9uWIe(*CvOeTM7-M|a**G9lW899znWK0!mr<1|ls!+?Yh1A_T5ZkR zb3%O>GiNwZmF-L^%k$ORgk}zpADfGWW}&EOgU^=Ce`yLNn@q+47qX@{{7V@fNNjYe zn#Q~`?y_$PxV2^$X^kFMSKr0ZtiS7s;I+Du%B+c(qd3+2`qO`_^KZk4rttglAA8pf zw!kNJQ5A$WMy%)zB|-bxVHZ*wNQbC{F=$DeE2Mvrp61x=oTlH2-NY3bQ7diS@zi2h zNj2lF$NtC>H29))%)vozf74Bk|jwj(LN>)H=tr_(A1v-e$UZ)s9-NyPLp0YJ5k^{oHIR98hDmwD+8O? ziF5iBr&)R#f~0w_vUMFtaCd6;2U6)G>ojooJ5;jtUGO;JCr#5k*SnI}zwb=%dcpu$ zZ2&&IJDQd_Duy>bO5fU2yw?*D>%xZHM~N`zc^ZxDumy@7o`tZ)N87=1VXS%K0F;B| z*y3#xM|KMF#P|rJR1m&)ty4@fz30UKv)$JYs&SGnAMw9=2%xSXpeQLGwxJ|qJIKJ+stLiDp93r)_)0LX4{ULkJ|ojs zMWxi+P9p*0E7~u%NC2-)Pbz`^K1#^|k$h7g!zB>s>~+dxo`ct#uR7=h#Mekgc2Gmd zv-UNRNSrc263$@m*)Qe=;(v}`ZD5oG)q(WRnT?D_b-bL+=5yuqU=89lHXdp8z{s{z zvtiN;b3X}2XJhb{u8saLdUh(%Yba{BPbH>3jAw77#@#6=&M3gn; zWQ~g!2bbXL{yZ2BR6WCPR-B#zbwHlNNr>_x!MQhzx<5rx62O1~8j)1wARrWA*R9W_ zzG82=?3gZOPjMwz67*>7&30F9TY3y@^@u@3D@bbu$kh6FW8F{A z8vY_)TRF(Z2Z?{(k}z7fkI(tEr>^rHUf!2nq}h@7o-HQ~eCR@a z&9p3d1u)*k;t7pPbcSU$8EhD;-o&nh;H%GrByr^)f$e{PmAFdRb^oaQGM7K>l5%mQ zR5DMjUHeU?FznLMwNryu&&R;XP}3~@h9>LPAETdt_M1baeTQ1PdC5N~ZQTgw*8`|H z!B&u#G<)ju%2Yy0VvN!ofBd=VSU{CS2qwq;Q&PXj0eLi>H#W8UEgw#C+b@o5=2wdr zkLK?7*B4Ln4L)r5qZjM z3#psonTCDDgY;Bu4yD6$aZ!ecElTq+GBGl>Mt=vP101lK0@uv=zl>~fg(Io@458up z@upW#X%rA8>NI9mtp4KIU35AEm}{T*@n(kSA5YMlpu;O@DPM#u{IVkH;Kjn7Dld73 zfx*)FTY;wHlXuwbe=kzsAA+~eYB)_Y_C#V5T;zocFc??Bcw+oZLP-b^;l$=1fKoAa zs39Y2G-QLyW6TFYcu8?oyku4}GK@IF@rJi!vL|2iTZr1iRIyYG&w z*&&^nP(5v}OT-Hd-OS=CPc_LTTjqzzD(zB1ZgU*m#INP-Yb!Mtv$c$1XCx(>7M_*0 zZ8pch8$a4FZU+8E)ij;{aPnMB9CtbJT5!_rpMO?If!!8Y2Xy*HI8vs#NK?iSWdbaD)YXhftF3jr(PR>%@%q}2H320XZ0`yQ7!KowK2FC7YR_irO&EbgO%txSv z9(!S|QZZ`h2Wc85(B!V3I_C1xtURO;JpcxA4xssVaDEmeOCinyCnY|5|KvFC7%~75 zfY&C^axM>1y+8rwv@(Y8W#Q@j`xI>4-3%lwPo;GFEb+)E@c_BH^LhdTq-lT^>5h%5 zu$P|(vd0A$ID0!JlYd8JB2oiSdV11a4$ayTHr-Z8E7jFp3WxSNL!^cEvXJTX@f9b9 zkeGVG%TEubjvZ+oz{xF=`l8Zyc4PYH+wK)7zH_%zKCN3ek8U77EEx49X3R8GQaWzN z6_X*y?5-F!7Ei2ykTiNv&d8Ba$;d$C0glM73VXmSB`H9pzCTXNgW;zfYwhv4dH;w_ zJ2Z`6hnO#fe}IwNHl`RNAdwAtBA0HntYd9os&&aO?lt6e6G`;OZ(RG8&Ti&mkC*#d zEi`eCk^KC#3aWH}wT5v!fHjsbu`Y3qk2fuw?Mq_8b6@fN$z^L3_ZyP2`r#i{?vXj8 z#X{yQ`J$3twYDAX2~-hAp{k%vFM#|zT%4o(<326gT*JcvU*WqrD&cV;BopVmy@I}wSYo)Mt;gxdmU8!~kBT>>3sw&NC0_SibBth%+7j9e zLu~`!=C5A!?+DGEc&Xm0pxI47u?}CPzI?lMcHtp11c7HzD*h`J>qEkw2u0KgB!|Pm znkjb>Qbs0HV=+X$Dw2_oj*k$7ktu(MiIhpB=plr;Jh~B4GW6jW^B|y#w7l%<=EeRi zi=(mJC#J26%=e^9aA82;;eIe~WvD6HZQO3qazUyo$&(|*Ppsc_&?Y$HT>q8lntf50 zNqkHo_J)xyZ}?@)&gTh4_V7?Wb5W|{aU>OMTGei*3T{5eTvha$0{c!_f3=J5z~`4E zL2u}x>d4@pmkX-HU4pFr;H!Oc4~St81JA)#T)Z3DSU5Ljvc5cUHpd1`VK9m-=u^K; zT^)a(w8Ju^-AbL@v70G+ShrN(g5b@jw6${onPu2*2M6G&E9GWHOFoMMKS;E!AbkD`9I@d(M3x911%k${X z9JgsQQIA{vpr|FV^z17%+;9o)o;+FNyYqc(chbCoqXzY1`KRoP!~~Z0{iuK8lOJF9 z-{R5XR9}m&BiF;|KFbv?Zo%kbV;7W^qJ;;Gn20B6yh=t;c4`_26>humfFmFVj}cid zE@6ylaaKA?BP6FBsJZtklrbXv{f+7d9SQDiPgj=9*XOwY)6h8(C>f}M_txQCDi4E< zrvM-8%_>XtLGl1+@qzQpYD@vm`|lE~p1eBJ*EUyv9|H)`#UxLUWzvATzCxN2wLHT=Z?R46j-2YszVAhe4VUJ3nfMg;sW94cFk_K zt!iZMS3-Pg=PHj)glhB^KJC57%0F;)O%x8p4R(;aHFz>TXCR*-I!)=AVjC@5btY_mUJfMN`=*Vs+AnArM! zL-&WM=dJr(4I<*mH!?l+}MAq`(o79H%NqHbFF+lAGS*_7mIIdvFImsFE;1EpxJC!`(x@h zq?;LuMUnCek;>wb>Pn=> z>)#_>ogC7^dGa@$%-B^*bDq)hWys(%wYjerA0G>dL8wn6*Iq?%@DfDR*TgtfhBhsx zD*6@*Asd$g&d#M(_w**pCR#90-{6^ojZ39T99Yi1&A(ln(dQbbQ>}ohkcPh#kMAdm z3uJNa{_|qnNwKTGY<`;0=*GAdtV~9G52{+IHuTBaBr02`dd5j$MxL>NG*wYC*J1ZL z(|MEH-=9lWZ#FcoD(R;W8xW-Jsna~(ciS(>Ymx=LaM8yU9L@t{8+5$Z|%X6 zXBncrn?t7^8r&?F<*m?Enf`0aTg-7M__)Po=9LUOx_g92z^RAco_dN`Oyn`A2P##N zcPfxxuy5+FJ?!kIuwcjUv`*Ec(r&9e-8wclAcH>%1So^SYC(Ga@v;NhP?hhHMqs27 zk{%x5Xp)6T#6YY}X;(`v2G4B=5#kazitwO;IBFL2OUVB;^d%BF_(VhdZAf1N4@0J=Y^hoXlg0qPxyy$twb(5vE6zgA z6EmsFxaQ39pD8T-wXZ*~-Vyl`+!TuPPyMC#0F&NEDzBpvaSlyY>0KNaRDb?Wr3lTI*c2R)#&(|TBXb}|P9Orfu-8X=K7t?63-qg~MN#dzMd9eb zfp=CCT)XKlI_}gcwLW-a=k|a*wozr*?gtJVR#~CmuQjRwF`H55$EwY1eT}1_2{<9v zbUTJLAzTzGZ*xKyD^=w1@E5X+Bn?ql2OD88avx+Rj#HDv3L@LaW9ry)aYLe08!{z3 z4X;Cek8dx2&Rdoz4(Ec_?QXL|Q-@^dxXQ|MGU*qgQkFVmvQZ4H7eS@MQe!QcUqcDY>=qLC-+F>md^1rWK1 zJM(loF0E3NADj+I7FV@4!n-qu9}~_)f-&yZRHoH(8e~)ct;Hk@M-_JO^^5%Upfom% zc%gh*0e(I~4nIN0>OoYw$SR(h?_I(3{72@d>@#WjpJm_K+rBmGg&+>V9lO{@Pd$#M zm(1K^KaKUK2^^g!mTzPYRr@Kxj_*)`y~tc5K6Wzo5pQI^4E^@d`cO zu!y@Kgmt)YdGtwmNJyTd5-uBRDmd%Q$n8eUKCh;bFN!A4 zE0T{NCxC^n%Z`=*~wtvmsxw3Tb(%sJ|Ha{P7#_3P6e z8LUIv?v0!4-P61C?{eqX04H7CL%fP{AE4xb1jYkZ0zK*}Mkp$Ze4`k$%#JjO zAUs<3VC9%TE+{)jp3sp_hT3kRLR|?7z++NbMbwfp&}ZJ1mn&!BPL34XMbXn#NG?nf z%%W6sO#~XW!J5>kJdSkwG)YOFWk@xtxJ!uoz*d(s5 zut(eJ#5S#=2bXid{I4C&71i#)58my9`gVQ=Q17lF{wJ`p&F}La`M;25G*4|7w<1c9 z*bmK-?3n5W%}~x}qwgKNO^-5fBr_MLV9)+_lzPb2ifnqIp~m`%ChwQA+y;cPKSZnB zHUw>hH;5j*cAN5EaY9W@nmLl$%w;ywK7KU40om-gx9jM7%kH;Fll(^VqJ!J8(*9+~ zY47Y(#a#`Poq_FN7kiFLmggQw@1M%G0DOYlHQp?i@~C!LI{X`a0N;mzu4iFKSSiv8 zXS;LcR!=LT&VNx8SJ@hE0dMjvQO~YhPBUQzZ0q8U?yiqElX31DW+q+@7`V=7WoXpe zs+ji3RwsNO`e5)ls#x*-?gs0qRT$5DsPk2fR26I8`KoET*g!^zPx+Z+Q;;b+vfPe$ z;mB^h3py9Dyx!HEu68X|ZnpF*7f=WwML0qk#?xH1_#nP+N_(PjrB&SED^9g~qDpZv zmA(!t9A({E{l#C~q%Pnt;REc`nL97qMp(pFcps8_FR6MNY0MRPtla{GMNV zg!Am6xp`anP<_ZsO8e`9xU$i!kuW!5wijGN

8%)j9DSU#c|9TzZy7@-i_seqG|B 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 literal 0 HcmV?d00001 diff --git a/spec/builders/year_in_review_builder_spec.rb b/spec/builders/year_in_review_builder_spec.rb new file mode 100644 index 000000000..526b684b5 --- /dev/null +++ b/spec/builders/year_in_review_builder_spec.rb @@ -0,0 +1,64 @@ +require 'rails_helper' + +RSpec.describe YearInReviewBuilder, type: :model do + subject(:builder) { described_class.new(account: account, user_id: user.id, year: year) } + + let(:account) { create(:account) } + let(:user) { create(:user, account: account) } + let(:year) { 2025 } + + describe '#build' do + context 'when there is no data for the year' do + it 'returns empty aggregates' do + result = builder.build + + expect(result[:year]).to eq(year) + expect(result[:total_conversations]).to eq(0) + expect(result[:busiest_day]).to be_nil + expect(result[:support_personality]).to eq({ avg_response_time_seconds: 0 }) + end + end + + context 'when there is data for the year' do + let(:busiest_date) { Time.zone.local(year, 3, 10, 10, 0, 0) } + let(:other_date) { Time.zone.local(year, 3, 11, 10, 0, 0) } + + before do + create(:conversation, account: account, assignee: user, created_at: busiest_date) + create(:conversation, account: account, assignee: user, created_at: busiest_date + 1.hour) + create(:conversation, account: account, assignee: user, created_at: other_date) + + create( + :reporting_event, + account: account, + user: user, + name: 'first_response', + value: 12.7, + created_at: busiest_date + ) + end + + it 'returns total conversations count' do + expect(builder.build[:total_conversations]).to eq(3) + end + + it 'returns busiest day data' do + expect(builder.build[:busiest_day]).to eq({ date: busiest_date.strftime('%b %d'), count: 2 }) + end + + it 'returns support personality data' do + expect(builder.build[:support_personality]).to eq({ avg_response_time_seconds: 12 }) + end + + it 'scopes data to the provided year' do + create(:conversation, account: account, assignee: user, created_at: Time.zone.local(year - 1, 6, 1)) + create(:reporting_event, account: account, user: user, name: 'first_response', value: 99, created_at: Time.zone.local(year - 1, 6, 1)) + + result = builder.build + + expect(result[:total_conversations]).to eq(3) + expect(result[:support_personality]).to eq({ avg_response_time_seconds: 12 }) + end + end + end +end diff --git a/tailwind.config.js b/tailwind.config.js index 18bd54948..5ac5c5836 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -41,7 +41,7 @@ const tailwindConfig = { fontFamily: { sans: defaultSansFonts, inter: ['Inter', ...defaultSansFonts], - interDisplay: ['Inter Display', ...defaultSansFonts], + interDisplay: ['InterDisplay', ...defaultSansFonts], }, typography: { bubble: { From 68d8e62a5ca81110dbd419ac8921d70abcfd60cb Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Tue, 16 Dec 2025 12:32:52 +0530 Subject: [PATCH 11/29] fix: Share modal not working in year-in-review (#13079) --- .../components-next/year-in-review/ShareModal.vue | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/javascript/dashboard/components-next/year-in-review/ShareModal.vue b/app/javascript/dashboard/components-next/year-in-review/ShareModal.vue index 92f45a12b..12a556b0e 100644 --- a/app/javascript/dashboard/components-next/year-in-review/ShareModal.vue +++ b/app/javascript/dashboard/components-next/year-in-review/ShareModal.vue @@ -56,15 +56,19 @@ const generateImage = async () => { const bgColor = colorMap[props.slideBackground] || '#ffffff'; const dataUrl = await toPng(slideElement, { - quality: 2, pixelRatio: 1.2, backgroundColor: bgColor, + // Skip font/CSS embedding to avoid CORS issues with CDN stylesheets + // See: https://github.com/bubkoo/html-to-image/issues/49#issuecomment-762222100 + fontEmbedCSS: '', + cacheBust: true, }); const img = new Image(); img.src = dataUrl; - await new Promise(resolve => { + await new Promise((resolve, reject) => { img.onload = resolve; + img.onerror = reject; }); const finalCanvas = document.createElement('canvas'); From 02216471c3f2d91f1608c3ba99cb02f7f0a68dd6 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Tue, 16 Dec 2025 14:35:42 +0530 Subject: [PATCH 12/29] feat: Enable attachment paste in new conversation modal (#13082) --- .../NewConversation/ComposeConversation.vue | 4 ++++ .../NewConversation/components/ActionButtons.vue | 15 +++++++++++++++ .../dashboard/components-next/sidebar/Sidebar.vue | 15 +++++++++++++-- .../components/widgets/conversation/ReplyBox.vue | 4 ++++ 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/app/javascript/dashboard/components-next/NewConversation/ComposeConversation.vue b/app/javascript/dashboard/components-next/NewConversation/ComposeConversation.vue index fa9102d59..ee71bf51a 100644 --- a/app/javascript/dashboard/components-next/NewConversation/ComposeConversation.vue +++ b/app/javascript/dashboard/components-next/NewConversation/ComposeConversation.vue @@ -9,6 +9,8 @@ import { useAlert } from 'dashboard/composables'; import { ExceptionWithMessage } from 'shared/helpers/CustomErrors'; import { debounce } from '@chatwoot/utils'; import { useKeyboardEvents } from 'dashboard/composables/useKeyboardEvents'; +import { emitter } from 'shared/helpers/mitt'; +import { BUS_EVENTS } from 'shared/constants/busEvents'; import { searchContacts, createNewContact, @@ -226,6 +228,8 @@ const keyboardEvents = { action: () => { if (showComposeNewConversation.value) { showComposeNewConversation.value = false; + emit('close'); + emitter.emit(BUS_EVENTS.NEW_CONVERSATION_MODAL, false); } }, }, diff --git a/app/javascript/dashboard/components-next/NewConversation/components/ActionButtons.vue b/app/javascript/dashboard/components-next/NewConversation/components/ActionButtons.vue index cb1f9d99d..c2971c60d 100644 --- a/app/javascript/dashboard/components-next/NewConversation/components/ActionButtons.vue +++ b/app/javascript/dashboard/components-next/NewConversation/components/ActionButtons.vue @@ -4,6 +4,7 @@ import { useI18n } from 'vue-i18n'; import { useUISettings } from 'dashboard/composables/useUISettings'; import { useFileUpload } from 'dashboard/composables/useFileUpload'; import { vOnClickOutside } from '@vueuse/components'; +import { useEventListener } from '@vueuse/core'; import { ALLOWED_FILE_TYPES } from 'shared/constants/messages'; import { useKeyboardEvents } from 'dashboard/composables/useKeyboardEvents'; import FileUpload from 'vue-upload-component'; @@ -163,6 +164,20 @@ const keyboardEvents = { }, }; useKeyboardEvents(keyboardEvents); + +const onPaste = e => { + if (!props.isEmailOrWebWidgetInbox) return; + + const files = e.clipboardData?.files; + if (!files?.length) return; + + Array.from(files).forEach(file => { + const { name, type, size } = file; + onFileUpload({ file, name, type, size }); + }); +}; + +useEventListener(document, 'paste', onPaste); - { :on-close="hideAddPopup" :selected-attribute-model-tab="selectedTabIndex" /> + + + + From 116ed54c7ee38541c35a0ff46c8cd991309f653e Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Wed, 17 Dec 2025 19:03:54 +0530 Subject: [PATCH 17/29] fix: Prioritize SDK `enableFileUpload` flag when explicitly set (#13091) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Problem Currently, the attachment button visibility in the widget uses both the SDK's `enableFileUpload` flag AND the inbox's attachment settings with an AND condition. This creates an issue for users who want to control attachments solely through inbox settings, since the SDK flag defaults to `true` even when not explicitly provided. **Before:** - SDK not set → `enableFileUpload: true` (default) + inbox setting = attachment shown only if both true - SDK set to false → `enableFileUpload: false` + inbox setting = attachment always hidden - SDK set to true → `enableFileUpload: true` + inbox setting = attachment shown only if both true This meant users couldn't rely solely on inbox settings when the SDK flag wasn't explicitly provided. ### Solution Changed the logic to prioritize explicit SDK configuration when provided, and fall back to inbox settings when not provided: **After:** - SDK not set → `enableFileUpload: undefined` → use inbox setting only - SDK set to false → `enableFileUpload: false` → hide attachment (SDK controls) - SDK set to true → `enableFileUpload: true` → show attachment (SDK controls) --------- Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> --- app/javascript/entrypoints/sdk.js | 2 +- .../widget/components/ChatAttachment.vue | 8 +- .../widget/components/ChatInputWrap.vue | 22 +- .../composables/specs/useAttachments.spec.js | 224 ++++++++++++++++++ .../widget/composables/useAttachments.js | 42 ++++ .../widget/store/modules/appConfig.js | 4 +- 6 files changed, 289 insertions(+), 13 deletions(-) create mode 100644 app/javascript/widget/composables/specs/useAttachments.spec.js create mode 100644 app/javascript/widget/composables/useAttachments.js diff --git a/app/javascript/entrypoints/sdk.js b/app/javascript/entrypoints/sdk.js index 2a919f42c..6e1639b1c 100755 --- a/app/javascript/entrypoints/sdk.js +++ b/app/javascript/entrypoints/sdk.js @@ -76,7 +76,7 @@ const runSDK = ({ baseUrl, websiteToken }) => { welcomeDescription: chatwootSettings.welcomeDescription || '', availableMessage: chatwootSettings.availableMessage || '', unavailableMessage: chatwootSettings.unavailableMessage || '', - enableFileUpload: chatwootSettings.enableFileUpload ?? true, + enableFileUpload: chatwootSettings.enableFileUpload, enableEmojiPicker: chatwootSettings.enableEmojiPicker ?? true, enableEndConversation: chatwootSettings.enableEndConversation ?? true, diff --git a/app/javascript/widget/components/ChatAttachment.vue b/app/javascript/widget/components/ChatAttachment.vue index 169749527..64c17e9c6 100755 --- a/app/javascript/widget/components/ChatAttachment.vue +++ b/app/javascript/widget/components/ChatAttachment.vue @@ -11,6 +11,7 @@ import FluentIcon from 'shared/components/FluentIcon/Index.vue'; import { DirectUpload } from 'activestorage'; import { mapGetters } from 'vuex'; import { emitter } from 'shared/helpers/mitt'; +import { useAttachments } from '../composables/useAttachments'; export default { components: { FluentIcon, FileUpload, Spinner }, @@ -20,13 +21,16 @@ export default { default: () => {}, }, }, + setup() { + const { canHandleAttachments } = useAttachments(); + return { canHandleAttachments }; + }, data() { return { isUploading: false }; }, computed: { ...mapGetters({ globalConfig: 'globalConfig/get', - shouldShowFilePicker: 'appConfig/getShouldShowFilePicker', }), fileUploadSizeLimit() { return resolveMaximumFileUploadSize( @@ -46,7 +50,7 @@ export default { methods: { handleClipboardPaste(e) { // If file picker is not enabled, do not allow paste - if (!this.shouldShowFilePicker) return; + if (!this.canHandleAttachments) return; const items = (e.clipboardData || e.originalEvent.clipboardData).items; // items is a DataTransferItemList object which does not have forEach method diff --git a/app/javascript/widget/components/ChatInputWrap.vue b/app/javascript/widget/components/ChatInputWrap.vue index c423ab220..ce8d17455 100755 --- a/app/javascript/widget/components/ChatInputWrap.vue +++ b/app/javascript/widget/components/ChatInputWrap.vue @@ -3,7 +3,7 @@ import { mapGetters } from 'vuex'; import ChatAttachmentButton from 'widget/components/ChatAttachment.vue'; import ChatSendButton from 'widget/components/ChatSendButton.vue'; -import configMixin from '../mixins/configMixin'; +import { useAttachments } from '../composables/useAttachments'; import FluentIcon from 'shared/components/FluentIcon/Index.vue'; import ResizableTextArea from 'shared/components/ResizableTextArea.vue'; @@ -18,7 +18,6 @@ export default { FluentIcon, ResizableTextArea, }, - mixins: [configMixin], props: { onSendMessage: { type: Function, @@ -29,6 +28,18 @@ export default { default: () => {}, }, }, + setup() { + const { + canHandleAttachments, + shouldShowEmojiPicker, + hasEmojiPickerEnabled, + } = useAttachments(); + return { + canHandleAttachments, + shouldShowEmojiPicker, + hasEmojiPickerEnabled, + }; + }, data() { return { userInput: '', @@ -41,15 +52,10 @@ export default { ...mapGetters({ widgetColor: 'appConfig/getWidgetColor', isWidgetOpen: 'appConfig/getIsWidgetOpen', - shouldShowFilePicker: 'appConfig/getShouldShowFilePicker', shouldShowEmojiPicker: 'appConfig/getShouldShowEmojiPicker', }), showAttachment() { - return ( - this.shouldShowFilePicker && - this.hasAttachmentsEnabled && - this.userInput.length === 0 - ); + return this.canHandleAttachments && this.userInput.length === 0; }, showSendButton() { return this.userInput.length > 0; diff --git a/app/javascript/widget/composables/specs/useAttachments.spec.js b/app/javascript/widget/composables/specs/useAttachments.spec.js new file mode 100644 index 000000000..578fd3ae8 --- /dev/null +++ b/app/javascript/widget/composables/specs/useAttachments.spec.js @@ -0,0 +1,224 @@ +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; +import { useAttachments } from '../useAttachments'; +import { useStore } from 'vuex'; +import { computed } from 'vue'; + +// Mock Vue's useStore +vi.mock('vuex', () => ({ + useStore: vi.fn(), +})); + +// Mock Vue's computed +vi.mock('vue', () => ({ + computed: vi.fn(fn => ({ value: fn() })), +})); + +describe('useAttachments', () => { + let mockStore; + let mockGetters; + + beforeEach(() => { + // Reset window.chatwootWebChannel + delete window.chatwootWebChannel; + + // Create mock store + mockGetters = {}; + mockStore = { + getters: mockGetters, + }; + vi.mocked(useStore).mockReturnValue(mockStore); + + // Mock computed to return a reactive-like object + vi.mocked(computed).mockImplementation(fn => ({ value: fn() })); + }); + + afterEach(() => { + vi.clearAllMocks(); + }); + + describe('shouldShowFilePicker', () => { + it('returns value from store getter', () => { + mockGetters['appConfig/getShouldShowFilePicker'] = true; + + const { shouldShowFilePicker } = useAttachments(); + + expect(shouldShowFilePicker.value).toBe(true); + }); + + it('returns undefined when not set in store', () => { + mockGetters['appConfig/getShouldShowFilePicker'] = undefined; + + const { shouldShowFilePicker } = useAttachments(); + + expect(shouldShowFilePicker.value).toBeUndefined(); + }); + }); + + describe('hasAttachmentsEnabled', () => { + it('returns true when attachments are enabled in channel config', () => { + window.chatwootWebChannel = { + enabledFeatures: ['attachments', 'emoji'], + }; + + const { hasAttachmentsEnabled } = useAttachments(); + + expect(hasAttachmentsEnabled.value).toBe(true); + }); + + it('returns false when attachments are not enabled in channel config', () => { + window.chatwootWebChannel = { + enabledFeatures: ['emoji'], + }; + + const { hasAttachmentsEnabled } = useAttachments(); + + expect(hasAttachmentsEnabled.value).toBe(false); + }); + + it('returns false when channel config has no enabled features', () => { + window.chatwootWebChannel = { + enabledFeatures: [], + }; + + const { hasAttachmentsEnabled } = useAttachments(); + + expect(hasAttachmentsEnabled.value).toBe(false); + }); + + it('returns false when channel config is missing', () => { + window.chatwootWebChannel = undefined; + + const { hasAttachmentsEnabled } = useAttachments(); + + expect(hasAttachmentsEnabled.value).toBe(false); + }); + + it('returns false when enabledFeatures is missing', () => { + window.chatwootWebChannel = {}; + + const { hasAttachmentsEnabled } = useAttachments(); + + expect(hasAttachmentsEnabled.value).toBe(false); + }); + }); + + describe('canHandleAttachments', () => { + beforeEach(() => { + // Set up a default channel config + window.chatwootWebChannel = { + enabledFeatures: ['attachments'], + }; + }); + + it('prioritizes SDK flag when explicitly set to true', () => { + mockGetters['appConfig/getShouldShowFilePicker'] = true; + + const { canHandleAttachments } = useAttachments(); + + expect(canHandleAttachments.value).toBe(true); + }); + + it('prioritizes SDK flag when explicitly set to false', () => { + mockGetters['appConfig/getShouldShowFilePicker'] = false; + + const { canHandleAttachments } = useAttachments(); + + expect(canHandleAttachments.value).toBe(false); + }); + + it('falls back to inbox settings when SDK flag is undefined', () => { + mockGetters['appConfig/getShouldShowFilePicker'] = undefined; + window.chatwootWebChannel = { + enabledFeatures: ['attachments'], + }; + + const { canHandleAttachments } = useAttachments(); + + expect(canHandleAttachments.value).toBe(true); + }); + + it('falls back to inbox settings when SDK flag is undefined and attachments disabled', () => { + mockGetters['appConfig/getShouldShowFilePicker'] = undefined; + window.chatwootWebChannel = { + enabledFeatures: ['emoji'], + }; + + const { canHandleAttachments } = useAttachments(); + + expect(canHandleAttachments.value).toBe(false); + }); + + it('prioritizes SDK false over inbox settings true', () => { + mockGetters['appConfig/getShouldShowFilePicker'] = false; + window.chatwootWebChannel = { + enabledFeatures: ['attachments'], + }; + + const { canHandleAttachments } = useAttachments(); + + expect(canHandleAttachments.value).toBe(false); + }); + + it('prioritizes SDK true over inbox settings false', () => { + mockGetters['appConfig/getShouldShowFilePicker'] = true; + window.chatwootWebChannel = { + enabledFeatures: ['emoji'], // no attachments + }; + + const { canHandleAttachments } = useAttachments(); + + expect(canHandleAttachments.value).toBe(true); + }); + }); + + describe('hasEmojiPickerEnabled', () => { + it('returns true when emoji picker is enabled in channel config', () => { + window.chatwootWebChannel = { + enabledFeatures: ['emoji_picker', 'attachments'], + }; + + const { hasEmojiPickerEnabled } = useAttachments(); + + expect(hasEmojiPickerEnabled.value).toBe(true); + }); + + it('returns false when emoji picker is not enabled in channel config', () => { + window.chatwootWebChannel = { + enabledFeatures: ['attachments'], + }; + + const { hasEmojiPickerEnabled } = useAttachments(); + + expect(hasEmojiPickerEnabled.value).toBe(false); + }); + }); + + describe('shouldShowEmojiPicker', () => { + it('returns value from store getter', () => { + mockGetters['appConfig/getShouldShowEmojiPicker'] = true; + + const { shouldShowEmojiPicker } = useAttachments(); + + expect(shouldShowEmojiPicker.value).toBe(true); + }); + }); + + describe('integration test', () => { + it('returns all expected properties', () => { + mockGetters['appConfig/getShouldShowFilePicker'] = undefined; + mockGetters['appConfig/getShouldShowEmojiPicker'] = true; + window.chatwootWebChannel = { + enabledFeatures: ['attachments', 'emoji_picker'], + }; + + const result = useAttachments(); + + expect(result).toHaveProperty('shouldShowFilePicker'); + expect(result).toHaveProperty('shouldShowEmojiPicker'); + expect(result).toHaveProperty('hasAttachmentsEnabled'); + expect(result).toHaveProperty('hasEmojiPickerEnabled'); + expect(result).toHaveProperty('canHandleAttachments'); + expect(Object.keys(result)).toHaveLength(5); + }); + }); +}); diff --git a/app/javascript/widget/composables/useAttachments.js b/app/javascript/widget/composables/useAttachments.js new file mode 100644 index 000000000..5ffab60a6 --- /dev/null +++ b/app/javascript/widget/composables/useAttachments.js @@ -0,0 +1,42 @@ +import { computed } from 'vue'; +import { useStore } from 'vuex'; + +export function useAttachments() { + const store = useStore(); + + const shouldShowFilePicker = computed( + () => store.getters['appConfig/getShouldShowFilePicker'] + ); + + const shouldShowEmojiPicker = computed( + () => store.getters['appConfig/getShouldShowEmojiPicker'] + ); + + const hasAttachmentsEnabled = computed(() => { + const channelConfig = window.chatwootWebChannel; + return channelConfig?.enabledFeatures?.includes('attachments') || false; + }); + + const hasEmojiPickerEnabled = computed(() => { + const channelConfig = window.chatwootWebChannel; + return channelConfig?.enabledFeatures?.includes('emoji_picker') || false; + }); + + const canHandleAttachments = computed(() => { + // If enableFileUpload was explicitly set via SDK, prioritize that + if (shouldShowFilePicker.value !== undefined) { + return shouldShowFilePicker.value; + } + + // Otherwise, fall back to inbox settings only + return hasAttachmentsEnabled.value; + }); + + return { + shouldShowFilePicker, + shouldShowEmojiPicker, + hasAttachmentsEnabled, + hasEmojiPickerEnabled, + canHandleAttachments, + }; +} diff --git a/app/javascript/widget/store/modules/appConfig.js b/app/javascript/widget/store/modules/appConfig.js index 3ad5078b8..5b720d907 100644 --- a/app/javascript/widget/store/modules/appConfig.js +++ b/app/javascript/widget/store/modules/appConfig.js @@ -25,7 +25,7 @@ const state = { welcomeDescription: '', availableMessage: '', unavailableMessage: '', - enableFileUpload: true, + enableFileUpload: undefined, enableEmojiPicker: true, enableEndConversation: true, }; @@ -64,7 +64,7 @@ export const actions = { welcomeDescription = '', availableMessage = '', unavailableMessage = '', - enableFileUpload = true, + enableFileUpload = undefined, enableEmojiPicker = true, enableEndConversation = true, } From ca5e112a8c4273cdb0ead51c7caa0da50f7447b8 Mon Sep 17 00:00:00 2001 From: Mazen Khalil Date: Wed, 17 Dec 2025 18:54:50 +0300 Subject: [PATCH 18/29] feat: TikTok channel (#12741) fixes: #11834 This pull request introduces TikTok channel integration, enabling users to connect and manage TikTok business accounts similarly to other supported social channels. The changes span backend API endpoints, authentication helpers, webhook handling, configuration, and frontend components to support TikTok as a first-class channel. **Key Notes** * This integration is only compatible with TikTok Business Accounts * Special permissions are required to access the TikTok [Business Messaging API](https://business-api.tiktok.com/portal/docs?id=1832183871604753). * The Business Messaging API is region-restricted and is currently unavailable to users in the EU. * Only TEXT, IMAGE, and POST_SHARE messages are currently supported due to limitations in the TikTok Business Messaging API * A message will be successfully sent only if it contains text alone or one image attachment. Messages with multiple attachments or those combining text and attachments will fail and receive a descriptive error status. * Messages sent directly from the TikTok App will be synced into the system * Initiating a new conversation from the system is not permitted due to limitations from the TikTok Business Messaging API. **Backend: TikTok Channel Integration** * Added `Api::V1::Accounts::Tiktok::AuthorizationsController` to handle TikTok OAuth authorization initiation, returning the TikTok authorization URL. * Implemented `Tiktok::CallbacksController` to handle TikTok OAuth callback, process authorization results, create or update channel/inbox, and handle errors or denied scopes. * Added `Webhooks::TiktokController` to receive and verify TikTok webhook events, including signature verification and event dispatching. * Created `Tiktok::IntegrationHelper` module for JWT-based token generation and verification for secure TikTok OAuth state management. **Configuration and Feature Flags** * Added TikTok app credentials (`TIKTOK_APP_ID`, `TIKTOK_APP_SECRET`) to allowed configs and app config, and registered TikTok as a feature in the super admin features YAML. [[1]](diffhunk://#diff-5e46e1d248631a1147521477d84a54f8ba6846ea21c61eca5f70042d960467f4R43) [[2]](diffhunk://#diff-8bf37a019cab1dedea458c437bd93e34af1d6e22b1672b1d43ef6eaa4dcb7732R69) [[3]](diffhunk://#diff-123164bea29f3c096b0d018702b090d5ae670760c729141bd4169a36f5f5c1caR74-R79) **Frontend: TikTok Channel UI and Messaging Support** * Added `TiktokChannel` API client for frontend TikTok authorization requests. * Updated channel icon mappings and tests to include TikTok (`Channel::Tiktok`). [[1]](diffhunk://#diff-b852739ed45def61218d581d0de1ba73f213f55570aa5eec52aaa08f380d0e16R16) [[2]](diffhunk://#diff-3cd3ae32e94ef85f1f2c4435abf0775cc0614fb37ee25d97945cd51573ef199eR64-R69) * Enabled TikTok as a supported channel in contact forms, channel widgets, and feature toggles. [[1]](diffhunk://#diff-ec59c85e1403aaed1a7de35971fe16b7033d5cd763be590903ebf8f1ca25a010R47) [[2]](diffhunk://#diff-ec59c85e1403aaed1a7de35971fe16b7033d5cd763be590903ebf8f1ca25a010R69) [[3]](diffhunk://#diff-725b90ca7e3a6837ec8291e9f57094f6a46b3ee00e598d16564f77f32cf354b0R26-R29) [[4]](diffhunk://#diff-725b90ca7e3a6837ec8291e9f57094f6a46b3ee00e598d16564f77f32cf354b0R51-R54) [[5]](diffhunk://#diff-725b90ca7e3a6837ec8291e9f57094f6a46b3ee00e598d16564f77f32cf354b0R68) * Updated message meta logic to support TikTok-specific message statuses (sent, delivered, read). [[1]](diffhunk://#diff-e41239cf8dda36c1bd1066dbb17588ae8868e56289072c74b3a6d7ef5abdd696R23) [[2]](diffhunk://#diff-e41239cf8dda36c1bd1066dbb17588ae8868e56289072c74b3a6d7ef5abdd696L63-R65) [[3]](diffhunk://#diff-e41239cf8dda36c1bd1066dbb17588ae8868e56289072c74b3a6d7ef5abdd696L81-R84) [[4]](diffhunk://#diff-e41239cf8dda36c1bd1066dbb17588ae8868e56289072c74b3a6d7ef5abdd696L103-R107) * Added support for embedded message attachments (e.g., TikTok embeds) with a new `EmbedBubble` component and updated message rendering logic. [[1]](diffhunk://#diff-c3d701caf27d9c31e200c6143c11a11b9d8826f78aa2ce5aa107470e6fdb9d7fR31) [[2]](diffhunk://#diff-047859f9368a46d6d20177df7d6d623768488ecc38a5b1e284f958fad49add68R1-R19) [[3]](diffhunk://#diff-c3d701caf27d9c31e200c6143c11a11b9d8826f78aa2ce5aa107470e6fdb9d7fR316) [[4]](diffhunk://#diff-cbc85e7c4c8d56f2a847d0b01cd48ef36e5f87b43023bff0520fdfc707283085R52) * Adjusted reply policy and UI messaging for TikTok's 48-hour reply window. [[1]](diffhunk://#diff-0d691f6a983bd89502f91253ecf22e871314545d1e3d3b106fbfc76bf6d8e1c7R208-R210) [[2]](diffhunk://#diff-0d691f6a983bd89502f91253ecf22e871314545d1e3d3b106fbfc76bf6d8e1c7R224-R226) These changes collectively enable end-to-end TikTok channel support, from configuration and OAuth flow to webhook processing and frontend message handling. ------------ # TikTok App Setup & Configuration 1. Grant access to the Business Messaging API ([Documentation](https://business-api.tiktok.com/portal/docs?id=1832184145137922)) 2. Set the app authorization redirect URL to `https://FRONTEND_URL/tiktok/callback` 3. Update the installation config with TikTok App ID and Secret 4. Create a Business Messaging Webhook configuration and set the callback url to `https://FRONTEND_URL/webhooks/tiktok` ([Documentation](https://business-api.tiktok.com/portal/docs?id=1832190670631937)) . You can do this by calling `Tiktok::AuthClient.update_webhook_callback` from rails console once you finish Tiktok channel configuration in super admin ( will be automated in future ) 5. Enable TikTok channel feature in an account --------- Co-authored-by: Sojan Jose Co-authored-by: iamsivin --- .../tiktok/authorizations_controller.rb | 15 ++ app/controllers/dashboard_controller.rb | 1 + .../super_admin/app_configs_controller.rb | 1 + .../tiktok/callbacks_controller.rb | 144 +++++++++++++++ app/controllers/webhooks/tiktok_controller.rb | 53 ++++++ app/helpers/super_admin/features.yml | 6 + app/helpers/tiktok/integration_helper.rb | 47 +++++ .../dashboard/api/channel/tiktokClient.js | 14 ++ .../dashboard/api/specs/tiktokClient.spec.js | 35 ++++ .../Contacts/ContactsForm/ContactsForm.vue | 2 + .../components-next/icon/provider.js | 1 + .../icon/specs/provider.spec.js | 6 + .../components-next/message/Message.vue | 2 + .../components-next/message/MessageMeta.vue | 10 +- .../components-next/message/bubbles/Embed.vue | 30 +++ .../components-next/message/constants.js | 1 + .../components/widgets/ChannelItem.vue | 9 + .../widgets/conversation/MessagesView.vue | 6 + .../widgets/conversation/ReplyBox.vue | 3 + .../composables/spec/useInbox.spec.js | 8 + .../dashboard/composables/useInbox.js | 7 + app/javascript/dashboard/constants/editor.js | 5 + app/javascript/dashboard/featureFlags.js | 1 + app/javascript/dashboard/helper/inbox.js | 6 + .../dashboard/helper/specs/inbox.spec.js | 13 ++ .../dashboard/i18n/locale/en/chatlist.json | 3 + .../dashboard/i18n/locale/en/contact.json | 3 + .../i18n/locale/en/conversation.json | 3 +- .../dashboard/i18n/locale/en/inboxMgmt.json | 12 ++ .../conversation/contact/ContactForm.vue | 1 + .../conversation/contact/SocialIcons.vue | 1 + .../settings/inbox/ChannelFactory.vue | 2 + .../dashboard/settings/inbox/ChannelList.vue | 30 ++- .../dashboard/settings/inbox/Settings.vue | 6 + .../settings/inbox/channels/Instagram.vue | 126 +++++-------- .../settings/inbox/channels/Tiktok.vue | 79 ++++++++ .../inbox/channels/tiktok/Reauthorize.vue | 37 ++++ .../settings/inbox/components/ChannelName.vue | 1 + .../dashboard/store/modules/inboxes.js | 7 + .../store/modules/specs/inboxes/fixtures.js | 8 + .../modules/specs/inboxes/getters.spec.js | 14 +- .../FluentIcon/dashboard-icons.json | 1 + app/javascript/shared/constants/links.js | 1 + .../shared/helpers/MessageTypeHelper.js | 2 + app/javascript/shared/mixins/inboxMixin.js | 7 + app/jobs/send_reply_job.rb | 1 + app/jobs/webhooks/tiktok_events_job.rb | 69 +++++++ .../channel_notifications_mailer.rb | 5 + app/models/account.rb | 1 + app/models/attachment.rb | 10 +- app/models/channel/tiktok.rb | 45 +++++ app/models/concerns/reauthorizable.rb | 1 + app/models/inbox.rb | 4 + .../conversations/message_window_service.rb | 6 + app/services/tiktok/auth_client.rb | 145 +++++++++++++++ app/services/tiktok/client.rb | 100 ++++++++++ app/services/tiktok/message_service.rb | 174 ++++++++++++++++++ app/services/tiktok/messaging_helpers.rb | 68 +++++++ app/services/tiktok/read_status_service.rb | 36 ++++ app/services/tiktok/send_on_tiktok_service.rb | 47 +++++ app/services/tiktok/token_service.rb | 77 ++++++++ app/views/api/v1/models/_inbox.json.jbuilder | 3 + app/views/layouts/vueapp.html.erb | 1 + .../super_admin/application/_icons.html.erb | 4 + config/features.yml | 3 + config/installation_config.yml | 10 + config/routes.rb | 9 + .../20251027091242_add_tiktok_channel.rb | 15 ++ db/schema.rb | 12 ++ lib/redis/redis_keys.rb | 2 + .../images/dashboard/channels/tiktok.png | Bin 0 -> 24164 bytes .../integrations/channels/badges/tiktok.png | Bin 0 -> 3365 bytes .../tiktok/authorizations_controller_spec.rb | 55 ++++++ .../tiktok/callbacks_controller_spec.rb | 139 ++++++++++++++ .../webhooks/tiktok_controller_spec.rb | 64 +++++++ spec/factories/channel/channel_tiktok.rb | 16 ++ spec/jobs/send_reply_job_spec.rb | 9 + spec/jobs/webhooks/tiktok_events_job_spec.rb | 91 +++++++++ spec/models/attachment_spec.rb | 8 + spec/services/tiktok/message_service_spec.rb | 117 ++++++++++++ .../tiktok/read_status_service_spec.rb | 35 ++++ .../tiktok/send_on_tiktok_service_spec.rb | 71 +++++++ spec/services/tiktok/token_service_spec.rb | 57 ++++++ theme/icons.js | 5 + 84 files changed, 2189 insertions(+), 96 deletions(-) create mode 100644 app/controllers/api/v1/accounts/tiktok/authorizations_controller.rb create mode 100644 app/controllers/tiktok/callbacks_controller.rb create mode 100644 app/controllers/webhooks/tiktok_controller.rb create mode 100644 app/helpers/tiktok/integration_helper.rb create mode 100644 app/javascript/dashboard/api/channel/tiktokClient.js create mode 100644 app/javascript/dashboard/api/specs/tiktokClient.spec.js create mode 100644 app/javascript/dashboard/components-next/message/bubbles/Embed.vue create mode 100644 app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Tiktok.vue create mode 100644 app/javascript/dashboard/routes/dashboard/settings/inbox/channels/tiktok/Reauthorize.vue create mode 100644 app/jobs/webhooks/tiktok_events_job.rb create mode 100644 app/models/channel/tiktok.rb create mode 100644 app/services/tiktok/auth_client.rb create mode 100644 app/services/tiktok/client.rb create mode 100644 app/services/tiktok/message_service.rb create mode 100644 app/services/tiktok/messaging_helpers.rb create mode 100644 app/services/tiktok/read_status_service.rb create mode 100644 app/services/tiktok/send_on_tiktok_service.rb create mode 100644 app/services/tiktok/token_service.rb create mode 100644 db/migrate/20251027091242_add_tiktok_channel.rb create mode 100644 public/assets/images/dashboard/channels/tiktok.png create mode 100644 public/integrations/channels/badges/tiktok.png create mode 100644 spec/controllers/api/v1/accounts/tiktok/authorizations_controller_spec.rb create mode 100644 spec/controllers/tiktok/callbacks_controller_spec.rb create mode 100644 spec/controllers/webhooks/tiktok_controller_spec.rb create mode 100644 spec/factories/channel/channel_tiktok.rb create mode 100644 spec/jobs/webhooks/tiktok_events_job_spec.rb create mode 100644 spec/services/tiktok/message_service_spec.rb create mode 100644 spec/services/tiktok/read_status_service_spec.rb create mode 100644 spec/services/tiktok/send_on_tiktok_service_spec.rb create mode 100644 spec/services/tiktok/token_service_spec.rb diff --git a/app/controllers/api/v1/accounts/tiktok/authorizations_controller.rb b/app/controllers/api/v1/accounts/tiktok/authorizations_controller.rb new file mode 100644 index 000000000..7c7320393 --- /dev/null +++ b/app/controllers/api/v1/accounts/tiktok/authorizations_controller.rb @@ -0,0 +1,15 @@ +class Api::V1::Accounts::Tiktok::AuthorizationsController < Api::V1::Accounts::OauthAuthorizationController + include Tiktok::IntegrationHelper + + def create + redirect_url = Tiktok::AuthClient.authorize_url( + state: generate_tiktok_token(Current.account.id) + ) + + if redirect_url + render json: { success: true, url: redirect_url } + else + render json: { success: false }, status: :unprocessable_entity + end + end +end diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index 5003c4c70..abf42517c 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -73,6 +73,7 @@ class DashboardController < ActionController::Base ENABLE_ACCOUNT_SIGNUP: GlobalConfigService.load('ENABLE_ACCOUNT_SIGNUP', 'false'), FB_APP_ID: GlobalConfigService.load('FB_APP_ID', ''), INSTAGRAM_APP_ID: GlobalConfigService.load('INSTAGRAM_APP_ID', ''), + TIKTOK_APP_ID: GlobalConfigService.load('TIKTOK_APP_ID', ''), FACEBOOK_API_VERSION: GlobalConfigService.load('FACEBOOK_API_VERSION', 'v18.0'), WHATSAPP_APP_ID: GlobalConfigService.load('WHATSAPP_APP_ID', ''), WHATSAPP_CONFIGURATION_ID: GlobalConfigService.load('WHATSAPP_CONFIGURATION_ID', ''), diff --git a/app/controllers/super_admin/app_configs_controller.rb b/app/controllers/super_admin/app_configs_controller.rb index 1a9539bb6..ec51305b5 100644 --- a/app/controllers/super_admin/app_configs_controller.rb +++ b/app/controllers/super_admin/app_configs_controller.rb @@ -46,6 +46,7 @@ class SuperAdmin::AppConfigsController < SuperAdmin::ApplicationController 'linear' => %w[LINEAR_CLIENT_ID LINEAR_CLIENT_SECRET], 'slack' => %w[SLACK_CLIENT_ID SLACK_CLIENT_SECRET], 'instagram' => %w[INSTAGRAM_APP_ID INSTAGRAM_APP_SECRET INSTAGRAM_VERIFY_TOKEN INSTAGRAM_API_VERSION ENABLE_INSTAGRAM_CHANNEL_HUMAN_AGENT], + 'tiktok' => %w[TIKTOK_APP_ID TIKTOK_APP_SECRET], 'whatsapp_embedded' => %w[WHATSAPP_APP_ID WHATSAPP_APP_SECRET WHATSAPP_CONFIGURATION_ID WHATSAPP_API_VERSION], 'notion' => %w[NOTION_CLIENT_ID NOTION_CLIENT_SECRET], 'google' => %w[GOOGLE_OAUTH_CLIENT_ID GOOGLE_OAUTH_CLIENT_SECRET GOOGLE_OAUTH_REDIRECT_URI ENABLE_GOOGLE_OAUTH_LOGIN] diff --git a/app/controllers/tiktok/callbacks_controller.rb b/app/controllers/tiktok/callbacks_controller.rb new file mode 100644 index 000000000..e484905c3 --- /dev/null +++ b/app/controllers/tiktok/callbacks_controller.rb @@ -0,0 +1,144 @@ +class Tiktok::CallbacksController < ApplicationController + include Tiktok::IntegrationHelper + + def show + return handle_authorization_error if params[:error].present? + return handle_ungranted_scopes_error unless all_scopes_granted? + + process_successful_authorization + rescue StandardError => e + handle_error(e) + end + + private + + def all_scopes_granted? + granted_scopes = short_term_access_token[:scope].to_s.split(',') + (Tiktok::AuthClient::REQUIRED_SCOPES - granted_scopes).blank? + end + + def process_successful_authorization + inbox, already_exists = find_or_create_inbox + + if already_exists + redirect_to app_tiktok_inbox_settings_url(account_id: account_id, inbox_id: inbox.id) + else + redirect_to app_tiktok_inbox_agents_url(account_id: account_id, inbox_id: inbox.id) + end + end + + def handle_error(error) + Rails.logger.error("TikTok Channel creation Error: #{error.message}") + ChatwootExceptionTracker.new(error).capture_exception + + redirect_to_error_page(error_type: error.class.name, code: 500, error_message: error.message) + end + + # Handles the case when a user denies permissions or cancels the authorization flow + def handle_authorization_error + redirect_to_error_page( + error_type: params[:error] || 'access_denied', + code: params[:error_code], + error_message: params[:error_description] || 'User cancelled the Authorization' + ) + end + + # Handles the case when a user partially accepted the required scopes + def handle_ungranted_scopes_error + redirect_to_error_page( + error_type: 'ungranted_scopes', + code: 400, + error_message: 'User did not grant all the required scopes' + ) + end + + # Centralized method to redirect to error page with appropriate parameters + # This ensures consistent error handling across different error scenarios + # Frontend will handle the error page based on the error_type + def redirect_to_error_page(error_type:, code:, error_message:) + redirect_to app_new_tiktok_inbox_url( + account_id: account_id, + error_type: error_type, + code: code, + error_message: error_message + ) + end + + def find_or_create_inbox + business_details = tiktok_client.business_account_details + channel_tiktok = find_channel + channel_exists = channel_tiktok.present? + + if channel_tiktok + update_channel(channel_tiktok, business_details) + else + channel_tiktok = create_channel_with_inbox(business_details) + end + + # reauthorized will also update cache keys for the associated inbox + channel_tiktok.reauthorized! + + set_avatar(channel_tiktok.inbox, business_details[:profile_image]) if business_details[:profile_image].present? + + [channel_tiktok.inbox, channel_exists] + end + + def create_channel_with_inbox(business_details) + ActiveRecord::Base.transaction do + channel_tiktok = Channel::Tiktok.create!( + account: account, + business_id: short_term_access_token[:business_id], + access_token: short_term_access_token[:access_token], + refresh_token: short_term_access_token[:refresh_token], + expires_at: short_term_access_token[:expires_at], + refresh_token_expires_at: short_term_access_token[:refresh_token_expires_at] + ) + + account.inboxes.create!( + account: account, + channel: channel_tiktok, + name: business_details[:display_name].presence || business_details[:username] + ) + + channel_tiktok + end + end + + def find_channel + Channel::Tiktok.find_by(business_id: short_term_access_token[:business_id], account: account) + end + + def update_channel(channel_tiktok, business_details) + channel_tiktok.update!( + access_token: short_term_access_token[:access_token], + refresh_token: short_term_access_token[:refresh_token], + expires_at: short_term_access_token[:expires_at], + refresh_token_expires_at: short_term_access_token[:refresh_token_expires_at] + ) + + channel_tiktok.inbox.update!(name: business_details[:display_name].presence || business_details[:username]) + end + + def set_avatar(inbox, avatar_url) + Avatar::AvatarFromUrlJob.perform_later(inbox, avatar_url) + end + + def account_id + @account_id ||= verify_tiktok_token(params[:state]) + end + + def account + @account ||= Account.find(account_id) + end + + def short_term_access_token + @short_term_access_token ||= Tiktok::AuthClient.obtain_short_term_access_token(params[:code]) + end + + def tiktok_client + @tiktok_client ||= Tiktok::Client.new( + business_id: short_term_access_token[:business_id], + access_token: short_term_access_token[:access_token] + ) + end +end diff --git a/app/controllers/webhooks/tiktok_controller.rb b/app/controllers/webhooks/tiktok_controller.rb new file mode 100644 index 000000000..efaa1830c --- /dev/null +++ b/app/controllers/webhooks/tiktok_controller.rb @@ -0,0 +1,53 @@ +class Webhooks::TiktokController < ActionController::API + before_action :verify_signature! + + def events + event = JSON.parse(request_payload) + if echo_event? + # Add delay to prevent race condition where echo arrives before send message API completes + # This avoids duplicate messages when echo comes early during API processing + ::Webhooks::TiktokEventsJob.set(wait: 2.seconds).perform_later(event) + else + ::Webhooks::TiktokEventsJob.perform_later(event) + end + + head :ok + end + + private + + def request_payload + @request_payload ||= request.body.read + end + + def verify_signature! + signature_header = request.headers['Tiktok-Signature'] + client_secret = GlobalConfigService.load('TIKTOK_APP_SECRET', nil) + received_timestamp, received_signature = extract_signature_parts(signature_header) + + return head :unauthorized unless client_secret && received_timestamp && received_signature + + signature_payload = "#{received_timestamp}.#{request_payload}" + computed_signature = OpenSSL::HMAC.hexdigest('SHA256', client_secret, signature_payload) + + return head :unauthorized unless ActiveSupport::SecurityUtils.secure_compare(computed_signature, received_signature) + + # Check timestamp delay (acceptable delay: 5 seconds) + current_timestamp = Time.current.to_i + delay = current_timestamp - received_timestamp + + return head :unauthorized if delay > 5 + end + + def extract_signature_parts(signature_header) + return [nil, nil] if signature_header.blank? + + keys = signature_header.split(',') + signature_parts = keys.map { |part| part.split('=') }.to_h + [signature_parts['t']&.to_i, signature_parts['s']] + end + + def echo_event? + params[:event] == 'im_send_msg' + end +end diff --git a/app/helpers/super_admin/features.yml b/app/helpers/super_admin/features.yml index b05c603cd..34c7a8138 100644 --- a/app/helpers/super_admin/features.yml +++ b/app/helpers/super_admin/features.yml @@ -78,6 +78,12 @@ instagram: enabled: true icon: 'icon-instagram' config_key: 'instagram' +tiktok: + name: 'TikTok' + description: 'Stay connected with your customers on TikTok' + enabled: true + icon: 'icon-tiktok' + config_key: 'tiktok' whatsapp: name: 'WhatsApp' description: 'Manage your WhatsApp business interactions from Chatwoot.' diff --git a/app/helpers/tiktok/integration_helper.rb b/app/helpers/tiktok/integration_helper.rb new file mode 100644 index 000000000..b2de4a092 --- /dev/null +++ b/app/helpers/tiktok/integration_helper.rb @@ -0,0 +1,47 @@ +module Tiktok::IntegrationHelper + # Generates a signed JWT token for Tiktok integration + # + # @param account_id [Integer] The account ID to encode in the token + # @return [String, nil] The encoded JWT token or nil if client secret is missing + def generate_tiktok_token(account_id) + return if client_secret.blank? + + JWT.encode(token_payload(account_id), client_secret, 'HS256') + rescue StandardError => e + Rails.logger.error("Failed to generate TikTok token: #{e.message}") + nil + end + + # Verifies and decodes a Tiktok JWT token + # + # @param token [String] The JWT token to verify + # @return [Integer, nil] The account ID from the token or nil if invalid + def verify_tiktok_token(token) + return if token.blank? || client_secret.blank? + + decode_token(token, client_secret) + end + + private + + def client_secret + @client_secret ||= GlobalConfigService.load('TIKTOK_APP_SECRET', nil) + end + + def token_payload(account_id) + { + sub: account_id, + iat: Time.current.to_i + } + end + + def decode_token(token, secret) + JWT.decode(token, secret, true, { + algorithm: 'HS256', + verify_expiration: true + }).first['sub'] + rescue StandardError => e + Rails.logger.error("Unexpected error verifying Tiktok token: #{e.message}") + nil + end +end diff --git a/app/javascript/dashboard/api/channel/tiktokClient.js b/app/javascript/dashboard/api/channel/tiktokClient.js new file mode 100644 index 000000000..389eb2699 --- /dev/null +++ b/app/javascript/dashboard/api/channel/tiktokClient.js @@ -0,0 +1,14 @@ +/* global axios */ +import ApiClient from '../ApiClient'; + +class TiktokChannel extends ApiClient { + constructor() { + super('tiktok', { accountScoped: true }); + } + + generateAuthorization(payload) { + return axios.post(`${this.url}/authorization`, payload); + } +} + +export default new TiktokChannel(); diff --git a/app/javascript/dashboard/api/specs/tiktokClient.spec.js b/app/javascript/dashboard/api/specs/tiktokClient.spec.js new file mode 100644 index 000000000..5250e2c7b --- /dev/null +++ b/app/javascript/dashboard/api/specs/tiktokClient.spec.js @@ -0,0 +1,35 @@ +import ApiClient from '../ApiClient'; +import tiktokClient from '../channel/tiktokClient'; + +describe('#TiktokClient', () => { + it('creates correct instance', () => { + expect(tiktokClient).toBeInstanceOf(ApiClient); + expect(tiktokClient).toHaveProperty('generateAuthorization'); + }); + + describe('#generateAuthorization', () => { + const originalAxios = window.axios; + const originalPathname = window.location.pathname; + const axiosMock = { + post: vi.fn(() => Promise.resolve()), + }; + + beforeEach(() => { + window.axios = axiosMock; + window.history.pushState({}, '', '/app/accounts/1/settings'); + }); + + afterEach(() => { + window.axios = originalAxios; + window.history.pushState({}, '', originalPathname); + }); + + it('posts to the authorization endpoint', () => { + tiktokClient.generateAuthorization({ state: 'test-state' }); + expect(axiosMock.post).toHaveBeenCalledWith( + '/api/v1/accounts/1/tiktok/authorization', + { state: 'test-state' } + ); + }); + }); +}); diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue b/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue index e77a0c10d..3dc29738e 100644 --- a/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue +++ b/app/javascript/dashboard/components-next/Contacts/ContactsForm/ContactsForm.vue @@ -44,6 +44,7 @@ const SOCIAL_CONFIG = { LINKEDIN: 'i-ri-linkedin-box-fill', FACEBOOK: 'i-ri-facebook-circle-fill', INSTAGRAM: 'i-ri-instagram-line', + TIKTOK: 'i-ri-tiktok-fill', TWITTER: 'i-ri-twitter-x-fill', GITHUB: 'i-ri-github-fill', }; @@ -65,6 +66,7 @@ const defaultState = { facebook: '', github: '', instagram: '', + tiktok: '', linkedin: '', twitter: '', }, diff --git a/app/javascript/dashboard/components-next/icon/provider.js b/app/javascript/dashboard/components-next/icon/provider.js index a356ae2fd..25b54d125 100644 --- a/app/javascript/dashboard/components-next/icon/provider.js +++ b/app/javascript/dashboard/components-next/icon/provider.js @@ -13,6 +13,7 @@ export function useChannelIcon(inbox) { 'Channel::WebWidget': 'i-woot-website', 'Channel::Whatsapp': 'i-woot-whatsapp', 'Channel::Instagram': 'i-woot-instagram', + 'Channel::Tiktok': 'i-woot-tiktok', 'Channel::Voice': 'i-ri-phone-fill', }; diff --git a/app/javascript/dashboard/components-next/icon/specs/provider.spec.js b/app/javascript/dashboard/components-next/icon/specs/provider.spec.js index e32df567d..7f2319b86 100644 --- a/app/javascript/dashboard/components-next/icon/specs/provider.spec.js +++ b/app/javascript/dashboard/components-next/icon/specs/provider.spec.js @@ -61,6 +61,12 @@ describe('useChannelIcon', () => { expect(icon).toBe('i-woot-instagram'); }); + it('returns correct icon for TikTok channel', () => { + const inbox = { channel_type: 'Channel::Tiktok' }; + const { value: icon } = useChannelIcon(inbox); + expect(icon).toBe('i-woot-tiktok'); + }); + describe('TwilioSms channel', () => { it('returns chat icon for regular Twilio SMS channel', () => { const inbox = { channel_type: 'Channel::TwilioSms' }; diff --git a/app/javascript/dashboard/components-next/message/Message.vue b/app/javascript/dashboard/components-next/message/Message.vue index fabef6bc5..6fa7ff2b2 100644 --- a/app/javascript/dashboard/components-next/message/Message.vue +++ b/app/javascript/dashboard/components-next/message/Message.vue @@ -28,6 +28,7 @@ import ImageBubble from './bubbles/Image.vue'; import FileBubble from './bubbles/File.vue'; import AudioBubble from './bubbles/Audio.vue'; import VideoBubble from './bubbles/Video.vue'; +import EmbedBubble from './bubbles/Embed.vue'; import InstagramStoryBubble from './bubbles/InstagramStory.vue'; import EmailBubble from './bubbles/Email/Index.vue'; import UnsupportedBubble from './bubbles/Unsupported.vue'; @@ -317,6 +318,7 @@ const componentToRender = computed(() => { if (fileType === ATTACHMENT_TYPES.AUDIO) return AudioBubble; if (fileType === ATTACHMENT_TYPES.VIDEO) return VideoBubble; if (fileType === ATTACHMENT_TYPES.IG_REEL) return VideoBubble; + if (fileType === ATTACHMENT_TYPES.EMBED) return EmbedBubble; if (fileType === ATTACHMENT_TYPES.LOCATION) return LocationBubble; } // Attachment content is the name of the contact diff --git a/app/javascript/dashboard/components-next/message/MessageMeta.vue b/app/javascript/dashboard/components-next/message/MessageMeta.vue index e0602cb89..e633d7c3c 100644 --- a/app/javascript/dashboard/components-next/message/MessageMeta.vue +++ b/app/javascript/dashboard/components-next/message/MessageMeta.vue @@ -20,6 +20,7 @@ const { isAWhatsAppChannel, isAnEmailChannel, isAnInstagramChannel, + isATiktokChannel, } = useInbox(); const { @@ -60,7 +61,8 @@ const isSent = computed(() => { isAFacebookInbox.value || isASmsInbox.value || isATelegramChannel.value || - isAnInstagramChannel.value + isAnInstagramChannel.value || + isATiktokChannel.value ) { return sourceId.value && status.value === MESSAGE_STATUS.SENT; } @@ -78,7 +80,8 @@ const isDelivered = computed(() => { isAWhatsAppChannel.value || isATwilioChannel.value || isASmsInbox.value || - isAFacebookInbox.value + isAFacebookInbox.value || + isATiktokChannel.value ) { return sourceId.value && status.value === MESSAGE_STATUS.DELIVERED; } @@ -100,7 +103,8 @@ const isRead = computed(() => { isAWhatsAppChannel.value || isATwilioChannel.value || isAFacebookInbox.value || - isAnInstagramChannel.value + isAnInstagramChannel.value || + isATiktokChannel.value ) { return sourceId.value && status.value === MESSAGE_STATUS.READ; } diff --git a/app/javascript/dashboard/components-next/message/bubbles/Embed.vue b/app/javascript/dashboard/components-next/message/bubbles/Embed.vue new file mode 100644 index 000000000..4229e1a89 --- /dev/null +++ b/app/javascript/dashboard/components-next/message/bubbles/Embed.vue @@ -0,0 +1,30 @@ + + +

T*{%v){ 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