From cb567281b77b6c7d5258bfa15d3528b5be538016 Mon Sep 17 00:00:00 2001 From: ChinaLHR <1420432344@qq.com> Date: Thu, 26 Oct 2017 11:01:06 +0800 Subject: [PATCH] update with quark-chat portal module --- .../quark/chat/handler/MessageHandler.java | 4 +- .../quark/chat/handler/UserAuthHandler.java | 6 +- .../chat/protocol/QuarkChatProtocol.java | 25 ++- .../quark/chat/protocol/QuarkChatType.java | 2 +- .../quark/chat/service/ChannelManager.java | 14 ++ .../com/quark/chat/service/ChatService.java | 6 + .../chat/service/impl/ChatServiceImpl.java | 8 + .../com/quark/porent/config/WebAppConfig.java | 3 +- .../porent/controller/PageController.java | 4 + .../src/main/resources/static/css/chat.css | 153 +++++++++++++ .../src/main/resources/static/js/quark_api.js | 2 +- .../main/resources/templates/chat/home.html | 201 ++++++++++++++++++ .../resources/templates/common/header.html | 2 +- .../resources/templates/user/register.html | 1 - quark-push/pom.xml | 56 ----- .../java/com/quark/push/PushApplication.java | 28 --- quark-push/src/main/resources/push.properties | 0 resource/images/quark_chat.JPG | Bin 0 -> 72533 bytes resource/images/quark_chat_message.png | Bin 0 -> 19333 bytes resource/images/system1.png | Bin 24156 -> 25709 bytes 20 files changed, 410 insertions(+), 105 deletions(-) create mode 100644 quark-portal/src/main/resources/static/css/chat.css create mode 100644 quark-portal/src/main/resources/templates/chat/home.html delete mode 100644 quark-push/pom.xml delete mode 100644 quark-push/src/main/java/com/quark/push/PushApplication.java delete mode 100644 quark-push/src/main/resources/push.properties create mode 100644 resource/images/quark_chat.JPG create mode 100644 resource/images/quark_chat_message.png diff --git a/quark-chat/src/main/java/com/quark/chat/handler/MessageHandler.java b/quark-chat/src/main/java/com/quark/chat/handler/MessageHandler.java index 51b8fbd..757a5f3 100644 --- a/quark-chat/src/main/java/com/quark/chat/handler/MessageHandler.java +++ b/quark-chat/src/main/java/com/quark/chat/handler/MessageHandler.java @@ -50,7 +50,7 @@ protected void channelRead0(ChannelHandlerContext ctx, TextWebSocketFrame frame) @Override public void channelUnregistered(ChannelHandlerContext ctx) throws Exception { manager.removeChannel(ctx.channel()); - manager.broadMessage(QuarkChatProtocol.buildSysUserCount(manager.getUserCount())); + manager.broadMessage(QuarkChatProtocol.buildSysUserInfo(manager.getUsers())); super.channelUnregistered(ctx); } @@ -64,6 +64,6 @@ public void channelUnregistered(ChannelHandlerContext ctx) throws Exception { public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { logger.error("connection error and close the channel:{}",cause); manager.removeChannel(ctx.channel()); - manager.broadMessage(QuarkChatProtocol.buildSysUserCount(manager.getUserCount())); + manager.broadMessage(QuarkChatProtocol.buildSysUserInfo(manager.getUsers())); } } diff --git a/quark-chat/src/main/java/com/quark/chat/handler/UserAuthHandler.java b/quark-chat/src/main/java/com/quark/chat/handler/UserAuthHandler.java index 62fe2b7..fa953f6 100644 --- a/quark-chat/src/main/java/com/quark/chat/handler/UserAuthHandler.java +++ b/quark-chat/src/main/java/com/quark/chat/handler/UserAuthHandler.java @@ -1,10 +1,8 @@ package com.quark.chat.handler; import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.quark.chat.protocol.QuarkChatProtocol; -import com.quark.chat.protocol.QuarkChatType; import com.quark.chat.protocol.QuarkClientProtocol; import com.quark.chat.service.ChannelManager; import com.quark.chat.utils.NettyUtil; @@ -76,7 +74,7 @@ public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exc logger.warn("Netty Server UserAuthHandler: IDLE exception :{}", address); manager.removeChannel(ctx.channel()); //广播用户数量 - manager.broadMessage(QuarkChatProtocol.buildSysUserCount(manager.getUserCount())); + manager.broadMessage(QuarkChatProtocol.buildSysUserInfo(manager.getUsers())); } } } @@ -152,7 +150,7 @@ private void handleWebSocket(ChannelHandlerContext ctx,WebSocketFrame frame){ boolean isSuccess = manager.authUser(clientProto.getToken(), channel); manager.broadMessage(QuarkChatProtocol.buildAuthProto(isSuccess)); if (isSuccess) - manager.broadMessage(QuarkChatProtocol.buildSysUserCount(manager.getUserCount())); + manager.broadMessage(QuarkChatProtocol.buildSysUserInfo(manager.getUsers())); return; case MESSAGE_REQUEST_CODE: break;//普通的消息留给MessageHandler处理 diff --git a/quark-chat/src/main/java/com/quark/chat/protocol/QuarkChatProtocol.java b/quark-chat/src/main/java/com/quark/chat/protocol/QuarkChatProtocol.java index 8eeaf86..c424f0b 100644 --- a/quark-chat/src/main/java/com/quark/chat/protocol/QuarkChatProtocol.java +++ b/quark-chat/src/main/java/com/quark/chat/protocol/QuarkChatProtocol.java @@ -5,6 +5,7 @@ import com.quark.common.entity.User; import java.util.HashMap; +import java.util.Set; import static com.quark.chat.protocol.QuarkChatType.*; @@ -16,14 +17,17 @@ * QuarkChatProtocol * __ __ __ __ __ __ __ __ __ __ __ ____ __ __ ____ __ * | | | | - * 2 1 Uncertainty + * 4 1 Uncertainty * |__ __ __ __|__ __ __ __|__ __ __ __ __ __ __ __ __| * | | | | * Magic Type Body - * |__ __ __ __|__ __ __ __|__ __ __ __ |__ __ __ __ __| - * | - * | - * result(auth) msg(msg) uid(userid) name icon time(create time) + *|__ __ __ __|__ __ __ __|__ __ __ __ __ __ __ __ __| + * + * + * auth:result + * SysyMsg:msg + * ServerMsg:uid(userid) name icon time(create time) + * UserInfo:count,Set */ public class QuarkChatProtocol { @@ -69,14 +73,15 @@ public static String buildSysMessage(String sysmsg){ } /** - * UserCount - * @param count + * SysUserInfo + * @param users * @return */ - public static String buildSysUserCount(Integer count){ + public static String buildSysUserInfo(Set users){ HashMap map = new HashMap<>(); - map.put("msg",count); - return buildProto(SYS_USERCOUNT_CODE,map); + map.put("count",users.size()); + map.put("userinfo",users); + return buildProto(SYS_USERSINFO_CODE,map); } /** diff --git a/quark-chat/src/main/java/com/quark/chat/protocol/QuarkChatType.java b/quark-chat/src/main/java/com/quark/chat/protocol/QuarkChatType.java index 2956c71..fc26b16 100644 --- a/quark-chat/src/main/java/com/quark/chat/protocol/QuarkChatType.java +++ b/quark-chat/src/main/java/com/quark/chat/protocol/QuarkChatType.java @@ -15,7 +15,7 @@ public class QuarkChatType { public static final byte AUTH_RESPONSE_CODE = 0x04;//认证消息(server) public static final byte MESSAGE_REQUEST_CODE = 0x05;//消息(client) public static final byte MESSAGE_RESPONSE_CODE = 0x06;//消息(server) - public static final byte SYS_USERCOUNT_CODE = 0x07;//在线人数消息 + public static final byte SYS_USERSINFO_CODE = 0x07;//在线人数消息 public static final byte SYS_MESSAGE_CODE = 0x08;//系统消息 public static final byte SYS_ERRORMESSAGE_CODE = 0x09;//系统错误消息 } diff --git a/quark-chat/src/main/java/com/quark/chat/service/ChannelManager.java b/quark-chat/src/main/java/com/quark/chat/service/ChannelManager.java index a2e59f6..75eb498 100644 --- a/quark-chat/src/main/java/com/quark/chat/service/ChannelManager.java +++ b/quark-chat/src/main/java/com/quark/chat/service/ChannelManager.java @@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.HashSet; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicInteger; @@ -58,10 +59,15 @@ public boolean authUser(String token,Channel channel){ User user = chatService.getUserByToken(token); if (user==null)return false; + boolean b = chatService.authUser(user.getId()); + if (b==false) return false; ChatUser chatUser = chatUserMap.get(channel); chatUser.setUser(user); chatUser.setAuth(true); chatUser.setTime(System.currentTimeMillis()); + + //增加一个认证用户 + userCount.incrementAndGet(); return true; } @@ -153,6 +159,14 @@ public void updateUserTime(Channel channel) { public ChatUser getChatUser(Channel channel){return chatUserMap.get(channel);} + public Set getUsers(){ + HashSet users = new HashSet<>(); + for (Channel channel : chatUserMap.keySet()) { + users.add(chatUserMap.get(channel).getUser()); + } + return users; + } + public Integer getUserCount() { return userCount.get(); } diff --git a/quark-chat/src/main/java/com/quark/chat/service/ChatService.java b/quark-chat/src/main/java/com/quark/chat/service/ChatService.java index 9c3e657..14e5d37 100644 --- a/quark-chat/src/main/java/com/quark/chat/service/ChatService.java +++ b/quark-chat/src/main/java/com/quark/chat/service/ChatService.java @@ -17,4 +17,10 @@ public interface ChatService extends BaseService{ */ User getUserByToken(String token); + /** + * 验证用户 + * @param id + * @return + */ + boolean authUser(Integer id); } diff --git a/quark-chat/src/main/java/com/quark/chat/service/impl/ChatServiceImpl.java b/quark-chat/src/main/java/com/quark/chat/service/impl/ChatServiceImpl.java index fa6b5e2..4c2993a 100644 --- a/quark-chat/src/main/java/com/quark/chat/service/impl/ChatServiceImpl.java +++ b/quark-chat/src/main/java/com/quark/chat/service/impl/ChatServiceImpl.java @@ -29,4 +29,12 @@ public User getUserByToken(String token) { User user = redisService.getString(REDIS_USER_KEY + token); return user; } + + @Override + public boolean authUser(Integer id) { + User user = repository.findOne(id); + return user.getEnable() == 1; + } + + } diff --git a/quark-portal/src/main/java/com/quark/porent/config/WebAppConfig.java b/quark-portal/src/main/java/com/quark/porent/config/WebAppConfig.java index 1c614c9..bea41bc 100644 --- a/quark-portal/src/main/java/com/quark/porent/config/WebAppConfig.java +++ b/quark-portal/src/main/java/com/quark/porent/config/WebAppConfig.java @@ -27,7 +27,8 @@ public void addInterceptors(InterceptorRegistry registry) { "/user/set", "/user/seticon", "/user/setpsw", - "/user/message"); + "/user/message", + "/chat"); super.addInterceptors(registry); } } diff --git a/quark-portal/src/main/java/com/quark/porent/controller/PageController.java b/quark-portal/src/main/java/com/quark/porent/controller/PageController.java index 680dfdb..6a79c1b 100644 --- a/quark-portal/src/main/java/com/quark/porent/controller/PageController.java +++ b/quark-portal/src/main/java/com/quark/porent/controller/PageController.java @@ -20,4 +20,8 @@ public String labelhome() { return "label/home"; } + @RequestMapping("/chat") + public String chathome(){ + return "chat/home"; + } } diff --git a/quark-portal/src/main/resources/static/css/chat.css b/quark-portal/src/main/resources/static/css/chat.css new file mode 100644 index 0000000..b0bfd47 --- /dev/null +++ b/quark-portal/src/main/resources/static/css/chat.css @@ -0,0 +1,153 @@ +@charset "utf-8"; +/* + * author yinq + */ +/* 防止用户自定义背景颜色对网页的影响,添加让用户可以自定义字体 */ +html{color:#000;-webkit-text-size-adjust: 100%;-ms-text-size-adjust: 100%; height:100%;} +/* 内外边距通常让各个浏览器样式的表现位置不同 */ +body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {margin:0;padding:0;} +/* 重设 HTML5 标签, IE 需要在 js 中 createElement(TAG) */ +article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section { display:block;} +/* HTML5 媒体文件跟 img 保持一致 */ +audio,canvas,video {display: inline-block;*display: inline;*zoom: 1;} +/* 要注意表单元素并不继承父级 font 的问题 */ +body,button,input,select,textarea{font:14px/1.5 "微软雅黑",tahoma,arial,\5b8b\4f53;} +input,select,textarea{font-size:100%;} +/* 去掉各Table cell 的边距并让其边重合 */ +table{border-collapse:collapse;border-spacing:0;} +/* IE bug fixed: th 不继承 text-align*/ +th{text-align:inherit;} +/* 去除默认边框 */ +fieldset,img{border:0;} +/* ie6 7 8(q) bug 显示为行内表现 */ +iframe{display:block;} +/* 去掉 firefox 下此元素的边框 */ +abbr,acronym{border:0;font-variant:normal;} +/* 一致的 del 样式 */ +del {text-decoration:line-through;} +address,caption,cite,code,dfn,em,th,var {font-style:normal;font-weight:500;} +/* 去掉列表前的标识, li 会继承 */ +ol,ul {list-style:none;} +/* 对齐是排版最重要的因素, 别让什么都居中 */ +caption,th {text-align:left;} +/* 来自yahoo, 让标题都自定义, 适应多个系统应用 */ +h1,h2,h3,h4,h5,h6 {font-size:100%;font-weight:500;} +q:before,q:after {content:'';} +/* 统一上标和下标 */ +sub, sup {font-size: 75%; line-height: 0; position: relative; vertical-align: baseline;} +sup {top: -0.5em;} +sub {bottom: -0.25em;} + +/* 让链接在 hover 状态下显示下划线 */ +a:hover {text-decoration:underline;} +/* 默认不显示下划线,保持页面简洁 */ +ins,a {text-decoration:none;} +/* 清理浮动 */ +.fn-clear:after {visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0;} +.fn-clear {zoom:1; /* for IE6 IE7 */} +/* 隐藏, 通常用来与 JS 配合 */ +body .fn-hide {display:none;} +/* 设置内联, 减少浮动带来的bug */ +.fn-left,.fn-right {display:inline;} +.fn-left {float:left;} +.fn-right {float:right;} +/*webkit内核浏览器滚动条*/ +::-webkit-scrollbar-track-piece{background:#e9e9e9;} +::-webkit-scrollbar{width:8px;height:8px;} +::-webkit-scrollbar-button{display:none;} +::-webkit-scrollbar-track,::-webkit-scrollbar-track-piece{background:-webkit-gradient(linear,left);} +::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb:horizontal{border-radius:6px;background:#bdbdbd;} +::-webkit-scrollbar-thumb:hover{background:#8e8e8e;} +::-webkit-scrollbar-thumb:active{background:#828181;} +@font-face { + font-family: 'fontello'; + src: url('../font/fontello.eot?68245288'); + src: url('../font/fontello.eot?68245288#iefix') format('embedded-opentype'), + url('../font/fontello.woff?68245288') format('woff'), + url('../font/fontello.ttf?68245288') format('truetype'), + url('../font/fontello.svg?68245288#fontello') format('svg'); + font-weight: normal; + font-style: normal; +} + +/*common*/ +body{ background:#176994 ; height:-moz-calc(100% - 100px); height:-webkit-calc(100% - 100px); height:calc(100% - 100px); padding:20px;} +.fontico:before{ + font-family: "fontello"; + font-style: normal; + font-weight: normal; + speak: none; + + display: inline-block; + text-decoration: inherit; + text-align: center; +} +i.down:before{ content:'\e800';} +i.lock:before{ content:'\e806';} +i.logout:before{ content:'\e804';} + +/*chatbox*/ +.chatbox{ overflow:hidden; height:100%; width:100%; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; background-color:rgba(255,255,255,1);} + +/*chat_top*/ +.chat_top{ height:60px; border-bottom:1px solid #eee;} +.logo{ float:left;} +.logo img{ vertical-align:bottom;} +.uinfo{ margin:10px 0; float:right; padding-right:20px;} +.uface{ float:left; height: 40px;} +.uface img{ -moz-border-radius:50%; -webkit-border-radius:50%; border-radius:50%;} +.uinfo .uname{ float:left; line-height:40px; margin-left:10px; color:#2E4059; position:relative;} +.uinfo .uname i.down{ margin-left:50px;} +.managerbox{ display:none; width:100px; border:1px solid #eee; background-color:#FFF; padding:10px 0; position:absolute; top:40px; right:-10px;} +.managerbox a{ display:block; color:#2E4059; padding:0px 10px;} +.managerbox a i{ margin-right:10px;} +.managerbox a:hover{ background-color:#f9f9f9; text-decoration:none;} + +/*chat_message*/ +.chat_message{ height:-moz-calc(100% - 61px); height:-webkit-calc(100% - 61px); height:calc(100% - 61px);} + +/*chat_left*/ +.chat_left{ padding:20px; width:-moz-calc(100% - 240px); width:-webkit-calc(100% - 240px); width:calc(100% - 240px); height:-moz-calc(100% - 40px); height:-webkit-calc(100% - 40px); height:calc(100% - 40px); float:left;} +.message_box{ background-color:#FFF; margin-bottom:20px; height:-moz-calc(100% - 120px); height:-webkit-calc(100% - 120px); height:calc(100% - 120px); overflow:auto;} +.msg_item{ margin-bottom:20px; position:relative;} +.msg_item .uface{ position:absolute; bottom:0px;} +.msg_item .item_right{ margin-left:45px; float:left; margin-right:15px;} +.msg_item .msg{ background-color:#F4F6F8; padding:10px 15px; line-height:24px; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; color:#2E4059; position: relative; margin-bottom:5px;} +.msg.own{ background-color:#E0F1FC;}/*自己的聊天记录显示为蓝色*/ +.msg_item .msg:before { +content: ""; +position: absolute; +bottom: -12px; +left: 10px; +border-width: 12px 12px 0 0 ; +border-style: solid; +border-color: #F4F6F8 transparent; +display: block; +width: 0; +} +.msg_item .msg.own:before{ border-color:#E0F1FC transparent;} +.msg_item .name_time{ font-size:12px; color:#7E90A5; line-height:30px; padding-left:10px;} + +.write_box{ height:100px; overflow:hidden; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; overflow:hidden;} +.write_area{ border:2px solid #E3E8ED; border-bottom:none; padding:5px; outline:none; color:#B4C0CE; margin:0; vertical-align:bottom; width:-moz-calc(100% - 14px); width:-webkit-calc(100% - 14px); width:calc(100% - 14px); height:56px;} +.facebox{ height:32px; width:100%; background-color:#E3E8ED;} +.sub_but{ float:right; padding:0 25px; background-color:#7E90A5; outline:none; border:none; height:32px; cursor:pointer; line-height:30px; color:#FFF;} + +/*chat_right*/ +.chat_right{ width:199px; height:100%; float:left; border-left:1px solid #eee;} +.user_list{ padding:0; overflow:auto; height:100%;} +.user_list li{ padding:10px 20px; color:#2E4059; cursor:pointer;} +.user_list li:hover,.user_list li.selected{ background-color:#F4F6F8;} +.user_list li span{ display:block; float:left; width:30px; height:30px; margin-right:10px;} +.user_list li em{ display:block; float:left; height:30px; line-height:30px;} +.user_list li small{ width:10px; height:10px; margin:10px; float:left; -moz-border-radius:50%; -webkit-border-radius:50%; border-radius:50%;} +small.online{ background-color:#57B869;} +small.offline{ background-color:#EB3E3E;} +.user_list li img{ -moz-border-radius:50%; -webkit-border-radius:50%; border-radius:50%; vertical-align:middle;} + + +/*expression - 表情,有待增加*/ +.expression{ float:left;} + +/*chat_type - 聊天性质,私聊|群聊*/ +.chat_type{ float:left; line-height:30px; padding-left:10px;} diff --git a/quark-portal/src/main/resources/static/js/quark_api.js b/quark-portal/src/main/resources/static/js/quark_api.js index 1eebaa9..2811441 100644 --- a/quark-portal/src/main/resources/static/js/quark_api.js +++ b/quark-portal/src/main/resources/static/js/quark_api.js @@ -18,7 +18,7 @@ var quark_user_update_psd_api = "http://127.0.0.1:8081/user/password/"; var quark_label_posts_api = "http://127.0.0.1:8081/posts/label/"; var quark_webSocket_api = "http://127.0.0.1:8081/quarkServer"; var quark_notification_api="http://127.0.0.1:8081/notification/"; - +var quark_chat_webSocket_api = "ws://127.0.0.1:8083/websocket"; function setCookie(data) { var expiresDate= new Date(); expiresDate.setTime(expiresDate.getTime() + (60 * 60 * 1000)); diff --git a/quark-portal/src/main/resources/templates/chat/home.html b/quark-portal/src/main/resources/templates/chat/home.html new file mode 100644 index 0000000..2e58061 --- /dev/null +++ b/quark-portal/src/main/resources/templates/chat/home.html @@ -0,0 +1,201 @@ + + + + + Quark聊天室 + + + + + + +
+
+
+ + +
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+
+
群聊
+ +
+
+
+ + +
+
    +
+
+
+
+ + + \ No newline at end of file diff --git a/quark-portal/src/main/resources/templates/common/header.html b/quark-portal/src/main/resources/templates/common/header.html index 37c2f89..697869e 100644 --- a/quark-portal/src/main/resources/templates/common/header.html +++ b/quark-portal/src/main/resources/templates/common/header.html @@ -10,7 +10,7 @@ 标签 - + 聊天室 diff --git a/quark-portal/src/main/resources/templates/user/register.html b/quark-portal/src/main/resources/templates/user/register.html index 7a514c9..663ad64 100644 --- a/quark-portal/src/main/resources/templates/user/register.html +++ b/quark-portal/src/main/resources/templates/user/register.html @@ -64,7 +64,6 @@
- diff --git a/quark-push/pom.xml b/quark-push/pom.xml deleted file mode 100644 index 9f733fa..0000000 --- a/quark-push/pom.xml +++ /dev/null @@ -1,56 +0,0 @@ - - - - quark-parent - com.quark - 1.0-SNAPSHOT - ../quark-parent/pom.xml - - 4.0.0 - - com.quark - quark-push - 1.0-SNAPSHOT - jar - - - - - com.quark - quark-common - 1.0-SNAPSHOT - - - - org.springframework.boot - spring-boot-starter - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-test - test - - - - org.springframework.boot - spring-boot-starter-data-redis - - - - org.springframework.boot - spring-boot-starter-websocket - - - org.springframework - spring-messaging - - - - \ No newline at end of file diff --git a/quark-push/src/main/java/com/quark/push/PushApplication.java b/quark-push/src/main/java/com/quark/push/PushApplication.java deleted file mode 100644 index 2ce3dd4..0000000 --- a/quark-push/src/main/java/com/quark/push/PushApplication.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.quark.push; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; - -/** - * @Author : ChinaLHR - * @Date : Create in 21:49 2017/10/19 - * @Email : 13435500980@163.com - */ -@SpringBootApplication -public class PushApplication { - - //TODO 待实现:WebSocket推送分割与整个项目的服务化 - public static void main(String[] args) throws IOException { - Properties properties = new Properties(); - InputStream in = PushApplication.class.getClassLoader().getResourceAsStream("push.properties"); - properties.load(in); - SpringApplication app = new SpringApplication(PushApplication.class); - app.setDefaultProperties(properties); - app.run(args); - } - -} diff --git a/quark-push/src/main/resources/push.properties b/quark-push/src/main/resources/push.properties deleted file mode 100644 index e69de29..0000000 diff --git a/resource/images/quark_chat.JPG b/resource/images/quark_chat.JPG new file mode 100644 index 0000000000000000000000000000000000000000..d74c31007d33457789420c0c6d83097e37504fb0 GIT binary patch literal 72533 zcmeFa1wfolvMBlyoFIXqL4yQ$cL>2PxI+jI!CfanfH3&r1W9n0;2t2jJ3)gx!Cl_u z&;Re)f6u*p&z`&QytD5x&`i(QHQim+RbAE9)y>`1-FM)TjD)lV00RR9yn_A!cZ-i^ z#oa7S0YF|JpaTE^34nv)2OdCkD9{fwK^6cUG!FyKt0t%Xe1}2+kNUQV07PgO75Z5S zngF7$UnM{D_pf^j+*9D50{0ZSr@%c0{^wC(EhT)ds&ch50RZ45VSlqFu%R|XdL-Om z@>P(i-}11m8~^};{9FFt>ol2 z3m+R78T2m)FZ37qUp)f=1+z+PO}(GqjfX_$PEK}w%*-~9Ooqm`uT7YYY^|By4DFa% znOK+s0bw^gLnA8_C$iTjW)?Pr)IaK*smUyi1*tVSSO3yI$$pq~WE zfA5Q{t1FW$JCm)088a&{FE29-8#5alBNT$s(cQ+$(2dc?k>d9XUYIxB?5vE&?Ci$eoUA--rmU~Y ze{bH{=r66?IXk@ht!-l?W|KE2)+RPij!hwRWO(==}(&+z^{7@XBFnnST zCWcNXFQ7^2=WsHzvM{o7ss1s716?#cBJQQ#i}zUQugF>?KzrE6jXHE&&^cI@2@AO;}9 z!y~}MAtJydAR!_mp`gf@o}CI;N#%q5t2|pB_yUI#=|FPBB!FErDvdj zLdML_Ovgq|M^E>&5*S1zBot&6?1vAr>4@-&=>Fl?-4_58=|MKU3M>pc@BkAA78B;~ zD?kd}cZ7%TRQ}wo{QU*<02U4&0TBrq>$Hd0PCnP4NXJlq& z=j7()e=e`6tg5c5t!r)j+TPLG)!j2PIyOErIrVLNacOyFb!~lPbL-&n==kLH?EK>L zCtffB>@T$bg4y5Tg$c#$0UR7G9O6&BU>>+a6D%ei{8Ls0EKwyyL;J_%Y`#d?&!aw- zwIEZlEAQjHb{Iy%rQ}$oI{1m&Z{fH1Hqy!dpY zd4m~r2lz7Ia)4UJiak1Hwr6BexBX@tW^|FY$N4lm7I#9L;~fBf$TE`jOXeC9u_jq%YDalgE==r($oR zm#!LZOAz@Gg-ANlxhC|Lxp>;xR;XqS>t{dz1J#GHTz$q-HJk(A6iaUb*$)I z;I_CD6yuZoZVyuWV5h__=3)GKHj4POzP7#tT5Bido=dHjM`A|es;}Px#O;Qb9=KVV z+}Co9BvjNemwDHcICM&$2pRteOU5%%AR*KYDAVyL`2$JQ@80uatCys<=g=?1~=Gasb4&85YHr6#TjvY&H7`M#GM{t zD~SXD`=l~6LvU7RNTd{6pXz_DSjp4g{p~R=4Sm<=BDC0KxmVIT2{t$1d(zioBUHec z*2VFCHR4t4C`LS3q;f>d+asyFa3MCzf(L~r+S2S_ls#cX4~6+gt4A{HeN7WH-m%^8 zv7%Is?{=5Sq|mB*m1#&@-{>3(SdK5s2pm~+%~xMzO&(rLRos|P_u%uD>096cGILU=a@doXZ`;Ye>f`tGxhKkW^#!=X8k`KF_HormdO|U4N;OD&Z7WM$Xz3D=0zl$C1&KoKoxoDPnS$K)J5J1EQXTn_aVe zl46E*UL4X9`61XLb#>=QwlKEs`f)`yVw>S$rA}TJ6)-Vb8p4=U2yHdKHeAIFdL%{&5Xn28n#s7cPBU!^zJ!>QK%5>?K0`k zRc$_>CCFS=(>5qEspzU(db5T=ZWBBH2sk%3s)`7;@pKFZf2T(^i-@KaV<#kO zy((XQo|e6p&GbF}5FFWI1WRVKoHR4ZG~Xs2RitrNgN&~>fXuV0_CtUm=iF6F&yY!( zQ7!S|>|Ap%M8b}BlAxHH$;`zdO7Z!AXIRm3DdiPe*yA$`R{r-pJe!);9(&cq;{#E7 z7N-shJsRCE{F=8EQTh>FrOs){eW|2PV9yeU{5}krgG&vnf^&Y&h9Uh!39S=N-goYa zl&*x~>@thi7|i1wiHwXN>oGa3Xud{OUw`)5K0YqYAD4GksU5TB@a*TQI0Mxmu3Tv0 z6ZsF;6y|SbJsVGCntK4Qx6T@LHakt2W=S)b^FAVx<|EvjpL2# zz7)?=C8ZxYZhG3P_AA$h-k{A}^p)r@u(bjx4bx~NmPeb10y3u?`WCXpQMm+^k?ael z+aqt;X^NCS>Nc)6JnDxlo0Tw;jeSjl#9jjtp}^;bGmSWx+|%D0pttx~Bm1R;cKE#< z^ZdYfqz*Q>kEr={C#MOgFI)Hq(fS*%{A7{em?$7UeM=S^KDQMHi$atB_P0d0J0G*HJ~PNm~Os!?goPZ(ANb66Z3P*M*Ik$lCJ6J@k;o6nvy z;@Ayadd4X@-oVHR#*=l1e3O;Z2tDfVeOlb+U4+I{GcD?d=EBcDwkU;|g8CxRRw#m)CDX%0$CCHh{AqziIgnmK`c7N^;R)PjRmHr$rp(hX~X z$|^lkIsFyai83je8Xf)=p<*t=#hHkP1lrF zC{2~pG=)u>;Z7OdCCKlJBZlmL)x~JEFd>dAv2a>`q#`1k!d&=yxh90MQ&y5KKS$aV4J=7=C z9Bmyr4hkVM1M^PyeXN0qJOhfA;+&{2jBt0x?|{Kum@Es`)*i=DTRhvIg?(pS3B>kL zMDzDNcYw=h4*xLi1=59_teI&m3C~cOnTW*F%W#oPv*SF*_0hr~SZ)m$E>$8Xu;$kn zoC@|S;?H(1xGx?*ambNwp`S;lca^>a5@v8~^z_9np46|_`hW!;r?W>g0vWYgm>MQu ztG<&fuygFDxKPEN91?Zsoq6iFNPtgdLy$h=Nl*ASQQHEXD)h33G;wfKMd4*gNYmin zFH2 zL_6I^$d_s)#2o8<%|%sb2E|tZWtymJ z!KeLlY2vD8#+ttFEa{4~mm?CzlGiXF_WKFx{WL6GxvWWsnHHq?g@Uc}`=2}(%FBE4 z*``xNE&9y4172p ziC6)$!6RD6aDI!TFp9aoX4~4OokG#y=Oh@V z%7%GvV?mb|WClhve6qGTJwTi(P|Zc}0&M#d(m&|LC+Hkgduos;GOZi()XjPoxBuyT z#nK%n1ev|fWTK@g>orf;8ckz!BNL5C+UY{aw~8VP=t6;wK7yi}DKZbOFwRB$)6!V1 zxyE>FRB7-?G!2B^zY`UsOZM1nx;*LASEx#IZts;uX`>xG?lrf@7HwoJf_dGrb9WSpQ+zu zw#lrY@KUtMnVIQ-KqvKa`a)bxW-s0(%fw9YoBDv%OBU88_Hx0#BFcGBcF4#|%DS*; zs{8gJM@;b!zXfRfazj!aTMg;wOh{h_9#q&b#4Yg5VJcrD%+iphb;Y+6P=v`QvLD5h|T2|E`QyOx+nPm+4Vlzt)~tXWY!KIHVo|cfey7 zo@rj*!9C!U31$vGNJRX z0!+`sRi9@PYv|>7q4WraP4whx(>q2J+ij-^s;2$D>TIO&tc-UUV?QM=2zcLuhH+#~Dh8m^G92X2C>$n+xjVoHrU9xEJixhXyH(-cr zq5CMz@f_!7eW36y-hj}i09vhp(&`ue<@Pg7E@i?LsWy)$`5p(%SLUHc{65aJS)Ubq z*s`%pN-tAM#hrY3_-YR*gY=qoY7=baqr1t1r3d;yld=h5`A7m03Zeq5%B~uO>W1Rj zDvy-Jv0+Bc>(oD3WTbe04WX>c>Qi@NZR%)<^xmmf6YuIKTKTSiQhPwWUs*GH&AQlY zWzoVl5v@IqSYvSdqO%{AD=>iw4wm(PfO7}DOj1>R;@`s1r+edSCM=UkwEo!A{N&Ic&Kl;Trti zOVf86VxnH$#X=u$(v!G8PUxVfS>P5MP4iXl7?B)jv}tdS_MZ;pp{ZIs5F~c@K1Mp)G~(dBibZjXI~ig;d)gc2`G8tEd{;oUToBh4HU)2ij=%LQsX3s z)f^$0=Cpox*}-j{d&V`0Z?y3cCR%UO_i@|6W$c#4bZj!hc;UNAzT`I$S>dj-P!Sd> z%Jq~_(qxl@Cf?|=OY|oD6KQ#yb$zZRBHS9!mo0cD3>eAO2YHsGrp&NU8sni;M!Jr{ zjV%;7IbMtre4pM_-8Q<_* zI3}ip>AwDFmqR$s-`(Rdo@@@>Jp6pi5Q?~E^&qo4Rn{sY=iM%Z8a-&pKT5iw0A`Pb zB5J83&>YXPldTHT>j~)Vds6LlXU0A)6`S;BIODK}RH4NDm)l&oWJ5-^RXkJ<+c%xW zlIxf1*W6`WsU(Tm^aZWMbtk|wehHs^wl$8oBJa8PlHjw+wlYx*XCk@&I&o?n#by1h z%-P0MZ7o38PS9#yeYj|zP=}D2O*S(DIp!%qW20a-f6Z%8<+Ym5vw-*jB{thu?X=mPBnma6kr9^+5dRyuGGRgefHm@DNK>y+UP-T&@AZMDK z)$J}alAs)!mE1g;o-eLkyVgXP-VmJ%SKO*<^eSc9+Dz9?!en%*ZhGG-=gjIbtZfOa z51>-LPV8I#w8ltYxEMHADp!akb+QJAI6uh1tCBDy5>HtpD9jS{1lGo zAp8EzFqoGbVnJ2ZIaH(|LNLbqg&OWs#k_!WXc9lgauuod>#Z{LnVK8yAr8*EQQnT&9cJ4DGEp+WDjTJpsjJ>>1dFzZD6V;nP)6Sg)2cZiLZe@c=pxb#Ufn15! zXslx))9^F+HaP-uLMwNGO!&Z|ETOLeN}xC?1z+H_w}^mgf?#;~2!(UjGzGp@>8k%t+@az1dv<}OS$bI_L#>A9LTuhY!vni(cp$D73L87eSRc3qIyBtdUf zZQu~-o&8La(fEhnjt2AYa2^OHX1ZiDO}AjTp!5&5ypWGjHTdQ4tp)#y%gUe4RKg#% z*}O7eP9k@}6{og1!Kc9Hyq-mJ`SNl7jTph@nQ)j|dc|pZWwFtY#r!E#XC8+#GVb(3 zKQXBxqEHPYX_lCytKdvvO>A;_;_gc&u>xKu^<$)=90EtGTqSXw#8N0ez<)GpNPcHr z?{G2CW_~8W=}=BY@%&{l%!;$_@&e9)l1O-%7eRp{f47lobt&cB3T^KdZb$ORb4ITn z!_V6d#=YpB9gF8IpJdE!TsX^KI};jLQD^{n?8plSR9^ai<)%6{n_MxWKI*JgO;7!D!pD5B z;JjSLUE^Cg?s5m1eb5Z}L|6^VeOS(W%V2Ys_r}X|+Ssu(XG2?+RaY820`JG1tc0}K zk&L6Cqkp6n0sc}gmuNLk{`=A`|l zy{fZS0VB0IA9}Pybp%5Jh^8o{EafsgzDJkT-@wj04%kD zvXZznLBRjYU+~X*=G2S{#j7*ZpV4Z_Um=WBgIE!j!Eg#ei z`(@%r#gAv4(6H~;+=HAOnC3%E(p#pwA8*T^e$b1_WuyC&Kleq*kOCTyM;hx%~bDi+BPWBD@2heYyjdwm0eMF-pdF znoAN#Z$3!YUki6#RNvxAh6!(=-2u@r?|=g*&|kOQ1WAwh4L$*6I=puWU>piTV*>+} zmK85yK`Udz*LtM;`2rTu?ReYkq@X(>q$D#pWBbIDd3%lYTZLzH+jYeMu}3tQH~PJo z7eS}iBtQ0{+u>^q=V~Mz&=UyUxAJ0lKs)pV0!l_l+A#vu4Veo%ue+213pHzezHKtR zN8x@H{))Bl8R=e}?`Nc6)BL?G+{?nfEZob&y^VBlss6S3f3Fwr^}@Yg_-E;bVuOHG z_P}RR$Le$$lvH2kKmdNU?uU$a3QBO-mXwL1AJUGvx32-`wMy{Q^TdKe85~)OuNW#= zSRgFv;zF)xYR1cy_C_prpWtcAql$jOgSr+?pt0b>$2#h0wr=#dk`I}$po{DD>AC_C zihk&F8}#rzNx{)?PK0Ek(%+p3qf+_O3fQn!J4yY2o zq@v%X`}24gUn3qE-U$RI1J;`m9S!j*V5O^be@M)`=eZo8)e9^Xzfdn1o zEsQY1pzqYzozUInnLEI8vUD=S3l4fj;10N{2kmN~KH0Yib;h3zUFu?7HTZx&K&7@; zVJIC;1Kg+oJPk@d_|QW=i3;P*yAij+GM6%cJKD`K*BYC*l8K2Rc#qrA({(7Dnd8I|0R2=^6Y-_!6XH}Zk++2*In+)K)@ zS>k`@TVKsrCN{a(bXSWyE z0ffH+#k_p*->TGW^FS{8fLV=l<#s*o>UHd~n%DM$;;oE&!5#1hbS$IcgLqytdL6;d zc8hXyL(nyG=GVMp_Ze#Dq+K!=ApF@%)lacqlpRjxB0V2EF-Y9zP!jiAJPCRS4cR?G z>_~0B4Pe+V25^k~9F^W-IpjK&=R zy>HE6gO>I^U142pGOHy0Ko(VkNN5@h8}3YX_*Kp65A}k<;tIm$+*z4Ox4e+q!kzu9 zxZJ&F4} zh@vHUV2|*M#%7n)>+wej7oCPfRHU7I30KW%#diNg#nH~7LY>{Dn2AF@su-oB1|P>_ z?105@FPT)aSZhxEV}|h0lVpX@pL@|Ly%{l}cAG|aA*}ZPKzRT?{^U8LqLKeB>?Z1_it%gIGbNo5y%q#sUGFfZHvI$PO`fX7?90Md!+l@Mo;J9wK5?j2G6v+N-l9&57b874CQ>!lF2~YADoT{>wRe`gH>^ z=uo-R;MYRB30#umLkqRnWyV3j+3P=`jttC8P}G{KL5qHK2Je$U#aq1k^NcoHbWQ8Q z-U+pZ|H*C>N*c<2cva7~v?vKdd5#ZL3eq+@>3QCt6~(V}uZ&YeF4P>@+=pGjS*P8C zc!wFg5D(^6NeXl)y*~jdb+x77ndck4i5>>g34NnZzg2Z$Sr?zCi=Ux9Ht30{lHO>J zB?{%euPDE4-lUAIv!+0ek+W7h=jV};pT`~k&b>GP{mRrqCnYDhevsHdCjQrtLPJT! zjYtvPbd%H2Hla)Z$xwr9d21!bS8Qba*#VaE$k4c;=}reDwye4fnGUYmoQJ-Vo@YOj z;;#@ock!a{fGp$^Y|76MyQ|^hA|LJDOmz!9qn80Qed&kZ;t5iCqRZzNC~EsKk>cwi zBDyqx_1;`PgMwpn^0@H1m{XLU8J1ZuFwMK5%V8wkl9c!3a|VQ?2anjAU;OI;;_yF|5CG%g0TZ z4P|;HE|b%YXR9LT^VlRfIz+i&gpwx$u=RWs%@&IuD%9zu2#b#vnaSx1%0f2i?I6XGk{rRN)Lu~?K9%u@9R@;sQI z&>CE#P^Z|kLZ9r2E4Pe4J=EDEQL7D=ESIih?pfI*pk@)(bFI#!2Y%gNQVjKfXh zDAl3ruc$^nn^0y)3&V#sbnCe}nj8sC(<>e4*!WT6bd|ughssns)gaeg=L*M~7^Hgq zL*a| z!dOo$VS<@ReJR4mijB`F?*L>j46*EVa8~~O2Q)6N3=Ip`_oq72!u>P!_>7?^?PN^D zx-mXHk2}qSv$kH&vC}q$RrJQ=7KElotp;~sFE=U5sjm)=?Li2fLV9&Hzj3q8O?6Wc z9WVDiZ+^~xoMVa*hBIg$?dErjzgJvxyg)q=MM86Yf%9I{WHI#X1DEwr9iC&_Ki+eq z@f|6HJCICpwY^+F=}DWB7zGhwUek6qm&ou<;nov#;zZ#PxxA9n z#NlQ~C8?!Dyc$<&)u*VL*kuaOjBFEN(sUOIV8wk^)Ge@zPnrcdIcX4@Ez@tOaI4kn z;G`_qgfj}^H>uFXVz)Px1MCftM;{cHgfOkwfCok;>mauT!lOlw=;x!a_bjZ$ypgc3~UV7N}#O-!A5loOsK_&Jvmb-Gq=vN znhBOkp!}SQoq+Z=UuwHl2#j-wK$9P$|nDwMhI8R zr--#H0r%D*-mA_TKQSZUr0(&`#^-G+sqkaFW8}eH&wQO7jKq>{+*W3$PKo(mvgfDQ zrm(-9D6Z`K9{qCEtlUa!@2owin^3A)3NSUQ&UO&p9x2wejGyF6lArk!0l(sw)+3gX z99rNk%nU~==bsEK{&qUOcKgQXaP;|j$;a|5xj08@A}f+1mV%W2+CULOJI4+B)G;BN zPAhl2U~_WKCpq%??xV{Ge`$tYNjZ;$EdL&m*a9dX||6H~}(Ww3Us ztwd$R#Ls`Dk~6y+VP2eo#&N!zF}N~@no>wV_T=P@ZJ%8Q^?WzmsU>aiz!)=v^r3Ho zSJw`ls_NeDx@Y&3#M>AJTFnjbhMTtV&MsB~y#swG-(P2y9x#qY*wlrGxxcA~)Kn#3 zh@$M8$wjc#P~j!#u7{#9W_{V%C?-)PoqZP1a3q@XO(B;UIzTeE>cPf(&2_z`2@e{) z-HS>dp1-#`&C2{B;~tBd$Z>TCRN!>oKCP5-oJlLf_3$5>PcP+U6jL8LA=ILT^jPs1 ze65mI4fr}`!;QG$C&?hua_B!uP;|+s%Qr>;e0FV4y700Y8e>YbeSQb<4R}6LnT-R} z6w3Ski*0Bi$(gJ;utL{&0&yoe|eLMTDMl$ZMv$t&&z+nsTX&XVQeEZ$a!P`qQPuD`8ro{@H_Gso>B|Gz%c%8 z%#xWOHo<(Mm@Eb?AjJ53SQ??1$b^B?>o}vs8fA!7C0d&2+x)5c z6r8zR>cm61OR8E|QEN?prCwDESs!#;_ah#Oi)5V&WM&niOs*a54a+17E8-ed5BYkv z_iXH0ML3>B>WMWFx$3fW7$YQfz+W~4-lWO$gdNKgyb>?e)|5m)5^#|D(M+P9Jv>UZ zQc7GuZtYG6nWs!8mT_h9syV*M3Qk!5gkl%-oTg45?&9s{W7Bvx^2vrk*nMmGDsm2p1q(9L zQ@*TR^Dioi}OZM$Z3MFf+22EW8l-(kZ`IpG4DCecPNZ1pSj~uU!@4k~ZB} zg~u*tpQqK0>f-P&Y8aQ(I+JauMWvfQ)QsbXZ=R5zzPn_nGDNWMJ!HWSvb6|uN{$nI zYQjTyD8VBX`%US&i~4OHDAERcCzJ3IZxOW^_(}?FwV112-^)=zq!B&ysD!>|Hn(>G z-r-VPH=-(pXV;ja2fsiLsTJa*#*5fwHEf=K>MG*y`re6l z{a~*BQUda#%Aq0H-t0}^R*kZ#c{hC*DR-YL7djF`b>JJ|fGe&fr`>kF@STj)SXk^k z6MqWM7)`RHHtr$tNj`1+H=WBZT1#m6DEy!^zRVu~oVFGJW}&sRcZ={S!RpNjuKlX+ zvqJ^f+~czyWEj9R~?Jqd_~wcLbt}wg<4p9fza^rg<+Y!3A)SK zuj3z+WUYxLAJ>MT;@aga48e2@`9*(?7R`}F&%22i%J4*HouO2cW{&G0?|SJ1y%^+y zeI$D_aStshrCZy3f@fPNMPdNEwsfRY_M36^Kz*%S`a3;)zXwuFst>Q}tItK&`3s&O zNssS2^UtIRT@FmlA5QatXSD@NI3Z5ge$xlCr9?W(_c0EKN`RGJs1ed%oLGPw_qKN$ww~oj2^-;H-7dHpeD55U$n$p@j zgWKx{WB(SC2ysq&eEJ3N$; za!g$&ErJe0)9tHE0`f22OQ+3A8r2TfWg8tH3fM|3C2>VrM4bQw z=shqI&ex!nmj$N_2YbyCN4cpTF=tfJt?b9I{>65rVe-z>Zhmagj*VRn-ku#}Zvpi0 z4-A68!3~QFM_Bs$6 zWFY|R?tPaeNWCQ35oMC&uEb&F<-4B`d=J>5o4v&wsgxJmo2SiwtXmdk!dRQ}W}V`w zu$Z4DdeH#0ZOIy)e`-vU=Hgi>(Tz9_iO&^v?C%xxe(#zrGn`w12H3WA+ zXThwZ%r|c97uXs}=B-d;s`W{okw`RW?EVoGc3lUzQES()M5FuA8tUN5L2alwd5JsKjc&2q^ zV39&J&Qt)!+g^xn{K?u$5oQ@2;u`5ZR13z-tVDn2mv$y46k3yKga5Kg*{C?=a%~km zB1E;Y_3}sDDGjwcJtZ7&^PS1&YS`oKrc5|?yX1;eo zDoLy?;+FH<*WXCB+AJ3Kc=x&D74!t#RZjAgJs~W&Btl}Ta}WMzzP^Y#Tl?78Zk>nM z`7uQ`gT_&C?^Vz8nc;$yi=nP(lsC;=1~;QR67mE+w22j;hy&F$BMg;AVPaPHGfoP= z!vipH>7`{l>;w81=oI(3S0!Vq&j=5T=;*vNn7?Ik_e5WXT_~+e-*j9T$bbbiFib=L z3`cVsDwxFXl_y-Y5KE$(Hf!5ck()8ia%$dxn0dSGqw1~S3G*+MU{!tyUo8x&LcWTU%4;u(6`rtq}P}bku=@&L*+UF$eRcUd(HxH`z^vfwbo#SlT>oBa zxTp9`ngu_d#W8k$uel3tS{@nsu`2T|ivIb=PvGCNMDfQaZgtQ`$ zad*)B9r=ptxMCq?g#|lzoHq6v->eAnb2a*DiFh4rt)4C(2aomZ(_+Uj^9*$p#{~(M z{GLvq73W%`P#*}g>T&tPF)l_KuQVvr)1nQ`o|ZhU7;|1g2@`qI>S=D10vIp*ho_gV z)!O@el58VHd}@kkN<>S3{V<>{9o6ixgm6rNsp;`~ti?(b=y4eh;F%!VOVrtQ!}h6o-; zy`>Y~kmRTc+DprF;x=)RnWziM8V+VOo?CnVOtd02+dfsYNV}L@KHMF*3wn=H0aGNQ z2YHz=H|!dm(f)OTqGWyjxJ|FFF6M*jmZ!c-F11nUI}rAWHxrPElQZz;%;n~-=}_(4 z%))1(g_OZa_U|Yl7+Df^VIkitNAz_nKPPjvs?i7)C95NSe!uB4*C20efu)aNzycra zQfP)atia+^scf;9lHF`%g^i^zqP(iv4fp2lYIo}%;;QaGdxu*;Wy!e@*TdUp-?6H! z*Kr|EXI0xa>knCDpR=C6SuQI;+NQKTD0O;;@;TX0P_&qfK7vWsy=mAAz>7!aBzT!X zH7oqi27f?`lzX2*e3OG&U$9A&*Wv$#kTQK|pFGHn!{c47|xdx zkzfE`djOtm1%m~fRplJq+5v@ZC8`i-by8nW|5K^SHW#d3oAehAp{;%X4ib|LL+}PSnE1>?}8)n z9?LUut52*A$Gr6#Y46N<`V!clofIhRM311E%CkVvm&-@MF~aijK*tzTmf0ccl!yPy z{jzYPT#`e6c==Ti2vg2#`$fHuMqPjnk%=K2u)fjgsji;JaHwm^t*vUOE6Uj#W0sIE z^a#P^sg6LX55lLWrq2yy;i+d_aelPR5EqD=7FDG6t9%UVbiakSr!EsM-e^^gm9p&> zRtf5>f$ERR<|RL$>{v>hg5gy-g7Kko5L2kpL*DX^xOnU{ma+{BWF z5bVJ<&!ot_Xa%N4(eXc(M~$Gs?Rm83K?jw zKAN+Uql>C|1#?xB7$`c(xEUogt?MoC?i|L3mgb1p9yCI=SF`w<(YrYFV z7LUnT3-hk;`!fu&`m9%4a!2O|Ql*;nxD8?C{OsK0u15BGLMte zGYq{9AbO>GNF$nrM|zlpQsez*tsPbJ$o^{ zGzXwclF_XDxe2G>5}$BF_wb_r@C(BKvo84hZ%_}KBGkG010<@Doih(QYyOz?kJ(8E zT-VTuB1lRBXomC#EA}|nYv#br01j}S1}-$KCHe}#Z`{yAXcZ$rSc{#hYlhUf8Z zZQ4~BuyA$ny=pg>ud=IYiY1B*T~ZmbJ(_~tDP3`E1Jc$d7Nci9z{}U7i=UW^7 zwFYht-*O@R@VHc18<;*6jJK0yyX0FdTicfmvLSW4G`8`cy945^QbuBrP4g`n6{$x! zc?)-Zx^r|I_dZc$&U~q*F1>`=vKsRuUi?<^0lt2GgrYzpt%)_Im38u!;LTu>wZ)}E zT4vj-Mchm6Pg~@nOg>GOHWfLF@yaGlP`?Jf@`Hb|t%v_N`it;8FRJ`*2Im6BRt5)e zT<|0nN2~fhzxXT(94}8)oyZPnZ=A*VhgA&;bh;|WO0OT5V4hnyD~&rpoayyt7)hBo z#F0+b$VTPCwY6_GZczVhO1_4zLa`>Q4Gzo7NTi&uy>1*;|cjs8APf z(6v8I>j1}=apKHDjwMPno~LF)&DVZ55)Uq&>&Lv1!Ozq*`uS zLbH-nxsBkm8Rw@!K>6w|#(Z-~KTgCO_U=voIlnBEh~Q^7_KWf7y2G^)iyc1j(bxg$ zd$Tyz4=OqqjLek56Em%o@yIk1CIrqd_!MY|$>9hdYl{c5?SaAhmKyO<^EaVL6LTC^ zAE+N=)`}kK1>^Jb5TQHjIMkctO>|m|yUU*YcdExvvh>?KlA)e%X|zT66$>RymJkF4Zf>6h_I(+(IG-G+n z3V^;lfw?G3!MJ8;-`(#ah!sJTK_7tAW_2r^+NK^is8AI!f$)u@H@Y_HB|t$EJL(3~ zj?f=bKX}}0-A*aDZiNB*`lN%Cg4Q8}<~8kr4W>ti0+^-3zIWj5v7Huc6NH z4f9_`xQ2bf=DAIyc+h{WD<=7SQ8~J?tho4TLUZ%w6QN&4;t7uA+H}mnDj)t;#L$+A z^*7B9n-X=!fkSp#L7-!fUmXfzS$k2TYVfNI8NW)jg6=!_4^l2CGxrX#_f7wQ+WYRf zsFH2nCMY6F6p$n!L69aWNirffIU_kr&N(AAK~P#U(vp!R86<<`oTKENbI!4Od(NCW zXPmk3zB9kyyZ6qS%Rh9}Rb9KfcGcP|eCu1COz-~eKs0v#{VPz_=Uc;cXy3~iosl!LMegwBunL?9@CYMoGWpzt~2f?<>IoYV=>}SWG(n4rco>`w=9eK zyI^M`BHxS;Y>lWtHrJ0o~Gg|j@ z0k){b+atSkGYy)v_AFua%r50vdSw{LqWt550N=-))ABRy2sf#n__VYW^2TV@LSH84 z2VIrcyy~Qca?X!Q#rbtaCbU~Jw$pRpcQvV4Xin@0+SQK1bLIl2Pt6&qVJ1|2@r#?s zPjD#{YD}J@P+WoToH_A4U2%mulgNC}6)2Pko3X1`sCTjF`LK9eX9j(qe}EhttJnW+ z?Xew?3S&;slbsqLX6!15ITH4MbAuoutc0l9RSWNyA_F)x`>i%ZBI~XeG&KC)bq@>~ z+!KFG2M#$rB{AaGl9GNu_bqh{He38PZoNDO*n0YxrE#qnas?hn_hy4{Lv@`?%s!Zr zyk`s>6P5ffXmBU;(~Hy_-!iCfdz_%^>s2`p$jL8E&5Kd_4PPMfA#xa(;_PlSY*xSg zL}f;natGVp?8^?~1DQ`sPP9Pe_=nb$<|Y1VPy9590kKU$d1%0sgV|@CIVwQVKC$c< zB>!*SBw*!Yx}T)O~3 z0jK-xS-?f(F1VZa_2P&8$=&TAa%ZubPxcVs$R)f05OQ$OK2TCb`SI8<&K-!&!=Sq& z3bmQ|w)>Z&S0LAnq27`DFS8JQt)sJX8BZw}X1H%Xinoh^OlN%UU1xlK0=n#sHxemz zciY(eq>knm@sq5#$uo0VTE09dA|fJ%y*(+El&Us0eF|pza%!LTQC19O5d8#=+5rHk zP2y|0t-G0haHb8{o5&X}NW-i(B3i*ls^zn`>5p@;g~NMzv%r*?p?FeM4z_9h+nLJB7S?!XklSS0W z_H+6*oQI!ET^)7I`c&`p)An!1-`Hnjy3y&O&un7EUN2gmn5=}he~<;vR;kMIt?xO{ z5sa{i(ZhLC04LR>@|59B>ckk3gHYV2%j6C!{IY_O8?^dds2Z8cyM-%;!a3ngDtluM z%*_WCi;;n!jmwpk7yElxmh7P`inX9wx-57&P)8TPwd=spNQ=U>qJ~vQ+(t5=FT+fG z;PHB0xUSq0mUDD&u9m?1q2WEh!u~~S4bI1VT?)m!k78UrN<#QrqPKRF`C{8h3XH7p zviNe2xsnZRG}$S^Qg7xN*u6Qjk@V>GtqV*x5O|FA%`2fYZKd{rVsK38_G9$hDfytE zQW4V9Oo!A8ct*qxRF3@k)#-?28`2-V7kK{}qe#)drX*Yz-ef>-3S$qQqwvP}2b~A_ z^uy=2FqFKE-2Gfo<#wc(C}M5Cdm1CV(g&PX1s2bi#OsD3doFQ|RkWeQn{SGTwyk>& z1auvZLpO0>FF{ixD`#S4Cc0VU?$uuzCUmeNW2xlJlBUjrW<2)PwbprD2bz3hrdLV6t$7?Kb5AsEo-Mj!?_cP=g@K zRt)6+JNHnr1sQINJaCzr9o@L;i?1{nWi!Ai9xZ=9M=;F{u9n>o zF*%9|V^cOLD}tjG7a)=8=8B-DGB)T5!;+y{qb31a?oZ#j!ZG!9%TQ6^C@3Ue%Ox_; zMJt|TKn%L(H1AF;NwK)Abup({Bu#Wy9NTz`=-NKPp)H2ohaI?V_xEE&(Kvm4Ss-Eo ze%Y;TjVxQiTC}{aP^e?xr?TgqEEP0oj6B`GQywIAGscGA?}6|_fX@kWdD>b@bX;Zl zSdkZ{Z5Vo@vnnA-lzs-c4lR}G6AtAf{)a0Nx?z~=OGX!)Z|omQEcjjgnyJACcLE-y zktK&V2_WuTaE=Mu5l>6u&BEBY9U3F+>M-%q6+)aj*)|%@`c$5tbcjW(>iIj+h7n*; z=7!sg-(^7}(?&xjZ!RKN`3mDoDJxgGd#hhn%~}sP%gAzWq;5WO!D(Hh(_jru(9z8Q zU?6w4IDaVnOT0b~so9f>(aqp(XyNc!UZ8a6*rdj3t&nkdVYxgq9+Bn5{8%KxO6KtW zBRE{Zys|84Xapo#ibZUU!dO=cLQS9ebsf-kCNl+FVD>>=(oSOMbDEYGdFwexQI^g0E1w_^#a|Zl3_5Xcv zjUf(Y@QudBr6qrQbIhmBth~!gEvBy5FLOfCPg7*06)ptIz1SD7dB!3szTmHcA> zwlICT#2FASuXRmkZhSws*r-Kb5SJ7VwsYWxx{l&)y}&Uvk_$G_8_QiCK30Q=Gnnp- zo5Gjd%2cVC^4obfZ-~kBziw@%%vCix`etuS6RV{H7h(udDddUI?z9!#Y+C`X(1W{h zqz0I(``nC3w-+O0oZDNYx`(xbkQQ#Dp@qWY;n->6YoQ;uZwuM*btj~|f07C#pIp7C z;exdnml_eJXX68>)}vb7R(3GEQMA(;HXd%=@@oI#Ia!Q@J|2l?+8ys~kJ&cVATeHj z<;3X|Bguj99pBUwap07D538aHOR%3VCi`B}t4kp_cN;|T4}ueEh?n+Ej_y7YKMin< zz01O98dGU;X=RgUqJ1{j5-~nKt)kLItUj%+PM?BKo#hUC%a+OUvNe0Xe(!<*qT|Aw zcjZy=x#@bF26M*SQ{E-xns16k4bYJK)KP-OgOZ0zllroCzY^$jk>NgxIWFYMx1Mbv z&{espC6h6?&*-o3<~gpG5GB}x+&V^nLTzxsI1q$}H<5P<)f5{8c>iJV%#q`%=n?O1 z*2W`B6Xc5r8j?(ujx8K+Mj7EZv@NlSgn`fb^jP)MH?e--Wjz*W2w?Q@|${a`c zom@Q<>;Tz}*}?1RH#hgJvdY_exLwHzTTO9$>-mhQ6jqXYkiY?UV z!zZ3hIl>v3sT*u zV32_!gD@AbzNd{Q^n!}mru2#EaDSt|>TRj?2~l({pC!ANQlVxMd`C@=es^J#)!BU} z3i*82d`jL!`tn-K@%&huSlKa)(<@Ldo_%R(qZv21w%HVE*jR^jIqcS;$9D(h)=%2s z9B-4_dETSgL$bEEfz_DU;8!Pn*6JL$K=e7-)u19a!;H`#c&y(1hHj6=qK;qaX0Dzk z+Wvux={tqaNZrhx%@)CU9))5?44J{~`QmD?Xu|5bCUBEiQ3m-#QhaLMUYMowefr+z zH!nNL-)}J4XR{x`g7lhMy9a2?CNN>pQB3G!B>u>dJ~vi2cY`TpG0em99hJEYl7}p4 zB^l*A9xQxJW`TRFhW>t=q^u`LA7!RU&@eRL^aAe|l zX5f|ViG7>d!q!*m+Yw|AdFAQ60nU!5TlSreLTRClaG>%-^9Da6#~f=i9olqCXESeK zwis_5_uiznH;|zsBC4a}Y@?1NesIL;&Y_LTk#Aw(FneeVFA(Epan{dXhYJ!ph;~c! z_C!5bi1&egA4q~7O^u87u}P@1b#dL7b#s5&1~OozKlM;(Y_vsRM)`6RoW)PthZR}O z4e|HV-+u`;l0<8Mc5ptu>5xvl6XfgIK73}b-2L^vl0?5HDFyYsU6>u5cbSiCM!|AL zbbc;qVjZ{1!sUrs4mZh1FQ%qSwKvZTId;+D;`C*=Ny20_^n-j9YP>rdhrfllH)Am3 zRpww5ePj(Q>mhoG&Dw&WLF>onV&4iFC0|n<`@$3{4FmR`*tQD-X-Ww()uxNpQLjxf z`_xp`>qs}$UcqSO9`Z?mxM-*R1`qZxUX~1Z?3A98Ni7=Bn|ooLWSnp56W z;)JVG4Qw;Svwo9g@RJb;BB6+&7i=Y6?ys38>whWNLXd!pPLh>0o)_UK`y%1fgJ-0! zWFqX4O8jKrW+OzOiI}{`S}7!GVsp83Gdx%_nmMN-HOTg?UOBvhl8_xe1->{T#-GRC zTppw}S~(}_)f;(=f;uzcSn6tbV)p_&$I6beDVyKEUGFZntv@=^c{}#a4Lv3h@30wx zmmcO(Av9HjCQ%PP{>a1;j(S%J(444fIniKlE8pzHC%YIkJ7^X>UUfZWQhgfeL%XPb zBz)7>HJUlo-E)>b@QKKrh1)AcSH8bM;iN3z*LzP-zjrB-H+G6HylEhXtqm=KaqbC> zCFq!ejfL@IDmQQ zmids}iWqdJ4oK%wM-5}a=8;#UPBOhABxYXR~1;yQ0N_#7Ji_YJ)j*z_Zw0nH2 zXzjYy-OuAknJ^ng`>Ek*X+DJIp{}hKg>`^OR*>6aZ8vIkwg1hc&=x1QRZ_QV(MZrJ zA=kWseZg)J;c*@D?MxUxNKwucv_hwjvf^SCXvzMV7ve-1{_31B0E;Re!!PK$ZMtqr zxG7@84y+##fE2ELkoC5B7n!_7#KGZc&)BN@ z`H8h?#hi)$MoN=M0jxKOYUMq)r+5R%TNNuTIEK2p`o~y_CpcC)D)i$LZLw`RWjPPh z?(4wQKCP<>xhKmGEPl<83*2k4&gWHT2rHNKs;-OkoTx;0N8?qh4z_Z!n&lJkABOn% zaz)a#g`qNg9fyp+z|>)WDA+c0*t)v7W9UOKoTaO?wD$4fT=BgExKfgtta zqg*v(M@J9iz-|4zi6ZJBPL~P!y(T=}TiEi9M{n*`@E$Araasx|rUx=@;hLEp`5$Tu zY=-6Tf(f1zNh7Uga%zcSz*dXIwu+z_qb80=I%`%-gs*Wo0`Igoiq_uCe*um1Aj3mfayBzDV9i6Y2Hf~a~gh5yt=|q6*N29>^kqplb z6KPfPQQYtg`SJ2jW3*TO=6Sp+h@l|xsc*~ePj^YZHDzv3+7!)uK9NR_Wt1EG-WWZU z36Fkzmk~D6WWB4#@HXV)roGE6ykKL^azgX;b*(@PlN)IX0+Eg&5(lR6*`8vtl$Z87tTOjjnID=NP9Jp=-ntjeDBW)@ifI?d z8n9gIQy+aJbwOFll`kTDXIUS8TJa)5L7=5PCU{(`HDn#tdYKUsbLeWiio5hNU z&9)uhGVT1jwtOz^8tp(PYr?6&OKi?ym0zfv4dsZcaek6XzlO-2moEiO-h?%P0+L zOiCYPipS=4Q9Yg6L(}V$Vu~_ilYQCi8#J**9q{p%weWMo74()gxi0XC6Kf^d=!S2^ z27z_Tot%R@y+9xzejbEM(#@hhA{{3u=%A-d$#xz>Y4fVko!C{kqf=!S z#8FcV!dD~JFV^z4`iEwUwjMs2a&~=_jYlM?!YId)*rropv|C^Dm}`B7?muQvf!-_m ze%K|Tz+=Irn1FC8ZJ!QZKT+~^aTtt?|4ht-@li}3!noM_43pf_ue9>7`Edn0_+x$%O0Qz+25MDdfhl=lkzU3nYTQ?1pnO9?K4{7ix1uCgW3UAzy8(| zWKY)hkq%HY{x-AZpPTGHU(fIVx_%%63ZyU~V*0n+VX}Hx$8S899l62^~rOf=u~i)QW%B@a<`)#JgdBsty+iI_ISdmM5gMtb4(&NZR7V9a;~* zC&=s;nuOAcF)ZmviNnvU1o?{>bQk(XBy$(>D&j|7QpUB_GAF+p+rXuoY)*;y6a1qQ z88e&o9SGbD_OGoG(+my0(8INNjaCHf$+g#1`tDsr5oCBt7HNff~#5H8tlrjbIDI!ALe% zD(@^rF^|t`1hw+})#&&Pw+x0-WlMQdQJ3wpDq4ww#UXY#unUz_*q$OpUnsD11Z7`9 ze7TXc?mSB&x+t|hq9=1T7elz#fdb}0MQ2ZM=SRp%P2Opr_gwGc+n1HLZqZ?tXD;)w zGsSbeLP3VmEGb8!^a(-I$&411uiZC{+nnsjAkij!6DTZv9U4TUE7*8M)H-|~yQFS| zWs@2o5A#RlG?@I|(^WkFS%er4DtrUsYY-}4ygE;KAhkUV+TDQ{EJqB^cAzy&P#E}=1kpfPf z-L4MVlj3Gs?k|umTzeP_K1I_E9(${JNhG zm$)|(3@`y+YvRDeHK>VZovq#nX?j!=Jbw?_uCmbhKre4@rySu*@5R)jqH15u2p2^I zr{IZP_wzmrCYDKjfbqjjQ_#S1r-x=kiq~3AgUwW;(0XJH?+IGs%)Mqa1<^8A2%Bx2 z{db{9qXesZ*s;h0gMleJ%e;NBHF}f2b|<}~~wa$~o+y6u>ntG`nwHrgF6L-rZKr zsuRcbP*L&aEg1eQ9Xdjg;yIaVb-xIsrCJ16NRb@GKE!TwcD#mL>4W@8nE2j}uG;1$ zT5^Upo+IRJEFhR|Fg_X+8~Hkn@|^$Zu-RJ1{49DTDQ+?wtU6IwxUNr^Nxu2cf1aZJL6`^`+4$Mz_p_Vd|JYAB4TZ`E+o@Kxz}cQkpkq6Nj&x z-Qv-y!kbiJ-JDiTmU0R1&6A^4D8{u-DoLIcg+)Ql-C$!Uyg*0qNtyCvHZ9c_H&TN@P4iJ2 zc#W|gy+P|iVr_g~CVh|%Ru&oTRe3EzTLz2yFe1z-(N|WSR7>;mHf;v6%dM#OZq|T(SYOhILws)-UCNU`V%`0l^!Nf6dIABt^vBG? ze}n#iO}83du0qi-@-)u{kpiuHwYIo?7K%7j$Vtq9d(4$U%AX#sK|abt9{qyG9|fHn ziKxs0&hpuUdbYskgp5Gq(h`e*M2jiyagjBUvl@CD)1DA7N+#QaQ%jAzHxn;kh0zpE z9lZrF=^d-%u|i|jaC!YiNFN0cHjz$f(2RbVO91ubuJqeXEa|_~b1R6i3kf&0A{OJ} z8voY!7KLW^VD+%0m(gh#)ZbNCdm(ntGwLti)-6M*EhUgu+ISfjOGvG>;^WlFH>I@Z zHAj+YD(F>xXw_1MC+KEFHv#0Etj6vh@)HS1bHSRt~ zwSW%^dKKw-riHJoy3%^G=a9VmzBOOkFIH0KqED$Z7^QAqt6!uYB|X0}-eGM61y&2jKHj_BOR;In~*3 zswo^xeaYuszKtUAsQmB|OwxOMu}fTU$Q`go;QbpKM0r%vN@Y49P)&Fw3D{nBkXE3S z*VN~&5@V;Ptt(7xtP$9WSeH4!E^yv)Vl|ME9O>Yq4YKBbm8HIY5wf_e>2h!Uq!3ab zO-EG;=3RXGqywXc`tyOlu&k=U7$^^Q83x~Pj8;l;9y%U|8a)o&Ya?NJ8peVm5eO6A zP$Bz?ry5j%@z}^4vcbaf*}rM;yL9Vj_V9of;>8*_3~!SJPjpzy5*5{$o18kCjLM zOqFIb)?7alYbHk9h4%auF`K8srG8V(A7 zak2>!^;9DpK!KwdJ_zOJZ=uaZ*q4WDWP8IBHf&wQz>X4+Z?Npr-LgBY3ufBvmVZvU0}{^KP4GbiB>Jw3ju(M>^=zo{<|SETmTt9 zKu+w2^Fx^yvfmJ{%*+9NNX+Yr2W8~P&KFl84*cb6ssX8?G}c0oCCp5BG=-DlMCH(R z)Ijb9AOk=lb{KPX!uELT!Qh1|hMCNhccLYj@}uZ1l4$a1lCio~C}M6>0`+F>)o}~> z?e8$) z+lqfYQujUH`2KE_3l6M^NAv!iV%1U%sqCEb$jd6C4*Mqdbc_5$8V>D4X2fcmtSj-< z(Evo<%_ErN>~^tgv}NICBF#4!GVM5HCc7FQ+mZ3_hdGZdGF6sAMqc5kisHuua$?55 zNreiU#ctrNobV)du|<|j1I-u|(BtK}TFkkSb(?INCAEo^b^4|wUA%HbB8@xa*1|5` zoNU?6CVi@Un*Q^_?ZxF`PN8$>oVOpS@*jy=RL7mRHfa`A1R>hN>Cem~Y*8?AHvkW+ zZaE)5R_D^xgH_bRe2QChD75<&I2n`~SdIii0`y~Z67PUPSbV3lYuuX|qg@4oJPTG8bk@8hL@_>+*u-lzg0-D7iuTmZ7#GsSuPxDYKDnzNE zT4FF9w+%C-x{dN9R;x{XqfdxnD{T(ME)yWz6tl2I&I<7?hZt#@$*N9>ku-b7*d%g*bO1cwo`<0*Tf~IerroJ@GtD1MDfMOT-)>XN@)x z@^}=saG>R=^Z$_O#{W@_X^Z_97wt6jKSD1O>s-*Xp&Xt_UQyN| zvSK&jakGjneQivtB;Qcyo0bUOd?vY^hOM%Q$ud7#JZ{P<((~KmqGfqEYWit<;<+q#}vKPulj)X(^IVW^(}7Ld~p{+-=Uq`gRB-?fOO2o zp!{&IY<$szHHqhevX4d}2Ngq5XDHK=-r!eO#iSjJy!VJlDq7?9l8yx*VlvQagc~Ac zx%I!ItVT=WJl}nkoObz1yeO>wS+|uH-eW%m7(oXHJOWEiIi{`wMx-6tyxH|Sc2r?@ulg| zhmH~`VPu0&5RhSB2D#q6OChEY9O+7Jpd`ktv65JoY6`kcxg7 zD|nlJ%Ft<(H;;EY!4%+r_YDx(sQB2+xLM*Ct4X~_|FwR}VuQtX=H6kGR#|EEymB!^ z&B|A>SZr{#H049}c!O<#}6~ zpxCtNJ8<+>^b69xM%?$H?KfrAKD~MO#>aeP4X!-gV@oGdNkXnvx73 zhvw@Q=5Eh5-)bT1GBZ8upHyuOd9M6*B-O!IY+-Db0vu4$LO;?o&sEWc}<{V|xxgPb+GY9B89 z{=C`#jc|k7DuSfRvB_l7LFf9mvV2Z~Mjt*K<%i$L>Zgo#zrtlH{iqn8@sL?(1>{kg zkjup$=CnU9=b+BE%Oc3K_>x-5QJ8Jp_3$-D)3OlJ0%jpdB|az2y=|$){-mGeRx)gG z6Za;;eTs;)5K;arDb=Ki`Z@@nJmJ5aQ2bZs`cWqASpM^qOrL z|Mx49vM4}3I3E4@r@lC=UA&dp&lC&4PZb0C3O-(BcLvl z|4((1;8|7YYY-jH6ORjRtawM_9n- zPdOH8BJT}&dT3oNb%)Lo-HgiWvOXFv7)dNMVYIv$S!mB6Ni!Y+Y3L?2#Y^*adk_d5E_-D@E_#ltOXjS^_W4yM6X%#ppW0a>j^}L zgo#T-9>Lh#RAfxMvf@&9}a0&qB=|B{fE&xJs!?IlopL`D`U zo7|G*A<$he{XHRnr)f;H(dvuW49qdkF`!x!AZYUPMfIZ%YsB`H(@QcV80s*lE-HB| z{I#-|i={QOu!09kp_BqM){>T2Sq6gfoP|VY!0&T^i&G?IuJe8Wv$KL2&07aOooIQf zFA>BNZ4bj`%gdaKbsy?S2DVjcIswk>u|CTEE0RX=S82qb#(3%+B58>iG^o=^QC{zWE-;7 zjnotgmdY?e*R96K-4iZmA+BVuhVdoDUrR^Ex>xx-`%V)K1kd}OKan*AR$-X}k}ZIx zIdR+#gu?MOd>!WS=Ol#r9TNTjHxZ4j#1)9#8d_TuA@k3-AQ|8?e@!l$f9(6TbcQR? ze4haMG61;X`wM#t|B#nMkom&B?h1sAP~`i^+gC_GEze(F5%`B_w2ezS_zQwX{uMyU zZ~Ne**6bdmU0|FlT1d#BbF46qJ+!7`sSGC-u^{Jy3x&3zp-|+bg`lw1rHbV1LLaGI zj6S&N@Ht;a$nv(`yxDJ4e+9bjOQ>Nki{%PntN*Ha2-?+qW*2})^+jCY zlBBts*{6|!TdFzMD;L#He2%2V;PxF+Scg&JjW}Bmon&W*)K6x?l?RBLER^0uZGP?3 zwJXqZUvkeUglo;^fmv(ft^iDD$TGy#iOFxz%vd_n!u)6fW8f`IHV+MrVvrEa!a-|J z0=k)6>J`Yp2AZR#rONe~^!}aavF_1RvMstO6)dGB`I}R|*)BD?wFlwBuUu&pm@f{Y z=PP~79akVeZNwQ{JKdctAZhK#YnyzOMY;Ip*9QO6`bF+J&VR5PQ4o;8-{)-n&t?NW z(Dk^$rnz2+pAXOVI$W>A!Jk<^EL7TMOpm$0+xS%a#B%?ci+sT{iA^l=TGodXAAq(9 zC@E)l1u7V9n0us7x_m)R+;e#&uV#nl3e+5YBFdg{hM^6e0o3n6qdrXz;roW~{*x}m zWC_@5*@7l^oPJz{$Sxgjm?%BNuocQ3_irQ3`-}s7g=JQB;+Y^S(p!Ws<5w*LaqAyp~M49_}Qadn!1I)(X1q& zOT1Yh*G`v3w$_>3e2*PAfZ!f0dacva4glE(&wr~y{#F0SZ@K_-m?NQ=06*ENSy3+Y z9L@!h=D3-M=ulHQd7n^k^AX5NjwIp7i_58mSUrIg%1P_H#N9`qzEN?>wZ5%BbhA#6 za%o+%JXXCzjMN`F;mKZ%fqnz2Lz|_$+54m~a^>PmY{k0$rdcIC&INe%E!3FFYkj`b z)yZjU$)9P^)F z`la=H$m_NIX^UNNqU+PM_h%6s^caCG_1jis8#!s?anE7J$) zK>g2JeZWW53sf*IV7&s(lK0iD+|#=PdA1?&p!EXD(B4NaS0JSD3-AjVQ+;a>pm{=t z0fkm77=c22qL^g{R;PY!WP$Z9JS<-rkG%cMPXhr-k|E8%tF!e-=o@~+d2lBFTk5SE zqzmO$gh*5r^oA=UV1C`LPJ5426*?|+NigX1L!wlkeCbZ=N)HLng|Ta1=V3HmQnmG2 zLp`7@o%zg5m(BwE|9G8i_MVufCBxQ7hQ7oGtn#sj3H{w|t*9#yMn{A8{(R<7)Jwn$ zE;_U0cPU^=r=e@N?v;<1uX)flI{O)MDm@=N`MWBpF8jJH24Y>r0gRnGLZi6$QMdA1^scL#1 zT!DNSXY)>X2cg@Y&A-Y_&R^7oZVUWoa)9CSy9L2> z7k>{mR^Izp)*(1U4rlW=LIj|o|6zI}znOi+%z)e>{lm*d?bhRj-^`EhH}kI~hViGq z6u4g9r0dna-n)MnLD!N2kZjkI;g{#nwPd)K4A+w3pE}RAWVn_L|B=3nvD?t_I`ZySLf}w^tfz52fv5*EnTP zW@eW%mt`KvfqI89n?R&%{(Gd|}>Psu}fl83RpDuwUj6Mq$_C9B9g0kJ> z0Gqu=39t3{k%LMIyecBXp9woM`xGu=>j-xMxKNGt6LkkU9kky43M4yy0T_iNeL&#o z_)-YECjd~vK=20-zg>a4PD!=p0GBs2z~0d*Fw1`hO1DCY092vIfQ^2RNUS*pjL-Ze z7=NkuX${3$5cw(eKH~MS2NJoUoj%060<~U&E(7u8ejXHU!1@Z*aZ(^)prPBPYxxY8zCa0^T0+j{r$}x7dQa+DX<&Y ziPu#{8+e_ zhSyJ)Up+^!pVHSF&$Y&Ltv&t+Hp8_h{@-EM6u)8J)kEM;zZVgLXD literal 0 HcmV?d00001 diff --git a/resource/images/quark_chat_message.png b/resource/images/quark_chat_message.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c2ac394f48bf9673aa05410c0ef1ab19876a44 GIT binary patch literal 19333 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 Ag8%>k literal 24156 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 HfBpXeA<*X*