spring boot 使用 langchain4j 对接 ollama 本地化部署 deepseek-r1 实现 ai 对话功能

望舒的头像
望舒
标签:
Spring BootjavaLangchain4jOllamaAI 对话本地化部署

本文介绍如何在 Spring Boot 项目中使用 Langchain4j 对接 Ollama 本地部署的 deepseek-r1 模型,实现 AI 对话、流式传输功能。包含依赖配置、YML 配置、Controller 示例及接口调用效果。

1. Ollama deepseek 本地化部署

Ollama 支持在本地部署 deepseek-r1 模型,部署教程参考:ollama 本地化部署 deepseek r1 指南

部署完成后,模型会对外暴露 HTTP 服务接口,供 Spring Boot 程序访问。

2. Maven 依赖配置

pom.xml 中添加 langchain4j-ollama-spring-boot-starter 依赖,该依赖内置了 OllamaChatModel 自动装配

复制
展开
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-ollama-spring-boot-starter</artifactId>
    <version>1.5.0-beta11</version>
</dependency>

3. Spring Boot 配置

application.yml 中配置 Ollama 服务地址和模型名称:

复制
展开
langchain4j:
  ollama:
    chat-model:
      base-url: http://localhost:11434
      model-name: deepseek-r1:32b
    streaming-chat-model:
      base-url: http://localhost:11434
      model-name: deepseek-r1:32b
  • base-url:Ollama 本地服务地址
  • model-name:要使用的本地模型名称

4. Controller 实现

通过 OllamaChatModel 调用模型接口,实现 AI 对话功能:

复制
展开
import dev.langchain4j.data.message.TextContent;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.model.chat.request.ChatRequest;
import dev.langchain4j.model.chat.response.ChatResponse;
import dev.langchain4j.model.chat.response.StreamingChatResponseHandler;
import dev.langchain4j.model.ollama.OllamaChatModel;
import dev.langchain4j.model.ollama.OllamaStreamingChatModel;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

@RestController
@RequestMapping("/model/ollama")
@Slf4j
public class OllamaController {

    @Resource
    private OllamaChatModel ollamaChatModel;
    @Resource
    OllamaStreamingChatModel ollamaStreamingChatModel;

    @GetMapping("/chat")
    public String chat(@RequestParam(value = "message", defaultValue = "你好") String message) {
        ChatRequest request = ChatRequest.builder().messages(UserMessage.userMessage(TextContent.from(message))).build();
        ChatResponse response = ollamaChatModel.chat(request);
        return response.aiMessage().text();
    }

    @GetMapping("/chat-stream")
    public Flux<String> chatStream(@RequestParam(value = "message", defaultValue = "你好") String message, HttpServletResponse response) {
        response.setCharacterEncoding("UTF-8");
        return Flux.create(sink -> {
            ollamaStreamingChatModel.chat(message, new StreamingChatResponseHandler() {
                @Override
                public void onPartialResponse(String partialResponse) {
                    log.info("部分对话响应:{}", partialResponse);
                    sink.next(partialResponse);
                }

                @Override
                public void onCompleteResponse(ChatResponse completeResponse) {
                    log.info("对话完成结束:{}", completeResponse);
                    sink.complete();
                }

                @Override
                public void onError(Throwable error) {
                    sink.error(error);
                }
            });

        });
    }

}
  • 类路径 /model/ollama
  • 方法路径 /chat /chat-stream
  • 最终访问路径:http://localhost:8080/model/ollama/chat?message=你好

5. 接口调用效果

调用接口后,返回模型生成的文本内容,效果如下:

接口调用效果

✅ 总结

通过 Langchain4j + Ollama 本地模型 deepseek-r1,可以快速实现一个 Spring Boot AI 对话接口

  • 无需联网调用远程 API,完全本地化部署
  • 支持多种对话场景,灵活扩展
  • 集成简单,依赖少,易于快速开发

作者:https://blog.xn--rpv331d.com/望舒

链接:https://blog.xn--rpv331d.com/望舒/blog/118

转载注意保留文章出处...

‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌​‌​‌​​​‌​‌​‌‌​‌​‌​‌‌​‌​‌‌​‌‌​​​​​‌​​​​‌​​‌​‌‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​​‌​‌​​​‌‌​​​​‌‌​​​‌‌‌‌​‌‌​‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​​‌​‌​​​‌‌​​​​‌‌​​​‌‌‌‌​‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌​​‌​‌‌‌‌‌‌‌‌​‌​​‌‌​‌​‌‌​‌​​​​​​​​​‌​​​​‌​​‌​‌‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​​‌​‌​​​‌‌​​​​‌‌​​​‌‌‌‌​‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​​‌​‌​​​‌‌​​​​‌‌​​​‌‌‌‌​‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌‌​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​​​​​‌‌​​‌​‌‌‌‌‌​​​‌​‌‌​​‌​​‌‌‌‌‌‌​​​​‌​​​‌‌​​‌​‌‌‌​​​​‌‌‌​​​‌‌‌​‌​‌​‌​​​‌​​​​​‌‌‌​‌​​​‌​​​​​‌‌​‌‌​​‌​​‌‌‌​​​​​‌​‌‌​‌​‌​​​‌‌​​​‌‌‌‌‌​‌‌‌‌​​‌​​​​‌‌‌​‌‌​​​‌​‌​‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌
No data