jiuyiUniapp/jiuyi/node_modules/@tencentcloud/call-uikit-vue/tuicall-uikit-vue.es.js

8895 lines
564 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(function(){"use strict";try{if(typeof document!="undefined"){var t=document.createElement("style");t.appendChild(document.createTextNode(".tk-row{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box;width:100%}.tk-col{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box}.tk-loading_dot-container{display:flex;justify-content:space-between;align-items:center;height:100%}.tk-loading_dot-container .tk-loading_dot:nth-child(1){opacity:0;animation-duration:.8s;animation-delay:0s;animation-play-state:running}.tk-loading_dot-container .tk-loading_dot:nth-child(2){opacity:.083;animation-duration:.8s;animation-delay:.2666666667s;animation-play-state:running}.tk-loading_dot-container .tk-loading_dot:nth-child(3){opacity:.1667;animation-duration:.8s;animation-delay:.5333333333s;animation-play-state:running}.tk-loading_dot-container .tk-loading_dot{width:20%;height:20%;border-radius:50%;background-color:#fff;animation-duration:1.8s;animation-name:dotting;animation-timing-function:linear;animation-iteration-count:infinite;animation-fill-mode:both}@keyframes dotting{0%{opacity:.15}1%{opacity:.8}33%{opacity:.8}34%{opacity:.15}to{opacity:.15}}.tk-loading_circle-container{height:100%;border:2px solid;border-radius:50%;border-top-color:transparent;border-right-color:transparent;border-bottom-color:#fff;border-left-color:#fff;background:0 0;vertical-align:middle;box-sizing:border-box;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tk-loading{display:flex;align-items:center;flex-direction:column}.tk-loading .tk-loading_text{margin:10px}.tk-image{position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;vertical-align:middle;width:300px;height:225px}.tk-image .tk-image_inner{width:100%;height:100%}.tk-button{display:inline-flex;align-items:center;justify-content:center}.tk-button.tk-button--small{height:24px}.tk-button.tk-button--middle{height:32px}.tk-button.tk-button--large{height:40px}.tk-button .tk-button--content{color:#606266;font-size:14px;font-weight:500}.tk-button.tk-circle.tk-button--small{width:24px}.tk-button.tk-circle.tk-button--default{width:32px}.tk-button.tk-circle.tk-button--large{width:40px}.btn-content[data-v-135d060f],.btn-content[data-v-f92abf93]{display:flex;flex-direction:column;align-items:center}.tk-text{display:inline-block;overflow:hidden;text-align:center;line-height:normal;white-space:nowrap;font-weight:400;font-size:14px;color:#303133}.tk-text.tk-text--line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;white-space:normal}.btn-content[data-v-4c3a35f0]{display:flex;flex-direction:column;align-items:center}.top-bar-container[data-v-b040a138]{position:absolute;z-index:2;width:100%;height:5.8%;display:flex;align-items:center}.tk-overlay{position:fixed;left:0;top:0;bottom:0;width:100%}.tk-overlay .tk-overlay_mask-container{width:100%;height:100%;z-index:0;position:absolute}.tk-overlay .tk-overlay_mask{position:absolute;left:0;top:0;right:0;bottom:0;background-color:#00000080;z-index:1}.tk-overlay .tk-overlay_slot{position:absolute;left:0;right:0;top:0;bottom:0;z-index:1;display:flex;justify-content:center}.tk-avatar{display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;text-align:center;overflow:hidden;color:#fff;background:#c0c4cc;width:40px;height:40px;font-size:14px}.tk-avatar.tk-avatar--square{border-radius:4px}.tk-avatar.tk-avatar--circle{border-radius:100%}.tk-avatar .tk-avatar_img,.tk-avatar .tk-avatar_image{width:100%;height:100%}.mic-container[data-v-ea062939]{position:relative;width:24px;height:24px}.mic-container .mic-level-container[data-v-ea062939]{position:absolute;left:6px;width:8px;height:14px;display:flex;flex-wrap:wrap;border-radius:4px;overflow:hidden;flex-direction:column-reverse;justify-content:space-between}.mic-container .mic-level-container .mic-level[data-v-ea062939]{width:100%;background-color:#27c39f;transition:height .2s}.overlay-stream-container.mobile .overlay-stream-content-container[data-v-34807212]{width:100%;top:26%;position:absolute;display:flex;justify-content:center;flex-direction:column}.overlay-stream-container.mobile .overlay-stream-content-container .overlay-stream-content[data-v-34807212]{display:flex;flex-direction:column;align-items:center}.overlay-stream-container.mobile .overlay-stream-content-container .overlay-stream-content .overlay-stream-avatar[data-v-34807212]{margin-bottom:12px}.overlay-stream-container.mobile .overlay-stream-content-container .overlay-stream-content .overlay-stream-info[data-v-34807212]{display:flex;align-items:center}.overlay-stream-container.mobile .overlay-stream-content-container .overlay-stream-content .overlay-stream-tip[data-v-34807212]{margin-top:12px;color:#fff}.overlay-stream-container.pc .overlay-stream-content-container[data-v-34807212]{display:flex;height:100%;align-items:center;justify-content:center}.overlay-stream-container.pc .overlay-stream-content-container .overlay-stream-content[data-v-34807212]{display:flex;flex-direction:column;align-items:center}.overlay-stream-container.pc .overlay-stream-content-container .overlay-stream-content .overlay-stream-info[data-v-34807212]{display:flex;align-items:center}.overlay-stream-container[data-v-34807212]{position:absolute;display:flex;height:100%;width:100%;flex-direction:column;justify-content:center;align-items:center}.waiting-container[data-v-b3565c48]{position:absolute;top:0;left:0;bottom:0;right:0;z-index:1}.groupcall-info[data-v-b3565c48]{display:flex;flex-direction:column;align-items:center;margin-top:24px;z-index:1;color:#fff;width:100%}.groupcall-info .avatar-group[data-v-b3565c48]{display:flex;flex-wrap:wrap;margin-top:12px;align-items:center;justify-content:center;max-width:70%}.groupcall-info .avatar-group .avatar-item[data-v-b3565c48]{width:10vw;height:10vw;margin-left:10px;margin-top:10px}.tk-toggle-window{height:100%;position:relative}.tk-toggle-window-item{height:100%;position:absolute}.tk-toggle-window-item.tk-toggle-window-item--big{width:100%;height:100%;z-index:0}.tk-toggle-window-item.mobile.tk-toggle-window-item--small{z-index:1;width:24.3%!important;height:19.7%!important;border-radius:5px;left:98%;top:8%;transform:translate(-100%);overflow:hidden}.tk-toggle-window-item.pc.tk-toggle-window-item--small{top:2%;left:2%;width:22%;height:21%;border-radius:12px;overflow:hidden;z-index:1}.stream-userInfo[data-v-4a815645]{padding:2px 5px;display:flex;align-items:center;background-color:#000000a6;color:#fff}.stream-userInfo .nickname[data-v-4a815645]{display:flex}.stream-icon[data-v-04a5fe7d]{width:30px;height:30px;background:rgba(34,38,46,.5019607843);border-radius:50%;display:flex;align-items:center;justify-content:center}.switch-camera[data-v-04a5fe7d]{margin:0 12px}.pusher-container[data-v-8cf5d7b3]{width:100%;height:100%;position:relative;background-color:#4c515a}.pusher-container .audio-stream-container[data-v-8cf5d7b3]{position:absolute;z-index:3;width:100%;height:100%}.pusher-container .stream-info-container[data-v-8cf5d7b3]{position:absolute;bottom:0;z-index:3;width:100%}.pusher-container .stream-info-container.mobile[data-v-8cf5d7b3]{margin-bottom:8px}.stream[data-v-b0aae39e]{width:100%;height:100%}.small-view[data-v-b0aae39e]{position:absolute;width:100%;height:100%;background-color:#000}.small-view .stream-box[data-v-b0aae39e],.small-view .stream-box .stream[data-v-b0aae39e]{width:100%;height:100%}.large-view[data-v-b0aae39e]{width:100%;height:100%;background-color:#000}.large-view .stream-box[data-v-b0aae39e],.large-view .stream-box .stream[data-v-b0aae39e]{width:100%;height:100%}.player-container[data-v-8e509e0d]{width:100%;height:100%;position:relative;background-color:#4c515a}.player-container .audio-stream-container[data-v-8e509e0d]{position:absolute;z-index:1;width:100%;height:100%}.player-container .stream-info-container[data-v-8e509e0d]{position:absolute;bottom:0;z-index:1;width:100%}.player-container .stream-info-container.mobile[data-v-8e509e0d]{margin-bottom:8px}.float-control-panel[data-v-63373c5d]{width:168px;height:56px;background:white;z-index:13;display:flex;flex-wrap:nowrap;justify-content:center;border-radius:40px;box-shadow:#00000029 0 3px 6px,#0000003b 0 3px 6px}.float-control-item-icon[data-v-63373c5d]{display:flex;flex-direction:row;justify-content:center;align-items:center;width:56px;height:56px;position:relative}.float-control-item-icon-container[data-v-63373c5d]{border-radius:40px;width:40px;height:40px;margin:.5rem;cursor:pointer;display:flex;flex-direction:row;justify-content:center;align-items:center}.float-control-item-icon-container[data-v-63373c5d]:hover{background:rgba(218,218,218,.3)}.singlecall-video-float[data-v-381004f2]{width:110px;height:196px;display:flex;z-index:99;flex-direction:column;align-items:center;background:#000;border-radius:12px;box-shadow:0 0 10px #35394166;overflow:hidden}.singlecall-video-float .singlecall-video-float-content[data-v-381004f2]{width:100%;height:100%;display:flex;justify-content:center;flex-direction:column;align-items:center}.singlecall-video-float .float-window-tip-container[data-v-381004f2]{position:absolute;bottom:8px}.singlecall-audio-float[data-v-381004f2]{width:72px;height:72px;display:flex;z-index:99;flex-direction:column;align-items:center;background:#FFF;border-radius:12px;box-shadow:0 0 10px #35394166}.singlecall-audio-float .singlecall-audio-float-content[data-v-381004f2]{width:100%;height:100%;display:flex;justify-content:center;flex-direction:column;align-items:center}.click-container[data-v-00e5113e]{position:absolute;width:100%;height:100%;z-index:2}.groupcall-video-float.float[data-v-00e5113e]{width:72px;height:90px;display:flex;z-index:99;flex-direction:column;align-items:center;border-radius:12px;background:#FFF;box-shadow:0 0 10px #35394166;box-sizing:border-box;overflow:hidden}.groupcall-video-float.float .stream-container[data-v-00e5113e]{position:relative;width:72px;height:70px}.groupcall-video-float.float .video[data-v-00e5113e]{width:72px;height:70px;position:absolute}.groupcall-video-float.float .audio[data-v-00e5113e]{position:absolute;width:100%;height:70px;padding-top:10px;background-color:#fff;display:flex;flex-direction:column;align-items:center}.groupcall-video-float.float .device-status[data-v-00e5113e]{width:100%;height:20px;background-color:#f9f6f4;display:flex;position:relative;justify-content:space-around}.groupcall-video-float.not-float[data-v-00e5113e]{width:100%;height:100%}.groupcall-video-float.not-float .stream-container[data-v-00e5113e],.groupcall-video-float.not-float .stream-container .video[data-v-00e5113e]{height:100%}.float-window-container.not-float[data-v-794f0a9b]{width:100%;height:100%}.float-window-container.float[data-v-794f0a9b]{position:absolute}.float-window-container.float.pc[data-v-794f0a9b]{top:50px;left:50%;transform:translate(-50%)}.float-window-container.float.mobile[data-v-794f0a9b]{top:150px;right:0}.singlecall-media-container[data-v-670a78d8]{width:100%;height:100%;position:absolute;z-index:0}.singlecall-media-container.float[data-v-670a78d8]{position:relative}.singlecall-media-container.pc[data-v-670a78d8]{border-radius:12px;overflow:hidden}.roggle-btn[data-v-670a78d8]{position:absolute;left:100px;z-index:100;top:0}.tk-message{position:fixed;left:50%;transform:translate(-50%);padding:10px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:14px;z-index:9999;color:#000;border-color:#e9e9eb;background-color:#f4f4f5}.tk-message .tk-message_icon{margin-right:5px}.tk-message .tk-message_close{cursor:pointer;margin-left:5px}.tk-message--info{color:#909399;border-color:#e9e9eb;background-color:#f4f4f5}.tk-message--success{color:#67c23a;border-color:#e1f3d8;background-color:#f0f9eb}.tk-message--warning{color:#e6a23c;border-color:#faecd8;background-color:#fdf6ec}.tk-message--error{color:#f56c6c;border-color:#fde2e2;background-color:#fef0f0}.tk-grid-item{display:flex;justify-content:center}.tk-grid-item.h5{transition-property:width,height,left,top;transition-duration:.3s;transition-timing-function:ease-in}.tk-justify-start{justify-content:flex-start}.tk-justify-center{justify-content:center}.tk-justify-end{justify-content:flex-end}.tk-justify-space-between{justify-content:space-between}.tk-justify-space-around{justify-content:space-around}.tk-justify-space-evenly{justify-content:space-evenly}.tk-align-center{align-items:center}.tk-align-start{align-items:flex-start}.tk-align-end{align-items:flex-end}.tk-align-stretch{align-items:stretch}.tk-align-baseline{align-items:baseline}.tk-blur{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.tk-round{border-radius:20px}.tk-circle{border-radius:100%}.tk-popover{position:relative}.tk-popover .tk-popover_content{display:inline-block;vertical-align:middle;min-width:120px;position:absolute;background:#FFFFFF;border-radius:4px;font-size:14px;box-shadow:0 0 12px #0000001f;overflow-wrap:break-word;box-sizing:border-box;text-align:center}.tk-popover .tk-popover_arrow{position:absolute;transform:translate(-50%);width:0;height:0}.tk-popover .tk-popover_trigger{display:inline-block;position:relative;vertical-align:middle}.device-selector-container[data-v-d176bcfa]{width:180px;display:flex;flex-direction:column;align-items:center;padding:6px;font-weight:500}.device-selector-container .device-item[data-v-d176bcfa]{overflow:hidden;padding:5px 3px;text-align:left;line-height:16px;cursor:pointer}.device-selector-container .device-item[data-v-d176bcfa]:hover{border-radius:5px;background:rgba(255,255,255,.3215686275)}.device-selector-container .device-item.select[data-v-d176bcfa]{background-color:#0f101433;border-radius:3px}.device-selector-container .control-item[data-v-d176bcfa]{width:100%;height:1px;background-color:#fff3}.scroll-container[data-v-d176bcfa]{width:100%;overflow:hidden}.scroll-container .scroll-content[data-v-d176bcfa]{max-height:60px;margin-right:-26px;overflow:hidden auto;padding-right:20px}.btn-content[data-v-01140bf2],.btn-content[data-v-3585d156],.btn-content[data-v-c3da87f5],.btn-content[data-v-7902763b],.btn-content[data-v-10a39409],.btn-content[data-v-c825445a],.btn-content[data-v-6eb55b3d],.btn-content[data-v-57c7f51f],.btn-content[data-v-f7839a20]{display:flex;flex-direction:column;align-items:center}.button-panel-container[data-v-6582c17d]{position:absolute;z-index:1}.button-panel-container.pc[data-v-6582c17d]{width:60%;height:63px;margin:0 auto;bottom:6%;left:50%;z-index:2;transform:translate(-50%)}.button-panel-container.mobile[data-v-6582c17d]{display:flex;justify-content:center;height:27%;bottom:0;width:100%}.button-panel-container.mobile.h5[data-v-6582c17d]{transition-property:width,height,left,top;transition-duration:.3s;transition-timing-function:ease-in}.button-panel-container.mobile.groupCall.showBackGround[data-v-6582c17d]{background-color:#4f586b}.button-panel-container.mobile .button-group[data-v-6582c17d]{position:absolute;width:72%;top:2vh;height:80%}.button-panel-container.mobile.close[data-v-6582c17d]{height:14%;align-items:center}.button-panel-container.mobile.close .button-group[data-v-6582c17d]{position:absolute;width:72%;right:6.2vw;height:40px;top:auto;bottom:auto}.button-panel-container .button-group[data-v-6582c17d]{position:relative;height:100%}.button-panel-container .toggle-button-container[data-v-6582c17d]{display:flex;align-items:center;position:absolute;left:8.2vw}.button-panel-container .toggle-button-container.h5[data-v-6582c17d]{transition-property:width,height,left,top;transition-duration:.3s;transition-timing-function:ease-in}.button-panel-container.open .toggle-button-container[data-v-6582c17d]{bottom:6vh}.singlecall-container[data-v-317c1d41]{height:100%}.stream-loading-container[data-v-56b8bc56]{width:100%;height:100%;position:absolute;z-index:1;display:flex;align-items:center;justify-content:center}.groupcall-media-container[data-v-0629f0d8]{width:100%;height:100%;position:absolute;z-index:1}.groupcall-media-container.pc[data-v-0629f0d8]{border-radius:12px;overflow:hidden}.groupcall-media-container.pc.two-layout[data-v-0629f0d8]{margin-top:20%}.groupcall-media-container.pc .tk-toggle-window-item--small[data-v-0629f0d8]{top:2%;left:2%;width:22%;height:21%;border-radius:12px;overflow:hidden}.groupcall-media-container.mobile[data-v-0629f0d8]{margin-top:5.5vh}.groupcall-media-container.mobile.float[data-v-0629f0d8]{margin-top:0}.groupcall-media-container.mobile.two-layout[data-v-0629f0d8]{margin-top:15vh}.groupcall-media-container.mobile.two-layout.float[data-v-0629f0d8]{margin-top:0}.dialog[data-v-7a89cdf3]{background:rgba(0,0,0,.3)}.dialog-main[data-v-7a89cdf3]{background:#FFFFFF}.dialog-main-header[data-v-7a89cdf3]{font-weight:500;color:#333}.dialog-main-title[data-v-7a89cdf3]{font-family:PingFangSC-Medium;font-weight:500;color:#333}.dialog-main-back[data-v-7a89cdf3]{background:none}.dialog-main-content[data-v-7a89cdf3]{font-weight:400;color:#333}.btn[data-v-7a89cdf3]{font-weight:400;color:#fff;letter-spacing:0}.btn-cancel[data-v-7a89cdf3]{border:1px solid #dddddd;color:#666}.btn-default[data-v-7a89cdf3]{background:#006EFF;border:1px solid #006EFF}.dialog[data-v-7a89cdf3]{position:absolute;width:100%;height:100%;left:0;top:0;z-index:6;display:flex;justify-content:center;align-items:center}.dialog-main[data-v-7a89cdf3]{min-width:368px;border-radius:10px;padding:20px 30px}.dialog-main-header[data-v-7a89cdf3]{display:flex;justify-content:space-between;align-items:center;font-size:16px;line-height:30px}.dialog-main-title[data-v-7a89cdf3]{font-size:16px;line-height:30px}.dialog-main-content[data-v-7a89cdf3]{font-size:14px}.dialog-main-footer[data-v-7a89cdf3]{display:flex;justify-content:flex-end}.btn[data-v-7a89cdf3]{padding:8px 20px;margin:0 6px;border-radius:4px;border:none;font-size:14px;text-align:center;line-height:20px}.btn[data-v-7a89cdf3]:disabled{opacity:.3}.btn[data-v-7a89cdf3]:last-child{margin-right:0}.dialog-h5[data-v-7a89cdf3]{height:100%;top:0;align-items:inherit}.dialog-h5 .dialog-main[data-v-7a89cdf3]{border-radius:0;padding:0;display:flex;flex-direction:column;overflow:hidden;width:100%;min-height:80px;min-width:120px}.dialog-h5 .dialog-main-content[data-v-7a89cdf3]{flex:1;min-width:0;min-height:0;text-align:center}.dialog-h5 .dialog-main-content-uniapp[data-v-7a89cdf3]{padding:40px 0}.dialog-h5 .dialog-main-footer[data-v-7a89cdf3]{border-top:1px solid #DDDDDD}.dialog-h5 .dialog-main-footer .btn[data-v-7a89cdf3]{flex:1;margin:0;background:none;border-right:1px solid #DDDDDD}.dialog-h5 .dialog-main-footer .btn-default[data-v-7a89cdf3]{color:#ff584c;border:none}.center[data-v-7a89cdf3]{align-items:center;padding:20px;box-sizing:border-box}.icon[data-v-b989a330]{display:inline-flex;justify-content:center;align-items:center;margin:0}.main[data-v-cd3a18ba]{background:#FFFFFF;border:1px solid #E0E0E0;box-shadow:0 -4px 12px #0000000f}.main .left[data-v-cd3a18ba]{border-right:1px solid #E8E8E9}.main .transfer-header[data-v-cd3a18ba]{font-weight:500;color:#000;letter-spacing:0}.main .transfer-header input[data-v-cd3a18ba]{background:#FFFFFF;border:1px solid #DEE0E3;font-weight:500;color:#8f959e;letter-spacing:0}.main .transfer-list .transfer-text[data-v-cd3a18ba]{font-weight:500;color:#8f959e;letter-spacing:0}.main .transfer-list-item .disabled[data-v-cd3a18ba]{background:#eeeeee}.btn[data-v-cd3a18ba]{background:#3370FF;border:0 solid #2F80ED;font-weight:400;color:#fff}.btn-cancel[data-v-cd3a18ba]{background:#FFFFFF;border:1px solid #DDDDDD;color:#828282}.btn-no[data-v-cd3a18ba]{background:#e8e8e9;border:1px solid #DDDDDD;font-weight:400;color:#fff}.transfer-h5-header[data-v-cd3a18ba]{background:#FFFFFF}.transfer-h5-header .title[data-v-cd3a18ba]{font-family:PingFangSC-Medium;font-weight:500;color:#000;letter-spacing:0}.main[data-v-cd3a18ba]{box-sizing:border-box;width:541px;height:390px;display:flex;border-radius:8px;padding:20px 0}.main .right[data-v-cd3a18ba]{padding:0 20px;flex:1}.main .right .transfer-list[data-v-cd3a18ba]{padding-right:20px}.main .left[data-v-cd3a18ba]{flex:1;overflow-y:hidden;display:flex;flex-direction:column}.main .left .transfer-header[data-v-cd3a18ba]{padding:0 20px}.main .left .transfer-left-main[data-v-cd3a18ba]{flex:1;overflow-y:auto;padding:0 13px}.main .right[data-v-cd3a18ba]{display:flex;flex-direction:column;text-align:left}.main .right .transfer-right-footer[data-v-cd3a18ba]{align-self:flex-end}.main .right .transfer-right-footer .btn-cancel[data-v-cd3a18ba]{margin-right:12px}.main .right .transfer-list[data-v-cd3a18ba]{overflow-y:auto}.main .transfer-header[data-v-cd3a18ba]{font-size:14px;line-height:14px;padding-bottom:20px}.main .transfer-header input[data-v-cd3a18ba]{box-sizing:border-box;width:100%;border-radius:30px;font-size:10px;line-height:14px;padding:9px 12px}.main .transfer-list[data-v-cd3a18ba]{flex:1;display:flex;flex-direction:column}.main .transfer-list .transfer-text[data-v-cd3a18ba]{font-size:10px;line-height:14px}.main .transfer-list-item[data-v-cd3a18ba]{padding:6px 0;display:flex;align-items:center;font-size:14px;text-align:left}.main .transfer-list-item-content[data-v-cd3a18ba]{flex:1;display:flex;align-items:center}.main .transfer-list-item .avatar[data-v-cd3a18ba]{margin:0 5px 0 8px;border-radius:50%}.main .transfer-list-item .name[data-v-cd3a18ba]{width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.avatar[data-v-cd3a18ba]{width:36px;height:36px;border-radius:5px;font-size:12px;display:flex;justify-content:center;align-items:center}.btn[data-v-cd3a18ba],.btn-no[data-v-cd3a18ba]{padding:4px 28px;font-size:12px;line-height:24px;border-radius:4px}.space-between[data-v-cd3a18ba]{justify-content:space-between}.select-all[data-v-cd3a18ba]{padding-left:8px;font-size:14px}.more[data-v-cd3a18ba]{display:flex;justify-content:center;align-items:center;cursor:pointer;font-size:14px}.transfer-h5[data-v-cd3a18ba]{width:100vw;height:100vh;display:flex;flex-direction:column}.transfer-h5-header[data-v-cd3a18ba]{position:relative;display:flex;justify-content:space-between;align-items:center;font-size:18px;padding:16px 18px}.transfer-h5-header .space[data-v-cd3a18ba],.transfer-h5-header .icon[data-v-cd3a18ba]{width:18px;height:18px}.transfer-h5 .main[data-v-cd3a18ba]{flex-direction:column;width:auto;height:550px;border-radius:0;border:none;box-shadow:none;max-height:calc(100% - 50px);padding:0}.transfer-h5 .main .avatar[data-v-cd3a18ba]{border-radius:5px}.transfer-h5 .main .left[data-v-cd3a18ba]{padding:0;flex:1;border:none;display:flex;flex-direction:column}.transfer-h5 .main .left .transfer-header[data-v-cd3a18ba]{position:sticky;top:0;padding:0 18px}.transfer-h5 .main .left .transfer-header input[data-v-cd3a18ba]{border-radius:5px;font-size:14px}.transfer-h5 .main .left-uniapp-input[data-v-cd3a18ba]{height:36px}.transfer-h5 .main .right[data-v-cd3a18ba]{flex:0;flex-direction:row;align-items:center;box-shadow:inset 0 1px #eee;padding:8px 18px}.transfer-h5 .main .right .transfer-list[data-v-cd3a18ba]{flex-direction:row;width:0}.transfer-h5 .main .right .transfer-list-item-content[data-v-cd3a18ba]{flex:none}.transfer-h5 .main .right .transfer-right-footer[data-v-cd3a18ba]{padding:6px 0;display:flex;align-items:center}.transfer-h5 .main .right .transfer-right-footer .btn[data-v-cd3a18ba]{font-size:14px}ul[data-v-cd3a18ba],ol[data-v-cd3a18ba],li[data-v-cd3a18ba]{margin:0;padding:0}.icon-unselected[data-v-cd3a18ba]{width:18px;height:18px;background:#FFFFFF;border:1px solid #DDDDDD;border-radius:11px;box-sizing:border-box}.groupcall-container[data-v-8604f3c1]{height:100%}.card[data-v-2ea845a3]{box-sizing:border-box;border-radius:4px;border:1px solid #EBEEF5;background-color:#fff;overflow:hidden;color:#303133;transition:.3s;box-shadow:0 2px 12px #0000001a}.card .card-body[data-v-2ea845a3]{padding:20px}.card-wrapper[data-v-2ea845a3]{display:flex;flex-direction:column;align-items:center;width:500px;position:relative}.card-wrapper .button[data-v-2ea845a3]{box-sizing:border-box;background-color:#104ef5;color:#fff;font-size:12px;height:37px;border-radius:4px;padding:10px}.card-wrapper .image-wrapper[data-v-2ea845a3]{box-sizing:border-box}.title[data-v-2ea845a3]{padding:10px 0;font-size:16px;font-weight:500;line-height:22px}.desc[data-v-2ea845a3]{font-size:12px;margin-bottom:10px}.button[data-v-2ea845a3]{background-color:#104ef5;color:#fff;font-size:12px;height:37px;border-radius:4px;padding:10px}.allow[data-v-2ea845a3]{font-size:12px;color:#666;padding:10px 0 20px}.image[data-v-2ea845a3]{width:100%;border-radius:10px}.close[data-v-2ea845a3]{position:absolute;z-index:999;display:flex;justify-content:center;align-items:center;font-size:20px;right:20px;cursor:pointer;width:20px;height:20px}.tips[data-v-cd63c32e]{width:100%;height:100%}.card[data-v-cd63c32e]{position:fixed;right:0;bottom:0;box-shadow:0 2px 12px #0000001a;border-radius:4px;border:1px solid #EBEEF5;background-color:#fff;overflow:hidden;color:#303133;transition:.3s}.tag[data-v-cd63c32e]{position:fixed;left:0;top:0;width:320px;text-align:left}.toast-container[data-v-27fc22c5]{position:fixed;display:flex;align-items:center;z-index:1002;justify-content:space-between;left:50%;transform:translate(-50%);padding:15px 15px 15px 20px;background-color:#000;color:#fff;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid}.toast-container .toast-content[data-v-27fc22c5]{margin-right:16px}.toast-container .toast-close-icon[data-v-27fc22c5]{width:16px;line-height:16px;cursor:pointer}.toast-container .toast-close-icon[data-v-27fc22c5]:before{font-style:normal;content:url(data:image/svg+xml;base64,PHN2ZyB0PSIxNjg4OTk4OTI4NDQ1IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE2MDkiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMCI+PHBhdGggZD0iTTUxMiA0NjYuNzUyTDg2LjY1NiA0MS4zNDRhMzIgMzIgMCAwIDAtNDUuMzEyIDQ1LjMxMkw0NjYuNzUyIDUxMiA0MS4zNDQgOTM3LjM0NGEzMiAzMiAwIDAgMCA0NS4zMTIgNDUuMzEyTDUxMiA1NTcuMjQ4bDQyNS4zNDQgNDI1LjQwOGEzMiAzMiAwIDAgMCA0NS4zMTItNDUuMzEyTDU1Ny4yNDggNTEybDQyNS40MDgtNDI1LjM0NGEzMiAzMiAwIDAgMC00NS4zMTItNDUuMzEyTDUxMiA0NjYuNzUyeiIgZmlsbD0iIzcwNzA3MCIgcC1pZD0iMTYxMCI+PC9wYXRoPjwvc3ZnPg==)}.info[data-v-27fc22c5]{border-color:#ebeef5;color:#909399;background-color:#edf2fc}.success[data-v-27fc22c5]{color:#67c23a;background-color:#f0f9eb;border-color:#e1f3d8}.waring[data-v-27fc22c5]{color:#e6a23c;background-color:#fdf6ec;border-color:#faecd8}.error[data-v-27fc22c5]{color:#f56c6c;background-color:#fef0f0;border-color:#fde2e2}.slide-up-enter-active[data-v-27fc22c5],.slide-up-leave-active[data-v-27fc22c5]{transition:all .5s ease-out}.slide-up-enter-from[data-v-27fc22c5]{opacity:0;transform:translate(-50%,20px)}.slide-up-leave-to[data-v-27fc22c5]{opacity:0;transform:translate(-50%,-20px)}.fade-enter-from[data-v-27fc22c5],.fade-leave-to[data-v-27fc22c5]{opacity:0;transform:translate(-50%,-100%)}.TUICallKit-mobile,.TUICallKit-mobile .singCall{width:100%;height:100%}.transition-animation{transform:translateY(-100%);animation:slideInDown .5s ease forwards}@keyframes slideInDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.TUICallKit-desktop{margin:0 auto;position:relative;border-radius:inherit;width:100%;height:100%;color:#fff;display:flex;flex-direction:column;justify-content:center;overflow:hidden;z-index:12;border-radius:16px}.TUICallKit-desktop .singCall{width:100%;height:100%}.mobile-audio{background-color:#fff}.miniMized{width:168px!important;height:56px!important;overflow:visible!important}.miniMized-mobile-audio{width:72px;height:72px;position:fixed;top:40px;right:40px}.miniMized-mobile-video{width:40%;height:30%;position:fixed;top:40px;right:40px}.banner-pc{position:relative;cursor:pointer}.banner-pc .top{height:24px;padding-right:10px;border-radius:4px;background:#F4F5F9;display:inline-flex;align-items:center}.banner-pc .top .call-icon{margin:4px 4px 4px 8px}.banner-pc .top .text{font-weight:400;font-size:12px;line-height:16px;color:#666}.banner-pc .content{width:220px;margin-top:8px;padding:10px 18px 6px;box-shadow:0 0 24px #161e2733;background-color:#fff;border-radius:10px;position:absolute;z-index:10;display:flex;display:-webkit-flex;flex-direction:column;align-items:center}.banner-pc .content .content-arrows{width:12px;height:12px;border-radius:2px;background-color:#fff;transform:rotate(45deg);position:absolute;top:-5px;left:80px}.banner-pc .content .avatar-box{display:flex;justify-content:center;flex-wrap:wrap}.banner-pc .content .avatar{margin:6px;display:flex;border-radius:4px}.banner-pc .content .btn{margin:10px 0;width:97px;height:30px;background:#F2F5FC;border-radius:4px;display:flex;justify-content:center;align-items:center;font-size:12px;color:#1c66e5;cursor:pointer}.banner-h5{padding:0 16px;position:relative}.banner-h5 .top{height:36px;background:#FFFFFF;border-radius:4px;display:flex;display:-webkit-flex;justify-content:space-between;align-items:center}.banner-h5 .top .left{display:flex;align-items:center}.banner-h5 .top .left .text{font-weight:400;font-size:12px;color:#666}.banner-h5 .content-box{box-sizing:border-box;width:100%;padding:0 16px 10px;background:#FFFFFF;box-shadow:0 3px 3px 1px #b4b4b440;border-radius:0 0 8px 8px;position:absolute;left:0;z-index:10}.banner-h5 .content-box .content{background:#EEF0F2;border-radius:6px}.banner-h5 .content-box .content .avatar-box{padding:30px 6px;border-bottom:1px solid rgba(112,112,112,.1058823529);display:flex;display:-webkit-flex;justify-content:center;flex-wrap:wrap}.banner-h5 .content-box .content .btn{padding:10px;font-weight:600;font-size:14px;text-align:center;color:#333;cursor:pointer}")),document.head.appendChild(t)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})();
import { TUICallEvent as R, TUICallEngine as ho } from "tuicall-engine-webrtc";
import { TUICore as ye, TUIConstants as dA, TUILogin as Lo } from "@tencentcloud/tui-core";
import Vt from "@tencentcloud/chat";
import { inject as VA, ref as p, onMounted as CA, onUnmounted as DA, toRefs as G, watch as uA, computed as S, version as st, defineComponent as f, provide as OA, openBlock as d, createElementBlock as y, normalizeClass as k, unref as l, normalizeStyle as eA, renderSlot as q, createElementVNode as L, createBlock as U, toDisplayString as W, createCommentVNode as z, Fragment as RA, createVNode as C, withCtx as E, createTextVNode as NA, watchEffect as ue, renderList as ce, toRef as ct, resolveComponent as ea, Teleport as Eo, withDirectives as sA, vShow as cA, withModifiers as pe, nextTick as mo, mergeProps as bt, normalizeProps as zo, withKeys as Uo, render as Ue, Transition as fo, reactive as Be } from "vue";
var u = /* @__PURE__ */ ((a) => (a.CALL = "call", a.CUSTOM = "custom", a))(u || {}), _ = /* @__PURE__ */ ((a) => (a[a.UNKNOWN = 0] = "UNKNOWN", a[a.AUDIO = 1] = "AUDIO", a[a.VIDEO = 2] = "VIDEO", a))(_ || {}), IA = /* @__PURE__ */ ((a) => (a.UNKNOWN = "unknown", a.CALLEE = "callee", a.CALLER = "caller", a))(IA || {}), P = /* @__PURE__ */ ((a) => (a.IDLE = "idle", a.CALLING = "calling", a.CONNECTED = "connected", a))(P || {}), fe = /* @__PURE__ */ ((a) => (a.CONTAIN = "contain", a.COVER = "cover", a.FILL = "fill", a))(fe || {}), ve = /* @__PURE__ */ ((a) => (a.RESOLUTION_480P = "480p", a.RESOLUTION_720P = "720p", a.RESOLUTION_1080P = "1080p", a))(ve || {}), ta = /* @__PURE__ */ ((a) => (a.EN = "en", a["ZH-CN"] = "zh-cn", a.JA_JP = "ja_JP", a))(ta || {});
const jA = {
IDLE: "idle",
BE_INVITED: "be-invited",
DIALING_C2C: "dialing-c2c",
DIALING_GROUP: "dialing-group",
CALLING_C2C_AUDIO: "calling-c2c-audio",
CALLING_C2C_VIDEO: "calling-c2c-video",
CALLING_GROUP_AUDIO: "calling-group-audio",
CALLING_GROUP_VIDEO: "calling-group-video"
}, vo = {
unknown: 0,
audio: 1,
video: 2
/* VIDEO */
};
var je = /* @__PURE__ */ ((a) => (a.EAR = "ear", a.SPEAKER = "speaker", a))(je || {}), hA = /* @__PURE__ */ ((a) => (a.MICROPHONE = "microphone", a.CAMERA = "camera", a.SPEAKER = "speaker", a))(hA || {}), we = /* @__PURE__ */ ((a) => (a[a.FRONT = 0] = "FRONT", a[a.BACK = 1] = "BACK", a))(we || {}), _A = /* @__PURE__ */ ((a) => (a.Camera = "camera", a.Microphone = "microphone", a.SwitchCamera = "switchCamera", a.InviteUser = "inviteUser", a))(_A || {}), Te = /* @__PURE__ */ ((a) => (a.Open = "open", a.Close = "close", a))(Te || {}), GA = /* @__PURE__ */ ((a) => (a.LOCAL = "local", a.REMOTE = "remote", a))(GA || {}), Xe = /* @__PURE__ */ ((a) => (a.LocalInLargeView = "local", a.RemoteInLargeView = "remote", a))(Xe || {}), Ie = /* @__PURE__ */ ((a) => (a[a.INVITE = 1] = "INVITE", a[a.CANCEL_INVITE = 2] = "CANCEL_INVITE", a[a.ACCEPT_INVITE = 3] = "ACCEPT_INVITE", a[a.REJECT_INVITE = 4] = "REJECT_INVITE", a[a.INVITE_TIMEOUT = 5] = "INVITE_TIMEOUT", a))(Ie || {});
const xt = {
SWITCH_TO_AUDIO_CALL_FAILED: 60001,
SWITCH_TO_VIDEO_CALL_FAILED: 60002,
MICROPHONE_UNAVAILABLE: 60003,
CAMERA_UNAVAILABLE: 60004,
BAN_DEVICE: 60005,
NOT_SUPPORTED_WEBRTC: 60006,
ERROR_BLACKLIST: 20007
}, wo = {
SWITCH_TO_AUDIO_CALL_FAILED: "switchToAudioCall-call-failed",
SWITCH_TO_VIDEO_CALL_FAILED: "switchToVideoCall-call-failed",
MICROPHONE_UNAVAILABLE: "microphone-unavailable",
CAMERA_UNAVAILABLE: "camera-unavailable",
BAN_DEVICE: "ban-device",
NOT_SUPPORTED_WEBRTC: "not-supported-webrtc",
ERROR_BLACKLIST: "blacklist-user-tips"
};
var aa = /* @__PURE__ */ ((a) => (a[a.NORMAL = 0] = "NORMAL", a[a.RELEASE = 1] = "RELEASE", a[a.WARNING = 2] = "WARNING", a[a.ERROR = 3] = "ERROR", a[a.NONE = 4] = "NONE", a))(aa || {});
const Fe = {
CALL_STATUS: "callStatus",
CALL_ROLE: "callRole",
CALL_MEDIA_TYPE: "callMediaType",
LOCAL_USER_INFO: "localUserInfo",
LOCAL_USER_INFO_EXCLUDE_VOLUMN: "localUserInfoExcludeVolume",
REMOTE_USER_INFO_LIST: "remoteUserInfoList",
REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST: "remoteUserInfoExcludeVolumeList",
CALLER_USER_INFO: "callerUserInfo",
IS_GROUP: "isGroup",
CALL_DURATION: "callDuration",
CALL_TIPS: "callTips",
TOAST_INFO: "toastInfo",
IS_MINIMIZED: "isMinimized",
ENABLE_FLOAT_WINDOW: "enableFloatWindow",
BIG_SCREEN_USER_ID: "bigScreenUserId",
LANGUAGE: "language",
IS_CLICKABLE: "isClickable",
DISPLAY_MODE: "displayMode",
VIDEO_RESOLUTION: "videoResolution",
PUSHER: "pusher",
PLAYER: "player",
IS_EAR_PHONE: "isEarPhone",
IS_MUTE_SPEAKER: "isMuteSpeaker",
SHOW_PERMISSION_TIP: "SHOW_PERMISSION_TIP",
NETWORK_STATUS: "NetWorkStatus",
GROUP_ID: "groupID",
ROOM_ID: "roomID",
ROOM_ID_TYPE: "roomIdType",
SHOW_SELECT_USER: "showSelectUser",
IS_SHOW_ENABLE_VIRTUAL_BACKGROUND: "isShowEnableVirtualBackground",
ENABLE_VIRTUAL_BACKGROUND: "enableVirtualBackground",
GROUP_CALL_MEMBERS: "groupCallMembers",
PUSHER_ID: "pusherId"
}, Oo = {
INNER_ATTR_KIT_INFO: "inner_attr_kit_info"
}, Vo = {
INITIAL_PUSHER: "initialPusher",
NEW_PUSHER: "newPusher"
}, i = {
PREFIX: "【CallService】",
AUDIO: "audio",
VIDEO: "video",
LOCAL_VIDEO: "localVideo",
ERROR: "error",
TIMEOUT: "timeout",
RAF: "raf",
INTERVAL: "interval",
DEFAULT: "default",
BOOLEAN: "boolean",
STRING: "string",
NUMBER: "number",
OBJECT: "object",
ARRAY: "array",
FUNCTION: "function",
UNDEFINED: "undefined",
UNKNOWN: "unknown",
ALL: "all",
MYSELF: "myself",
DEVICE_LIST: "deviceList",
CAMERA_POSITION: "cameraPosition",
CUSTOM_UI_CONFIG: "customUIConfig",
...Vo,
...Fe,
...Oo
}, bo = "https://web.sdk.qcloud.com/component/TUIKit/assets/call.png", xo = "https://web.sdk.qcloud.com/component/TUIKit/assets/call-video-reverse.svg", kt = 2147483647, ko = 3, Ro = 4;
var gt = /* @__PURE__ */ ((a) => (a.MAC = "mac", a.WIN = "win", a))(gt || {}), ht = /* @__PURE__ */ ((a) => (a[a.TUI_CALL_KIT = 14] = "TUI_CALL_KIT", a[a.TIM_CALL_KIT = 15] = "TIM_CALL_KIT", a))(ht || {}), Tt = /* @__PURE__ */ ((a) => (a[a.NUMBER_ROOM_ID = 1] = "NUMBER_ROOM_ID", a[a.STRING_ROOM_ID = 2] = "STRING_ROOM_ID", a))(Tt || {});
async function Bo(a) {
if (!a)
return !1;
try {
const A = await new Promise((e, t) => {
const o = new XMLHttpRequest();
o.open("HEAD", a, !0), o.onload = () => e(o), o.onerror = () => t(o), o.send();
});
return A.status === 200 && A.getResponseHeader("Content-Type") === "audio/mpeg";
} catch (A) {
return console.warn(A), !1;
}
}
function qe(a) {
if (typeof a != "object" || a === null)
return a;
let A = Array.isArray(a) ? [] : {};
for (let e in a)
a.hasOwnProperty(e) && (A[e] = qe(a[e]));
return A;
}
const Po = {
// 按钮文案
hangup: "Hang up",
reject: "Decline",
accept: "Accept",
camera: "Camera",
microphone: "Microphone",
speaker: "speaker",
"open camera": "Open Camera",
"close camera": "Close Camera",
"open microphone": "Open Microphone",
"close microphone": "Close Microphone",
"video-to-audio": "Switch to audio",
"virtual-background": "Blur Background",
// 通话结果
"other side reject call": "other side reject call",
"reject call": "Reject Call",
cancel: "Cancel Call",
"other side line busy": "other side line busy",
"in busy": "in busy",
"call timeout": "call timeout",
"no response from the other side": "no response from the other side",
"end call": "end call",
// 通话提示语
"caller calling message": "Awaiting response",
"callee calling video message": "invites you to a video call",
"callee calling audio message": "invites you to a voice call",
"no microphone access": "no microphone access",
"no camera access": "no camera access",
"invite member": "Invite Member",
"Invited group call": "invites you to a group call",
waiting: "Calling...",
me: "(me)",
// 弹出层文案
"browser-authorization": "Browser authorization",
"mac-privacy": "System Preferences -> Security and Privacy -> Privacy",
"win-privacy": "Setting -> Privacy and Security -> App permissions",
"mac-preferences": "Open System Preferences",
"win-preferences": "Open Setting",
"Please enter userID": "Please enter userID",
"View more": "View more",
"people selected": "people selected",
"Select all": "Select all",
Cancel: "Cancel",
Done: "Done",
"exist group call": "A group call already exists in the current group",
// UI3.0 新增
"camera enabled": "Camera On",
"camera disabled": "Camera Off",
"microphone enabled": "Unmuted",
"microphone disabled": "Muted",
"speaker enabled": "Speaker On",
"speaker disabled": "Speaker Off",
"open speaker": "Turn on speaker",
"close speaker": "Turn off speaker",
"wait to be called": "Waiting",
answered: "Connected",
"people in the call": " other(s) in the call",
"failed to obtain speakers": "failed to obtain speakers",
"you have a new call": "You have a new call",
"switch camera": "Switch",
join: "Join",
"people on the call": "people on the call",
"Supports a maximum of 9 people for simultaneous calls": "Supports a maximum of 9 people for simultaneous calls",
you: "(you)",
"The network is poor during your current call": "The network is poor during your current call",
"The other user network is poor during the current call": "The other party's network is poor during the current call",
"TUICallKit init is not complete": "TUICallKit init is not complete. You need to use this API after the init API is finished.",
// combine chat
"Video call": "Video call",
"Voice call": "Voice call",
"Call End": "Call End",
"Switch voice call": "Switch voice call",
"Switch video call": "Switch video call",
"Call duration": "Duration",
"Call Cancel": "Canceled",
"Other Side Cancel": "Call canceled by caller",
Decline: "Declined",
"Other Side Decline": "Call declined by user",
"No answer": "Call not answered",
"Other Side No Answer": "Call wasn't answered",
Answered: "Answered",
"Other Side Line Busy": "Line busy",
"Line Busy": "Line busy. Call not received.",
// 待废弃文案
"Those involved": "Those involved in the call are",
call: "call",
"video-call": "video call",
"audio-call": "audio call",
search: "search",
"search-result": "search result",
"no-user": "user not found",
"member-not-added": "member not added",
"input-phone-userID": "phone number or userID",
"not-login": "not logged in",
"login-status-expire": "login status is invalid, please refresh the page and try again",
"experience-multi-call": "experience multi-person calls, please download the full-featured demo: ",
"not-support-multi-call": "multi-person call interface is not open",
userID: "userID",
"already-enter": "entered the call",
"camera-opened": "Camera on",
"camera-closed": "Camera off",
"microphone-opened": "Mic on",
"microphone-closed": "Mic off",
timeout: "timeout",
"kick out": "kick out",
"image-resolution": "Resolution",
"default-image-resolution": "Default",
"invited-person": "Invite",
"be-rejected": "Call declined, ",
"be-no-response": "No response, ",
"be-line-busy": "Line busy, ",
"be-canceled": "The call is canceled, ",
"voice-call-end": "Voice call ended",
"video-call-end": "Video call ended",
"method-call-failed": "Failed to sync the operation",
"failed-to-obtain-permission": "Failed to obtain permissions",
"environment-detection-failed": "Failed to check the environment",
"switchToAudioCall-call-failed": "switch to audio call method failed",
"switchToVideoCall-call-failed": "switch to video call method failed",
"microphone-unavailable": "No mic found",
"camera-unavailable": "No camera found",
"ban-device": "Device access denied",
"not-supported-webrtc": "Your current environment does not support WebRTC",
"blacklist-user-tips": "The identifier is in blacklist. Failed to send this message!",
"is-already-calling": "TUICallKit is already on a call",
"need-init": "Before initiating a call with TUICallKit, ensure that the TUICallKitServer.init() method has executed successfully. ",
"can't call yourself": "Can't call yourself",
// eslint-disable-line
"Use-phone-and-computer": "Use your mobile phone and computer to experience video calls",
"Wechat scan right QR code": "Wechat scan right QR code",
"Scan the QR code above": "Scan the QR code above",
"accept-error": "Accept failed",
"accept-device-error": "Accept failed, unable to auth calling device",
"call-error": "Start call failed"
}, Wo = {
// 按钮文案
hangup: "挂断",
reject: "拒绝",
accept: "接受",
camera: "摄像头",
microphone: "麦克风",
speaker: "扬声器",
"open camera": "打开摄像头",
"close camera": "关闭摄像头",
"open microphone": "打开麦克风",
"close microphone": "关闭麦克风",
"video-to-audio": "转语音通话",
"virtual-background": "模糊背景",
// 通话结果
"other side reject call": "对方已拒绝",
"reject call": "拒绝通话",
cancel: "取消通话",
"other side line busy": "对方忙线",
"in busy": "正在忙",
"call timeout": "呼叫超时",
"end call": "结束通话",
// 通话提示语
"caller calling message": "等待对方接受邀请",
"callee calling video message": "邀请你视频通话",
"callee calling audio message": "邀请你语音通话",
"no microphone access": "没有麦克风权限",
"no camera access": "没有摄像头权限",
"invite member": "邀请成员",
"Invited group call": "邀请你加入多人通话",
"Those involved": "参与通话的有:",
waiting: "等待接听...",
me: "(我)",
// 弹出层文案
"browser-authorization": "浏览器授权",
"mac-privacy": "系统偏好设置 -> 安全与隐私 -> 隐私",
"win-privacy": "设置 -> 隐私和安全性 -> 应用权限",
"mac-preferences": "打开系统偏好设置",
"win-preferences": "打开系统设置",
"Please enter userID": "请输入 userID",
"View more": "查看更多",
"people selected": "人已选中",
"Select all": "全选",
Cancel: "取消",
Done: "完成",
"exist group call": "当前群组中已经存在群组通话",
// UI3.0 新增
"camera enabled": "摄像头已开",
"camera disabled": "摄像头已关",
"microphone enabled": "麦克风已开",
"microphone disabled": "麦克风已关",
"speaker enabled": "扬声器已开",
"speaker disabled": "扬声器已关",
"open speaker": "开启扬声器",
"close speaker": "关闭扬声器",
"wait to be called": "等待接听",
answered: "已接通",
"people in the call": "人参与通话",
"failed to obtain speakers": "无法获取扬声器",
"you have a new call": "您有一个新的通话",
"switch camera": "翻转",
join: "加入",
"people on the call": "人正在通话",
"Supports a maximum of 9 people for simultaneous calls": "最多支持9人同时通话",
you: "(你)",
"The network is poor during your current call": "当前通话你的网络不佳",
"The other user network is poor during the current call": "当前通话对方网络不佳",
"TUICallKit init is not complete": "TUICallKit 初始化登录未完成,需要在 init 完成后使用此 API",
// combine chat
"Video call": "发起视频通话",
"Voice call": "发起语音通话",
"Call End": "通话结束",
"Switch voice call": "切换语音通话",
"Switch video call": "切换视频通话",
"Call duration": "通话时长",
"Call Cancel": "已取消",
"Other Side Cancel": "对方已取消",
Decline: "已拒绝",
"Other Side Decline": "对方已拒绝",
"No answer": "超时无应答",
"Other Side No Answer": "对方无应答",
Answered: "已接听",
"Other Side Line Busy": "对方忙线中",
"Line Busy": "忙线无应答",
// 待废弃文案
timeout: "超时",
"kick out": "被踢",
call: "通话",
"video-call": "视频通话",
"audio-call": "音频通话",
search: "搜索",
"search-result": "搜索结果",
"Wechat scan right QR code": "微信扫右二维码",
"Use-phone-and-computer": "用手机与电脑互打体验视频通话",
"Scan the QR code above": "扫描上方二维码",
"no-user": "未搜索到用户",
"member-not-added": "未添加成员",
"not-login": "未登录",
"login-status-expire": "登录状态已失效,请刷新网页重试",
"experience-multi-call": "体验多人通话请下载全功能demo:",
"not-support-multi-call": "多人通话接口未开放",
"input-phone-userID": "请输入手机号/用户ID",
userID: "用户ID",
"already-enter": "已经进入当前通话",
"image-resolution": "分辨率",
"default-image-resolution": "默认分辨率",
"invited-person": "添加成员",
"be-rejected": "对方已拒绝,",
"be-no-response": "对方无应答,",
"be-line-busy": "对方忙线中,",
"be-canceled": "对方已取消",
"voice-call-end": "语音通话结束",
"video-call-end": "视频通话结束",
"method-call-failed": "同步操作失败",
"failed-to-obtain-permission": "权限获取失败",
"environment-detection-failed": "环境检测失败",
"switchToAudioCall-call-failed": "切语音调用失败",
"switchToVideoCall-call-failed": "切视频调用失败",
"microphone-unavailable": "没有可用的麦克风设备",
"camera-unavailable": "没有可用的摄像头设备",
"ban-device": "用户禁止使用设备",
"not-supported-webrtc": "当前环境不支持 WebRTC",
"blacklist-user-tips": "发起通话失败,被对方拉入黑名单,禁止发起!",
"is-already-calling": "TUICallKit 已在通话状态",
"need-init": "TUICallKit 发起通话前需保证 TUICallKitServer.init() 方法执行成功",
"can't call yourself": "不能呼叫自己",
// eslint-disable-line
"accept-error": "接通失败",
"accept-device-error": "接通失败,通话设备获取失败",
"call-error": "发起通话失败"
}, Go = {
// 按钮文案
hangup: "通話終了",
reject: "拒否",
accept: "応答",
camera: "カメラ",
microphone: "マイク",
speaker: "スピーカー",
"virtual-background": "ボケ背景",
// 通话结果
"other side reject call": "通話が拒否されました",
"reject call": "通話拒否",
cancel: "通話をキャンセル",
"other side line busy": "相手が通話中です",
"in busy": "通話中",
"call timeout": "呼び出しタイムアウト",
"end call": "通話終了",
// 通话提示语
"caller calling message": "応答を待っています",
"callee calling video message": "ビデオ通話に招待されました",
"callee calling audio message": "音声通話に招待されました",
"no microphone access": "マイクにアクセスできません",
"no camera access": "カメラにアクセスできません",
"invite member": "メンバーを招待する",
// 弹出层文案
"browser-authorization": "ブラウザ認証",
"mac-privacy": "システム環境設定 -> セキュリティとプライバシー ->プライバシー",
"win-privacy": "設定 -> セキュリティとプライバシー ->アプリのアクセス許可",
"mac-preferences": "システム環境設定を開く",
"win-preferences": "システム設定を開く",
"Please enter userID": "ユーザーIDを入力してください",
"View more": "もっと見る",
"people selected": "人が選択されました",
"Select all": "すべて選択",
Cancel: "キャンセル",
Done: "完了",
"exist group call": "現在のグループには既にグループ通話が存在しています",
// combine chat
"Video call": "ビデオ通話を開始",
"Voice call": "音声通話を開始",
"Call End": "通話終了",
"Switch audio call": "音声通話に切り替える",
"Switch video call": "ビデオ通話に切り替える",
"Call duration": "通話時間",
"Call Cancel": "通話をキャンセルする",
"Other Side Cancel": "相手がキャンセルしました",
Decline: "通話を拒否する",
"Other Side Decline": "相手が拒否しました",
"No answer": "無応答",
"Other Side No Answer": "相手からの返答はありません",
Answered: "応答しました",
"Other Side Line Busy": "相手は現在忙しくて対応できません",
"Line Busy": "忙しいので応答できません",
// UI3.0文案
"open camera": "オープンカメラ",
"close camera": "カメラを閉じる",
"open microphone": "オープンマイク",
"close microphone": "マイクを閉じる",
"camera enabled": "カメラオン",
"camera disabled": "カメラオフ",
"microphone enabled": "マイクオン",
"microphone disabled": "マイクオフ",
"speaker enabled": "スピーカーオン",
"speaker disabled": "スピーカーオフ",
"open speaker": "スピーカーをオンにする",
"close speaker": "スピーカーの電源を切ります",
"wait to be called": "待機中",
answered: "接続済み",
"people in the call": "通話に参加している人たち",
"failed to obtain speakers": "スピーカーが見つかりません",
"you have a new call": "新しい通話があります",
"switch camera": "切り替え",
join: "参加する",
"people on the call": "人が通話中です",
"Supports a maximum of 9 people for simultaneous calls": "最大で9人まで同時通話が可能です",
you: "(あなた)",
"The network is poor during your current call": "現在の通話で、あなたのネットワークは不良です",
"The other user network is poor during the current call": "現在の通話で、相手側のネットワークが不良です",
"TUICallKit init is not complete": "TUICallKitの初期化ログインが完了していません。init が完了した後にこのAPIを使用する必要があります。",
// 待废弃文案
timeout: "タイムアウト",
"kick out": "キックアウトされました",
"Invited group call": "グループ通話に招待されました。",
"Those involved": "参加者:",
call: "通話",
"video-call": "ビデオ通話",
"audio-call": "音声通話",
search: "検索",
"search-result": "検索結果",
"Wechat scan right QR code": "WeChatで右側にあるQRコードを読み取ります。",
"Use-phone-and-computer": "携帯電話とコンピュータを使用してビデオ通話を体験してください",
"Scan the QR code above": "上のQRコードを読み取ります。",
"no-user": "ユーザーが見つかりませんでした",
"member-not-added": "メンバーが追加されていません",
"not-login": "ログインしていません",
"login-status-expire": "ログインの有効期限が過ぎています。ページを更新してもう一度お試しください",
"experience-multi-call": "複数人で同時に音声通話できるグループ通話機能を体験するには、全機能のデモをダウンロードしてください",
"not-support-multi-call": "グループ通話インターフェイスが開いていません",
"input-phone-userID": "携帯電話番号/ユーザーIDを入力してください",
userID: "ユーザーID",
"already-enter": "すでに通話に参加しています",
waiting: "応答を待っています...",
"camera-opened": "カメラがオンになっています",
"camera-closed": "カメラがオフになっています",
"microphone-opened": "マイクがオンになっています",
"microphone-closed": "マイクがオフになっています",
"image-resolution": "解像度",
"default-image-resolution": "デフォルト解像度",
"invited-person": "メンバーを招待",
"video-to-audio": "音声通話に切り替えます",
me: "(自分)",
"be-rejected": "通話が拒否されました, ",
"be-no-response": "応答なし, ",
"be-line-busy": "相手が通話中です, ",
"be-canceled": "相手が通話をキャンセルしました",
"voice-call-end": "音声通話が終了しました",
"video-call-end": "ビデオ通話が終了しました",
"method-call-failed": "操作の同期に失敗しました",
"failed-to-obtain-permission": "権限の取得に失敗しました",
"environment-detection-failed": "環境の検出に失敗しました",
"switchToAudioCall-call-failed": "音声通話に切り替えることはできません",
"switchToVideoCall-call-failed": "ビデオ通話に切り替えることはできません",
"microphone-unavailable": "使用できるマイクがありません",
"camera-unavailable": "使用できるカメラがありません",
"ban-device": "デバイスへのアクセスが拒否されました",
"not-supported-webrtc": "現在の環境はWebRTCをサポートしていません",
"blacklist-user-tips": "ユーザーはブラックリストに登録され、通話が開始できませんでした",
"is-already-calling": "TUICallKit はすでに通話中です",
"need-init": "TUICallKitで通話を開始する前に、TUICallKitServer.init() メソッドが正常に実行されたことを確認してください。",
"can't call yourself": "自分に電話をかけることができません",
"accept-error": "接続できませんでした",
"accept-device-error": "接続できませんでした。発信側デバイスを認証できません",
"call-error": "通話が開始できませんでした"
}, EA = {
OTHER_SIDE: "other side",
CANCEL: "cancel",
OTHER_SIDE_REJECT_CALL: "other side reject call",
REJECT_CALL: "reject call",
OTHER_SIDE_LINE_BUSY: "other side line busy",
IN_BUSY: "in busy",
CALL_TIMEOUT: "call timeout",
END_CALL: "end call",
TIMEOUT: "timeout",
KICK_OUT: "kick out",
CALLER_CALLING_MSG: "caller calling message",
CALLER_GROUP_CALLING_MSG: "wait to be called",
CALLEE_CALLING_VIDEO_MSG: "callee calling video message",
CALLEE_CALLING_AUDIO_MSG: "callee calling audio message",
NO_MICROPHONE_DEVICE_PERMISSION: "no microphone access",
NO_CAMERA_DEVICE_PERMISSION: "no camera access",
EXIST_GROUP_CALL: "exist group call",
LOCAL_NETWORK_IS_POOR: "The network is poor during your current call",
REMOTE_NETWORK_IS_POOR: "The other user network is poor during the current call"
}, Rt = {
en: Po,
"zh-cn": Wo,
ja_JP: Go
};
function v(a) {
var t;
const A = g.getData(u.CALL, i.LANGUAGE);
for (const o in Rt)
if (o === A) {
const n = Rt[o];
for (const s in n)
if (s === a)
return n[s];
}
const e = (t = a.en) == null ? void 0 : t.key;
return console.error(`${i.PREFIX}translation is not found: ${a}.`), e;
}
const Je = typeof wx < "u" && typeof wx.getSystemInfoSync == "function" && !!wx.getSystemInfoSync().fontSizeSetting, oa = typeof uni < "u" && typeof uni > "u", Bt = Je || oa, la = typeof uni < "u", na = function() {
return (typeof uni < "u" || typeof window < "u") && !Bt;
}(), Qo = function() {
return Je ? wx : la ? uni : window;
}(), $A = na && window && window.navigator && window.navigator.userAgent || "", Zo = /Android/i.test($A), Fo = /(?:Windows Phone)/.test($A), Yo = /(?:SymbianOS)/.test($A), Xo = /iPad/i.test($A) || /iPhone/i.test($A) || /iPod/i.test($A), ia = Zo || Fo || Yo || Xo, Lt = na && !ia, qo = Lt && $A.includes("Windows NT"), Jo = Lt && $A.includes("Mac");
let sa = class he {
constructor() {
this.global = Qo, this.isPC = !1, this.isH5 = !1, this.isWeChat = !1, this.isApp = !1, this.isUniPlatform = !1, this.isOfficial = !1, this.isWIN = !1, this.isMAC = !1, this.initEnv();
}
/**
* 获取 TUIGlobal 实例
* @returns {TUIGlobal}
*/
static getInstance() {
return he.instance || (he.instance = new he()), he.instance;
}
initEnv() {
this.isPC = Lt, this.isH5 = ia, this.isWeChat = Je, this.isApp = oa && !Je, this.isUniPlatform = la, this.isWIN = qo, this.isMAC = Jo;
}
initOfficial(A) {
this.isOfficial = A === 1400187352 || A === 1400188366;
}
};
const et = function(a) {
return typeof a === i.UNDEFINED;
}, ca = function(a) {
if (typeof a !== i.OBJECT || a === null)
return !1;
const A = Object.getPrototypeOf(a);
if (A === null)
return !0;
let e = A;
for (; Object.getPrototypeOf(e) !== null; )
e = Object.getPrototypeOf(e);
return A === e;
}, ra = function(a) {
return typeof Array.isArray === i.FUNCTION ? Array.isArray(a) : Object.prototype.toString.call(a).match(/^\[object (.*)\]$/)[1].toLowerCase() === i.ARRAY;
}, pt = function(a) {
return typeof a === i.STRING;
}, Ho = function(a) {
return typeof a === i.BOOLEAN;
}, ua = function(a) {
return (
// eslint-disable-next-line
a !== null && (typeof a === i.NUMBER && !isNaN(a - 0) || typeof a === i.OBJECT && a.constructor === Number)
);
};
function Ma(a) {
const A = Math.floor(a / 3600), e = Math.floor(a % 3600 / 60), t = Math.floor(a % 60);
let o = A > 9 ? `${A}` : `0${A}`;
return o += e > 9 ? `:${e}` : `:0${e}`, o += t > 9 ? `:${t}` : `:0${t}`, o;
}
function Ko(a) {
if (typeof a === i.STRING)
try {
return !!JSON.parse(a);
} catch (A) {
return console.debug(A), !1;
}
return !1;
}
const Pe = function(a) {
return !a || !Ko(a) ? a : JSON.parse(a);
};
function Pt(a) {
return (a == null ? void 0 : a.message.indexOf("is ongoing, please avoid repeated calls")) !== -1;
}
function _o(a) {
const { message: A } = a;
return A.indexOf("NotAllowedError: Permission denied") !== -1;
}
function rt() {
return Date.now();
}
const Ye = function(a) {
return typeof a === i.FUNCTION;
}, $o = () => {
if (sa.getInstance().isWeChat)
return "zh-cn";
const a = ((navigator == null ? void 0 : navigator.language) || (navigator == null ? void 0 : navigator.userLanguage) || "").substr(0, 2);
let A = "en";
switch (a) {
case "zh":
A = "zh-cn";
break;
case "ja":
A = "ja_JP";
break;
default:
A = "en";
}
return A;
}, Al = function(a) {
return Object.prototype.toString.call(a).match(/^\[object (.*)\]$/)[1].toLowerCase();
};
function el(a, A, e) {
if (!a.hasOwnProperty(A))
return a;
const t = {};
return Object.keys(a).forEach((o) => {
o === A ? t[e] = a[o] : t[o] = a[o];
}), t;
}
const tl = "data:audio/mpeg;base64,SUQzAwAAAAAAGFRYWFgAAAAOAAAAVFhYWABpc29taXNvMv/zNGQAAqwAvnihCAADQAF4CUAQAFYAg3Lh8u+XUD5///wx//wQOAhKAgb/////xOoH4g8Hz4Pq8RoAbdTgMsMt9hcb990EP//zNGQQBPDjEgDItAAFWcIoAYoQAN9P/03QQ//umn//91SXL5uXP+pf8WYTvzgJPAQ+p/7f///1//6f///WH///F4BtJhNFkP/zNGQGA/jjNADHiAAEQDJcAYkQAGWrn6vw6ljfPtj/////////9Pv9sL/mL/QezSepgwrimv07//////y3u602OiyhOYb+LP/zNGQIBKTBKADoCACDoCZMAckAAKHKCUIAFsqGZXtSZ/////////Sn/Vy3nVUOJBqSX2UAkQxBddzv//////yq3lcgaTmTQ//zNGQHA9SrJgA8AliD4C5IAApYAKh3FKlMunKHm8H/2//77vkdqB2xfsXaHiDKBGtFKqONF3/////Z9VXClT5ND+syHkjBq//zNGQLBITJIAA8AmQEiDI4AAjSAGa1Vffm3ff/1/0//11tvZpAaIw3dBiIrjJgHQrGVWmdBU1f/////oDqEKrV1OpBUTjQtv/zNGQHAsjDKAAwAl4D0Co8AAmCBHIQNtld6fm0+/VigZzuMnGZlkAMLMJFv/////33UIWeFQkKsaceBsangecHzYXKI//////zNGQUA4QjKAA3CAID8CpEABMCBPfuStx4FQVHYMgKcO6jIJh//////9uIlspQkGQ2YyZscAV83Bv/////ncL6BEiWHyA2K//zNEQbAogfJgAx5hAEwDJcCAsEBtICgF3/////WJaIuuqMCCVGucgkrtwiwBO//////pW4YFRWQhaRRhZZnVwGhf////+ocv/zNEQmApgVJAANjwAFkC5YCApeAolD4kQb+EQJYNKwLWGmc6sqMBwJvf////6tDEOWDgFJk1VywKMGoM2f////+N1JmgJuPv/zNGQuA4AbJAAl5hIDwC48AAIGBEho7wTL5b6kSO7IUAA5uDABYNNjGDBSJEN//////xtQsszVy27IcWBbQkLgzv7YmZYW///zNGQ2AqzFNAgcA1+D8CZIAAhMAP/3/rozCAsBjIqCY/DBWMfQZp1f/////0F6phXSNisgAJjo6icT2vpvM/Vf9v///97eu//z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", Wt = "data:audio/mpeg;base64,SUQzAwAAAAABRlRSQ0sAAAACAAAAMVRDT04AAAAIAAAAQW1iaWVudFRYWFgAAAAQAAAAVFhYWAAwLjcwNzk2NTE0VFBFMQAAAB0AAABTdGV3YXJ0IFJ1c3NlbGwgLSBzY3J1c3MuY29tVElUMgAAAF0AAAH//lcAZQBzAHQAZQByAG4AIABFAGwAZQBjAHQAcgBpAGMAIAAcIFAAcgBpAG4AYwBlAHMAcwAdICAAVABlAGwAZQBwAGgAbwBuAGUAIABSAGkAbgBnAGkAbgBnAP/7FGQADTBFAK+IAAAACaAWiAADAQFwAPgUMQAAMoAfgoAwAEA6X+g1/1hwyAyAQAaw4Cf9BmQqCAYnMuflPiB2QghiQMRxz0cP/24n/er0FPOAHij9xBP2Az+lXwQDH//7FGQIgACfEEWGFEAAFSIY4MaIAAHwCzK4sYAAP4Llgx4wAKjIIeADwJx5QLnmifiA/4sOL5s56H/yaSAeAAAC/NmidyyNfLoZGKFC6VsI6/C3q8VK/2aer/0VAeugPv/7FGQCD9BnAcsHMAAMDeBZYeeAAQIcEyYMBEBAOAFlBPGEAIuS6U2f9STsCqASaN4WWuo6v+vv2bhUFaqDsVRIPBRjW3os7ffyf0II5lgCdLjSmsZLd1f/WhtkyFDMy//7FGQDD/CCAsmDAggADAA5YDAhAYH0CSQEGGAAMQEkwPMAAAc1ziCL+lyV7/oAm2QbVdv/9TiwyWoCiBa0hNxxTAKLX30/xT/ULhQZg4g2eJx2zmP11SJ0vD6cBmEAkf/7FGQEj9BwBEoDBhgADSA5UTBDAIHECSwIDAAwL4FlAPGIBG2cAK1oIAKYxBknAVO31aelNIOiqKZZEAMeun/MrZyKCaNQlhxVVt8Xf2f1qg5L+hHHsRptuR8r9IfWUv/7FEQHj/BhA0mDAxAADaA5QGBAAAHECyYMJEAAMQDlgYEEBCAgUcxAZTojt2uoJCw4M2LJnhO52j+jd9YtV1gE2dmiabP/1rTVM7HNBhgVO7f9H/1iAFJuRul0V/3f/P/7FGQLD9BbAcsDAhAIDAA5YTAgAQE8CS4MCEAwLYElRPKIAKVmtL2jwiqnd/66UATijC5YvNM/3dFaBZHFVggC2xdr/91JwAABqhZH//wwVVJwAprJhkhSrv+j6CgBQv/7FGQSjdBdA8sCARAYC8ApkiBDAQFUBywsBEAgMIDlyGAIBMk/v3/5NaSazNUCDAAABdTSaS1K/0egIAAGM0iCxH//+0iDBAAiQFiRiv/7eyvSBgSO4gdUYAGW3/VIKv/7FGQZCfBmAcwx4RgIDYA5YjwjAQFUBzMhCAAgMQGlAJCIBAbgXWYSoqL/rICKJYLnmn9f/W3bpHqAAai9P9PETWGgMnAuHWm9//0+iiPuetYtH/+cSwAhMJf/Z9RI3v/7FEQeD/BNAMmB4hgACyApcDwiAQFYDSgEhEAwKAElgMGIBou6QwAeNPnn/9sm40JJRQkcSt0ftcb76mAAAZBOXRpX/VSXDgAkAEDBYAT+ln6KADCY1NX/jGMaxYEGEv/7FGQnCdBFAUuB4gAMC6ApYRhgAQFEBS7DBEAgK4FlQGEIBBnD7kD//9A+QAED4JUPCa9NP7ces0BZsDiNeFgVR/Z9//1lAABjMBN//9XvHKSNAyOMIKduj4buXRgAAv/7FGQwDfBhAUuQYRgICmBJdQhDAQFUCTBEiGAgKoFlQCCIBinAVFs//29lTIAAJAuYXWb/7nKRPrYDN0405b/7u1RAgDICN/q//5jgAEGj/+kqqljugEAMGwulDyt6Nv/7FGQ4DfBrA0mJhhgADQBJMCBjAAF4BzBDBCAgKgClgDCMBjE+OCgN9AwKPcZTd6f+aTYAEAARoYT6hZUBAAiAAAHlRA8HP+7b5sARmmKe3T/u56zqDFdOIeQUQsn3P//7FGQ9jZBbAkwR4wAIDSAZciQhAQEsBy4mAEAgJIDmWGCABL3L63gCwVO//10pGNeloAACIcDMEXL/6zoo5JwYPNkgZHUnxcKo9hD/QEdadZlm098cWb+kMwCpfd/22v/7FGRGDTBUAU0IQwgMDEAJMAxCAAGACSwIDCAgJgCpEICEBhc71MQsegBFIAAAABPzH4p+NaWqNu+scRkgMNi759IxnoGei6sHQygB4qOSMqYn+GRGoSHADAWG//9qwv/7FGRNhdByAUxJ4xgICsApYCAgAYGgCSgHjCAAKwBmSFCEBOFl6QQoPAYEw1suf/9Ok4BYCwWWHElM6e7t7aNCoDnVgl53//XUywUoFVamEAJ4MWQD1X68tl6WL6+uCP/7FGRTC5B3AcuR4QgIDMBZQDxhAQFkByynhAAwM4Cl2GCABBMAAAabFqd/0snOT2rCAQgACYUxJ///cv/SLQqBijkFqHf9PdrUAkwaJhlPZvTpFCsXZsGkgQwvavMhMv/7FGRXC9CGAcuwwQgIDkBZQCQiAQHUDSoHmEAgLYAmCCEIBKIXIKeLMb+7V//UgDYMCcoJXu9/1IKpIEAUBkuc//p/Ji+qIAACnfGRyR17v/zRtgAGwi2Dcn/9dn0oAf/7FGRYhdBcAUoBIRAIDUBpMCRCAAH4CTDHjAAgPQDlSMEAAAtYTFEsEBiP/999CRgEsIvlD3X9nY9S6ggAABWgJSBRn/v/tMCxAAACu2nVL7H/7AeeAxcsW/1DBV0z1f/7FGRahXByAcwxgQAIDKAphhhgAQGABywHhEAwKIClQGGIBOx1n/qJtcccNC4zQqP9dQdkFA4wYX819X/+soAIhAACIOC6v9Xy7P/QLxTiWaF3NrZvTYv/8UCsAG2hP//7FGRgDdBTAUoB4RgIDIA5QCwiAAFwAywmDEAgMYDlyCCIBP+1MbSrmAIeoljkK/6v0vSTaoQPtY9Hr/+SFAYBFQEdTjX/cr9H348oBChaf//W4Ny0YgQMgAAnQAIMff/7FGRmjZBkAUuR4ggIC4BJYTBDAQGMDygGDGAgL4Cl2GGABP/2PqTpBeQw9HijHCunvkiH5YOaHxW/+27/aqAKFBJhgw91ztuQL/TVFQ8hTBwCEbfd/7nJJAACTPjQAf/7FERsD/BtAcsRIhAIDWApcjRjAQGoFyQGAGQAKIElQPEIAPTq6dAVI2qEZhDDRIdKhd932TG2xBQBGAdVOj/zZ2meKgwUEww45IoGjtfd//rAIAGaZGmFsT79ILMBVP/7FGRwj5BjA0qCAxgIDYAZhiRBAQG0CSgHiAAALgDl2MCABA0V+j7l3upxYQ8kEC4NkfX6P/o9ddWAcgAAFLwVhv9HYs0arsAFAABM6zoIP///d/WBtELApXqNen1VJf/7FGR1DdBRAsuBgwgMCuA5YDxBAYGgCSxGCCAAKoDlyGEMBGwAyjDAe7U3/1JXR1epB1H9AqMWLEqKzI3/SHODwB0Du9b9vdFlB14EHDGGumu9vSgpkReUYWEDO101/v/7FGR8hdBwAcwxIRAICsBJUDxgAQFwCywHjCAwM4ClhGAABCrWISjbXQQZDTzapj2q/m1aAckGYGQdJkmLetUl+1msE4xA2D5Iy+n//+sdsMhMg5xqav/V9SVDlRpEhP/7FGSBj9BgAkoBZhgIDkA5QjwjAAG8BygHiAAALwClyGCIBHg8PNRzrF7fl+owA9psY6WaQG/+v0fvlxM2skIGOixVAp77v/SA58IzT/X/3/VQIuIMVFLW//9DmFwsGP/7FGSFj9BqA0qAxhAACiBJQBjDAAGECSwEjEAwMoDlBJEEAFH2sV/V/uEowJCvU4gLAT/ocj+gDzgVwAf2vxluBIpVCmZABgSgZSjiZpnV18PIABlULhYs0f/9O0cGNv/7FGSLAVBuAkuxgxAIDWA5hiwhAQFoBywEiEAwNYDlRIEAAJQTFhA1xx+lyUeg+pxfd1oT1hsuarK/AgbaOUszMMte/JzhFQNn27CgsAwyJhmN0h0ICcVOD14r+pxSif/7FGSPD/BlAkoDAxgAC4BJQBhgAQGcCygMBEAgLwFlQPGEBFWPj1k3gAIZJfRC/YwwfJmeQYVj4x9zOQNIv/mK+PFQKiMa1t/Fn1un2/cWveqKv3O+GcMUT/23UCARav/7FGSUj/ByAcoDAggADoBZMEBBAAFoCSwHiAAgNQIlAPCMBP5V4PRpBYjQs1Zl3XM+9BuJrq92No35KkZGbUZsyUvIcMj0B8AACrI1ltA7d/71bpEPaEJWUrd9yi5gyv/7FGSXj/BoAcqDCQAIDgA5UTxCAAGkDSgHhEAAJwElAMGIACU2L1cKv1xzp/aI5oTy9pd10HcZPjBHtAg8IZ36uf1/+DxQpbzI4bG9dntawgFhcY2troflWY8ZMRPOmf/7FGScifBWAcsB4RgMCsAZUCwiAYFoByyniGAgLYElQMEEBMolllTRur4JmjZcpUnVG2uDKZSAB+1ZxWsfSPU1oDCS/NNt39CIJQmrT77/5xwwJnO2BgIMBSwADzm9Tf/7FGSkD9BzA0qB4xgAC8ApYSQjAAJ4BS4MBEAARoLlwLCMAGKAVEkh/nMaz6iF9f/ZTEfxOaY2qiompWokIBa+JncUEBwid6CYgPENEZv+E2+C6YPgS0BEAPqZNlK6QP/7FGSiAABfAk2FJAAIDUAJoKGAAAQ4lVYYU4AAYhKpAwQgAP5t7f/ni34hf4wJmYlqiAdtgAA/u9OIkS0SWH0RCABCWxSlM/+Fff//N4YZWW/VVTUSwHGM//0MB4m////7FGSWAAEQJFYGIGAAH6SKhcEIAERYjWgYhAAAgxJrAw5wAM03RBEik95zIQZxelVe2PsFyYpF+aXidQ6lQM7B8ziH6bqb1EVV8RGFR4N/N8VkR2B6Zn031PaNmYuyef/7FGRxAREfHljnLUACHuO6zOOcAAOUdZfigFZwUo6qrNAeyL4n6GEqVg8PJGk4FTMleniINmZnawAAM9iYXAcKyku5yVfN0N/Ce7ppm//GvBP8PIOhAB/9XNNm1k0AIP/7FGRVAAEcHeT9JEAMGcQqgKUoAEP8jWoYcoAAeZGrgw5wAYR/VW/6lQEObr6/s/oFnahKFTM0cTDyjDuPREYXA28iMWMtZmZtuNS+v//8CIbwMAIwQaB6LrfqjUFChv/7FGQ1ARD1HeP/GKAMIEOq7OQcAAPkeZPgGOE4b47qUNAqwIGxt9X1DGQ+n50JwfH2E9AbbU7YP0AHUSEUBEkXuayOioi/4J+npt/0CD5VP/6z4KUpv/+ojkNP//1BeP/7FGQWAADjHeDlCEAMEoO6sKacAEP0kWoYcoAIVhDsQwpQAWLHsf5x9BSXQuBhLPbjKES4fwMRQb9z7asiBvwAUCLlEkCv/wicg8QH//TQdlz/l5DfDPqQXvG9/26Thf/7FGQCA7B2HdmHNKAADIAbVOAIAQIUR26ABKKAL48rYNAWyJo83/6gKP///8KQD/gQAVFzeJk/7P/kwP/xdhRMTrUACv00/4g//yAYf/0BQbq//pt9g1oUDAfr3yAL///7FGQEAAB8EdotFKAADOPK8KKIAAJoU3AYUoAANQPtAwQgAP+AxFdH6KK//4gAd///B////BD9H016OkYCe3SqJGCu+B0/r73zwNf/hHDKd+qi7+p+cxcl//jwEfT/+P/7FGQDi/BqHdqHHOAADUO7EOKUAAE8RXEAAOEQMo6qwKAeyEBJ///+Vb//ANW//92///8KH9SigwdO3T/8VO/9f/6COA4f//8PfsIGaP/0NARX//1CMt///8uB+YAAa//7FEQJAABpHdkFKOAADSAbuKAIAILIjWoYcoAIYRGtAwRwARUWcSd/h7/6f/wsYeWC/366YgCYLj3T/22c32bxMM/7WRrB/v1ylhwEMScPdPX1ajOS+LG8Tjn/8riDhP/7FGQCgABnCV4GFEAADYEbUMEIAAGwd2gcoQAAM47rg5RwAJveumxH+WvR/+DdnBer034t8WXfvR//GQZmt//0Fif///BP/+hwIa///Nf///wqXf/1IwFkb//wi3/1Pf/7FEQGAABjEVkFKKAADSOrIKOcAAKAUWQYooAAUpGswwRwAF//QA7//6iH/7//E1CP66uDpoqjowL/6/GGwzFQx/T3Vp/9XC73/yvuUKYdmmN6evmjf5L5ZKr/8hlL/f/7FGQCgAB5FF2GBKAADYOrUMEIAAGod2YcVoAANI6rg4pQAEZrqH8GxT/UqjT/+aDlf/6dvj/r/4+rR//UH//+wTMuo///86//9QGR//+wCCxv//+MCD//BP//oAIP///7FGQFAABgEdsNFKAAC2I68KOcAAMggWoYVQAAP46tAwQgAMzq//QwCv//4WM/+a0//YWHBbCL/5Hi/IAIkheLBSvsvr6F98kyv/4Zg7A3/0+pcfN//8bL5ar/+8wV/v/7FGQCgACDFF0GFKAADkQLYMCIAAGod2occoAANg7rw4pQAKbXi7oTBez1IPl9X/4G2b//1b7/r6/a/Gy//6HAX//+gDAv///nHf/xoBf//hF////ILP0V//lQuP//qP/7FGQDj/BVHVmBQC2QC6O6wDQHsgGEd2gUI4AAMA7sAopQAE8l+F//2DK3//y4f+Bj5j/+oX//8FpP///x0n//GAf//8Kf///xIcrp/ZHCA4SBM2nH8U7C55TDl+3X6P/7FGQKAADZI1uGFOAAEoRrMMKUAAGQd24cUQAANQ7sQ44gAHOZwyYabiX/9COkKb/T6rj9/09fUt+LGTgn/8YALf/+g43///kFf/zgX///UK////hxPTX/+4Sz//+sR//7FGQEA7BbHdmBoC2QDSEL3gADCQGgAXyUIQAAMw7rwpRwAK/hAeAAAAdAAAAAHQz///6wB/xxxyrjsayv6H/+r/+aBD//+Nm///8QulX+1VhmOIUu/+2UD0jR2CVfp//7FGQIgADVI1uGCOACD+RrYMCIAAGcd2ocE4AAMw7sQ4RQAGP+f8eIEjMMke//iRoP//tvp+v/Unyv4pqf/5n//84CQx///0FRv/+K///C3///6gKLdKr//EJ//9QHx//7FGQED/BSHdkBQBWQC4PKwCgHsgFYR2wUI4AANA7sAopQAD5hv/6Br//+SDvyge2n/+gP//8ISf/w9t//oDv//8K///8ggL6a+nTBTVf043E0UOgZIIdw1v/9FHfE3//7FGQLAADO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";
class al {
constructor() {
this._bellContext = null, this._isMuteBell = !1, this._calleeBellFilePath = Wt, this._callRole = IA.UNKNOWN, this._callStatus = P.IDLE, this._bellContext = new Audio(), this._bellContext.loop = !0;
}
setBellSrc() {
try {
let A = tl;
this._callRole === IA.CALLEE && (A = this._calleeBellFilePath || Wt), this._bellContext.src = A;
} catch (A) {
console.warn(`${i.PREFIX}Failed to setBellSrc, ${A}`);
}
}
setBellProperties(A) {
this._callRole = A.callRole || this._callRole, this._callStatus = A.callStatus || this._callStatus, this._calleeBellFilePath = A.calleeBellFilePath || this._calleeBellFilePath, this._isMuteBell = et(A.isMuteBell) ? this._isMuteBell : A.isMuteBell;
}
async play() {
try {
if (this._callStatus !== P.CALLING)
return;
this.setBellSrc(), this._callRole === IA.CALLEE && !this._isMuteBell && await this._bellContext.play(), this._callRole === IA.CALLER && await this._bellContext.play();
} catch (A) {
console.warn(`${i.PREFIX}Failed to play audio file, ${A}`);
}
}
async stop() {
try {
await this._bellContext.pause();
} catch (A) {
console.warn(`${i.PREFIX}Failed to stop audio file, ${A}`);
}
}
async setBellMute(A) {
this._callStatus !== P.CALLING && this._callRole !== IA.CALLEE || (A ? await this.stop() : await this.play());
}
destroy() {
try {
this._isMuteBell = !1, this._calleeBellFilePath = "", this._callRole = IA.UNKNOWN, this._callStatus = P.IDLE, this._bellContext.pause(), this._bellContext = null;
} catch (A) {
console.warn(`${i.PREFIX}Failed to destroy, ${A}`);
}
}
}
function TA() {
return function(a, A, e) {
const t = e.value, o = /* @__PURE__ */ new Set();
return e.value = async function(...n) {
var s, r;
if (o.has(this)) {
console.warn(`${i.PREFIX}previous ${A}() is ongoing, please avoid repeated calls`), (r = (s = this == null ? void 0 : this.getTUICallEngineInstance()) == null ? void 0 : s.reportLog) == null || r.call(s, {
name: "TUICallKit.avoidRepeatedCall.fail",
data: { name: A },
error: `previous ${A}() is ongoing`
});
return;
}
try {
o.add(this);
const c = await t.apply(this, n);
return o.delete(this), c;
} catch (c) {
throw o.delete(this), c;
}
}, e;
};
}
const Ce = i.PREFIX + "API";
function UA(a) {
return function(A, e, t) {
let o = t.value;
return t.value = function(...n) {
return ol.call(this, a, n, e), o.apply(this, n);
}, t;
};
}
function ol(a, A, e) {
try {
if (A[0].SDKAppID || (a = el(a, "SDKAppID", "sdkAppID")), ra(a))
for (let t = 0; t < a.length; t++)
Gt.call(this, {
...a[t],
value: A[t],
name: e
});
else
for (const t in a)
a.hasOwnProperty(t) && Gt.call(this, {
...a[t],
value: A[0][t],
name: e,
key: t
});
} catch (t) {
throw console.error(t), t;
}
}
function Gt({ required: a, rules: A, range: e, value: t, allowEmpty: o, name: n, key: s }) {
if (et(t)) {
if (a)
throw new Error(`${Ce}<${n}>: ${s} is required.`);
return;
}
const r = A.some((M) => M === Al(t));
let c = "";
if (!r) {
for (let M = 0; M < A.length; M++) {
let N = A[M];
N = N.replace(N[0], N[0].toUpperCase()), c += `${N}/`;
}
throw c = c.substring(0, c.length - 1), new Error(`${Ce}<${n}>: ${s} must be ${c}, current ${s} is ${typeof t}.`);
}
if (o === !1 && pt(t) && t.trim() === "")
throw new Error(`${Ce}<${n}>: ${s} is blank.`);
if (ra(e) && e && e.indexOf(t) === -1)
throw new Error(`${Ce}<${n}>: ${s} error, only be ${e}, current ${s} is ${t}.`);
if (pt(e) && e.indexOf("~") !== -1) {
const M = e.split("~");
if (t < +M[0] || t > +M[1] || ua(t) && Number.isNaN(t))
throw new Error(`${Ce}<${n}>: ${s} error, only be ${e}, current ${s} is ${t}.`);
}
}
const fA = {
init: {
SDKAppID: {
required: !0,
rules: [i.NUMBER],
allowEmpty: !1
},
userID: {
required: !0,
rules: [i.STRING],
allowEmpty: !1
},
userSig: {
required: !0,
rules: [i.STRING],
allowEmpty: !1
},
tim: {
required: !1,
rules: [i.OBJECT]
}
},
call: {
userID: {
required: !0,
rules: [i.STRING],
allowEmpty: !1
},
type: {
required: !0,
rules: [i.NUMBER],
range: [1, 2],
allowEmpty: !1
},
roomID: {
required: !1,
rules: [i.NUMBER],
// 仅支持数字房间号, 后续会支持字符串房间号
range: `0~${kt}`,
allowEmpty: !1
},
strRoomID: {
required: !1,
rules: [i.STRING],
allowEmpty: !0
},
userData: {
required: !1,
rules: [i.STRING],
allowEmpty: !1
},
timeout: {
required: !1,
rules: [i.NUMBER],
allowEmpty: !1
}
},
groupCall: {
userIDList: {
required: !0,
rules: [i.ARRAY],
allowEmpty: !1
},
type: {
required: !0,
rules: [i.NUMBER],
range: [1, 2],
allowEmpty: !1
},
groupID: {
required: !0,
rules: [i.STRING],
allowEmpty: !1
},
roomID: {
required: !1,
rules: [i.NUMBER],
// 仅支持数字房间号, 后续会支持字符串房间号
range: `0~${kt}`,
allowEmpty: !1
},
strRoomID: {
required: !1,
rules: [i.STRING],
allowEmpty: !0
},
timeout: {
required: !1,
rules: [i.NUMBER],
allowEmpty: !1
},
userData: {
required: !1,
rules: [i.STRING],
allowEmpty: !1
},
offlinePushInfo: {
required: !1,
rules: [i.OBJECT],
allowEmpty: !1
}
},
joinInGroupCall: {
type: {
required: !0,
rules: [i.NUMBER],
range: [1, 2],
allowEmpty: !1
},
groupID: {
required: !0,
rules: [i.STRING],
allowEmpty: !1
},
roomID: {
required: !0,
rules: [i.NUMBER],
allowEmpty: !1
},
strRoomID: {
required: !1,
rules: [i.STRING],
allowEmpty: !0
}
},
inviteUser: {
userIDList: {
required: !0,
rules: [i.ARRAY],
allowEmpty: !1
}
},
setSelfInfo: {
nickName: {
required: !1,
rules: [i.STRING],
allowEmpty: !1
},
avatar: {
required: !1,
rules: [i.STRING],
allowEmpty: !1
}
},
enableFloatWindow: [
{
key: "enable",
required: !1,
rules: [i.BOOLEAN],
allowEmpty: !1
}
],
enableAIVoice: [
{
key: "enable",
required: !0,
rules: [i.BOOLEAN],
allowEmpty: !1
}
],
enableMuteMode: [
{
key: "enable",
required: !0,
rules: [i.BOOLEAN],
allowEmpty: !1
}
],
setCallingBell: [
{
key: "filePath",
required: !1,
rules: [i.STRING],
allowEmpty: !0
}
],
setLanguage: [
{
key: "language",
required: !0,
rules: [i.STRING],
allowEmpty: !1
}
],
setVideoDisplayMode: [
{
key: "displayMode",
required: !0,
rules: [i.STRING],
range: [fe.CONTAIN, fe.COVER, fe.FILL],
allowEmpty: !1
}
],
setVideoResolution: [
{
key: "resolution",
required: !0,
rules: [i.STRING],
range: [ve.RESOLUTION_1080P, ve.RESOLUTION_480P, ve.RESOLUTION_720P],
allowEmpty: !1
}
]
};
function tt(a) {
return function(A, e, t) {
let o = t.value;
return t.value = function(...n) {
return ll.call(this, a, n, e), o.apply(this, n);
}, t;
};
}
function ll(a) {
if (a != null && a.engineInstance && !this._tuiCallEngine) {
const A = `${i.PREFIX} ${v("TUICallKit init is not complete")}`;
throw console.error(A), A;
}
}
class nl {
constructor() {
this.defaultStore = {
callStatus: P.IDLE,
callRole: IA.UNKNOWN,
callMediaType: _.UNKNOWN,
localUserInfo: { userId: "" },
localUserInfoExcludeVolume: { userId: "" },
remoteUserInfoList: [],
remoteUserInfoExcludeVolumeList: [],
callerUserInfo: { userId: "" },
isGroup: !1,
callDuration: "00:00:00",
// 通话时长
callTips: "",
// 通话提示的信息. 例如: '等待谁接听', 'xxx 拒绝通话', 'xxx 挂断通话'
toastInfo: { text: "" },
// 远端用户挂断、拒绝、超时、忙线等的 toast 提示信息
isMinimized: !1,
// 用来记录当前是否悬浮窗模式
enableFloatWindow: !1,
// 开启/关闭悬浮窗功能设置为false通话界面左上角的悬浮窗按钮会隐藏
bigScreenUserId: "",
// 当前大屏幕显示的 userID 用户
language: $o(),
// en, zh-cn
isClickable: !1,
// 是否可点击, 用于按钮增加 loading 效果,不可点击
deviceList: { cameraList: [], microphoneList: [], currentCamera: {}, currentMicrophone: {} },
showPermissionTip: !1,
netWorkQualityList: [],
// 显示网络状态差的提示
isMuteSpeaker: !1,
groupID: "",
roomID: 0,
roomIdType: 0,
cameraPosition: we.FRONT,
// 前置或后置值为front, back
groupCallMembers: [],
// chat 群会话在的通话中的成员
// TUICallKit 组件上的属性
displayMode: fe.COVER,
// 设置预览远端的画面显示模式
videoResolution: ve.RESOLUTION_480P,
showSelectUser: !1,
// 小程序相关属性
pusher: {},
player: [],
isEarPhone: !1,
// 是否是听筒, 默认: false
pusherId: i.INITIAL_PUSHER,
// 重新渲染 live-Pusher 的标识位
// 是否开启虚拟背景, 目前仅 web 支持
isShowEnableVirtualBackground: !1,
// 是否显示虚拟背景图标, 默认: false
enableVirtualBackground: !1,
// 是否开启虚拟背景, 默认: false
// customUIConfig
customUIConfig: {
button: {},
viewBackground: {},
layoutMode: Xe.RemoteInLargeView
}
}, this.store = qe(this.defaultStore), this.prevStore = qe(this.defaultStore);
}
update(A, e) {
switch (A) {
case i.CALL_TIPS:
const t = this.getData(A);
this.prevStore[A] = t;
default:
this.store[A] = e;
}
}
getPrevData(A) {
return A ? this.prevStore[A] : this.prevStore;
}
getData(A) {
return A ? this.store[A] : this.store;
}
// reset call store
reset(A = []) {
A.length === 0 && (A = Object.keys(this.store));
const e = A.reduce((t, o) => ({ ...t, [o]: this.defaultStore[o] }), {});
this.store = {
...this.defaultStore,
...this.store,
...e
};
}
}
let at = class Le {
constructor() {
this.timerId = -1, this.storeMap = {
[u.CALL]: new nl()
}, this.task = {};
}
/**
* 获取 TUIStore 实例
* @returns {TUIStore}
*/
static getInstance() {
return Le.instance || (Le.instance = new Le()), Le.instance;
}
/**
* UI 组件注册监听回调
* @param {StoreName} storeName store 名称
* @param {IOptions} options 监听信息
* @param {Object} params 扩展参数
* @param {String} params.notifyRangeWhenWatch 注册时监听时的通知范围, 'all' - 通知所有注册该 key 的监听; 'myself' - 通知本次注册该 key 的监听; 默认不通知
*/
watch(A, e, t) {
this.task[A] || (this.task[A] = {});
const o = this.task[A];
Object.keys(e).forEach((n) => {
const s = e[n];
o[n] || (o[n] = /* @__PURE__ */ new Map()), o[n].set(s, 1);
const { notifyRangeWhenWatch: r } = t || {};
if (r === i.ALL && this.notify(A, n), r === i.MYSELF) {
const c = this.getData(A, n);
s.call(this, c);
}
});
}
/**
* UI 取消组件监听回调
* @param {StoreName} storeName store 名称
* @param {IOptions} options 监听信息,包含需要取消的回掉等
*/
unwatch(A, e) {
if (!this.task[A])
return;
const t = this.task[A];
Object.keys(e).forEach((o) => {
t[o].delete(e[o]);
});
}
/**
* 通用 store 数据更新messageList 的变更需要单独处理
* @param {StoreName} storeName store 名称
* @param {string} key 变更的 key
* @param {unknown} data 变更的数据
*/
update(A, e, t) {
var o;
(pt(t) || ua(t) || Ho(t)) && this.storeMap[A].store[e] === t || ((o = this.storeMap[A]) == null || o.update(e, t), this.notify(A, e));
}
/**
* 获取 Store 的上一个状态值
* @param {StoreName} storeName store 名称
* @param {string} key 待获取的 key
* @returns {Any}
*/
getPrevData(A, e) {
var t;
return (t = this.storeMap[A]) == null ? void 0 : t.getPrevData(e);
}
/**
* 获取 Store 数据
* @param {StoreName} storeName store 名称
* @param {string} key 待获取的 key
* @returns {Any}
*/
getData(A, e) {
var t;
return (t = this.storeMap[A]) == null ? void 0 : t.getData(e);
}
/**
* UI 组件注册监听回调
* @param {StoreName} storeName store 名称
* @param {string} key 变更的 key
*/
notify(A, e) {
if (!this.task[A])
return;
const t = this.task[A];
if (t[e]) {
const o = t[e], n = this.getData(A, e);
for (const [s] of o.entries())
s.call(this, n);
}
}
reset(A, e = [], t = !1) {
if (A in this.storeMap) {
const o = this.storeMap[A];
e.length === 0 && (e = Object.keys(o == null ? void 0 : o.store)), o.reset(e), t && e.forEach((n) => {
this.notify(A, n);
});
}
}
// 批量修改多个 key-value
updateStore(A, e) {
const t = e || u.CALL;
Object.keys(A).forEach((o) => {
this.update(t, o, A[o]);
});
}
};
const AA = at.getInstance();
function Dt(a, A) {
const e = {
userId: a,
nick: "",
avatar: "",
remark: "",
displayUserInfo: "",
isAudioAvailable: !1,
isVideoAvailable: !1,
isEnter: !1,
domId: A || a
};
return A ? e : { ...e, isEnter: !1 };
}
async function il(a, A) {
var t, o, n, s, r;
let e = Dt(a, i.LOCAL_VIDEO);
try {
if (!A)
return e;
const c = await A.getMyProfile(), M = AA == null ? void 0 : AA.getData(u.CALL, i.LOCAL_USER_INFO);
return (c == null ? void 0 : c.code) === 0 && (e = {
...e,
...M,
userId: (t = c == null ? void 0 : c.data) == null ? void 0 : t.userID,
nick: (o = c == null ? void 0 : c.data) == null ? void 0 : o.nick,
avatar: (n = c == null ? void 0 : c.data) == null ? void 0 : n.avatar,
displayUserInfo: ((s = c == null ? void 0 : c.data) == null ? void 0 : s.nick) || ((r = c == null ? void 0 : c.data) == null ? void 0 : r.userID)
}), e;
} catch (c) {
return console.error(`${i.PREFIX}getMyProfile failed, error: ${c}.`), e;
}
}
async function Oe(a, A) {
let e = a.map((t) => Dt(t));
try {
if (!A)
return e;
const t = await A.getFriendProfile({ userIDList: a });
if (t.code === 0) {
const { friendList: o = [], failureUserIDList: n = [] } = t.data;
let s = n.map((N) => N.userID);
if (n.length > 0) {
const N = await A.getUserProfile({ userIDList: n.map((T) => T.userID) });
(N == null ? void 0 : N.code) === 0 && (s = (N == null ? void 0 : N.data) || []);
}
const r = AA == null ? void 0 : AA.getData(u.CALL, i.REMOTE_USER_INFO_LIST), c = o.map((N) => N.userID), M = s.map((N) => N.userID);
e = a.map((N) => {
var b, x, B, F, tA, J, MA;
const T = Dt(N), I = c.indexOf(N), D = M.indexOf(N);
let h = "", j = "", m = "", w = "";
I !== -1 && (h = ((b = o[I]) == null ? void 0 : b.remark) || "", j = ((B = (x = o[I]) == null ? void 0 : x.profile) == null ? void 0 : B.nick) || "", m = h || j || T.userId || "", w = ((tA = (F = o[I]) == null ? void 0 : F.profile) == null ? void 0 : tA.avatar) || ""), D !== -1 && (j = ((J = s[D]) == null ? void 0 : J.nick) || "", m = j || T.userId || "", w = ((MA = s[D]) == null ? void 0 : MA.avatar) || "");
const H = r.find((WA) => WA.userId === N) || {};
return { ...T, ...H, remark: h, nick: j, displayUserInfo: m, avatar: w };
});
}
return e;
} catch (t) {
return console.error(`${i.PREFIX}getRemoteUserProfile failed, error: ${t}.`), e;
}
}
function qA(a, A, e) {
const t = AA.getData(u.CALL, i.IS_GROUP);
let o = `${v(a)}`;
return t && (o = A ? `${A} ${o}` : o, o = e ? `${o} ${e}` : o), o;
}
function We() {
const a = AA.getData(u.CALL, i.CALL_STATUS);
if (a === P.IDLE)
return jA.IDLE;
const A = AA.getData(u.CALL, i.IS_GROUP);
if (a === P.CALLING)
return A ? jA.DIALING_GROUP : jA.DIALING_C2C;
const e = AA.getData(u.CALL, i.CALL_MEDIA_TYPE);
return A ? e === _.AUDIO ? jA.CALLING_GROUP_AUDIO : jA.CALLING_GROUP_VIDEO : e === _.AUDIO ? jA.CALLING_C2C_AUDIO : jA.CALLING_C2C_VIDEO;
}
async function sl(a, A, e, t) {
let o = [];
try {
const n = await A.getGroupMemberList({ groupID: a, count: e, offset: t });
if (n.code === 0)
return n.data.memberList || o;
} catch (n) {
return console.error(`${i.PREFIX}getGroupMember failed, error: ${n}.`), o;
}
}
async function cl(a, A) {
let e = {};
try {
return (await A.getGroupProfile({ groupID: a })).data.group || e;
} catch (t) {
return console.warn(`${i.PREFIX}getGroupProfile failed, error: ${t}.`), e;
}
}
function da(a, A) {
a === 0 && A ? (AA.update(u.CALL, i.ROOM_ID, A), AA.update(u.CALL, i.ROOM_ID_TYPE, Tt.STRING_ROOM_ID)) : (AA.update(u.CALL, i.ROOM_ID, a), AA.update(u.CALL, i.ROOM_ID_TYPE, Tt.NUMBER_ROOM_ID));
}
function bA(a) {
return a || {};
}
function ut(a) {
if (a.length === 0)
return;
let A = AA.getData(u.CALL, i.REMOTE_USER_INFO_LIST);
a.forEach((e) => {
A = A.filter((t) => t.userId !== e);
}), AA.update(u.CALL, i.REMOTE_USER_INFO_LIST, A), AA.update(u.CALL, i.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, A);
}
function Mt(a) {
a == null || a.getDeviceList("speaker").then((e) => {
const t = AA.getData(u.CALL, i.DEVICE_LIST), o = (e == null ? void 0 : e[0]) || {};
AA.update(
u.CALL,
i.DEVICE_LIST,
{ ...t, speakerList: e, currentSpeaker: o }
);
}).catch((e) => {
console.error(`${i.PREFIX}updateSpeakerList failed, error: ${JSON.stringify(e)}.`);
}), AA.getData(u.CALL, i.CALL_MEDIA_TYPE) === _.VIDEO && (a == null || a.getDeviceList("camera").then((e) => {
const t = AA.getData(u.CALL, i.DEVICE_LIST), o = (e == null ? void 0 : e[0]) || {};
AA.update(
u.CALL,
i.DEVICE_LIST,
{ ...t, cameraList: e, currentCamera: o }
);
}).catch((e) => {
console.error(`${i.PREFIX}updateCameraList failed, error: ${e}.`);
})), a == null || a.getDeviceList("microphones").then((e) => {
const t = AA.getData(u.CALL, i.DEVICE_LIST), o = (e == null ? void 0 : e[0]) || {};
AA.update(
u.CALL,
i.DEVICE_LIST,
{ ...t, microphoneList: e, currentMicrophone: o }
);
}).catch((e) => {
console.error(`${i.PREFIX}updateMicrophoneList failed, error: ${e}.`);
});
}
function dt(a, A, e) {
if (_o(a)) {
let t = "";
A === _.AUDIO && (t = qA(EA.NO_MICROPHONE_DEVICE_PERMISSION)), A === _.VIDEO && (t = qA(EA.NO_CAMERA_DEVICE_PERMISSION));
const o = e == null ? void 0 : e.getDevicePermission();
o != null && o.audio || AA.update(u.CALL, i.SHOW_PERMISSION_TIP, !0), t && AA.update(u.CALL, i.TOAST_INFO, { text: t, type: i.ERROR }), console.error(`${i.PREFIX}call failed, error: ${a.message}.`);
}
}
function oe(a, A) {
let e = AA.getData(u.CALL, i.LOCAL_USER_INFO);
A === i.AUDIO && (e = { ...e, isAudioAvailable: a }), A === i.VIDEO && (e = { ...e, isVideoAvailable: a }), AA.update(u.CALL, i.LOCAL_USER_INFO, e), AA.update(u.CALL, i.LOCAL_USER_INFO_EXCLUDE_VOLUMN, e);
}
class He {
static generateTaskID() {
return this.currentTaskID++;
}
/**
*
* @param {string} taskName 'interval' 'timeout'
* @param {function} callback
* @param {object} options include:
* @param {number} options.delay millisecond
* @param {number} options.count 定时器回调执行次数0 无限次 or n次
* @param {boolean} options.backgroundTask 在页面静默后是否继续执行定时器
*/
static run(A = i.TIMEOUT, e, t) {
A === i.INTERVAL ? t = { delay: 2e3, count: 0, backgroundTask: !0, ...t } : t = { delay: 2e3, count: 0, backgroundTask: !0, ...t }, ca(e) && (t = { ...t, ...e }), Ye(A) && (e = A, A = i.TIMEOUT);
const o = {
taskID: this.generateTaskID(),
loopCount: 0,
intervalID: null,
timeoutID: null,
taskName: A,
callback: e,
...t
};
return this.taskMap.set(o.taskID, o), A === i.INTERNAL ? this.interval(o) : this.timeout(o), o.taskID;
}
/**
* 定时循环执行回调函数
* 可以指定循环的时间间隔
* 可以指定循环次数
* @param {object} taskItem
* @param {function} callback
* @param {*} delay
* @param {*} count
* @returns ID
*/
static interval(A) {
const e = () => {
A.callback(), A.loopCount += 1, this.isBreakLoop(A);
};
return A.intervalID = setInterval(e, A.delay);
}
/**
* 延迟执行回调
* count = 0,循环
* count = n, 执行n次
* @param {object} taskItem
*
*/
static timeout(A) {
const e = () => {
if (A.callback(), A.loopCount += 1, !this.isBreakLoop(A))
return A.timeoutID = setTimeout(e, A.delay);
};
return A.timeoutID = setTimeout(e, A.delay);
}
static hasTask(A) {
return this.taskMap.has(A);
}
static clearTask(A) {
if (!this.taskMap.has(A))
return !0;
const { intervalID: e, timeoutID: t, onVisibilitychange: o } = this.taskMap.get(A);
return e && clearInterval(e), t && clearTimeout(t), o && document.removeEventListener("visibilitychange", o), this.taskMap.delete(A), !0;
}
/**
* 1. 如果已移除出定时队列,退出当前任务
* 2. 如果当前任务已满足次数限制,则退出当前任务
* @param {object} taskItem
* @returns
*/
static isBreakLoop(A) {
return this.taskMap.has(A.taskID) ? A.count !== 0 && A.loopCount >= A.count ? (this.clearTask(A.taskID), !0) : !1 : !0;
}
}
He.taskMap = /* @__PURE__ */ new Map();
He.currentTaskID = 1;
const rl = function(a) {
if (a === null || typeof a > "u")
return !0;
if (typeof a == "boolean")
return !1;
if (typeof a == "number")
return a === 0;
if (typeof a == "string" || typeof a == "function" || Array.isArray(a))
return a.length === 0;
if (a instanceof Error)
return a.message === "";
if (ca(a)) {
for (const A in a)
if (Object.prototype.hasOwnProperty.call(a, A))
return !1;
return !0;
}
return !1;
}, It = "_local_user_id";
class ie {
constructor() {
this._viewConfig = {
viewBackground: {
local: {},
remote: {}
}
}, this._isSetViewBackgroundConfig = { remote: !1, local: !1 }, this._tuiCallEngine = null, this._tuiStore = null;
}
static getInstance() {
return ie.instance || (ie.instance = new ie()), ie.instance;
}
_updateViewBackground() {
var t, o, n;
const A = (t = this._tuiStore) == null ? void 0 : t.getData(u.CALL, i.CUSTOM_UI_CONFIG), { userId: e } = (o = this._tuiStore) == null ? void 0 : o.getData(u.CALL, i.LOCAL_USER_INFO);
Object.keys(this._viewConfig.viewBackground.remote).includes(e) && delete this._viewConfig.viewBackground.remote[e], (n = this._tuiStore) == null || n.update(
u.CALL,
i.CUSTOM_UI_CONFIG,
{
...A,
viewBackground: {
...this._viewConfig.viewBackground.remote,
...this._viewConfig.viewBackground.local
}
}
);
}
setEngineInstance(A) {
this._tuiCallEngine = A;
}
setTUIStore(A) {
this._tuiStore = A;
}
updateViewBackgroundUserId(A) {
var e, t;
if (A === "local") {
const { userId: o } = (e = this._tuiStore) == null ? void 0 : e.getData(u.CALL, i.LOCAL_USER_INFO);
if (Object.keys(this._viewConfig.viewBackground.remote).includes(o) && (delete this._viewConfig.viewBackground.remote[o], this._updateViewBackground()), !this._isSetViewBackgroundConfig.local)
return;
const n = this._viewConfig.viewBackground.local, s = n[o] || n[It];
n[o] = n[It], this._viewConfig.viewBackground.local = { [o]: s }, this._updateViewBackground();
} else {
let o = this._viewConfig.viewBackground.remote;
this._isSetViewBackgroundConfig.remote && Object.keys(o).includes("*") && (((t = this._tuiStore) == null ? void 0 : t.getData(u.CALL, i.REMOTE_USER_INFO_LIST)).map((r) => r.userId).forEach((r) => {
Object.keys(o).includes(r) || (o[r] = o["*"]);
}), this._viewConfig.viewBackground.remote = o, this._updateViewBackground());
}
}
hideFeatureButton(A) {
var t, o, n, s, r;
(o = (t = this._tuiCallEngine) == null ? void 0 : t.reportLog) == null || o.call(t, {
name: "TUICallKit.hideFeatureButton.start",
data: { buttonName: A }
});
const e = (n = this._tuiStore) == null ? void 0 : n.getData(u.CALL, i.CUSTOM_UI_CONFIG);
(r = this._tuiStore) == null || r.update(
u.CALL,
i.CUSTOM_UI_CONFIG,
{
...e,
button: {
...e.button,
[A]: { ...((s = e.button) == null ? void 0 : s[A]) || {}, show: !1 }
}
}
);
}
setLocalViewBackgroundImage(A) {
var t, o, n;
(o = (t = this._tuiCallEngine) == null ? void 0 : t.reportLog) == null || o.call(t, {
name: "TUICallKit.setLocalViewBackgroundImage.start",
data: { url: A }
}), this._isSetViewBackgroundConfig.local = !0;
let { userId: e } = (n = this._tuiStore) == null ? void 0 : n.getData(u.CALL, i.LOCAL_USER_INFO);
rl(e) && (e = It), this._viewConfig.viewBackground.local = { [e]: A }, this._updateViewBackground();
}
setRemoteViewBackgroundImage(A, e) {
var t, o;
(o = (t = this._tuiCallEngine) == null ? void 0 : t.reportLog) == null || o.call(t, {
name: "TUICallKit.setRemoteViewBackgroundImage.start",
data: { userId: A, url: e }
}), this._isSetViewBackgroundConfig.remote = !0, A === "*" && (this._viewConfig.viewBackground.remote = {}), this._viewConfig.viewBackground.remote[A] = e, this._updateViewBackground();
}
setLayoutMode(A) {
var t, o;
(o = (t = this._tuiCallEngine) == null ? void 0 : t.reportLog) == null || o.call(t, {
name: "TUICallKit.setLayoutMode.start",
data: { layoutMode: A }
});
const e = this._tuiStore.getData(u.CALL, i.CUSTOM_UI_CONFIG);
this._tuiStore.update(
u.CALL,
i.CUSTOM_UI_CONFIG,
{
...e,
layoutMode: A
}
);
}
setCameraDefaultState(A) {
var t, o;
(o = (t = this._tuiCallEngine) == null ? void 0 : t.reportLog) == null || o.call(t, {
name: "TUICallKit.setCameraDefaultState.start",
data: { isOpen: A }
});
const e = qe(this._tuiStore.getData(u.CALL, i.CUSTOM_UI_CONFIG));
Object.keys(e.button).includes(_A.Camera) || (e.button[_A.Camera] = {}), e.button[_A.Camera].state = A ? Te.Open : Te.Close, this._tuiStore.update(u.CALL, i.CUSTOM_UI_CONFIG, e);
}
}
const Ge = at.getInstance(), xA = {
audioCall: () => v("Voice call"),
videoCall: () => v("Video call"),
switchToAudio: () => v("Switch audio call"),
switchToVideo: () => v("Switch video call"),
hangup: ({ callDuration: a }) => `${v("Call duration")}${a}`
};
class ge {
constructor(A) {
var e, t, o;
this._callService = A.callService, ye.registerEvent(dA.TUILogin.EVENT.LOGIN_STATE_CHANGED, dA.TUILogin.EVENT_SUB_KEY.USER_LOGIN_SUCCESS, this), (e = dA.TUIChat) != null && e.EVENT && ye.registerEvent((t = dA.TUIChat.EVENT) == null ? void 0 : t.CHAT_STATE_CHANGED, (o = dA.TUIChat.EVENT_SUB_KEY) == null ? void 0 : o.CHAT_OPENED, this), ye.registerService(dA.TUICalling.SERVICE.NAME, this), ye.registerExtension(dA.TUIChat.EXTENSION.INPUT_MORE.EXT_ID, this);
}
static getInstance(A) {
return ge.instance || (ge.instance = new ge(A)), ge.instance;
}
// ================ 【】 ================
/**
* message on screen
* @param {Any} params Parameters for message up-screening
*/
callTUIService(A) {
const { message: e } = A || {};
ye.callService({
serviceName: dA.TUIChat.SERVICE.NAME,
method: dA.TUIChat.SERVICE.METHOD.UPDATE_MESSAGE_LIST,
params: { message: e }
});
}
/**
* tuicore getExtension
* @param {String} extensionID extension id
* @param {Any} params tuicore pass parameters
* @returns {Any[]} return extension
*/
onGetExtension(A, e) {
var t, o;
if (A === dA.TUIChat.EXTENSION.INPUT_MORE.EXT_ID) {
if ((o = (t = this._callService.getTUICallEngineInstance()) == null ? void 0 : t.reportLog) == null || o.call(t, { name: "TUICallKit.onGetExtension", data: { extensionID: A, params: e } }), et(e))
return [];
if ([dA.TUIChat.TYPE.ROOM, dA.TUIChat.TYPE.CUSTOMER_SERVICE].includes(e.chatType))
return [];
let n = [];
const s = {
weight: 1e3,
text: "语音通话",
icon: bo,
data: {
name: "voiceCall"
},
listener: {
onClicked: async (c) => await this._handleTUICoreOnClick(c, c.type || _.AUDIO)
}
}, r = {
weight: 900,
text: "视频通话",
icon: xo,
data: {
name: "videoCall"
},
listener: {
onClicked: async (c) => await this._handleTUICoreOnClick(c, c.type || _.VIDEO)
}
};
return e != null && e.chatType ? n = [s, r] : (!(e != null && e.filterVoice) && n.push(s), !(e != null && e.filterVideo) && n.push(r)), n;
}
}
async onCall(A, e) {
A === dA.TUICalling.SERVICE.METHOD.START_CALL && await this._handleTUICoreOnClick(e, e.type);
}
/**
* tuicore notify event manager
* @param {String} eventName event name
* @param {String} subKey sub key
* @param {Any} options tuicore event parameters
*/
async onNotifyEvent(A, e, t) {
var o, n, s, r, c, M, N, T;
try {
if (A === dA.TUILogin.EVENT.LOGIN_STATE_CHANGED)
if (e === dA.TUILogin.EVENT_SUB_KEY.USER_LOGIN_SUCCESS) {
const { chat: I, userID: D, userSig: h, SDKAppID: j } = Lo.getContext();
await ((o = this._callService) == null ? void 0 : o.init({ tim: I, userID: D, userSig: h, sdkAppID: j, isFromChat: !0, component: ht.TIM_CALL_KIT })), (n = this._callService) == null || n.setIsFromChat(!0), (s = this._callService) == null || s.setLogLevel(aa.NORMAL), this._addListenChatEvent();
} else
e === dA.TUILogin.EVENT_SUB_KEY.USER_LOGOUT_SUCCESS && (this._removeListenChatEvent(), await ((r = this._callService) == null ? void 0 : r.destroyed()));
if ((c = dA.TUIChat) != null && c.EVENT && A === dA.TUIChat.EVENT.CHAT_STATE_CHANGED && e === dA.TUIChat.EVENT_SUB_KEY.CHAT_OPENED) {
if ((M = this._callService) == null || M.setCurrentGroupId((t == null ? void 0 : t.groupID) || ""), Ge.getData(u.CALL, i.CALL_STATUS) !== P.IDLE)
return;
const I = (N = this._callService) == null ? void 0 : N.getCurrentGroupId(), D = I ? await this.getGroupAttributes((T = this._callService) == null ? void 0 : T.getTim(), I) : {};
await this.updateStoreBasedOnGroupAttributes(D);
}
} catch (I) {
console.error(`${i.PREFIX}TUICore onNotifyEvent failed, error: ${I}.`);
}
}
// Handling the chat+call scenario, data required for the joinInGroupCall API: update store / clear relevant store data
async updateStoreBasedOnGroupAttributes(A) {
var e, t, o, n;
(o = (t = (e = this._callService) == null ? void 0 : e.getTUICallEngineInstance()) == null ? void 0 : t.reportLog) == null || o.call(t, {
name: "TUICallKit.getJoinGroupCallInfo.success",
data: { groupAttributes: A }
});
try {
const {
group_id: s = "",
room_id: r = 0,
room_id_type: c = 0,
call_media_type: M = i.UNKNOWN,
// @ts-ignore
user_list: N
// The default value of the user list returned by the background is null
} = A[i.INNER_ATTR_KIT_INFO] ? JSON.parse(A[i.INNER_ATTR_KIT_INFO]) : {};
let T = (N || []).map((D) => D.userid);
T = T.length && await Oe(T, (n = this._callService) == null ? void 0 : n.getTim());
const I = {
[i.GROUP_ID]: s,
[i.GROUP_CALL_MEMBERS]: T,
[i.ROOM_ID]: r,
[i.CALL_MEDIA_TYPE]: vo[M],
[i.ROOM_ID_TYPE]: c
};
Ge.updateStore(I, u.CALL);
} catch (s) {
console.warn(`${i.PREFIX}updateStoreBasedOnGroupAttributes fail, error: ${s}`);
}
}
// Get group attribute
async getGroupAttributes(A, e) {
if (!e)
return {};
try {
const { data: t } = await A.getGroupAttributes({
groupID: e,
keyList: []
});
return (t == null ? void 0 : t.groupAttributes) || {};
} catch (t) {
return console.warn(`${i.PREFIX}getGroupAttributes fail: ${t}`), {};
}
}
isLineBusy(A) {
var o;
const e = Pe(A.payload.data), t = Pe(e == null ? void 0 : e.data);
return (t == null ? void 0 : t.line_busy) === "line_busy" || (t == null ? void 0 : t.line_busy) === "" || ((o = t == null ? void 0 : t.data) == null ? void 0 : o.message) === "lineBusy";
}
async getCallKitMessage(A, e) {
var I, D, h, j;
const t = Pe(A.payload.data);
if ((t == null ? void 0 : t.businessID) !== 1)
return {};
let o = "";
const n = Pe(t == null ? void 0 : t.data), s = n.call_type, r = t.inviteeList, c = (I = n == null ? void 0 : n.data) == null ? void 0 : I.inviter, M = Ge.getData(u.CALL, i.LOCAL_USER_INFO).userId, N = c === M, T = (D = n == null ? void 0 : n.data) == null ? void 0 : D.cmd;
switch (t == null ? void 0 : t.actionType) {
case Ie.INVITE: {
o = xA[T]({ callDuration: Ma(n == null ? void 0 : n.call_end) });
break;
}
case Ie.CANCEL_INVITE:
o = v(N ? "Call Cancel" : "Other Side Cancel");
break;
case Ie.ACCEPT_INVITE:
["switchToAudio", "switchToVideo"].includes(T) ? o = (h = xA == null ? void 0 : xA[T]) == null ? void 0 : h.call(xA) : o = v("Answered");
break;
case Ie.REJECT_INVITE:
this.isLineBusy(A) ? o = v(N ? "Line Busy" : "Other Side Line Busy") : o = v(N ? "Other Side Decline" : "Decline");
break;
case Ie.INVITE_TIMEOUT:
["switchToAudio", "switchToVideo"].includes(T) ? o = (j = xA == null ? void 0 : xA[T]) == null ? void 0 : j.call(xA) : o = v(N ? "Other Side No Answer" : "No answer");
break;
}
return { messageCardContent: o, callMediaType: s, inviteeList: r };
}
// =========================【chat: event listening】=========================
_addListenChatEvent() {
var A, e;
if (!((A = this._callService) != null && A.getTim())) {
console.warn(`${i.PREFIX}add tim event listener failed, tim is empty.`);
return;
}
(e = this._callService) == null || e.getTim().on(Vt.EVENT.GROUP_ATTRIBUTES_UPDATED, this._handleGroupAttributesUpdated, this);
}
_removeListenChatEvent() {
var A, e;
if (!((A = this._callService) != null && A.getTim())) {
console.warn(`${i.PREFIX}remove tim event listener failed, tim is empty.`);
return;
}
(e = this._callService) == null || e.getTim().off(Vt.EVENT.GROUP_ATTRIBUTES_UPDATED, this._handleGroupAttributesUpdated, this);
}
/**
* chat start audio/video call via click
* @param {Any} options Parameters passed in when clicking on an audio/video call from chat
* @param {CallMediaType} type call media type. 0 - audio; 1 - video.
*/
async _handleTUICoreOnClick(A, e) {
var t, o;
try {
const { groupID: n, userIDList: s = [], ...r } = A;
n ? await ((t = this._callService) == null ? void 0 : t.groupCall({ groupID: n, userIDList: s, type: e, ...r })) : s.length === 1 && await ((o = this._callService) == null ? void 0 : o.call({ userID: s[0], type: e, ...r }));
} catch (n) {
console.debug(n);
}
}
async _handleGroupAttributesUpdated(A) {
var n;
if (Ge.getData(u.CALL, i.CALL_STATUS) !== P.IDLE)
return;
const e = (A == null ? void 0 : A.data) || {}, { groupID: t = "", groupAttributes: o = {} } = e;
t === ((n = this._callService) == null ? void 0 : n.getCurrentGroupId()) && await this.updateStoreBasedOnGroupAttributes(o);
}
}
const ul = 0, Ml = 1, Qt = 2;
function dl({ retryFunction: a, settings: A, onError: e, onRetrying: t, onRetryFailed: o, context: n }) {
return function(...s) {
const r = A.retries || 5;
let c = 0, M = -1, N = ul;
const T = async (I, D) => {
const h = n || this;
try {
const j = await a.apply(h, s);
c = 0, I(j);
} catch (j) {
const m = () => {
clearTimeout(M), c = 0, N = Qt, D(j);
}, w = () => {
N !== Qt && c < r ? (c++, N = Ml, Ye(t) && t.call(h, c, m), M = setTimeout(
() => {
M = -1, T(I, D);
},
et(A.timeout) ? 1e3 : A.timeout
)) : (m(), Ye(o) && o.call(h, j));
};
Ye(e) ? e.call(h, j, w, D, s) : w();
}
};
return new Promise(T);
};
}
function Il(a) {
return function(A, e, t) {
const { retries: o = 5, timeout: n = 2e3, onError: s, onRetrying: r, onRetryFailed: c } = a, M = dl({
retryFunction: t.value,
settings: { retries: o, timeout: n },
onError: s,
onRetrying: r,
onRetryFailed: c,
context: null
});
return t.value = function(...N) {
return M.apply(this, N);
}, t;
};
}
var Nl = Object.defineProperty, gl = Object.getOwnPropertyDescriptor, Tl = (a, A, e, t) => {
for (var o = t > 1 ? void 0 : t ? gl(A, e) : A, n = a.length - 1, s; n >= 0; n--)
(s = a[n]) && (o = (t ? s(A, e, o) : s(o)) || o);
return t && o && Nl(A, e, o), o;
};
const X = at.getInstance(), pl = ie.getInstance(), Ia = class Ee {
constructor(A) {
this._callService = A.callService;
}
static getInstance(A) {
return Ee.instance || (Ee.instance = new Ee(A)), Ee.instance;
}
addListenTuiCallEngineEvent() {
var e;
const A = (e = this._callService) == null ? void 0 : e.getTUICallEngineInstance();
if (!A) {
console.warn(`${i.PREFIX}add engine event listener failed, engine is empty.`);
return;
}
A.on(R.ERROR, this._handleError, this), A.on(R.INVITED, this._handleNewInvitationReceived, this), A.on(R.USER_ACCEPT, this._handleUserAccept, this), A.on(R.USER_ENTER, this._handleUserEnter, this), A.on(R.USER_LEAVE, this._handleUserLeave, this), A.on(R.REJECT, this._handleInviteeReject, this), A.on(R.NO_RESP, this._handleNoResponse, this), A.on(R.LINE_BUSY, this._handleLineBusy, this), A.on(R.CALLING_CANCEL, this._handleCallingCancel, this), A.on(R.SDK_READY, this._handleSDKReady, this), A.on(R.KICKED_OUT, this._handleKickedOut, this), A.on(R.MESSAGE_SENT_BY_ME, this._messageSentByMe, this), R.CALL_MESSAGE && A.on(R.CALL_MESSAGE, this._handleCallMessage, this), R.ON_USER_NETWORK_QUALITY_CHANGED && A.on(R.ON_USER_NETWORK_QUALITY_CHANGED, this._handleNetworkQuality, this), A.on(R.CALLING_END, this._handleCallingEnd, this), A.on(R.CALL_TYPE_CHANGED, this._handleCallTypeChange, this), A.on(R.USER_VIDEO_AVAILABLE, this._handleUserVideoAvailable, this), A.on(R.USER_AUDIO_AVAILABLE, this._handleUserAudioAvailable, this), A.on(R.USER_VOICE_VOLUME, this._handleUserVoiceVolume, this), A.on(R.DEVICED_UPDATED, this._handleDeviceUpdate, this);
}
removeListenTuiCallEngineEvent() {
var e;
const A = (e = this._callService) == null ? void 0 : e.getTUICallEngineInstance();
A.off(R.ERROR, this._handleError, this), A.off(R.INVITED, this._handleNewInvitationReceived, this), A.off(R.USER_ACCEPT, this._handleUserAccept, this), A.off(R.USER_ENTER, this._handleUserEnter, this), A.off(R.USER_LEAVE, this._handleUserLeave, this), A.off(R.REJECT, this._handleInviteeReject, this), A.off(R.NO_RESP, this._handleNoResponse, this), A.off(R.LINE_BUSY, this._handleLineBusy, this), A.off(R.CALLING_CANCEL, this._handleCallingCancel, this), A.off(R.SDK_READY, this._handleSDKReady, this), A.off(R.KICKED_OUT, this._handleKickedOut, this), A.off(R.MESSAGE_SENT_BY_ME, this._messageSentByMe, this), R.ON_USER_NETWORK_QUALITY_CHANGED && A.off(R.ON_USER_NETWORK_QUALITY_CHANGED, this._handleNetworkQuality, this), A.off(R.CALLING_END, this._handleCallingEnd, this), A.off(R.CALL_TYPE_CHANGED, this._handleCallTypeChange, this), A.off(R.USER_VIDEO_AVAILABLE, this._handleUserVideoAvailable, this), A.off(R.USER_AUDIO_AVAILABLE, this._handleUserAudioAvailable, this), A.off(R.USER_VOICE_VOLUME, this._handleUserVoiceVolume, this), A.off(R.DEVICED_UPDATED, this._handleDeviceUpdate, this);
}
_callerChangeToConnected() {
var t;
const A = X.getData(u.CALL, i.CALL_ROLE);
X.getData(u.CALL, i.CALL_STATUS) === P.CALLING && A === IA.CALLER && (X.update(u.CALL, i.CALL_STATUS, P.CONNECTED), (t = this._callService) == null || t.startTimer());
}
_unNormalEventsManager(A, e) {
var n;
console.log(`${i.PREFIX}${e} event data: ${JSON.stringify(A)}.`);
const t = X.getData(u.CALL, i.IS_GROUP), o = X.getData(u.CALL, i.REMOTE_USER_INFO_LIST);
switch (e) {
case R.REJECT:
case R.LINE_BUSY: {
const { userID: s } = bA(A);
let r = e === R.REJECT ? EA.OTHER_SIDE_REJECT_CALL : EA.OTHER_SIDE_LINE_BUSY, c = qA(r);
if (t) {
const M = (o.find((N) => N.userId === s) || {}).displayUserInfo || s;
r = e === R.REJECT ? EA.REJECT_CALL : EA.IN_BUSY, c = qA(r, M);
}
X.update(u.CALL, i.TOAST_INFO, { text: c }), s && ut([s]);
break;
}
case R.NO_RESP: {
const { userIDList: s = [] } = bA(A), r = t ? EA.TIMEOUT : EA.CALL_TIMEOUT, c = s.map((N) => (o.find((I) => I.userId === N) || {}).displayUserInfo || N), M = t ? qA(r, c.join()) : qA(r);
X.update(u.CALL, i.TOAST_INFO, { text: M }), s.length > 0 && ut(s);
break;
}
case R.CALLING_CANCEL: {
(n = this._callService) == null || n._resetCallStore();
break;
}
}
}
_handleError(A) {
var s;
const { code: e, message: t } = A || {}, o = Object.values(xt).indexOf(e);
let n = "";
if (o !== -1) {
const r = Object.keys(xt)[o];
n = v(wo[r]), n && X.update(u.CALL, i.TOAST_INFO, { text: n, type: i.ERROR });
}
(s = this._callService) == null || s.executeExternalAfterCalling(), console.error(`${i.PREFIX}_handleError, errorCode: ${e}; errorMessage: ${n || t}.`);
}
async _handleNewInvitationReceived(A) {
var w, H, b, x;
console.log(`${i.PREFIX}onCallReceived event data: ${JSON.stringify(A)}.`);
const { sponsor: e = "", isFromGroup: t, callMediaType: o, inviteData: n = {}, calleeIdList: s = [], groupID: r = "", roomID: c, strRoomID: M } = bA(A), N = X.getData(u.CALL, i.LOCAL_USER_INFO), T = [e, ...s.filter((B) => B !== N.userId)], I = o || n.callType, D = I === _.AUDIO ? EA.CALLEE_CALLING_AUDIO_MSG : EA.CALLEE_CALLING_VIDEO_MSG;
let h = {
[i.CALL_ROLE]: IA.CALLEE,
[i.IS_GROUP]: t,
[i.CALL_STATUS]: P.CALLING,
[i.CALL_MEDIA_TYPE]: I,
[i.CALL_TIPS]: v(D),
[i.CALLER_USER_INFO]: { userId: e },
[i.GROUP_ID]: r
};
da(c, M), X.updateStore(h, u.CALL), (w = this._callService) == null || w.executeExternalBeforeCalling(), (H = this._callService) != null && H.statusChanged && ((b = this._callService) == null || b.statusChanged({ oldStatus: jA.IDLE, newStatus: jA.BE_INVITED }));
const j = await Oe(T, (x = this._callService) == null ? void 0 : x.getTim()), [m] = j.filter((B) => B.userId === e);
j.length > 0 && X.updateStore({
[i.REMOTE_USER_INFO_LIST]: j,
[i.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST]: j,
[i.CALLER_USER_INFO]: {
userId: e,
nick: (m == null ? void 0 : m.nick) || "",
avatar: (m == null ? void 0 : m.avatar) || "",
displayUserInfo: (m == null ? void 0 : m.remark) || (m == null ? void 0 : m.nick) || e
}
}, u.CALL);
}
_handleUserAccept(A) {
this._callerChangeToConnected(), X.update(u.CALL, i.TOAST_INFO, v("answered")), console.log(`${i.PREFIX}accept event data: ${JSON.stringify(A)}.`);
}
async _handleUserEnter(A) {
var s;
this._callerChangeToConnected();
const { userID: e, data: t } = bA(A);
let o = X.getData(u.CALL, i.REMOTE_USER_INFO_LIST);
if (!o.find((r) => (r == null ? void 0 : r.userId) === e)) {
o.push({ userId: e }), o.length > 0 && (X.update(u.CALL, i.REMOTE_USER_INFO_LIST, o), X.update(u.CALL, i.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, o));
const [r] = await Oe([e], (s = this._callService) == null ? void 0 : s.getTim());
o = X.getData(u.CALL, i.REMOTE_USER_INFO_LIST), o.forEach((c) => {
(c == null ? void 0 : c.userId) === e && (c = Object.assign(c, r));
});
}
o = o.map((r) => (r.userId === e && (r.isEnter = !0), r)), o.length > 0 && (X.update(u.CALL, i.REMOTE_USER_INFO_LIST, o), X.update(u.CALL, i.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, o), pl.updateViewBackgroundUserId("remote")), console.log(`${i.PREFIX}userEnter event data: ${JSON.stringify(A)}.`);
}
_handleUserLeave(A) {
console.log(`${i.PREFIX}userLeave event data: ${JSON.stringify(A)}.`);
const { data: e, userID: t } = bA(A);
if (X.getData(u.CALL, i.IS_GROUP)) {
const n = (X.getData(u.CALL, i.REMOTE_USER_INFO_LIST).find((r) => r.userId === t) || {}).displayUserInfo || t, s = qA(EA.END_CALL, n);
X.update(u.CALL, i.TOAST_INFO, { text: s });
}
t && ut([t]);
}
_handleInviteeReject(A) {
this._unNormalEventsManager(A, R.REJECT);
}
_handleNoResponse(A) {
this._unNormalEventsManager(A, R.NO_RESP);
}
_handleLineBusy(A) {
this._unNormalEventsManager(A, R.LINE_BUSY);
}
_handleCallingCancel(A) {
var e;
(e = this._callService) == null || e.executeExternalAfterCalling(), this._unNormalEventsManager(A, R.CALLING_CANCEL);
}
_handleCallingEnd(A) {
var e, t;
console.log(`${i.PREFIX}callEnd event data: ${JSON.stringify(A)}.`), (e = this._callService) == null || e.executeExternalAfterCalling(), (t = this._callService) == null || t._resetCallStore();
}
// SDK_READY 后才能调用 tim 接口, 否则登录后立刻获取导致调用接口失败. v2.27.4+、v3 接口 login 后会抛出 SDK_READY
async _handleSDKReady(A) {
var t, o, n;
let e = X.getData(u.CALL, i.LOCAL_USER_INFO);
e = await il(e.userId, (t = this._callService) == null ? void 0 : t.getTim()), (n = this._callService) == null || n.setDefaultOfflinePushInfo({ ...(o = this._callService) == null ? void 0 : o.getDefaultOfflinePushInfo(), title: e == null ? void 0 : e.displayUserInfo }), X.update(u.CALL, i.LOCAL_USER_INFO, e), X.update(u.CALL, i.LOCAL_USER_INFO_EXCLUDE_VOLUMN, e);
}
_handleKickedOut(A) {
var e, t, o;
console.log(`${i.PREFIX}kickOut event data: ${JSON.stringify(A)}.`), (e = this._callService) != null && e.kickedOut && ((t = this._callService) == null || t.kickedOut(A)), X.update(u.CALL, i.CALL_TIPS, qA(EA.KICK_OUT)), (o = this._callService) == null || o._resetCallStore();
}
_messageSentByMe(A) {
var t, o;
const e = A == null ? void 0 : A.data;
(t = this._callService) != null && t.onMessageSentByMe && ((o = this._callService) == null || o.onMessageSentByMe(e));
}
_handleCallMessage(A) {
const e = bA(A);
this._callService._chatCombine.callTUIService({ message: e });
}
_handleCallTypeChange(A) {
const { newCallType: e, type: t } = bA(A);
X.update(u.CALL, i.CALL_MEDIA_TYPE, e || t);
}
_handleNetworkQuality(A) {
const { networkQualityList: e = [] } = bA(A);
X.update(u.CALL, i.NETWORK_STATUS, e);
const t = X.getData(u.CALL, i.IS_GROUP), o = X.getData(u.CALL, i.LOCAL_USER_INFO);
if (X.getData(u.CALL, i.REMOTE_USER_INFO_LIST), !t && e.find((s) => (o == null ? void 0 : o.userId) === (s == null ? void 0 : s.userId) && (s == null ? void 0 : s.quality) >= Ro)) {
X.update(u.CALL, i.CALL_TIPS, v(EA.LOCAL_NETWORK_IS_POOR));
return;
}
}
async _startRemoteView(A) {
var e;
if (!A) {
console.warn(`${i.PREFIX}_startRemoteView userID is empty`);
return;
}
if (!document.getElementById(A))
return console.warn(`${i.PREFIX}_startRemoteView can't find HTMLElement sid: ${A}`), Promise.reject();
try {
const t = X.getData(u.CALL, i.DISPLAY_MODE);
await ((e = this._callService) == null ? void 0 : e.getTUICallEngineInstance().startRemoteView({ userID: A, videoViewDomID: A, options: { objectFit: t } }));
} catch (t) {
return console.error(`${i.PREFIX}_startRemoteView error: ${t}.`), Promise.reject(t);
}
}
_setRemoteUserInfoAudioVideoAvailable(A, e, t) {
let o = X.getData(u.CALL, i.REMOTE_USER_INFO_LIST);
o = o.map((n) => {
if (n.userId === t) {
if (e === i.AUDIO)
return { ...n, isAudioAvailable: A };
if (e === i.VIDEO)
return { ...n, isVideoAvailable: A };
}
return n;
}), o.length > 0 && (X.update(u.CALL, i.REMOTE_USER_INFO_LIST, o), X.update(u.CALL, i.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, o));
}
async _handleUserVideoAvailable(A) {
const { userID: e, isVideoAvailable: t } = bA(A);
console.log(`${i.PREFIX}_handleUserVideoAvailable event data: ${JSON.stringify(A)}.`);
try {
t && await this._startRemoteView(e);
} catch (o) {
console.error(`${i.PREFIX}_startRemoteView failed, error: ${o}.`);
}
this._setRemoteUserInfoAudioVideoAvailable(t, i.VIDEO, e);
}
_handleUserAudioAvailable(A) {
const { userID: e, isAudioAvailable: t } = bA(A);
console.log(`${i.PREFIX}_handleUserAudioAvailable event data: ${JSON.stringify(A)}.`), this._setRemoteUserInfoAudioVideoAvailable(t, i.AUDIO, e);
}
_handleUserVoiceVolume(A) {
try {
const { volumeMap: e } = bA(A);
if ((e || []).length === 0)
return;
const t = X.getData(u.CALL, i.LOCAL_USER_INFO);
let o = X.getData(u.CALL, i.REMOTE_USER_INFO_LIST);
const [n] = e.filter((c) => c.userId === t.userId), s = e.reduce((c, M) => M.userId !== t.userId ? { ...c, [M.userId]: M.audioVolume } : c, {});
t.volume = n.audioVolume, o = o.map((c) => ({ ...c, volume: s[c.userId] }));
const r = {
[i.LOCAL_USER_INFO]: t,
[i.REMOTE_USER_INFO_LIST]: o
};
X.updateStore(r, u.CALL);
} catch (e) {
console.debug(e);
}
}
_handleDeviceUpdate(A) {
const { cameraList: e, microphoneList: t, speakerList: o, currentCamera: n, currentMicrophone: s, currentSpeaker: r } = A;
X.update(u.CALL, i.DEVICE_LIST, { cameraList: e, microphoneList: t, speakerList: o, currentCamera: n, currentMicrophone: s, currentSpeaker: r });
}
};
Tl([
Il({
retries: 5,
timeout: 200,
onRetrying(a) {
console.warn(`${i.PREFIX}_startRemoteView, retrying [${a}]`);
}
})
], Ia.prototype, "_startRemoteView", 1);
let Dl = Ia;
var yl = Object.defineProperty, Cl = Object.getOwnPropertyDescriptor, oA = (a, A, e, t) => {
for (var o = t > 1 ? void 0 : t ? Cl(A, e) : A, n = a.length - 1, s; n >= 0; n--)
(s = a[n]) && (o = (t ? s(A, e, o) : s(o)) || o);
return t && o && yl(A, e, o), o;
};
const V = sa.getInstance(), g = at.getInstance(), YA = ie.getInstance();
YA.setTUIStore(g);
const Zt = "3.3.7", Sl = "vue3", aA = class me {
constructor() {
this._tim = null, this._TUICore = null, this._timerId = -1, this._startTimeStamp = rt(), this._bellContext = null, this._isFromChat = !1, this._currentGroupId = "", this._defaultOfflinePushInfo = {
title: "",
description: v("you have a new call")
}, this._permissionCheckTimer = null, this._chatCombine = null, this._engineEventHandler = null, this._handleCallStatusChange = async (A) => {
var e, t, o, n;
try {
const s = {
callRole: g.getData(u.CALL, i.CALL_ROLE),
callStatus: g.getData(u.CALL, i.CALL_STATUS)
};
if (this._bellContext.setBellProperties(s), A === P.CALLING)
await ((e = this == null ? void 0 : this._bellContext) == null ? void 0 : e.play());
else {
if (A === P.CONNECTED) {
const r = g.getData(u.CALL, i.IS_GROUP), c = g.getData(u.CALL, i.CALL_MEDIA_TYPE), M = g.getData(u.CALL, i.REMOTE_USER_INFO_LIST), N = r ? jA.DIALING_GROUP : jA.DIALING_C2C;
g.update(u.CALL, i.CALL_TIPS, ""), this.statusChanged && this.statusChanged({ oldStatus: N, newStatus: We() }), !r && c === _.VIDEO && this.switchScreen(M[0].domId);
}
if (A === P.IDLE && this._isFromChat) {
const r = this._currentGroupId ? await ((t = this._chatCombine) == null ? void 0 : t.getGroupAttributes(this._tim, this._currentGroupId)) : {};
await ((o = this._chatCombine) == null ? void 0 : o.updateStoreBasedOnGroupAttributes(r, g, this));
}
await ((n = this == null ? void 0 : this._bellContext) == null ? void 0 : n.stop());
}
} catch (s) {
console.warn(`${i.PREFIX}handleCallStatusChange, ${s}.`);
}
}, console.log(`${i.PREFIX}version: ${Zt}`), this._watchTUIStore(), this._engineEventHandler = Dl.getInstance({ callService: this }), this._chatCombine = ge.getInstance({ callService: this });
}
static getInstance() {
return me.instance || (me.instance = new me()), me.instance;
}
async init(A) {
var e, t;
try {
if (this._tuiCallEngine)
return;
let { userID: o, tim: n, userSig: s, sdkAppID: r, SDKAppID: c, isFromChat: M, component: N = ht.TUI_CALL_KIT } = A;
this._TUICore && (r = this._TUICore.SDKAppID, n = this._TUICore.tim), this._tim = n, console.log(`${i.PREFIX}init sdkAppId: ${r || c}, userId: ${o}`), this._tuiCallEngine = ho.createInstance({
tim: n,
SDKAppID: r || c,
// 兼容传入 SDKAppID 的问题
// @ts-ignore
frameWork: Sl,
language: 6,
callkitVersion: Zt,
chat: M || !1,
component: N
}), YA.setEngineInstance(this._tuiCallEngine), this._addListenTuiCallEngineEvent(), this._bellContext = new al(), g.update(u.CALL, i.LOCAL_USER_INFO, { userId: o }), g.update(u.CALL, i.LOCAL_USER_INFO_EXCLUDE_VOLUMN, { userId: o }), YA.updateViewBackgroundUserId("local"), await this._tuiCallEngine.login({ userID: o, userSig: s, assetsPath: "" });
const T = g.getData(u.CALL, i.CUSTOM_UI_CONFIG);
(t = (e = this._tuiCallEngine) == null ? void 0 : e.reportLog) == null || t.call(e, {
name: "TUICallkit.init",
data: {
uiConfig: T
}
});
} catch (o) {
throw console.error(`${i.PREFIX}init failed, error: ${o}.`), o;
}
}
// component destroy
async destroyed() {
var A;
try {
const e = g.getData(u.CALL, i.CALL_STATUS);
if (e !== P.IDLE)
throw new Error(`please destroyed when status is idle, current status: ${e}`);
this._tuiCallEngine && (this._removeListenTuiCallEngineEvent(), await this._tuiCallEngine.destroyInstance(), this._tuiCallEngine = null), (A = this._bellContext) == null || A.destroy(), this._bellContext = null;
} catch (e) {
throw console.error(`${i.PREFIX}destroyed failed, error: ${e}.`), e;
}
}
async call(A) {
if (g.getData(u.CALL, i.CALL_STATUS) === P.IDLE)
try {
const { type: e, userID: t, offlinePushInfo: o } = A;
if (g.getData(u.CALL, i.CALL_STATUS) !== P.IDLE)
return;
await this._updateCallStoreBeforeCall(e, [{ userId: t }]), this.executeExternalBeforeCalling(), A.offlinePushInfo = { ...this._defaultOfflinePushInfo, ...o };
const n = await this._tuiCallEngine.call(A);
await this._updateCallStoreAfterCall([t], n);
} catch (e) {
this._handleCallError(e, "call");
}
}
async groupCall(A) {
if (g.getData(u.CALL, i.CALL_STATUS) === P.IDLE)
try {
const { userIDList: e, type: t, groupID: o, offlinePushInfo: n } = A;
if (g.getData(u.CALL, i.CALL_STATUS) !== P.IDLE)
return;
const s = e.map((c) => ({ userId: c }));
await this._updateCallStoreBeforeCall(t, s, o), this.executeExternalBeforeCalling(), A.offlinePushInfo = { ...this._defaultOfflinePushInfo, ...n };
const r = await this._tuiCallEngine.groupCall(A);
await this._updateCallStoreAfterCall(e, r);
} catch (e) {
this._handleCallError(e, "groupCall");
}
}
async inviteUser(A) {
if (g.getData(u.CALL, i.CALL_STATUS) !== P.IDLE)
try {
const { userIDList: e } = A;
let t = await Oe(e, this.getTim());
const o = g.getData(u.CALL, i.REMOTE_USER_INFO_LIST);
g.update(u.CALL, i.REMOTE_USER_INFO_LIST, [...o, ...t]), g.update(u.CALL, i.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, [...o, ...t]), this._tuiCallEngine && await this._tuiCallEngine.inviteUser(A);
} catch (e) {
throw console.error(`${i.PREFIX}inviteUser failed, error: ${e}.`), this._resetCallStore(), e;
}
}
async joinInGroupCall(A) {
if (g.getData(u.CALL, i.CALL_STATUS) !== P.CONNECTED)
try {
const e = {
[i.CALL_ROLE]: IA.CALLEE,
[i.IS_GROUP]: !0,
[i.CALL_STATUS]: P.CONNECTED,
[i.CALL_MEDIA_TYPE]: A.type,
[i.GROUP_ID]: A.groupID,
[i.ROOM_ID]: A.roomID
};
g.updateStore(e, u.CALL);
const t = await this._tuiCallEngine.joinInGroupCall(A), o = this._getFeatureButtonDefaultState(_A.Camera) === Te.Close;
A.type === _.VIDEO && !o && await this.openCamera(i.LOCAL_VIDEO), g.update(u.CALL, i.IS_CLICKABLE, !0), this.startTimer(), Mt(this._tuiCallEngine), await this._tuiCallEngine.setVideoQuality(g.getData(u.CALL, i.VIDEO_RESOLUTION));
const n = g.getData(u.CALL, i.LOCAL_USER_INFO);
g.update(u.CALL, i.LOCAL_USER_INFO, { ...n, isEnter: !0 }), g.update(u.CALL, i.LOCAL_USER_INFO_EXCLUDE_VOLUMN, { ...n, isEnter: !0 }), oe(!0, i.AUDIO);
} catch (e) {
this._handleCallError(e, "joinInGroupCall");
}
}
// ===============================【其它对外接口】===============================
getTUICallEngineInstance() {
return (this == null ? void 0 : this._tuiCallEngine) || null;
}
setLogLevel(A) {
var e;
(e = this == null ? void 0 : this._tuiCallEngine) == null || e.setLogLevel(A);
}
setLanguage(A) {
A && Object.values(ta).includes(A) && g.update(u.CALL, i.LANGUAGE, A);
}
enableFloatWindow(A) {
g.update(u.CALL, i.ENABLE_FLOAT_WINDOW, A);
}
async setSelfInfo(A) {
const { nickName: e, avatar: t } = A;
try {
await this._tuiCallEngine.setSelfInfo({ nickName: e, avatar: t });
} catch (o) {
console.error(`${i.PREFIX}setSelfInfo failed, error: ${o}.`);
}
}
async enableVirtualBackground(A) {
g.update(u.CALL, i.IS_SHOW_ENABLE_VIRTUAL_BACKGROUND, A);
}
async enableAIVoice(A) {
try {
await this._tuiCallEngine.enableAIVoice(A), console.log(`${i.PREFIX}enableAIVoice: ${A}.`);
} catch (e) {
throw console.error(`${i.PREFIX}enableAIVoice failed, error: ${e}.`), e;
}
}
async setCallingBell(A) {
let e = !0;
if (e = await Bo(A), !e) {
console.warn(`${i.PREFIX}setCallingBell failed, filePath: ${A}.`);
return;
}
const t = { calleeBellFilePath: A };
this._bellContext.setBellProperties(t);
}
async enableMuteMode(A) {
try {
const e = { isMuteBell: A };
this._bellContext.setBellProperties(e), await this._bellContext.setBellMute(A);
} catch (e) {
console.warn(`${i.PREFIX}enableMuteMode failed, error: ${e}.`);
}
}
hideFeatureButton(A) {
YA.hideFeatureButton(A);
}
setLocalViewBackgroundImage(A) {
YA.setLocalViewBackgroundImage(A);
}
setRemoteViewBackgroundImage(A, e) {
YA.setRemoteViewBackgroundImage(A, e);
}
setLayoutMode(A) {
YA.setLayoutMode(A);
}
setCameraDefaultState(A) {
YA.setCameraDefaultState(A);
}
async accept() {
var e, t, o, n, s, r;
const A = g.getData(u.CALL, i.CALL_STATUS);
if ((t = (e = this._tuiCallEngine) == null ? void 0 : e.reportLog) == null || t.call(e, {
name: "TUICallKit.accept.start",
data: { callStatus: A }
}), A !== P.CONNECTED)
try {
g.update(u.CALL, i.CALL_STATUS, P.CONNECTED), Mt(this._tuiCallEngine);
const c = await this._tuiCallEngine.accept();
if (c) {
(n = this._chatCombine) == null || n.callTUIService({ message: (o = c == null ? void 0 : c.data) == null ? void 0 : o.message }), g.update(u.CALL, i.IS_CLICKABLE, !0), this.startTimer();
const M = g.getData(u.CALL, i.CALL_MEDIA_TYPE), N = this._getFeatureButtonDefaultState(_A.Camera) === Te.Close;
M === _.VIDEO && !N && await this.openCamera(i.LOCAL_VIDEO), await this._tuiCallEngine.setVideoQuality(g.getData(u.CALL, i.VIDEO_RESOLUTION));
const T = g.getData(u.CALL, i.LOCAL_USER_INFO);
g.update(u.CALL, i.LOCAL_USER_INFO, { ...T, isEnter: !0 }), g.update(u.CALL, i.LOCAL_USER_INFO_EXCLUDE_VOLUMN, { ...T, isEnter: !0 }), oe(!0, i.AUDIO);
}
} catch (c) {
if ((r = (s = this._tuiCallEngine) == null ? void 0 : s.reportLog) == null || r.call(s, {
name: "TUICallKit.accept.fail",
level: "error",
error: c
}), Pt(c))
return;
dt(c, _.AUDIO, this._tuiCallEngine), this._resetCallStore();
}
}
async hangup() {
if (g.getData(u.CALL, i.CALL_STATUS) !== P.IDLE) {
try {
const A = await this._tuiCallEngine.hangup();
A == null || A.forEach((e) => {
var t, o;
(e == null ? void 0 : e.code) === 0 && ((o = this._chatCombine) == null || o.callTUIService({ message: (t = e == null ? void 0 : e.data) == null ? void 0 : t.message }));
});
} catch (A) {
console.debug(A);
}
this._resetCallStore();
}
}
async reject() {
var A, e;
if (g.getData(u.CALL, i.CALL_STATUS) !== P.IDLE) {
try {
const t = await this._tuiCallEngine.reject();
(t == null ? void 0 : t.code) === 0 && ((e = this._chatCombine) == null || e.callTUIService({ message: (A = t == null ? void 0 : t.data) == null ? void 0 : A.message }));
} catch (t) {
console.debug(t);
}
this._resetCallStore();
}
}
async openCamera(A) {
try {
await this._tuiCallEngine.openCamera(A), oe(!0, i.VIDEO);
} catch (e) {
dt(e, _.VIDEO, this._tuiCallEngine), console.error(`${i.PREFIX}openCamera error: ${e}.`);
}
}
async closeCamera() {
try {
await this._tuiCallEngine.closeCamera(), oe(!1, i.VIDEO);
} catch (A) {
console.error(`${i.PREFIX}closeCamera error: ${A}.`);
}
}
async openMicrophone() {
try {
await this._tuiCallEngine.openMicrophone(), oe(!0, i.AUDIO);
} catch (A) {
console.error(`${i.PREFIX}openMicrophone failed, error: ${A}.`);
}
}
async closeMicrophone() {
try {
await this._tuiCallEngine.closeMicrophone(), oe(!1, i.AUDIO);
} catch (A) {
console.error(`${i.PREFIX}closeMicrophone failed, error: ${A}.`);
}
}
unMuteSpeaker() {
var A, e;
try {
const t = (e = (A = this._tuiCallEngine) == null ? void 0 : A.getTRTCCloudInstance) == null ? void 0 : e.call(A);
t && (t.muteAllRemoteAudio(!1), g.update(u.CALL, i.IS_MUTE_SPEAKER, !1));
} catch (t) {
console.error(`${i.PREFIX}unMuteSpeaker failed, error: ${t}.`);
}
}
muteSpeaker() {
var A, e;
try {
const t = (e = (A = this._tuiCallEngine) == null ? void 0 : A.getTRTCCloudInstance) == null ? void 0 : e.call(A);
t && (t.muteAllRemoteAudio(!0), g.update(u.CALL, i.IS_MUTE_SPEAKER, !0));
} catch (t) {
console.error(`${i.PREFIX}muteSpeaker failed, error: ${t}.`);
}
}
switchScreen(A) {
A && g.update(u.CALL, i.BIG_SCREEN_USER_ID, A);
}
async switchCallMediaType() {
var A, e;
try {
const t = g.getData(u.CALL, i.CALL_MEDIA_TYPE);
if (t === _.AUDIO) {
console.warn(`${i.PREFIX}switchCallMediaType failed, ${t} not support.`);
return;
}
const o = await this._tuiCallEngine.switchCallMediaType(_.AUDIO);
(o == null ? void 0 : o.code) === 0 && ((e = this._chatCombine) == null || e.callTUIService({ message: (A = o == null ? void 0 : o.data) == null ? void 0 : A.message })), g.update(u.CALL, i.CALL_MEDIA_TYPE, _.AUDIO);
const s = g.getData(u.CALL, i.IS_GROUP) ? jA.CALLING_GROUP_VIDEO : jA.CALLING_C2C_VIDEO, r = We();
this.statusChanged && this.statusChanged({ oldStatus: s, newStatus: r });
} catch (t) {
console.error(`${i.PREFIX}switchCallMediaType failed, error: ${t}.`);
}
}
async switchCamera() {
const e = g.getData(u.CALL, i.CAMERA_POSITION) === we.BACK ? we.FRONT : we.BACK;
try {
await this._tuiCallEngine.switchCamera(e), g.update(u.CALL, i.CAMERA_POSITION, e);
} catch (t) {
console.error(`${i.PREFIX}_switchCamera failed, error: ${t}.`);
}
}
async setBlurBackground(A) {
try {
await this._tuiCallEngine.setBlurBackground(A ? ko : 0), g.update(u.CALL, i.ENABLE_VIRTUAL_BACKGROUND, A);
} catch (e) {
console.error(`${i.PREFIX}_setBlurBackground failed, error: ${e}.`);
}
}
async switchDevice(A) {
try {
await this._tuiCallEngine.switchDevice(A);
} catch (e) {
console.error(`${i.PREFIX}_switchDevice failed, error: ${e}.`);
}
}
async getDeviceList(A) {
try {
return await this._tuiCallEngine.getDeviceList(A);
} catch (e) {
this._handleCallError(e, "call");
}
}
// ==========================【TUICallEngine 事件处理】==========================
_addListenTuiCallEngineEvent() {
this._engineEventHandler.addListenTuiCallEngineEvent();
}
_removeListenTuiCallEngineEvent() {
this._engineEventHandler.removeListenTuiCallEngineEvent();
}
setCallback(A) {
const { beforeCalling: e, afterCalling: t, onMinimized: o, onMessageSentByMe: n, kickedOut: s, statusChanged: r } = A;
e && (this.beforeCalling = e), t && (this.afterCalling = t), o && (this.onMinimized = o), n && (this.onMessageSentByMe = n), s && (this.kickedOut = s), r && (this.statusChanged = r);
}
toggleMinimize() {
const A = g.getData(u.CALL, i.IS_MINIMIZED);
g.update(u.CALL, i.IS_MINIMIZED, !A), console.log(`${i.PREFIX}toggleMinimize: ${A} -> ${!A}.`), this.onMinimized && this.onMinimized(A, !A);
}
executeExternalBeforeCalling() {
this.beforeCalling && this.beforeCalling();
}
executeExternalAfterCalling() {
this.afterCalling && this.afterCalling();
}
setVideoDisplayMode(A) {
g.update(u.CALL, i.DISPLAY_MODE, A);
}
async setVideoResolution(A) {
var e;
try {
if (!A)
return;
g.update(u.CALL, i.VIDEO_RESOLUTION, A), await ((e = this._tuiCallEngine) == null ? void 0 : e.setVideoQuality(A));
} catch (t) {
console.warn(`${i.PREFIX}setVideoResolution failed, error: ${t}.`);
}
}
// 通话时长更新
startTimer() {
this._timerId === -1 && (this._startTimeStamp = rt(), this._timerId = He.run(i.TIMEOUT, this._updateCallDuration.bind(this), { delay: 1e3 }));
}
// =========================【private methods for service use】=========================
// 处理 “呼叫” 抛出的异常
_handleCallError(A, e) {
if (this._permissionCheckTimer && clearInterval(this._permissionCheckTimer), !Pt(A))
throw dt(A, _.AUDIO, this._tuiCallEngine), console.error(`${i.PREFIX}${e} failed, error: ${A}.`), this._resetCallStore(), A;
}
async _updateCallStoreBeforeCall(A, e, t) {
const o = t || g.getData(u.CALL, i.IS_MINIMIZED) ? EA.CALLER_GROUP_CALLING_MSG : EA.CALLER_CALLING_MSG;
let n = {
[i.CALL_MEDIA_TYPE]: A,
[i.CALL_ROLE]: IA.CALLER,
[i.REMOTE_USER_INFO_LIST]: e,
[i.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST]: e,
[i.IS_GROUP]: !!t,
[i.CALL_TIPS]: v(o),
[i.GROUP_ID]: t
};
g.updateStore({ ...n, [i.CALL_STATUS]: P.CALLING }, u.CALL), this.statusChanged && this.statusChanged({
oldStatus: jA.IDLE,
newStatus: t ? jA.DIALING_GROUP : jA.DIALING_C2C
}), Mt(this._tuiCallEngine);
const s = await Oe(e.map((r) => r.userId), this.getTim());
s.length > 0 && (g.update(u.CALL, i.REMOTE_USER_INFO_LIST, s), g.update(u.CALL, i.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, s));
}
async _updateCallStoreAfterCall(A, e) {
var t, o;
if (e) {
g.update(u.CALL, i.IS_CLICKABLE, !0), da(e == null ? void 0 : e.roomID, e == null ? void 0 : e.strRoomID);
const n = g.getData(u.CALL, i.CALL_MEDIA_TYPE);
if (e.code === 0) {
(o = this._chatCombine) == null || o.callTUIService({ message: (t = e == null ? void 0 : e.data) == null ? void 0 : t.message });
try {
await this._tuiCallEngine.setVideoQuality(g.getData(u.CALL, i.VIDEO_RESOLUTION));
} catch (c) {
console.warn(`${i.PREFIX}setVideoQuality failed, error: ${c}.`);
}
} else {
this._resetCallStore();
return;
}
const s = this._getFeatureButtonDefaultState(_A.Camera) === Te.Close;
n === _.VIDEO && !s && await this.openCamera(i.LOCAL_VIDEO);
const r = g.getData(u.CALL, i.LOCAL_USER_INFO);
g.update(u.CALL, i.LOCAL_USER_INFO, { ...r, isEnter: !0 }), g.update(u.CALL, i.LOCAL_USER_INFO_EXCLUDE_VOLUMN, { ...r, isEnter: !0 }), oe(!0, i.AUDIO);
} else
this._permissionCheckTimer && clearInterval(this._permissionCheckTimer), this._permissionCheckTimer = null, this._resetCallStore();
}
_getFeatureButtonDefaultState(A) {
var t;
const { button: e } = g.getData(u.CALL, i.CUSTOM_UI_CONFIG);
return (t = e == null ? void 0 : e[A]) == null ? void 0 : t.state;
}
_updateCallDuration() {
const A = Math.round((rt() - this._startTimeStamp) / 1e3), e = Ma(A);
g.update(u.CALL, i.CALL_DURATION, e);
}
_stopTimer() {
this._timerId !== -1 && (He.clearTask(this._timerId), this._timerId = -1);
}
_resetCallStore() {
const A = We();
this._stopTimer();
let e = Object.keys(Fe).filter((n) => {
switch (Fe[n]) {
case i.CALL_STATUS:
case i.LANGUAGE:
case i.IS_GROUP:
case i.DISPLAY_MODE:
case i.VIDEO_RESOLUTION:
case i.ENABLE_FLOAT_WINDOW:
case i.LOCAL_USER_INFO:
case i.IS_SHOW_ENABLE_VIRTUAL_BACKGROUND:
case i.LOCAL_USER_INFO_EXCLUDE_VOLUMN:
return !1;
default:
return !0;
}
});
e = e.map((n) => Fe[n]), g.reset(u.CALL, e), g.getData(u.CALL, i.CALL_STATUS) !== P.IDLE && g.reset(u.CALL, [i.CALL_STATUS], !0), g.reset(u.CALL, [i.IS_MINIMIZED], !0), g.reset(u.CALL, [i.IS_EAR_PHONE], !0), g.reset(u.CALL, [i.ENABLE_VIRTUAL_BACKGROUND], !0), g.reset(u.CALL, [i.IS_MUTE_SPEAKER], !0), g.update(u.CALL, i.LOCAL_USER_INFO, {
...g.getData(u.CALL, i.LOCAL_USER_INFO),
isVideoAvailable: !1,
isAudioAvailable: !1
}), g.update(u.CALL, i.LOCAL_USER_INFO_EXCLUDE_VOLUMN, {
...g.getData(u.CALL, i.LOCAL_USER_INFO_EXCLUDE_VOLUMN),
isVideoAvailable: !1,
isAudioAvailable: !1
}), g.update(u.CALL, i.REMOTE_USER_INFO_LIST, []), g.update(u.CALL, i.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST, []);
const o = We();
A !== o && this.statusChanged && this.statusChanged({ oldStatus: A, newStatus: o });
}
// =========================【Calling the Chat SDK APi】=========================
// 获取群成员
async getGroupMemberList(A, e) {
const t = g.getData(u.CALL, i.GROUP_ID);
return await sl(t, this.getTim(), A, e);
}
// 获取群信息
async getGroupProfile() {
const A = g.getData(u.CALL, i.GROUP_ID);
return await cl(A, this.getTim());
}
_watchTUIStore() {
g == null || g.watch(u.CALL, {
[i.CALL_STATUS]: this._handleCallStatusChange
});
}
_unwatchTUIStore() {
g == null || g.unwatch(u.CALL, {
[i.CALL_STATUS]: this._handleCallStatusChange
});
}
// =========================【融合 chat 】=========================
bindTUICore(A) {
this._TUICore = A;
}
// =========================【set、get methods】=========================
getTim() {
var A, e;
return this._tim ? this._tim : this._tuiCallEngine ? ((A = this._tuiCallEngine) == null ? void 0 : A.tim) || ((e = this._tuiCallEngine) == null ? void 0 : e.getTim()) : (console.warn(`${i.PREFIX}getTim warning: _tuiCallEngine Instance is not available.`), null);
}
setIsFromChat(A) {
this._isFromChat = A;
}
setCurrentGroupId(A) {
this._currentGroupId = A;
}
getCurrentGroupId() {
return this._currentGroupId;
}
setDefaultOfflinePushInfo(A) {
this._defaultOfflinePushInfo = A;
}
getDefaultOfflinePushInfo() {
return this._defaultOfflinePushInfo;
}
async getCallMessage(A) {
return await this._chatCombine.getCallKitMessage(A, this.getTim());
}
};
oA([
TA(),
UA(fA.init)
], aA.prototype, "init", 1);
oA([
TA(),
UA(fA.call),
tt({ engineInstance: !0 })
], aA.prototype, "call", 1);
oA([
TA(),
UA(fA.groupCall),
tt({ engineInstance: !0 })
], aA.prototype, "groupCall", 1);
oA([
TA(),
UA(fA.inviteUser),
tt({ engineInstance: !0 })
], aA.prototype, "inviteUser", 1);
oA([
TA(),
UA(fA.joinInGroupCall),
tt({ engineInstance: !0 })
], aA.prototype, "joinInGroupCall", 1);
oA([
UA(fA.setLanguage)
], aA.prototype, "setLanguage", 1);
oA([
UA(fA.enableFloatWindow)
], aA.prototype, "enableFloatWindow", 1);
oA([
UA(fA.setSelfInfo)
], aA.prototype, "setSelfInfo", 1);
oA([
UA(fA.enableAIVoice)
], aA.prototype, "enableAIVoice", 1);
oA([
UA(fA.setCallingBell)
], aA.prototype, "setCallingBell", 1);
oA([
UA(fA.enableMuteMode)
], aA.prototype, "enableMuteMode", 1);
oA([
TA()
], aA.prototype, "accept", 1);
oA([
TA()
], aA.prototype, "hangup", 1);
oA([
TA()
], aA.prototype, "reject", 1);
oA([
TA()
], aA.prototype, "openCamera", 1);
oA([
TA()
], aA.prototype, "closeCamera", 1);
oA([
TA()
], aA.prototype, "openMicrophone", 1);
oA([
TA()
], aA.prototype, "closeMicrophone", 1);
oA([
TA()
], aA.prototype, "unMuteSpeaker", 1);
oA([
TA()
], aA.prototype, "muteSpeaker", 1);
oA([
TA()
], aA.prototype, "switchScreen", 1);
oA([
TA()
], aA.prototype, "switchCallMediaType", 1);
oA([
TA()
], aA.prototype, "switchCamera", 1);
oA([
TA()
], aA.prototype, "setBlurBackground", 1);
oA([
TA()
], aA.prototype, "switchDevice", 1);
oA([
UA(fA.setVideoDisplayMode)
], aA.prototype, "setVideoDisplayMode", 1);
oA([
UA(fA.setVideoResolution)
], aA.prototype, "setVideoResolution", 1);
let jl = aA;
const Q = jl.getInstance(), Na = "CallInfoContextKey", ga = "CallerUserInfoContextKey", Ta = "UserInfoExcludeVolumeContextKey", pa = "FocusContextKey", Da = "ButtonPanelContextKey", ya = "FloatWindowContextKey", Ca = "IsClickableContextKey", Sa = "PopoverContextKey", ja = "CustomUIConfigContextKey";
function hl() {
return VA(ga);
}
function rA() {
return VA(Na);
}
function ot(a) {
const A = p([]), e = p(""), t = (n) => {
var s, r, c;
switch (a) {
case hA.CAMERA:
A.value = (n == null ? void 0 : n.cameraList) || [], e.value = ((s = n == null ? void 0 : n.currentCamera) == null ? void 0 : s.deviceId) || "";
break;
case hA.MICROPHONE:
A.value = (n == null ? void 0 : n.microphoneList) || [], e.value = ((r = n == null ? void 0 : n.currentMicrophone) == null ? void 0 : r.deviceId) || "";
break;
case hA.SPEAKER:
A.value = (n == null ? void 0 : n.speakerList) || [], e.value = ((c = n == null ? void 0 : n.currentSpeaker) == null ? void 0 : c.deviceId) || "";
break;
}
}, o = (n) => {
e.value = n;
};
return CA(() => {
g.watch(
u.CALL,
{
[i.DEVICE_LIST]: t
},
{
notifyRangeWhenWatch: i.MYSELF
}
);
}), DA(() => {
g.unwatch(u.CALL, {
[i.DEVICE_LIST]: t
});
}), [{ deviceList: A, currentDeviceId: e }, { updateCurrentDeviceId: o }];
}
const Ft = (a) => typeof a == "object" && a !== null, ha = (a, A) => {
if (!Ft(a) || !Ft(A))
return a === A;
if (a === A)
return !0;
const e = Object.keys(a), t = Object.keys(A);
if (e.length !== t.length)
return !1;
for (let o in a)
if (!ha(a[o], A[o]))
return !1;
return !0;
};
function Ll(a) {
const A = document.getElementById(a);
!document.fullscreenElement && A ? A.requestFullscreen().catch((e) => {
console.error(`Error attempting to enable fullscreen mode: ${e.message} (${e.name})`);
}) : document.exitFullscreen();
}
function lt(a) {
if (typeof a != "object" || a === null)
return a;
let A = Array.isArray(a) ? [] : {};
for (let e in a)
a.hasOwnProperty(e) && (A[e] = lt(a[e]));
return A;
}
const El = 500;
function Et(a, A) {
if (typeof a != "function" || A != null && typeof A != "function")
throw new TypeError("Expected a function");
const e = function(...t) {
const o = A ? A.apply(this, t) : t[0], n = e.cache;
if (n.has(o))
return n.get(o);
const s = a.apply(this, t);
return e.cache = n.set(o, s) || n, s;
};
return e.cache = new (Et.Cache || Map)(), e;
}
Et.Cache = Map;
function ml(a) {
const A = Et(a, (e) => {
const { cache: t } = A;
return t.size === El && t.clear(), e;
});
return A;
}
const zl = ".".charCodeAt(0), Ul = /\\(\\)?/g, fl = RegExp(
// Match anything that isn't a dot or bracket.
`[^.[\\]]+|\\[(?:([^"'][^[]*)|(["'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))`,
"g"
), La = ml((a) => {
const A = [];
return a.charCodeAt(0) === zl && A.push(""), a.replace(fl, (e, t, o, n) => {
let s = e;
o ? s = n.replace(Ul, "$1") : t && (s = t.trim()), A.push(s);
}), A;
});
function le(a, A, e) {
if (typeof a != "object" || !A)
return;
const t = La(A);
let o = a;
for (let n = 0; n < t.length; n++) {
if (o == null)
return;
const s = t[n];
n !== t.length - 1 ? o = o == null ? void 0 : o[s] : Object.assign(o, { [s]: e });
}
}
function Se(a, A, e) {
if (typeof a != "object")
return;
const t = La(A);
let o = a;
for (let n = 0; n < t.length; n++) {
if (o == null)
return;
const s = t[n];
n !== t.length - 1 ? o = o == null ? void 0 : o[s] : Array.isArray(o) && o.splice(s, 0, e);
}
}
function vl(a) {
return a == null || typeof a == "string" && a.trim().length === 0 ? !0 : Array.isArray(a) || typeof a == "object" ? Object.keys(a).length === 0 : !1;
}
function yt(a, A, e, t, o) {
Object.keys(a).forEach((n) => {
const s = a[n], r = vl(e) ? n : `${e}.${n}`;
if (typeof s == "object")
if (Array.isArray(s))
for (let c = 0; c < s.length; c++) {
const M = `${r}.${c}`;
yt(s[c], A, M, t, o);
}
else
yt(s, A, r, t, o);
else if (A(s)) {
const c = typeof o == "function" ? o({ key: s, value: r }) : r;
t.push(c);
}
});
}
function Ea() {
const a = p(), A = p(g.getData(u.CALL, i.REMOTE_USER_INFO_LIST)), e = (n) => {
(V.isWeChat ? n.enableMic : n.isAudioAvailable) && (a.value = { ...a.value, localVideo: n.volume });
}, t = (n) => {
const s = {};
(n.length !== A.value.length || !ha(n, A.value)) && (A.value = n, A.value.forEach((r) => {
if (V.isWeChat ? r.hasAudio : r.isAudioAvailable) {
const M = V.isWeChat ? r.userID : r.domId;
s[M] = r.volume;
}
}), a.value = { ...a.value, ...s });
};
let o = {
[i.LOCAL_USER_INFO]: e,
[i.REMOTE_USER_INFO_LIST]: t
};
return V.isUniPlatform && (o = {
[i.PUSHER]: e,
[i.PLAYER]: t
}), CA(() => {
g.watch(
u.CALL,
o,
{
notifyRangeWhenWatch: i.MYSELF
}
);
}), DA(() => {
g.unwatch(u.CALL, o);
}), a;
}
function wl() {
const a = p(""), A = p(!0), e = p(0), t = (n) => {
e.value = 0, a.value = n;
}, o = (n) => {
let s = n;
typeof s == "object" && (s = n == null ? void 0 : n.text), s && (e.value = 2e3, a.value = s);
};
return CA(() => {
g.watch(
u.CALL,
{
[i.CALL_TIPS]: t
},
{
notifyRangeWhenWatch: i.MYSELF
}
), g.watch(
u.CALL,
{
[i.TOAST_INFO]: o
}
);
}), DA(() => {
g.unwatch(
u.CALL,
{
[i.CALL_TIPS]: t,
[i.TOAST_INFO]: o
}
);
}), { tip: a, show: A, duration: e };
}
function Ol() {
const a = p(g.getData(u.CALL, i.NETWORK_STATUS)), A = (e) => {
a.value = e;
};
return CA(() => {
g.watch(
u.CALL,
{
[i.NETWORK_STATUS]: A
},
{
notifyRangeWhenWatch: i.MYSELF
}
);
}), DA(() => {
g.unwatch(u.CALL, {
[i.NETWORK_STATUS]: A
});
}), { netWorkQualityList: a };
}
function ma() {
const a = p(g.getData(u.CALL, i.PLAYER)), A = (t) => {
a.value = t == null ? void 0 : t.map((o) => {
const { userID: n, hasVideo: s, hasAudio: r } = o;
return { userID: n, hasVideo: s, hasAudio: r };
});
}, e = {
[i.PLAYER]: A
};
return CA(() => {
g.watch(
u.CALL,
e,
{ notifyRangeWhenWatch: i.MYSELF }
);
}), DA(() => {
g.unwatch(u.CALL, e);
}), a;
}
function vA() {
return VA(Ta);
}
function mt() {
const a = p(g.getData(u.CALL, i.CALL_DURATION)), A = (e) => {
a.value = e;
};
return CA(() => {
g.watch(
u.CALL,
{
[i.CALL_DURATION]: A
},
{
notifyRangeWhenWatch: i.MYSELF
}
);
}), DA(() => {
g.unwatch(
u.CALL,
{
[i.CALL_DURATION]: A
}
);
}), { callDuration: a };
}
function Ve() {
return VA(Da, { status: p("open") });
}
function za() {
return VA(pa, p("open"));
}
function BA() {
return VA(ya);
}
function Vl() {
return VA(Ca);
}
function nt() {
return VA(Sa);
}
const bl = (a, A) => {
const e = [{
i: 0,
x: 0,
y: 0,
w: A,
h: A
}];
for (let t = 1; t < a; t++) {
const o = e[t - 1].x + A === 12;
e[t] = {
i: t,
x: e[t - 1].x + A === 12 ? 0 : e[t - 1].x + A,
y: e[t - 1].y + (o ? A : 0),
w: A,
h: A
};
}
return a === 3 && (e[a - 1].x += 3), a > 3 && V.isPC && a % 3 === 2 && (e[a - 1].x += 2, e[a - 2].x += 2), e;
};
function xl(a, A) {
const { isFloatWindow: e } = G(BA()), t = p();
return uA([a, A, e], () => {
if (e.value) {
const M = [];
for (let N = 0; N < A.value; N++)
M[N] = {
i: N,
x: 0,
y: 0,
w: 12,
h: 12
};
t.value = M;
return;
}
const o = Object.keys(Array.from({ length: A.value })), n = A.value <= 4 ? 6 : 4, s = bl(A.value, n);
t.value = s;
let r, c;
if (a.value !== null) {
if (o.length < 5) {
const M = o.concat();
M.splice(a.value, 1), M.unshift(a.value);
} else
c = a.value % 3, r = Math.floor(a.value / 3);
if (o.length < 5) {
const M = s.findIndex((N) => N.i === a.value);
if (M !== -1) {
const N = s[0];
s[0] = s[M], s[M] = N;
for (let T = 0; T < s.length; T++) {
const I = s[T];
T === 0 ? (I.w += 6, I.h += 6, I.x = 0, I.y = 0) : (I.x = (T - 1) * 4, I.y = 12, I.w = 4, I.h = 4);
}
}
} else {
let M;
c === 0 ? (s[a.value + 1] && (s[a.value + 1].x += 4), s[a.value + 2] && (s[a.value + 2].y += 4), M = {
i: a.value,
x: 0,
y: r * 4,
w: 8,
h: 8
}) : c === 2 ? (M = {
i: a.value,
x: 4,
y: r * 4,
w: 8,
h: 8
}, s[a.value - 1].x = 0, s[a.value - 1].y += 4) : c === 1 && (M = {
i: a.value,
x: 4,
y: r * 4,
w: 8,
h: 8
}, s[a.value + 1] && (s[a.value + 1].x = 0, s[a.value + 1].y += 4));
const N = 3 - c;
for (let T = a.value + N; T < s.length; T++) {
const I = s[T];
I.y += 4;
}
s[a.value] = M;
}
t.value = s;
}
}, {
immediate: !0
}), t;
}
function be() {
return VA(ja);
}
const kl = {
calling: [[
{ name: "switchCamera", customStyle: { justifyContent: "flex-start" }, props: {} },
{ name: "virtualBackground" },
{ name: "camera", customStyle: { justifyContent: "flex-end" }, props: {} }
], [
{},
{ name: "hangup", customStyle: { paddingTop: "6vh" } },
{}
]],
accept: [[
{ name: "switchCamera", customStyle: { justifyContent: "flex-start" }, props: {} },
{ name: "virtualBackground" },
{ name: "camera", customStyle: { justifyContent: "flex-end" }, props: {} }
], [
{ name: "reject", customStyle: { paddingTop: "6vh", justifyContent: "center" } },
{},
{ name: "accept", customStyle: { paddingTop: "6vh", justifyContent: "center" } }
]],
connected: [[
{ name: "microphone", customStyle: { justifyContent: "flex-start" }, props: {} },
{ name: "speaker" },
{ name: "camera", customStyle: { justifyContent: "flex-end" }, props: {} }
], [
{ name: "virtualBackground", customStyle: { justifyContent: "center", paddingTop: "6vh" }, props: {} },
{ name: "hangup", customStyle: { paddingTop: "6vh" } },
{ name: "switchCamera", customStyle: { justifyContent: "center", paddingTop: "6vh" }, props: {} }
]]
}, Rl = {
singleCall: {
video: {
calling: [
[],
[
{},
{ name: "hangup" },
{}
]
],
accept: [
[],
[
{ name: "reject", customStyle: { justifyContent: "flex-end" } },
{},
{ name: "accept", customStyle: { justifyContent: "flex-start" } }
]
],
connected: [
[
{ name: "microphone", customStyle: { justifyContent: "flex-start" }, props: {} },
{ name: "speaker" },
{ name: "camera", customStyle: { justifyContent: "flex-end" }, props: {} }
],
[
{},
{ name: "hangup", customStyle: { paddingTop: "6vh" } },
{ name: "switchCamera", customStyle: { justifyContent: "center", paddingTop: "6vh" }, props: {} }
]
]
},
audio: {
calling: [
[],
[
{},
{ name: "hangup" },
{}
]
],
accept: [
[],
[
{ name: "reject", customStyle: { justifyContent: "flex-end" } },
{},
{ name: "accept", customStyle: { justifyContent: "flex-start" } }
]
],
connected: [
[],
[
{ name: "microphone", customStyle: { justifyContent: "flex-start" }, props: {} },
{ name: "hangup" },
{ name: "speaker", customStyle: { justifyContent: "flex-end" } }
]
]
}
},
groupCall: {
video: {
calling: [[
{ name: "microphone", customStyle: { justifyContent: "flex-start" }, props: {} },
{ name: "speaker" },
{ name: "camera", customStyle: { justifyContent: "flex-end" }, props: {} }
], [
{},
{ name: "hangup", customStyle: { paddingTop: "6vh" } },
{}
]],
accept: [
[],
[
{ name: "reject" },
{ name: "accept" }
]
],
connected: [
[
{ name: "microphone", customStyle: { justifyContent: "flex-start" }, props: {} },
{ name: "speaker" },
{ name: "camera", customStyle: { justifyContent: "flex-end" }, props: {} }
],
[
{},
{ name: "hangup", customStyle: { paddingTop: "6vh" } },
{}
]
],
close_calling: [
[
{ name: "microphone", props: {} },
{ name: "speaker" },
{ name: "camera", props: {} },
{ name: "hangup" }
]
],
close_connected: [
[
{ name: "microphone", props: {} },
{ name: "speaker" },
{ name: "camera", props: {} },
{ name: "hangup" }
]
]
},
audio: {
calling: [[
{ name: "microphone", customStyle: { justifyContent: "flex-start" }, props: {} },
{ name: "speaker" },
{ name: "camera", customStyle: { justifyContent: "flex-end" }, props: {} }
], [
{},
{ name: "hangup", customStyle: { paddingTop: "6vh" } },
{}
]],
accept: [
[],
[
{ name: "reject" },
{ name: "accept" }
]
],
connected: [
[
{ name: "microphone", customStyle: { justifyContent: "flex-start" }, props: {} },
{ name: "speaker" },
{ name: "camera", customStyle: { justifyContent: "flex-end" }, props: {} }
],
[
{},
{ name: "hangup", customStyle: { paddingTop: "6vh" } },
{}
]
],
close_calling: [
[
{ name: "microphone", props: {} },
{ name: "speaker" },
{ name: "camera", props: {} },
{ name: "hangup" }
]
],
close_connected: [
[
{ name: "microphone", props: {} },
{ name: "speaker" },
{ name: "camera", props: {} },
{ name: "hangup" }
]
]
}
}
}, Bl = {
singleCall: {
video: {
calling: [
[
{ name: "camera", props: {} },
{ name: "microphone", props: {} },
{ name: "hangup" }
]
],
accept: [
[
{ name: "camera", props: {} },
{ name: "reject" },
{ name: "accept" }
]
],
connected: [
[
{ name: "camera", props: {} },
{ name: "microphone", props: {} },
{ name: "speaker" },
{ name: "hangup" }
]
]
},
audio: {
calling: [
[
{ name: "microphone", props: {} },
{ name: "hangup" }
]
],
accept: [
[
{ name: "reject" },
{ name: "accept" }
]
],
connected: [
[
{ name: "microphone", props: {} },
{ name: "speaker" },
{ name: "hangup" }
]
]
}
},
groupCall: {
video: {
calling: [[
{ name: "camera", props: {} },
{ name: "microphone", props: {} },
{ name: "inviteUser", props: {} },
{ name: "hangup" }
]],
accept: [
[
{ name: "reject" },
{ name: "accept" }
]
],
connected: [
[
{ name: "camera", props: {} },
{ name: "microphone", props: {} },
{ name: "speaker" },
{ name: "inviteUser", props: {} },
{ name: "hangup" }
]
]
},
audio: {
calling: [
[
{ name: "microphone", props: {} },
{ name: "hangup" }
]
],
accept: [
[
{ name: "reject" },
{ name: "accept" }
]
],
connected: [
[
{ name: "microphone", props: {} },
{ name: "speaker" },
{ name: "inviteUser", props: {} },
{ name: "hangup" }
]
]
}
}
}, Yt = {
pc: Bl,
mobile: Rl
};
function Ua(a) {
const A = lt(a);
return le(A, "mobile.singleCall.video", kl), Se(A, "pc.singleCall.video.calling[0][2]", { name: "virtualBackground", props: {} }), Se(A, "pc.singleCall.video.accept[0][1]", { name: "virtualBackground", props: {} }), Se(A, "pc.singleCall.video.connected[0][3]", { name: "virtualBackground", props: {} }), Se(A, "pc.groupCall.video.calling[0][3]", { name: "virtualBackground", props: {} }), Se(A, "pc.groupCall.video.connected[0][4]", { name: "virtualBackground", props: {} }), A;
}
function Pl(a, A, e) {
let t = lt(a);
return A ? (le(t, "mobile.singleCall.video.connected[1][2].props.show", !0), e && Ua(t)) : (le(t, "mobile.singleCall.video.connected[1][2].props.show", !1), e && (le(t, "mobile.singleCall.video.connected[1][0].props.show", !1), le(t, "pc.singleCall.video.connected[0][3].props.show", !1), le(t, "pc.groupCall.video.connected[0][4].props.show", !1))), t;
}
function Wl() {
const { isShowEnableVirtualBackground: a, callStatus: A } = G(rA()), e = be(), { localUserInfoExcludeVolume: t } = G(vA()), o = S(() => (t == null ? void 0 : t.value.isVideoAvailable) || !1), n = S(() => a.value && !V.isH5), s = p([]);
return uA([e, a, o], () => {
let r = lt(Yt);
n.value && (r = Ua(Yt)), A.value === P.CONNECTED && (r = Pl(r, o.value, n.value));
const { button: c } = e.value, M = [];
function N(I) {
return Object.keys(c).includes(I);
}
function T({ key: I, value: D }) {
var H;
const h = D.split(".");
let j = h.slice(0, h.length - 1);
const m = h.slice(0, h.length - 2);
if (m[m.length - 1] === "0")
for (let b = 0; b < 3; b++) {
let x = m.slice();
x.push(b), x.push("customStyle"), x.push("justifyContent"), x = x.join("."), M.push({ path: x, value: "center" });
}
return j.push("props"), j.push("show"), j = j.join("."), {
path: j,
value: (H = c == null ? void 0 : c[I]) == null ? void 0 : H.show
};
}
yt(r, N, "", M, T), M == null || M.forEach((I) => {
le(r, I.path, I.value);
}), s.value = r;
}, {
immediate: !0
}), s;
}
function fa() {
const a = be(), A = p(a.value.viewBackground);
return uA(a, () => {
A.value = a.value.viewBackground;
}), A;
}
function Gl() {
const a = p(g.getData(u.CALL, i.ROOM_ID)), A = p(g.getData(u.CALL, i.ROOM_ID_TYPE)), e = p(g.getData(u.CALL, i.GROUP_ID)), t = p(g.getData(u.CALL, i.CALL_MEDIA_TYPE)), o = p(g.getData(u.CALL, i.GROUP_CALL_MEMBERS)), n = p(g.getData(u.CALL, i.CALL_STATUS)), s = (D) => {
a.value = D;
}, r = (D) => {
e.value = D;
}, c = (D) => {
t.value = D;
}, M = (D) => {
o.value = D;
}, N = (D) => {
n.value = D;
}, T = (D) => {
A.value = D;
}, I = {
[i.ROOM_ID]: s,
[i.GROUP_ID]: r,
[i.CALL_MEDIA_TYPE]: c,
[i.GROUP_CALL_MEMBERS]: M,
[i.CALL_STATUS]: N,
[i.ROOM_ID_TYPE]: T
};
return CA(() => {
g.watch(
u.CALL,
I,
{
notifyRangeWhenWatch: i.MYSELF
}
);
}), DA(() => {
g.unwatch(u.CALL, I);
}), {
roomId: a,
roomIdType: A,
groupId: e,
callMediaType: t,
groupCallMembers: o,
callStatus: n
};
}
const Ql = {
customStyle: {
type: Object
},
customClass: {
type: String
}
}, Zl = ["start", "center", "end", "space-around", "space-between", "space-evenly"], Fl = ["top", "middle", "bottom"], Yl = {
gutter: {
type: Number,
default: 0
},
justify: {
type: String,
values: Zl,
default: "start"
},
align: {
type: String,
values: Fl,
default: "top"
},
customStyle: {
type: Object,
default: () => {
}
}
};
function iA(...a) {
const A = [], e = {}.hasOwnProperty;
for (let t = 0; t < a.length; t++) {
const o = a[t];
if (!o)
continue;
const n = typeof o;
if (n === "string" || n === "number")
A.push(o);
else if (Array.isArray(o)) {
if (o.length) {
const s = iA.apply(null, o);
s && A.push(s);
}
} else if (n === "object") {
if (o.toString !== Object.prototype.toString && !o.toString.toString().includes("[native code]")) {
A.push(o.toString());
continue;
}
for (const s in o)
e.call(o, s) && o[s] && A.push(s);
}
}
return A.join(" ");
}
const se = typeof wx < "u" && typeof wx.getSystemInfoSync == "function" && !!wx.getSystemInfoSync().fontSizeSetting, Xl = typeof uni < "u" && typeof uni > "u", Ct = se || Xl, ql = typeof uni < "u", va = function() {
return (typeof uni < "u" || typeof window < "u") && !Ct;
}();
(function() {
return se ? wx : ql ? uni : window;
})();
const Ae = va && window && window.navigator && window.navigator.userAgent || "", Jl = /Android/i.test(Ae), Hl = /(?:Windows Phone)/.test(Ae), Kl = /(?:SymbianOS)/.test(Ae), _l = /iPad/i.test(Ae) || /iPhone/i.test(Ae) || /iPod/i.test(Ae), wa = Jl || Hl || Kl || _l, re = va && !wa;
re && Ae.includes("Windows NT");
re && Ae.includes("Mac");
function Ke(a) {
const A = {};
for (const e in a)
Object.prototype.hasOwnProperty.call(a, e) && a[e] !== void 0 && (A[e] = a[e]);
return A;
}
function $l() {
let a = "unknow";
return typeof st == "string" && (a = st.split(".")[0]), { version: st, majorVersion: a };
}
function Xt(a, A) {
const { key: e, value: t } = A;
return a.find((o) => o[e] === t);
}
const Oa = "RowContextKey", Y = "tk", ze = {
SUCCESS: "success",
INFO: "info",
WARNING: "warning",
ERROR: "error"
}, An = {
options: {
virtualHost: !0
}
}, ne = /* @__PURE__ */ f({
...An,
__name: "Row",
props: Yl,
setup(a) {
const A = a, e = S(() => A.gutter);
OA(Oa, {
gutter: e
});
const t = iA([
`${Y}-row`,
`${Y}-justify-${A.justify}`,
`${Y}-align-${A.align}`
]);
return (o, n) => (d(), y("div", {
class: k(l(t)),
style: eA([o.customStyle])
}, [
q(o.$slots, "default")
], 6));
}
});
const en = ["start", "center", "end", "space-around", "space-between", "space-evenly"], tn = ["top", "middle", "bottom"], an = {
span: {
type: Number,
default: 24
},
justify: {
type: String,
values: en,
default: "start"
},
align: {
type: String,
values: tn,
default: "middle"
},
offset: {
type: Number,
default: 0
}
}, on = {
options: {
virtualHost: !0
}
}, yA = /* @__PURE__ */ f({
...on,
__name: "Col",
props: an,
setup(a) {
const A = a, { gutter: e } = VA(Oa, { gutter: S(() => 0) }), t = iA([
`${Y}-col`,
`${Y}-justify-${A.justify}`,
`${Y}-align-${A.align}`
]), o = S(() => `${A.span / 24 * 100}%`), n = S(() => `${A.offset / 24 * 100}%`), s = S(() => `${e.value / 2}px`), r = s;
return (c, M) => (d(), y("div", {
class: k(l(t)),
style: eA({
width: l(o),
marginLeft: l(n),
paddingLeft: l(s),
paddingRight: l(r)
})
}, [
q(c.$slots, "default")
], 6));
}
});
const ln = {
width: {
type: String,
default: "40px"
},
height: {
type: String,
default: "40px"
},
color: {
type: String
}
}, nn = {
options: {
virtualHost: !0
}
}, sn = /* @__PURE__ */ f({
...nn,
__name: "Dot",
props: ln,
setup(a) {
const A = a, e = `${Y}-loading_dot-container`, t = `${Y}-loading_dot`, o = S(() => ({
width: A.width,
height: A.height
})), n = S(() => {
const s = {};
return A.color && (s.backgroundColor = A.color), s;
});
return (s, r) => (d(), y("div", {
class: k(e),
style: eA([l(o)])
}, [
L("div", {
class: k(t),
style: eA([l(n)])
}, null, 4),
L("div", {
class: k(t),
style: eA([l(n)])
}, null, 4),
L("div", {
class: k(t),
style: eA([l(n)])
}, null, 4)
], 4));
}
});
const cn = {
width: {
type: String,
default: "40px"
},
height: {
type: String,
default: "40px"
},
color: {
type: String
}
}, rn = {
options: {
virtualHost: !0
}
}, un = /* @__PURE__ */ f({
...rn,
__name: "Circle",
props: cn,
setup(a) {
const A = a, e = S(() => {
const o = {
width: A.width,
height: A.height
};
return A.color && (o["--tk-loading-primary-color"] = A.color), o;
}), t = `${Y}-loading_circle-container`;
return (o, n) => (d(), y("div", {
class: k(t),
style: eA([l(e)])
}, null, 4));
}
});
const Mn = ["circle", "dot"], dn = ["row", "column"], In = {
mode: {
type: String,
values: Mn,
default: "circle"
},
loadingWidth: {
type: String,
default: "40px"
},
loadingHeight: {
type: String,
default: "40px"
},
color: {
type: String
},
text: {
type: String
},
layout: {
type: String,
values: dn,
default: "column"
}
}, Nn = {
options: {
virtualHost: !0
}
}, zt = /* @__PURE__ */ f({
...Nn,
__name: "Loading",
props: In,
setup(a) {
const A = a, e = `${Y}-loading ${Y}-loading--${A.mode}`, t = `${Y}-loading_text`, o = S(() => ({
flexDirection: A.layout
}));
return (n, s) => (d(), y("div", {
class: k(e),
style: eA([l(o)])
}, [
n.mode === "dot" ? (d(), U(sn, {
key: 0,
width: n.loadingWidth,
height: n.loadingHeight,
color: n.color
}, null, 8, ["width", "height", "color"])) : (d(), U(un, {
key: 1,
width: n.loadingWidth,
height: n.loadingHeight,
color: n.color
}, null, 8, ["width", "height", "color"])),
n.text ? (d(), y("div", {
key: 2,
class: k(t)
}, W(n.text), 1)) : z("", !0)
], 4));
}
});
const gn = {
src: {
type: String
},
size: {
type: Number,
default: 20
}
}, Tn = ["fill", "contain", "cover"], qt = {
fill: "scaleToFill",
contain: "aspectFit",
cover: "aspectFill"
}, pn = {
width: {
type: String,
default: "320px"
},
height: {
type: String,
default: "240px"
},
src: {
type: String
},
fit: {
type: String,
values: Tn,
default: "fill"
},
customStyle: {
type: Object
},
defaultSrc: {
type: String
}
}, Dn = {
error: (a) => a
}, yn = ["src"], Cn = ["src", "mode"], Sn = {
options: {
virtualHost: !0
}
}, LA = /* @__PURE__ */ f({
...Sn,
__name: "TKImage",
props: pn,
emits: Dn,
setup(a, { emit: A }) {
const e = a, t = A, o = p(!1), n = p(e.src);
uA(() => e.src, () => {
o.value = !1, n.value = e.src;
});
const s = S(() => iA([`${Y}-image`])), r = S(() => ({
width: e.width,
height: e.height,
...e.customStyle
})), c = S(() => iA([
`${Y}-image_inner`
])), M = S(() => se ? qt[e.fit] || qt.cover : e.fit);
function N(T) {
o.value = !0, n.value = e.defaultSrc, t("error", T);
}
return (T, I) => (d(), y("div", {
class: k(l(s)),
style: eA([l(r)])
}, [
l(o) && !T.defaultSrc ? q(T.$slots, "error", { key: 0 }) : (d(), y(RA, { key: 1 }, [
l(se) ? z("", !0) : (d(), y("img", {
key: 0,
class: k(l(c)),
src: l(n),
style: eA({ objectFit: l(M) }),
onError: N
}, null, 46, yn)),
l(se) ? (d(), y("image", {
key: 1,
class: k(l(c)),
src: l(n),
mode: l(M),
onError: N
}, null, 42, Cn)) : z("", !0)
], 64))
], 6));
}
});
const jn = {
options: {
virtualHost: !0
}
}, De = /* @__PURE__ */ f({
...jn,
__name: "Icon",
props: gn,
setup(a) {
const A = a, e = S(() => `${A.size}px`), t = S(() => `${A.size}px`);
return (o, n) => (d(), U(LA, {
src: o.src,
width: l(e),
height: l(t)
}, null, 8, ["src", "width", "height"]));
}
}), hn = ["small", "middle", "large"], Ln = ["row", "column"], En = ["circle", "round"], mn = {
iconSrc: {
type: String
},
iconSize: {
type: Number
},
text: {
type: String
},
loading: {
type: Boolean,
default: !1
},
loadingColor: {
type: String,
default: "#fff"
},
loadingWidth: {
type: String,
default: "40px"
},
loadingHeight: {
type: String,
default: "40px"
},
size: {
type: String,
values: hn,
default: "middle"
},
width: {
type: String
},
height: {
type: String
},
color: {
type: String
},
direction: {
type: String,
values: Ln,
default: "row"
},
shape: {
type: String,
values: En
},
buttonStyle: {
type: Object
},
buttonTextStyle: {
type: Object
}
}, zn = {
options: {
virtualHost: !0
}
}, mA = /* @__PURE__ */ f({
...zn,
__name: "Button",
props: mn,
emits: ["click"],
setup(a, { emit: A }) {
const e = a, t = `${Y}-button--content`, o = S(() => ({
width: e.width,
height: e.height,
backgroundColor: e.color,
flexDirection: e.direction,
cursor: re ? "pointer" : "auto",
...e.buttonStyle
})), n = iA([
`${Y}-button`,
{ [`${Y}-${e.shape}`]: e.shape },
`${Y}-button--${e.size}`
]), s = A, r = (c) => {
!e.loading && s("click", c);
};
return (c, M) => (d(), y("div", {
style: eA([l(o)]),
class: k(l(n)),
onClick: r
}, [
c.loading ? (d(), U(zt, {
key: 0,
loadingWidth: c.loadingWidth,
loadingHeight: c.loadingHeight,
color: c.loadingColor
}, null, 8, ["loadingWidth", "loadingHeight", "color"])) : z("", !0),
c.iconSrc && !c.loading ? (d(), U(De, {
key: 1,
size: c.iconSize,
src: c.iconSrc
}, null, 8, ["size", "src"])) : z("", !0),
c.text ? (d(), y("div", {
key: 2,
style: eA([c.buttonTextStyle]),
class: k(t)
}, W(c.text), 5)) : z("", !0)
], 6));
}
});
const St = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAzMCAzMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTMwIDE2LjA1MDlDMzAgMTMuODE0NiAyOC43NzIyIDExLjcxOTQgMjYuNjg1NSAxMC45MTVDMjMuMDU5MSA5LjUxNzI2IDE5LjExOSA4Ljc1MDk4IDE1IDguNzUwOThDMTAuODgwOSA4Ljc1MDk4IDYuOTQwODYgOS41MTcyNiAzLjMxNDUzIDEwLjkxNUMxLjIyNzg0IDExLjcxOTQgMCAxMy44MTQ2IDAgMTYuMDUwOVYxOS42NDc2QzAgMjAuNTE1MyAwLjczNDAwMyAyMS4yMDIgMS41OTk3OCAyMS4xNDQzTDcuOTc0NzggMjAuNzE5M0M4Ljc2MjcyIDIwLjY2NjggOS4zNzUgMjAuMDEyMyA5LjM3NSAxOS4yMjI2VjE2LjIwOUM5LjM3NSAxNS44NTY0IDkuNjIwMzQgMTUuNTUwMyA5Ljk2NjQ0IDE1LjQ4MzFDMTEuNTk1NSAxNS4xNjY3IDEzLjI3ODQgMTUuMDAxIDE1IDE1LjAwMUMxNi43MjE2IDE1LjAwMSAxOC40MDQ1IDE1LjE2NjcgMjAuMDMzNiAxNS40ODMxQzIwLjM3OTcgMTUuNTUwMyAyMC42MjUgMTUuODU2NCAyMC42MjUgMTYuMjA5VjE5LjIyMjZDMjAuNjI1IDIwLjAxMjMgMjEuMjM3MyAyMC42NjY4IDIyLjAyNTIgMjAuNzE5M0wyOC40MDAyIDIxLjE0NDNDMjkuMjY2IDIxLjIwMiAzMCAyMC41MTUzIDMwIDE5LjY0NzZWMTYuMDUwOVoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=", Va = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyNiAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTguOTE2NSA4LjE5OTc4SDkuNzY2NVY3LjM0OTc4VjUuNjQ5NzhWNC43OTk3OEg4LjkxNjVINC44MzMxN0gzLjk4MzE3VjUuNjQ5NzhWNy4zNDk3OFY4LjE5OTc4SDQuODMzMTdIOC45MTY1Wk0xLjAxNjUgMS42NjY2MkMxLjAxNjUgMS41ODM3OCAxLjA4MzY2IDEuNTE2NjMgMS4xNjY1IDEuNTE2NjNIMTcuODMzMkMxNy45MTYgMS41MTY2MyAxNy45ODMyIDEuNTgzNzggMTcuOTgzMiAxLjY2NjYzVjE4LjMzMzNDMTcuOTgzMiAxOC40MTYxIDE3LjkxNiAxOC40ODMzIDE3LjgzMzIgMTguNDgzM0gxLjE2NjVDMS4wODM2NiAxOC40ODMzIDEuMDE2NSAxOC40MTYxIDEuMDE2NSAxOC4zMzMzVjEuNjY2NjJaTTIxLjIxNDMgNS4wMjIyNEMyMS4yMTQzIDQuOTYzOTYgMjEuMjQ4IDQuOTEwOTYgMjEuMzAwOCA0Ljg4NjMxTDI0Ljc2OTYgMy4yNjc1NkMyNC44NjkgMy4yMjExNSAyNC45ODMgMy4yOTM3NSAyNC45ODMgMy40MDM0OUwyNC45ODMgMTYuNTk2NEMyNC45ODMgMTYuNzA2MiAyNC44NjkgMTYuNzc4OCAyNC43Njk2IDE2LjczMjRMMjEuMzAwOCAxNS4xMTM2QzIxLjI0OCAxNS4wODkgMjEuMjE0MyAxNS4wMzYgMjEuMjE0MyAxNC45Nzc3TDIxLjIxNDMgNS4wMjIyNFoiIGZpbGw9IiMyMjI2MkUiIHN0cm9rZT0iIzIyMjYyRSIgc3Ryb2tlLXdpZHRoPSIxLjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K", ba = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPG1hc2sgaWQ9InBhdGgtMS1pbnNpZGUtMV8yODdfOSIgZmlsbD0id2hpdGUiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTkuOTUxOTEgMjMuMzMzN0gxOC44MzMyQzE5LjM4NTUgMjMuMzMzNyAxOS44MzMyIDIyLjg4NTkgMTkuODMzMiAyMi4zMzM3VjExLjQyOThMOS45NTE5MSAyMy4zMzM3Wk0yMS4zNjQ0IDkuNTg1MTJMMjIuOTg5NiA3LjYyNzM1TDI1LjQxMDMgNi40OTc2N0MyNi4wNzMzIDYuMTg4MjggMjYuODMzMiA2LjY3MjI0IDI2LjgzMzIgNy40MDM4NUwyNi44MzMyIDIwLjU5NjhDMjYuODMzMiAyMS4zMjg0IDI2LjA3MzMgMjEuODEyNCAyNS40MTAzIDIxLjUwM0wyMi40NTgyIDIwLjEyNTNMMjEuOTQxNiAxOS44ODQyQzIxLjU4OTUgMTkuNzE5OSAyMS4zNjQ0IDE5LjM2NjYgMjEuMzY0NCAxOC45NzhMMjEuMzY0NCA5LjU4NTEyWk0xNy44NjMxIDQuNjY2OTlMMi4zNjgxMSAyMy4zMzM3SDIuMTY2NUMxLjYxNDIyIDIzLjMzMzcgMS4xNjY1IDIyLjg4NTkgMS4xNjY1IDIyLjMzMzdWNS42NjY5OUMxLjE2NjUgNS4xMTQ3MSAxLjYxNDIyIDQuNjY2OTkgMi4xNjY1IDQuNjY2OTlIMTcuODYzMVpNNS44MzMxNyAxMS4zNTAxSDkuOTE2NVY5LjY1MDE1SDUuODMzMTdWMTEuMzUwMVoiLz4KPC9tYXNrPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTkuOTUxOTEgMjMuMzMzN0gxOC44MzMyQzE5LjM4NTUgMjMuMzMzNyAxOS44MzMyIDIyLjg4NTkgMTkuODMzMiAyMi4zMzM3VjExLjQyOThMOS45NTE5MSAyMy4zMzM3Wk0yMS4zNjQ0IDkuNTg1MTJMMjIuOTg5NiA3LjYyNzM1TDI1LjQxMDMgNi40OTc2N0MyNi4wNzMzIDYuMTg4MjggMjYuODMzMiA2LjY3MjI0IDI2LjgzMzIgNy40MDM4NUwyNi44MzMyIDIwLjU5NjhDMjYuODMzMiAyMS4zMjg0IDI2LjA3MzMgMjEuODEyNCAyNS40MTAzIDIxLjUwM0wyMi40NTgyIDIwLjEyNTNMMjEuOTQxNiAxOS44ODQyQzIxLjU4OTUgMTkuNzE5OSAyMS4zNjQ0IDE5LjM2NjYgMjEuMzY0NCAxOC45NzhMMjEuMzY0NCA5LjU4NTEyWk0xNy44NjMxIDQuNjY2OTlMMi4zNjgxMSAyMy4zMzM3SDIuMTY2NUMxLjYxNDIyIDIzLjMzMzcgMS4xNjY1IDIyLjg4NTkgMS4xNjY1IDIyLjMzMzdWNS42NjY5OUMxLjE2NjUgNS4xMTQ3MSAxLjYxNDIyIDQuNjY2OTkgMi4xNjY1IDQuNjY2OTlIMTcuODYzMVpNNS44MzMxNyAxMS4zNTAxSDkuOTE2NVY5LjY1MDE1SDUuODMzMTdWMTEuMzUwMVoiIGZpbGw9IndoaXRlIiBzdHlsZT0iZmlsbDp3aGl0ZTtmaWxsOndoaXRlO2ZpbGwtb3BhY2l0eToxOyIvPgo8cGF0aCBkPSJNOS45NTE5MSAyMy4zMzM3TDguNjQzODUgMjIuMjQ3OUw2LjMzMTM4IDI1LjAzMzdIOS45NTE5MVYyMy4zMzM3Wk0xOS44MzMyIDExLjQyOThIMjEuNTMzMlY2LjcyMDI0TDE4LjUyNTEgMTAuMzQ0TDE5LjgzMzIgMTEuNDI5OFpNMjIuOTg5NiA3LjYyNzM1TDIyLjI3MDcgNi4wODY4NEwyMS45MjUxIDYuMjQ4MTFMMjEuNjgxNSA2LjU0MTU0TDIyLjk4OTYgNy42MjczNVpNMjEuMzY0NCA5LjU4NTEyTDIwLjA1NjQgOC40OTkzMUwxOS42NjQ0IDguOTcxNDhMMTkuNjY0NCA5LjU4NTEyTDIxLjM2NDQgOS41ODUxMlpNMjUuNDEwMyA2LjQ5NzY3TDI2LjEyOTIgOC4wMzgxOEwyNi4xMjkyIDguMDM4MThMMjUuNDEwMyA2LjQ5NzY3Wk0yNi44MzMyIDcuNDAzODVMMjguNTMzMiA3LjQwMzg1VjcuNDAzODVIMjYuODMzMlpNMjYuODMzMiAyMC41OTY4TDI1LjEzMzIgMjAuNTk2OFYyMC41OTY4SDI2LjgzMzJaTTI1LjQxMDMgMjEuNTAzTDI0LjY5MTQgMjMuMDQzNUwyNC42OTE0IDIzLjA0MzVMMjUuNDEwMyAyMS41MDNaTTIyLjQ1ODIgMjAuMTI1M0wyMy4xNzcxIDE4LjU4NDhMMjMuMTc3MSAxOC41ODQ4TDIyLjQ1ODIgMjAuMTI1M1pNMjEuOTQxNiAxOS44ODQyTDIxLjIyMjYgMjEuNDI0N0wyMS4yMjI3IDIxLjQyNDdMMjEuOTQxNiAxOS44ODQyWk0yMS4zNjQ0IDE4Ljk3OEwxOS42NjQ0IDE4Ljk3OFYxOC45NzhIMjEuMzY0NFpNMi4zNjgxMSAyMy4zMzM3VjI1LjAzMzdIMy4xNjYzM0wzLjY3NjE3IDI0LjQxOTVMMi4zNjgxMSAyMy4zMzM3Wk0xNy44NjMxIDQuNjY2OTlMMTkuMTcxMiA1Ljc1MjhMMjEuNDgzNyAyLjk2Njk5SDE3Ljg2MzFWNC42NjY5OVpNOS45MTY1IDExLjM1MDFWMTMuMDUwMUgxMS42MTY1VjExLjM1MDFIOS45MTY1Wk01LjgzMzE3IDExLjM1MDFINC4xMzMxN1YxMy4wNTAxSDUuODMzMTdWMTEuMzUwMVpNOS45MTY1IDkuNjUwMTVIMTEuNjE2NVY3Ljk1MDE1SDkuOTE2NVY5LjY1MDE1Wk01LjgzMzE3IDkuNjUwMTVWNy45NTAxNUg0LjEzMzE3VjkuNjUwMTVINS44MzMxN1pNMTguODMzMiAyMS42MzM3SDkuOTUxOTFWMjUuMDMzN0gxOC44MzMyVjIxLjYzMzdaTTE4LjEzMzIgMjIuMzMzN0MxOC4xMzMyIDIxLjk0NzEgMTguNDQ2NiAyMS42MzM3IDE4LjgzMzIgMjEuNjMzN1YyNS4wMzM3QzIwLjMyNDMgMjUuMDMzNyAyMS41MzMyIDIzLjgyNDggMjEuNTMzMiAyMi4zMzM3SDE4LjEzMzJaTTE4LjEzMzIgMTEuNDI5OFYyMi4zMzM3SDIxLjUzMzJWMTEuNDI5OEgxOC4xMzMyWk0xOC41MjUxIDEwLjM0NEw4LjY0Mzg1IDIyLjI0NzlMMTEuMjYgMjQuNDE5NUwyMS4xNDEyIDEyLjUxNTZMMTguNTI1MSAxMC4zNDRaTTIxLjY4MTUgNi41NDE1NEwyMC4wNTY0IDguNDk5MzFMMjIuNjcyNSAxMC42NzA5TDI0LjI5NzYgOC43MTMxNkwyMS42ODE1IDYuNTQxNTRaTTI0LjY5MTQgNC45NTcxNkwyMi4yNzA3IDYuMDg2ODRMMjMuNzA4NSA5LjE2Nzg2TDI2LjEyOTIgOC4wMzgxOEwyNC42OTE0IDQuOTU3MTZaTTI4LjUzMzIgNy40MDM4NUMyOC41MzMyIDUuNDI4NDggMjYuNDgxNSA0LjEyMTggMjQuNjkxNCA0Ljk1NzE2TDI2LjEyOTIgOC4wMzgxOEMyNS42NjUxIDguMjU0NzYgMjUuMTMzMiA3LjkxNTk5IDI1LjEzMzIgNy40MDM4NUgyOC41MzMyWk0yOC41MzMyIDIwLjU5NjhMMjguNTMzMiA3LjQwMzg1TDI1LjEzMzIgNy40MDM4NUwyNS4xMzMyIDIwLjU5NjhMMjguNTMzMiAyMC41OTY4Wk0yNC42OTE0IDIzLjA0MzVDMjYuNDgxNCAyMy44Nzg4IDI4LjUzMzIgMjIuNTcyMiAyOC41MzMyIDIwLjU5NjhIMjUuMTMzMkMyNS4xMzMyIDIwLjA4NDcgMjUuNjY1MSAxOS43NDU5IDI2LjEyOTIgMTkuOTYyNUwyNC42OTE0IDIzLjA0MzVaTTIxLjczOTMgMjEuNjY1OEwyNC42OTE0IDIzLjA0MzVMMjYuMTI5MiAxOS45NjI1TDIzLjE3NzEgMTguNTg0OEwyMS43MzkzIDIxLjY2NThaTTIxLjIyMjcgMjEuNDI0N0wyMS43MzkzIDIxLjY2NThMMjMuMTc3MSAxOC41ODQ4TDIyLjY2MDUgMTguMzQzN0wyMS4yMjI3IDIxLjQyNDdaTTE5LjY2NDQgMTguOTc4QzE5LjY2NDQgMjAuMDI3MSAyMC4yNzIgMjAuOTgxMSAyMS4yMjI2IDIxLjQyNDdMMjIuNjYwNSAxOC4zNDM3QzIyLjkwNjkgMTguNDU4NyAyMy4wNjQ0IDE4LjcwNjEgMjMuMDY0NCAxOC45NzhIMTkuNjY0NFpNMTkuNjY0NCA5LjU4NTEyTDE5LjY2NDQgMTguOTc4TDIzLjA2NDQgMTguOTc4TDIzLjA2NDQgOS41ODUxMkwxOS42NjQ0IDkuNTg1MTJaTTMuNjc2MTcgMjQuNDE5NUwxOS4xNzEyIDUuNzUyOEwxNi41NTUxIDMuNTgxMThMMS4wNjAwNSAyMi4yNDc5TDMuNjc2MTcgMjQuNDE5NVpNMi4zNjgxMSAyMS42MzM3SDIuMTY2NVYyNS4wMzM3SDIuMzY4MTFWMjEuNjMzN1pNMi4xNjY1IDIxLjYzMzdDMi41NTMxMSAyMS42MzM3IDIuODY2NSAyMS45NDcxIDIuODY2NSAyMi4zMzM3SC0wLjUzMzQ5NkMtMC41MzM0OTYgMjMuODI0OCAwLjY3NTMyOSAyNS4wMzM3IDIuMTY2NSAyNS4wMzM3VjIxLjYzMzdaTTIuODY2NSAyMi4zMzM3VjUuNjY2OTlILTAuNTMzNDk2VjIyLjMzMzdIMi44NjY1Wk0yLjg2NjUgNS42NjY5OUMyLjg2NjUgNi4wNTM1OSAyLjU1MzEgNi4zNjY5OSAyLjE2NjUgNi4zNjY5OVYyLjk2Njk5QzAuNjc1MzM5IDIuOTY2OTkgLTAuNTMzNDk2IDQuMTc1ODIgLTAuNTMzNDk2IDUuNjY2OTlIMi44NjY1Wk0yLjE2NjUgNi4zNjY5OUgxNy44NjMxVjIuOTY2OTlIMi4xNjY1VjYuMzY2OTlaTTkuOTE2NSA5LjY1MDE1SDUuODMzMTdWMTMuMDUwMUg5LjkxNjVWOS42NTAxNVpNOC4yMTY1IDkuNjUwMTVWMTEuMzUwMUgxMS42MTY1VjkuNjUwMTVIOC4yMTY1Wk01LjgzMzE3IDExLjM1MDFIOS45MTY1VjcuOTUwMTVINS44MzMxN1YxMS4zNTAxWk03LjUzMzE3IDExLjM1MDFWOS42NTAxNUg0LjEzMzE3VjExLjM1MDFINy41MzMxN1oiIGZpbGw9IndoaXRlIiBzdHlsZT0iZmlsbDp3aGl0ZTtmaWxsOndoaXRlO2ZpbGwtb3BhY2l0eToxOyIgbWFzaz0idXJsKCNwYXRoLTEtaW5zaWRlLTFfMjg3XzkpIi8+CjxwYXRoIGQ9Ik00LjU2MzQ4IDI1LjI2ODZMMjIuMTQwNSA0LjA4Mzg5IiBzdHJva2U9IndoaXRlIiBzdHlsZT0ic3Ryb2tlOndoaXRlO3N0cm9rZTp3aGl0ZTtzdHJva2Utb3BhY2l0eToxOyIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjwvc3ZnPgo=", xa = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAzMCAzMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDE1LjYyNVYxMy43NUg2VjE1LjYyNUM2IDIwLjU5NTYgMTAuMDI5NCAyNC42MjUgMTUgMjQuNjI1QzE5Ljk3MDYgMjQuNjI1IDI0IDIwLjU5NTYgMjQgMTUuNjI1VjEzLjc1SDI2VjE1LjYyNUMyNiAyMS4zNjMgMjEuNjA2NSAyNi4wNzQ5IDE2IDI2LjU4MDJWMzBIMTRWMjYuNTgwMkM4LjM5MzUgMjYuMDc0OSA0IDIxLjM2MyA0IDE1LjYyNVoiIGZpbGw9IiMyMjI2MkUiLz4KPHJlY3QgeD0iOC43NSIgeT0iMS4yNSIgd2lkdGg9IjEyLjUiIGhlaWdodD0iMjAuNjI1IiByeD0iNi4yNSIgZmlsbD0iIzIyMjYyRSIvPgo8L3N2Zz4K", ka = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAzMCAzMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04Ljc1IDcuNUM4Ljc1IDQuMDQ4MjIgMTEuNTQ4MiAxLjI1IDE1IDEuMjVDMTYuOTc1OCAxLjI1IDE4LjczNzYgMi4xNjY4NiAxOS44ODI5IDMuNTk4MzRMOC44NzI0OCAxNi44NjI0QzguNzkyMTUgMTYuNDYyNCA4Ljc1IDE2LjA0ODYgOC43NSAxNS42MjVWNy41Wk02LjgwNTY3IDE5LjM1MjNDNi4yODgyNSAxOC4yMTY2IDYgMTYuOTU0NCA2IDE1LjYyNVYxMy43NUg0VjE1LjYyNUM0IDE3LjU4ODIgNC41MTQzMSAxOS40MzEzIDUuNDE1NTUgMjEuMDI2OUw2LjgwNTY3IDE5LjM1MjNaTTkuMjExNzcgMjQuOTgwN0wxMC41MDQ0IDIzLjQyMzVDMTEuODI3MiAyNC4xODc3IDEzLjM2MjUgMjQuNjI1IDE1IDI0LjYyNUMxOS45NzA2IDI0LjYyNSAyNCAyMC41OTU2IDI0IDE1LjYyNVYxMy43NUgyNlYxNS42MjVDMjYgMjEuMzYzIDIxLjYwNjUgMjYuMDc0OSAxNiAyNi41ODAyVjMwSDE0VjI2LjU4MDJDMTIuMjU0MyAyNi40MjI4IDEwLjYyNjIgMjUuODU3NyA5LjIxMTc3IDI0Ljk4MDdaTTEyLjI5ODMgMjEuMjYyNUwyMS4yNSAxMC40Nzg0VjE1LjYyNUMyMS4yNSAxOS4wNzY4IDE4LjQ1MTggMjEuODc1IDE1IDIxLjg3NUMxNC4wMzIzIDIxLjg3NSAxMy4xMTYgMjEuNjU1MSAxMi4yOTgzIDIxLjI2MjVaIiBmaWxsPSJ3aGl0ZSIgc3R5bGU9ImZpbGw6d2hpdGU7ZmlsbDp3aGl0ZTtmaWxsLW9wYWNpdHk6MTsiLz4KPHBhdGggZD0iTTYuNDE4OTUgMjQuMDg0TDIyLjA5MzkgNS4yMDkzOCIgc3Ryb2tlPSJ3aGl0ZSIgc3R5bGU9InN0cm9rZTp3aGl0ZTtzdHJva2U6d2hpdGU7c3Ryb2tlLW9wYWNpdHk6MTsiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K", Ra = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyOCAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMC4xMzUxIDAuMzcyODY0TDIxLjAwMDcgMC44NzM1OUMyNS4xODI3IDMuMjkyNzUgMjggNy44MTY3OSAyOCAxM0MyOCAxOC4xODMzIDI1LjE4MjcgMjIuNzA3MyAyMS4wMDA3IDI1LjEyNjVMMjAuMTM1MSAyNS42MjcyTDE5LjEzMzYgMjMuODk2TDE5Ljk5OTIgMjMuMzk1M0MyMy41ODg3IDIxLjMxODkgMjYgMTcuNDQwNSAyNiAxM0MyNiA4LjU1OTU5IDIzLjU4ODcgNC42ODExNyAxOS45OTkyIDIuNjA0OEwxOS4xMzM2IDIuMTA0MDhMMjAuMTM1MSAwLjM3Mjg2NFpNMTMuNjQ0OCAxLjM4ODkzQzE0LjM1MTcgMC44NjMyNyAxNS4zNTU2IDEuMzY3NzkgMTUuMzU1NiAyLjI0ODY5VjIzLjc1MTRDMTUuMzU1NiAyNC42MzIzIDE0LjM1MTcgMjUuMTM2OCAxMy42NDQ4IDI0LjYxMTFMNi45OTU3IDE5LjY2NjVDNi44MTA4NyAxOS41MjkgNi41ODY2NyAxOS40NTQ4IDYuMzU2MzQgMTkuNDU0OEgxLjI1MTZDMC42NTk4NzEgMTkuNDU0OCAwLjE4MDE3NiAxOC45NzUxIDAuMTgwMTc2IDE4LjM4MzRWNy42MzQxMUMwLjE4MDE3NiA3LjA0MzcxIDAuNjU3NzkgNi41NjQ1NyAxLjI0ODE5IDYuNTYyNjlMNi4zNTgyNCA2LjU0NjM5QzYuNTg3NCA2LjU0NTY2IDYuODEwMjkgNi40NzE0NyA2Ljk5NDE4IDYuMzM0NzJMMTMuNjQ0OCAxLjM4ODkzWk0xOS41NTUzIDYuMTY4NEwxOC43MjM3IDUuNjEzMDRMMTcuNjEzIDcuMjc2MjZMMTguNDQ0NiA3LjgzMTYyQzE5LjkzNjggOC44MjgxNSAyMSAxMC43NDExIDIxIDEzQzIxIDE1LjI1ODkgMTkuOTM2OCAxNy4xNzE5IDE4LjQ0NDYgMTguMTY4NEwxNy42MTMgMTguNzIzOEwxOC43MjM3IDIwLjM4N0wxOS41NTUzIDE5LjgzMTZDMjEuNjQ5OSAxOC40MzI4IDIzIDE1Ljg2ODggMjMgMTNDMjMgMTAuMTMxMiAyMS42NDk5IDcuNTY3MTcgMTkuNTU1MyA2LjE2ODRaIiBmaWxsPSIjMkUzMzNEIi8+Cjwvc3ZnPgo=", Ba = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAzMCAzMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC4zNjAyIDIyLjg0MTZMMTQuNTk0NyAyNi40MDI1QzE1LjI5MTYgMjYuOTg4NiAxNi4zNTU3IDI2LjQ5MzEgMTYuMzU1NyAyNS41ODI1VjE1LjYxOUwxMC4zNjAyIDIyLjg0MTZaTTIzLjcxNjIgNi43NTE4N0wyNS4wMDE0IDUuMjAzNjRDMjcuNDc0MSA3LjcyNzkxIDI5IDExLjE4NTUgMjkgMTVDMjkgMjAuMTgzMyAyNi4xODI3IDI0LjcwNzMgMjIuMDAwNyAyNy4xMjY1TDIxLjEzNTEgMjcuNjI3MkwyMC4xMzM3IDI1Ljg5NkwyMC45OTkzIDI1LjM5NTNDMjQuNTg4NyAyMy4zMTg5IDI3IDE5LjQ0MDUgMjcgMTVDMjcgMTEuODA2IDI1Ljc1MjQgOC45MDI4MiAyMy43MTYyIDYuNzUxODdaTTIwLjQzNzcgMTAuNzAxNEwyMS43MjYyIDkuMTQ5MTdDMjMuMTM5MyAxMC42MTMyIDI0IDEyLjcwOTQgMjQgMTVDMjQgMTcuODY4OSAyMi42NSAyMC40MzI5IDIwLjU1NTQgMjEuODMxNkwxOS43MjM4IDIyLjM4N0wxOC42MTMxIDIwLjcyMzhMMTkuNDQ0NyAyMC4xNjg0QzIwLjkzNjkgMTkuMTcxOSAyMiAxNy4yNTg5IDIyIDE1QzIyIDEzLjI4NDIgMjEuMzg2NiAxMS43NjggMjAuNDM3NyAxMC43MDE0Wk0xNi4zNTU3IDYuNDgyODhMMy45Mjc1OSAyMS40NTQ4SDIuMjUxNjdDMS42NTk5MyAyMS40NTQ4IDEuMTgwMjQgMjAuOTc1MSAxLjE4MDI0IDIwLjM4MzRWOS42MzQ1OUMxLjE4MDI0IDkuMDQ0MDEgMS42NTgxMyA4LjU2NDc5IDIuMjQ4NyA4LjU2MzE2TDguMzIyMTggOC41NDYzNkM4LjU3MzQ1IDguNTQ1NjcgOC44MTY0OSA4LjQ1NjY4IDkuMDA4OCA4LjI5NDk2TDE0LjU5NDcgMy41OTc2MUMxNS4yOTE2IDMuMDExNTEgMTYuMzU1NyAzLjUwNjk5IDE2LjM1NTcgNC40MTc2M1Y2LjQ4Mjg4WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTQuNTYzNzIgMjUuMjY4M0wyMi4xNDA3IDQuMDgzNjUiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K", Un = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAzMCAzMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBvcGFjaXR5PSIwLjUiIGN4PSIxNSIgY3k9IjE1IiByPSIxNSIgZmlsbD0iIzIyMjYyRSIgc3R5bGU9ImZpbGw6IzIyMjYyRTtmaWxsOmNvbG9yKGRpc3BsYXktcDMgMC4xMzMzIDAuMTQ5MCAwLjE4MDQpO2ZpbGwtb3BhY2l0eToxOyIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIwLjUxNiAxNy40NTE2QzIwLjY2ODIgMTcuNjExOCAyMC42NjE3IDE3Ljg2NSAyMC41MDE1IDE4LjAxNzFMMTkuNjMxNSAxOC44NDM2QzE5LjQ3MTMgMTguOTk1OCAxOS4yMTgyIDE4Ljk4OTMgMTkuMDY2IDE4LjgyOTFMMTQuOTk5OSAxNC41NDlMMTAuOTMzOSAxOC44MjkxQzEwLjc4MTggMTguOTg5MyAxMC41Mjg2IDE4Ljk5NTggMTAuMzY4NCAxOC44NDM2TDkuNDk4NDIgMTguMDE3MkM5LjMzODI2IDE3Ljg2NSA5LjMzMTc2IDE3LjYxMTggOS40ODM5MSAxNy40NTE3TDE0LjUxNjUgMTIuMTUzOUMxNC43NzkzIDExLjg3NzMgMTUuMjIwMyAxMS44NzcyIDE1LjQ4MzIgMTIuMTUzOUwyMC41MTYgMTcuNDUxNloiIGZpbGw9IndoaXRlIiBzdHlsZT0iZmlsbDp3aGl0ZTtmaWxsOndoaXRlO2ZpbGwtb3BhY2l0eToxOyIvPgo8L3N2Zz4K", fn = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAzMCAzMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzIyXzE2OTcpIj4KPHBhdGggZD0iTTQuMTYxODIgNS42NzY5OUMyLjU4MDQ5IDcuMjU4MzIgMS45NjcxOCA5LjYwODA1IDIuODczOTUgMTEuNjUyM0M0LjQ0OTc3IDE1LjIwNDkgNi42OTM5OSAxOC41MzI4IDkuNjA2NiAyMS40NDU0QzEyLjUxOTIgMjQuMzU4IDE1Ljg0NzEgMjYuNjAyMiAxOS4zOTk3IDI4LjE3ODFDMjEuNDQ0IDI5LjA4NDggMjMuNzkzNyAyOC40NzE1IDI1LjM3NSAyNi44OTAyTDI3LjkxODMgMjQuMzQ2OUMyOC41MzE5IDIzLjczMzMgMjguNDk4NCAyMi43Mjg4IDI3Ljg0NTQgMjIuMTU3NEwyMy4wMzcxIDE3Ljk1MDFDMjIuNDQyOCAxNy40MzAxIDIxLjU0NzEgMTcuNDU5OSAyMC45ODg3IDE4LjAxODNMMTguODU3NyAyMC4xNDkzQzE4LjYwODQgMjAuMzk4NiAxOC4yMTg0IDIwLjQ0MTUgMTcuOTI2MiAyMC4yNDQzQzE2LjU1MDUgMTkuMzE2MSAxNS4yNDM0IDE4LjI0MzMgMTQuMDI2IDE3LjAyNkMxMi44MDg3IDE1LjgwODYgMTEuNzM1OSAxNC41MDE1IDEwLjgwNzcgMTMuMTI1OEMxMC42MTA1IDEyLjgzMzYgMTAuNjUzNCAxMi40NDM2IDEwLjkwMjcgMTIuMTk0M0wxMy4wMzM3IDEwLjA2MzNDMTMuNTkyMSA5LjUwNDk0IDEzLjYyMTkgOC42MDkyMyAxMy4xMDE5IDguMDE0OTNMOC44OTQ2NCAzLjIwNjZDOC4zMjMyNSAyLjU1MzU5IDcuMzE4NjcgMi41MjAxNCA2LjcwNTExIDMuMTMzN0w0LjE2MTgyIDUuNjc2OTlaIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzIyXzE2OTciPgo8cmVjdCB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==", KA = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDJDMSAxLjQ0NzcyIDEuNDQ3NzIgMSAyIDFIMjZDMjYuNTUyMyAxIDI3IDEuNDQ3NzIgMjcgMlYyNkMyNyAyNi41NTIzIDI2LjU1MjMgMjcgMjYgMjdIMkMxLjQ0NzcyIDI3IDEgMjYuNTUyMyAxIDI2VjJaTTE1LjY1MjggMTYuODAxM0MxNy4xMzg1IDE2LjE2MDggMTguMTc4NiAxNC42ODMgMTguMTc4NiAxMi45NjI0QzE4LjE3ODYgMTAuNjU0NiAxNi4zMDc4IDguNzgzOCAxNCA4Ljc4MzhDMTEuNjkyMiA4Ljc4MzggOS44MjE0MyAxMC42NTQ2IDkuODIxNDMgMTIuOTYyNEM5LjgyMTQzIDE0LjY4MyAxMC44NjE1IDE2LjE2MDggMTIuMzQ3MiAxNi44MDEzSDEyLjE0MjlDOS4wNjU4NCAxNi44MDEzIDYuNTcxNDMgMTkuMjk1NyA2LjU3MTQzIDIyLjM3MjhWMjQuNjIyOEM2LjU3MTQzIDI1LjE3NSA3LjAxOTE0IDI1LjYyMjggNy41NzE0MyAyNS42MjI4SDIwLjQyODZDMjAuOTgwOSAyNS42MjI4IDIxLjQyODYgMjUuMTc1IDIxLjQyODYgMjQuNjIyOFYyMi4zNzI4QzIxLjQyODYgMTkuMjk1NyAxOC45MzQyIDE2LjgwMTMgMTUuODU3MSAxNi44MDEzSDE1LjY1MjhaTTIuMzkyODYgNy42MjA5NEw3LjYyMDk0IDIuMzkyODZIOS44NTMzN0wyLjM5Mjg2IDkuODUzMzdWNy42MjA5NFpNMi4zOTI4NiAxNS43NTFWMTMuNTE4NUwxMy41MTg1IDIuMzkyODZIMTUuNzUxTDIuMzkyODYgMTUuNzUxWk0yLjM5Mjg2IDIxLjY0ODZWMTkuNDE2MUw3Ljg1MTg1IDEzLjk1NzFDNy45MTM5NCAxNC41ODMgOC4wNjk0IDE1LjE4MTEgOC4zMDM5NiAxNS43Mzc1TDIuMzkyODYgMjEuNjQ4NlpNMTYuMzk3OCA3LjY0MzYzQzE1Ljg0MTIgNy40MDkwNCAxNS4yNDMgNy4yNTM2NSAxNC42MTc0IDcuMTkxNTdMMTkuNDE2MSAyLjM5Mjg2SDIxLjY0ODZMMTYuMzk3OCA3LjY0MzYzWk0yLjgzOTUxIDI0Ljg2NzFMNC41NzEzOSAyMy4xMzUyVjI1LjAwMDFDNC41NzEzOSAyNS4xMTc2IDQuNTc4MTUgMjUuMjMzNiA0LjU5MTMxIDI1LjM0NzdMNC4zMzI3NCAyNS42MDYzQzMuNzMwMTQgMjUuNTg4NSAzLjE5NDQ1IDI1LjMwNDEgMi44Mzk1MSAyNC44NjcxWk0xOC41NDg1IDkuMTU4MDZDMTguOTA5OSA5LjU1MDk0IDE5LjIyMSA5Ljk5MDc1IDE5LjQ3MTcgMTAuNDY3M0wyNS42MDYzIDQuMzMyNzRDMjUuNTg4NSAzLjczMDE0IDI1LjMwNDEgMy4xOTQ0NSAyNC44NjcxIDIuODM5NTFMMTguNTQ4NSA5LjE1ODA2Wk0xOS41MTg0IDE2LjEyMTJDMTkuNTYwNiAxNi4xNDQ1IDE5LjYwMjUgMTYuMTY4MiAxOS42NDQyIDE2LjE5MjRMMjUuNjA3MSAxMC4yMjk0VjcuOTk3TDIwLjE3NzkgMTMuNDI2MkMyMC4xNjQ2IDE0LjM5NTIgMTkuOTI4MyAxNS4zMDk3IDE5LjUxODQgMTYuMTIxMlpNMjEuNjM5NiAxNy44NjIxQzIxLjk4NTIgMTguMjcwNiAyMi4yODgzIDE4LjcxNjIgMjIuNTQyMSAxOS4xOTJMMjUuNjA3MSAxNi4xMjdWMTMuODk0NkwyMS42Mzk2IDE3Ljg2MjFaTTIzLjQyODUgMjIuNzUwMVYyNC4yMDMyTDI1LjYwNzEgMjIuMDI0NlYxOS43OTIyTDIzLjM5MjUgMjIuMDA2OEMyMy40MTYzIDIyLjI1MTMgMjMuNDI4NSAyMi40OTkzIDIzLjQyODUgMjIuNzUwMVoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=", jt = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDFDMCAwLjQ0NzcxNiAwLjQ0NzcxNSAwIDEgMEgyNUMyNS41NTIzIDAgMjYgMC40NDc3MTUgMjYgMVYyNUMyNiAyNS41NTIzIDI1LjU1MjMgMjYgMjUgMjZIMUMwLjQ0NzcxNiAyNiAwIDI1LjU1MjMgMCAyNVYxWk0xMyAxNEMxNS4zMDc4IDE0IDE3LjE3ODYgMTIuMTI5MiAxNy4xNzg2IDkuODIxNDNDMTcuMTc4NiA3LjUxMzY3IDE1LjMwNzggNS42NDI4NiAxMyA1LjY0Mjg2QzEwLjY5MjIgNS42NDI4NiA4LjgyMTQzIDcuNTEzNjcgOC44MjE0MyA5LjgyMTQzQzguODIxNDMgMTIuMTI5MiAxMC42OTIyIDE0IDEzIDE0Wk0xMS4xNDI5IDE1LjM0NTlDOC4wNjU4NCAxNS4zNDU5IDUuNTcxNDMgMTcuODQwMyA1LjU3MTQzIDIwLjkxNzRWMjMuMTY3NEM1LjU3MTQzIDIzLjcxOTYgNi4wMTkxNCAyNC4xNjc0IDYuNTcxNDMgMjQuMTY3NEgxOS40Mjg2QzE5Ljk4MDkgMjQuMTY3NCAyMC40Mjg2IDIzLjcxOTYgMjAuNDI4NiAyMy4xNjc0VjIwLjkxNzRDMjAuNDI4NiAxNy44NDAzIDE3LjkzNDIgMTUuMzQ1OSAxNC44NTcxIDE1LjM0NTlMMTMgMTguMDE5M0wxMS4xNDI5IDE1LjM0NTlaTTEuMzkyODYgOC4wMzU1M0w4LjAzNTUzIDEuMzkyODZIMTAuMjY4TDEuMzkyODYgMTAuMjY4VjguMDM1NTNaTTEuMzkyODYgMjAuMjY4VjE4LjAzNTVMOC4wMzQ2NiAxMS4zOTM3TDkuMTUwODggMTIuNTA5OUwxLjM5Mjg2IDIwLjI2OFpNMjQuNjA3MSAxNC44MjEyVjE3LjA1MzdMMjIuMTM0IDE5LjUyNjlMMjEuMDE3NyAxOC40MTA2TDI0LjYwNzEgMTQuODIxMlpNMjQuNjA3MSA0LjgyMTI5VjcuMDUzNzNMMTcuNTE0OSAxNC4xNDZMMTYuMzk4NyAxMy4wMjk4TDI0LjYwNzEgNC44MjEyOVpNMjAuMjY4IDEuMzkyODZMMTYuMzcyNiA1LjI4ODIxTDE1LjI1NjQgNC4xNzE5OUwxOC4wMzU1IDEuMzkyODZIMjAuMjY4WiIgZmlsbD0iYmxhY2siIHN0eWxlPSJmaWxsOmJsYWNrO2ZpbGwtb3BhY2l0eToxOyIvPgo8L3N2Zz4K", vn = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00LjY2NjgzIDkuMzMzMzdIMy4zMzM1VjQuMDAwMDRDMy4zMzM1IDMuNjMxODUgMy42MzE5NyAzLjMzMzM3IDQuMDAwMTYgMy4zMzMzN0w5LjMzMzUgMy4zMzMzN1Y0LjY2NjcxSDUuNjA5NjNMOS44MDQ5IDguODYxOTlMOC44NjIwOSA5LjgwNDhMNC42NjY4MyA1LjYwOTUyVjkuMzMzMzdaTTE1LjMzMzMgMTAuNjY2N0gxNi42NjY3VjE2QzE2LjY2NjcgMTYuMzY4MiAxNi4zNjgyIDE2LjY2NjcgMTYgMTYuNjY2N0wxMC42NjY3IDE2LjY2NjdMMTAuNjY2NyAxNS4zMzMzSDE0LjM5MDVMMTAuMTk1MyAxMS4xMzhMMTEuMTM4MSAxMC4xOTUyTDE1LjMzMzMgMTQuMzkwNVYxMC42NjY3WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTAuNjY2NjY3IDEuMzMzMzNDMC42NjY2NjcgMC45NjUxNDQgMC45NjUxNDQgMC42NjY2NjcgMS4zMzMzMyAwLjY2NjY2N0gxOC42NjY3QzE5LjAzNDkgMC42NjY2NjcgMTkuMzMzMyAwLjk2NTE0NCAxOS4zMzMzIDEuMzMzMzNWMTguNjY2N0MxOS4zMzMzIDE5LjAzNDkgMTkuMDM0OSAxOS4zMzMzIDE4LjY2NjcgMTkuMzMzM0gxLjMzMzMzQzAuOTY1MTQzIDE5LjMzMzMgMC42NjY2NjcgMTkuMDM0OSAwLjY2NjY2NyAxOC42NjY3VjEuMzMzMzNaIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuMzMzMzMiLz4KPC9zdmc+", wn = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxyZWN0IHg9IjAuNzY5MjMxIiB5PSIwLjc2OTIzMSIgd2lkdGg9IjE4LjQ2MTUiIGhlaWdodD0iMTguNDYxNSIgcng9IjAuNzY5MjMxIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuNTM4NDYiLz4KICAgIDxwYXRoIGQ9Ik0xMS41Mzg1IDEyLjMwNzdDMTEuNTM4NSAxMS44ODI5IDExLjg4MjkgMTEuNTM4NSAxMi4zMDc3IDExLjUzODVIMTkuMjMwOFYxOC40NjE1QzE5LjIzMDggMTguODg2NCAxOC44ODY0IDE5LjIzMDggMTguNDYxNiAxOS4yMzA4SDExLjUzODVWMTIuMzA3N1oiIHN0cm9rZT0id2hpdGUiIHN0cm9rZS13aWR0aD0iMS41Mzg0NiIvPgogICAgPHBhdGggZD0iTTAuNzY5Mjg3IDAuNzY5MjI2TDguOTcyMyA4LjkyNDEyIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEuNTM4NDYiLz4KICAgIDxwYXRoIGQ9Ik05LjQ5NjcgNC43MTcxNlY5LjQ0ODZINC43NDE0NiIgc3Ryb2tlPSJ3aGl0ZSIgc3Ryb2tlLXdpZHRoPSIxLjUzODQ2IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KICA8L3N2Zz4=", On = "data:image/svg+xml;base64,PHN2ZyB0PSIxNzA4NDAwODQ5NTMxIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjgyNjciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48cGF0aCBkPSJNMTIxLjUxIDQ2MC4xNWg3NzkuNjR2MTAwLjZIMTIxLjUxeiIgcC1pZD0iODI2OCIgZmlsbD0iI2ZmZmZmZiI+PC9wYXRoPjxwYXRoIGQ9Ik00NjEuMDM1IDkwMC4yNzF2LTc3OS42NGgxMDAuNnY3NzkuNjR6IiBwLWlkPSI4MjY5IiBmaWxsPSIjZmZmZmZmIj48L3BhdGg+PC9zdmc+", Vn = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTguNDk5OTEgNEgyLjk5OTkxQzIuNDQ3NjIgNCAxLjk5OTkxIDQuNDQ3NzIgMS45OTk5MSA1VjE3QzEuOTk5OTEgMTcuNTUyMyAyLjQ0NzYyIDE4IDIuOTk5OTEgMThIMTQuOTk5OUMxNS41NTIyIDE4IDE1Ljk5OTkgMTcuNTUyMyAxNS45OTk5IDE3VjExLjUiIHN0cm9rZT0iI0Q1RTBGMiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS40OTk5IDMuNVY4LjVIMTYuNDk5OVYzLjVIMTEuNDk5OVpNMTAuOTk5OSAyQzEwLjQ0NzYgMiA5Ljk5OTkxIDIuNDQ3NzIgOS45OTk5MSAzVjlDOS45OTk5MSA5LjU1MjI4IDEwLjQ0NzYgMTAgMTAuOTk5OSAxMEgxNi45OTk5QzE3LjU1MjIgMTAgMTcuOTk5OSA5LjU1MjI4IDE3Ljk5OTkgOVYzQzE3Ljk5OTkgMi40NDc3MiAxNy41NTIyIDIgMTYuOTk5OSAySDEwLjk5OTlaIiBmaWxsPSIjRDVFMEYyIi8+Cjwvc3ZnPgo=", JA = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yNS4wMTg0IDUuNzYzMzZDMjYuMTIyOSA1Ljc2MzM2IDI3LjAxODQgNi42NTg3OSAyNy4wMTg0IDcuNzYzMzZWMjMuMjkwOUMyNy4wMTg0IDI0LjM5NTUgMjYuMTIyOSAyNS4yOTA5IDI1LjAxODQgMjUuMjkwOUgyLjk4MTYzQzEuODc3MDYgMjUuMjkwOSAwLjk4MTYyOCAyNC4zOTU1IDAuOTgxNjI4IDIzLjI5MDlWNy43NjMzNkMwLjk4MTYyOCA2LjY1ODc5IDEuODc3MDYgNS43NjMzNiAyLjk4MTYzIDUuNzYzMzZINy4yNDM2QzcuODE0ODggNS43NjMzNiA4LjM1ODg4IDUuNTE5MDcgOC43Mzg0MiA1LjA5MjA5TDEwLjE0ODcgMy41MDU1QzEwLjUyODMgMy4wNzg1MiAxMS4wNzIzIDIuODM0MjMgMTEuNjQzNSAyLjgzNDIzSDE0SDE2LjM1NjVDMTYuOTI3NyAyLjgzNDIzIDE3LjQ3MTcgMy4wNzg1MiAxNy44NTEzIDMuNTA1NUwxOS4yNjE2IDUuMDkyMDlDMTkuNjQxMSA1LjUxOTA3IDIwLjE4NTEgNS43NjMzNiAyMC43NTY0IDUuNzYzMzZIMjUuMDE4NFpNMTEuNzIyOSA5LjU4NDk1QzEyLjM5OTQgOS4zMTYwMiAxMy4xMzc3IDkuMTY4NDYgMTMuOTA5MSA5LjE2ODQ2QzE1LjYyNzcgOS4xNjg0NiAxNy4xNzg4IDkuOTAxMzIgMTguMjUgMTEuMDcxVjkuOTE4NDZIMTkuNzVWMTQuOTEzOEwxOS43NSAxNC45MTg1SDE4LjI1TDE4LjI1IDE0LjkxNDRDMTguMjQ3OCAxMi41ODE3IDE2LjMxNzkgMTAuNjY4NSAxMy45MDkxIDEwLjY2ODVDMTMuMzMwMiAxMC42Njg1IDEyLjc3OTcgMTAuNzc5IDEyLjI3NzEgMTAuOTc4OEwxMS43MjI5IDkuNTg0OTVaTTguMjUgMTkuOTE4NVYxNC45MTg1SDkuNzVDOS43NSAxNy4yNTMgMTEuNjgwNyAxOS4xNjg1IDE0LjA5MDkgMTkuMTY4NUMxNC42Njk4IDE5LjE2ODUgMTUuMjIwMyAxOS4wNTc5IDE1LjcyMjkgMTguODU4MUwxNi4yNzcxIDIwLjI1MkMxNS42MDA2IDIwLjUyMDkgMTQuODYyMyAyMC42Njg1IDE0LjA5MDkgMjAuNjY4NUMxMi4zNzIzIDIwLjY2ODUgMTAuODIxMiAxOS45MzU2IDkuNzUgMTguNzY2VjE5LjkxODVIOC4yNVoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=", bn = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjBfYl8yNTg0XzIzNikiPgo8bWFzayBpZD0icGF0aC0xLWluc2lkZS0xXzI1ODRfMjM2IiBmaWxsPSJ3aGl0ZSI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAuNSAxMS4wNTA1QzEyLjk4NTMgMTEuMDUwNSAxNSA5LjAzNTgyIDE1IDYuNTUwNTRDMTUgNC4wNjUyNiAxMi45ODUzIDIuMDUwNTQgMTAuNSAyLjA1MDU0QzguMDE0NzIgMi4wNTA1NCA2IDQuMDY1MjYgNiA2LjU1MDU0QzYgOS4wMzU4MiA4LjAxNDcyIDExLjA1MDUgMTAuNSAxMS4wNTA1Wk04LjUgMTIuNTAwMUM1LjE4NjI5IDEyLjUwMDEgMi41IDE1LjE4NjQgMi41IDE4LjUwMDFWMjEuMDAwMUMyLjUgMjEuNTUyMyAyLjk0NzcyIDIyLjAwMDEgMy41IDIyLjAwMDFIMTcuNUMxOC4wNTIzIDIyLjAwMDEgMTguNSAyMS41NTIzIDE4LjUgMjEuMDAwMVYxOC41MDAxQzE4LjUgMTUuMTg2NCAxNS44MTM3IDEyLjUwMDEgMTIuNSAxMi41MDAxTDEwLjUgMTUuMzc5MUw4LjUgMTIuNTAwMVoiLz4KPC9tYXNrPgo8cGF0aCBkPSJNOC41IDEyLjUwMDFMOS44OTYxNyAxMS41MzAyTDkuMzg4OTkgMTAuODAwMUg4LjVWMTIuNTAwMVpNMTIuNSAxMi41MDAxVjEwLjgwMDFIMTEuNjExTDExLjEwMzggMTEuNTMwMkwxMi41IDEyLjUwMDFaTTEwLjUgMTUuMzc5MUw5LjEwMzgzIDE2LjM0OUwxMC41IDE4LjM1ODhMMTEuODk2MiAxNi4zNDlMMTAuNSAxNS4zNzkxWk0xMy4zIDYuNTUwNTRDMTMuMyA4LjA5NjkzIDEyLjA0NjQgOS4zNTA1NCAxMC41IDkuMzUwNTRWMTIuNzUwNUMxMy45MjQyIDEyLjc1MDUgMTYuNyA5Ljk3NDcgMTYuNyA2LjU1MDU0SDEzLjNaTTEwLjUgMy43NTA1NEMxMi4wNDY0IDMuNzUwNTQgMTMuMyA1LjAwNDE0IDEzLjMgNi41NTA1NEgxNi43QzE2LjcgMy4xMjYzNyAxMy45MjQyIDAuMzUwNTM3IDEwLjUgMC4zNTA1MzdWMy43NTA1NFpNNy43IDYuNTUwNTRDNy43IDUuMDA0MTQgOC45NTM2IDMuNzUwNTQgMTAuNSAzLjc1MDU0VjAuMzUwNTM3QzcuMDc1ODMgMC4zNTA1MzcgNC4zIDMuMTI2MzcgNC4zIDYuNTUwNTRINy43Wk0xMC41IDkuMzUwNTRDOC45NTM2IDkuMzUwNTQgNy43IDguMDk2OTMgNy43IDYuNTUwNTRINC4zQzQuMyA5Ljk3NDcgNy4wNzU4MyAxMi43NTA1IDEwLjUgMTIuNzUwNVY5LjM1MDU0Wk00LjIgMTguNTAwMUM0LjIgMTYuMTI1MiA2LjEyNTE4IDE0LjIwMDEgOC41IDE0LjIwMDFWMTAuODAwMUM0LjI0NzQxIDEwLjgwMDEgMC44IDE0LjI0NzUgMC44IDE4LjUwMDFINC4yWk00LjIgMjEuMDAwMVYxOC41MDAxSDAuOFYyMS4wMDAxSDQuMlpNMy41IDIwLjMwMDFDMy44ODY2IDIwLjMwMDEgNC4yIDIwLjYxMzUgNC4yIDIxLjAwMDFIMC44QzAuOCAyMi40OTEyIDIuMDA4ODMgMjMuNzAwMSAzLjUgMjMuNzAwMVYyMC4zMDAxWk0xNy41IDIwLjMwMDFIMy41VjIzLjcwMDFIMTcuNVYyMC4zMDAxWk0xNi44IDIxLjAwMDFDMTYuOCAyMC42MTM1IDE3LjExMzQgMjAuMzAwMSAxNy41IDIwLjMwMDFWMjMuNzAwMUMxOC45OTEyIDIzLjcwMDEgMjAuMiAyMi40OTEyIDIwLjIgMjEuMDAwMUgxNi44Wk0xNi44IDE4LjUwMDFWMjEuMDAwMUgyMC4yVjE4LjUwMDFIMTYuOFpNMTIuNSAxNC4yMDAxQzE0Ljg3NDggMTQuMjAwMSAxNi44IDE2LjEyNTIgMTYuOCAxOC41MDAxSDIwLjJDMjAuMiAxNC4yNDc1IDE2Ljc1MjYgMTAuODAwMSAxMi41IDEwLjgwMDFWMTQuMjAwMVpNMTEuODk2MiAxNi4zNDlMMTMuODk2MiAxMy40N0wxMS4xMDM4IDExLjUzMDJMOS4xMDM4MyAxNC40MDkyTDExLjg5NjIgMTYuMzQ5Wk03LjEwMzgzIDEzLjQ3TDkuMTAzODMgMTYuMzQ5TDExLjg5NjIgMTQuNDA5Mkw5Ljg5NjE3IDExLjUzMDJMNy4xMDM4MyAxMy40N1oiIGZpbGw9IiNENUUwRjIiIG1hc2s9InVybCgjcGF0aC0xLWluc2lkZS0xXzI1ODRfMjM2KSIvPgo8L2c+CjxwYXRoIGQ9Ik0xNiAxMUgyM00xOS41IDcuNVYxNC41IiBzdHJva2U9IiNENUUwRjIiIHN0cm9rZS13aWR0aD0iMS43Ii8+CjxkZWZzPgo8ZmlsdGVyIGlkPSJmaWx0ZXIwX2JfMjU4NF8yMzYiIHg9Ii01LjUiIHk9Ii01Ljk0OTQ2IiB3aWR0aD0iMzIiIGhlaWdodD0iMzUuOTQ5NSIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPgo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPgo8ZmVHYXVzc2lhbkJsdXIgaW49IkJhY2tncm91bmRJbWFnZUZpeCIgc3RkRGV2aWF0aW9uPSI0Ii8+CjxmZUNvbXBvc2l0ZSBpbjI9IlNvdXJjZUFscGhhIiBvcGVyYXRvcj0iaW4iIHJlc3VsdD0iZWZmZWN0MV9iYWNrZ3JvdW5kQmx1cl8yNTg0XzIzNiIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImVmZmVjdDFfYmFja2dyb3VuZEJsdXJfMjU4NF8yMzYiIHJlc3VsdD0ic2hhcGUiLz4KPC9maWx0ZXI+CjwvZGVmcz4KPC9zdmc+Cg==", xn = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAiIGhlaWdodD0iMzAiIHZpZXdCb3g9IjAgMCAzMCAzMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBvcGFjaXR5PSIwLjUiIGN4PSIxNSIgY3k9IjE1IiByPSIxNSIgZmlsbD0iIzIyMjYyRSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNDgzNzUgMTQuMzEzM0M5LjMzMTYgMTQuMTUzMSA5LjMzODA5IDEzLjg5OTkgOS40OTgyNSAxMy43NDc4TDEwLjM2ODMgMTIuOTIxM0MxMC41Mjg0IDEyLjc2OTEgMTAuNzgxNiAxMi43NzU2IDEwLjkzMzggMTIuOTM1OEwxNC45OTk5IDE3LjIxNTlMMTkuMDY1OCAxMi45MzU4QzE5LjIxOCAxMi43NzU2IDE5LjQ3MTEgMTIuNzY5MSAxOS42MzEzIDEyLjkyMTNMMjAuNTAxMyAxMy43NDc3QzIwLjY2MTUgMTMuODk5OSAyMC42NjggMTQuMTUzMSAyMC41MTU4IDE0LjMxMzJMMTUuNDgzMyAxOS42MTFDMTUuMjIwNCAxOS44ODc2IDE0Ljc3OTQgMTkuODg3NiAxNC41MTY2IDE5LjYxMUw5LjQ4Mzc1IDE0LjMxMzNaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K", pA = !V.isPC;
let Pa = Vn, Wa = bn;
pA || (Pa = wn, Wa = On);
const $ = {
width: pA ? "60px" : "40px",
height: pA ? "60px" : "40px",
shape: "circle",
iconSize: pA ? 30 : 20,
showText: !0,
textColor: "#D5E0F2",
textSize: "12px",
textStyle: {
marginTop: "5px"
}
}, O = {
accept: {
basicConfig: {
...$,
color: "#51C271",
iconSrc: fn
},
loadingConfig: {
...$,
color: "#51C271",
loadingWidth: pA ? "30px" : "20px",
loadingHeight: pA ? "30px" : "20px"
}
},
hangup: {
basicConfig: {
...$,
color: "#ED4651",
iconSrc: St
},
loadingConfig: {
...$,
color: "#ED4651",
loadingWidth: pA ? "30px" : "20px",
loadingHeight: pA ? "30px" : "20px"
}
},
reject: {
basicConfig: {
...$,
color: "#ED4651",
iconSrc: St
}
},
camera: {
basicConfig: {
...$,
color: "#FFFFFF",
iconSrc: Va,
shape: "circle"
},
closedConfig: {
...$,
color: "#6b758a4d",
iconSrc: ba
},
loadingConfig: {
...$,
color: "#6b758a4d",
loadingWidth: pA ? "30px" : "20px",
loadingHeight: pA ? "30px" : "20px"
}
},
microphone: {
basicConfig: {
...$,
color: "#FFFFFF",
iconSrc: xa
},
closedConfig: {
...$,
color: "#6b758a4d",
iconSrc: ka
}
},
speaker: {
basicConfig: {
...$,
color: "#FFFFFF",
iconSrc: Ra
},
closedConfig: {
...$,
color: "#6b758a4d",
iconSrc: Ba
}
},
fullScreen: {
basicConfig: {
iconSize: 20,
iconSrc: vn
}
},
minimize: {
basicConfig: {
iconSize: pA ? 24 : 20,
iconSrc: Pa
}
},
switchCamera: {
basicConfig: {
...$,
color: "transparent",
iconSrc: JA,
shape: "circle"
}
},
inviteUser: {
basicConfig: {
...$,
color: pA ? "" : "#6b758a4d",
width: pA ? "24px" : "40px",
height: pA ? "24px" : "40px",
shape: pA ? "" : "circle",
iconSize: pA ? 24 : 20,
iconSrc: Wa
}
},
toggleButtonPanel: {
basicConfig: {
color: "transparent",
width: "40px",
height: "40px",
shape: "circle",
iconSize: 40,
iconSrc: xn
}
},
virtualBackground: {
basicConfig: {
...$,
color: "#6b758a4d",
iconSrc: KA,
shape: "circle"
},
closedConfig: {
...$,
color: "#FFFFFF",
iconSrc: jt
},
loadingConfig: {
...$,
color: "#6b758a4d",
loadingWidth: pA ? "30px" : "20px",
loadingHeight: pA ? "30px" : "20px"
},
disableConfig: {
...$,
color: "#6b758a4d",
iconSrc: KA,
buttonStyle: {
opacity: 0.6
}
}
}
}, XA = {
singleCall: {
video: {
calling: {
...O,
switchCamera: {
basicConfig: {
...$,
color: "#6b758a4d",
iconSrc: JA,
shape: "circle",
showText: !0
},
disableConfig: {
...$,
color: "#6b758a4d",
iconSrc: JA,
shape: "circle",
showText: !0,
buttonStyle: {
opacity: 0.6
}
}
},
hangup: {
basicConfig: {
...O.hangup.basicConfig
},
loadingConfig: {
...O.hangup.loadingConfig
}
},
reject: {
basicConfig: {
...O.reject.basicConfig,
showText: !1
}
}
},
accept: {
...O,
switchCamera: {
basicConfig: {
...$,
color: "#6b758a4d",
iconSrc: JA,
shape: "circle"
},
disableConfig: {
...$,
color: "#6b758a4d",
iconSrc: JA,
shape: "circle",
showText: !0,
buttonStyle: {
opacity: 0.6
}
}
},
accept: {
basicConfig: {
...O.accept.basicConfig,
showText: !1
},
loadingConfig: {
...O.accept.loadingConfig,
showText: !1
}
},
reject: {
basicConfig: {
...O.reject.basicConfig,
showText: !1
}
}
},
connected: {
...O,
virtualBackground: {
basicConfig: {
...$,
color: "transparent",
iconSrc: KA,
shape: "circle",
showText: !1
},
closedConfig: {
...$,
color: "transparent",
iconSrc: KA,
showText: !1
},
disableConfig: {
...$,
color: "transparent",
iconSrc: KA,
showText: !1,
buttonStyle: {
opacity: 0.6
}
}
},
hangup: {
basicConfig: {
...O.hangup.basicConfig,
showText: !1
},
loadingConfig: {
...O.hangup.loadingConfig,
showText: !1
}
},
switchCamera: {
basicConfig: {
...O.switchCamera.basicConfig,
showText: !1
},
disableConfig: {
...O.switchCamera.basicConfig,
showText: !1,
buttonStyle: {
opacity: 0.6
}
}
}
}
},
audio: {
calling: O,
accept: O,
connected: O
}
},
groupCall: {
video: {
calling: {
...O,
switchCamera: {
basicConfig: {
...$,
color: "#6b758a4d",
iconSrc: JA,
shape: "circle"
}
},
hangup: {
basicConfig: {
...O.hangup.basicConfig,
showText: !1
},
loadingConfig: {
...O.hangup.loadingConfig,
showText: !1
}
},
accept: {
basicConfig: {
...O.accept.basicConfig,
showText: !1
},
loadingConfig: {
...O.accept.loadingConfig,
showText: !1
}
},
reject: {
basicConfig: {
...O.reject.basicConfig,
showText: !1
}
}
},
accept: {
...O,
hangup: {
basicConfig: {
...O.hangup.basicConfig,
showText: !1
},
loadingConfig: {
...O.hangup.loadingConfig,
showText: !1
}
},
accept: {
basicConfig: {
...O.accept.basicConfig,
showText: !1
},
loadingConfig: {
...O.accept.loadingConfig,
showText: !1
}
},
reject: {
basicConfig: {
...O.reject.basicConfig,
showText: !1
}
}
},
connected: {
...O,
virtualBackground: {
basicConfig: {
...$,
color: "transparent",
iconSrc: KA,
shape: "circle",
showText: !1
},
closedConfig: {
...$,
color: "transparent",
iconSrc: jt,
showText: !1
}
},
hangup: {
basicConfig: {
...O.hangup.basicConfig,
showText: !1
},
loadingConfig: {
...O.hangup.loadingConfig,
showText: !1
}
}
}
},
audio: {
calling: {
...O,
switchCamera: {
basicConfig: {
...$,
color: "#6b758a4d",
iconSrc: JA,
shape: "circle"
}
},
hangup: {
basicConfig: {
...O.hangup.basicConfig,
showText: !1
},
loadingConfig: {
...O.hangup.loadingConfig,
showText: !1
}
},
accept: {
basicConfig: {
...O.accept.basicConfig,
showText: !1
},
loadingConfig: {
...O.accept.loadingConfig,
showText: !1
}
},
reject: {
basicConfig: {
...O.reject.basicConfig,
showText: !1
}
}
},
accept: {
...O,
hangup: {
basicConfig: {
...O.hangup.basicConfig,
showText: !1
},
loadingConfig: {
...O.hangup.loadingConfig,
showText: !1
}
},
accept: {
basicConfig: {
...O.accept.basicConfig,
showText: !1
},
loadingConfig: {
...O.accept.loadingConfig,
showText: !1
}
},
reject: {
basicConfig: {
...O.reject.basicConfig,
showText: !1
}
}
},
connected: {
...O,
hangup: {
basicConfig: {
...O.hangup.basicConfig,
showText: !1
},
loadingConfig: {
...O.hangup.loadingConfig,
showText: !1
}
},
virtualBackground: {
basicConfig: {
...$,
color: "transparent",
iconSrc: KA,
shape: "circle"
},
closedConfig: {
...$,
color: "transparent",
iconSrc: jt
}
}
}
}
}
}, kn = {
singleCall: {
video: {
calling: O,
accept: O,
connected: O
},
audio: {
calling: O,
accept: O,
connected: O
}
},
groupCall: {
video: {
calling: O,
accept: O,
connected: O
},
audio: {
calling: O,
accept: O,
connected: O
}
}
}, Rn = {
pc: kn,
mobile: XA
}, FA = {
width: "40px",
height: "40px",
shape: "circle",
iconSize: 20,
textColor: "#D5E0F2"
}, Qe = {
microphone: {
basicConfig: {
...FA,
color: "#FFFFFF",
iconSrc: xa
},
closedConfig: {
...FA,
color: "#6b758a4d",
iconSrc: ka
}
},
speaker: {
basicConfig: {
...FA,
color: "#FFFFFF",
iconSrc: Ra
},
closedConfig: {
...FA,
color: "#6b758a4d",
iconSrc: Ba
}
},
camera: {
basicConfig: {
...FA,
color: "#FFFFFF",
iconSrc: Va
},
closedConfig: {
...FA,
color: "#6b758a4d",
iconSrc: ba
}
},
hangup: {
basicConfig: {
...FA,
color: "#ED4651",
iconSrc: St
},
loadingConfig: {
...FA,
color: "#ED4651",
loadingWidth: "20px",
loadingHeight: "20px"
}
},
toggleButtonPanel: {
basicConfig: {
color: "transparent",
width: "40px",
height: "40px",
shape: "circle",
iconSize: 40,
iconSrc: Un
}
}
}, Bn = {
mobile: {
...XA,
groupCall: {
video: {
...XA.groupCall.video,
calling: {
...XA.groupCall.video.calling,
...Qe
},
connected: {
...XA.groupCall.video.connected,
...Qe
}
},
audio: {
...XA.groupCall.audio,
calling: {
...XA.groupCall.audio.calling,
...Qe
},
connected: {
...XA.groupCall.audio.connected,
...Qe
}
}
}
}
}, zA = (a, A) => {
var M;
const e = V.isPC ? "pc" : "mobile", { status: t } = Ve(), { callStatus: o, callRole: n, isGroupCall: s, callType: r } = G(rA()), c = p((M = O == null ? void 0 : O[a]) == null ? void 0 : M[A.value]);
return uA(
[A, t, o, s, r],
() => {
var h, j, m, w, H;
const N = s.value ? "groupCall" : "singleCall", T = r.value === _.AUDIO ? "audio" : "video";
let I = "";
o.value === P.CALLING ? I = n.value === IA.CALLER ? "calling" : "accept" : o.value === P.CONNECTED && (I = "connected");
let D = Rn;
t.value === "close" && (D = Bn), c.value = ((H = (w = (m = (j = (h = D == null ? void 0 : D[e]) == null ? void 0 : h[N]) == null ? void 0 : j[T]) == null ? void 0 : m[I]) == null ? void 0 : w[a]) == null ? void 0 : H[A.value]) || {};
},
{ immediate: !0 }
), c;
}, Pn = {
options: {
virtualHost: !0
}
}, Wn = /* @__PURE__ */ f({
...Pn,
__name: "Minimize",
setup(a) {
const A = zA("minimize", p("basicConfig")), e = async () => {
if (document != null && document.fullscreenElement)
try {
document == null || document.exitFullscreen();
} catch (t) {
console.debug(t);
}
await Q.toggleMinimize();
};
return (t, o) => (d(), U(mA, {
iconSrc: l(A).iconSrc,
iconSize: l(A).iconSize,
onClick: e
}, null, 8, ["iconSrc", "iconSize"]));
}
});
const Z = (a, A) => {
const e = a.__vccOpts || a;
for (const [t, o] of A)
e[t] = o;
return e;
}, Jt = /* @__PURE__ */ Z(Wn, [["__scopeId", "data-v-135d060f"]]), Gn = {
options: {
virtualHost: !0
}
}, Qn = /* @__PURE__ */ f({
...Gn,
__name: "FullScreen",
setup(a) {
const A = zA("fullScreen", p("basicConfig")), e = async () => {
await Ll("tuicallkit-id");
};
return (t, o) => (d(), U(mA, {
iconSrc: l(A).iconSrc,
iconSize: l(A).iconSize,
onClick: e
}, null, 8, ["iconSrc", "iconSize"]));
}
});
const Zn = /* @__PURE__ */ Z(Qn, [["__scopeId", "data-v-f92abf93"]]), Fn = {
width: {
type: String
},
color: {
type: String
},
size: {
type: String
},
weight: {
type: Number
},
truncated: {
type: Boolean,
default: !1
},
lineClamp: {
type: Number
},
textStyle: {
type: Object
}
}, Yn = {
options: {
virtualHost: !0
}
}, gA = /* @__PURE__ */ f({
...Yn,
__name: "TKText",
props: Fn,
emits: ["click"],
setup(a, { emit: A }) {
const e = a, t = A, o = iA([
`${Y}-text`,
{ [`${Y}-text--line-clamp`]: e.lineClamp }
]), n = S(() => Ke({
maxWidth: e.width,
fontSize: e.size,
fontWeight: e.weight,
color: e.color,
textOverflow: e.truncated ? "ellipsis" : "auto",
"-webkit-line-clamp": e.lineClamp,
...e.textStyle
})), s = () => {
t("click");
};
return (r, c) => (d(), y("span", {
class: k(l(o)),
style: eA([l(n)]),
onClick: s
}, [
q(r.$slots, "default")
], 6));
}
});
const ZA = {
width: {
type: String
},
height: {
type: String
},
showText: {
type: Boolean,
default: !0
},
iconSize: {
type: String
}
}, Xn = { class: "btn-content" }, qn = {
options: {
virtualHost: !0
}
}, Jn = /* @__PURE__ */ f({
...qn,
__name: "InviteUser",
props: ZA,
setup(a) {
const A = a, e = zA("inviteUser", p("basicConfig")), t = async () => {
g.update(u.CALL, i.SHOW_SELECT_USER, !0);
};
return (o, n) => (d(), y("div", Xn, [
C(mA, {
iconSrc: l(e).iconSrc,
color: l(e).color,
iconSize: l(e).iconSize,
width: A.width || l(e).width,
height: A.height || l(e).height,
shape: l(e).shape,
onClick: t
}, null, 8, ["iconSrc", "color", "iconSize", "width", "height", "shape"]),
o.showText ? (d(), U(gA, {
key: 0,
textStyle: l(e).textStyle,
color: l(e).textColor,
size: l(e).textSize
}, {
default: E(() => [
NA(W(l(v)("invite member")), 1)
]),
_: 1
}, 8, ["textStyle", "color", "size"])) : z("", !0)
]));
}
});
const Ga = /* @__PURE__ */ Z(Jn, [["__scopeId", "data-v-4c3a35f0"]]), Hn = {
color: {
type: String,
default: "#FFF"
},
callDuration: {
type: String,
default: ""
},
fontSize: {
type: String,
default: "16px"
}
}, Kn = {
options: {
virtualHost: !0
}
}, _e = /* @__PURE__ */ f({
...Kn,
__name: "Timer",
props: Hn,
setup(a) {
const A = a, e = S(() => ({
color: A.color,
fontSize: A.fontSize
}));
return (t, o) => (d(), y("span", {
style: eA([l(e)])
}, W(t.callDuration), 5));
}
}), _n = {
options: {
virtualHost: !0
}
}, $n = /* @__PURE__ */ f({
..._n,
__name: "TopBar",
props: Ql,
setup(a) {
const A = V.isPC, { callStatus: e, isGroupCall: t, callRole: o, allowedFullScreen: n } = G(rA()), { callDuration: s } = mt(), r = be(), c = S(() => e.value === P.CONNECTED), M = p(g.getData(u.CALL, i.ENABLE_FLOAT_WINDOW)), N = S(() => {
var D, h;
return !t.value || ((h = (D = r.value.button) == null ? void 0 : D[_A.InviteUser]) == null ? void 0 : h.show) === !1 ? !1 : e.value === P.CALLING ? o.value === IA.CALLER : !0;
});
function T(D) {
M.value = D;
}
const I = {
[i.ENABLE_FLOAT_WINDOW]: T
};
return CA(() => {
g.watch(
u.CALL,
I,
{
notifyRangeWhenWatch: i.MYSELF
}
);
}), DA(() => {
g.unwatch(u.CALL, {
...I
});
}), (D, h) => (d(), y("div", {
style: eA(D.customStyle),
class: "top-bar-container"
}, [
l(A) ? (d(), U(ne, { key: 0 }, {
default: E(() => [
C(yA, { span: 8 }),
C(yA, {
span: 8,
justify: "center",
align: "center"
}, {
default: E(() => [
l(c) ? (d(), U(_e, {
key: 0,
"call-duration": l(s)
}, null, 8, ["call-duration"])) : z("", !0)
]),
_: 1
}),
C(yA, {
span: 8,
justify: "end",
align: "center"
}, {
default: E(() => [
C(ne, null, {
default: E(() => [
C(yA, { span: 18 }),
C(yA, {
span: 3,
justify: "center"
}, {
default: E(() => [
l(M) ? (d(), U(Jt, { key: 0 })) : z("", !0)
]),
_: 1
}),
C(yA, {
span: 3,
justify: "center"
}, {
default: E(() => [
l(n) ? (d(), U(Zn, { key: 0 })) : z("", !0)
]),
_: 1
})
]),
_: 1
})
]),
_: 1
})
]),
_: 1
})) : z("", !0),
l(A) ? z("", !0) : (d(), U(ne, { key: 1 }, {
default: E(() => [
C(yA, {
span: 8,
align: "center"
}, {
default: E(() => [
C(ne, null, {
default: E(() => [
C(yA, {
span: 8,
justify: "center"
}, {
default: E(() => [
!l(A) && l(M) ? (d(), U(Jt, { key: 0 })) : z("", !0)
]),
_: 1
}),
C(yA, { span: 16 })
]),
_: 1
})
]),
_: 1
}),
C(yA, {
span: 8,
justify: "center",
align: "center"
}, {
default: E(() => [
l(c) ? (d(), U(_e, {
key: 0,
"call-duration": l(s)
}, null, 8, ["call-duration"])) : z("", !0)
]),
_: 1
}),
C(yA, {
span: 8,
justify: "end",
align: "center"
}, {
default: E(() => [
C(ne, null, {
default: E(() => [
C(yA, { span: 16 }),
C(yA, {
span: 8,
justify: "center"
}, {
default: E(() => [
l(N) ? (d(), U(Ga, {
key: 0,
"show-text": l(A)
}, null, 8, ["show-text"])) : z("", !0)
]),
_: 1
})
]),
_: 1
})
]),
_: 1
})
]),
_: 1
}))
], 4));
}
});
const Qa = /* @__PURE__ */ Z($n, [["__scopeId", "data-v-b040a138"]]), Ai = {
show: {
type: Boolean,
default: !0
},
showMask: {
type: Boolean,
default: !0
},
showBackgroundImage: {
type: Boolean,
default: !0
},
blur: {
type: Boolean,
default: !0
},
bgColor: {
type: String
},
bgImage: {
type: String
},
zIndex: {
type: Number,
default: 11e3
},
customClass: {
type: String
},
customStyle: {
type: Object
},
customMaskStyle: {
type: Object
},
fit: {
type: String,
default: "cover"
},
defaultSrc: {
type: String
}
}, ei = ["click", "error"], ti = {
options: {
virtualHost: !0
}
}, Za = /* @__PURE__ */ f({
...ti,
__name: "Overlay",
props: Ai,
emits: ei,
setup(a, { emit: A }) {
const e = a, t = A, o = iA([
`${Y}-overlay`,
e.customClass
]), n = `${Y}-overlay_mask-container`, s = S(() => iA([
`${Y}-overlay_mask`,
{ [`${Y}-blur`]: e.blur }
])), r = `${Y}-overlay_slot`, c = S(() => ({ zIndex: e.zIndex, ...e.customStyle })), M = S(() => ({
backgroundColor: e.bgColor,
...e.customMaskStyle
}));
function N() {
t("click");
}
const T = (I) => {
t("error", I);
};
return (I, D) => I.show ? (d(), y("div", {
key: 0,
class: k(l(o)),
style: eA([l(c)]),
onClick: N
}, [
L("div", {
class: k(n)
}, [
I.showMask ? (d(), y("div", {
key: 0,
class: k(l(s)),
style: eA([l(M)])
}, null, 6)) : z("", !0),
I.showBackgroundImage ? (d(), U(LA, {
key: 1,
fit: I.fit,
src: I.bgImage,
width: "100%",
height: "100%",
defaultSrc: I.defaultSrc,
onError: T
}, null, 8, ["fit", "src", "defaultSrc"])) : z("", !0)
]),
L("div", {
class: k(r)
}, [
q(I.$slots, "default")
])
], 6)) : z("", !0);
}
});
const ai = ["fill", "contain", "cover"], oi = ["circle", "square"], li = {
icon: {
type: String
},
size: {
type: [Number, String],
default: 100
},
shape: {
type: String,
values: oi,
default: "square"
},
src: {
type: String
},
defaultSrc: {
type: String
},
text: {
type: String
},
fit: {
type: String,
values: ai,
default: "cover"
},
customClass: {
type: String
}
}, ni = {
options: {
virtualHost: !0
}
}, Fa = /* @__PURE__ */ f({
...ni,
__name: "Avatar",
props: li,
setup(a) {
const A = a, e = p("");
uA(() => A.src, () => {
e.value = A.src;
}, {
immediate: !0
});
const t = S(() => iA([
`${Y}-avatar`,
`${Y}-avatar--${A.shape}`,
`${Y}-avatar--${A.size}`,
A.customClass
])), o = S(() => typeof A.size == "number" ? `${A.size}px` : A.size), n = S(() => typeof A.size == "number" ? `${A.size}px` : A.size), s = S(() => ({ width: o.value, height: n.value }));
function r(c) {
console.error(c), A.defaultSrc && (e.value = A.defaultSrc);
}
return (c, M) => (d(), y("div", {
class: k(l(t)),
style: eA([l(s)])
}, [
l(e) ? (d(), U(LA, {
key: 0,
fit: c.fit,
width: l(o),
height: l(n),
src: l(e),
onError: r
}, null, 8, ["fit", "width", "height", "src"])) : q(c.$slots, "default", { key: 1 })
], 6));
}
});
const ii = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cmVjdCB4PSIxMSIgeT0iMjAiIHdpZHRoPSIyIiBoZWlnaHQ9IjQiIGZpbGw9IiNmZmYiIC8+CiAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zLjE0OTkgMTFWMTIuNUMzLjE0OTkgMTcuMzg3NyA3LjExMjE4IDIxLjM1IDExLjk5OTkgMjEuMzVDMTYuODg3NiAyMS4zNSAyMC44NDk5IDE3LjM4NzcgMjAuODQ5OSAxMi41VjExSDE5LjE0OTlWMTIuNUMxOS4xNDk5IDE2LjQ0ODggMTUuOTQ4NyAxOS42NSAxMS45OTk5IDE5LjY1QzguMDUxMDcgMTkuNjUgNC44NDk5IDE2LjQ0ODggNC44NDk5IDEyLjVWMTFIMy4xNDk5WiIgZmlsbD0iI2ZmZiIvPgogIDxyZWN0IHg9IjcuODUiIHk9IjEuODUiIHdpZHRoPSI4LjMiIGhlaWdodD0iMTQuOCIgcng9IjQuMTUiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPC9zdmc+", si = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTguNzM3MDggMTIuOTk2M0M4LjcxMjY2IDEyLjgzNDQgOC43IDEyLjY2ODcgOC43IDEyLjVWNkM4LjcgNC4xNzc0NiAxMC4xNzc1IDIuNyAxMiAyLjdDMTMuNTQ4OCAyLjcgMTQuODQ4NCAzLjc2Njk1IDE1LjIwMzggNS4yMDU5MkwxNi40NDU4IDMuNzA5NzRDMTUuNjE1IDIuMTAwMzMgMTMuOTM2IDEgMTIgMUM5LjIzODU4IDEgNyAzLjIzODU4IDcgNlYxMi41QzcgMTMuMjMzMyA3LjE1Nzg2IDEzLjkyOTcgNy40NDE0NSAxNC41NTcyTDguNzM3MDggMTIuOTk2M1pNMTEuMzM4NSAxNS43MzM3TDEwLjE2MTggMTcuMTUxM0MxMC43MzA4IDE3LjM3NjMgMTEuMzUwOSAxNy41IDEyIDE3LjVDMTQuNzYxNCAxNy41IDE3IDE1LjI2MTQgMTcgMTIuNVY4LjkxMzNMMTUuMyAxMC45NjEzVjEyLjVDMTUuMyAxNC4zMjI1IDEzLjgyMjUgMTUuOCAxMiAxNS44QzExLjc3MzQgMTUuOCAxMS41NTIyIDE1Ljc3NzIgMTEuMzM4NSAxNS43MzM3Wk01Ljk2NTE5IDE2LjMzNTZDNS4yNTkzMyAxNS4yMjczIDQuODUwMzkgMTMuOTExNCA0Ljg1MDM5IDEyLjVWMTFIMy4xNTAzOVYxMi41QzMuMTUwMzkgMTQuNDQxNiAzLjc3NTYyIDE2LjIzNzEgNC44MzU3MiAxNy42OTYzTDUuOTY1MTkgMTYuMzM1NlpNNy42MzIxOCAyMC4xOTg2TDguNzM5NCAxOC44NjQ3QzkuNzE3MTggMTkuMzY2NyAxMC44MjU3IDE5LjY1IDEyLjAwMDQgMTkuNjVDMTUuOTQ5MiAxOS42NSAxOS4xNTA0IDE2LjQ0ODggMTkuMTUwNCAxMi41VjExSDIwLjg1MDRWMTIuNUMyMC44NTA0IDE3LjA0OTggMTcuNDE3MSAyMC43OTc2IDEzIDIxLjI5NDJWMjRIMTFWMjEuMjk0MUM5Ljc4NjEzIDIxLjE1NzUgOC42NDY1OCAyMC43NzU0IDcuNjMyMTggMjAuMTk4NloiIGZpbGw9IiNmZmYiIC8+CiAgPHBhdGggZD0iTTUuNzM2ODIgMTkuNTUxM0wxOC4yNjY3IDQuNDYzNzEiIHN0cm9rZT0iI0VENDE0RCIgc3R5bGU9InN0cm9rZTojRUQ0MTREO3N0cm9rZTpjb2xvcihkaXNwbGF5LXAzIDAuOTI5MiAwLjI1NTUgMC4zMDA0KTtzdHJva2Utb3BhY2l0eToxOyIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4KCg==", ci = {
isMuted: {
type: Boolean,
default: !1
},
volume: {
type: Number,
default: 0
}
}, ri = { class: "mic-container" }, ui = { class: "mic-level-container" }, Mi = {
options: {
virtualHost: !0
}
}, di = /* @__PURE__ */ f({
...Mi,
__name: "MicrophoneVolume",
props: ci,
setup(a) {
const A = a, e = S(() => A.isMuted ? si : ii), t = S(() => A.isMuted || !A.volume ? "" : `height: ${A.volume * 4}%`);
return (o, n) => (d(), y("div", ri, [
L("div", ui, [
L("div", {
class: "mic-level",
style: eA(l(t))
}, null, 4)
]),
C(De, { src: l(e) }, null, 8, ["src"])
]));
}
});
const Ya = /* @__PURE__ */ Z(di, [["__scopeId", "data-v-ea062939"]]), QA = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHg9Ii01IiB5PSItNSIgd2lkdGg9IjExMCIgaGVpZ2h0PSIxMTAiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8yOTY0XzE3NTgpIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjQuOTk5OSA3MS41QzI0Ljk5OTkgNjEuMjM1NyAzMi45MzA0IDUyLjgyMzcgNDIuOTk4MyA1Mi4wNTdDNDMuNDkzOSA1Mi4wMTkzIDQzLjk5NDcgNTIgNDQuNDk5OSA1Mkg1Ny40OTk5QzU4LjAwNTEgNTIgNTguNTA1OSA1Mi4wMTkzIDU5LjAwMTQgNTIuMDU3QzY5LjA2OTQgNTIuODIzNyA3Ni45OTk5IDYxLjIzNTcgNzYuOTk5OSA3MS41Vjc4LjI4MjZIMjQuOTk5OUwyNC45OTk5IDcxLjVaIiBmaWxsPSIjRDVFMEYyIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDQuNDk5OSA0NS42MDQ4QzQ0LjQzMTIgNDUuNTcwNyA0NC4zNjI5IDQ1LjUzNiA0NC4yOTQ4IDQ1LjUwMDhDMzkuNTkwNiA0My4wNjk3IDM2LjM3NDkgMzguMTYwNCAzNi4zNzQ5IDMyLjVDMzYuMzc0OSAyNC40MjI4IDQyLjkyMjcgMTcuODc1IDUwLjk5OTkgMTcuODc1QzU5LjA3NyAxNy44NzUgNjUuNjI0OSAyNC40MjI4IDY1LjYyNDkgMzIuNUM2NS42MjQ5IDM4LjE2MDQgNjIuNDA5MiA0My4wNjk3IDU3LjcwNDkgNDUuNTAwOEM1Ny42MzY5IDQ1LjUzNiA1Ny41Njg2IDQ1LjU3MDcgNTcuNDk5OSA0NS42MDQ4QzU1LjU0MTggNDYuNTc3OSA1My4zMzQ3IDQ3LjEyNSA1MC45OTk5IDQ3LjEyNUM0OC42NjUgNDcuMTI1IDQ2LjQ1NzkgNDYuNTc3OSA0NC40OTk5IDQ1LjYwNDhaIiBmaWxsPSIjRDVFMEYyIi8+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMjk2NF8xNzU4IiB4MT0iNzMuNSIgeTE9Ii01IiB4Mj0iNSIgeTI9Ijk4LjUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzdDODU5QiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM3NDdDOTAiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K", Ii = {
// ============== OverlayStream 业务组件 =================
showOverlayStream: {
type: Boolean,
default: !0
},
customClass: {
type: String
},
customStyle: {
type: Object
},
isSmallWindow: {
type: Boolean,
default: !1
},
tip: {
type: String,
default: null
},
// ============== Overlay 基础组件 =================
showOverlay: {
type: Boolean,
default: !0
},
showMask: {
type: Boolean,
default: !0
},
showBackgroundImage: {
type: Boolean,
default: !0
},
blur: {
type: Boolean,
default: !0
},
bgColor: {
type: String
},
bgImage: {
type: String,
default: QA
},
overlayZIndex: {
type: Number
},
customOverlayClass: {
type: String
},
fit: {
type: String
},
// ============== Loading 基础组件 =================
showLoading: {
type: Boolean,
default: !1
},
// ============== Avatar 基础组件 =================
showAvatar: {
type: Boolean,
default: !0
},
avatar: {
type: String,
default: QA
},
// ============== Text(username) 基础组件 =================
showUserName: {
type: Boolean,
default: !0
},
username: {
type: String
},
color: {
type: String,
default: "#FFF"
},
// ============== MicrophoneVolume 业务组件 =================
showMicVolume: {
type: Boolean,
default: !1
},
isMuted: {
type: Boolean,
default: !1
},
volume: {
type: Number,
default: 0
},
// ============== Tip 业务组件 =================
showTip: {
type: Boolean,
default: !0
}
}, Ni = ["error"], gi = { class: "overlay-stream-content-container" }, Ti = { class: "overlay-stream-content" }, pi = { class: "overlay-stream-avatar" }, Di = { class: "overlay-stream-info" }, yi = { class: "overlay-stream-tip" }, Ci = { key: 0 }, Si = {
options: {
virtualHost: !0
}
}, ji = /* @__PURE__ */ f({
...Si,
__name: "OverlayStream",
props: Ii,
emits: Ni,
setup(a, { emit: A }) {
const e = A, t = a, o = p(100), { isFloatWindow: n } = G(BA()), s = V.isPC ? "40px" : "20px";
uA([() => t.isSmallWindow, n], () => {
n.value ? o.value = t.isSmallWindow ? 20 : 40 : o.value = t.isSmallWindow ? 40 : 100;
}, {
immediate: !0
});
const r = S(() => iA([
"overlay-stream-container",
{
pc: V.isPC,
mobile: !V.isPC,
float: n.value
}
])), c = (M) => {
e("error", M);
};
return (M, N) => M.showOverlayStream ? (d(), y("div", {
key: 0,
class: k(l(r)),
style: eA([M.customStyle])
}, [
C(Za, {
show: M.showOverlay,
"show-background-image": M.showBackgroundImage,
"show-mask": M.showMask,
blur: M.blur,
zIndex: M.overlayZIndex,
bgColor: M.bgColor,
bgImage: M.bgImage || l(QA),
fit: M.fit,
defaultSrc: l(QA),
customStyle: { position: "absolute", width: "100%", height: "100%" },
"custom-mask-style": { "backdrop-filter": "blur(12px)", "-webkit-backdrop-filter": "blur(12px)" },
customClass: M.customOverlayClass,
onError: c
}, {
default: E(() => [
L("div", gi, [
L("div", Ti, [
M.showLoading ? (d(), U(zt, {
key: 0,
mode: "dot"
})) : z("", !0),
L("div", pi, [
M.showAvatar ? (d(), U(Fa, {
key: 0,
src: M.avatar || l(QA),
size: l(o)
}, null, 8, ["src", "size"])) : z("", !0)
]),
L("div", Di, [
M.showUserName ? (d(), U(gA, {
key: 0,
truncated: !0,
size: l(s),
color: M.color,
width: "200px",
weight: 500
}, {
default: E(() => [
NA(W(M.username), 1)
]),
_: 1
}, 8, ["size", "color"])) : z("", !0),
M.showMicVolume ? (d(), U(Ya, {
key: 1,
isMuted: M.isMuted,
volume: M.volume
}, null, 8, ["isMuted", "volume"])) : z("", !0)
]),
L("div", yi, [
M.showTip && M.tip ? (d(), y("div", Ci, W(M.tip), 1)) : z("", !0)
])
]),
q(M.$slots, "default", {}, void 0, !0)
])
]),
_: 3
}, 8, ["show", "show-background-image", "show-mask", "blur", "zIndex", "bgColor", "bgImage", "fit", "defaultSrc", "customClass"])
], 6)) : z("", !0);
}
});
const Xa = /* @__PURE__ */ Z(ji, [["__scopeId", "data-v-34807212"]]), hi = { class: "waiting-container" }, Li = {
key: 0,
class: "groupcall-info"
}, Ei = { class: "tip" }, mi = { class: "avatar-group" }, zi = { class: "avatar-item" }, Ui = /* @__PURE__ */ f({
__name: "Waiting",
setup(a) {
const { localUserInfoExcludeVolume: A, remoteUserListExcludeVolume: e } = G(vA()), { callerUserInfo: t } = G(hl()), { isGroupCall: o } = G(rA()), n = fa(), s = S(() => {
var j, m;
return o.value ? t.value.displayUserInfo : (m = (j = e.value) == null ? void 0 : j[0]) == null ? void 0 : m.displayUserInfo;
}), r = S(() => {
var j, m;
return o.value ? t.value.avatar : (m = (j = e.value) == null ? void 0 : j[0]) == null ? void 0 : m.avatar;
}), c = S(() => o.value ? !0 : !A.value.isVideoAvailable), M = S(() => o.value ? v("Invited group call") : null), N = S(() => {
var j, m;
return o.value ? n.value[t.value.userId] || r.value : n.value[(m = (j = e.value) == null ? void 0 : j[0]) == null ? void 0 : m.userId] || r.value;
}), T = p(!1), I = p("fill");
let D = p(!1);
ue(() => {
var j, m, w, H;
if (D.value) {
T.value = o.value ? !0 : !A.value.isVideoAvailable, I.value = "cover";
return;
}
o.value ? (T.value = !n.value[t.value.userId], I.value = n.value[t.value.userId] ? "fill" : "cover") : (T.value = !A.value.isVideoAvailable && !n.value[(m = (j = e.value) == null ? void 0 : j[0]) == null ? void 0 : m.userId], I.value = n.value[(H = (w = e.value) == null ? void 0 : w[0]) == null ? void 0 : H.userId] ? "fill" : "cover");
});
const h = () => {
D.value = !0;
};
return (j, m) => (d(), y("div", hi, [
C(Xa, {
username: l(s),
avatar: l(r),
"bg-image": l(N),
"show-avatar": !l(V).isPC,
"show-loading": !1,
"bg-color": "#22262ed9",
"show-mask": l(T),
"show-background-image": l(c),
tip: l(M),
fit: l(I),
onError: h
}, {
default: E(() => [
!l(V).isPC && l(o) ? (d(), y("div", Li, [
L("div", Ei, [
C(gA, { color: "#FFF" }, {
default: E(() => [
NA(W(l(e).length) + W(l(v)("people in the call")), 1)
]),
_: 1
})
]),
L("div", mi, [
(d(!0), y(RA, null, ce(l(e), (w) => (d(), y("div", zi, [
C(Fa, {
size: "100%",
src: w.avatar || l(QA)
}, null, 8, ["src"])
]))), 256))
])
])) : z("", !0)
]),
_: 1
}, 8, ["username", "avatar", "bg-image", "show-avatar", "show-mask", "show-background-image", "tip", "fit"])
]));
}
});
const qa = /* @__PURE__ */ Z(Ui, [["__scopeId", "data-v-b3565c48"]]), fi = {
bigWindow: {
type: String
},
showSmallWindow: {
type: Boolean,
default: !0
},
smallWindowWidth: {
type: String,
default: "30%"
},
smallWindowHeight: {
type: String,
default: "30%"
}
}, vi = ["toggle"], Ja = "ToggleWindowContextKey", wi = {
options: {
virtualHost: !0
}
}, Oi = /* @__PURE__ */ f({
...wi,
__name: "ToggleWindow",
props: fi,
emits: vi,
setup(a, { emit: A }) {
const e = a, t = A, o = p(e.bigWindow), n = `${Y}-toggle-window`, s = (r) => {
o.value = r, t("toggle", r);
};
return uA(() => e.bigWindow, () => {
o.value = e.bigWindow;
}), OA(Ja, {
bigWindow: o,
toggleWindow: s,
smallWindowWidth: ct(e, "smallWindowWidth"),
smallWindowHeight: ct(e, "smallWindowHeight"),
showSmallWindow: ct(e, "showSmallWindow")
}), (r, c) => (d(), y("div", {
class: k(n)
}, [
q(r.$slots, "default")
]));
}
});
const Vi = {
options: {
virtualHost: !0
}
}, bi = /* @__PURE__ */ f({
...Vi,
__name: "Portal",
props: ["disabled"],
setup(a) {
return (A, e) => {
const t = ea("root-portal");
return d(), U(t, {
enable: !a.disabled
}, {
default: E(() => [
q(A.$slots, "default")
]),
_: 3
}, 8, ["enable"]);
};
}
}), xi = {
name: "teleport",
props: {
to: {
type: String,
required: !0
},
source: {
type: String,
required: !0
},
disabled: {
type: Boolean,
required: !0
}
},
mounted() {
if (this.disabled)
return;
const a = document.querySelector(this.to);
a && a.appendChild(this.$el);
},
watch: {
disabled: {
immediate: !0,
handler() {
var a, A;
this.disabled ? (A = document.querySelector(this.source)) == null || A.appendChild(this.$el) : (a = document.querySelector(this.to)) == null || a.appendChild(this.$el);
}
}
},
destroyed() {
const a = document.querySelector(this.to);
if (a)
try {
a.removeChild(this.$el);
} catch (A) {
console.debug(A);
}
}
};
function ki(a, A, e, t, o, n) {
return d(), y("div", null, [
q(a.$slots, "default")
]);
}
const Ri = /* @__PURE__ */ Z(xi, [["render", ki]]), Bi = {
options: {
virtualHost: !0
}
}, Pi = /* @__PURE__ */ f({
...Bi,
__name: "Portal",
props: ["disabled", "to"],
setup(a) {
return (A, e) => (d(), U(Eo, {
disabled: a.disabled,
to: a.to
}, [
q(A.$slots, "default")
], 8, ["disabled", "to"]));
}
}), Wi = {
disabled: {
type: Boolean,
default: !1
},
to: {
type: String,
default: "body"
},
source: {
type: String,
default: "body"
}
}, Ha = /* @__PURE__ */ f({
__name: "Portal",
props: Wi,
setup(a) {
const { majorVersion: A } = $l();
S(() => A === "3");
const e = S(() => A === "2");
return (t, o) => (d(), y("div", null, [
l(Ct) ? (d(), U(bi, {
key: 0,
disabled: t.disabled
}, {
default: E(() => [
q(t.$slots, "default")
]),
_: 3
}, 8, ["disabled"])) : l(e) ? (d(), U(Ri, {
key: 1,
disabled: t.disabled,
to: t.to,
source: t.source
}, {
default: E(() => [
q(t.$slots, "default")
]),
_: 3
}, 8, ["disabled", "to", "source"])) : (d(), U(Pi, {
key: 2,
disabled: t.disabled,
to: t.to
}, {
default: E(() => [
q(t.$slots, "default")
]),
_: 3
}, 8, ["disabled", "to"]))
]));
}
}), Gi = {
value: {
type: String
}
}, Qi = {
options: {
virtualHost: !0
}
}, Ht = /* @__PURE__ */ f({
...Qi,
__name: "ToggleWindowItem",
props: Gi,
setup(a) {
const A = a, {
bigWindow: e,
toggleWindow: t,
smallWindowWidth: o,
smallWindowHeight: n,
showSmallWindow: s
} = VA(Ja), r = S(() => iA([
`${Y}-toggle-window-item`,
`${Y}-toggle-window-item--${e.value === A.value ? "big" : "small"}`,
{
pc: re,
mobile: !re
}
])), c = S(() => {
let M = {};
return e.value !== A.value && (M = { width: o.value, height: n.value }, s.value ? M.visibility = "" : M.visibility = "hidden"), M;
});
return (M, N) => (d(), y("div", {
class: k(l(r)),
style: eA([l(c)]),
onClick: N[0] || (N[0] = () => l(t)(M.value))
}, [
q(M.$slots, "default")
], 6));
}
});
const Ut = {
nickName: {
type: String,
default: ""
},
isSelf: {
type: Boolean,
default: !1
},
isMuted: {
type: Boolean,
default: !1
},
volume: {
type: Number,
default: 0
},
showNickName: {
type: Boolean,
default: !1
},
showSwitchCameraButton: {
type: Boolean,
default: !1
},
showVirtualBackgroundButton: {
type: Boolean,
default: !1
},
showNetWorkStatus: {
type: Boolean,
default: !1
}
}, Ka = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDQiIGhlaWdodD0iNDQiIHZpZXdCb3g9IjAgMCA0NCA0NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+CjxnIGZpbHRlcj0idXJsKCNmaWx0ZXIwX2RfMV8xOSkiPgo8ZWxsaXBzZSBjeD0iMjEuNjE2IiBjeT0iMjEuNTE3IiByeD0iMTkuNjE2IiByeT0iMTkuNTE3IiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjxyZWN0IHg9IjciIHk9IjgiIHdpZHRoPSIyOSIgaGVpZ2h0PSIyOSIgZmlsbD0idXJsKCNwYXR0ZXJuMF8xXzE5KSIvPgo8ZGVmcz4KPGZpbHRlciBpZD0iZmlsdGVyMF9kXzFfMTkiIHg9IjAiIHk9IjAiIHdpZHRoPSI0My4yMzIiIGhlaWdodD0iNDMuMDM0IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPgo8ZmVPZmZzZXQvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIxIi8+CjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9Im91dCIvPgo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4yNSAwIi8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0iZWZmZWN0MV9kcm9wU2hhZG93XzFfMTkiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3dfMV8xOSIgcmVzdWx0PSJzaGFwZSIvPgo8L2ZpbHRlcj4KPHBhdHRlcm4gaWQ9InBhdHRlcm4wXzFfMTkiIHBhdHRlcm5Db250ZW50VW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIj4KPHVzZSB4bGluazpocmVmPSIjaW1hZ2UwXzFfMTkiIHRyYW5zZm9ybT0ic2NhbGUoMC4wMDUpIi8+CjwvcGF0dGVybj4KPGltYWdlIGlkPSJpbWFnZTBfMV8xOSIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHhsaW5rOmhyZWY9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBTWdBQUFESUNBWUFBQUN0V0s2ZUFBQUFBWE5TUjBJQXJzNGM2UUFBSUFCSlJFRlVlRjd0WFhtY0ZOVzEvazUxenpETW9DUzRobTI2ZXJwblJveGJ4Q1VKUnR5QTZRYlhSOXppOG95YXVNU1h1Q1Z4ZVJJMWlVdGNzcWlKaVpyb2N3dFBpVUIzZ3lzdTcwVlJORThEd3ZRNk1CSXhpaUF5dzh4MDEzbmNZVXcwQ3RQVmRhdTZxdWJlMzg4L1pPNVo3bmZ2MTFWMTc3bm5FRlJUQ0NnRXRvb0FLV3dVQWdxQnJTT2dDS0pXaDBKZ0d3Z29ncWpsb1JCUUJGRnJRQ0ZRR1FMcUNWSVpia3BxaUNDZ0NESkVKbG9Oc3pJRUZFRXF3MDFKRFJFRUZFR0d5RVNyWVZhR2dDSklaYmdwcVNHQ2dDTElFSmxvTmN6S0VGQUVxUXczSlRWRUVGQUVHU0lUcllaWkdRS0tJSlhocHFTR0NBS0tJRU5rb3RVd0swTkFFYVF5M0pUVUVFRkFFY1NoaVdiTTBqckhMaDBHZkRDOFoxaGRBOU9tN2RGSDJ4TUNkWUJSUjRFQXNWR3FaUkJybXRiSGhtRXdqRTBBYldMUUppcnhCcW90YlZqWFBlekQrYXZuYlpvRkdBNjVQcVROS0lKSW5QNTBwRzE3WW0wOEd3Z0R4aGZCRkFIeGFJREdBOWlSZ0FZbTFJSVJyTWdzb2NpTUhnSStCT0U5WXF3MndEa05XaHBzWk5oQWUybDR6YXJXRlhNM1ZLUmZDWDBLQVVXUUNoZkZzc2FwWHhnV29BbUdvVTBDNFVBR1dnbjRBb0JoRmFxVUpkWUxvQlBBR3dBdjFraGJyQm44VjcyUWZGdVdnYUdrUnhHa2pObG1nRlkwemdocFZEb1l3QlFpSEVCQUl3T0JNc1NyM29XQUVnTWRSSGlwWk5EQ1dwU2VEUlVXZEJEQVZYZk81UTRvZ214bGd0N2VaVXJEaHZyQVY4SGEwU0NlQ2tBSDRCZThCREVLQUo0eXlKanorYnJ0bnR0NTJld1BYYjVXcStLZVh5WmNDbml2aFk3K1hEMTZwbXBFSndJNEJNRDJVaFM3WDhrR1lqeGhhSGlBTkg0aW1rbDk0SDZYbmZGd3lCTms2WVNadGNPNk5oN0tSTjlrY0p2NGtIWUdldGRhNlNjTEUvOCtNbXJjQWxweVo1OXJQWFhBc1NGTGtHeDRlclRFcGJNQk9ubmc0OW9CdUwxbWdsYUQrVjZVK0hmUlZhbXMxN3lYNGUrUUlzZ3N6TkpPQ2IvY1pyRHhIUUlkN3BXUGJCa1RiVkdIQWZBVG0xODViNDdrVTA4TXBZLzdJVUdRZkdoeVhRa05wekx4ZHdIc1puR3hER2x4Qmxab2pPczR5QTlHTTZrZXY0UGhhNEtzSGoyanZtdFk4UndHTGdSb3ROOG4wOUh4TWQ0aTRsdnFlNEozakY0OXI4dFIydzRhOHlWQm5nbE5yaHVMNGQ4R2FaY0E0aVJiTmJzUVlPQnZ4SHdEZ3JqRGowOFVYeEZFeER0bDlaZStZWUJtMFpaekM5V2NReUMzMmRTc1NINy8rd216ZkJNbjVodUNwUFcyS1FEZEFHQXY1OWFFc3ZRWkNQeUZpUzVwemlXZTlBTTZuaWRJTmp4OXZNSEdqUUMrN29jSjhkRVlaZ2VBUzhMNVpJZVh4K1JaZ3ZEa3ljRk1vZUVpRUY4SmRiam4xalhZQmNZMW5ZV3VueDJDUlVXM09ya3R2enhKa0d3NE50RUEvUWJNWC9JaTZFUE9aNkpYMmVCem13dkpsN3cyZGs4UnBEOHNaTlBHYThDNHlDdUhmQU9SdENLMjZWMEE3d0JZRGRBYUVML0hCdDdYUU4xTTNBMXdONVAyajQvYm9QZ2Y1Z2JXZUJReFJobk1PeERSRGdTTTRTMWg5VHNBMkE2QTVwRkZaNEJ4L2ZvZDFsdzFjY2tTejRTdmVJWWc2Y2JwWDRKbS9BN0FQaTVkRUNKQ2RnMFl5NGl3aEVHdms0WTNBeVYrcTZ1K1llM3V5MmFMZXhyUzJpdjc3bHN6YXUyWVVTWHUwMW1qc0Fic3p3YjJZTUp1Qk96cTRzampONWh4bGxlZUpxNG5pTGlMa1F2Rkx5MlJjUTJCYXFTdE1PdUt4Sy9nTWdEL0E4YmpGQ2krMnBRZHVab3d1MlJkZGVVYS9vaVpnVDFDRzhZRktiQWZ3Sk1KbUdRQUV3Z1YzbUtzM0pXdFNqSlExTUEvaU9SVE45bWdYcXBLVnhNazAzVE16bXhzdWhjZ2NSK2o2bzJBdHhsNEhFQUNBWDRtbWtuOXZlcE9sZUZBcG1uS3pxVlM0Q3NhMFRFTUhPR2k0TXg1Q1BBMzNZeWphd21TYVl3ZlloRGZSNFF4WmF3QjI3cHNmaDE0U3lNOHdvYjJVRVQvOEdWYTVNM2RtSThBRXJ0LzJWWEREMkNEVG1UZ1dCZVFaUlZZT3pWYW1ML0l0a20wb05pVkJNbUVZaGN3NFdaVTcwcHJOeGh6S01CM3JjcDJQK2ZWTGNyQjFvVWdTMjVsM2NFR2EyY0RtQTZnZmpBWm0vNWVBdEhGMFZ6aVZwdjBWNnpXVlFRUnUxUzEzUnR2MjV4MDRNeUtSMlJOc0owWnQ5ZlhEZnV2c2N2bnZHZE5sYmVrbDQ2ZE9xcTJObkFhR0lJc3JWWHkvcTcxbzlhYzQ2WmRMdGNRSkIxcDI0bEw5QWdCQnprL09ieklJTDd4d2R5Q0JVTTkzNVNJWjh0dHVUTnpNVUNUSFo4THdqTkV4Uk1pMmNmRmxualZteXNJc2lJMG8xV2owbU1BbWgxR1pENllmeHd0cEY1MDJLNG56S1ZEYlFlQzZQS0IxeThuZlc0UGN1QW92VEJ2dVpOR1A4dFcxUW1TMCtNSGxjQ1Bpc1Jxam9GQlNCSFJsWkZzWW9sak5qMXNLTk1VMzVjTnZoYkFOQWVIOFc0QU9DNmNUejdub00xUG1hb3FRZEo2Mnd5QUhuTHc0L0JGZzR3clduSUxucW9tNkY2MTNSNk9IMDdNMXdBNDBLRXhiQVRvcEdnK01kY2hlKzRoU0RZY084bGcvQUVPSEdBTm5GOWNHY2tuN3hwSzk2bnRXbFFyOU5ncEdpQ3VGb2dUZTd0YlVTT2MycFJMUG1pM0lkZThZbVZDOGROQXVKdkJkc2NSR1F5K3JZYUgvYWRlK05PNmFnRHNWNXY5ZVlnTnVwb1ozN0U3SG93QWc0SFRvL25rZlU3ajZmZ3JsaUFIRTkvalFLelFhd2EwYjdmazV5OTJHdFNoWks4OUZEdUF3TGVEeU5iSWFnS0pZTWN6SW9XRWVPdHdyRGxLa1BaUTdFUWkvSmVkdnpnaWVuWXplclBXalZwenZadjIweDJiMFNvWWVnYVRnMlBERFZjUzgrVTJSMWtieEh4U3BKQjYyS2xoT2thUWJEZzJ2U1JPcCszOTVuZ3p5UGgzM1lQM0RweWFjRHZ0OUQ5TkNMOEZzSWRkZGtTZ0k0R1BqZVpUOCt5eThYRzlqaEFrRzU0MnlXQnRnYzAzLys1YTN4TzRZS0tQVTlBNHNTQ3MyaEE1eVBxMCtsdUo4UzJydXJZaDMwMGFIUjdKSnY3WFJodjlxbTBuU0RZY2F6WVl6d1BZMlk3QkVOQUY4RG1SZk9wZU8vUXJuWlVoa0E1UFB4bHMzR25qRnY0N3BKVytHc2t1ekZUbVlYbFN0aEtrcy9XWUhicDZlbDRndTJKN21KWnFHcC9ZbEV1K1VkNXdWUzhuRVdnUHhmYldDQSt6WFJFU2hHVjF2YVdEeG5VdVhHdlh1R3dqeURPVEp3ZkhkTlFuQ1RqQ0R1ZUpLVWxhejBsTnVTZlgyNkZmNlpTRHdPdmo0NSt2Qy9DOXRDVmFXSDRqUE5PWjY1cGlWOFMxYlFScDE5dCtReUFSR1dwRG8xOUY4dnY5aDU4U2xOa0FrbXRVemdLMGsvWDR6d0UrM3lhbmJvdm1rN2JvdG9VZzZYRDhYRENMc0hYNWpYQlpOSmY4cVh6RlNxUGRDS1REc1IrQVljdmNFZE8zSW9XRStPYVIycVFUSk4wNC9jdlFqR2NCU0wwL1BwQWQ1TityY1pvcUZmRWhyaXl0eDA3WlhOL3hIdG5uSlF6dUk0TVBqbllzK0xOTWlLVVNwR044L1BNOUFWNWlRMTdjSHNNd1RtenBXREJINXVDVnJ1b2drR21jZm95aEdROFJVQ3ZUQXdieWZYMmxpYnRML0dpWFNwQzBIcDhOOEwvSkhEU0FIaVk2cmptWFNFaldxOVJWRVlIMmNHdzZNZjdiaHJMWnM2UDVwTFEwdE5JSTBoNktmWnNJZDBqR3ZGY2pPclpKa1VNeXJPNVFOMENTUnlENVNRTGdyR2crS1hLb1dXNVNDREp3R1BpcXpKUHkvcGdxVFpzWnljNVhyMVdXcDltOUN0ckRzZU9JOFVmSjhYbGRiTkRFNW83RW0xWkhicGtnNGc1elJsLzhOSUNEclRyemNYa0NuNlpPeDJVaTZsNWQ2WERiR1dDNlM2YUhtMnRRdnRDVVQzek42djBmeXdSSmgyUGZBL2VuNkpIWDFGYXVQQ3c5b2ltanQxM0pvS3RsdXN1Z1M1cnppWjlaMFdtSklEbDlXa3NKMmw4QTFGbHg0aE95ekhkRUM2bHpwZWxUaWp5RGdBMkh5eHU1UkhzMnIweUk2bGNWTlVzRVNlc3hrWVpUWWlnSkw0emtENGlwRS9LSzV0THpRb3laZ2JTK2NRRUJoMHNjelB4b1BqbWpVbjBWRXlTdHg3OEJzTXdya0RtakpuQkFTL3M4VVNaQXRTR0t3S3F4VTBkdHFnbUlORXhSV1JBUTA0bVJRa0lrQnpIZEtpTEk4cFlqdHd2MEZrVm04N0dtTFg2MlFJOUdtTlNVUzc0aVNaOVM0MkVFVm9TbjdhZXg5b0tzN1Y4Q1ZtMC92R0hDenN0bWYyZ1dsb29JMGg2T1hVK01TODBhMjJwL292T2l1Y1R0MHZTNVhOR3FzVE9IcjZ2cDJYNllVUnBGWkl3RUFuVUVvdzdnT2dZeE1mY2lpQjVpM3RESCtBREYyZzNEQWgrc0RSVVc5VmpkbFhFNU5QOXdMeE9LZllzSnY1Ym1MK0c2YUM3NVE3UDZUQk1rMHpRMXdrWmdxU3gyZy9GQXRKQTgyYXpqWHVpL29ubkdqaWoydFdvR1RTU045bUxtRm9ER0FSaEZvRG9UV1YyWWdTNEMzdCtjdUdBbENNdEE5Qm9idkdRamFsZnM0OU9NTGUyaDJBTkVPRkhTWEc5Q2tiOFlYWlhLbXRGbm1pRHBVT3grRUU0eVkyUnJmUW5vNkNyUlBudXVUTHd2UTErMWRZaFl0TjZBTVlrWmJVUWlyeTFIWUgvUkgxSElSOXlxZTBZanBEU2o5Z1cvcERqS2hnOGZhWER0YTVCVTg1NElEMFp5U1ZOcjF4UkJCbksxU295VzVLblJmRXJzaEhtMjVmUWpkekhRZHlSRC9HalFsMjJJTFRLTHpTWUdYaURpQjQxZ2NLN1hOejF5ZXV5STBwYWlSVElhazBiN21VazVhNG9nN1hyOFNRSWZKc1BUelhmVWI0L21rK2RKMHVXb0dyRWRtVzM4Y0FvME9rOVViSkwydWlsL0ZKc0FMR1RDNzk0YTM3WGdFSThXLzhubzhWK3lwTXRXUkVoRmNzbFl1VkNYVFpDQmV4Nnlza2prdXJxS2UrNjE1dkdONVRycWhuNzUwTkdmSzJxOTN3YmpIQURqM2VCVHVUNklVSEFpK29XR25udThkazFaWkhGRWlmNEtRSHkvV1crRzlwVm94L3l5M29US0o0Z2VFMmNlMzdEdUhjQ0VHYzI1NUh3WnVwelFJWkpQZFBmMFhnaXdlT0tOZE1LbWpUYldnWEhIOExwaE4zbXBTRkEySER2TzJCSWVMNlBkRjgwblR5MUhVVmtFRVFHSldYM3hXeXdoV1RFeEhvMFVrc2VWNDF5MSs2d2VQYU4rWTIzeFlpYTZtTGJVSlBkVGV4K0VHK3Q2RzI0ZDF6bTcyd3NEeTRSamM1aHh0QVJmVjBieXlWQTVXK1psRVVTOFd2UlI3OThsWkVYc1JvRDNpR2JNYmJWSkFNUzBDbkUxZFBPM3hVOGtIb2FhOXNFaGdaVk0rR0Z6THZtQVEvWXFOak53eENCZXRZWlZyR1NMWUhkRFQyREgwV1VrR1N5TElLSitYVTFOWUkxVmdoRDR4NUY4NmdxTGc3TlZ2TDB4dnB1bThTODI3d1RKakFleTFXYzV5bm1oUm5SQlV5N1pMa2VmUFZyUzRkaFB3ZmlCUmUzZFhWM0ZuY3I1Qmk2TElLSWFhcWFqZmpXQW5TdzR0bVk5OWJaTWRHa2VLd1lvcThjdll2UlhVckw2QzJVQnBxcUtic0tXcXdhM1ZOV0xiUmdmK0dCUFc4elUyUm5KSjhkTGU4VVMvbVpDOFFRVGw3MDk5cTlqWk1ZNXpZV2t2TkFCaVRPWWFUcHFIQnQ5NHNLT3hNaGtpUTQ2cm9vWGtsWTZLNUo5ZkpYanBzc3dLT0VPMHNQUmZQS0VNa3lWbjVzM3JjZG5BaXl1UnBwdVlvc3gydGpWVEM3Y2gwK0hZa2N4NFc0Q1Jwa2VtTDhGM2dINFRLZXlxSnVCTWgxcEc0WVNpV0Rac0JtNWovcVN4b2RGc2lseEMzYlFWdFlybHREU2Y3VTJ0SGd4Q1BzT3F2VmZPaER6Q1U3V2RDakhQL0ZLbFFuRmZneUM2UUMyY3ZUN3BnL1RWZEZDUXVwTlB4bllER3lpbUU1WVRzQ0NTRDdaVnE0UFpSTkVLRXlQYjV2QUFYcmUxSzh0NDU1b0lYbEd1UTQ1MGUvdFhhWTBiS2dQaWlwWE01Mnc1d01iZnd4eTEybDZZWkU0bVhkTk0zc0RjWE1adHdMM2FaTmFPdWUvVmU0Z1RCRkVLTTJHWXhOTGpOa0VoQVl6d3VBN28va0R6bkhURGNGTTA1U2QyUWlLSEZzVEIvTmYvZjJmQ0lna0NORDZqb3RrSDMvSExiajB2d1hvTVhIbi9NSkJmV0lzWVlPK2J2YjZyV21DOUQ5SnhORy9nY3ZBT0JPZ0hmN0ZPUWI0UmRKd1RTU2JTZzNxdUlNZHN1SHBVWU1OUVE1cHQ5VWNkTC9xcGdob04wclVabmFSMmUxNFRvOTlyUVM2RE9CRFA1WHlscEZsb3A5SEd6ZmVVY2szY0VVRStXakFvcG9RVS8zK1JjWSsvZittb2RNb0JWNXQ3WmlYdHhzVXMvckY2eUVDdExEYUIzOE0vcEJZNjRER2FSSHV6OHp2QU5vYXdGaFBqS0lZRnhPQ3pEUUNSRHRxeEdPWjBRVDAveWR1Y0ZiN1JMOVRJeHpteHZNU2NmOG1VQ3J1U1V5N0dzeTlBWEM3bmwvd1JqbmJ1VnRiVDVZSVluYVJWcXYvd0pORDdGckl1aUpzWmlnckNWZ0VwcWZaTUY0T2F0MjVTdC9sWHhrOW8zNWtzQmdpVGR2UElFTnNTUjlDb05GbW5KSFVkeVVDZktnWElpS3NqdGYzQkJGbkhJYlI5MXc1MzB4V3dmellHM3NHeFBkREM4eStQelB2elZtQUlVLzNQeldKNnJLanczWDdCRGh3UE1ESGNSbmZoYkw4SUNETlcwalNLVXVuRy9YNG1pQ3ZoWTcrWEFQMVBrdkFuZzZBTDBnd0Q2emRHaW5NRnpiWkFadi9NTEVsdytWTElqem1Rb0NtT0ZGL0VzQnJDUERrYUNiMWdaTmpkZEtXYnduU1g3dGJyeGNmNUdLeDJObEVYZmJmYTRRYjNQSmUvbVk0dGtjTjhFTm1pTk5pdStkNFhpU2ZQTXJwSHdRN0ovVGp1dTBHejZseGZNcE9Xby8vMHNhU1gxdnNFZjVFUkZkR3Nna1JZZXE2Sm9wb0V1RUcyME5vR0xkRUM4bkJ0MXBkaDlEZ0R2bVNJQm05N1N3R1NTL0g5YkgzbVN4cjlCOWVxVm1TQ2JVZHpVUWlmN0krK0pLb3JBY3pUbW91SkIrc1ROcTlVcjRqU0RZYzI4TmdMSmFhTC9qajg4ZDB4L3BlN2VLSlpkd2xjTk8wOTBjUERBL2NDQ0p4WGRpTzlrRUF4djdoL0lJVmRpaXZsazVmRWVTVmZmZXRHYmwyRjNGdjNvNVQ4bmNCK21ZMG41aGJyY21TWVZmVTR3RGpUbFBoUW1VYTNsenkrMythOHZ0dkxqa3d5NVpkdXpMZGtOck5Wd1JKaDJJL3NTbjQ4S1VBY0h3NG4reVFpbjZWbE9YMFdHTUplQmpBQWJKZElOQVZrWHppeDdMMVZrdWZid2lTRFUvYnoyQk5KRDNXNUlKSjkzZnl4ak1QY1ZtZ250VXgvdS9ZbWNOM3F1bTYxNGFha3IwR0IvWnFLY3hiYnRWSE44ajdnaUFpYUMydHgvNU0wbjhSNmFab1BuR3hHeWJLRGgrMmhQeTMzV2JEZDhrVDBYelM3dTExT3lENWxFNWZFS1E5RkR1ZENDSjhYV0tqbjBUemljc2xLblN0cW5Rb2RqTUkzNVBwb01GOFFrc2hKVjdqUE4wOFQ1Q2xPMDBlVVR0aStBcklqRW55OGI3KzFsWnJ1eDc3T1FFWHlGdk5sQS95eGdtVnhwM0o4OE9hSnM4VHBGMlBYVUhBTmRaZytLYzBNKzVwZHRrRkwxbGpHMHhQV21KeVFHRnJjMGI2UzV2enlSc0hzK3ZtdjN1YUlKMWpqdG1odTdaSHBMT1hrKzJROFhSbnFHdXFWM1BZV2wxbzR2cENrZXFmQmJDL1ZWMEQ4dThpd0UxZWp0WHlORUV5ZXZ4cUJsOHBhVEk3QXdoT0RPZm5ycEdrejVOcWxqZk8wQU5hNlNXTEtaNytNZmJOdWRTdVhUZHE3TlVUbDl3cHlqUjRybm1XSU85TW1EbGlYZGVIQmFKUDNXaXNaQkpZM0s5b3lTMTRxaEpodjhtazlmaVJBRDhtY1Z5aXl1emZBWFF5OENhQlh0ZUkvMjlUWFVOaDkyV3pleVhha2E3S3N3UkpoK1BuZ3ZrMktZZ3dyb3NXekpmbmttTGJwVXBrbGh6WXhoQkZJdTFYaVRnWjRHQkNkK0haaVNjSjByOS9INDc5Rll3SlZ0Y1hBOHNwd0h0SE02a2VxN3I4SkovV1kxOEhJSUlQSlIrOGJoT2xkZ1k5SEFUZjVaYW9CVThTSkJ1ZU5zbGc3WGtaQ3pJQVRBbm5rMC9JME9VSEhmblFqTlkrS242UFFLSTJZTFh1djVkRS9xcWl3VGUzZHBTWDRNMHU3RDFKa1BaUTdINlNVeWZ4a1dnKytXOTJnZXNsdlN0Q1UxbzFDdjRJZ01ERHlhZkdJRERSbnhsOFZYT1Zmc1E4UjVDL3R4eTUzYnJlb2tqOFpmWFhyWVFTN3hsZG1SSXBMSWRzZTNQTVlUdlVEQnQycmNFNDAycjJmanRCWkNCaHdMaW8xZUZ3ZXM4UlpFVjQybUVhYTA5YW5nd2ZsNTh1RjV1QmkyV2lCc3FPNWNwVXVkOG1nSytKNUVkY1Q1Z3RyanJiM2p4SGtJemVkaEdEUkRZOUs0MFJDT3dSemN3VDlkNkhYRnMrN3NqUndXRHhUZ2JpSGgzOGkwWENhYnM1VU12RWN3UkpoK1BYZ2ZuN0ZpZjI4V2crT2RXaURrK0twL1cyR1FDSlVnOVdhcjFVZmV3aUFaL0cybG1SUXVJaE81M3hIRUhhOWZqRkJMWVkzME5IZWYxbVlDV0xJcVBIcm1DSmNXdVYrQ0JiaGtEWFJQS0ovNVN0OXlOOW5pTklwcW50cTJ6UUN4WUFlYnQzZUVPajIwOXdMWXp2VTZKL3hNekFQdnJHM3dENHBreTlydEhGZEhla1VIKzJIZDhsbmlQSVFEazRFYnBRVWMxc0F2OHNrazlkNHBySnRkbVJwUk5tMWc3YjFQVVFNeDlqczZscXEzOE1BVDVlOW9HdjV3Z2laaUdqeHkvbXlsNnp1a2dydHJxMXRKanNGU2JJVWRQVk5ZY3NsTTZUN1pQTit1YXRIN1htdUlsTGxrZ0xqUFFrUVJnekF4bDlvd2dzUE5nTTRBUzZJSkpQL05LTWpGZjdia2xGdWxpVXpQTkVUWHFKT00rTzVQYy9RVlptRlU4U3BQOHBJZ3JoY0UwS3pGOHFDMXlpcTZPNXhGVmw5ZlZCcDdRZSs5WG1DTnJ6ZkRDVVNvWndXelNmUEw4U3dYK1Y4U3hCeEVERUJaOCtyZjVIeFBnT2dPR2ZCUWdESzRqeC9XZ2hLVE44V3diMnR1bG8xK1BmSWZBdmJEUGdCY1ZFMzR2bUVyZGFkZFhUQlBsbzhPSnBZcFNDeHhEUjRXRFdRZGdFcHRjSlBMZXAwUENFSGJzYlZvSC9TSDcxNkJuMTNYVThwb2ppTGdGREc4RWcxclRTMmtDSk94czd0bi9Ick85aWw4OHdhSkZ6WVNQMEhvQjJ3T2doYUVFR3Ivc3NiQWdZeWNCdVRwM2FFMUF5aUtZMTV4S1dvaTU4UVJCWmk5VXBQUU1uMlNjemNDeUEzYmNTVnliS0o3ekx3R0lDSHRhb2QyNVQ3c24xMi9LeHZ6UmVTVnNDY01TQnNaU1ljZEVIdllIZmxwdUd0Yjk4czRFendDU2Via0c3ZldUZ2I1cFczTnRLWFVWRkVMdG42V1A2MDVHMnNTamlSeUQ2Qm9CYWs2WS9BT2kzUm8xMlhVdjd2SGMvU3phdHgzNjcrZGJlbVNiMVZ0YWRjR0UwbDd5bEVtRW5Yd0daZVU1eklTVitpQ3BxaWlBVndXWmVLSzNIeE1LOUNjRDI1cVUvSWZFK01TNk1GSksvLy9pL3BrUHhxU0JlWUZGM21lTDBYbDFmL2JoeG5iTzd5eFQ0UkRmeDdWaWkrdFVNZkw0UytRcGtUbzNtay9kVklHZDdjWlZLZlBLVnpKWXQ2YTQ3QUQ1TDVzQ1k4ZXRvb2VGODhZM3lUR2h5M1ZpcWZ3MUFxMHdiVzlYRmVEcGFTQjVteFZhN0huK2V3Sk9zNkRBaCsyNWRYNmxsWE9mQ3RTWmsrcnVxSjRoWnhFejBGNmYrMlpYMXM1bHh0QW14OHJzUy9tVDBhdWRydGNhcFlJaXdkVWNhRWMySjVCSVZ2N1lJSnpONmJMNlQwY1JFK0hra2wveXVXWUFVUWN3aVpxSi9KaHgva0psRkdUVGJHZ0V2QTRnNCtMb0NMeEtFd1gzRFNscHI0OHFFQ0ZNcXV5bUNsQTJWdVk1cHZlMHlnSHhUQnVEam8vY2lRZnI5WjdvN1draVlDdGhVQkRHMzdzdnFuV21LNzh2TUw0THQzOG9zeXlISm5UeExFS0NQdEdLVG1WZzhSUkRKaTZmLy9Ub1VlNG9KaDlxZzJoVXFQVXdROGRsdEttdS9Jb2prSlpmVDR3ZVZ3TTlKVnVzcWRWNG1DSU5YOXcwZm9aZDdIMGdSUlBMU1Mrc3hVUk5ESkYzemJmTXlRY1Nra01HeFNFY3FWYzRFS1lLVWcxS1pmWlpPbUR5aXRydCt0WVNVUkdWYXJFNDNyeE1Fd01QUmZMS3MzVVZGRUlscmJDaThYdlgvQW52d0hPU1QwMHp2OVE2dkgxM09hNVlpaUVTQ3BNUHg3NEs1b3Zna2lXN1lyc3I3QkJGYnZ2emxhQ0VsaXI1dXN5bUNESWFRaWIrMzYyMi9JZERaSmtRODJkVWZCS0dyb29YRTFZTk5nQ0xJWUFpWitIdTdIdnR2R2dKWFhQMUFFQVk5MVp4UEhEN1k5Q3FDRElhUWliOW53dkZIaDBEMkVCOThnL1FISWI3ZGxHOFlPOWlGTkVVUUV3UVlyR3RhajkwTDRKVEIrbm45NzM1NGdoRElDRENQMFF2SnQ3YzFING9nRWxlcnBMU29FajJ5UjVVZkNDS1FZY2FCellXa3FNZTQxYVlJSW5FTnJRaE5PMDBqN1JNWG1TU3FkNDBxdnhDRW1FNGNMTGV2SW9qRVpkZmVHTitOTlBaOXZSRy9FQVNFeTZLNTVFL1ZFMFFpQ2JhbFNpUnJ5K3FMY3d3ME9tU3lLbWI4UWhBQy96S1NUMTJnQ09MZ01zcm9iVGN5NkdJSFRUcHV5aThFQWVqK2FENGhFbWlvYnhDblZsRk9qeldXK3ZORW1jNWE0cFNMbHUzNGhTRE1lTFM1a054bWFsYjFEV0o1dVh4YVFidmU5Z3NDaVd5UHZteCtJUWd4SG8wb2dqaS9ScmNrY0tPL0FOQ2R0MjYvUlVVUSt6SDJ2WVYwcU8xZ0VJa005QUcvRGRZdkJBRndYelNmUEZWOWcxUnBoUTVVa2IyelN1WnRNK3NYZ3BTVENraDlnOWkyakxZb1RvZmo1NEpabENMd0U5Ynpvdm5ra1ZhZ1MrdHRDd0NxYWlGVkEzeDVTejYxelh4aWZwbzBLL05scSt4QVpkay93TGxVbTdhT2g4RXZOK2RUKzFzeGt0Wmpyd0xZeDRvT3E3SUcwK2t0aFlTWWw2MDJSUkNyS0pjcHY3eHhpaDRJQkc4RG82MU1rYTExRTRuUHdoWjFXQlh2TFJYNzlOWlZUNGpyeGFiYnF1YnBZemIxbGZLYjg0YlZtQmFXS0ZBeStMRFdqdFRUaWlBU1FiV3FLcTIzVFdGb2x4TDRFQUJhbWZwNkFNdzN5TGcxWUFTYW1QaWVhcit5TWVIMzBWenlEQUpFbVlheUd3T1UyUkwxdk0wRHVySVZXdWhJV3MzNFNQYXhWWW9nRmtDMFN6UWJuajZldVRUVkVFOFVvdDBJMkpIQmRRUmlBcm9NWUEwQnIydUVKRlB4cVk5cVhQQytaOWVrMTNhdUZ2M3Q4czJFM21jTmc2L1hhdkJLMTRaUzE3Yms2a1lPR3g0c0dudVhtQzhsNEFnVE51enErbjd2OElaZEI3dVhybDZ4N0lMZnBONytvcHVSbDJwNmEwZnc3R1d6aTdNQVkyc3EwbnJiTXdCTk5tbkN6dTRsQUlOVmxoV3ZVMjdhOG40Mm1rOE9pcUVpaUozTHhpYmRHVDErTllPdnRFbjlrRkRMd0xYTitlU2dHQ3FDZUhBNURCeENMdktnNis1eG1YbHl0SkI2ZGpDSEZFRUdROGlGZi8rL1hhWTBESzhQL28yQTdWem9uaGRjK3FDaEovQ0YwYXZuYmZPN1NReEVFY1FMMC9rWlBxYjEyRndBTXp6cWZsWGRMaWRJOFNNSEZVR3FPbFdWRzgrRTJvNW5vb2NxMXpCMEpVblRqbzFrNTg4cEJ3RkZrSEpRY21FZkVUSE1KZXBVcjFtbUorZmRJSGVOMHd1TE5wVWpxUWhTRGtvdTdlTm8yV2VYWW1EYUxjWXQwVUx5d25MbEZFSEtSY3FGL2RwRHNiMkpJS3JiVnF1Sk10Q3pBWHBPSS9yYnRweGdMdTBJMEdFTXpBUXd2RW9PbDBnTHRrYXljelBsMmxjRUtSY3BsL1pMaDJKUG9SclZyQmpaRWhueDF2eUNGV2FnV2E1UGE5R2dQVVpBaXhrNUdYMlorS0htWE9wRU03b1VRY3lnNWNLK21hYTJROW5vdjVqbGJDdnpIT0d6bk1ycHNhK1ZnRUhQSUNRUGlEWENYazI1NUJ0bTlDcUNtRUhMcFgzVGVtd2hnQ2xPdWNkQXZqbWZiQkxKQ1N1eE9SQ3dtSFgwU2pMamdXZ2hlYkpaZnhWQnpDTG13djdweHFsZmdoWVE5ZExMalE2Mk5Bb0N2UkRKSnc2eW9xUmRiM3VlUUpPczZEQWgyMVV5QWw5czdaaVhOeUhUMzFVUnhDeGlMdTJmMW1NM0FTaDdkOGJLTUJqSURUeEJLbExUL3dRSng5SmdpS2VRL2EyTURJcGJjMElSeFA3cGNjVEMyN3RNYWRoUUgzemRzY3RVaHZhVmFNZjhQMWN5dUhZOTlqVnk3aHZrdGM1ODEvNkhZRkd4RWw4VlFTcEJ6YVV5N1hyc0NBTEU5NGdUODdxY3ROS01TSFpoMlZ1bUFyWnNPTlpzR0VpQ0hIaDZFSW93K0tCeVNxMnBKNGhMRjdWc3Q5cjF0bXNKZExsc3ZWdlJ0d21nUnd3WXo5SWc1eUF3c0NNUkRnTndMSUI2Si94ajV1ODNGMUkzV0xIbHhDK05GZitVckVrRXhQdDlWby9OWXlCdVV0UlgzWmw1VG5NaEpjaG9xU21DV0lMUG5jTFo4T0VqRGE0VjV3eDd1ZE5EZTcxaTRDL2RYY1ZKZTYxNWZLTlZTNG9nVmhGMHFYdytOQzFVSk8xNUFHTmQ2cUpkYm5VZ3dKT2ltVlNuREFPS0lESlFkS21PRmZyMHZUUVlUd0RZeWFVdXluYnJIUVFDaDBZejg1YktVcXdJSWd0SmwrcEpON2J0QTQyU0FIWjFxWXVTM09KM1lHQmF0Q01sTlhoVEVVVFM5TGhaVFU2ZjFsS0NsbkkwdE1OUlFDakRCbzVzN2tpOEtkdXNJb2hzUkYycWI4WFk2V09veG5pVUFFc3BROTF2UEZoQUFBQUNOMGxFUVZRMlBBS2VEeHFsNDBNZEM3Y1pibCtwMzRvZ2xTTG5RYmw4YUhKZFNhdS9neG1uZTlEOVQ3dk1kRGVDeHJuUlRFcGtuclNsS1lMWUFxdTdsYWIxMkhrRTNNalZ1N2hrRmFBTkFNNkw1cFAzV1ZVMG1Md2l5R0FJK2ZUdm1hYjRGOW5nWHdQNHFzZUcrSGlSalcvdFZsaFFjTUp2UlJBblVIYXBqUzJuN3ZIekFiNkdnWkV1ZFhPTFc0UzNpUG15U0Q0bEVsODcxaFJCSElQYXZZYVdobUs3MWhKZERSaW5WN3Nrd1dlZ3RKYkJ0M1ozbFc2V2NUSnVkaFlVUWN3aTV1UCs2WEZ0VFFpU3VGTWlQdUlkQ1NqY0JweHZNK2hYTlZ4em0xNzQwN3Bxd2E0SVVpM2tYV3gzUmZPTUhiVmk2UlFBWjRJeHdVRlhSVWI3Rnd6bTIxZWorN0ZEeXN4ZFphZC9paUIyb3VzRDNTSzFFRFErUVdPS01iQWJnS0RrWVluOHVDOFQ2SkVlb3NkMno4MWZLVm0vSlhXS0lKYmdHMXJDbWFZcE83TlJjNkRHZkdDSnNKOEdOS08vOEU5L25xdHRyaVVDR1FhNG00QTFBTjRBZURHRFhqQnFnNisxcnBncnRtMWQyUlJCWERrdDNuRktaSnB2R0lGUlJpbTRBd2piRTdnTzBPckFUQVp6YnlDSUR3QnRmYkUzc0RZd3JPODlPdy8xN0VCTkVjUU9WSlZPM3lDZ0NPS2JxVlFEc1FNQlJSQTdVRlU2ZllPQUlvaHZwbElOeEE0RUZFSHNRRlhwOUEwQ2lpQyttVW8xRURzUVVBU3hBMVdsMHpjSUtJTDRaaXJWUU94QVFCSEVEbFNWVHQ4Z29BamltNmxVQTdFREFVVVFPMUJWT24yRGdDS0liNlpTRGNRT0JCUkI3RUJWNmZRTkFvb2d2cGxLTlJBN0VGQUVzUU5WcGRNM0NDaUMrR1lxMVVEc1FPRC9BYk1acm01TFdDOU9BQUFBQUVsRlRrU3VRbUNDIi8+CjwvZGVmcz4KPC9zdmc+", Zi = { class: "stream-userInfo" }, Fi = { class: "nickname" }, Yi = { key: 0 }, Xi = {
options: {
virtualHost: !0
}
}, qi = /* @__PURE__ */ f({
...Xi,
__name: "StreamInfoPC",
props: Ut,
setup(a) {
return (A, e) => (d(), U(ne, null, {
default: E(() => [
C(yA, {
span: 12,
justify: "start",
align: "center"
}, {
default: E(() => [
L("div", Zi, [
C(Ya, {
class: "mic-volume",
"is-muted": A.isMuted,
volume: A.volume
}, null, 8, ["is-muted", "volume"]),
L("div", Fi, [
C(gA, {
color: "#fff",
truncated: !0,
width: "80px",
size: "14px"
}, {
default: E(() => [
NA(W(A.nickName), 1)
]),
_: 1
}),
sA(C(gA, {
color: "#fff",
size: "14px"
}, {
default: E(() => [
NA(W(l(v)("me")), 1)
]),
_: 1
}, 512), [
[cA, A.isSelf]
])
])
])
]),
_: 1
}),
C(yA, {
span: 12,
justify: "center"
}, {
default: E(() => [
A.showNetWorkStatus ? (d(), y("div", Yi, [
C(LA, {
width: "24px",
height: "24px",
src: l(Ka)
}, null, 8, ["src"])
])) : z("", !0)
]),
_: 1
})
]),
_: 1
}));
}
});
const Ji = /* @__PURE__ */ Z(qi, [["__scopeId", "data-v-4a815645"]]), Hi = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjBfZF8xMjRfNjQ3KSI+CjxjaXJjbGUgY3g9IjE0IiBjeT0iMTQiIHI9IjEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTUuODEyMiAyMi41MzgyQzE1LjgxMjIgMjIuNTM4MiAxNS44MTIzIDIyLjUzODEgMTUuODEyMyAyMi41MzgxQzIwLjUyNzggMTcuODIyNiAyMC41Mjc4IDEwLjE3NzIgMTUuODEyNCA1LjQ2MTY3TDE0LjA0NDYgNy4yMjk0NEMxNy43ODM4IDEwLjk2ODcgMTcuNzgzNyAxNy4wMzExIDE0LjA0NDUgMjAuNzcwNEMxNC4wNDQ1IDIwLjc3MDQgMTQuMDQ0NSAyMC43NzA0IDE0LjA0NDUgMjAuNzcwNEwxNS44MTIyIDIyLjUzODJaIiBmaWxsPSIjMUM2NkU1Ii8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTIuMTg3OSAxOS4xMzU2QzEyLjE4NzkgMTkuMTM1NiAxMi4xODc5IDE5LjEzNTYgMTIuMTg4IDE5LjEzNTVDMTUuMDI0NiAxNi4yOTg5IDE1LjAyNDcgMTEuNjk5OCAxMi4xODgxIDguODYzMDRMMTAuNDIwMyAxMC42MzA4QzEyLjI4MDYgMTIuNDkxMiAxMi4yODA1IDE1LjUwNzQgMTAuNDIwMiAxNy4zNjc4QzEwLjQyMDIgMTcuMzY3OCAxMC40MjAxIDE3LjM2NzggMTAuNDIwMSAxNy4zNjc4TDEyLjE4NzkgMTkuMTM1NloiIGZpbGw9IiMxQzY2RTUiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjEyMTQ0IDE2LjA2OTJDMTAuMjY0NCAxNC45MjYgMTAuMjY0MyAxMy4wNzI4IDkuMTIxMjggMTEuOTI5OEM5LjEyMTI2IDExLjkyOTcgOS4xMjEyNCAxMS45Mjk3IDkuMTIxMjIgMTEuOTI5N0w3LjEwMjk4IDEzLjk0NzlDNy4xMDMgMTMuOTQ3OSA3LjEwMzAyIDEzLjk0OCA3LjEwMzA0IDEzLjk0OEM3LjEzMTQ2IDEzLjk3NjQgNy4xMzE1MSAxNC4wMjI0IDcuMTAzMiAxNC4wNTA5TDkuMTIxNDQgMTYuMDY5MloiIGZpbGw9IiMxQzY2RTUiLz4KPGRlZnM+CjxmaWx0ZXIgaWQ9ImZpbHRlcjBfZF8xMjRfNjQ3IiB4PSIwIiB5PSIwIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj4KPGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz4KPGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMTI3IDAiIHJlc3VsdD0iaGFyZEFscGhhIi8+CjxmZU9mZnNldC8+CjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjEiLz4KPGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0ib3V0Ii8+CjxmZUNvbG9yTWF0cml4IHR5cGU9Im1hdHJpeCIgdmFsdWVzPSIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLjI1IDAiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJlZmZlY3QxX2Ryb3BTaGFkb3dfMTI0XzY0NyIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImVmZmVjdDFfZHJvcFNoYWRvd18xMjRfNjQ3IiByZXN1bHQ9InNoYXBlIi8+CjwvZmlsdGVyPgo8L2RlZnM+Cjwvc3ZnPgo=", Ki = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjBfZF8xNzQxXzEwNjc4KSI+CjxjaXJjbGUgY3g9IjE0IiBjeT0iMTQiIHI9IjEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2c+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTAuNjY2NyAxMC4wMDAxQzEwLjY2NjcgOC4xNTkxMyAxMi4xNTkgNi42NjY3NSAxNCA2LjY2Njc1QzE1LjA1MzggNi42NjY3NSAxNS45OTM0IDcuMTU1NzQgMTYuNjA0MiA3LjkxOTJMMTAuNzMyIDE0Ljk5MzRDMTAuNjg5MSAxNC43ODAxIDEwLjY2NjcgMTQuNTU5NCAxMC42NjY3IDE0LjMzMzRWMTAuMDAwMVpNOS42Mjk3NSAxNi4zMjEyQzkuMzUzNzUgMTUuNzE1NSA5LjIgMTUuMDQyMyA5LjIgMTQuMzMzMlYxMy4zMzMySDguMTMzMzNWMTQuMzMzMkM4LjEzMzMzIDE1LjM4MDMgOC40MDc2NiAxNi4zNjM0IDguODg4MzYgMTcuMjE0NEw5LjYyOTc1IDE2LjMyMTJaTTEwLjkxMyAxOS4zMjNMMTEuNjAyNSAxOC40OTI1QzEyLjMwNzkgMTguOSAxMy4xMjY3IDE5LjEzMzIgMTQgMTkuMTMzMkMxNi42NTEgMTkuMTMzMiAxOC44IDE2Ljk4NDIgMTguOCAxNC4zMzMyVjEzLjMzMzJIMTkuODY2N1YxNC4zMzMyQzE5Ljg2NjcgMTcuMzkzNSAxNy41MjM1IDE5LjkwNjUgMTQuNTMzMyAyMC4xNzZWMjIuMDAwMUgxMy40NjY3VjIwLjE3NkMxMi41MzU3IDIwLjA5MjEgMTEuNjY3NCAxOS43OTA3IDEwLjkxMyAxOS4zMjNaTTEyLjU1OTEgMTcuMzQwMUwxNy4zMzMzIDExLjU4ODZWMTQuMzMzNEMxNy4zMzMzIDE2LjE3NDQgMTUuODQwOSAxNy42NjY3IDE0IDE3LjY2NjdDMTMuNDgzOSAxNy42NjY3IDEyLjk5NTIgMTcuNTQ5NSAxMi41NTkxIDE3LjM0MDFaIiBmaWxsPSIjRTYzOTVDIi8+CjxwYXRoIGQ9Ik05LjQyMzQgMTguODQ0N0wxNy43ODM0IDguNzc4MjciIHN0cm9rZT0iI0U2Mzk1QyIgc3Ryb2tlLXdpZHRoPSIxLjA2NjY3IiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxkZWZzPgo8ZmlsdGVyIGlkPSJmaWx0ZXIwX2RfMTc0MV8xMDY3OCIgeD0iMCIgeT0iMCIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4IiBmaWx0ZXJVbml0cz0idXNlclNwYWNlT25Vc2UiIGNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycz0ic1JHQiI+CjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+CjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPgo8ZmVPZmZzZXQvPgo8ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIxIi8+CjxmZUNvbXBvc2l0ZSBpbjI9ImhhcmRBbHBoYSIgb3BlcmF0b3I9Im91dCIvPgo8ZmVDb2xvck1hdHJpeCB0eXBlPSJtYXRyaXgiIHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4yNSAwIi8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0iZWZmZWN0MV9kcm9wU2hhZG93XzE3NDFfMTA2NzgiLz4KPGZlQmxlbmQgbW9kZT0ibm9ybWFsIiBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3dfMTc0MV8xMDY3OCIgcmVzdWx0PSJzaGFwZSIvPgo8L2ZpbHRlcj4KPC9kZWZzPgo8L3N2Zz4K", _i = { key: 0 }, $i = {
options: {
virtualHost: !0
}
}, As = /* @__PURE__ */ f({
...$i,
__name: "StreamInfoMobile",
props: Ut,
setup(a) {
const { enableVirtualBackground: A } = G(rA()), e = async () => {
await Q.switchCamera();
}, t = async () => {
await Q.setBlurBackground(!A.value);
};
return (o, n) => (d(), U(ne, { "custom-style": { padding: "2px 5px" } }, {
default: E(() => [
C(yA, {
span: 12,
justify: "start",
align: "center"
}, {
default: E(() => [
o.showNickName ? (d(), U(gA, {
key: 0,
width: "100px",
truncated: !0,
color: "#FFF"
}, {
default: E(() => [
NA(W(o.nickName), 1)
]),
_: 1
})) : z("", !0),
sA(L("div", null, [
C(De, {
size: 24,
src: l(Hi)
}, null, 8, ["src"])
], 512), [
[cA, !o.isMuted && o.volume]
]),
sA(L("div", null, [
C(De, {
size: 24,
src: l(Ki)
}, null, 8, ["src"])
], 512), [
[cA, o.isMuted]
])
]),
_: 1
}),
C(yA, {
span: 12,
justify: "end",
align: "center"
}, {
default: E(() => [
o.showNetWorkStatus ? (d(), y("div", _i, [
C(LA, {
width: "24px",
height: "24px",
src: l(Ka)
}, null, 8, ["src"])
])) : z("", !0),
o.showSwitchCameraButton ? (d(), y("div", {
key: 1,
class: "switch-camera stream-icon",
onClick: pe(e, ["stop"])
}, [
C(LA, {
width: "15px",
height: "15px",
src: l(JA)
}, null, 8, ["src"])
])) : z("", !0),
o.showVirtualBackgroundButton ? (d(), y("div", {
key: 2,
class: "stream-icon",
onClick: pe(t, ["stop"])
}, [
C(LA, {
width: "15px",
height: "15px",
src: l(KA)
}, null, 8, ["src"])
])) : z("", !0)
]),
_: 1
})
]),
_: 1
}));
}
});
const es = /* @__PURE__ */ Z(As, [["__scopeId", "data-v-04a5fe7d"]]), ts = {
options: {
virtualHost: !0
}
}, $e = /* @__PURE__ */ f({
...ts,
__name: "TKStreamInfo",
props: Ut,
setup(a) {
const { isGroupCall: A } = rA(), e = V.isPC;
return (t, o) => (d(), y("div", null, [
l(e) ? (d(), U(Ji, {
key: 0,
nickName: t.nickName,
isSelf: t.isSelf,
isMuted: t.isMuted,
volume: t.volume,
showNetWorkStatus: t.showNetWorkStatus
}, null, 8, ["nickName", "isSelf", "isMuted", "volume", "showNetWorkStatus"])) : z("", !0),
l(A) && !l(e) ? (d(), U(es, {
key: 1,
showSwitchCameraButton: t.showSwitchCameraButton,
showVirtualBackgroundButton: t.showVirtualBackgroundButton,
showNetWorkStatus: t.showNetWorkStatus,
nickName: t.nickName,
showNickName: t.showNickName,
isSelf: t.isSelf,
isMuted: t.isMuted,
volume: t.volume
}, null, 8, ["showSwitchCameraButton", "showVirtualBackgroundButton", "showNetWorkStatus", "nickName", "showNickName", "isSelf", "isMuted", "volume"])) : z("", !0)
]));
}
}), as = {
show: {
type: Boolean,
default: !0
},
domId: {
type: String
},
loading: {
type: Boolean
},
showStreamInfo: {
type: Boolean
},
showAudioStream: {
type: Boolean
}
}, os = ["id"], ls = { class: "audio-stream-container" }, ns = {
options: {
virtualHost: !0
}
}, is = /* @__PURE__ */ f({
...ns,
__name: "Pusher",
props: as,
setup(a) {
const A = p(g.getData(u.CALL, i.PUSHER_ID)), e = iA([
"stream-info-container",
{ mobile: !V.isPC }
]), t = (n) => {
A.value = n;
}, o = {
[i.PUSHER_ID]: t
};
return CA(() => {
g.watch(u.CALL, o, { notifyRangeWhenWatch: i.MYSELF });
}), DA(() => {
g.unwatch(u.CALL, o);
}), (n, s) => sA((d(), y("div", {
id: n.domId,
class: "pusher-container"
}, [
sA(L("div", ls, [
q(n.$slots, "audio-stream", {}, void 0, !0)
], 512), [
[cA, n.showAudioStream]
]),
q(n.$slots, "loading", {}, void 0, !0),
L("div", {
class: k(l(e))
}, [
q(n.$slots, "stream-info", {}, void 0, !0)
], 2)
], 8, os)), [
[cA, n.show]
]);
}
});
const _a = /* @__PURE__ */ Z(is, [["__scopeId", "data-v-8cf5d7b3"]]), ss = {
options: {
virtualHost: !0
}
}, cs = /* @__PURE__ */ f({
...ss,
__name: "weChatPlayer",
props: {
remoteClass: {
type: String,
required: !0
},
domId: {
type: String
}
},
setup(a) {
const A = p(g.getData(u.CALL, i.PLAYER)), e = p(g.getData(u.CALL, i.CALL_STATUS)), t = p(g.getData(u.CALL, i.IS_EAR_PHONE) ? je.EAR : je.SPEAKER), o = a, n = (h) => {
A.value = JSON.parse(JSON.stringify(h));
}, s = S(() => {
var h;
return (h = A.value) == null ? void 0 : h.find((j) => (j == null ? void 0 : j.userID) === o.domId);
}), r = (h) => {
e.value = h;
}, c = (h) => {
t.value = h ? je.EAR : je.SPEAKER;
}, M = {
[i.PLAYER]: n,
[i.CALL_STATUS]: r,
[i.IS_EAR_PHONE]: c
};
CA(() => {
g.watch(u.CALL, M, { notifyRangeWhenWatch: i.MYSELF });
}), DA(() => {
g.unwatch(u.CALL, M);
});
function N(h) {
Q._tuiCallEngine._playerStateChange(h);
}
function T(h) {
}
function I(h) {
Q._tuiCallEngine._playNetStatus(h);
}
function D(h) {
Q._tuiCallEngine._playerAudioVolumeNotify(h);
}
return (h, j) => {
const m = ea("live-player");
return d(), y("div", {
class: k(a.remoteClass)
}, [
l(s) && (l(s).hasAudio || l(s).hasVideo) ? (d(), U(m, {
key: 0,
class: "stream",
id: l(s).id,
"data-userid": l(s).userID,
"data-streamid": l(s).streamID,
"data-streamtype": l(s).streamType,
src: l(s).src,
mode: "RTC",
autoplay: l(s).autoplay,
"mute-audio": l(s).muteAudio,
"mute-video": l(s).muteVideo,
orientation: l(s).orientation,
"object-fit": l(s).objectFit,
"background-mute": l(s).enableBackgroundMute,
"min-cache": l(s).minCache,
"max-cache": l(s).maxCache,
"sound-mode": l(t),
"enable-recv-message": l(s).enableRecvMessage,
"auto-pause-if-navigate": l(s).autoPauseIfNavigate,
"auto-pause-if-open-native": l(s).autoPauseIfOpenNative,
onStatechange: N,
onFullscreenchange: T,
onNetstatus: I,
onAudiovolumenotify: D
}, null, 8, ["id", "data-userid", "data-streamid", "data-streamtype", "src", "autoplay", "mute-audio", "mute-video", "orientation", "object-fit", "background-mute", "min-cache", "max-cache", "sound-mode", "enable-recv-message", "auto-pause-if-navigate", "auto-pause-if-open-native"])) : z("", !0)
], 2);
};
}
});
const rs = /* @__PURE__ */ Z(cs, [["__scopeId", "data-v-b0aae39e"]]), us = {
show: {
type: Boolean,
default: !0
},
domId: {
type: String
},
loading: {
type: Boolean
},
showStreamInfo: {
type: Boolean
},
showAudioStream: {
type: Boolean
}
}, Ms = ["id"], ds = { class: "audio-stream-container" }, Is = {
options: {
virtualHost: !0
}
}, Ns = /* @__PURE__ */ f({
...Is,
__name: "Player",
props: us,
setup(a) {
const A = iA([
"stream-info-container",
{ mobile: !V.isPC }
]);
return (e, t) => sA((d(), y("div", {
id: e.domId,
class: "player-container"
}, [
sA(L("div", ds, [
q(e.$slots, "audio-stream", {}, void 0, !0)
], 512), [
[cA, e.showAudioStream]
]),
q(e.$slots, "loading", {}, void 0, !0),
L("div", {
class: k(l(A))
}, [
q(e.$slots, "stream-info", {}, void 0, !0)
], 2),
l(V).isWeChat ? (d(), U(rs, {
key: 0,
"dom-id": e.domId,
remoteClass: "small-view"
}, null, 8, ["dom-id"])) : z("", !0)
], 8, Ms)), [
[cA, e.show]
]);
}
});
const $a = /* @__PURE__ */ Z(Ns, [["__scopeId", "data-v-8e509e0d"]]), gs = {
avatar: {
type: String
},
username: {
type: String
},
isVideoAvailable: {
type: Boolean
},
showStreamInfo: {
type: Boolean
},
isSmallWindow: {
type: Boolean,
default: !1
},
isMuted: {
type: Boolean,
default: !0
},
volume: {
type: Number,
default: 0
},
userId: {
type: String
}
}, Ts = {
options: {
virtualHost: !0
}
}, At = /* @__PURE__ */ f({
...Ts,
__name: "AudioStream",
props: gs,
setup(a) {
const A = a, e = fa(), { callType: t, isGroupCall: o } = G(rA()), { isFloatWindow: n } = G(BA()), s = S(() => !o.value && !V.isPC), r = S(() => o.value ? V.isPC : t.value === _.AUDIO), c = S(() => !o.value && V.isPC && t.value === _.AUDIO), M = S(() => ({ zIndex: 1 })), N = S(() => e.value[A.userId] || A.avatar), T = p(!e.value[A.userId]), I = p(e.value[A.userId] ? "fill" : "cover");
uA([() => A.userId, e], () => {
e.value[A.userId] ? (I.value = "fill", T.value = !1) : (I.value = "cover", T.value = !0);
}, {
immediate: !0
});
const D = () => {
T.value = !0, I.value = "cover";
};
return (h, j) => (d(), U(Xa, {
avatar: h.avatar,
"bg-image": l(N),
"show-avatar": l(s),
username: h.username,
"show-user-name": l(r),
"show-mask": !l(o) && l(T),
fit: l(I),
blur: !l(o),
"show-mic-volume": l(c),
"show-tip": !l(o) && !l(n),
"custom-style": l(M),
"is-small-window": h.isSmallWindow,
"is-muted": h.isMuted,
volume: h.volume,
"bg-color": "rgba(0, 0, 0, 0.5)",
onError: D
}, null, 8, ["avatar", "bg-image", "show-avatar", "username", "show-user-name", "show-mask", "fit", "blur", "show-mic-volume", "show-tip", "custom-style", "is-small-window", "is-muted", "volume"]));
}
}), ps = "data:image/svg+xml;base64,IDxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICAgICAgPHBhdGggZD0iTTE4LjQ0MzcgMTIuNDQ5QzE4LjQ0MzcgMTQuMTE0MiAxOC4yMzM2IDE1LjM1MTUgMjEuNTA4OSAxNS43MTI2QzI0Ljc4NzUgMTYuMDczNyAyNC4zNjY2IDEzLjY3OTQgMjQuMzY2MiAxMi4wNjY5QzI0LjM2NDkgMTAuMjA2MSAyMC4wNjAyIDcuNjE4OTUgMTMuMjcyNiA3LjYxNzNDNi40ODY2MiA3LjYxNzM1IDIuMTc4OSAxMC4yMDUgMi4xNzg4OCAxMi4wNjdDMi4xNzg4NyAxMy42OCAxLjc1NjIxIDE2LjA3MjYgNS4wMzMxNSAxNS43MTIzQzguMzEwMDkgMTUuMzUzNyA4LjEwMDA1IDE0LjExNTUgOC4wOTgzNyAxMi40NDk1QzguMTAxMzQgMTEuMjg2MiAxMC43NTg3IDExLjAzMTYgMTMuMjcyNSAxMS4wMjk4QzE1Ljc4NjMgMTEuMDI4MSAxOC40NDU0IDExLjI4NDQgMTguNDQzNyAxMi40NDlaIiBmaWxsPSIjRkUzQzQ0Ii8+CiAgICA8L3N2Zz4=", Ds = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik02LjY2NjY2IDQuMTY2NjhDNi42NjY2NiAyLjMyODM0IDguMTYxNjYgMC44MzMzNDQgOS45OTk5OSAwLjgzMzM0NEMxMS44MzgzIDAuODMzMzQ0IDEzLjMzMzMgMi4zMjgzNCAxMy4zMzMzIDQuMTY2NjhWOS4xNjY2OEMxMy4zMzMzIDExLjAwNSAxMS44MzgzIDEyLjUgOS45OTk5OSAxMi41QzguMTYxNjYgMTIuNSA2LjY2NjY2IDExLjAwNSA2LjY2NjY2IDkuMTY2NjhWNC4xNjY2OFpNNi42NjY2NiAxOC4zMzMzQzYuNjY2NjYgMTcuODcyNSA3LjAzOTk5IDE3LjUgNy40OTk5OSAxNy41SDEyLjVDMTIuOTYwOCAxNy41IDEzLjMzMzMgMTcuODcyNSAxMy4zMzMzIDE4LjMzMzNDMTMuMzMzMyAxOC43OTQyIDEyLjk2MDggMTkuMTY2NyAxMi41IDE5LjE2NjdINy40OTk5OUM3LjAzOTk5IDE5LjE2NjcgNi42NjY2NiAxOC43OTQyIDYuNjY2NjYgMTguMzMzM1oiIGZpbGw9IiMxMDE0MTkiLz4KPHBhdGggZD0iTTE1LjgzMzMgOC4zNTEyVjkuNTA4MjVDMTUuODMzMyAxMi4wODEgMTMuMjIxNyAxNSA5Ljk5OTk5IDE1QzYuNzc4MzMgMTUgNC4xNjY2NiAxMi4wODEgNC4xNjY2NiA5LjUwODI1VjguMzMzMzQiIHN0cm9rZT0iIzEwMTQxOSIgc3Ryb2tlLXdpZHRoPSIxLjY2NjY3IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4KPC9zdmc+", ys = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAxNSAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC42MjQ3IDAuNzE5MTY4QzE0LjE5MzQgMC4zNzQxNTggMTMuNTY0MSAwLjQ0NDA4IDEzLjIxOTEgMC44NzUzNDJMMTAuODE2OCAzLjgzMjAzQzEwLjE3ODkgMy4wMjQ1NSA5LjE1Mzg3IDIuNTAwMDQgOC4wMDAwMSAyLjUwMDA0QzYuMDY5NzYgMi41MDAwNCA0LjUwMDAxIDMuOTY3ODUgNC41MDAwMSA1Ljc3Mjc2VjEwLjY4MTlDNC41MDAwMSAxMC45NTYzIDQuNTM2MyAxMS4yMjI5IDQuNjA0NjMgMTEuNDc3OEwzLjM4OCAxMi45NzUyQzIuOTg0NDkgMTIuMzQzMyAyLjc1MDAxIDExLjY1MjIgMi43NTAwMSAxMC45NzE3VjkuODE4MTlMMi43NDMxOSA5LjcxNTU2QzIuNjg5MiA5LjMxMjEzIDIuMzIxMDggOS4wMDAwMSAxLjg3NTAxIDkuMDAwMDFDMS4zOTE3NiA5LjAwMDAxIDEuMDAwMDEgOS4zNjYzMiAxLjAwMDAxIDkuODE4MTlWMTAuOTcxN0wxLjAwNDY2IDExLjE3NjFDMS4wNTU1NyAxMi4yOTY4IDEuNTIxNjEgMTMuNDAxNiAyLjI2OTM5IDE0LjM1MTlMMC4yMTkxMzcgMTYuODc1M0wwLjE0Njg2MSAxNi45NzgyQy0wLjExMjk3NyAxNy40MDE3IC0wLjAyMjc3NjcgMTcuOTYyNCAwLjM3NTMxMSAxOC4yODA5QzAuODA2NTczIDE4LjYyNTkgMS40MzU4NyAxOC41NTYgMS43ODA4OCAxOC4xMjQ3TDMuNzE2NjEgMTUuNzQyM0MzLjcxODQ5IDE1Ljc0MzcgMy43MjAzOCAxNS43NDUgMy43MjIyNyAxNS43NDY0TDQuMjk5NyAxNS4wMjQ2TDguMjgwODggMTAuMTI0N0wxNC43ODA5IDIuMTI0NzNMMTQuODUzMiAyLjAyMTkxQzE1LjExMyAxLjU5ODM0IDE1LjAyMjggMS4wMzc2NCAxNC42MjQ3IDAuNzE5MTY4Wk03LjcyNDk5IDEzLjk0NDZMMTEuNSA5LjIyNTgyVjEwLjY4MTlDMTEuNSAxMi40ODY4IDkuOTMwMjYgMTMuOTU0NiA4LjAwMDAxIDEzLjk1NDZDNy45MDc0NiAxMy45NTQ2IDcuODE1NzUgMTMuOTUxMiA3LjcyNDk5IDEzLjk0NDZaTTYuNjA0NDUgMTUuMzQ1M0w1LjUwNzk4IDE2LjcxNTlDNi4yOTIyNSAxNy4wMTM2IDcuMTM1MzIgMTcuMTgxOCA4LjAwMDAxIDE3LjE4MThDMTEuNjk3NiAxNy4xODE4IDE1IDE0LjEwNjQgMTUgMTAuOTcxN1Y5LjgzNTcyTDE0Ljk5MzIgOS43MzMwOUMxNC45MzkyIDkuMzI5NjYgMTQuNTcxMSA5LjAxNzU0IDE0LjEyNSA5LjAxNzU0QzEzLjY0MTggOS4wMTc1NCAxMy4yNSA5LjM4Mzg1IDEzLjI1IDkuODM1NzJWMTAuOTcxN0wxMy4yNDQ1IDExLjE1MjdDMTMuMTEzOCAxMy4zMjYyIDEwLjY1ODkgMTUuNTQ1NSA4LjAwMDAxIDE1LjU0NTVDNy41MjQyNCAxNS41NDU1IDcuMDU1MDEgMTUuNDc0NCA2LjYwNDQ1IDE1LjM0NTNaTTUuMzc1MDEgMTguODYzN0M0Ljg5MjAxIDE4Ljg2MzcgNC41MDAwMSAxOS4yMjk0IDQuNTAwMDEgMTkuNjgxOUM0LjUwMDAxIDIwLjEzNDMgNC44OTIwMSAyMC41IDUuMzc1MDEgMjAuNUgxMC42MjVDMTEuMTA4OSAyMC41IDExLjUgMjAuMTM0MyAxMS41IDE5LjY4MTlDMTEuNSAxOS4yMjk0IDExLjEwODkgMTguODYzNyAxMC42MjUgMTguODYzN0g1LjM3NTAxWiIgZmlsbD0iIzEwMTQxOSIvPgo8L3N2Zz4=", Cs = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yLjMzMzM3IDkuMzMzMzFIMC4zMzMzNzRWMC45OTk5OEMwLjMzMzM3NCAwLjYzMTc5IDAuNjMxODUxIDAuMzMzMzEzIDEuMDAwMDQgMC4zMzMzMTNMOS4zMzMzOCAwLjMzMzMxM1YyLjMzMzMxSDMuNzQ3NThMMTAuMDQwNSA4LjYyNjI0TDguNjI2MjcgMTAuMDQwNEwyLjMzMzM3IDMuNzQ3NTNWOS4zMzMzMVpNMTguMzMzMSAxMS4zMzMzSDIwLjMzMzFWMTkuNjY2NkMyMC4zMzMxIDIwLjAzNDggMjAuMDM0NyAyMC4zMzMzIDE5LjY2NjUgMjAuMzMzM0wxMS4zMzMxIDIwLjMzMzNMMTEuMzMzMSAxOC4zMzMzSDE2LjkxODlMMTAuNjI2IDEyLjA0MDNMMTIuMDQwMiAxMC42MjYxTDE4LjMzMzEgMTYuOTE5VjExLjMzMzNaIiBmaWxsPSIjMTAxNDE5Ii8+Cjwvc3ZnPg==", Ss = { class: "float-window-container" }, js = { class: "float-control-panel" }, hs = { class: "float-control-item-icon" }, Ls = ["src"], Es = { class: "float-control-item-icon" }, ms = ["src"], zs = ["src"], Us = { class: "float-control-item-icon" }, fs = ["src"], vs = {
options: {
virtualHost: !0
}
}, ws = /* @__PURE__ */ f({
...vs,
__name: "FloatWindow",
setup(a) {
const { localUserInfoExcludeVolume: A } = G(vA()), { callRole: e, callStatus: t } = G(rA()), { isFloatWindow: o } = G(BA());
function n() {
Q.toggleMinimize();
}
async function s() {
e.value === IA.CALLEE && t.value === P.CALLING ? await Q.reject() : await Q.hangup();
}
async function r() {
A.value.isAudioAvailable ? await Q.closeMicrophone() : await Q.openMicrophone();
}
return (c, M) => (d(), y("div", Ss, [
sA(L("div", js, [
L("div", hs, [
L("div", {
class: "float-control-item-icon-container",
onClick: s
}, [
L("img", { src: l(ps) }, null, 8, Ls)
])
]),
sA(L("div", Es, [
L("div", {
class: "float-control-item-icon-container",
onClick: r
}, [
l(A).isAudioAvailable ? (d(), y("img", {
key: 0,
src: l(Ds)
}, null, 8, ms)) : (d(), y("img", {
key: 1,
src: l(ys)
}, null, 8, zs))
])
], 512), [
[cA, l(o)]
]),
sA(L("div", Us, [
L("div", {
class: "float-control-item-icon-container",
onClick: n
}, [
L("img", { src: l(Cs) }, null, 8, fs)
])
], 512), [
[cA, l(o)]
])
], 512), [
[cA, l(o)]
]),
sA(L("div", null, [
q(c.$slots, "default", {}, void 0, !0)
], 512), [
[cA, !l(o)]
])
]));
}
});
const Os = /* @__PURE__ */ Z(ws, [["__scopeId", "data-v-63373c5d"]]), Ao = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCAyOCAyOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTAuNzYwOTYxIDkuMzMxNTRDMC4wMDEyMzUwNyA3LjEzMzcxIDAuOTYyOTY4IDQuNzczMjMgMi44MzM0NSAzLjM5MDk3QzQuMjUxNTIgMi4zNDMwNCA1LjY3NjAzIDEuMjg0NyA2LjQ4ODg5IDAuNjgwMTI0QzYuODc1MTUgMC4zOTI4MzcgNy40MTY2MSAwLjQ1NTY4IDcuNzI4NDEgMC44MjIzOTdMMTIuMTU4IDYuMDMyMTRDMTIuNDQ3NiA2LjM3Mjc1IDEyLjQ0NzcgNi44NzI5NSAxMi4xNTgzIDcuMjEzNzNMOS40NDIyIDEwLjQxMTlDOS4xOTQ5NiAxMC43MDMxIDkuMTUzNzggMTEuMTE4MyA5LjM0OTI1IDExLjQ0NjVDMTAuMjI5MyAxMi45MjM4IDExLjE5NSAxNC4xODkxIDEyLjUgMTUuNDkzOEMxMy44MTI3IDE2LjgwNiAxNS4wNzc4IDE3Ljc1MjkgMTYuNTYzNSAxOC42MzA4QzE2Ljg5MTkgMTguODI0OCAxNy4zMDY1IDE4Ljc4MzYgMTcuNTk3NCAxOC41MzY4TDIwLjc4MjYgMTUuODM1MUMyMS4xMjM0IDE1LjU0NTkgMjEuNjIzNyAxNS41NDYxIDIxLjk2NDMgMTUuODM1NkwyNy4xNzgzIDIwLjI2NjJDMjcuNTQ0MSAyMC41NzcgMjcuNjA2NiAyMS4xMTc5IDI3LjMyMTMgMjEuNTAzOEwyNC41OTM3IDI1LjE5MzZDMjMuMjIyNSAyNy4wNDg2IDIwLjg4MDQgMjcuOTkxOSAxOC42OTg3IDI3LjI0MTNDMTQuNjY1OCAyNS44NTM4IDEwLjg3ODEgMjMuNTUxMSA3LjY1OTIyIDIwLjMzMzFDNC40NDk1NyAxNy4xMjQ0IDIuMTUwMTUgMTMuMzUwMyAwLjc2MDk2MSA5LjMzMTU0WiIgZmlsbD0iIzEyQjk2OSIvPgo8L3N2Zz4K", Vs = { class: "float-window-tip-container" }, bs = {
options: {
virtualHost: !0
}
}, xs = /* @__PURE__ */ f({
...bs,
__name: "FloatWindowSingleCall",
setup(a) {
const { callType: A, callStatus: e } = G(rA()), { isFloatWindow: t } = G(BA()), { callDuration: o } = mt(), n = S(() => iA([
"float-window-container",
{
"singlecall-video-float": A.value === _.VIDEO && t.value,
"singlecall-audio-float": A.value === _.AUDIO && t.value
}
]));
function s() {
t.value && Q.toggleMinimize();
}
return (r, c) => (d(), y("div", {
class: k(l(n))
}, [
sA(L("div", {
class: "singlecall-video-float-content",
onClick: s
}, [
q(r.$slots, "default", {}, void 0, !0),
L("div", Vs, [
l(e) === l(P).CALLING && l(t) ? (d(), U(gA, {
key: 0,
color: "#FFF",
size: "12px"
}, {
default: E(() => [
NA(W(l(v)("wait to be called")), 1)
]),
_: 1
})) : z("", !0)
])
], 512), [
[cA, !(l(t) && l(A) === l(_).AUDIO)]
]),
sA(L("div", {
class: "singlecall-audio-float-content",
onClick: s
}, [
C(LA, {
width: "36px",
height: "36px",
src: l(Ao)
}, null, 8, ["src"]),
l(e) === l(P).CONNECTED ? (d(), U(_e, {
key: 0,
fontSize: "12px",
callDuration: l(o),
color: "#12b969"
}, null, 8, ["callDuration"])) : z("", !0),
l(e) === l(P).CALLING && l(t) ? (d(), U(gA, {
key: 1,
color: "#12b969",
size: "12px"
}, {
default: E(() => [
NA(W(l(v)("wait to be called")), 1)
]),
_: 1
})) : z("", !0)
], 512), [
[cA, l(t) && l(A) === l(_).AUDIO]
])
], 2));
}
});
const ks = /* @__PURE__ */ Z(xs, [["__scopeId", "data-v-381004f2"]]), Rs = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjkxNjUgNy41NjkzN1Y2LjgzODg3SDMuNDE2NVY3LjU2OTM3QzMuNDE2NSAxMC4xMDA3IDUuNDY4NTMgMTIuMTUyNyA3Ljk5OTg0IDEyLjE1MjdDMTAuNTMxMSAxMi4xNTI3IDEyLjU4MzIgMTAuMTAwNyAxMi41ODMyIDcuNTY5MzZWNi44Mzg4N0gxNC4wODMyVjcuNTY5MzZDMTQuMDgzMiAxMC42NzUxIDExLjc1NTcgMTMuMjM3MyA4Ljc0OTg4IDEzLjYwNjlWMTQuOTA4OUg3LjI0OTg4VjEzLjYwNjlDNC4yNDM5OCAxMy4yMzc0IDEuOTE2NSAxMC42NzUyIDEuOTE2NSA3LjU2OTM3WiIgZmlsbD0iIzEyQjk2OSIvPgo8cmVjdCB4PSI0LjY2Njc1IiB5PSIxLjA5MDgyIiB3aWR0aD0iNi42NjY2NyIgaGVpZ2h0PSI5Ljg5NjkiIHJ4PSIzLjMzMzMzIiBmaWxsPSIjMTJCOTY5Ii8+Cjwvc3ZnPgo=", Bs = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMi42NzE2IDYuMTE2OTJDMTIuNDY4NyA2LjIxODY5IDEyLjM0MDYgNi40MjYyNSAxMi4zNDA2IDYuNjUzMjRWOS4zNDY0OEMxMi4zNDA2IDkuNTczNDggMTIuNDY4NyA5Ljc4MTA1IDEyLjY3MTYgOS44ODI4MUwxNS40NzQ0IDExLjI4ODRDMTUuNjA3NCAxMS4zNTUxIDE1Ljc2NCAxMS4yNTg0IDE1Ljc2NCAxMS4xMDk2TDE1Ljc2NCA0Ljg4OTk2QzE1Ljc2NCA0Ljc0MTE3IDE1LjYwNzQgNC42NDQ0OCAxNS40NzQ0IDQuNzExMThMMTIuNjcxNiA2LjExNjkyWiIgZmlsbD0iIzEyQjk2OSIvPgo8ZyBmaWx0ZXI9InVybCgjZmlsdGVyMF9iXzE5NzdfMTE2MzApIj4KPHJlY3QgeD0iMC42NjY3NDgiIHk9IjIuODkzNTUiIHdpZHRoPSIxMC42NjY3IiBoZWlnaHQ9IjEwLjIxMjgiIHJ4PSIxLjUiIGZpbGw9IiMxMkI5NjkiLz4KPC9nPgo8ZGVmcz4KPGZpbHRlciBpZD0iZmlsdGVyMF9iXzE5NzdfMTE2MzAiIHg9Ii03LjMzMzI1IiB5PSItNS4xMDY0NSIgd2lkdGg9IjI2LjY2NjYiIGhlaWdodD0iMjYuMjEyNiIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPgo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPgo8ZmVHYXVzc2lhbkJsdXIgaW49IkJhY2tncm91bmRJbWFnZUZpeCIgc3RkRGV2aWF0aW9uPSI0Ii8+CjxmZUNvbXBvc2l0ZSBpbjI9IlNvdXJjZUFscGhhIiBvcGVyYXRvcj0iaW4iIHJlc3VsdD0iZWZmZWN0MV9iYWNrZ3JvdW5kQmx1cl8xOTc3XzExNjMwIi8+CjxmZUJsZW5kIG1vZGU9Im5vcm1hbCIgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iZWZmZWN0MV9iYWNrZ3JvdW5kQmx1cl8xOTc3XzExNjMwIiByZXN1bHQ9InNoYXBlIi8+CjwvZmlsdGVyPgo8L2RlZnM+Cjwvc3ZnPgo=", Ps = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xLjkxNjUgNy41NjkzN1Y2LjgzODg3SDMuNDE2NVY3LjU2OTM3QzMuNDE2NSAxMC4xMDA3IDUuNDY4NTMgMTIuMTUyNyA3Ljk5OTg0IDEyLjE1MjdDMTAuNTMxMSAxMi4xNTI3IDEyLjU4MzIgMTAuMTAwNyAxMi41ODMyIDcuNTY5MzZWNi44Mzg4N0gxNC4wODMyVjcuNTY5MzZDMTQuMDgzMiAxMC42NzUxIDExLjc1NTcgMTMuMjM3MyA4Ljc0OTg4IDEzLjYwNjlWMTQuOTA4OUg3LjI0OTg4VjEzLjYwNjlDNC4yNDM5OCAxMy4yMzc0IDEuOTE2NSAxMC42NzUyIDEuOTE2NSA3LjU2OTM3WiIgZmlsbD0iI0FEQURBRCIvPgo8cmVjdCB4PSI0LjY2Njc1IiB5PSIxLjA5MDgyIiB3aWR0aD0iNi42NjY2NyIgaGVpZ2h0PSI5Ljg5NjkiIHJ4PSIzLjMzMzMzIiBmaWxsPSIjQURBREFEIi8+Cjwvc3ZnPgo=", Ws = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMi42NzE2IDUuNzc2NTlDMTIuNDY4NyA1Ljg3ODM1IDEyLjM0MDYgNi4wODU5MSAxMi4zNDA2IDYuMzEyOTFWOS4wMDYxNEMxMi4zNDA2IDkuMjMzMTUgMTIuNDY4NyA5LjQ0MDcyIDEyLjY3MTYgOS41NDI0OEwxNS40NzQ0IDEwLjk0OEMxNS42MDc0IDExLjAxNDcgMTUuNzY0IDEwLjkxOCAxNS43NjQgMTAuNzY5M0wxNS43NjQgNC41NDk2MkMxNS43NjQgNC40MDA4NCAxNS42MDc0IDQuMzA0MTUgMTUuNDc0NCA0LjM3MDg1TDEyLjY3MTYgNS43NzY1OVoiIGZpbGw9IiNBREFEQUQiLz4KPGcgZmlsdGVyPSJ1cmwoI2ZpbHRlcjBfYl8xMzFfMTQ0OSkiPgo8cmVjdCB4PSIwLjY2Njc0OCIgeT0iMi41NTMyMiIgd2lkdGg9IjEwLjY2NjciIGhlaWdodD0iMTAuMjEyOCIgcng9IjEuNSIgZmlsbD0iI0FEQURBRCIvPgo8L2c+CjxkZWZzPgo8ZmlsdGVyIGlkPSJmaWx0ZXIwX2JfMTMxXzE0NDkiIHg9Ii03LjMzMzI1IiB5PSItNS40NDY3OCIgd2lkdGg9IjI2LjY2NjciIGhlaWdodD0iMjYuMjEyNiIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPgo8ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPgo8ZmVHYXVzc2lhbkJsdXIgaW49IkJhY2tncm91bmRJbWFnZUZpeCIgc3RkRGV2aWF0aW9uPSI0Ii8+CjxmZUNvbXBvc2l0ZSBpbjI9IlNvdXJjZUFscGhhIiBvcGVyYXRvcj0iaW4iIHJlc3VsdD0iZWZmZWN0MV9iYWNrZ3JvdW5kQmx1cl8xMzFfMTQ0OSIvPgo8ZmVCbGVuZCBtb2RlPSJub3JtYWwiIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImVmZmVjdDFfYmFja2dyb3VuZEJsdXJfMTMxXzE0NDkiIHJlc3VsdD0ic2hhcGUiLz4KPC9maWx0ZXI+CjwvZGVmcz4KPC9zdmc+Cg==", Gs = { class: "stream-container" }, Qs = { class: "video" }, Zs = { class: "audio" }, Fs = { class: "device-status" }, Ys = {
options: {
virtualHost: !0
}
}, Xs = /* @__PURE__ */ f({
...Ys,
__name: "FloatWindowGroupCall",
setup(a) {
const { isFloatWindow: A } = G(BA()), { callDuration: e } = mt(), { localUserInfoExcludeVolume: t } = G(vA()), { callStatus: o } = G(rA()), n = S(() => t.value.isAudioAvailable ? Rs : Ps), s = S(() => t.value.isVideoAvailable ? Bs : Ws), r = S(() => iA([
"groupcall-video-float",
{
"not-float": !A.value,
float: A.value
}
]));
function c() {
A.value && Q.toggleMinimize();
}
return (M, N) => (d(), y("div", {
class: k(l(r))
}, [
l(A) ? (d(), y("div", {
key: 0,
class: "click-container",
onClickCapture: pe(c, ["stop"])
}, null, 32)) : z("", !0),
L("div", Gs, [
L("div", Qs, [
q(M.$slots, "default", {}, void 0, !0)
]),
sA(L("div", Zs, [
C(LA, {
width: "36px",
height: "36px",
src: l(Ao)
}, null, 8, ["src"]),
l(o) === l(P).CONNECTED ? (d(), U(_e, {
key: 0,
fontSize: "12px",
callDuration: l(e),
color: "#12b969"
}, null, 8, ["callDuration"])) : z("", !0),
l(o) === l(P).CALLING ? (d(), U(gA, {
key: 1,
size: "12px",
color: "#12b969"
}, {
default: E(() => [
NA(W(l(v)("wait to be called")), 1)
]),
_: 1
})) : z("", !0)
], 512), [
[cA, l(A)]
])
]),
sA(L("div", Fs, [
C(LA, {
width: "16px",
height: "16px",
src: l(n)
}, null, 8, ["src"]),
C(LA, {
width: "16px",
height: "16px",
src: l(s)
}, null, 8, ["src"])
], 512), [
[cA, l(A)]
])
], 2));
}
});
const qs = /* @__PURE__ */ Z(Xs, [["__scopeId", "data-v-00e5113e"]]), Js = { id: "float-window-id" }, Hs = {
options: {
virtualHost: !0
}
}, Ks = /* @__PURE__ */ f({
...Hs,
__name: "FloatWindow",
setup(a) {
const { isGroupCall: A } = G(rA());
return (e, t) => (d(), y("div", Js, [
l(A) ? (d(), U(qs, { key: 1 }, {
default: E(() => [
q(e.$slots, "default")
]),
_: 3
})) : (d(), U(ks, { key: 0 }, {
default: E(() => [
q(e.$slots, "default")
]),
_: 3
}))
]));
}
}), _s = {
options: {
virtualHost: !0
}
}, $s = /* @__PURE__ */ f({
..._s,
__name: "FloatWindow",
setup(a) {
const { isFloatWindow: A } = G(BA()), e = S(() => iA([
"float-window-container",
{
float: A.value,
"not-float": !A.value,
pc: V.isPC,
mobile: !V.isPC
}
]));
return (t, o) => (d(), y("div", {
class: k(l(e))
}, [
l(V).isPC ? (d(), U(Os, { key: 0 }, {
default: E(() => [
q(t.$slots, "default", {}, void 0, !0)
]),
_: 3
})) : z("", !0),
l(V).isPC ? z("", !0) : (d(), U(Ks, { key: 1 }, {
default: E(() => [
q(t.$slots, "default", {}, void 0, !0)
]),
_: 3
}))
], 2));
}
});
const eo = /* @__PURE__ */ Z($s, [["__scopeId", "data-v-794f0a9b"]]);
function Ac() {
const a = be(), { callStatus: A } = G(rA()), e = p(GA.LOCAL), { remoteUserListExcludeVolume: t } = G(vA());
return uA([t, a, A], () => {
var s, r, c, M;
if (A.value === P.CALLING)
return;
const o = [Xe.RemoteInLargeView, Xe.LocalInLargeView], n = (s = a.value) == null ? void 0 : s.layoutMode;
if (o.includes(n)) {
e.value = (r = a.value) == null ? void 0 : r.layoutMode;
return;
}
(M = (c = t.value) == null ? void 0 : c[0]) != null && M.isEnter && (e.value = GA.REMOTE);
}, {
immediate: !0
}), e;
}
const ec = {
options: {
virtualHost: !0
}
}, tc = /* @__PURE__ */ f({
...ec,
__name: "MediaContainer",
setup(a) {
const A = Ac(), e = p(!0), { isFloatWindow: t } = G(BA()), { localUserInfoExcludeVolume: o, remoteUserListExcludeVolume: n } = G(vA()), s = Ea(), { callType: r, callStatus: c } = G(rA()), M = ma(), N = S(
() => {
var j, m, w, H;
return V.isWeChat ? (m = (j = M.value) == null ? void 0 : j.find((b) => {
var x, B;
return (b == null ? void 0 : b.userID) === ((B = (x = n.value) == null ? void 0 : x[0]) == null ? void 0 : B.userId);
})) == null ? void 0 : m.hasVideo : (H = (w = n.value) == null ? void 0 : w[0]) == null ? void 0 : H.isVideoAvailable;
}
), T = S(() => {
var j, m;
return (m = (j = n.value) == null ? void 0 : j[0]) == null ? void 0 : m.domId;
}), I = S(() => {
var j, m, w;
return (w = s.value) == null ? void 0 : w[(m = (j = n.value) == null ? void 0 : j[0]) == null ? void 0 : m.domId];
});
uA([r, c], () => {
r.value === _.AUDIO || c.value === P.CALLING ? e.value = !1 : e.value = !0;
}, {
immediate: !0
});
const D = S(() => iA([
"singlecall-media-container",
{
mobile: !V.isPC,
pc: V.isPC,
float: t.value
}
]));
function h(j) {
A.value = j;
}
return (j, m) => (d(), U(Ha, {
id: "source",
disabled: !l(t),
source: "#source",
to: "body"
}, {
default: E(() => [
C(eo, null, {
default: E(() => [
L("div", {
class: k(l(D))
}, [
C(Oi, {
"big-window": l(A),
"show-small-window": l(e),
onToggle: h
}, {
default: E(() => [
(d(), U(Ht, {
value: l(GA).LOCAL,
key: l(GA).LOCAL
}, {
default: E(() => [
C(_a, {
domId: l(o).domId,
"show-audio-stream": !l(o).isVideoAvailable
}, {
"audio-stream": E(() => [
C(At, {
userId: l(o).userId,
username: l(o).displayUserInfo,
avatar: l(o).avatar,
"is-video-available": l(o).isVideoAvailable,
"is-small-window": l(A) !== l(GA).LOCAL,
"is-muted": !l(o).isAudioAvailable,
volume: l(s) && l(s)[l(o).domId]
}, null, 8, ["userId", "username", "avatar", "is-video-available", "is-small-window", "is-muted", "volume"])
]),
"stream-info": E(() => [
l(r) === l(_).VIDEO ? (d(), U($e, {
key: 0,
"nick-name": l(o).displayUserInfo,
"is-self": !0,
"is-muted": !l(o).isAudioAvailable,
volume: l(s) && l(s)[l(o).domId]
}, null, 8, ["nick-name", "is-muted", "volume"])) : z("", !0)
]),
_: 1
}, 8, ["domId", "show-audio-stream"])
]),
_: 1
}, 8, ["value"])),
(d(), U(Ht, {
value: l(GA).REMOTE,
key: l(GA).REMOTE
}, {
default: E(() => [
C($a, {
"dom-id": l(T),
"show-audio-stream": !l(N)
}, {
"audio-stream": E(() => [
C(At, {
userId: l(n)[0] && l(n)[0].userId,
username: l(n)[0] && l(n)[0].displayUserInfo,
avatar: l(n)[0] && l(n)[0].avatar,
"is-video-available": l(N),
"is-small-window": l(A) !== l(GA).REMOTE,
"is-muted": l(n)[0] && !l(n)[0].isAudioAvailable,
volume: l(I)
}, null, 8, ["userId", "username", "avatar", "is-video-available", "is-small-window", "is-muted", "volume"])
]),
"stream-info": E(() => [
l(r) === l(_).VIDEO ? (d(), U($e, {
key: 0,
"nick-name": l(n)[0] && l(n)[0].displayUserInfo,
"is-muted": l(n)[0] && !l(n)[0].isAudioAvailable,
volume: l(I)
}, null, 8, ["nick-name", "is-muted", "volume"])) : z("", !0)
]),
_: 1
}, 8, ["dom-id", "show-audio-stream"])
]),
_: 1
}, 8, ["value"]))
]),
_: 1
}, 8, ["big-window", "show-small-window"])
], 2)
]),
_: 1
})
]),
_: 1
}, 8, ["disabled"]));
}
});
const ac = /* @__PURE__ */ Z(tc, [["__scopeId", "data-v-670a78d8"]]), oc = [ze.SUCCESS, ze.INFO, ze.WARNING, ze.ERROR], Ne = {
isShow: {
type: Boolean,
default: !1
},
message: {
type: String,
default: ""
},
type: {
type: String,
values: oc,
default: ze.INFO
},
duration: {
type: Number,
default: 3e3
},
offset: {
type: Number,
default: 16
},
showClose: {
type: Boolean,
default: !1
},
showIcon: {
type: Boolean,
default: !0
},
customClass: {
type: String
},
customStyle: {
type: Object
}
}, lc = {
onClose: null
};
function nc(a, A) {
const e = p((a == null ? void 0 : a.message) || Ne.message.default), t = p((a == null ? void 0 : a.duration) || Ne.duration.default), o = p((a == null ? void 0 : a.type) || Ne.type.default), n = p((a == null ? void 0 : a.offset) || Ne.offset.default), s = p((a == null ? void 0 : a.showClose) || Ne.showClose.default), r = p(!1);
let c = -1;
const M = (I) => {
c > -1 && (clearTimeout(c), c = -1), r.value = !0, T(I || {}), t.value && (c = setTimeout(() => {
N();
}, t.value));
}, N = () => {
r.value = !1, c > -1 && (clearTimeout(c), c = -1);
}, T = (I) => {
const {
message: D = e.value,
type: h = o.value,
offset: j = n.value,
duration: m = t.value,
showClose: w = s.value
} = I;
t.value = (a == null ? void 0 : a.duration) === 0 ? a == null ? void 0 : a.duration : m, e.value = D, o.value = h, n.value = j, s.value = w;
};
return uA(
() => a == null ? void 0 : a.isShow,
(I) => {
I && M();
},
{ immediate: !0 }
), uA(r, (I) => {
I || A("onClose");
}), {
messageContent: e,
messageDuration: t,
messageType: o,
messageOffset: n,
isShowCloseIcon: s,
visible: r,
show: M,
close: N
};
}
const ic = "data:image/svg+xml;base64,PHN2ZyB0PSIxNzAwMTIzMzQ5NzM4IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjYzMDAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTUxMiA5Ny41MjM4MWMyMjguOTEyNzYyIDAgNDE0LjQ3NjE5IDE4NS41NjM0MjkgNDE0LjQ3NjE5IDQxNC40NzYxOXMtMTg1LjU2MzQyOSA0MTQuNDc2MTktNDE0LjQ3NjE5IDQxNC40NzYxOVM5Ny41MjM4MSA3NDAuOTEyNzYyIDk3LjUyMzgxIDUxMiAyODMuMDg3MjM4IDk3LjUyMzgxIDUxMiA5Ny41MjM4MXogbTEyOS4yOTIxOSAyMzMuNDQ3NjE5bC0xMjkuMjY3ODA5IDEyOS4yOTIxOS0xMjkuMzE2NTcxLTEyOS4yOTIxOS01MS43MzYzODEgNTEuNzM2MzgxIDEyOS4zMTY1NzEgMTI5LjI2NzgwOS0xMjkuMzE2NTcxIDEyOS4zMTY1NzEgNTEuNzM2MzgxIDUxLjczNjM4MUw1MTIgNTYzLjY4NzYxOWwxMjkuMjkyMTkgMTI5LjMxNjU3MSA1MS43MzYzODEtNTEuNzM2MzhMNTYzLjY4NzYxOSA1MTJsMTI5LjMxNjU3MS0xMjkuMjkyMTktNTEuNzM2MzgtNTEuNzM2MzgxeiIgcC1pZD0iNjMwMSIgZmlsbD0iI2Q1NDk0MSI+PC9wYXRoPjwvc3ZnPgo=", sc = "data:image/svg+xml;base64,PHN2ZyB0PSIxNzAwMTIxNTM5Nzg4IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjQwMTgiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTUxMiA5Ny41MjM4MWMyMjguOTEyNzYyIDAgNDE0LjQ3NjE5IDE4NS41NjM0MjkgNDE0LjQ3NjE5IDQxNC40NzYxOXMtMTg1LjU2MzQyOSA0MTQuNDc2MTktNDE0LjQ3NjE5IDQxNC40NzYxOVM5Ny41MjM4MSA3NDAuOTEyNzYyIDk3LjUyMzgxIDUxMiAyODMuMDg3MjM4IDk3LjUyMzgxIDUxMiA5Ny41MjM4MXogbTE5My4xOTQ2NjcgMjE4LjMzMTQyOEw0NDcuMjE5ODEgNTgxLjMxNTA0OGwtMTAzLjkzNi0xMDcuODEyNTcyLTUyLjY2Mjg1OCA1MC43NjExNDMgMTU2LjM3OTQyOSAxNjIuMjMwODU3IDMxMC42NjIwOTUtMzE5LjY4MzA0Ny01Mi40Njc4MDktNTAuOTU2MTkxeiIgcC1pZD0iNDAxOSIgZmlsbD0iIzJiYTQ3MSI+PC9wYXRoPjwvc3ZnPgo=", cc = "data:image/svg+xml;base64,PHN2ZyB0PSIxNzAwMTIzMjc0Njg2IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjUwNTAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTUxMiA5Ny41MjM4MWMyMjguOTEyNzYyIDAgNDE0LjQ3NjE5IDE4NS41NjM0MjkgNDE0LjQ3NjE5IDQxNC40NzYxOXMtMTg1LjU2MzQyOSA0MTQuNDc2MTktNDE0LjQ3NjE5IDQxNC40NzYxOVM5Ny41MjM4MSA3NDAuOTEyNzYyIDk3LjUyMzgxIDUxMiAyODMuMDg3MjM4IDk3LjUyMzgxIDUxMiA5Ny41MjM4MXogbTM2LjU3MTQyOSAzNDEuMzMzMzMzaC03My4xNDI4NTh2MjkyLjU3MTQyOGg3My4xNDI4NThWNDM4Ljg1NzE0M3ogbTAtMTIxLjkwNDc2MmgtNzMuMTQyODU4djczLjE0Mjg1N2g3My4xNDI4NTh2LTczLjE0Mjg1N3oiIHAtaWQ9IjUwNTEiIGZpbGw9IiNlMzczMTgiPjwvcGF0aD48L3N2Zz4K", rc = "data:image/svg+xml;base64,PHN2ZyB0PSIxNzAwMTIzMjc0Njg2IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjUwNTAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PHBhdGggZD0iTTUxMiA5Ny41MjM4MWMyMjguOTEyNzYyIDAgNDE0LjQ3NjE5IDE4NS41NjM0MjkgNDE0LjQ3NjE5IDQxNC40NzYxOXMtMTg1LjU2MzQyOSA0MTQuNDc2MTktNDE0LjQ3NjE5IDQxNC40NzYxOVM5Ny41MjM4MSA3NDAuOTEyNzYyIDk3LjUyMzgxIDUxMiAyODMuMDg3MjM4IDk3LjUyMzgxIDUxMiA5Ny41MjM4MXogbTM2LjU3MTQyOSAzNDEuMzMzMzMzaC03My4xNDI4NTh2MjkyLjU3MTQyOGg3My4xNDI4NThWNDM4Ljg1NzE0M3ogbTAtMTIxLjkwNDc2MmgtNzMuMTQyODU4djczLjE0Mjg1N2g3My4xNDI4NTh2LTczLjE0Mjg1N3oiIHAtaWQ9IjUwNTEiIGZpbGw9IiMwMDUyZDkiPjwvcGF0aD48L3N2Zz4K", uc = "data:image/svg+xml;base64,ICAgIAo8c3ZnIHQ9IjE3MDAxMjM3NjYyNDciIGNsYXNzPSJpY29uIiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiCiAgICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjYzMDEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+CiAgICA8cGF0aCBkPSJNNTU3LjIgNTEybDIzMy40LTIzMy40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4ycy0zMi44LTEyLjUtNDUuMiAwTDUxMiA0NjYuOCAyNzguNiAyMzMuNGMtMTIuNS0xMi41LTMyLjgtMTIuNS00NS4yIDBzLTEyLjUgMzIuOCAwIDQ1LjJMNDY2LjggNTEyIDIzMy40IDc0NS40Yy0xMi41IDEyLjUtMTIuNSAzMi44IDAgNDUuMiA2LjIgNi4yIDE0LjQgOS40IDIyLjYgOS40czE2LjQtMy4xIDIyLjYtOS40TDUxMiA1NTcuMmwyMzMuNCAyMzMuNGM2LjIgNi4yIDE0LjQgOS40IDIyLjYgOS40czE2LjQtMy4xIDIyLjYtOS40YzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4yTDU1Ny4yIDUxMnoiIHAtaWQ9IjYzMDEiIGZpbGw9IiM3Mzc2N2EiPjwvcGF0aD4KPC9zdmc+Cg==", Mc = {
options: {
virtualHost: !0
}
}, to = /* @__PURE__ */ f({
...Mc,
__name: "Message",
props: Ne,
emits: lc,
setup(a, { expose: A, emit: e }) {
const t = a, o = e, { messageContent: n, messageType: s, messageOffset: r, isShowCloseIcon: c, visible: M, show: N, close: T } = nc(t, o), I = S(() => iA([
`${Y}-message`,
`${Y}-message--${s.value}`,
t.customClass
])), D = S(() => iA([`${Y}-message_icon`])), h = S(() => iA([`${Y}-message_close`])), j = S(() => `${r.value}px`), m = S(() => ({ top: j.value, ...t.customStyle })), w = {
info: rc,
waring: cc,
success: sc,
error: ic
};
return A({
show: N,
close: T
}), (H, b) => l(M) ? (d(), y("div", {
key: 0,
class: k(l(I)),
style: eA([l(m)])
}, [
sA(L("div", {
class: k(l(D))
}, [
C(De, {
src: w[l(s)]
}, null, 8, ["src"])
], 2), [
[cA, H.showIcon]
]),
L("span", null, W(l(n)), 1),
sA(L("div", {
class: k(l(h)),
onClick: b[0] || (b[0] = //@ts-ignore
(...x) => l(T) && l(T)(...x))
}, [
C(De, { src: l(uc) }, null, 8, ["src"])
], 2), [
[cA, l(c)]
])
], 6)) : z("", !0);
}
});
const dc = {
customClass: {
type: String
}
}, Ic = {
options: {
virtualHost: !0,
styleIsolation: "shared"
}
}, ao = /* @__PURE__ */ f({
...Ic,
__name: "Tip",
props: dc,
setup(a) {
const { isFloatWindow: A } = G(BA()), { tip: e, duration: t } = wl(), { isGroupCall: o } = G(rA()), n = p(null), s = a, r = V.isPC, c = S(() => [s.customClass]), M = S(
() => Ke({
color: "white",
background: "none",
position: "absolute",
"z-index": 4,
"align-items": "center",
left: "50%",
top: `${r ? "60%" : "70%"}`,
transform: "translate(-50%, -50%)",
"font-size": A.value ? "12px" : void 0
})
), N = S(
() => Ke({
color: "white",
background: "none",
position: "static",
transform: "none",
"font-size": A.value ? "12px" : void 0
})
), T = S(() => o.value ? N.value : M.value);
return uA(e, () => {
var I;
(I = n.value) == null || I.show({
message: e.value,
duration: t.value,
offset: 0
});
}), (I, D) => (d(), y("div", null, [
C(to, {
showIcon: !1,
class: k(l(c)),
ref_key: "message",
ref: n,
customStyle: l(T)
}, null, 8, ["class", "customStyle"])
]));
}
}), Nc = ["%", "vw"], gc = {
length: {
type: Number,
default: 0
},
unit: {
type: String,
values: Nc,
default: "%"
},
enableFocus: {
type: Boolean,
default: !1
},
layout: {
type: Array
},
focus: {
type: [String, Number]
}
}, Tc = ["change", "toggle"], oo = "GridContextKey", pc = { style: { height: "100%" } }, Dc = {
options: {
virtualHost: !0
}
}, lo = /* @__PURE__ */ f({
...Dc,
__name: "Grid",
props: gc,
emits: Tc,
setup(a, { emit: A }) {
const e = a, t = p(e.focus), o = p(e.layout), n = p(e.unit), s = A;
function r(c) {
s("toggle", c);
}
return uA(() => e.focus, () => t.value = e.focus), uA(() => e.layout, () => o.value = e.layout), uA(() => e.unit, () => n.value = e.unit), OA(oo, {
layout: o,
enableFocus: e.enableFocus,
handleFocusChange: r,
focus: t,
unit: n
}), (c, M) => (d(), y("div", pc, [
q(c.$slots, "default")
]));
}
}), yc = {
options: {
virtualHost: !0
}
}, kA = /* @__PURE__ */ f({
...yc,
__name: "GridItem",
props: ["index", "height", "customStyle"],
setup(a) {
const A = a, {
layout: e,
enableFocus: t,
handleFocusChange: o,
focus: n,
unit: s
} = VA(oo), r = 100 / 12, c = r, M = p({}), N = iA([
`${Y}-grid-item`,
{
pc: re,
mobile: !re,
h5: wa
}
]), T = () => {
const D = String(A.index) === String(n.value) ? null : A.index;
t && o(D);
}, I = S(() => !!Xt(e.value, { key: "i", value: A.index }));
return ue(() => {
const D = Xt(e.value, { key: "i", value: A.index });
if (!D)
return;
const { x: h, y: j, w: m, h: w, customStyle: H, customProps: b } = D;
M.value = {
width: m * r + s.value,
height: A.height || w * c + s.value,
left: h * r + s.value,
top: j * c + s.value,
position: "absolute",
visibility: (b == null ? void 0 : b.show) === !1 ? "hidden" : "",
...A.customStyle,
...H
};
}), DA(() => {
String(A.index) === String(n.value) && t && o(null);
}), (D, h) => l(I) ? (d(), y("div", {
key: 0,
class: k(l(N)),
style: eA([l(M)]),
onClick: T
}, [
q(D.$slots, "default")
], 6)) : z("", !0);
}
});
function Cc() {
const a = p([]), A = p([]), { callStatus: e, isGroupCall: t, callType: o, callRole: n } = G(rA()), { status: s } = Ve() || {}, r = Wl();
return uA(
[e, t, o, n, s, r],
() => {
var w, H, b;
let c = r.value;
const M = V.isPC ? "pc" : "mobile", N = t.value ? "groupCall" : "singleCall", T = o.value === _.AUDIO ? "audio" : "video";
let I = e.value === P.CALLING ? n.value === IA.CALLER ? "calling" : "accept" : e.value;
t && (s == null ? void 0 : s.value) === "close" && (I = "close_" + I);
const D = ((b = (H = (w = c == null ? void 0 : c[M]) == null ? void 0 : w[N]) == null ? void 0 : H[T]) == null ? void 0 : b[I]) || [];
A.value = D;
const h = [];
let j = 0;
for (let x = 0; x < D.length; x++) {
const B = x === 0 ? D[x].filter((J) => {
var MA;
return ((MA = J == null ? void 0 : J.props) == null ? void 0 : MA.show) !== !1;
}) : D[x];
D[x] = B;
const F = 12 / B.length, tA = 3;
for (let J = 0; J < B.length; J++)
h[j++] = {
i: B[J].name,
x: J * F,
y: x * F,
w: F,
h: tA,
// @ts-ignore
customStyle: B[J].customStyle,
customProps: B[J].props
};
}
j = 0;
let m = [];
for (let x = 0; x < D.flat().length; x++)
m[x] = h[j++];
m = m.filter((x) => x.i), a.value = m;
},
{
immediate: !0
}
), { layout: a, config: A };
}
function Sc(...a) {
let A = window == null ? void 0 : window.document, e = "", t = () => {
}, o = {};
if (typeof a[0] == "string" ? [e, t, o] = a : [A, e, t, o] = a, !!A)
return A == null || A.addEventListener(e, t, o), () => {
A == null || A.removeEventListener(e, t, o);
};
}
function jc(a, A) {
let e = () => {
};
CA(() => {
e = Sc("click", (o) => {
const n = a.map((c) => l(c)), s = o.composedPath(), r = [];
for (let c = 0; c < n.length; c++)
r[c] = s.includes(n[c]);
r.every((c) => !c) && A();
}, { passive: !0 });
}), DA(() => {
e == null || e();
});
}
const hc = (a, A, e, t, o) => {
const n = e.isShowArrow ? e.arrowSize : 0, s = `${a.width / 2 - A.width / 2}px`, r = `${a.height / 2 - A.height / 2}px`, c = `${n}px solid ${e.color}`, M = { ...t }, N = { ...o };
switch (e.placement) {
case "top":
M.left = s, M.top = `-${A.height + n + e.arrowDistance}px`, N.borderTop = c, N.left = `${a.width / 2 - n / 2}px`, N.top = `-${n + e.arrowDistance}px`;
break;
case "bottom":
M.left = s, M.top = `${a.height + n + e.arrowDistance}px`, N.borderBottom = c, N.left = `${a.width / 2 - n / 2}px`, N.top = `${a.height + e.arrowDistance - n}px`;
break;
case "left":
M.left = `-${A.width + n + e.arrowDistance}px`, M.top = r, N.borderLeft = c, N.left = `-${n * 2 - e.arrowDistance}px`, N.top = `${a.height / 2 - n / 2}px`;
break;
case "right":
M.left = `${a.width + n + e.arrowDistance}px`, M.top = r, N.borderRight = c, N.left = `${a.width + n * 2 - e.arrowDistance}px`, N.top = `${a.height / 2 - n / 2}px`;
break;
}
return {
finalContentStyle: M,
finalArrowStyle: N
};
}, Lc = ["click", "hover"], Ec = ["top", "bottom", "left", "right"], no = {
trigger: {
type: String,
values: Lc,
default: "click"
},
placement: {
type: String,
values: Ec,
default: "top"
},
color: {
type: String
},
isShowArrow: {
type: Boolean,
default: !0
},
arrowSize: {
type: Number,
default: 5
},
arrowDistance: {
type: Number,
default: 5
},
show: {
type: Boolean
},
autoClose: {
type: Number,
default: 300
}
}, mc = {
options: {
virtualHost: !0
}
}, zc = /* @__PURE__ */ f({
...mc,
__name: "PopoverWeb",
props: no,
emits: ["hover"],
setup(a, { emit: A }) {
const e = a, t = `${Y}-popover`, o = `${Y}-popover_content`, n = `${Y}-popover_arrow`, s = `${Y}-popover_trigger`, r = p(), c = p(), M = p(), N = p(!1), T = p(null), I = S(() => N.value && e.isShowArrow && e.show), D = Ke({ left: "0px", top: "0px", backgroundColor: e.color }), h = p(D), j = `${e.arrowSize}px solid transparent`, m = {
borderLeft: j,
borderRight: j,
borderTop: j,
borderBottom: j,
top: "0px",
left: "0px"
}, w = p(m), H = A, b = () => {
mo(() => {
var ee, te, de, ae;
if (!N.value || !e.show)
return;
const J = (te = (ee = c.value).getBoundingClientRect) == null ? void 0 : te.call(ee), MA = (ae = (de = M.value).getBoundingClientRect) == null ? void 0 : ae.call(de), { finalContentStyle: WA, finalArrowStyle: Me } = hc(J, MA, e, D, m);
h.value = { ...D, ...WA }, w.value = { ...m, ...Me };
});
}, x = () => {
clearTimeout(T.value);
}, B = () => {
e.trigger === "click" && (N.value = !N.value, b());
}, F = () => {
e.trigger === "hover" && (H("hover"), x(), N.value = !0, b());
}, tA = () => {
e.trigger === "hover" && (T.value = setTimeout(() => {
N.value = !1, b();
}, 1e3));
};
return jc([r], () => {
N.value = !1;
}), (J, MA) => (d(), y("div", {
class: k(t),
ref_key: "popoverRef",
ref: r
}, [
l(N) && J.show ? (d(), y("div", {
key: 0,
ref_key: "contentRef",
ref: M,
onMouseenter: x,
onMouseleave: tA,
class: k(o),
style: eA([l(h)])
}, [
q(J.$slots, "content")
], 36)) : z("", !0),
l(I) ? (d(), y("div", {
key: 1,
style: eA([l(w)]),
class: k(n)
}, null, 4)) : z("", !0),
L("div", {
ref_key: "triggerRef",
ref: c,
class: k(s),
onClick: B,
onMouseenter: F,
onMouseleave: tA
}, [
q(J.$slots, "trigger")
], 544)
], 512));
}
});
const Uc = {
options: {
virtualHost: !0
}
};
function fc(a, A, e, t, o, n) {
return null;
}
const vc = /* @__PURE__ */ Z(Uc, [["render", fc]]), wc = {
options: {
virtualHost: !0
}
}, ft = /* @__PURE__ */ f({
...wc,
__name: "Popover",
props: no,
emits: ["hover"],
setup(a, { emit: A }) {
const e = A, t = () => {
e("hover");
};
return (o, n) => (d(), y(RA, null, [
l(se) ? z("", !0) : (d(), U(zc, bt({
key: 0,
onHover: t
}, o.$props), {
trigger: E(() => [
q(o.$slots, "trigger")
]),
content: E(() => [
q(o.$slots, "content")
]),
_: 3
}, 16)),
l(se) ? (d(), U(vc, zo(bt({ key: 1 }, o.$props)), {
trigger: E(() => [
q(o.$slots, "trigger")
]),
content: E(() => [
q(o.$slots, "content")
]),
_: 3
}, 16)) : z("", !0)
], 64));
}
}), Oc = {
deviceType: {
type: String
},
isShowControlBtn: {
type: Boolean,
default: !1
}
}, Vc = { class: "device-selector-container" }, bc = { class: "scroll-container" }, xc = { class: "scroll-content" }, kc = {
options: {
virtualHost: !0
}
}, Rc = /* @__PURE__ */ f({
...kc,
__name: "DeviceSelect",
props: Oc,
setup(a) {
const A = a, [{ deviceList: e, currentDeviceId: t }, { updateCurrentDeviceId: o }] = ot(A.deviceType), { localUserInfoExcludeVolume: n } = G(vA()), { isMuteSpeaker: s } = G(rA()), r = nt(), c = async (I) => {
try {
T(), await Q.switchDevice({
deviceType: A.deviceType,
deviceId: I
}), o(I);
} catch (D) {
console.debug(D);
}
}, M = async () => {
var I, D;
T(), A.deviceType === hA.CAMERA && ((I = n.value) != null && I.isVideoAvailable ? await Q.closeCamera() : await Q.openCamera("localVideo")), A.deviceType === hA.MICROPHONE && ((D = n.value) != null && D.isAudioAvailable ? await Q.closeMicrophone() : await Q.openMicrophone()), A.deviceType === hA.SPEAKER && (s.value ? await Q.unMuteSpeaker() : await Q.muteSpeaker());
}, N = S(() => {
var I;
if (A.deviceType === hA.CAMERA)
return n != null && n.value.isVideoAvailable ? v("close camera") : v("open camera");
if (A.deviceType === hA.MICROPHONE)
return (I = n == null ? void 0 : n.value) != null && I.isAudioAvailable ? v("close microphone") : v("open microphone");
if (A.deviceType === hA.SPEAKER)
return s.value ? v("open speaker") : v("close speaker");
}), T = () => {
r.value = "close";
};
return (I, D) => (d(), y("div", Vc, [
L("div", bc, [
L("div", xc, [
(d(!0), y(RA, null, ce(l(e), (h) => (d(), y("div", {
key: h.deviceId
}, [
C(gA, {
width: "100%",
color: "#ffff",
truncated: !0,
size: "14px",
class: k(["device-item", { select: l(t) === h.deviceId }]),
onClick: () => c(h.deviceId)
}, {
default: E(() => [
NA(W(h.label), 1)
]),
_: 2
}, 1032, ["class", "onClick"])
]))), 128))
])
]),
D[0] || (D[0] = L("div", { class: "control-item" }, null, -1)),
I.isShowControlBtn ? (d(), U(gA, {
key: 0,
width: "100%",
color: "#ffff",
truncated: !0,
size: "14px",
class: "device-item",
onClick: M
}, {
default: E(() => [
NA(W(l(N)), 1)
]),
_: 1
})) : z("", !0)
]));
}
});
const vt = /* @__PURE__ */ Z(Rc, [["__scopeId", "data-v-d176bcfa"]]), Bc = { class: "btn-content" }, Pc = {
options: {
virtualHost: !0
}
}, Wc = /* @__PURE__ */ f({
...Pc,
__name: "Camera",
props: ZA,
setup(a) {
const A = a, e = p(!0), t = V.isPC, { localUserInfoExcludeVolume: o } = G(vA()), n = p(o == null ? void 0 : o.value.isVideoAvailable), s = S(() => o == null ? void 0 : o.value.isVideoAvailable), r = nt(), [{ deviceList: c }] = ot(hA.CAMERA), M = S(() => {
var j;
return ((j = c.value) == null ? void 0 : j.length) > 0 && r.value === "camera";
}), N = S(() => e.value ? s.value ? "basicConfig" : "closedConfig" : "loadingConfig"), T = S(() => o != null && o.value.isVideoAvailable ? v("camera enabled") : v("camera disabled")), I = zA("camera", N), D = async () => {
e.value = !1, n.value = !s.value, s.value ? await Q.closeCamera() : await Q.openCamera("localVideo"), e.value = !0;
}, h = () => {
r.value = "camera";
};
return (j, m) => (d(), y("div", Bc, [
l(t) ? (d(), U(ft, {
key: 0,
color: "rgba(107, 117, 138, 0.5)",
show: l(M),
onHover: h,
trigger: "hover"
}, {
content: E(() => [
C(vt, {
isShowControlBtn: !0,
deviceType: l(hA).CAMERA
}, null, 8, ["deviceType"])
]),
trigger: E(() => [
C(mA, {
loading: !l(e),
iconSrc: l(I).iconSrc,
color: l(I).color,
iconSize: l(I).iconSize,
width: A.width || l(I).width,
height: A.height || l(I).height,
loadingWidth: l(I).loadingWidth,
loadingHeight: l(I).loadingHeight,
shape: l(I).shape,
onClick: D
}, null, 8, ["loading", "iconSrc", "color", "iconSize", "width", "height", "loadingWidth", "loadingHeight", "shape"])
]),
_: 1
}, 8, ["show"])) : z("", !0),
l(t) ? z("", !0) : (d(), U(mA, {
key: 1,
loading: !l(e),
iconSrc: l(I).iconSrc,
color: l(I).color,
iconSize: A.iconSize || l(I).iconSize,
width: A.width || l(I).width,
height: A.height || l(I).height,
loadingWidth: l(I).loadingWidth,
loadingHeight: l(I).loadingHeight,
shape: "circle",
onClick: D
}, null, 8, ["loading", "iconSrc", "color", "iconSize", "width", "height", "loadingWidth", "loadingHeight"])),
l(I).showText ? (d(), U(gA, {
key: 2,
textStyle: l(I).textStyle,
color: l(I).textColor,
size: l(I).textSize
}, {
default: E(() => [
NA(W(l(T)), 1)
]),
_: 1
}, 8, ["textStyle", "color", "size"])) : z("", !0)
]));
}
});
const Gc = /* @__PURE__ */ Z(Wc, [["__scopeId", "data-v-01140bf2"]]), Qc = { class: "btn-content" }, Zc = {
options: {
virtualHost: !0
}
}, Fc = /* @__PURE__ */ f({
...Zc,
__name: "Hangup",
props: ZA,
setup(a) {
const A = a, e = Vl(), t = S(() => e.value ? "basicConfig" : "loadingConfig"), o = zA("hangup", t), n = async () => {
await Q.hangup();
};
return (s, r) => (d(), y("div", Qc, [
C(mA, {
loading: !l(e),
loadingWidth: l(o).loadingWidth,
loadingHeight: l(o).loadingHeight,
iconSrc: l(o).iconSrc,
color: l(o).color,
iconSize: A.iconSize || l(o).iconSize,
width: A.width || l(o).width,
height: A.height || l(o).height,
shape: l(o).shape,
onClick: n
}, null, 8, ["loading", "loadingWidth", "loadingHeight", "iconSrc", "color", "iconSize", "width", "height", "shape"]),
l(o).showText ? (d(), U(gA, {
key: 0,
textStyle: l(o).textStyle,
color: l(o).textColor,
size: l(o).textSize
}, {
default: E(() => [
NA(W(l(v)("hangup")), 1)
]),
_: 1
}, 8, ["textStyle", "color", "size"])) : z("", !0)
]));
}
});
const Yc = /* @__PURE__ */ Z(Fc, [["__scopeId", "data-v-3585d156"]]), Xc = { class: "btn-content" }, qc = {
options: {
virtualHost: !0
}
}, Jc = /* @__PURE__ */ f({
...qc,
__name: "Accept",
props: ZA,
setup(a) {
const A = p(!0), e = a, t = S(() => A.value ? "basicConfig" : "loadingConfig"), o = zA("accept", t), n = async () => {
A.value = !1, await Q.accept(), A.value = !0;
};
return (s, r) => (d(), y("div", Xc, [
C(mA, {
iconSrc: l(o).iconSrc,
color: l(o).color,
iconSize: e.iconSize || l(o).iconSize,
width: e.width || l(o).width,
height: e.height || l(o).height,
shape: l(o).shape,
loading: !l(A),
loadingWidth: l(o).loadingWidth,
loadingHeight: l(o).loadingHeight,
onClick: n
}, null, 8, ["iconSrc", "color", "iconSize", "width", "height", "shape", "loading", "loadingWidth", "loadingHeight"]),
l(o).showText ? (d(), U(gA, {
key: 0,
textStyle: l(o).textStyle,
color: l(o).textColor,
size: l(o).textSize
}, {
default: E(() => [
NA(W(l(v)("accept")), 1)
]),
_: 1
}, 8, ["textStyle", "color", "size"])) : z("", !0)
]));
}
});
const Hc = /* @__PURE__ */ Z(Jc, [["__scopeId", "data-v-c3da87f5"]]), Kc = { class: "btn-content" }, _c = {
options: {
virtualHost: !0
}
}, $c = /* @__PURE__ */ f({
..._c,
__name: "Microphone",
props: ZA,
setup(a) {
const A = V.isPC, e = p(!0), { localUserInfoExcludeVolume: t } = G(vA()), o = nt(), [{ deviceList: n }] = ot(hA.MICROPHONE), s = S(() => {
var I;
return ((I = n.value) == null ? void 0 : I.length) > 0 && o.value === "microphone";
}), r = S(() => e.value ? t != null && t.value.isAudioAvailable ? "basicConfig" : "closedConfig" : "loadingConfig"), c = zA("microphone", r), M = S(() => t != null && t.value.isAudioAvailable ? v("microphone enabled") : v("microphone disabled")), N = async () => {
t != null && t.value.isAudioAvailable ? await Q.closeMicrophone() : await Q.openMicrophone();
}, T = () => {
o.value = "microphone";
};
return (I, D) => (d(), y("div", Kc, [
l(A) ? (d(), U(ft, {
key: 0,
color: "rgba(107, 117, 138, 0.5)",
show: l(s),
onHover: T,
trigger: "hover"
}, {
content: E(() => [
C(vt, {
isShowControlBtn: !0,
deviceType: l(hA).MICROPHONE
}, null, 8, ["deviceType"])
]),
trigger: E(() => [
C(mA, {
loading: !l(e),
iconSrc: l(c).iconSrc,
color: l(c).color,
iconSize: l(c).iconSize,
width: l(c).width,
height: l(c).height,
loadingWidth: l(c).loadingWidth,
loadingHeight: l(c).loadingHeight,
shape: l(c).shape,
onClick: N
}, null, 8, ["loading", "iconSrc", "color", "iconSize", "width", "height", "loadingWidth", "loadingHeight", "shape"])
]),
_: 1
}, 8, ["show"])) : z("", !0),
l(A) ? z("", !0) : (d(), U(mA, {
key: 1,
loading: !l(e),
iconSrc: l(c).iconSrc,
color: l(c).color,
iconSize: l(c).iconSize,
width: l(c).width,
height: l(c).height,
loadingWidth: l(c).loadingWidth,
loadingHeight: l(c).loadingHeight,
shape: l(c).shape,
onClick: N
}, null, 8, ["loading", "iconSrc", "color", "iconSize", "width", "height", "loadingWidth", "loadingHeight", "shape"])),
l(c).showText ? (d(), U(gA, {
key: 2,
textStyle: l(c).textStyle,
color: l(c).textColor,
size: l(c).textSize
}, {
default: E(() => [
NA(W(l(M)), 1)
]),
_: 1
}, 8, ["textStyle", "color", "size"])) : z("", !0)
]));
}
});
const Ar = /* @__PURE__ */ Z($c, [["__scopeId", "data-v-7902763b"]]), er = { class: "btn-content" }, tr = {
options: {
virtualHost: !0
}
}, ar = /* @__PURE__ */ f({
...tr,
__name: "Reject",
props: ZA,
setup(a) {
const A = a, e = zA("reject", p("basicConfig")), t = async () => {
await Q.reject();
};
return (o, n) => (d(), y("div", er, [
C(mA, {
iconSrc: l(e).iconSrc,
color: l(e).color,
iconSize: l(e).iconSize,
width: A.width || l(e).width,
height: A.height || l(e).height,
shape: l(e).shape,
onClick: t
}, null, 8, ["iconSrc", "color", "iconSize", "width", "height", "shape"]),
l(e).showText ? (d(), U(gA, {
key: 0,
textStyle: l(e).textStyle,
color: l(e).textColor,
size: l(e).textSize
}, {
default: E(() => [
NA(W(l(v)("reject")), 1)
]),
_: 1
}, 8, ["textStyle", "color", "size"])) : z("", !0)
]));
}
});
const or = /* @__PURE__ */ Z(ar, [["__scopeId", "data-v-10a39409"]]), lr = { class: "btn-content" }, nr = {
options: {
virtualHost: !0
}
}, ir = /* @__PURE__ */ f({
...nr,
__name: "Speaker",
props: ZA,
setup(a) {
const A = V.isWeChat, e = V.isPC, t = a, { isEarPhone: o, isMuteSpeaker: n } = G(rA()), s = nt(), r = S(() => o.value ? "closedConfig" : "basicConfig"), c = S(() => n.value ? "closedConfig" : "basicConfig"), [{ deviceList: M, currentDeviceId: N }] = ot(hA.SPEAKER), T = S(() => {
var m;
return ((m = M.value) == null ? void 0 : m.length) > 0 && s.value === "speaker" && e;
}), I = A ? zA("speaker", r) : zA("speaker", c);
S(() => o.value ? v("speaker disabled") : v("speaker enabled"));
const D = async () => {
n.value ? await Q.unMuteSpeaker() : await Q.muteSpeaker();
}, h = () => {
if (e) {
const m = M.value.find((w) => w.deviceId === N.value);
return m ? m.label : v("speaker enabled");
} else
return n.value ? v("speaker disabled") : v("speaker enabled");
}, j = () => {
s.value = "speaker";
};
return (m, w) => (d(), y("div", lr, [
C(ft, {
color: "rgba(107, 117, 138, 0.5)",
show: l(T),
onHover: j,
trigger: "hover"
}, {
content: E(() => [
C(vt, {
isShowControlBtn: !0,
deviceType: l(hA).SPEAKER
}, null, 8, ["deviceType"])
]),
trigger: E(() => [
C(mA, {
iconSrc: l(I).iconSrc,
color: l(I).color,
iconSize: t.iconSize || l(I).iconSize,
width: t.width || l(I).width,
height: t.height || l(I).height,
shape: l(I).shape,
onClick: D
}, null, 8, ["iconSrc", "color", "iconSize", "width", "height", "shape"])
]),
_: 1
}, 8, ["show"]),
l(I).showText ? (d(), U(gA, {
key: 0,
width: "60px",
truncated: !0,
textStyle: l(I).textStyle,
color: l(I).textColor,
size: l(I).textSize,
lineClamp: 2
}, {
default: E(() => [
NA(W(h()), 1)
]),
_: 1
}, 8, ["textStyle", "color", "size"])) : z("", !0)
]));
}
});
const sr = /* @__PURE__ */ Z(ir, [["__scopeId", "data-v-c825445a"]]), cr = { class: "btn-content" }, rr = {
options: {
virtualHost: !0
}
}, ur = /* @__PURE__ */ f({
...rr,
__name: "SwitchCamera",
setup(a) {
const { localUserInfoExcludeVolume: A } = G(vA()), e = S(() => A == null ? void 0 : A.value.isVideoAvailable), t = S(() => e.value ? "basicConfig" : "disableConfig"), o = zA("switchCamera", t), n = async () => {
e.value && await Q.switchCamera();
};
return (s, r) => (d(), y("div", cr, [
C(mA, {
iconSrc: l(o).iconSrc,
iconSize: l(o).iconSize,
color: l(o).color,
width: l(o).width,
height: l(o).height,
buttonStyle: l(o).buttonStyle,
shape: "circle",
onClick: n
}, null, 8, ["iconSrc", "iconSize", "color", "width", "height", "buttonStyle"]),
l(o).showText ? (d(), U(gA, {
key: 0,
textStyle: l(o).textStyle,
color: l(o).textColor,
size: l(o).textSize
}, {
default: E(() => [
NA(W(l(v)("switch camera")), 1)
]),
_: 1
}, 8, ["textStyle", "color", "size"])) : z("", !0)
]));
}
});
const Mr = /* @__PURE__ */ Z(ur, [["__scopeId", "data-v-6eb55b3d"]]), dr = { class: "btn-content" }, Ir = {
options: {
virtualHost: !0
}
}, Nr = /* @__PURE__ */ f({
...Ir,
__name: "VirtualBackground",
props: ZA,
setup(a) {
const A = a, e = p(!0), { localUserInfoExcludeVolume: t } = G(vA()), o = S(() => t == null ? void 0 : t.value.isVideoAvailable), { enableVirtualBackground: n } = G(rA()), s = S(() => e.value ? n.value ? "closedConfig" : o.value ? "basicConfig" : "disableConfig" : "loadingConfig"), r = zA("virtualBackground", s), c = async () => {
o.value && (e.value = !1, await Q.setBlurBackground(!n.value), e.value = !0);
};
return (M, N) => (d(), y("div", dr, [
C(mA, {
loading: !l(e),
iconSrc: l(r).iconSrc,
color: l(r).color,
iconSize: A.iconSize || l(r).iconSize,
width: A.width || l(r).width,
height: A.height || l(r).height,
shape: l(r).shape,
loadingWidth: l(r).loadingWidth,
loadingHeight: l(r).loadingHeight,
buttonStyle: l(r).buttonStyle,
onClick: c
}, null, 8, ["loading", "iconSrc", "color", "iconSize", "width", "height", "shape", "loadingWidth", "loadingHeight", "buttonStyle"]),
l(r).showText ? (d(), U(gA, {
key: 0,
width: "70px",
lineClamp: 2,
textStyle: l(r).textStyle,
color: l(r).textColor,
size: l(r).textSize
}, {
default: E(() => [
NA(W(l(v)("virtual-background")), 1)
]),
_: 1
}, 8, ["textStyle", "color", "size"])) : z("", !0)
]));
}
});
const gr = /* @__PURE__ */ Z(Nr, [["__scopeId", "data-v-57c7f51f"]]), Tr = { class: "btn-content" }, pr = {
options: {
virtualHost: !0
}
}, Dr = /* @__PURE__ */ f({
...pr,
__name: "ToggleButtonPanel",
props: ZA,
setup(a) {
const { status: A } = Ve(), e = a, t = zA("toggleButtonPanel", p("basicConfig")), o = async () => {
A.value = A.value === "close" ? "open" : "close";
};
return (n, s) => (d(), y("div", Tr, [
C(mA, {
iconSrc: l(t).iconSrc,
color: l(t).color,
iconSize: e.iconSize || l(t).iconSize,
width: e.width || l(t).width,
height: e.height || l(t).height,
shape: l(t).shape,
onClick: o
}, null, 8, ["iconSrc", "color", "iconSize", "width", "height", "shape"])
]));
}
});
const yr = /* @__PURE__ */ Z(Dr, [["__scopeId", "data-v-f7839a20"]]), Cr = { class: "button-group" }, Sr = {
options: {
virtualHost: !0
}
}, jr = /* @__PURE__ */ f({
...Sr,
__name: "ButtonPanel",
setup(a) {
const A = p(null), e = p({}), { isGroupCall: t } = G(rA()), { status: o } = Ve() || {}, n = p(!1), s = p(!1), r = p(""), c = za();
ue(() => {
n.value || (t.value && !V.isPC && c.value !== null ? n.value = !0 : n.value = !1);
});
const M = S(() => iA([
"button-panel-container",
{
pc: V.isPC,
mobile: !V.isPC,
h5: V.isH5,
groupCall: t.value,
singleCall: !t.value,
close: (o == null ? void 0 : o.value) === "close",
open: (o == null ? void 0 : o.value) === "open",
showBackGround: n.value
}
])), N = iA([
"toggle-button-container",
{ h5: V.isH5 }
]), T = V.isH5 ? {
transitionProperty: "width,height,left,top",
transitionDuration: "0.3s",
transitionTimingFunction: "ease-in"
} : {};
function I(w) {
A.value = w;
}
const { layout: D, config: h } = Cc();
uA(h, () => {
const w = {}, H = h.value.flat();
for (let b of H) {
const { name: x, props: B = {} } = b;
B.showText !== !1 && (B.showText = !0), w[x] = B;
}
e.value = w;
}, { immediate: !0 });
function j(w) {
s.value = w;
}
const m = {
[i.IS_CLICKABLE]: j
};
return CA(() => {
g.watch(
u.CALL,
m,
{
notifyRangeWhenWatch: i.MYSELF
}
);
}), DA(() => {
g.unwatch(u.CALL, m);
}), OA(Ca, s), OA(Sa, r), (w, H) => (d(), y("div", {
class: k(l(M))
}, [
L("div", Cr, [
C(lo, {
unit: "%",
onToggle: I,
layout: l(D),
focus: l(A)
}, {
default: E(() => [
C(kA, {
index: "accept",
height: "auto",
customStyle: l(T)
}, {
default: E(() => [
C(Hc)
]),
_: 1
}, 8, ["customStyle"]),
C(kA, {
index: "reject",
height: "auto",
customStyle: l(T)
}, {
default: E(() => [
C(or)
]),
_: 1
}, 8, ["customStyle"]),
C(kA, {
index: "microphone",
height: "auto",
customStyle: l(T)
}, {
default: E(() => [
C(Ar)
]),
_: 1
}, 8, ["customStyle"]),
C(kA, {
index: "hangup",
height: "auto",
customStyle: l(T)
}, {
default: E(() => [
C(Yc)
]),
_: 1
}, 8, ["customStyle"]),
C(kA, {
index: "speaker",
height: "auto",
customStyle: l(T)
}, {
default: E(() => [
C(sr)
]),
_: 1
}, 8, ["customStyle"]),
C(kA, {
index: "camera",
height: "auto",
customStyle: l(T)
}, {
default: E(() => [
C(Gc)
]),
_: 1
}, 8, ["customStyle"]),
C(kA, {
index: "virtualBackground",
height: "auto",
customStyle: l(T)
}, {
default: E(() => [
C(gr)
]),
_: 1
}, 8, ["customStyle"]),
C(kA, {
index: "switchCamera",
height: "auto",
customStyle: l(T)
}, {
default: E(() => [
C(Mr)
]),
_: 1
}, 8, ["customStyle"]),
C(kA, {
index: "inviteUser",
height: "auto",
customStyle: l(T)
}, {
default: E(() => [
C(Ga)
]),
_: 1
}, 8, ["customStyle"])
]),
_: 1
}, 8, ["layout", "focus"])
]),
l(n) ? (d(), y("div", {
key: 0,
class: k(l(N))
}, [
C(yr)
], 2)) : z("", !0)
], 2));
}
});
const io = /* @__PURE__ */ Z(jr, [["__scopeId", "data-v-6582c17d"]]), hr = { class: "singlecall-container" }, Lr = /* @__PURE__ */ f({
__name: "SingleCall",
setup(a) {
const { callStatus: A } = G(rA());
return (e, t) => (d(), y("div", hr, [
C(Qa),
l(A) === l(P).CALLING ? (d(), U(qa, { key: 0 })) : z("", !0),
C(ac),
C(ao),
C(io)
]));
}
});
const Er = /* @__PURE__ */ Z(Lr, [["__scopeId", "data-v-317c1d41"]]), mr = { class: "stream-loading-container" }, zr = /* @__PURE__ */ f({
__name: "StreamLoading",
setup(a) {
return (A, e) => (d(), y("div", mr, [
C(zt, {
mode: "dot",
color: "#FFF",
loadingWidth: "50px",
loadingHeight: "50px"
})
]));
}
});
const Kt = /* @__PURE__ */ Z(zr, [["__scopeId", "data-v-56b8bc56"]]), Ur = {
options: {
virtualHost: !0
}
}, fr = /* @__PURE__ */ f({
...Ur,
__name: "MediaContainer",
setup(a) {
const A = p("local"), e = p(null), t = p(!1);
be();
const { localUserInfoExcludeVolume: o, remoteUserListExcludeVolume: n } = G(vA()), { callStatus: s, callType: r, isShowEnableVirtualBackground: c, callRole: M } = G(rA()), { netWorkQualityList: N } = Ol(), T = S(() => n.value.length + 1), I = ma(), D = xl(e, T), h = Ea(), { isFloatWindow: j } = G(BA()), m = za(), { status: w } = Ve() || {}, H = !V.isPC, b = S(() => String(e.value) === "0"), x = S(() => !V.isPC && b.value && o.value.isVideoAvailable), B = S(() => x.value), F = S(() => x.value && c.value && V.isWeChat), tA = S(() => V.isPC || b.value), J = S(() => V.isPC || j.value ? "%" : "vw"), MA = S(() => [o.value, ...n.value].map((lA) => {
var SA;
if (j.value) {
if (((SA = h.value) == null ? void 0 : SA[lA.domId]) >= 10)
return lA.domId;
} else
return lA.domId;
})), WA = S(() => !(M.value === IA.CALLEE && s.value === P.CALLING && !j.value)), Me = S(() => {
let lA = "";
return M.value === IA.CALLEE && s.value === P.CALLING && !j.value && (lA = "hidden"), {
visibility: lA
};
});
function ee(lA) {
e.value = lA, m.value = lA, w.value = lA !== null ? "close" : "open";
}
function te(lA) {
var SA, nA;
return V.isWeChat ? !((nA = (SA = I.value) == null ? void 0 : SA.find((PA) => PA.userID === lA.userId)) != null && nA.hasVideo) : !lA.isVideoAvailable;
}
function de(lA) {
var SA, nA;
return V.isWeChat ? !((nA = (SA = I.value) == null ? void 0 : SA.find((PA) => PA.userID === lA.userId)) != null && nA.hasAudio) : !lA.isAudioAvailable;
}
function ae(lA) {
if (!N.value)
return;
const SA = lA !== o.value.userId;
if (!V.isWeChat && SA)
return;
const nA = N.value.find((PA) => PA.userId === lA);
return nA && (nA == null ? void 0 : nA.quality) >= 4;
}
uA([n, r], () => {
var lA, SA;
(SA = (lA = n.value) == null ? void 0 : lA[0]) != null && SA.isEnter && (A.value = "remote"), r.value === _.AUDIO ? t.value = !1 : t.value = !0;
});
const xe = S(() => iA([
"groupcall-media-container",
{
mobile: !V.isPC,
pc: V.isPC,
"two-layout": T.value === 2 && e.value === null,
float: j.value
}
])), ke = S(() => s.value === P.CALLING && (r.value === _.AUDIO && !o.value.isAudioAvailable || r.value === _.VIDEO && !o.value.isVideoAvailable));
return (lA, SA) => (d(), U(Ha, {
id: "source",
disabled: !l(j),
source: "#source",
to: "body"
}, {
default: E(() => [
C(eo, null, {
default: E(() => [
L("div", {
class: k(l(xe)),
style: eA([l(Me)])
}, [
C(lo, {
unit: l(J),
"enable-focus": H,
focus: l(e),
length: l(T),
layout: l(D),
onToggle: ee
}, {
default: E(() => [
(d(), U(kA, {
index: 0,
key: l(o).userId
}, {
default: E(() => [
C(_a, {
domId: l(o).domId,
"show-audio-stream": !l(o).isVideoAvailable,
show: l(MA).includes(l(o).domId) && l(WA)
}, {
"audio-stream": E(() => [
C(At, {
"user-id": l(o).userId,
username: l(o).displayUserInfo,
avatar: l(o).avatar,
"is-video-available": l(o).isVideoAvailable
}, null, 8, ["user-id", "username", "avatar", "is-video-available"])
]),
loading: E(() => [
l(ke) ? (d(), U(Kt, { key: 0 })) : z("", !0)
]),
"stream-info": E(() => [
l(j) ? z("", !0) : (d(), U($e, {
key: 0,
"is-self": !0,
"show-nick-name": l(tA),
showSwitchCameraButton: l(B),
showVirtualBackgroundButton: l(F),
showNetWorkStatus: ae(l(o).userId),
nickName: l(o).displayUserInfo,
isMuted: !l(o).isAudioAvailable,
volume: l(h) && l(h)[l(o).domId]
}, null, 8, ["show-nick-name", "showSwitchCameraButton", "showVirtualBackgroundButton", "showNetWorkStatus", "nickName", "isMuted", "volume"]))
]),
_: 1
}, 8, ["domId", "show-audio-stream", "show"])
]),
_: 1
})),
(d(!0), y(RA, null, ce(l(n), (nA, PA) => (d(), U(kA, {
key: nA.userId,
index: PA + 1
}, {
default: E(() => [
C($a, {
domId: nA.domId,
"show-audio-stream": te(nA),
show: l(MA).includes(nA.domId) && l(WA)
}, {
"audio-stream": E(() => [
C(At, {
"user-id": nA.userId,
username: nA.displayUserInfo,
avatar: nA.avatar
}, null, 8, ["user-id", "username", "avatar"])
]),
loading: E(() => [
nA.isEnter ? z("", !0) : (d(), U(Kt, { key: 0 }))
]),
"stream-info": E(() => [
l(j) ? z("", !0) : (d(), U($e, {
key: 0,
"show-nick-name": l(V).isPC || String(l(e)) === String(PA + 1),
"show-control-button": !1,
showNetWorkStatus: ae(nA.userId),
nickName: nA.displayUserInfo,
"is-muted": de(nA),
volume: l(h) && l(h)[nA.domId]
}, null, 8, ["show-nick-name", "showNetWorkStatus", "nickName", "is-muted", "volume"]))
]),
_: 2
}, 1032, ["domId", "show-audio-stream", "show"])
]),
_: 2
}, 1032, ["index"]))), 128))
]),
_: 1
}, 8, ["unit", "focus", "length", "layout"])
], 6)
]),
_: 1
})
]),
_: 1
}, 8, ["disabled"]));
}
});
const vr = /* @__PURE__ */ Z(fr, [["__scopeId", "data-v-0629f0d8"]]), wr = {
key: 0,
class: "dialog-main-header"
}, Or = { class: "dialog-main-title" }, Vr = {
key: 1,
class: "dialog-main-footer"
}, br = /* @__PURE__ */ f({
__name: "TDialog",
props: {
moduleValue: {
type: Boolean,
default: !1
},
isHeaderShow: {
type: Boolean,
default: !0
},
isFooterShow: {
type: Boolean,
default: !0
},
background: {
type: Boolean,
default: !0
},
title: {
type: String,
default: ""
},
center: {
type: Boolean,
default: !1
},
isH5: {
type: Boolean,
default: !1
}
},
emits: ["update:moduleValue", "submit"],
setup(a, { emit: A }) {
const e = {
OUTSIDE: "outside",
INSIDE: "inside"
}, t = a, o = p(!0), n = p(!0), s = p(!0), r = p("");
ue(() => {
r.value = t.title, o.value = t.isHeaderShow, n.value = t.isFooterShow, s.value = t.background;
});
const c = A, M = (I) => {
I === e.OUTSIDE && N();
}, N = () => {
c("update:moduleValue", !1);
}, T = () => {
c("submit"), N();
};
return (I, D) => a.moduleValue ? (d(), y("div", {
key: 0,
class: k(["dialog", [t.isH5 ? "dialog-h5" : "", a.center ? "center" : ""]]),
onClick: D[1] || (D[1] = pe((h) => M(e.OUTSIDE), ["stop", "prevent"]))
}, [
L("main", {
class: k(["dialog-main", [l(s) ? "" : "dialog-main-back"]]),
onClick: D[0] || (D[0] = pe((h) => M(e.INSIDE), ["stop", "prevent"]))
}, [
l(o) ? (d(), y("header", wr, [
L("h1", Or, W(l(r)), 1),
L("i", {
class: "icon icon-close",
onClick: N
})
])) : z("", !0),
L("div", {
class: k(["dialog-main-content", [t.isH5 ? "dialog-main-content-uniapp" : ""]])
}, [
q(I.$slots, "default", {}, void 0, !0)
], 2),
l(n) ? (d(), y("footer", Vr, [
L("button", {
class: "btn btn-cancel",
onClick: N
}, W(l(v)("Cancel")), 1),
L("button", {
class: "btn btn-default",
onClick: T
}, W(l(v)("Done")), 1)
])) : z("", !0)
], 2)
], 2)) : z("", !0);
}
});
const xr = /* @__PURE__ */ Z(br, [["__scopeId", "data-v-7a89cdf3"]]), kr = ["src"], Rr = ["src"], Br = /* @__PURE__ */ f({
__name: "TIcon",
props: {
file: {
type: String,
default: ""
},
width: {
type: String,
default: "20px"
},
height: {
type: String,
default: "20px"
},
isApp: {
type: Boolean,
default: !1
}
},
emits: ["click"],
setup(a, { emit: A }) {
const e = A, t = a, o = () => {
e("click");
};
return (n, s) => (d(), y("div", {
class: "icon",
onClick: o
}, [
t.isApp ? (d(), y("image", {
key: 0,
class: "icon",
src: t.file,
style: eA({ width: t.width, height: t.height })
}, null, 12, kr)) : (d(), y("img", {
key: 1,
class: "icon",
src: t.file,
style: eA({ width: t.width, height: t.height })
}, null, 12, Rr))
]));
}
});
const Ze = /* @__PURE__ */ Z(Br, [["__scopeId", "data-v-b989a330"]]), _t = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSI+CiAgPHRpdGxlPue8lue7hCAxNDwvdGl0bGU+CiAgPGRlZnM+CiAgICA8ZmlsdGVyIHg9Ii0xMC42JSIgeT0iLTUuNCUiIHdpZHRoPSIxMjEuMiUiIGhlaWdodD0iMTEwLjklIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJmaWx0ZXItMSI+CiAgICAgIDxmZU9mZnNldCBkeD0iMCIgZHk9IjciIGluPSJTb3VyY2VBbHBoYSIgcmVzdWx0PSJzaGFkb3dPZmZzZXRPdXRlcjEiPjwvZmVPZmZzZXQ+CiAgICAgIDxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjEwIiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiPjwvZmVHYXVzc2lhbkJsdXI+CiAgICAgIDxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwICAgMCAwIDAgMCAwICAgMCAwIDAgMCAwICAwIDAgMCAwLjEgMCIgdHlwZT0ibWF0cml4IiBpbj0ic2hhZG93Qmx1ck91dGVyMSIgcmVzdWx0PSJzaGFkb3dNYXRyaXhPdXRlcjEiPjwvZmVDb2xvck1hdHJpeD4KICAgICAgPGZlTWVyZ2U+CiAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJzaGFkb3dNYXRyaXhPdXRlcjEiPjwvZmVNZXJnZU5vZGU+CiAgICAgICAgPGZlTWVyZ2VOb2RlIGluPSJTb3VyY2VHcmFwaGljIj48L2ZlTWVyZ2VOb2RlPgogICAgICA8L2ZlTWVyZ2U+CiAgICA8L2ZpbHRlcj4KICA8L2RlZnM+CiAgPGcgaWQ9Im5ldyIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICA8ZyBpZD0i6Ieq5a6a5LmJ5raI5oGvIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNDU4LjAwMDAwMCwgLTMxOC4wMDAwMDApIj4KICAgICAgPGcgaWQ9Iue8lue7hC0zMiIgZmlsdGVyPSJ1cmwoI2ZpbHRlci0xKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDQuMDAwMDAwLCA2MC4wMDAwMDApIj4KICAgICAgICA8ZyBpZD0i57yW57uELTI0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMC4wMDAwMDAsIDI1MC4wMDAwMDApIj4KICAgICAgICAgIDxnIGlkPSLnvJbnu4QtMTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM4NC4wMDAwMDAsIDguMDAwMDAwKSI+CiAgICAgICAgICAgIDxjaXJjbGUgaWQ9IuakreWchuW9oiIgZmlsbD0iIzAwNkVGRiIgZmlsbC1ydWxlPSJub256ZXJvIiBjeD0iOCIgY3k9IjgiIHI9IjgiPjwvY2lyY2xlPgogICAgICAgICAgICA8cG9seWxpbmUgaWQ9Iui3r+W+hC00IiBzdHJva2U9IiNGRkZGRkYiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOC4wNDI2NDEsIDYuMjQyNjQxKSByb3RhdGUoLTMxNS4wMDAwMDApIHRyYW5zbGF0ZSgtOC4wNDI2NDEsIC02LjI0MjY0MSkgIiBwb2ludHM9IjYuMDQyNjQwNjkgMTAuMjQyNjQwNyAxMC4wNDI2NDA3IDEwLjI0MjY0MDcgMTAuMDQyNjQwNyAyLjI0MjY0MDY5Ij48L3BvbHlsaW5lPgogICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==", Pr = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iNDhweCIgaGVpZ2h0PSI0OHB4IiB2aWV3Qm94PSIwIDAgNDggNDgiIHZlcnNpb249IjEuMSI+CiAgPHRpdGxlPmljX2JhY2tfd2hpdGU8L3RpdGxlPgogIDxnIGlkPSLpobXpnaItMSIgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICA8ZyBpZD0iMDIuLeafpeeci+S/oeaBry3npLrkvovlpb3lj4siIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zMi4wMDAwMDAsIC0yMDAuMDAwMDAwKSI+CiAgICAgIDxnIGlkPSLnvJbnu4QtNiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDE3Ni4wMDAwMDApIj4KICAgICAgICA8ZyBpZD0iaWNfYmFja193aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzIuMDAwMDAwLCAyNC4wMDAwMDApIj4KICAgICAgICAgIDxnIGlkPSJpY19iYWNrX2JsYWNrIiBmaWxsPSIjNDQ0NDQ0IiBmaWxsLXJ1bGU9Im5vbnplcm8iPgogICAgICAgICAgICA8cGF0aCBkPSJNOS41MTIzMTA3MSwyNCBMMjMuNTE5ODI4NiwzOC43MjkwNDExIEMyMy43ODUzNzgsMzkuMDA4MjY4OSAyMy43NzUzMTY4LDM5LjQ0OTYwODIgMjMuNDk3MzE4NywzOS43MTY0NDQ4IEwyMS42MjU1OTE1LDQxLjUxMzAyMjYgQzIxLjM0NjY4MjcsNDEuNzgwNzMzMiAyMC45MDM1NjAyLDQxLjc3MTY1NTMgMjAuNjM1ODQ5Niw0MS40OTI3NDY2IEMyMC42MzUxMDMyLDQxLjQ5MTk2OSAyMC42MzQzNTg2LDQxLjQ5MTE4OTYgMjAuNjMzNjE1Nyw0MS40OTA0MDg1IEw0LjQ1ODc2Mzk5LDI0LjQ4MjM5NDggQzQuMjAxNzU0NCwyNC4yMTIxNDY3IDQuMjAxNzU0NCwyMy43ODc4NTMzIDQuNDU4NzYzOTksMjMuNTE3NjA1MiBMMjAuNjMzNjE1Nyw2LjUwOTU5MTUyIEMyMC45MDAwMzUsNi4yMjk0NDkwNiAyMS4zNDMxMTA5LDYuMjE4MzI0MjIgMjEuNjIzMjUzMyw2LjQ4NDc0MzUxIEMyMS42MjQwMzQ0LDYuNDg1NDg2MzQgMjEuNjI0ODEzOCw2LjQ4NjIzMDk3IDIxLjYyNTU5MTUsNi40ODY5Nzc0MSBMMjMuNDk3MzE4Nyw4LjI4MzU1NTI0IEMyMy43NzUzMTY4LDguNTUwMzkxNzUgMjMuNzg1Mzc4LDguOTkxNzMxMTQgMjMuNTE5ODI4Niw5LjI3MDk1ODkzIEw5LjUxMjMxMDcxLDI0IEw5LjUxMjMxMDcxLDI0IFoiIGlkPSJQYXRoLTIiPjwvcGF0aD4KICAgICAgICAgIDwvZz4KICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIHg9IjAiIHk9IjAiIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PC9yZWN0PgogICAgICAgIDwvZz4KICAgICAgPC9nPgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==", Wr = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTZweCIgaGVpZ2h0PSIxNnB4IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSI+CiAgPHRpdGxlPua4hemZpDwvdGl0bGU+CiAgPGcgaWQ9Iumhtemdoi0y5aSH5Lu9IiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgIDxnIGlkPSLliJvlu7rnvqTogYoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMjQzLjAwMDAwMCwgLTQxMy4wMDAwMDApIj4KICAgICAgPGcgaWQ9Ikdyb3VwLTEzNjQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY1MC4wMDAwMDAsIDM0My4wMDAwMDApIj4KICAgICAgICA8ZyBpZD0iR3JvdXAtMTM2MyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjkwLjAwMDAwMCwgNDYuMDAwMDAwKSI+CiAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTM1OCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDI0LjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0i5riF6ZmkIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMDMuMDAwMDAwLCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLDAgTDE2LDAgTDE2LDE2IEwwLDE2IEwwLDAgWiIgaWQ9IuefqeW9oiI+PC9wYXRoPgogICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDggQzEsMTEuODY1OTk5OSA0LjEzNDAwMDA2LDE1IDgsMTUgQzExLjg2NTk5OTksMTUgMTUsMTEuODY1OTk5OSAxNSw4IEMxNSw0LjEzNDAwMDA2IDExLjg2NTk5OTksMSA4LDEgTDgsMSBDNC4xMzQwMDAwNiwxIDEsNC4xMzQwMDAwNiAxLDggWiIgZmlsbD0iIzk5OTk5OSI+PC9wYXRoPgogICAgICAgICAgICAgIDxnIGlkPSLnvJbnu4QiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDguMDAwMDAwLCA4LjAwMDAwMCkgcm90YXRlKC0zMTUuMDAwMDAwKSB0cmFuc2xhdGUoLTguMDAwMDAwLCAtOC4wMDAwMDApIHRyYW5zbGF0ZSg0LjAwMDAwMCwgNC4wMDAwMDApIiBmaWxsPSIjRkZGRkZGIj4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQuMDAwMDAwLCA0LjAwMDAwMCkgcm90YXRlKC05MC4wMDAwMDApIHRyYW5zbGF0ZSgtNC4wMDAwMDAsIC00LjAwMDAwMCkgIiB4PSIxLjgxODk4OTRlLTEyIiB5PSIzLjUiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiIHJ4PSIwLjUiPjwvcmVjdD4KICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaLlpIfku70iIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQuMDAwMDAwLCA0LjAwMDAwMCkgcm90YXRlKC0zNjAuMDAwMDAwKSB0cmFuc2xhdGUoLTQuMDAwMDAwLCAtNC4wMDAwMDApICIgeD0iMCIgeT0iMy41IiB3aWR0aD0iOCIgaGVpZ2h0PSIxIiByeD0iMC41Ij48L3JlY3Q+CiAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIHg9IjAiIHk9IjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PC9yZWN0PgogICAgICAgICAgICA8L2c+CiAgICAgICAgICA8L2c+CiAgICAgICAgPC9nPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4K", Gr = { class: "title" }, Qr = { class: "main" }, Zr = { class: "left" }, Fr = { class: "transfer-header" }, Yr = ["value", "placeholder"], Xr = ["placeholder", "value"], qr = { class: "transfer-left-main" }, Jr = { class: "transfer-list" }, Hr = {
key: 1,
class: "icon-unselected"
}, Kr = { class: "select-all" }, _r = ["onClick"], $r = ["src"], Au = { class: "name" }, eu = { key: 0 }, tu = { class: "right" }, au = {
key: 0,
class: "transfer-header"
}, ou = {
key: 1,
class: "transfer-list"
}, lu = {
key: 0,
class: "transfer-text"
}, nu = { class: "transfer-list-item-content" }, iu = ["src"], su = {
key: 0,
class: "name"
}, cu = ["onClick"], ru = { class: "transfer-right-footer" }, uu = /* @__PURE__ */ f({
__name: "TTransfer",
props: {
list: {
type: Array,
default: () => []
},
selectedList: {
type: Array,
default: () => []
},
isSearch: {
type: Boolean,
default: !0
},
isRadio: {
type: Boolean,
default: !1
},
isCustomItem: {
type: Boolean,
default: !1
},
title: {
type: String,
default: ""
},
type: {
type: String,
default: ""
},
resultShow: {
type: Boolean,
default: !0
},
total: {
type: Number,
default: 0
},
isH5: {
type: Boolean,
default: !1
}
},
emits: ["search", "submit", "cancel", "getMore"],
setup(a, { emit: A }) {
const e = a, t = A, o = p(""), n = p([]), s = p(0), r = p([]), c = p(!0), M = p(!1), N = p(""), T = p("");
ue(() => {
const { list: b, isCustomItem: x, isSearch: B, title: F, total: tA, selectedList: J } = e;
if (x)
for (let MA = 0; MA < b.length; MA++)
b[MA].conversationID.indexOf("@TIM#SYSTEM") > -1 && b.splice(MA, 1), n.value = b;
else
n.value = b;
s.value = tA || b.length, r.value = J && J.length > 0 ? J : r.value, c.value = B, M.value = x, N.value = F, o.value = e.type;
});
const I = S(
() => n.value.filter((b) => !b.isDisabled)
), D = (b) => {
T.value = b.target.value, t("search", b.target.value);
}, h = (b) => {
if (b.isDisabled)
return;
let x = r.value;
const B = x.indexOf(b);
if (B > -1)
return r.value.splice(B, 1);
e.isRadio && (x = []), x.push(b), r.value = x;
}, j = () => {
r.value.length === I.value.length ? r.value = [] : r.value = [...I.value];
}, m = () => {
t("submit", r.value), T.value = "";
}, w = () => {
t("cancel"), T.value = "";
}, H = () => {
t("getMore");
};
return (b, x) => (d(), y("div", {
class: k(["transfer", [e.isH5 ? "transfer-h5" : ""]])
}, [
e.isH5 ? (d(), y("header", {
key: 0,
class: "transfer-header transfer-h5-header",
onClick: w
}, [
C(Ze, {
class: "icon",
file: l(Pr),
width: "18px",
height: "18px"
}, null, 8, ["file"]),
L("span", Gr, W(l(N)), 1),
x[0] || (x[0] = L("span", { class: "space" }, null, -1))
])) : z("", !0),
L("main", Qr, [
L("div", Zr, [
L("header", Fr, [
!e.isH5 && l(c) ? (d(), y("input", {
key: 0,
type: "text",
value: l(T),
onKeyup: Uo(D, ["enter"]),
placeholder: l(v)("Please enter userID"),
enterkeyhint: "search",
class: k([e.isH5 ? "left-uniapp-input" : ""])
}, null, 42, Yr)) : z("", !0),
e.isH5 && l(c) ? (d(), y("input", {
key: 1,
type: "text",
onBlur: D,
onConfirm: D,
placeholder: l(v)("Please enter userID"),
enterkeyhint: "search",
value: l(T),
class: k([e.isH5 ? "left-uniapp-input" : ""])
}, null, 42, Xr)) : z("", !0)
]),
L("main", qr, [
L("ul", Jr, [
l(I).length > 1 && !a.isRadio ? (d(), y("li", {
key: 0,
class: "transfer-list-item",
onClick: j
}, [
l(r).length === l(I).length ? (d(), U(Ze, {
key: 0,
file: l(_t),
width: "18px",
height: "18px"
}, null, 8, ["file"])) : (d(), y("i", Hr)),
L("span", Kr, W(l(v)("Select all")), 1)
])) : z("", !0),
(d(!0), y(RA, null, ce(l(n), (B) => (d(), y("li", {
class: "transfer-list-item",
key: B.userID,
onClick: (F) => h(B)
}, [
l(r).indexOf(B) > -1 ? (d(), U(Ze, {
key: 0,
file: l(_t),
class: k([B.isDisabled && "disabled"]),
width: "18px",
height: "18px"
}, null, 8, ["file", "class"])) : (d(), y("i", {
key: 1,
class: k([B.isDisabled && "disabled", "icon-unselected"])
}, null, 2)),
l(M) ? q(b.$slots, "left", {
key: 3,
data: B
}, void 0, !0) : (d(), y(RA, { key: 2 }, [
L("img", {
class: "avatar",
src: B.avatar || "https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png",
onerror: "this.src='https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'"
}, null, 8, $r),
L("span", Au, W(B.nick || B.userID), 1),
B.isDisabled ? (d(), y("span", eu)) : z("", !0)
], 64))
], 8, _r))), 128)),
l(s) > l(n).length ? (d(), y("li", {
key: 1,
class: "transfer-list-item more",
onClick: H
}, W(l(v)("View more")), 1)) : z("", !0)
])
])
]),
L("div", tu, [
e.isH5 ? z("", !0) : (d(), y("header", au, W(l(N)), 1)),
a.resultShow ? (d(), y("ul", ou, [
l(r).length > 0 && !e.isH5 ? (d(), y("p", lu, W(l(r).length) + " " + W(l(v)("people selected")), 1)) : z("", !0),
(d(!0), y(RA, null, ce(l(r), (B, F) => (d(), y("li", {
class: "transfer-list-item space-between",
key: F
}, [
L("aside", nu, [
l(M) ? q(b.$slots, "right", {
key: 1,
data: B
}, void 0, !0) : (d(), y(RA, { key: 0 }, [
L("img", {
class: "avatar",
src: B.avatar || "https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png",
onerror: "this.src='https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'"
}, null, 8, iu),
e.isH5 ? z("", !0) : (d(), y("span", su, W(B.nick || B.userID), 1))
], 64))
]),
e.isH5 ? z("", !0) : (d(), y("span", {
key: 0,
onClick: (tA) => h(B)
}, [
C(Ze, {
file: l(Wr),
width: "18px",
height: "18px"
}, null, 8, ["file"])
], 8, cu))
]))), 128))
])) : z("", !0),
L("footer", ru, [
L("button", {
class: "btn btn-cancel",
onClick: w
}, W(l(v)("Cancel")), 1),
l(r).length > 0 ? (d(), y("button", {
key: 0,
class: "btn",
onClick: m
}, W(l(v)("Done")), 1)) : (d(), y("button", {
key: 1,
class: "btn btn-no",
onClick: m
}, W(l(v)("Done")), 1))
])
])
])
], 2));
}
});
const Mu = /* @__PURE__ */ Z(uu, [["__scopeId", "data-v-cd3a18ba"]]), du = /* @__PURE__ */ f({
__name: "SelectUser",
props: {
isRadio: {
type: Boolean,
default: !1
},
isNeedSearch: {
type: Boolean,
default: !1
},
title: {
type: String,
default: ""
},
userList: {
type: Array,
default: () => []
},
total: {
type: Number,
default: 0
},
isShow: {
type: Boolean,
default: !1
},
isPC: {
type: Boolean,
default: !0
}
},
emits: ["complete", "search", "getMore", "update:isShow"],
setup(a, { emit: A }) {
const e = A, t = a, o = p(!1);
ue(() => {
o.value = t.isShow;
});
const n = () => {
o.value = !o.value, e("complete", []), e("update:isShow", o.value);
}, s = (M) => {
e("complete", M);
}, r = (M) => {
e("search", M);
}, c = () => {
e("getMore");
};
return (M, N) => (d(), U(xr, {
moduleValue: l(o),
isH5: !a.isPC,
isHeaderShow: !1,
isFooterShow: !1,
background: !1,
"onUpdate:moduleValue": n
}, {
default: E(() => [
C(Mu, {
isSearch: t.isNeedSearch,
title: t.title,
list: t.userList,
isH5: !a.isPC,
isRadio: t.isRadio,
total: t.total,
onGetMore: c,
onSearch: r,
onSubmit: s,
onCancel: n
}, null, 8, ["isSearch", "title", "list", "isH5", "isRadio", "total"])
]),
_: 1
}, 8, ["moduleValue", "isH5"]));
}
}), Iu = {
options: {
virtualHost: !0
}
}, Nu = /* @__PURE__ */ f({
...Iu,
__name: "BackGround",
setup(a) {
return (A, e) => (d(), U(Za, {
bgColor: "#22262ed9",
bgImage: l(QA),
customStyle: { position: "absolute", zIndex: 0 }
}, null, 8, ["bgImage"]));
}
}), gu = { class: "groupcall-container" }, $t = 30, Tu = /* @__PURE__ */ f({
__name: "GroupCall",
setup(a) {
const A = p(null), e = p("open"), t = p(!1), o = p(0), n = p([]), s = p([]), r = p(0), c = A, M = { status: e }, { callRole: N, callStatus: T } = G(rA()), { isFloatWindow: I } = G(BA()), { localUserInfoExcludeVolume: D, remoteUserListExcludeVolume: h } = G(vA()), j = async (F) => {
if (t.value = F, t.value) {
await H();
const tA = await Q.getGroupProfile();
o.value = tA.memberCount;
}
}, m = () => {
t.value = !1, g.update(u.CALL, i.SHOW_SELECT_USER, !1), r.value = 0, n.value = [];
}, w = async () => {
r.value += $t, await H();
}, H = async () => {
const F = await Q.getGroupMemberList($t, r.value), tA = [...h.value, D.value].map((J) => J.userId);
n.value.push(...F), n.value = n.value.map((J) => (tA.includes(J.userID) && (J = { ...J, isDisabled: !0 }), J)), s.value = n.value;
}, b = async (F) => {
try {
if (F.length <= 0)
return;
t.value = !1, g.update(u.CALL, i.SHOW_SELECT_USER, !1), r.value = 0;
const tA = F.map((J) => J.userID);
await Q.inviteUser({ userIDList: tA }), n.value = [];
} catch (tA) {
console.debug(tA);
}
}, x = (F) => {
F ? n.value = n.value.filter((tA) => tA.userID.includes(F) || tA.nick.includes(F)) : n.value = s.value;
}, B = {
[i.SHOW_SELECT_USER]: j
};
return CA(() => {
g.watch(u.CALL, B, { notifyRangeWhenWatch: i.MYSELF });
}), DA(() => {
g.unwatch(u.CALL, B);
}), M.status = p("open"), c.value = null, OA(Da, M), OA(pa, c), (F, tA) => (d(), y("div", gu, [
C(Qa),
l(T) === l(P).CALLING && l(N) === l(IA).CALLEE && !l(I) ? (d(), U(qa, { key: 0 })) : z("", !0),
C(vr),
C(ao),
C(io),
C(Nu),
C(du, {
isShow: l(t),
isNeedSearch: !0,
userList: l(n),
isPC: l(V).isPC,
total: l(o),
onGetMore: w,
onComplete: b,
onSearch: x,
"onUpdate:isShow": m
}, null, 8, ["isShow", "userList", "isPC", "total"])
]));
}
});
const pu = /* @__PURE__ */ Z(Tu, [["__scopeId", "data-v-8604f3c1"]]), Du = {}, yu = {
viewBox: "0 0 1024 1024",
xmlns: "http://www.w3.org/2000/svg",
"data-v-ea893728": ""
};
function Cu(a, A) {
return d(), y("svg", yu, A[0] || (A[0] = [
L("path", {
fill: "currentColor",
d: "M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"
}, null, -1)
]));
}
const Su = /* @__PURE__ */ Z(Du, [["render", Cu]]), Aa = "data:image/jpeg;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApo2cKDRs4UCFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBTRs4UGjZwoBcFNGzhQaNnCgFwU0bOFBo2cKAXBRI2cKACwAAAAAAAAAAAAAAAAAAAAAAAAA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", ju = "data:image/jpeg;base64,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AAAVOjT6Ee4cVT6ESELQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPoRHFU+hEC0FXFU+hEcVT6EQLQVcVT6ERxVPoRAtBVxVPPzI9wAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjOSgt7fMV6U3rzy6kgLgU6U+k+5DSn0n3IC4FOlPpeCGlPpPuQFwKdKfSfchpT6T7kBcCnSn0n3IaU+k+5AXAp0p9LwQ0p9J9yAuBTpT6T7kNKfS8EBcCnSn0n3IaU+k+5AXAp0p9J9yGlPpPuQFwKdKfSfchpT6XggLgU6U+l4IaU+k+5AXAp0p9J9yGlPpPuQFwKdKfSfchpT6T7kBcCnSn0n3IaU+k+5AXAp0p9J9yGlPpPuQFwKdKfSfchpT6T7kBcCnSn0n3IaU+k+5AXAp0p9J9yGlPpPuQFwKdKfSfchpT6T7kBcCnSn0vBDSn0vBAXAp0p9LwQ0p9J9yAuBTpT6T7kNKfSfcgLgU6U+k+5DSn0n3IC4FOlPpPuQ0p9J9yAuBTpT6T7kNKfSfcgLgU6U+k+5DSn0n3IC4FOlPpPuQ0qjeUXm+xAXAK3rPW6yX/AK5jk1X7dfgAAcmq/br8A5NV+3X4AAHJqv26/AOTVft1+AAByar9uvwDk1X7f/7AAHJqv2//ANg5NV+3/wDsAAcmq/br8A5NV+3X4AAHJqv26/AOTVft/wD7F8QAHJqv2/8A9hEqNeCzUlU6ssmBIMYSU45rsa3GQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGeSzbyAAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AZAx049fcNOPX3AVz11HnzZJANpzk1s/QACG0k22kks228kkSc/wuq1Fh9G1pTcHdVo05S//wAedd+XszA2pcJMGjVdN30HJPLNRk496WXtzPUp1IVacalKcZwkk4yi000+dNbTUpWFlb2cbRUaSo6Oi4yS+sudve3vK6NOzwTCpuM5O3opyzclJrN55Ltb1LewPRBzcsaxdWn0i8Mpqzy0tHjPr6HS3bNez4m3iuNxssKtsQoU1Vp15xSTeTScW8+1ZbAPZBzVfHsStYU7y6wxU7Gcks+MTnFPY2uZ9WXVmeni2Kxw+lSVOlKvcV5aNGlF5OT3vqWa70B6QPChi1/bXlvRxayp0qdxJQhVpT0lGXMn89+sYljlazxaGH0LN3E6lNSgoyybk29Tz1JJJtsD3QePVxK9s8Mde8sXK6dTQhRovSTzWabazyW3P9Sipi2J2VW2eJWNGNCvUVPSpVG3CT2Jp6nsezdtA9epe29K8o2c5tVq6bhHRbTSTb17FqXObB4GIfxZhH+yr/az3wAAAxg9KOlllmZFdL0a9v5lgFdatTt6M61aahTgs5SexLeed5RYP6/T7mZ8IP3Fe/dM8zBrnBI4TaxuKlkqqppTU9HST689eYHtzxC0p0KNadeKp12lTk08pNrNJaucmre0KV7Qs5ykq1dScFk2mkm3m+bUjQxu5o2dCyTtKNeE68YQjOKyhmnk0stTXMUYh/FmEf7Kv9rA98htRTk9SSzeo8a+xW6+kHh2FW0K9xCKlUnUk1CmnsTy1t61z8/blnheKXFe8rYfiFvGhd04qeUHnGcXks0+1/OTA9C0u7e9pcda1Y1KeejpRzyzW1a+0m6uaFpQlXuaip04tJyexZvJeJz+D/8AxnCO+wx6qVdcdRXNvaXszX/qW4z/API41Y4Ss3Sg+UV92S1JPt2e1AdBGSnBSi81JJp5ZamSeViWIXdG6o2dhacdXqpyc55qnBa9rS26nqz/ADRVY4perFPozE6FGFaVPjIToybjJZtZZPWtj7gPaB5uG4nO8v8AEbWVOMFaTjFSTbcs89b3bPEm2xGVbGL2wdOKjbRhJTTectJZ61zZZgX2V/b30asreUmqVR05Zxayktv5m0czwdlWhZYpK2pxq1ldz0YSlkm9W18xr8GrjFHK4jC2hUpO6aqzlV1wzyzSXOktaA64AAYxeeerLJtGRXT/ANf+5lgA0rjFMPtarpXN3SpVEk3GUsmk9hunKVeQ+WV19I8n4rky0eP0dHSzjllpas8s/ED37XErG8qOna3VOrNRcnGLzaWaWfe13l1vdULlTdvVjUUJaEnF55SW1PrNawhhLnOeGxsnOKUZyt1DNJ60m48zy593UaOHYjS+j8TuqNnTo8mqVHKMHkqjjHPNvLU37QPdBz2H45iOJOhUtcLytnNRq1ZVEsteTcU8m0lz5PnRdc4xdVL6rZYTaRuKlFLjak56MYvd1v279zA9sHkWOL1bqjeQqWrpX1pHOdByzTeTaya5nl1+0wWPQfB54txX1lq4rS/1aWWWeXt2bAPaB46x2m+Dzxbi0so+j0v9Wejlnlv58thN5i1e3oWcaVlKreXUU1SUsoweSbzllzZ/mB65rU762qX1WxhNuvRipTjotJJ5Na8snqa2HnW+K3tPE6NhidpTpyrxbp1KU9KLaWbTT1835GvYfxniv3VP+2IHs2l7b3jrK3m5OjN05pxayktq17fYbJz3Bf0uLf8ALn+bOhAF9mk9OXPnl4ZlBfZeZU/3/wCEBtAAIaV5ilhYzjC8uqVGUlmlN5Zoi0xXDr2o6dre0atRLPRjNN5dm08DGoU58NMHjWjGUHSnmppNbJbzXx+jZRx7CI4XCnC+ddOfEpL6ua87LqT28yYHamvcXdvaumritCm6s1CGk8tKT5jw8Q4Q3VvjNTCrTDXdV9BSptVMk29evNaktevPuzIvsQq0qGFyxbDKLuKt0oaGkmqbz1ST182sDpQeRHF3HhBLCa9BU9OlxlGrpek3rLLqfcTfYq7bFbLDqNDjqty3KX1suLgv9WzXzgesDwrnFMSqYjVs8Lw+M+IWc61eThBt8y1a/wD8lmDYvUvp3lC7t1bXNnJRqRUtKOTWpp+xgeyDmKWO4piUqtXB8MhVtKctFVK1TRdRrcub57C6rwgr08AWKrDqilCajWo1G4uC2ZrVr5gOhBoXWJULfCJ4mpKVFUuMjzaWa1L2meGXNW9w+hdV6Kozqx0uLUs8k9nMBuAADSmtG7klslFS9ueRkY13lea/s1+bGnHr7gMgY6cevuGnHr7glkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19w049fcBkDHTj19xknms08wAAAAAAAAAAAAAAV5563z7Cwqj5vsAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGH+t/PMSQ/PfXrJAHgcLberPD6VzQjpStaqquOWecVtfs1PszPfGrY9aYHh1ngWN2tK6u50pRhF5KdVwcG8m00mtepbfYeFZUKlfgJdQpRcpKq5ZJa2k4t+Cb9h088CwqdR1JWFFybzeUck/YtXgb1GjSoUlTo04U6a1KMIpJexAcjC3wiphXKamOX3FunlOlymLa1a46LWvdl/gsxynRjwbwuFDjJUHXp6HGpaTi4yazWWWxnQfQ+GOrxrsKDm3m3oLbvy2GxXtqFxCMLilCpGMlKKnFNJrUms+fWwPJ4Xfw9cf7of3I0OE1GKvMKuLipVo2qThOrSllKDex55PLu2JnT16FK5pOlcU4VKbybjNJp5PNamKlGlWpOlVpwnTksnCUU012MDlqtlhELizjLFr67nOrF0oRrxqLPPU2stS6zcmk+HFNtJtWja6nm0erbYZYWlTjLa0pU55ZaUYrNLqfMX8no8o5S6UOOUdFVNFaSW7PbkB5fCTEa+H2EJ2zjCpVqqnxklmoJpvPLZzc5z+Lwo0Kljp4tVvriVeE5Z1E4RiudRWpZtrLXszO1rUaVxSlSr041actsZJNP2M1o4Th0KLpRsaC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Heg4LlWN9O7/AAscqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5VjfTu/wALGfHQ5XVrh3oOC5VjfTu/wscrxvp3f4X8Bnx0OV1a4d6DguVY307v8LHKsb6d3+FjPjocrq1w70HBcqxvp3f4WOVY307v8L+Az46HK6tcO9BwXKsb6d3+FjlWN9O7/Cxnx0OV1a4d6DguVY307v8ACxyrG+nd/hYz46HK6tcO9BwXK8b6d3+F/Acqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5VjfTu/wsZ8dDldWuHeg4LlWN9O7/CxyrG+nd/hYz46HK6tcO9BwfKsb6d3+F/AjlWN9O7/AAsZ8dDldWuHeg4PlWN9O7/C/gOVY307v8L+Az46HK6tcO8BwXK8b6d3+F/Acqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5VjfTu/wsZ8dDldWuHeg4LlWN9O7/AAscqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5VjfTu/wALGfHQ5XVrh3oOC5VjfTu/wscqxvp3f4WM+OhyurXDvQcFyrG+nd/hY5XjfTu/wv4DPjocrq1w70HBcqxvp3f4WOVY307v8LGfHQ5XVrh3oOC5VjfTu/wscqxvp3f4X8Bnx0OV1a4d6DhIYxi1pUi6tWpr/wBFWGpnXYXiNPErVVoJxktU47cmd0XYq7lbaNiuWI3p74boBGlFamz1UkgjTjv8GNOO/wAGBII047/BjTjv8GBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTjv8GBII049fcNOPX3ASCNOPX3DTj19wEgjTj19w049fcBII049fcNOPX3ASCNOPX3DTj19wEgjT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", hu = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwIAAAHYCAYAAAD+hl/YAAAACXBIWXMAAAsTAAALEwEAmpwYAAABZWlDQ1BEaXNwbGF5IFAzAAB4nHWQvUvDUBTFT6tS0DqIDh0cMolD1NIKdnFoKxRFMFQFq1OafgltfCQpUnETVyn4H1jBWXCwiFRwcXAQRAcR3Zw6KbhoeN6XVNoi3sfl/Ticc7lcwBtQGSv2AijplpFMxKS11Lrke4OHnlOqZrKooiwK/v276/PR9d5PiFlNu3YQ2U9cl84ul3aeAlN//V3Vn8maGv3f1EGNGRbgkYmVbYsJ3iUeMWgp4qrgvMvHgtMunzuelWSc+JZY0gpqhrhJLKc79HwHl4plrbWD2N6f1VeXxRzqUcxhEyYYilBRgQQF4X/8044/ji1yV2BQLo8CLMpESRETssTz0KFhEjJxCEHqkLhz634PrfvJbW3vFZhtcM4v2tpCAzidoZPV29p4BBgaAG7qTDVUR+qh9uZywPsJMJgChu8os2HmwiF3e38M6Hvh/GMM8B0CdpXzryPO7RqFn4Er/QfBIQM2AABNJUlEQVR4Ae3dCbyM9eLH8e84cxZbJF1SkftPqFs3hXQrXEVCiFK0CVkTEtq43bRKlijltitLSsguskYoUmnRTSkiS3bnHMeZ//P75cw9x9lmzpkzM+c8n7fXvGbmmd/Mc2Yx8/v+tsez+3CST8gTj/KOFx1AQcvPd1Qg+B7Lu1C8N7z+APLJV0wAAAAAXIcgAAAAALgQQQAAAABwIYIAAAAA4EIEAQAACqGCngwOoOgjCAAAUEgRBgDkB0EAAAAAcCGCAAAAAOBCBAEAAADAhQgCAAAAgAsRBAAAAAAXIggAAAAALkQQAACgEGMJUQB5RRAAAKCQIwwAyAuCAAAAAOBCBAEAAADAhQgCAAAAgAsRBAAAAAAXIggAAFAEMGEYQLAIAgAAhJlPBYMwACAYBAEAACKgoMIAAASKIBABfPkDAAAg0ggCeZTX7ldCAAAAAKIBQSAPCAEACgO+c6If7xGASCIIhAlf9gAige+e6Md7BCBSCAIAUMRR0Yx+vEcAIoEgAAAuQEUz+vEeAQg3gkAY8OUOIBrwXRT9eI8AhBNBoIDxpQ4gmvCdFP14jwCEC0GgAPjSnQAg2vDdFP14jwCEA0EgxPjyBlAY8F0V/XiPABQ0r5BvfFkDKIzSf3fl9fgoKFi8RwAKEj0C+UQIAFAU8F0W/XiPAIQaQSAf+FIGUJTwnRb9mIMGIJRCGgQ2ff2VmjS4Ul9/9aVCISUlJdO2jxbM19xZHyopKUmRkNY1e/KX8Lgxo3XzDS115MgRhYp5ju3btLKnvDzfF58fpbWfrs6xzMGDBwMqB8AdqGAWHrxXAPIr4DkCF1armuX2BUtX6IxKZ9pK+6MPPaCzK1fWBX+7ULnZv2+fZs2cbs/3/fGHjh49qt27ftcfzuW9e/bot+3b9NyYF9Wk6XUZ7jfimaec23er8Unbs2Iq5fv3OY+3d68OHTigXbt2KTY2Vtc2a668yu6L98r6DfXyC2P1xKOD9cSw55Rf5vV8aMB92uO8Fr/v3KkPp3+gG2++JajHMOHEqHNZvQzbf9+5Q+VOKy+v16tDBw9kWw6AOzEuvfAw7xXvEYC8CmqycOu2N2no08Ps5WeffFzvvPWmSpU+xV43lclvNn1tL2cVGp4aPlItWrX2X4+Ni9OqFct1arnTVLx4cX37zdf6dtMmW67iGWeoTNmyznmlDI9hwsEvW3/WP69pbCuxWXnysUc1f84sGybSlClTVtVr1nTOy+icv/6fDQK7d+/SseRk5cRUluPj4+1l03JuKs3ZKX96eSecNNXSxYv19ZdfOvctl2W5BOe5nnpquRz3a0LAoPv6aOWypXpz8lRt+PwzPf6vwc5rUkaNr809AOWmTfPrdPEll2js+FcFADmhohn9eI8A5FWeVg0yFVXTmn/NtdeqdOnSmudUvMe/OFbPjh6rpie1tvft2V2rP1mhv1309wzbS5QokaEiOviBgTYIpA8LJ1u3Zo09v+zyf2Rbpne//rqry922wp3o9DKYoUod7rhTPe/tm6HcQ/ffp1UrVygnbzmV8FqX1raXJ7z+qr/lPDe3tGmZ7W3pw1RWTC+G+dvMa/biK6+reo2a9vTrL79oQJ979a/Hn9QNN96kvNq4Yb3279+nKxv8UwAQCCqa0Y/3CEBe5CkImJZq0+Leus2N+nzdWj1wXz/d3rFTphAwccKbWrRwvg0I51Stqvxas3qVPb+yfoNsy5hgYk7Gb0e3KSdnV66iOYuWZNo+a8Z0PXh/vyzvkzYUKlimN8OEkpz8tGWL+vfuqZ07dtgQcEntOv7b+g960D6vIQ8O1Ddff6X+Dzzk763IydLFi/TxRwv18utvOb0Upzm9JbPt9ivr1xcABIqKZvTjPQIQrDwFgfffnWwrw6eUKaOuHW9XQkK8bYE3k07TmF6D18a/rLPOrqwff9jsv+32uzrbCm3a+P00pvXeMBXmNDExMfpLhYr+65+u+sRW3quck/9QEUofvDdVP3z/ne7tPyCgynlWpkx8WyOHPa0zzzpbkz+Y6bxuZ2cq07XnPTr3vPM05IFB+mztGj36xNO68O8Ze1rMkKehgx/RHZ262Ot1612uT1YsV+/ud+vVCe9o3uxZdvt1jTKGKdPbcXKPR3ZBCYA7UdGMfkwgBhCMoIOA6QlYtmSJunTvYSvkPU4MuTl86FDGB/Z6nYprL//1dWs+tSvTmGEtJggsXrggy1b39K3m6SuiP/+0xYaEdh1uVU7eeesNOwHZOHTwoH/f6UNKm5vaKVjXNGmqylXOUZmyp2bYbvb13NNP6oILL8wxBJj7mfkPJhil918nJA0d8oit2N92513qO2BQjo/T6JomunDO3zXc2WeHG1vb19MEhLTH/e/332vxRwucwNXJXi9eooRGjxuvl18Yo+nvv6fff9+pfw19Ujfe0t7entZT0aN3n0zDpwDgZIQBACg6gg4CG9Z/ruPHU3Re9Rp2Qu+dJ1qec3PyEpVmLkD6+QCmMpqUlKilq9dlef8lixfZ80ZXN1agzFj4UDmvRg17OtnY0SN0yAlB/Qc9lOP9zZyI9M/XTD4eMewpfTB1qs6/4AJNfG96ptb97Jz+lwp6ZsRotWt/mxNCnlCLxler/W23a9AjQ/Ttt9/YMtVrnu8vb3oXzLyEm1tfbydON2vZSgCQV7Q6A0DREHQQaHRNY11ap65GPvuMGjS62rZefzh9mn7ZujXH+5lW+eysXrnStkybHoDsrFqxwtlXgmpfVk/Lly5xQsUq3TfwwUzlbr2jo//yiGFP2/PadS/LV2t3disM7dy5U1MnTVKjxo1V+pTSGYY15cSsmFTW6SEw4WD482Nsb0OzqxvaFZGCYSYeT3x/ug1YKSnH7LYvPv9M5/z1r/55EmlMkDLHebin7312vwAAAHC3PM0ReGjIv9X2+uv03pRJGSreeTV54gT/sQjMePuTV8Ux8wlMkPjHVVfZ4LH5u+/0+n/G6/pWbVStevUsH9McgGvau1MUCrmtMLRw3lx7CtTlV1yp8W9M0IAHH/Fvy24svlmKNa18dtKv/392lXN0wYUXZSpjwptZcejaZi0EAAAA5CkImCEy5//tQs35cKYNAte3bpPrfbI7eu2vv2x1egRW6KoG/9Tnn63VG6+O1+pPVtpKa1rL9YplS+2wobRhQS1atdLzI4bbScsPDP5XlvszIaVK1ap2ucz3pkzWjt9+05ChT2R7/IGcZFUJN0umDujTWw8OeVQdbr8zy/uNfu5ZvfLSi3p3xizVPP8ChUO/AYOy3G56CG68ub0AAAAAI09BwPj7xbX07qSJ9nL6ibjZyW5o0IvPj9blV15lVx0yQ3+eHzdenW5trx6dO2rcq2/YMLBk0UeKifHaA4kZZiWhK5zegbmzP1S/gQ9kmlxrxt+b4xp0uru7DQJmONOyJR+r8+0d/I+ZH3Z8/zNP68KL/q527bOevGwmEU91Xh9zzINwhYDcmPcpu2MhZLVqEBOIAQAAiq5iyqNSTguzmTScHTM0Jz0zTt9ULNOORGx8+cUXdn5B25tu9m8zKxG99s4k7d27x7l9g32cxQvnq94/rrCTk9O0aHWDXcFo6YlJxOm9OHqkvE5wMGP3DbN+/n/enKBft25Vx/bt7FCj/DCPb+YDmMm52fUwDHtyqJ1E3Kf/QEULU6n/cvOWDCdzXATDvDcn30YIAAAAKLry1CNgKudmmE/1mjXt9ZMrjPd066IEp3V/+PNjM2w3reRpk1hNZXzwAwNsq/qVDRpq/tw5/nImDHw4/88KvqnoHz58ONPByho1bqKSJUtqxrT31OS6Zv7tK5cv1dtvvq4nhj2XoZJuHnPyBzO0auXKfPcInFW5sv7ylwrqdXdntWp7o267s2OGg4yZoUgzP5hmX5dAVgIyR1We/v7UbG838xPMXIGsmCVJczoaMwAAAJCVoIKAWes+rUJqKr6PPvmUHujfT23b3WwrvuZ2M+nVrIffvVNHe2ThtPHzjwwaoK82fqEp0z+0Q3mmTZ1ij6Q7Ycp7Oe7TBAQzZChtWFAa8xiNGl9r5yn8vnOHHS606/edemhAf11+xVVqeUObTKv4mGU3zfb8MvMibu5wm933W6+9onfefEPXNmtm1/PfuGGDHv/XYBtO7u7RK6DHM0t7mlNWApksDAAAAAQrqKFBtS691A4lWf/NZnt+1GnVnz1zuj1oVXpmGE/v+/rbVXvMSkC//vKLPcCVqfibsftGqzY36rGnnsmxxdyMxTfDghpefXWGYUFpzOpCZnjSrBkz7PVTy52miy+5VE8/N1IFzfQ2mFDx3odzNOrFl7Tt11/VtkUzDXlwoO0peWLY8DxNTAYAAADCIaiaarFiMRmGwLz56iuqXqOm/nbhRTp5oc7OXbvbnoHk5GS1vq6JXc3GjEM3E1KbXd9S/3dutUyt82ZloPTeeGW8HRZ0tdPyb8KEafE/eOCADjgn0wtw6MTRjM08g05du9mK9+gXX1agDuzfn+VE5++/+1aBMsOktv36iz0GwF8qVLBhaf6cObqpZQvdctvtTlhpx7r9AAAAiDp5brL+bO1arf9snR2Ln8ZUrE0PQFpLuBm+s+zjxbaCf/7f/ua0/l+sPXt2Z9tS/vvOnf7LpoJtjilgDOx3rz03IaRMmTJOy385lXNa/82BuUzFe/1nn+mbTV+HdXWebzdtsgFkltMjcjzluO3x6HBHRzsHou/9A/X2m29o5LBnNO750bqpfQfd3rGTnbScnunxOHTwQK77Mq9FbgcrK3da+UyrJ6VngtPx48czbd/1++/2/JDzt2S1jzInDnwGAACAoiXPQSA21muXzrz2xCRec5RhM+H1/j736LzqNew2U4FdMHeOal7wZwgwAeChIY8G9PimUjvu1ddtsKhQsaLKlz89y3Jm0nKn29pr1vQPgg4CpzihIquVcWbNmK5FC+Zn2GaWIf1y4xd2DoDZp+mdqF23nu3laN6ydYYj+ZrAMuDBh9W1Ry+9O3miJk94SxNef03Xt26tBwY/6q+wT3j91WyX80zv83Vr1aTBlTmWeWvyVCcU1c729o4dbsnxyMUT3njNnk7GZGQAAICiKc9B4KKLa9lTmmuaXKu3331fn676xFbeDVPhHfDQI7riqvp5Gi9vhh3lxhxV987Od+ufVzdWMK5vfYMdYpQVE2RMBf+MSpX820wImPzOBF1c61I7zOmyyy+3E5RzYuY13N29p+64q7Pmz5mt//6wOUOrvQkh4VqiM7sjFwMAAMCdPLsPJ/kEAAAAwE18eT6gGAAAAIDCiyAAAAAAuBBBAAAAAHAhggAAAADgQhz6FgAAAPnnCbAcy9REDXoEAAAAkH8+BVbJDzQwoMARBAAAABBehIGoQBAAAABA6NAzUGgQBAAAABAZhIGIYrIwAAAAQu/kXoHsKv0eMYE4QugRAAAAQGTRMxAR9AgAAACg4OXWQ0DPQNjRIwAAAIDoQM9AWOWrR+D3nTt1W7u2mrNoibzejA+147ftmjb13Rzvf02TpjqvRg39tn2bmjS4Ul9u3pJj+Y8/WqhvNn1tL59dubIOHDig/fv2ZSjT5qZ2qnhGJQEAACCKZddDQM9A2AQVBA4ePKgJr7+aYduB/fv09NB/q9xpp/m39by3r1O5364Nn3+m8W9MsNtefH6U/zaja8fbVbnKOTYIpH/8Pj266siRw6rfsJHdtuO33/Tlxi/0wex5WuwEgcsu/4e2b9umz9au1ZrVq/TqhHd0RqUz/Y95+RVXEgQAAAAKM8JAWAQVBA4dPKBxY0ZnaLlPq9jnlWnlX71qpb1sQsbfa12in7f86H/cKe+8LZ8v4ydh0cL5uv+Bh2wQmPD6aypVurTd/svWrQIAAEAhRMU/7PI0NGjl8mU69dRyOrVcOd3Zvp0WLF1ht/fo3FFDn3lW5cufbq+binlaT8C6NZ/a87TraZX2f17TWImJifpo/jxb+f/5py26p1sX/75MSGjStJn/+u87d2jbL7+o1qW17fXb7+rk7xEwPRAAAAAAcpenIGAq8bNnztCTzz6nlJQUO8Y/JibGDuNJCwGGGcef1rJ/8tCg9JX2GR+879zfqyf+/S8Neniw3WYq/KVKn2Jb/Z8Y9py/rNlW/vTT9dXGjfY6PQIAAABA8IIOAvHxCWp0zTUaN2aUDQF1LqvnVOo/t5XwBo2uVrA+XfWJvE6IMHMN6tarpw+nT1PLG9pq7uxZdgJy67Y3qUSJEv7y5nLHzndr0ttv2evNrm+pLnfcqhXrNtiQsfn77wQAAAAgZ0EFgf3796vSmWfqLxUqqlr1Gtr01Ze6sn4DbXd6BBbMna0hQ5/wl93266/a6bTq5zY0aPbM6era8x4t/XixGl97nd125MgRO/E3KTFRr7z1Tqa/o0rVqpoza6a9fFr58rq0Tl0tWjDfTiaudt55zqm6AAAAAGQvqCBghvP87aK/28sDH3zEDtG56OJa2vzdd3ZSr7mc5ofN3+uKK+vnOjTosaeG2aFF6X276WulpqbaHof//rBZl9Su479txdIl2rNnt+pdcaV+nTLZbhvw0GDdcsP1evGV1zOUBQAAAJC1gIOAqZS/8+Yb6nBHR3+lPs36z9apTNky/u3tb7/D9hA8NXykgjVl4tuaPWOGho18XsePp2jwoIFq066dHSJkXNmgoVq0am0vv+8EgWVLPtb3335jQ8CYkSP0wOAhql6jpgAAAABkL+AgkJycrN733a8mTa/LtawZBnRutep2KdA0ZcqWtedzPpxhhw3FJySodt26Ge731GOP2om//3nrbcXHx9tt5rJZVtQM/UkvMfGoSpYsaQPKg0P+becTjHphnF77z8s69dRT7fAlAAAAAFnz7D6cxKqtAAAAgLv4igkAAACA6xAEAAAAABciCAAAAAAuRBAAAAAAXIggAAAAALhQUAcUAwAAAPLEc+K8KK1X6VGhFlQQ8Pl8OnbsmHOeKgAAACBgBIEC4lFMTIw9plawAr6HDQDHklU8Pk7FitGRAAAAAESDZKeenpicpPjiJeTxBJ5OAqrRp6am2hBwapnSTghgWgEAAAAQLRISEnTk6FEdSXLCgHM5UAHV6lNSUk70BBACAAAAgGiTEB8vHT8e1H0CqtmbOQHFihXy2RAAAABAEWUa7IOdx0sTPwAAAOBCBAEAAADAhQgCAAAAgAsRBAAAAAAXIggAAAAALkQQAAAAAFyIIAAAAAC4EEEAAAAAcCGCAAAAAOBCBAEAAADAhQgCAAAAgAsRBAAAAAAXIggAAAAALkQQAAAAAFwoqoLA4sWLdG3ja7Rzxw4BAAAAKDheRYHt27frsX8/ql2/79KPP/6osmXLCgAAAEDBiWiPQEpKisa//LLatG6lBg0a6plnn9WFF16k+IQEAQAAACg4EQsCn3yyUs2aXqv//vCD5i1YqPYdOuibTZt04UUXKpSmTXtfe3bv9l9f9NFHAgAAACJt7969iqSwDw0ylfInn3hCm5xK/9PPDNMll17qv23DhvX6299CFwSSEhP15uuvq02btv59fzhzpv773/+qa7du/nJvvPaaVn+6WjVq1NT0D6ap9Q1t9NOWLUpMSrTbPnDCxMxZs1WmTBkBAAAA+eXz+TRowAB17d5NderUVSSELQiYYUDvvD1B/xk/Xp06d7bDgLzejLtf//l6tbv5ZoXKokWLdIvT0/CGEwb27dtnt51TtaqOHDmiUSNH2uu33367AAAAgHDyeDwaNXq07rmnl3r2UkTCQFiCwBcbNuhfQ4aoyjlV9P4H01WhQoVMZUxQ2Lr1Z/3f/52rUHnnnbfVuUsXVa9eQ4MfeVivvf6G/7bRThAwcxFOK19eF9eqpXqXX64aNWuqb79+6tm9ux4ePFhnnnmmLVu5SmUlxMcLAAAACJWSpUpp7NgXIhYGCjwIDBn8iCZNnKh+/e6zrfPlypXLstx///uDqp13XqZegrxavmyZPlm50gYBU6HfvWu3Dh48oNKlT7G3r1ixQsOcXgkzfGjJkiV227x58+z55h8267VXX/GXNT766CM1b9FCAAAAQKikhYG7Ot6p4SNGqnLlygqXAp8sfJ5Tue9w66367PPP1O7Gtqp9SS3n/Eb1v6+fVq9a5S+38YuNOv/88xUqc+fO1W3phv1cVf8qJxwst5dNIDhwYL+q/vWvtlfA9AJ8vHiRv2zz5i38IcDMFbDbCAEAAAAoAMucBuxKTsN1pUqVFE4F3iNw2+13ZLhuhgD98ssv+urLjXr4oQc1f+FHthfgq6++VO3adRQqTz71lH8egHFt06Z69ZVX1Kx5c33k7LNZs+YCAAAAImnunDmaP3+ehj83ImQjYwIV9uVDzROsWrWqrm/Zyg4Fmjljht2+Yf161Qxhj8DJLrro73auwp9DgT5W02bXCQAAAIiUSIYAI6IHFOvbt59eGDtGhw4d0rZt23TuuaGbKJyVJcuWK/lYsrb8uMVOIAYAAAAiZfPm7yMWAgzP7sNJvtwKJSUlqlScVwkFcMTf7t266uyzz9bm7zfrjbfeUiiZoUHVq1fXd999l22Z3G5PY5579x49BAAAAESjXXv/UEKp0oEW90U8CHz7zTe6rum1urtrVz308CMCAAAAELxgg0BEhwYZZu1+syJPvXqXCwAAAEB4RLxHAAAAAED+FboeAQAAAADhRxAAAAAAXIggAAAAABQVvhOnABAEAAAAABeKzNELAAAAABSck3sFPJmL0CMAAAAAuBA9AgAAAEBRl8W8AXoEAAAAABciCAAAAAAuRBAAAAAAXIggAAAAALgQQQAAAABwIYIAAAAA4EIEAQAAAMCFAgoCHk8xpab6BAAAACD6pKam2jp7MAIqHRsbq6NJyXYHAAAAAKJLUlKSU7OPCeo+AR1Z2OPxyBMbpz/2H1Tx+DgVK+YRAAAAgMhLPpaipOPHFZ9QIqj7BRQEDNMrkBoTo6MpKfKlHBcipCAyGKO+ABR1Bd1+xfdo0ZXTZ4f3HVHBI2+MVwlxCQpWwEHAKFasmOLi4oQIIggAQN4QBpBfJ3+GeM9RyLFqUGHhUeh/xHziSwyAexT09x2jZou+kz9DBfHbDIRRUD0CPp9Px44dc86ZNBx29AQAQGjQM4BQSfss8Z4jojyKiYmR1xtUtd4K+B42ABxLPjFZOPgdAQAAAAi9ZKeenng0yU4WNov8BCqgGr1ZNtSEgFPLlLbzBAAAAABEh4SEBB05elRHkkwYCHzScEC1+pSUlBM9AYQAAAAAINokxMc7rffBrewZUM3ezAng2AEAAABAdDIN9sHO46WJHwAAAHAhggAAAADgQgQBAAAAwIUIAgAAAIALEQQAAAAAFyIIAAAAAC5EEAAAAABciCAAAAAAuBBBAAAAAHAhrwAAAAAUDZ7Ai9IjAAAAALgQQQAAAABwIYIAAAAA4EIEAQAAAMCFwh4EFi36SH87v6aqVqnsP5nrZjsAAACA8AjLqkF79+7V0aNH7eUnH39c770/TTVq1vTf/u0336hXzx6qUePPbcWLF1e5cuUEAAAAIAi+wIsWeBB4adw4vfH6a0pISLDXG119TYYQYJjrDRr+U7e2v8VeP3TokLrc3VXde/QQAAAAgNDz7D6clGtuSEpKVKk4r78yH4ya552nz9avV4mSJTNs37Ztm3777TedU6WKyp9+eobbjhw+rEtr1dI333+v/Fi6ZImqOfuvVKlSrmX37N6tzz//XI2bNNHq1avstnr1Ls+y7MoVK3TFlVfay6Zs2TJlM4UbAAAAICdm1EwoR8Hs2vuHEkqWDrS4r8B7BBKdEJE+BJhK/oMPPqAN6zeocuXK2rp1qy6udbGeeuppfzlzbu6XXyYIlCxVSgvmz3d6Jl7ULe07+G/7YNr7ata8ufr27ad4J+C8995UnX12ZRsIenTrpjZt22r1qtU2/JzcM/H5559pwoS39NLL422Zc86pQhAAAABAwHw+nwYNGKCu3bupTp26ioSwTxY2IaBixYpa9PHHmvDOO/bcXDfbQ2nSpIlav2G9pk6Z4rTs18uyN6N7j542BBiLPlqkq6++Wo899m/NnjtPg4f8S6mpx1WiRPFM9+t9bx91vOsu9b33XgEAAADB8ng8GjV6tF584QWtXbtGkRDWIGCGA5megAEDB8nr/bMzwpyb62b77l27FCrtndb/WhfX0k0335xra/3aNWtUvnx5jRjxnD5dvVrvOuHBJLTly5c7XTZ/qOOdd2j6B9OUlJiorl06a5rTm2CGDY16/nk7bCo+PvghUwAAAHA3M3Jl7NgXIhYGcg8CnhOnEDBzAsxwoLQQkMZcN9t/+vlnhdpv27dru3My4/j79utnT2nMcCFzmzk3HnzoYX/Pwc7fd6pChQoZHsv0Hox/5VV7+S4nHBhJiUnO9ngBAAAAwUoLA88+84wdMh9OOc8RCFEASGMmBpsnmJKSkiEMmOtbtvyoM844Q6GyZcsWOzSoVOlSOnT4kBo2aqRRI0fa20wY+GzdOjs0aPP336txk2u1bOlSe9tdd3XS+vXrdeTwEY0ZO1alS5/i9FasV5myZf2P3aZNW3syzGPTIwAAAIC8WrZsmSqdeWZAC9yE0v9q4yGu9GfFrA5kJgY/O+wZ//AgEwLM9Utr19aZzgsQKqal3wwNqt+goVYsX+7fXtap0JtAYPY3aeJEOxH4DOdFN0HAzCvYtGmTOnfpopEjRzh/17Py+VJ11llnqcOtt2rhggX6+uuvM+zH3K906dJ2eFGadjffHPY3EgAAAIXP3DlzNH/+PA1/bkSmUTN5EkSd3hvsHfLLrA5kJgZf/c9/Zlo1KJSuuOIKLVq40F7+44+9ds7AkMGDdWfHjnZbk2uv1bCnM+7TlNm/b7+mTp2qPn362rkBjz/xpJ3bYHoGzNKi5pRm2vvvaefOnUpOTlYPJ1DEJ9AzAAAAgMCEPAQEyRvOEGCYpUFHPz/GfxwB09puVg0qSPcPGKD6V16pFtdfr+YtWtjx/Ws+/VRDH388QznTI9CyVSstXbrEDg8ylf6La9XShx/OtJX+Nm1vtOVMb4MJEaVPKa0tP2+1xxLoeOeduunmdv4hQwAAAEBONm/+PmIhwPDsPhLgAcVi835AsTWfrbMt6oHat2+fLq9bN18HFJs9a5benjBBXe6+2x5HoHvPnvph82at+uQTO7nXjOv/7bftdk5A6VNO0RNDh+qaJo3105YtOu208k4vwh/6YsMGvf7mm/bxzLAg4yOnl8EMJercpXOm52T2aULDs8OHB/V8AQAAgPyyBxQrFfgBxQo8CEyeNEmjRo4I6r6JiYnq2+8+3dK+vQAAAADkLuqCgGEmBJux9IEyy3ZGqosEAAAAKIyCDQJhqW2bSn0oVwQCAAAAkD9hPbIwAAAAgOhAEAAAAABciCAAAAAAuBBBAAAAAHAhggAAAADgQgQBAAAAwIUIAgAAAIALEQQAAAAAFyIIAAAAAC5EEAAAAABciCAAAAAAuFC2QcAnAAAAAEUVPQIAAACAC2UbBDwCAAAAUFQF1CPg8RRTqo/BQgAAAEA0Sk1NtXX2YARUOjY2VkeTku0OAAAAAESXpKQkKSYmqPt4Aynk8XjkiY3THwcOqnh8nIp5GDgEAAAARIPkYylKOn5c8cVLBHW/gIKAYXoFUp2UcTQlRT7fcQWtMIwsivZ8U1RGZ5Ejs8f/k7zJy+vG5zCyitJo00h8liLx+kXT/5lwP//snjujpkOjMH8f5/QZCNvz8sgb41VCfIKCFXAQMIoVK6a4uDgFLZL/UQr7j31R/JKhApa1wvReF5UKAZ/FyCrKlahwfLYi9frx/yYjwkD+ZfOZivaX1v9nR0UYyJuggkDQIv0OEgKiAz8aRY/5bEbD+5rf/yPR8jzcKv1rX9QqU+H4bHlEJTQaFOXPcbhk8/8lFP+FwvKW5PQZiPLPRFBBwOfz6dixY855LpOG6QHIO3oA3KswvveRfG9D+XrxGY0O9BDkDT0D0YUwkHcF9JkK11sSUA9BAe05JiZGXm/w7fsB38MGgGPJJyYLF2xHAgAAAIDAJDv19MSjSYpPKGEX+QlUQDV6s2yoCQGnnlLazhMAAAAAEB0SEhJ05OhRHUkyYSDwScMB1epTUlL+7AkgBAAAAABRJyE+3mm9D25lz4Bq9mZOAMcOAAAAAKKTabDPdR7vyfcRAAAAANchCAAAAAAuRBAAAAAAXIggAAAAALhQYEGAg2MAAAAARUpgQYAFgwAAAIAixZvW2E9dHwAAACjkgqjU+48snNPoH0YGAQAAAEULk4UBAAAAFwooCDBsCAAAACha6BEAAAAAXMhLaz8AAADgPl4BAAAAKBqCWOWHoUEAAACAC0UkCKxfv143tGqpqlUq23NzHQAAAED4hD0IHDl8WL179VS//v215eetun/AQHvdbAcAAAAQHoEFgRAeUWz9hg2qXaeO6tdvYK9fceWVqlXrErsdAAAAQHgUs5X83Cr6IVxaaNfvOxUXF5dhW/ESxe32grR//37dfuutAZVduGCB9uzeLQAAAKCg7N27V5H0v1WDTBgoQmuJbtmyRTOmT/dfT0pK1NatP2vUyJEZyrW7+Wa9O2VKhm0LFy7QJZdcotNOK+/fVrlKZbVp01ZNmzRW0+uaZdrfwYMH9Nv23/TiSy8JAAAAyInP59OgAQPUtXs31alTVyETRH3ee/KdsuocCOHIoLCpWrWqKlSsoJ07su9pqFWrlipVqqS+/fpl2L59+zbddvsdql69eqb7JMQnOG9WHW3atEl3d+2qpMREtby+hUaPGaPnR40WAAAAkBuPx6NRo0frnnt6qWcvhTYMBMhblHoBTta+fQf/ZTM06Ksvv8pU6U/TsP5Van1DG3u5UqUzNXfOHHv6bft2lSxZUkMefdRf1sxrmDDhLZ235DytW7dWbW+8SaVLnyIAAAAgUCVLldLYsS9ELAx4w9Xa/+iQIWp3yy065ZQyWd5utptW9ncnT9ajjz2m/DLj/L/++mv/9ZyGBplegbJlymYZEtatW6c5s2Zl2v7s8OG6qW1bxXi9mj1nrrZt2yYAAAAgGGlh4K6Od2r4iJGqXLmywiVsRxaO8cbo88/WqX6Dhvpk8CN2udASTku7Of909afq07efPl68yJYLhcZNmtiTmfTbo3t3TXj7bQ164MFsy+/bvy9TSDDSegROZnoASpYslWniMwAAABCMZcuWqdKZZ9rG6XAK23EEmrdoofemvmdTTtdu3XRd06YaOOB+NWl8jTp36awznSc/ZfIUWy6UujiPffjIYY0bN85W9M2p8TVXa8zzGcfzd+/Rw/YIrPpkpb9n4KK/X6Q+zuUGDRv6y5Up+2ePxqSJE/WPK/6hiy66SGPHjCEQAAAAIGhmKPr8+fM0/LkR8nrD1kZvhW1vl1xyqSpWrKinnnxCDz70sJpc21Q///ST7QkwIcBsN+emXCiYSbx9+tyrp556WnPmzLbLMz388MMaNHCg/vGPf6j3vX0ylL+lfQdt+fFHVTzjjAzbTTI7rVw53XZrB7366ms6npqq7U4vwcR33tGHs2fbMs2bXWcnEBsb1q93wkJZO1kZAAAAyE4kQ4AR1iMLj3Ba43/+6Wdd37y5Plq4wI6vN8OBzHWzfUQWQ3Pyav2G9errhIwaNWuqUaOrtfn772wwSEpO0r8fG5qpvFn+85lnnvYPH6pYsYL279tvL5uKf+nSpbVo0SJdddVVeunFF/X82LH++/7nlVdVpkwZHTp0UKtXr7blAQAAgJxs3vx9xEKA4dl1JCnX+cJmom3pWK8SEhIUCp9//plmz5ql1159VZ06d7bDgULVE5Am7TgC5oUtVaqUOt51l91uKunmuAGxzvM5dixFderW1eJFH9mhPT179fKv/mN6FMxwojRmUvHwZ4c5vQqP6LTy5bPc54jnhuvLjV86IWEMqwgBAAAgrHbt/UMJpUoHWtwXkSCQpmqVytry81YBAAAAyJ9gg4A3kMMIFNShBipUqCAAAAAA4RfWOQInW71mrQAAAACEX0SDAAAAAIDIIAgAAAAALkQQAAAAAFyIIAAAAAC4UGSOXgAAAAAgpHwnTlnJahVQegQAAACAIi6rgECPAAAAAOAC6cOA6SGgRwAAAABwIW+maAAAAACg0PEouOo8PQIAAACAC3npBQAAAADchx4BAAAAwIUIAgAAAIALEQQAAAAAFwooCHg8xZTq8wkAAABA9ElNTbV19mAEVDo2NlZHk5LtDgAAAABEl6SkJCkmJqj7BHRkYY/HI09snP44cFDF4+NUzMNSQwAAAEA0SD6WoqTjxxVfvERQ9wsoCBimVyDVSRlHU1Lk8x1X1DAjlsglrsfANUQrvp4A9wnXb5In3DvMtOOCw+967jzpLnljvEqIT1CwAg4CRrFixRQXFycg0viCQGFFMADcqSB+tzzh2lHAOw8dfufDI6ggAAAAgOCZenOoK7e+LPZRIDvKbecFEAo8WewGoRdUEPD5fEpJSVFqahQNDYIr8EWAooaeAQBGKH/fimIPAb//ufM4/2K8XsWcmCgczFsRcBAwAcCXnKT4uFjFxNKRAAAAAESaCUvJyclKSpbiEhLsIj+BCqhGb5YNTXVCQJlSJeX1EgIAAACAaJEQH68jR47qqFNfjztp0nBOsSCg4wiY3oAEpyeAEAAAAABEF9MLkJAQL19KEMP3fQEGAZ8vlWMHAAAAAFHKhAFTZz9ZlvMsTmwM7jjEAAAAAAoVX7qTdaJ93xvIbGxmbAMAAABFiIfjCAAAAACukb6Bn6FBAAAAgAsRBAAAAAAXIggAAAAALkQQAAAAAIqAYBf7z3WysEfBPygAAACA8Aum3l4sVA8EAAAAoPDwUtkHAAAAioggDgDGHAEAAADAhQgCAAAAQFERxHAfggAAAABQlAQYBryBDCMKYqgRAAAAgAjIUGcPIAxEpEfgqy+/1A2tWqpqlcr2fP369QIAAACQd6bu7wviFPYgcOTwYXXv1lX9+vfXlp+32vPevXra7QAAAADyzhPEKexBYP2GDapdp47q129gr5tzc91sBwAAABAeYQ8Cu37fqbi4uAzbzHWzPZQOHjygLVu2KC9mz5qlpMTETNu3b99uT4a5vd2NN/pv+/abb+wpzfJly7J9/JfGjdOokSO1gSFRAAAArrV3715FkldF1LZft2nI4MEa99JL+vDDD7Vv3z5N/2CaWt/Qxl8mISFB3Xv00LRp72vrz1v92ydPmqipU9/VxRfX8m9rd/PN2rr1Zz31xBPOfXrqk09W6ljKMVuhb9q0qebPm6eWrVr5y2/a9LWefvopPfX001q8aLHd9pMTTHbu3KE33nxL8c6+swobAAAAKPp8Pp8GDRigrt27qU6duooEz64jSbkuCpSUlKhS3hgVL15c+WUq45MmTlT7Dh3829Kup6+kh8Knq1fblvn7Bw601++8/Ta9OeHtbMv3v6+fHnroYZ1Wvry9bir91zRurDp1//fmmFb/tWvXaNGiRTYobNiwXq1bt9by5ct19tmVbYiYNOVdVa1a1bb4/9+5/6fSpU+x9128eJE2frFRffv1EwAAANzt8KFDuueeXurZq1e+w0Bqaqr27NuvhFKlA72LLyI9AmvWrLGn9NIHg1C5rF49e1q4YIFWr16l3Xv22BZ84wOnF2DmrNk6fPiw3p0yxW7b49zev/99toJvws+MGdNVvEQJrVy5UpWrVHZa9hepS5e7nYp9xhf44MGD+vqrr/Tkk0/pyy83aveuXXrogUF6buQoff7Z5/5VkdJ6BEb9+SeobNmy6njXXQIAAID7lCxVSmPHvnAiDCjsPQNhCwKPDhmidrfcolNOKZPl7Wb7pk2b9O7kyXr0sceUX5OclvnXXn3VDsNp3KSJSpQsqVOclvk+J1rjP1u3zp5XqlQp2xb6QQ88mOF6vXqXa/AjD2vAgIHq3Lm87Q3o27efJk+epNjYOG3/7TedccYZtgfB7KdP796a+v77atCwob0/PQIAAABILy0M3NXxTg0fMVKVK1dWuIQtCMR4Y5zW8XX6Z6Or5fV6lZKS8r8/wrlevUYNfexUlE25UGjfvoOWL/1zwm5aL0D6y5fWrq3XX3vNju+vUbNmhjIna+hU5C+uVcuGhldfe91f1gxzOn48VTVq1FRJJ2jMmztXl15a295mQoMJAQAAAEBOli1bpkpnnmnrmuEUtiDQvEUL/WvwEN12+x0a7PQODHVa/U0YMCHAXD/TefJTJk/Rv4fmvzfgZIG0wJsQMuPDWZm2m8q+GetvgoCZ3NurZ0+94gSIbnd30ZJly/3lVq5YoXt69dRHJyYGGze1bWvDQNMmjdX0umb+7SZIpA1NKlOmjAAAAOBOc+fM0fz58zT8uRG2XhxOYdvbJZdcaiv7Tz35hB586GFdfU1j/frLLzrr7LP92825KRdq27ZtU8c771Dz5i3827799hvVu6yeOnbqZK/v3Lkzy16BtHLGTz//pCrnVLGXd+zYYcsvXbpETz8zTFX/+lfFx8erlNO9Y6xbu1alT/lzLkFCfEKmMJI2NAkAAADuFMkQYIR1jyOcivN9ToX4+ubNdfMtN6tGzfNtS7zpCTAhYEQOw3PyavSokTr/ggtU7dxqGSrjpqV/3x/7/NcrVKiQZc9B+nKrPlmlv/3tQi366CO7mlDve/vou+++Vbly5TTw/vvtnII333xTXbt1sxONr7++pQAAAICsbN78fcRCgBHWvZoJuy+NH6/PP//MHrRr8COPqFPnznY4UEH0BBw6dNBWyk//y1/0zttvZ2jxT9/SbwTSI2AmB3fq1FnPPPO0Xhz3ki1vJiIPf3aY+vTta4cPjXhuuL7YsMFOCh44aJC9X2JSYqbHNsckAAAAgHvd26evIinsxxFIr2qVytqS7kBeAAAAAIJnjiOwO8jjCBRTBJnhOAAAAADCL6JBYPWatQIAAAAQfhENAgAAAAAigyAAAAAAuBBBAAAAAHChyCxaCgAAACCkPCdOgaJHAAAAAHAhggAAAADgQgQBAAAAwIUIAgAAAIALEQQAAAAAF2LVIAAAAKAI8J04BYoeAQAAAMCFCAIAAACACxEEAAAAABciCAAAAAAuFFAQ8HiKKdUXzNQDAAAAAOHic+rqps4ejIBKx8bGKjH5mFJSUgQAAAAgepgQkJiUJI83Jqj7BbR8qMfjkScuXvsPHVZCXKxiijGiCAAAAIg0M2Yn2WmwT3YuxCUkBHXfgI8j4PV65YuJUaLTK5B6rGB7BjxCYcGAMQDp8f3tPuH+HYjUZ4zfO0Qrp7leMbFxio8JrjfACOqAYqZnwAwTkmJVkPghKRz4UgSQFb7D3SdSvwfh/Kzxm4eiKORHFuYHoGjjixBAbtJ/T/Cb4A7mfY7E74NP4fuMueWzXJh+56PhPSns9aKAg4CZhJCSnCzf8RSlpqZmup0ve3cgCAAIBr8N7hTO3wo+Y6FFEAhctLxWdi5vsRjFxMUpJqYAJgsbyYlHVSLWq+IlS6sYk4UBAACAiDON9ceOHdOhI0d1PC5eMd7AB/wEVKM3y4bGFfOoRPHihAAAAAAgSpgegTinN6BUieI6fiw5qPsGVKs/fvy44px0YXYEAAAAILqYFT5TnTp7MAJs3mdkOAAAAFCUMM4HAAAAcCGCAAAAAOBCBAEAAADAhQgCAAAAgAt5068DxJRgAAAAwB3oEQAAAABcyEsvAAAAAOA+9AgAAAAARUCwh/4lCAAAAABFRDBhgCAAAAAAFBHBDPsnCAAAAABFQLBzfwkCAAAAgAsRBAAAAAAX8ioCtm7dqmVLl2j37j0qX/401W/QUJUrVxYAAACA8Ahrj8DBgwfU597euv3WW20YMMy5uW62Hzl8WAAAAAAKnmfXkaRc5xUkJSWqlDdGxYsXV16ZSn7bNm3UqnUrdbm7q7ze/3VGpKSk6JX/jNesWbP07rtTVaJkSQEAAAAITGpqqnbv26+EUqUDvYsvbD0C48e/rPr166t7j54ZQoBhrpvt9a+qb8sBAAAAKFhh6xGoV7eO5i1YqLJly2ZbZt++fWrapLFWr1mr/Nqze7cefvghvfTyeM12eho2b96cqcwFF1ygxk2aaN3atZoxY7qGPv6EAAAAgHB4fvQo9ex1T6ZG8rzIS49AWCYL79ixQwkJCTmGAMPcbsqZ8hUrVlR+nFa+vKpVq6ZJEyeqfYcO2rJli7b+/LPq1aunxx8fastccskl9tyEgF27dmnUyJH2esOGDdW9W1fd0r6Dvb5hw3q1bt1arW9oIwAAACAUqlU7T/f3v0/DnxsRkjAQrLAMDTp+/HiBls/OPff01llnnaXVq1fptVdf0ZDBj6hG9fPsbaedVt7ZvtpOYP7u2+/0zLBn9f1336lvv366uFYtVahQwV42p4YNGgoAAAAIpeuaNdO11za1YcDMmQ23InscgUmTJmrcuHH6v3PP1epVq/XPRo20dPkKXXTRRXYI0E3t2tkhQ2YJ0/vu769Dhw4JAAAACKdIhoEiGwTat++gA/v3a/v27fb6zOkz7NCfnTt32nPTQ2DEx8fboGCu/7z1Z3vbwgULBAAAAISDWVBn+7Zt/npruIQlCOzZs1tnnHFGQGVNOVM+1Fq2bmWH+aQN+enUuYvdXqlSJXv9ttvv0KmnnmovmwnEAAAAQEE7fOiQ7rmnlwYMGhT2A+yGJQi8/dYENWveIqCyppwpH2rZ9QikMfMIfv3lF017/z0BAAAABS0tBPTs1Ut16tRVuIVlevKcObPV4vrrtW7dulzLVqlSRc88/ZSefPrpfM+eTj6W7L9segQaNbpaHy9eZFcTMhX/mufX/N/fOGuWpr4/TV063aV6l/9DAAAAQEHx+Xzq26dPxEKAEZbjCDw+dKi++/Zb/3Wzbv+FF11kx+cnJSXpy40bVbtOHf/t1WvU0CODBys/TMv+p6s/dZ6hNHDgILucaHbMEqMHDx5U127d9MWGDfpw5kzNmvUhy4cCAACgwOzdu1flypVTKOTlOAJhO6BYen3u7a26dS/Trbfdpnfefltr1nyq0c+PUSitXLlSV1xxhb2cdnyArJxRsaJWrVqlUc8/n2G7WXWofVoQWL/eHt+gRs2aAgAAAKJNoQkC5qi/3bp21Q8/bNa551bTy+PH59hiDwAAACB7hSYIAAAAAAidvASBInscAQAAAADZIwgAAAAALkQQAAAAAFyIIAAAAAC4EEEAAAAAcCGCAAAAAOBCBAEAAADAhQgCAAAAgAsRBAAAAAAXIggAAAAALkQQAAAAAFyIIAAAAAC4EEEAAAAAcCGCAAAAAOBCAQYBjwAAAAAUHQEFgZiYGCWnpMjn8wkAAABAdElx6urFnDp7MAIKAl6vV8mpPh09elSpqakCAAAAEHmmof7YsWM6dOSoYmLjgrqvZ9eRpICa+e1OkpOl4yk5hoFQDiKKhv6HUD2fotSXUpADxehzAgqHvHwP8P87eAzMDUy4P1u8L4WHG753PB6PPMViFBMXZ0fxBMHnDbSk2UlcfLxzKT7ncgqNaHnjQvF8iuKHsCC+BKkkAIVLMN8D/P/Ou0hUOiP1fuX1uUbi7/VEeP9AKAQcBMKpKP2HKqpfDnzpAeB7IDzc9Dqb55qXMOBR+F8nPv8oCqIyCBQVfEkAABCcQH47PQFuy8tjA24SVBAw8wTMjOTU1OPZlslvF2a0/SctTN2UAAC4Bb/PwJ88zr8YrzfY+QFWwEHABABfcpIS4mIVE0tHAgAAABBpJtwmJycrKdmnuITidl5voAKq0ZtVgkwIKFOqpF1KFAAAAEB0SIiP15EjR3XUqa/HxScEfL+AjiNgegNMTwAhAAAAAIguphcgISFevpTjQd0voCDg86WqmCcSC5gBAAAAyI0JA6bOHoyAggAAAACAooUgAAAAABQBwY7fYdA/AAAAUMQEEgroEQAAAACKAF82l7NDjwAAAABQBOUWBugRAAAAAFyIIAAAAAC4EEEAAAAAcCGCAAAAAOBCBAEAAADAhQgCAAAAgAsRBAAAAAAXIggAAAAALkQQAAAAAFyIIAAAAAC4UNiCgM/n0++//67Eo0cFAAAAILK8CoMjhw/rnl49tXnzZnv9wYceVrPmze3lgwcP6Ntvv8t0n1PLltW51aopGplQ4/F4sr0OAAAARLuw9AhMmPCWzjq7spav/ERTpr6nx/79qFJSUuxtCxYs0JjRozOdhj/7rEJh0qSJ/suzZ82ywSPN2jVrsrzPyhUrlJPOne7Stm3b7GXzeD26d7NhIDum7NIlSwQAAACk2bNnjyIpLD0C27dvV82aNezlM844w54fPXpEpUuforZtb7SngmAq55MnTtQtt7S3LfYmCFxcq5bd7wtjx8jU3evUresvm9aq/5//jNfWrVvVvkOHTLeZir+5tNAJMPv27bPbvv3mGz0+9DH7uEar1q1VtWpVjRo50l7fsGG9ypYpq/Xr1/v/tnqX11O9epcLAAAA7mPqlw8OGqS7u3VVnTp1FQmeXUeSfLkVSkpKVClvjIoXL668+GLDBjs0qFv37rYyfOTIEY176WUVpDdee02rP12tDc7+TKX87m7d9N67U/Xw4MGa/sE05zkl6b7+99uypsW+4513qHnzFlk+1mSnV2H1mrX28ssvjdPZTu9G2tCmnNSrW0e3tO+QaftPW7boHOdv6tuvnwAAAOBOhw8dUu/e96hHz575DgOpqanavW+/EkqVDvQuvrD0CPz94ottxX/evHmqXaeO2tzQxn+baU03209Wvvxpuu32O5QfTZs21W9Ob8Rl6VreTw4BaaqdWy3bivnHixfZc9Mb8LoTMMa+OE5bnMr8jOnTM5WtXKWy2rRpay9XqFAhy8dc7Dzexi82CgAAAO5VslQpjRkz1oYB9VTYewYKPAhs/flnzZw5084J8Hq92rljp8aNG6cqVarohjZt/MNrTpaYmKhQmjl9hjb/sFlnVDrDDuFJG7bTuUvngB9j/MsvO70Lf82xTHxcvP/yzp07/ftJL61HAAAAAO6WFgbu6ninho8YqcqVKytcCjwImCd1XbPmNgSk9847bysmJkYtW7VSvcsLfqx8y9atlJycrE6du6hfnz569733/LcdOHDQhoSsKu2GWfbUaNCgodOFc9hersrQHgAAAOSTmSuwdOlSVTrzTFWqVEnhVOBBYO/everTt69iY2MzbDc9BGZCrpHdijsFtSRn9RrVtebTT1X3ssvsdRMQLnMuZ1exT9tuhjXNmT3bXjYToN+dMiVT2QsuuECNmzSxz6mPc7+0icqLFy3SPxs1spfNsKKdO3cIAAAA7mXqi3PnzNGCBfM1/LkRmRrOC1qBLx96xVVX6emnnrQHEjNP1py+3LhRM6Z/oGuuucY++Ttuuy3Tqfc9vRQqaz5drarnnBiK4+z/uuua6dlhw/wHNzMTii+9tLaCYYLAgf37bUhIO13XrJkWLlxgbzdLita6uJZuaNnSXt/5+049MHCgkhIT9cPmzXrn7bftykMAAABwp3lz50YsBBgFvsdhzwzT448P1VVXXqG/Vv2r9vyxV96YGD3+xJOqUbOmTi1XTqf/5S+Z7leiRAnlR8dOney5mdw7cfKfLfdJyUkaPvxZdevWXf0H3G+HLb3x5lu28j506OMKFXN8guIJxe3zS9O+fQd72rjxC320cKHGjH3BrkYEAAAAd/rhh80RCwFGWJYPNczRhc1BExKcxzj99NMVLq1bXq/pMz+0l3v26G4r/KeVL2+vmxWLTMX8l19+Uf/7BwT0eI89+qiatfhzmdEnn3hc9es38N+2Z89uJScl6Zlnh/u3mQOJpT9+gGEmKKcdcwAAAADIr7wsHxq2IAAAAACgYOQlCBT4HAEAAAAA0YcgAAAAALgQQQAAAABwIYIAAAAA4EIEAQAAAMCFCAIAAACACxEEAAAAABciCAAAAAAuRBAAAAAAXIggAAAAALgQQQAAAABwIYIAAAAA4EIEAQAAAMCFCAIAAABAEeBRcAgCAAAAQBHhUeCBgCAAAAAAFDGBhAFvAGXk8RRTqs8nAAAAANHHZ+rqTp09mBp7QD0CsbGxSkw+ppSUFAEAAACIHiYEJCYlyeONCep+AfYIeOSJi9f+Q4eVEBermGKMKAIAAAAizfQAJDsN9slOGIhLKB7UfQMKArag1ytfTIwSnV6B1GP0DAQrbZxWtA+wyu/fmdV4tFA855zGuYX6NQ12xn1ufGHYByInlJ+/UH4uCuq7xhPm/QGRlv4zz+cc0chprldMbJziY4LrDTACDgJ2R07PgBkmJMWqKDP/6Qvix72whAAjFEGgICtIoXrscFXIfeHYJ79QwQvRm1GQL30o/sRwhQI+giiKCAIoyoIKAkVZqCpnhaWltzC1SBdEZSPcz5/Kf5QKUUIryB4rn/L/+SmonrpA9hOO/QIF6eTPbKgbC4FICioImIkIZsJwaupxFSWh+pEM5/CV/Mjtxzo/f2uoez9C1RJTZIfi8GsUOgX4IQnH25TfPz+cAZuPLQCEjh0a5PUqpiCHBpkA4EtO+nOycCwdCQAAAECk/TlZOFlJyVJcQoIdyh+ogGr0qampNgSUKVXSThoGAAAAEB0S4uN15MhRHXXq63HxCQHfL6B1QE1vgOkJIAQAAAAA0cX0AiQkxMuXEtzw/YCCgM+XqmKeIjvKGgAAACjUTBgwdfZgcGQwAAAAwIUIAgAAAIALEQQAAAAAFyIIAAAAAC5EEAAAAABciCAAAAAAuBBBAAAAAHAhggAAAADgQgQBAAAAwIUIAgAAAIALeQUAJ3hU9PgEAACyQo8AAAAA4EL0CAAukNbSn1vruBtbzwN9bQAAKGrCHgR8vv/93Ho8RXEgAgAAABD9wjY06NixY3pu+LOqW/tSXVCjhnp076bdu3YJQMHziRbv7PDaAADcKmxB4Kknn9CO33Zo8ZIl2vj117r66mt0+223KSkx0d5uegp+++03JR49KgAAAAAFy2sG5xR0a9iRw4c1c8YMrfxkleITEuy2m9q104oVy7Vs2TJdccUV6njnnU4Q2K6UlBQ9+u/HdG3TpgKiVUGPKw/HuHUG5tETAABwN9sjkFuFIL8VhgMHD6pUqVL+EJCmUqVK2r9/n14aN06XXnqplq/8RBMnT9HQx/6tUEibj5B2vnLlSv9tCxcs8PdGnHwfc5o0aaJGjRzpP2VV9uDBA7YcAAAAEKw9e/YokvyThf/XM+BT+qp/KFoNK1asqBivV5s2fa3zz7/AbjNDgJZ8vERt296oDRs26IIL/tx+1llnKdGpdJueAa8373OZ33zjDb399gQ1b95Ck53K+sAHHtCB/Qe0etUnuqV9Bxs+zq1WTVWrVtXSJUu0fv16e7+ftmzRzJkzNGfuPNWoWdOGguwmNe/evUcfLVyo9s7jIbpk97kNtgXYk83989qSnNv/p/w+fiD7wP8E+lrRcwAACDVTx3xw0CDd3a2r6tSpq0jIMEfg5B/FUFYoHntsqHr16KEXxoyxFfObb26nfzZqZCvjbdq01YsvvGC339//Pl151VX5CgHGNY0bq9q51dS3Xz9VrFBR59c8X/v27VNMjFdd7+6i8y843wYAo0HDhrZcgwYNlJiUqEVOQDEhwISVuzreqbVr1mS5j+3bt+u0004TokuoPrehrlBTQQcAAGlMQ/PIUaM07sUXtXbtGkWCZ/eRpFwbu5KcynFJb4yKFy+u/Ni6davmzJ6tQ4cOqdHVjXTJJZf6b/vqyy81b948nXnWmbrppnb5DgLbtm1TxzvvsD0C0z+YpiXLltvtixcv0sYvNtqKf3qTJk7U6FEjbW9Bmp9+2qLu3XvYUJCV0SNH2seb8eEsIXICqWD7Inz/vDxuKPeD8KDnAAAQrMNOvbh373vUo2fPfPUMpKamas++/UooVTrHcul+q3wFfhwBUyH/YNo0O9QnjankL1u6zJ6MOnXq6LJ69bRixQrt3LFTY51egzZt2qhylSrKj7QegSWLF2fYXrZMmQzXt2zZop07d2ro40844eQSPT50qK5qUF+tWrdWXFxcto9v/t4zKlXSlh9/VNW//lUAAABAMEqWKqUxY8baUSjDR4xU5cqVlVfBLokd4PKheW/n6tO7t/74Y2+OZfrf189WxM3kYcOEBvNi5NfmHzbbib779u/T7Fmz7OW33nxTU9+b6p8EbIb3mHkCJjAkJyfrvalTNcLpprnhhjbav2+f7VWYNu39TI9tKv9x8XHq27efJk58Rwgfz0mnnKT/D+HJ5lSQ98/u8QJ53PzsB5HBewYACJaZK7B06VJVOvNMf104XLwnTw5O91cpFD77bJ3ec3oEcrJ9+zb9+ssvatmqlX/byy+NU36l7xFo3qKF3Tbw/vtt0Eg/NOjbb77RwoULdPx4qr1uDnZmJixffHEtO7TIrDDkcf7d4PRSpBnthIW0YUO7ft9lez7OdN5AAAAAIBAmBMydM0cLFszX8OdG5HtofLBO9AicVOk/OQPkIxNUqVLFTtLNyS9OCCh7aln/9TWffqratWsrFDasX68dO3fojddf14ED+3X48CG7yk/6Vn5Tmb/qqvra9PVXNiA0bdpUDRs0VLVq1bR37169OO6lDCFg1oczFZ8Qr6vq17fXzYpEjzz0oH+ZUoRWXlpZs2ptz+++Q4GWfnfJz3vN5wMAir55c+dGLAQYJw0NOnnQQv41btJEr77yn2xvNxX1Xb//rurVa9iK9KpPPrFDhfred5/yY9mypTqvenXt37/frhp0Z8eOGvLIYN0/cJDtHVjudMH8+OOPtuy099/Tyy+/pPGvvGqvm96AhOIJtlyz5s3U6a67tGf3bnubWWnotdde0zPDnvXvy3TjdLyrkx3ORBgAAABAIH74YXPEQoDh2X0k8UTN9aRjDKe7aFcNivXmadUgc1Th1q1b6dprr9Udd9yp8qef/udjOpXtOU5XyJjnR2vEqNHauWOHBj/ysG2Fv+/++50egToKlRtatlT1mjV03XXN7FKhhjkYWJ/e96pnr152foKp9JtJwzOmT7e39+jRw38ANDOP4OuvvtL333/nlP1djw0dmuV+Vq9epRfGjnVuf9zOO0BG6Vs3C2oVHqAwCqT5wJPP+wf7+DRpAEDhYlYN2h3AqkHp+Dy7DycGtnxoHoOAYcLAyJEjbPeHGZ+f4FSwzXChK6+8Svf27eNU/s/Trl27dErp0pmOPoyigyAAZC0ag0CoHhcAEB6hDQJpvwq+/AeBk+X3qMEoHAKtWFDxBzLKbzDIz+Pm9viEAwCITnkJAtkvHxraqQIZEAIAoHAiuANA0UGNHCEXaEWBCgWQtUBa430B3ifYMmmPndPjBzrMDwAQ3QI8oBgAAJkR6AGg8PKevFgQkJ3cWgFzm8zIuuhA/gTTop+f/2tZrSAUaA9B+vsAAKJbMb6tAQChRugHgOjnnyOQbpEgFFIFNW7Xk8/bAy0DIDRC/f8t2B6CrLaF6juJ3yoACB3mCLiYRwzXARAefM8AQPTJtGoQrS3Ro6AOwMWqPgDyI5I9BLnth98uAAgcPQIAgLArqIYGGjAAIHD+HoGTV5kItGeAHoTg5aVVLKvX2VPA5QP5ewAgFD0E6e8bjKz2wypGANwq2CHf9AgAAKIGjQwAED4Z5giktZic3DMQzPrwtLoEJxpb7vkhBpAfee0hyOm2QL/zAu3FDrQ8ABRl9AgUUoyvBeAmfDcBQOh5A20dOblnIKdyOd2eF3lZPSfS+8+qfChb+gGgsMhvD0FWZUK16hAAuFnEewRo5QEABIvfDgDIv2yPI5Bhm6eYUlN9WZZL37LjyeFxsmqF8WRRNlSrFAVSLlSr9xREeQAoqrL7ngu0BzWnMrT4A3Arn89n6+zBCKh0bGysEpOTlZKSosKGg2cBgHvwXQ7AjUwISExMkscbE9T9vIEU8ng8KhYXr/2HDish1quYmMw7Ofk4BNn+oSc/dgDlgnnc3MoG+rihLgcAiIyC7CUoqLlpABAo892TnHxMx5wLcQkJQd03oCBgC3q98jkBIMnpFUh1dpbVH5GXICDlHgaCfdxwVvAJAkZeXq3sygf+U+oJ4lGBSMhfxTDv/zcCf8zoFqrvV4JAtAj35y+Id4QfjYwK5Ye5iL+J9un5srnJo5jYWMX7G+oDfwO9wVTiTM+AGSYkxSpUggkQoSwXbfsr3AL5DIX2WyWnH1/eD4RbTt8Dhef3tPD8zwnl93yoBNsE4l7h/Jz5IrPbosJNYaDQfD5C/6Z4M+8gvK9GtL72zC3Iq6w+QwUXAoK5DSgogX4m8/8/waOC+3WmWaNIyetbWeCVP2JRoVGQXzcFJq9/sHu/+5wg4PFlfOGy/jHwOZtTjiUpNSXFuZwqAACiQagjTH7qPsH8HVSJgWhQ2EJAFt8cZi5vsRjFxMVlOY83pwf7f18ecK7cWIBtAAAAAElFTkSuQmCC", Lu = "data:image/png;base64,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Fqg33HCDf/mFKTTce++99uSTT/rvHTt2tKOOOsoOhA0bNhywAAIAAIBD2/nnn29PPfVUzIPCERcS6tat67sobdmypeC+SZMm+e5KKSkp/nvt2rWtatWq/rNWOVQOpWbqnTt3WmZmpm3atMnWrl1rO3bs8OdoBWLFihV+X1CmpONt377d79Nr9brCFBZ0f+HVEpU56T7dgtWO4P30fL3Hrl27Cp6vn/Xcwu8LAACAQ1eTJk2sW7duHhSWLVtmsRLTxuVvv/3W6tSpY8nJuz8N3a8B8qhRo+yKK67wXoVolSlTxho1auTv3aFDBy9z+vzzz+2iiy6yVatW+XNefPFFf0w7LfXv399+/vlnS01NteOOO85OP/106969u51wwgn+c7169eydd97xc9NAXq/p2rWrjRw50oYNG2b169e31atXW4kSJezZZ5/148+fP9/efPNNW7hwodWqVcsee+wxDxpq3FZQ0K106dLWo0cPDwYPPPCAv5+Cjb4T7QSl8NK7d2/bvHmzf0c6l5tuuskSEhIMAAAAh64gKDzxxBPWs2dPq169uh1sMQ0Js2bNsgULFljbtm19sKuZcQ3GNXDXwPrcc8+1efPm+YD+4osv9seKg8qJNMC+5JJLvDlas/a6NkMQEgIzZsywadOmeZIrX7683zd37lxLSkry3ZeqVatm99xzjweYc845xwf3GqjrXKVChQr24IMPekC47777bOLEiR4m1KCtP7wG/Nddd51/9uHDh/vx7rzzTh/oP/roox409J+kVKlSXg6l60Z07tzZd4PSeev7UiBRYFDQuPLKK61ixYoGAACAQ5vGdBozanwai5AQ03KjFi1a2Pjx461GjRo+4660NGbMGB/Aq8SnZcuWNnbsWGvQoEGxBQRRyZEG8NOnT7dPPvnEQ0paWtovnrdo0SIPD0FACKgcKbhPy0DNmjXzgb0G8/ocWlEQvbZkyZIeDJo2bephQPR5tVKgz6THVVKkwHTKKad4ANHz9d1oFUEUHvSfRPfrvXWcOXPm+IrE66+/bv369fPPlJubawAAADi0abJc4+H27dv7mDAWYhoSTjrpJJ99V7nPI4884qFAJTqa2VcTsertFRouu+wyK26dOnWygQMHelOIzmN3FCR0Dnur91cwCEKBzlslQSppkuBicFoZ0XUgdLw9UQ9EUHem99N/Dl0zYk8qV65szZs3t169evlNqx17ez4AAADinybKFRB0rbA2bdrErJQ8puVGmkl//PHHvZRGg+irr77aLr/8cm8QHj16tA0ePNhuvPFGO+aYY6y4aYCtAb3+AHsavJ966qk2dOhQe+6553wGXysaKvkpTOU/GqTrOPqjqsdAqwna6lSrIJrlV3OyZv+VBNXfsDtXXXWV9zqoN0ErBlopUHAKtmUtql27dv69vfrqqx4YFCyuueaaPfZ3AAAAIP6pHzbWAUES/jfbHdG2OBr4qjRGM+nRfgDtzqPmXzUoi2r4NdBWQNDAuji/oAkTJvgxFVDU76AZfNV8aTVAQUWrCupDUO2XyoIUWFQSpZ2KtNKhMqOZM2da69at/fOLyn7Uv6DjqGRIpUsffvihrwzoedrpSI3FRd9HFCRUilSuXDlbt26d9y3o8yqgaPCv1YjC71f43HQs7cykFQwdTwEFAAAAhy6NOVWWXhzjX00ia1Jc49793AAoPy5CQkC1+WoAHjBggO9AdChTSFDJ0F133WUAAADAwRZNSIir6yToAyh06Hao08qAUiAAAABwqImrlQRROZDKbxhgAwAAAJGLZiUh7rpcVdMPAAAAIHbiqtwIAAAAQOwREgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIREHBISEhIsPz/fAAAAAMQnjdkjEXFISEpKstzcXMvLyzMAAAAA8UOT+dnZ2R4SIgkKyRahxMREf8MdO3ZYWlqahwYAAAAAsaeAkJmZ6WP0SEJCQnp6elQ1QzoBrShQegQAAADEB4WD4BaB/IhXEgIpKSl+AwAAAHB4YHcjAAAAACFRrySozIhSIwAAACB+RNqwHIgqJARd0wQFAAAAIL6oHyE5Ofng7m6kUJCVleX9CKmpqexuBAAAAMSJnJwcy8jI8H8j6R+OuCdB10dQKiEgAAAAAPFFKwi6TEGku5BGFRIUDnS9BAAAAADxRWP1SNsCIh7h04MAAAAAHJ5YBgAAAAAQQkgAAAAAEEJIAAAAABBCSAAAAAAQQkgAAAAAEEJIAAAAABBCSAAAAAAQQkgAAAAAEEJIAAAAABBCSAAAAAAQQkgAAAAAEEJIAAAAABASdyEhPz/fAAAAAMROssWJ7du325dffmnjxo2zY4891q6++mqrVKmSAQAAADi44mIlIS8vz55//nkPCa1atbJly5bZHXfcYenp6QYAAADg4IqLkLB06VJbtGiRPfHEE/a73/3O/61Zs6avKgAAAAA4uOIiJKxZs8bKli3rN0lMTLT69evb4sWLLZbUH5GRkWEH265du3x1JVKxOm8AAABEJzs72+JBXISEnJyc3Q6Ks7KyrDgpjOi9Ctu0aZPt3Llzt89X2dOjjz7q/RIHU79+/WzEiBEWqVidNwAAAKLTt29fW758ucVa3OxupNnz9evXF9z0e3F766237L///W/ovpdeeslGjRq12+dXr17drrzySktJSbED7cMPPywY1Ldt29aOP/74/Xm5zZ071yZMmOA/H8zzBgAAQPE5//zz7amnnop5UIibkDB58mS76qqr7PLLL/fbu+++a8Xt4osvtu+//75gNWHr1q3eD6Fmaa1arFy50m9BQElOTrZGjRpZampqwfNXrFjhIUYlPbpt2LDB79uxY8cv3k+P67l6vHATtlZN1q5d6/crGOgYCgkzZsywzMxMH+TXqlXLVz4Kr7Dod9Fr9FodQ++hlZAxY8bYF198YZs3b97jeQfPl23btvlNx1y9enVU5U0AAAAoHk2aNLFu3bp5UFB1SKzEdAvUb7/91urUqeODWg3Si+5mpPtVDqSZ/iuuuMJ7FaJx4okn+oB83bp1PghXY3Tjxo2tZMmS9vLLL/tgORh0P/vssz5wfvDBB+2VV17xAfbrr7/u55Cbm2v33nuv90x88sknfuyNGzfa008/bTVq1Ch4vylTpth7773nx9GxdcyjjjrKPvjgAx/Up6WleYO2zmX+/Pn2/vvvW1JSko0dO9bq1atn06ZNszPOOMMuuOACH8w/+eST9vDDD/uKiELJqlWr7LLLLvOQo52h1IegsKH7HnroIT9v/ed65513/Lz12fXcrl272siRI23w4MG+YrFkyRI75ZRT7M4777SEhAQDAABA7ARBQZv59OzZ0yeQD7aYhoRZs2bZggUL7MILL/QBs2bRAxqsqnl53rx5Hia0ChDMjEdK5Tdnn322ffPNN3bDDTfY119/7ddj0KBcg24N4vUer732mg0aNMiuvfbagtcqIOgctASkc9NqxOOPP24333yz1a1b1z7//HP77LPP7NZbby14jf7A3bt391Dx73//24PB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PWYrV670n9U/8ec//9l/Hj16tN1444128803W69evezss8+2vSl63Ndee82mTp3qP19wwQUeOAo3ahfHygcAAAAODV27dvUKlVgHhbjZAvVgUQP0KaecYv369fNSpoSEhILHNCCfNWuWff311z7Df9ZZZ1mbNm181UCN1H//+9/tpptu8sCikKPXqq9COzLJsmXL7IwzzrC6det62ZBWGfS8du3aWZ06dbz/Yt68eda4cWO78sorbcyYMR5QtKtTZmamVapUyebOneuP6Zh6/qJFi6x27drWqVMnK1OmjL333nv+vGAp6rbbbrOyZct6+Bk1apQHr86dO1vlypUNAAAAhxZNFnfr1s1eeeUVDwqaiNb47mA7Ii+mdt111/kg/ueffw7dP3/+fHvppZesadOmdtlll9mbb77pg3g1UWvQrebqWrVqeenTjBkzrFmzZh4ItALQqFEjmzZtmvcnqF9Bx2nSpIlv4aotXdesWWOlS5e2jh072g8//OABoejrFQwUOjT4VzO3SrIUGLTqod9zc3P9PbQblFYstPqhc9Tz3n77bQ80J554ogcOAAAAHJoUFP70pz/Z5MmTvcw9FmIWElR3v6/bmqrcKKjbLw4atN91111e6rNr166C+zV41+rBeeedZy1atPAZea0qVK9e3Wfr1R9RsWLFgucrOOj3o446yqpWrVpwv4LFqaee6oN/BY7jjjvO6tev789RuNB7asVgT69fvny5P0dhRq/XspMCjC42J1pV+M1vfmMdOnTw52oFRDcFjGOOOcaDDAAAAA5NmjBWb4KuG3b88cdbLMQsJIwdO9bq1atn5cqV+9XnqoTniy++KNb6fA2yNej/4IMPCu7TwFwlPYESJUqEypH21fbt2wu2cw3oYnETJkzwFQM1a2dlZe3x9QpEWlZKTv7/ajD1bej3oC6t8P36TpQ2n376aS9D6t69u40bN84AAABw6NF4T6Xuqh5R2VHRMeXBErOQoN2Azj33XB+Yq/5/bzeFBC216JoJxemOO+7wlBZsr9q6dWsPIyoZ0nupxl8rCqKBuZpI9mVFQyFA/QQqMVq/fr2X/2glQGVLDRs29D6DgI6r9y8cGrSyoPfSEpNWD7755hsPNCpX2h2dk/okLr74Yr9KtfoqAAAAcOj59NNPYx4QJGaNy5oFHzBggL3//vv+uwa5msXXzL1mxzUbrxKfgGbS1QQcrcKlOBUqVLBbbrnFr+wsJ510ki1ZssQefvhhL4Vq2bKlD7xFJT4vvviidenSxVc/gmChMqFgh6bgZ4UNlQEFV4r+/e9/b7/73e/srbfesu+++87PIRjwX3LJJfbGG2/4Z1M40LH1Gu2mpIvJKTzouCo5UtlV4ffT81SupNKtgQMHerjRd6ZSKgAAABx6NM6LdUCQhP8NziOq4dHgVR9CFzyLpCRHoUAz7UEJzQsvvGDNmze3tm3ber2+AoRKZ4LyHw3oq1WrFtF7AQAAAEcaTbxrAxxNLO/nDkn5MVtJ0Ix34ZUCzZTrGgHr1q3zLUG1q4/6BmKx5RMAAABwJIvZSsLuqFZfNVg1a9b00p+gQRcAAADA/olmJSGuQgIAAACA4hFNSKCWBwAAAEAIIQEAAABACCEBAAAAQAghAQAAAEAIIQEAAABACCEBAAAAQAghAQAAAEAIIQEAAABACCEBAAAAQAghAQAAAEAIIQEAAABACCEBAAAAQAghAQAAAEAIIQEAAAA4TCUkJFgkIg4JiYmJlpeXZ/n5+QYAAAAgvmisHqmIQ0JSUpLl5uZadnY2QQEAAACIExqbKyBkZmb6xL5u+yvZIqSlixIlStiuXbssKyvLQwMAAACA2MvJyfGwoPF6JCIOCaJUojfWioJOBAAAAEBsaTI/OTk5ohWEQFQhofBJAAAAADg8sLsRAAAAgJColwBU60TjMgAAABA/VO0T6fanElVIUDgIdjciKAAAAADxQxsLqS0gkrAQcUhQKNCuRikpKZaamsruRgAAAECc0KZCGRkZ/q/G6/sr4p4E7b2qVEJAAAAAAOKLVhDS0tJ8F9JIKn6iCgkKB9FsrQQAAADgwNBYPdK2gIhH+PQgAAAAAIcnlgEAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAIQQEgAAAACEEBIAAAAAhBASAAAAAITEPCRkZWVZbm6uAQAAAIgPyRYjeXl59u2339pnn31mJUuWtJtvvtkaNmzoj+Xk5NjOnTt/8Zrk5GQrVaqUAQAAADhwYhYSpkyZYv369bMbb7zRNm/ebPfff7/961//snLlytnEiRPtjTfe+MUKQ+nSpa1Xr15WsWJFO1zl5+fbrl27LC0tzQAAAHBkyc7OtpSUFIu1mIWESZMmWatWreySSy7x34cMGWLLli2zpk2bWvPmze2hhx7yAXNh+sLKli1r0dKXv27dOqtdu7bFG30Hffr0sccee8zKlCmz2+coRHz00Ue2adMmu+WWWwgUAAAAh4m+ffvalVdeaXXq1LFYillPQuPGje3HH3+0xYsX+8pBYmKiVa1a1R/TikGjRo3suOOOC93q16/vJUfR0ipGhw4d7Oeff7ZYWblypX311Ve/uL969er+H2NvCXLcuHE2efJka9u2bVwkTQAAABSP888/35566ilbvny5xVLMVhLOOOMMmzVrlv3pT3/yPgPNiAchQf0IGzdu/MVrNCCuUaOGRevLL7/0Afann35qzZo1K7g/IyPDZ+eDwKJAsn37dtuyZYv/XK1aNX9s69atlp6e7uej+xISErxkSp8jNTXVeyr0u46xbdu2gs+klRGFAK1kaJCvkNCiRQurUqVKwTnofRSQdBwdQ++h90tKSvLX6hwVrLSiEpxjcN6i8yE4AAAAHJqaNGli3bp186Cgypq6detaLMQkJKhcZv369XbZZZd5uZEG2bopGGjgq5WFJ554wgfThVWqVMnefvvt0KB6f2nAv3DhQv/SH330UR+Iq8dB9//973/3wb/ORSsNRx99tJf+6Dw08L/99tt9oP/OO+94WNiwYYOXTHXt2tUGDhxo9erV81UAHevBBx+0V155xUaOHGmDBw+2448/3pYsWWKnnHKKXX311fb555/bokWLbNCgQdalS5eChuzCr9Uxp06d6mVRc+fOtWuvvdZLsRRyFAw+/PBDu/zyy/0c9btuWoXp0aOH/wsAAIBDTxAUNB7u2bOnTxQfbDEJCaq10q5GCgtFPfPMM3bOOef47UAYM2aMD9iPOeYYL19SILnooot8VUFh4eGHHy4oaXruuee8R0KDc4UCueeee+yKK67w89Og/KabbrKLL754r++p8PDII494ALnrrru8Wfv666+3ESNG+H+AvdH76z0XLFhgL774ooeqq666ylavXu3hQkFCqwd33nmnhxsFHwUThRwAAAAcmjQuVeXIqlWrjpyQoDKb/v37/6Jx+P3337dhw4bZmWeeaQeCtl1VOKlZs6Z98sknHgaGDh1qF1xwgc2ePdtXNgr3PMyYMcN+97vfFQQEUWOxSpQ0INfsv4KGVhT2RiGhRIkSVrlyZcvMzPRrQ+yrBg0a+PtrFUUrGkVXV1SypUCgciRR+dKKFSsMAAAAhyZNBvfu3dvat2/vY7tYiElIULnQ6NGjvewmGNyq9l+NxBoU64tRU3PRLVC12895550XGrTvj6VLl/ps/llnneXlQyeccIJNmDDBm4jLly/v/xamBKf7NMgPKBgoFOgzaMCu8iCdl8JFcG0HlTApkBwMKs9ScFEZk0qh9N1FU44FAACA2FmzZo0HhAsvvNDatGnjE9OxEJOQ8Le//c26d+9uY8eOtdatW3vZjhp51XCrWXHNhOuxolugqpm3ZcuWPqseCV287dRTT7Vrrrmm4AtXCFCN/29/+1s/Jw36RX8YlRI9//zzNn/+fF8BUJlP586d/VoNelx/xFq1avlqgh5/+umnPfTMnDmzoGF5TzSQVwOyVlVUuhTprk06J523mpsVnubMmeOlTQAAADj0qNom1gFBEv43s55vEVDJjAbEmlmP5ANoMD5q1ChvIlYpjho0NIA/kHv+a3VCg3rdArpegs5BM/FaIVCPgs7n5JNPtgoVKnhgUYDRRd50nxqCFRpUiqSVBr0uOOfp06f7wF/buwZNzWrQ1mdVb4HoM5900kl+lWmdjwb3Z599tgcgUdjQ++m1WvlQcFL/ROH7ix5Tn0Hnrb+DvkOVNQEAAODQo+oajTeLIyBowl1jRo0z97MSJz9mIQEAAADAgRNNSIjZxdQAAAAAxCdCAgAAAIAQQgIAAACAEEICAAAAgBBCAgAAAIAQQgIAAACAEEICAAAAgBBCAgAAAIAQQgIAAACAEEICAAAAgBBCAgAAAIAQQgIAAACAEEICAAAAgBBCAgAAAIAQQgIAAACAEEICAAAAgJCIQ0JCQoLl5+cbAAAAgPikMXskIg4JSUlJlpuba3l5eQYAAAAgfmgyPzs720NCJEEh2SKUmJjob7hjxw5LS0vz0AAAAAAg9hQQMjMzfYweSUhISE9Pj6pmSCegFQVKjwAAAID4oHAQ3CKQH/FKQiAlJcVvAAAAAA4P7G4EAAAAICTqlQSVGVFqBAAAAMSPSBuWA1GFhKBrmqAAAAAAxBf1IyQnJx/c3Y0UCrKysrwfITU1ld2NAAAAgDiRk5NjGRkZ/m8k/cMR9yTo+ghKJQQEAAAAIL5oBUGXKYh0F9KoQoLCga6XAAAAACC+aKweaVtAxCN8ehAAAACAwxPLAAAAAABCCAkAAAAAQggJAAAAAEIICQAAAABCCAkAAAAAQggJAAAAAEIICQAAAABCCAkAAAAAQggJAAAAAEIICQAAAABCCAkAAAAAQggJAAAAAELiJiTk5+cbAAAAgNhLthhSMJg7d6598cUXtnbtWjv11FPtoosuspIlSxoAAACA2IjpSsL48ePt0UcftaSkJGvRooWNHDnSHn74YcvMzCx4jn7Ozc01AAAAAAdHQnp6ekR1PllZWT64L1WqlCUkJNj+ysvLsxtuuMFuu+02O++88/y+7Oxsu/POO61Dhw6+ojB8+HAbMWKElS5d2m655RZr2LChAQAAAPh1qtrZsmWLpaamWmLifq0N5MdsJUEn/L+AYieeeGLBfSkpKXb22WfbnDlzfJXh3XfftUsuucSOPfZYe+CBB2zHjh0GAAAAHK40aR4PYhYSypYt6/9u3Lix4D6tLixdutRq1KhhU6ZMsdatW1u7du18FUGrFevXr7fikJGRYatXr7YVK1bY5s2baZoGAABAXOjbt68tX77cYi1mIUGrBio36tmzp82cOdPWrFljQ4YMsZ9//tlXExo3bmwTJkywJUuW2NixY32JJC0tzaK1ePFi69Wrl73wwgvWp08fe+KJJ2zDhg22v7QS8tlnn+13v4QatfW5AAAAgKLOP/98e+qpp2IeFGK6u1HHjh3930ceecQH2/Xr1/dG5tq1a1u1atV8QN2tWzcrUaKE/eEPf/D7oqEVhGeffdbf94ILLvDgodWLoKdi69atXgKlAKP30v3btm3zx3bu3OkrDtWrV/fXzJgxwz7++GNr2rSp1atXz7Zv3+7BofBrCx9TtWDq3xgzZoz/0Rs1amQVKlSwdevW+bJSxYoVvfcCAAAAR64mTZr4+FdB4aGHHrK6detaLMSkcVk7FmlwXJhCgo4XUDlS+fLlvSRIg3O9R5UqVaJaTVCfw0cffWRPPvmkB4/CtJrxzjvveHDQykKrVq2sa9euvroxePBgO/74431V45RTTrHOnTv7MSZOnOhpT83Xb731lvdMrFq1yi677DL77W9/awsWLLDXX3/dj6nP1759e19CUli59NJLPWB88MEH/v4KH/fee6+HDAAAABzZZs2aZS+99JJX3WicGIloGpdjspLw73//2wYNGhTa6rQoDeIHDBhgb775pn333Xf+ITWofuWVV/yDRkKBo2bNmr8ICKJB/hVXXGHnnHOOD+Jvuukmu/jii/0xrRRotUMrAnfddZfdeOONduutt/r5q6Fa56NdmURB4u233/ZjKSDoGAoSQZBSX4X6Ibp06eKfrWXLlnbVVVd5QCIgAAAAQFRloklzTUBHGhKiEbOQ8Nprr3nJzZ706NHDJk2a5DP2ohKfNm3a+Cy/ypEioXKewo3ShS1btsyaNWvmg3mtjqj0KehVUEhQsKhcubIHA62iFKYVBH0mJTWltKCESE3YzZs33+NKy+WXX27PPPOMh6DrrruuYCtYAAAAHLk0ody7d2+vQtG1xGIhJo3LycnJu53NL6zozLoG91WrVvXXRkrbrc6ePdsWLVpUcJ/ChygYBKFAA3wN+MuUKbNPx1V/gnoXunfvbp06dSroLdC5btq0aY+vUyp89dVX/QJyWsnQTksAAAA4cmkzHwWECy+80CfII7keWXGIyUrCqaeeal999ZXX8u+OBsvTp0+3a665xn9X82+/fv28T6BSpUoWKa1A3HzzzT6Y1xdfrlw5X0FQj4Fu2vVI9+uPU6tWLV9NUKjYnaDp+PPPP/edmBQ81JQ8derUgus56POpUbpt27ZewqTPo2Cgi8TpuWqGVt+CzkPvV7gnAwAAAEee/v37xzwgSEwal1W3/8c//tH++te/2mmnnVawqqDmXtXsq1Zfx9QWqUOHDvXAoLos1f8XR03WypUr/ZgauB999NFeZqRVi/nz5/uqgN5LDcpqklYfg1YV1A8ho0aNspNOOsk/t46hnYrOPfdc/0x6vVYrtESkQKNeheCY2vFI133Q51IDtShcKFQoLJx88sl+fQgAAAAcubRjpqpSiiMgRNO4HJOQIJMnT7ann37adzDSFZXVmKHB9cKFC33rp7vvvtsH3tOmTfPfVdtPYy8AAACwbw7JkCCaQVcIUDjQ8XQsza43aNBgfz8IAAAAgEIO2ZAAAAAA4MCIJiQwXQ8AAAAghJAAAAAAIISQAAAAACCEkAAAAAAghJAAAAAAIISQAAAAACCEkAAAAAAghJAAAAAAIISQAAAAACCEkAAAAAAghJAAAAAAIISQAAAAACCEkAAAAAAghJAAAAAAICTikJCQkGD5+fkGAAAAID5pzB6JiENCUlKS5ebmWl5engEAAACIH5rMz87O9pAQSVBItgglJib6G+7YscPS0tI8NAAAAACIPQWEzMxMH6NHEhIS0tPTo6oZ0gloRYHSIwAAACA+KBwEtwjkR7ySEEhJSfEbAAAAgMMDuxsBAAAACIlqJUElRmpcpoEZAAAAiB9BqZH6iCMRVUhQONCtRIkSNC4DAAAAcUAT+Tk5OZaVleXj9EiCgkJCRB3HwQpCqVKl6EkAAAAA4khqaqrt2rXLbyVLlvy1p/9i+6P/AxLzgaft3EodAAAAAElFTkSuQmCC", Eu = {
key: 0,
class: "card"
}, mu = { class: "card-body" }, zu = { class: "card-wrapper" }, Uu = { class: "title" }, fu = { class: "button" }, vu = { class: "allow" }, wu = { class: "image-wrapper" }, Ou = ["src"], Vu = /* @__PURE__ */ f({
__name: "SystemPermitTip",
props: {
platform: {},
language: {}
},
setup(a) {
const A = {
mac: {
"zh-cn": Aa,
en: ju
},
win: {
"zh-cn": hu,
en: Lu
}
}, e = a, t = S(() => e.platform === "mac" ? "mac-privacy" : "win-privacy"), o = S(() => e.platform === "mac" ? "mac-preferences" : "win-preferences"), n = p(Aa), s = p(!0), r = (M) => {
M && V.isPC && (s.value = !0);
}, c = () => {
s.value = !1;
};
return uA(() => e.language, () => {
n.value = A[e.platform][e.language];
}, {
immediate: !0
}), CA(() => {
g.watch(u.CALL, {
[i.SHOW_PERMISSION_TIP]: r
}, {
notifyRangeWhenWatch: i.MYSELF
});
}), DA(() => {
g.unwatch(u.CALL, {
[i.SHOW_PERMISSION_TIP]: r
});
}), (M, N) => l(s) ? (d(), y("div", Eu, [
L("div", mu, [
L("div", {
class: "close",
onClick: c
}, [
C(Su)
]),
L("div", zu, [
L("div", Uu, W(l(v)("browser-authorization")), 1),
L("div", fu, W(l(v)(l(o))), 1),
L("div", vu, W(l(v)(l(t))), 1),
L("div", wu, [
L("img", {
src: l(n),
class: "image",
alt: "system permit"
}, null, 8, Ou)
])
])
])
])) : z("", !0);
}
});
const bu = /* @__PURE__ */ Z(Vu, [["__scopeId", "data-v-2ea845a3"]]), xu = { class: "tip" }, ku = { class: "card" }, Ru = /* @__PURE__ */ f({
__name: "PermitTip",
setup(a) {
const A = S(() => V.isMAC ? gt.MAC : gt.WIN), e = p(g.getData(u.CALL, i.LANGUAGE)), t = (o) => e.value = o;
return CA(() => {
g.watch(u.CALL, {
[i.LANGUAGE]: t
}, {
notifyRangeWhenWatch: i.MYSELF
});
}), DA(() => {
g.unwatch(u.CALL, {
[i.LANGUAGE]: t
});
}), (o, n) => (d(), y("div", xu, [
L("div", ku, [
C(bu, {
platform: l(A),
language: l(e)
}, null, 8, ["platform", "language"])
])
]));
}
});
const Bu = /* @__PURE__ */ Z(Ru, [["__scopeId", "data-v-cd63c32e"]]), so = {};
let Nt = null, Pu = 1;
const Wu = () => {
const a = document.body, A = document.createElement("div");
Nt && (a.removeChild(Nt.el), Ue(null, A));
const e = C(Bu, {
index: `permit-item-${Pu++}`,
// eslint-disable-line
destroy() {
Ue(null, A);
}
});
Ue(e, A), a.appendChild(A.firstElementChild), Nt = e;
};
so.show = () => Wu();
const Gu = { class: "toast-content" }, Qu = /* @__PURE__ */ f({
__name: "Toast",
props: {
type: {},
duration: {},
message: {},
index: {},
showClose: { type: Boolean },
destroy: { type: Function },
close: { type: Function }
},
setup(a) {
const A = a, e = p(!1), t = p(null), o = S(() => `toast-container ${A.type}`), n = () => {
A.destroy();
}, s = () => {
A.close(), e.value = !1;
}, r = () => {
t.value && clearTimeout(t.value), A.duration && (t.value = setTimeout(() => {
s();
}, A.duration));
};
return CA(() => {
e.value = !0, r();
}), DA(() => {
t.value && clearTimeout(t.value);
}), (c, M) => (d(), U(fo, {
name: "slide-up",
onAfterLeave: n
}, {
default: E(() => [
sA((d(), y("div", {
key: c.index,
class: k(l(o))
}, [
L("div", Gu, W(c.message), 1),
sA(L("i", {
onClick: s,
class: "toast-close-icon"
}, null, 512), [
[cA, c.showClose]
])
], 2)), [
[cA, l(e)]
])
]),
_: 1
}));
}
});
const Zu = /* @__PURE__ */ Z(Qu, [["__scopeId", "data-v-27fc22c5"]]), HA = {}, wA = [];
let Fu = 1;
function Yu() {
var A, e, t;
const a = wA.length;
return a > 0 ? (t = (e = (A = wA[a - 1]) == null ? void 0 : A.el) == null ? void 0 : e.style) == null ? void 0 : t.top : "30px";
}
function Xu() {
var A, e;
const a = wA.length;
return a > 0 ? (e = (A = wA[a - 1]) == null ? void 0 : A.el) == null ? void 0 : e.offsetHeight : 0;
}
const co = (a) => {
const { type: A, duration: e = 3e3, message: t, showClose: o = !1, onClose: n } = a, s = document.body, r = document.createElement("div"), c = C(Zu, {
type: A,
duration: e,
message: t,
showClose: o,
index: `toast-item-${Fu++}`,
// eslint-disable-line
close() {
var D, h, j, m;
const T = wA.findIndex((w) => w === c);
console.log((h = (D = wA[T]) == null ? void 0 : D.el) == null ? void 0 : h.offsetHeight);
const I = parseInt((m = (j = wA[T]) == null ? void 0 : j.el) == null ? void 0 : m.offsetHeight) + 20;
for (let w = 0; w < wA.length; w++)
w < T || (wA[w].el.style.top = parseInt(wA[w].el.style.top) - I + "px");
wA.splice(T, 1);
},
destroy() {
Ue(null, r);
}
});
Ue(c, r), s.appendChild(r.firstElementChild);
const M = Yu(), N = Xu();
c.el.style.top = parseInt(M) + parseInt(N) + 20 + "px", wA.push(c);
};
["info", "waring", "error", "success"].forEach((a) => {
let A = {};
HA[a] = (e) => {
typeof e == "string" ? A.message = e : A = e, co({ type: a, ...A });
};
});
HA.show = (a) => {
let A = {};
return typeof a == "string" ? (A.message = a, A.type = "info") : A = a, co({ type: "info", ...A });
};
const it = /* @__PURE__ */ f({
__name: "TUICallKit",
props: {
beforeCalling: {},
afterCalling: {},
onMinimized: {},
onMessageSentByMe: {},
kickedOut: {},
statusChanged: {},
allowedMinimized: { type: Boolean, default: !1 },
allowedFullScreen: { type: Boolean, default: !0 },
videoDisplayMode: { default: "cover" },
videoResolution: { default: "480p" }
},
setup(a) {
const A = !V.isPC, e = A ? "TUICallKit-mobile transition-animation" : "TUICallKit-desktop", t = p(""), o = p(""), n = p(""), s = p(!1), r = a, c = p(g.getData(u.CALL, i.CALL_STATUS)), M = p(g.getData(u.CALL, i.CALL_ROLE)), N = p(g.getData(u.CALL, i.CALL_MEDIA_TYPE)), T = p(g.getData(u.CALL, i.IS_GROUP)), I = p(g.getData(u.CALL, i.IS_EAR_PHONE)), D = p(null), h = p(g.getData(u.CALL, i.LOCAL_USER_INFO_EXCLUDE_VOLUMN)), j = p(g.getData(u.CALL, i.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST)), m = p(g.getData(u.CALL, i.CALLER_USER_INFO)), w = p(g.getData(u.CALL, i.IS_MINIMIZED)), H = p(g.getData(u.CALL, i.ENABLE_VIRTUAL_BACKGROUND)), b = p(g.getData(u.CALL, i.IS_SHOW_ENABLE_VIRTUAL_BACKGROUND)), x = p(g.getData(u.CALL, i.CUSTOM_UI_CONFIG)), B = p(g.getData(u.CALL, i.IS_MUTE_SPEAKER)), F = Be({
callStatus: c,
callRole: M,
callType: N,
isGroupCall: T,
isEarPhone: I,
focusElement: D,
allowedFullScreen: r.allowedFullScreen,
enableVirtualBackground: H,
isShowEnableVirtualBackground: b,
isMuteSpeaker: B
}), tA = Be({ callerUserInfo: m }), J = Be({
localUserInfoExcludeVolume: h,
remoteUserListExcludeVolume: j
}), MA = Be({ isFloatWindow: w }), {
beforeCalling: WA,
afterCalling: Me,
onMinimized: ee,
onMessageSentByMe: te,
videoDisplayMode: de,
videoResolution: ae,
kickedOut: xe,
statusChanged: ke,
allowedMinimized: lA
} = G(r), SA = (K) => {
F.callStatus = K;
}, nA = (K) => {
F.isGroupCall = K;
}, PA = (K) => {
K.text && jo(K.text, K.type || "info");
}, uo = (K) => {
F.callType = K, A && s.value && (n.value = "miniMized-mobile-audio", o.value = ""), A && !s.value && (o.value = "mobile-audio");
}, wt = (K) => {
MA.isFloatWindow = K, K ? A ? F.callType === _.AUDIO ? o.value = "miniMized-mobile-audio" : n.value = "miniMized-mobile-video" : t.value = "miniMized" : (o.value = "mobile-audio", t.value = "", n.value = "");
}, Mo = (K) => {
if (K && V.isPC)
try {
so.show();
} catch (Re) {
console.debug(Re);
}
}, Io = (K) => {
F.callRole = K;
}, No = (K) => {
J.localUserInfoExcludeVolume = K;
}, go = (K) => {
J.remoteUserListExcludeVolume = K;
}, To = (K) => {
tA.callerUserInfo = K;
}, po = (K) => {
F.isEarPhone = K;
}, Do = (K) => {
F.enableVirtualBackground = K;
}, yo = (K) => {
F.isShowEnableVirtualBackground = K;
}, Co = (K) => {
x.value = K;
}, So = (K) => {
F.isMuteSpeaker = K;
};
ue(() => {
Q.setCallback({
beforeCalling: WA && WA.value,
afterCalling: Me && Me.value,
onMinimized: ee && ee.value,
onMessageSentByMe: te && te.value,
kickedOut: xe && xe.value,
statusChanged: ke && ke.value
});
});
const Ot = {
[i.CALL_STATUS]: SA,
[i.IS_GROUP]: nA,
[i.TOAST_INFO]: PA,
[i.CALL_MEDIA_TYPE]: uo,
[i.SHOW_PERMISSION_TIP]: Mo,
[i.CALL_ROLE]: Io,
[i.LOCAL_USER_INFO_EXCLUDE_VOLUMN]: No,
[i.REMOTE_USER_INFO_EXCLUDE_VOLUMN_LIST]: go,
[i.CALLER_USER_INFO]: To,
[i.IS_EAR_PHONE]: po,
[i.ENABLE_VIRTUAL_BACKGROUND]: Do,
[i.IS_SHOW_ENABLE_VIRTUAL_BACKGROUND]: yo,
[i.CUSTOM_UI_CONFIG]: Co,
[i.IS_MUTE_SPEAKER]: So
};
CA(() => {
lA.value && Q.enableFloatWindow(lA.value), Q.setVideoDisplayMode(de.value), Q.setVideoResolution(ae.value), g.watch(
u.CALL,
Ot,
{
notifyRangeWhenWatch: i.MYSELF
}
), g.watch(u.CALL, {
[i.IS_MINIMIZED]: wt
});
});
function jo(K, Re) {
switch (Re) {
case "info":
HA == null || HA.info(K);
break;
case "error":
HA == null || HA.error(K);
break;
}
}
return DA(async () => {
g.unwatch(u.CALL, {
...Ot,
[i.IS_MINIMIZED]: wt
});
}), OA(Na, F), OA(ga, tA), OA(Ta, J), OA(ya, MA), OA(ja, x), (K, Re) => l(F).callStatus !== l(P).IDLE ? (d(), y("div", {
key: 0,
style: eA([{ visibility: l(MA).isFloatWindow ? "hidden" : "" }]),
id: "tuicallkit-id",
class: k([l(e), l(t), l(n), l(o)])
}, [
l(F).isGroupCall ? (d(), U(pu, {
key: 1,
class: "singCall"
})) : (d(), U(Er, {
key: 0,
class: "singCall"
}))
], 6)) : z("", !0);
}
});
const ro = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTEuNTM1NzcgNi42ODIzOEMxLjIwNTYyIDUuNzI3MjggMS42MjM1NSA0LjcwMTQ5IDIuNDM2NDEgNC4xMDA4QzMuMDUyNjUgMy42NDU0MSAzLjY3MTcgMy4xODU0OSA0LjAyNDk0IDIuOTIyNzZDNC4xOTI4IDIuNzk3OTEgNC40MjgxIDIuODI1MjIgNC41NjM2IDIuOTg0NTlMNi40ODg1NSA1LjI0ODU3QzYuNjE0NDEgNS4zOTY1OSA2LjYxNDQ3IDUuNjEzOTYgNi40ODg3IDUuNzYyMDVMNS4zMDgzNiA3LjE1MTlDNS4yMDA5MSA3LjI3ODQxIDUuMTgzMDIgNy40NTg4NyA1LjI2Nzk2IDcuNjAxNDZDNS42NTA0MSA4LjI0MzQ1IDYuMDcwMDggOC43OTMzNCA2LjYzNzE5IDkuMzYwMjlDNy4yMDc2MyA5LjkzMDU2IDcuNzU3NDIgMTAuMzQyMSA4LjQwMzA2IDEwLjcyMzVDOC41NDU3NiAxMC44MDc5IDguNzI1OTQgMTAuNzg5OSA4Ljg1MjM0IDEwLjY4MjdMMTAuMjM2NSA5LjUwODYxQzEwLjM4NDcgOS4zODI5NSAxMC42MDIgOS4zODMwNCAxMC43NTAxIDkuNTA4ODNMMTMuMDE1OSAxMS40MzQyQzEzLjE3NDkgMTEuNTY5MyAxMy4yMDIgMTEuODA0NCAxMy4wNzggMTEuOTcyMUwxMS44OTI3IDEzLjU3NTVDMTEuMjk2OCAxNC4zODE3IDEwLjI3OSAxNC43OTE2IDkuMzMwOTIgMTQuNDY1NEM3LjU3ODM1IDEzLjg2MjQgNS45MzIzNSAxMi44NjE3IDQuNTMzNTMgMTEuNDYzM0MzLjEzODcyIDEwLjA2ODkgMi4xMzk0NiA4LjQyODgzIDEuNTM1NzcgNi42ODIzOFoiIGZpbGw9IiMxQzY2RTUiLz4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04Ljg4ODc2IDIuMTMzM0M4LjY5MjM5IDIuMTMzMyA4LjUzMzIgMi4yOTI0OSA4LjUzMzIgMi40ODg4NlY2LjE3MzdDOC41MzMyIDYuMzcwMDYgOC42OTIzOSA2LjUyOTI1IDguODg4NzYgNi41MjkyNUgxMi41NzM2QzEyLjc3IDYuNTI5MjUgMTIuOTI5MiA2LjM3MDA2IDEyLjkyOTIgNi4xNzM3VjUuOTg3ODJDMTIuOTI5MiA1Ljc1MzcgMTMuMTcyMyA1LjU5ODgzIDEzLjM4NDUgNS42OTc4NEwxNC4wNzE0IDYuMDE4NDFDMTQuMzA3MSA2LjEyODQxIDE0LjU3NzMgNS45NTYzNCAxNC41NzczIDUuNjk2MjFWMi45NjYzM0MxNC41NzczIDIuNzA2MiAxNC4zMDcxIDIuNTM0MTMgMTQuMDcxNCAyLjY0NDE0TDEzLjM4NDUgMi45NjQ3QzEzLjE3MjMgMy4wNjM3MSAxMi45MjkyIDIuOTA4ODQgMTIuOTI5MiAyLjY3NDcyVjIuNDg4ODZDMTIuOTI5MiAyLjI5MjQ5IDEyLjc3IDIuMTMzMyAxMi41NzM2IDIuMTMzM0g4Ljg4ODc2WiIgZmlsbD0iIzFDNjZFNSIvPgo8L3N2Zz4K", qu = { class: "banner-pc" }, Ju = { class: "text" }, Hu = { class: "content" }, Ku = { class: "avatar-box" }, _u = /* @__PURE__ */ f({
__name: "JoinGroupCard",
props: {
userListInfo: {
type: Array,
default: []
}
},
emits: ["joinGroupCall"],
setup(a, { emit: A }) {
const e = A, t = p(!1), o = () => {
e("joinGroupCall"), t.value = !1;
}, n = () => {
t.value = !t.value;
};
return (s, r) => (d(), y("div", qu, [
L("div", {
class: "top",
onClick: n
}, [
C(LA, {
class: "call-icon",
src: l(ro),
width: "16px",
height: "16px"
}, null, 8, ["src"]),
L("span", Ju, W(a.userListInfo.length) + " " + W(l(v)("people on the call")), 1)
]),
sA(L("div", Hu, [
r[0] || (r[0] = L("div", { class: "content-arrows" }, null, -1)),
L("div", Ku, [
(d(!0), y(RA, null, ce(a.userListInfo, (c) => (d(), U(LA, {
class: "avatar",
src: c == null ? void 0 : c.avatar,
defaultSrc: l(QA),
fit: "cover",
width: "32px",
height: "32px"
}, null, 8, ["src", "defaultSrc"]))), 256))
]),
L("div", {
class: "btn",
onClick: o
}, W(l(v)("join")), 1)
], 512), [
[cA, l(t)]
])
]));
}
});
const $u = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iNiIgdmlld0JveD0iMCAwIDEwIDYiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOS41IDMuOTM0MDNlLTA3TDUgMy43NUwwLjUgMS41OTIwNGUtMDdMMC41IDEuNTYyMDVMNC42MTU4OSA0Ljk5MTk2TDUgNS4zMTIwNUw1LjM4NDExIDQuOTkxOTZMOS41IDEuNTYyMDVMOS41IDMuOTM0MDNlLTA3WiIgZmlsbD0iIzY2NjY2NiIvPgo8L3N2Zz4K", AM = { class: "banner-h5" }, eM = { class: "left" }, tM = { class: "text" }, aM = { class: "content-box" }, oM = { class: "content" }, lM = { class: "avatar-box" }, nM = /* @__PURE__ */ f({
__name: "JoinGroupCard",
props: {
userListInfo: {
type: Array,
default: []
}
},
emits: ["joinGroupCall"],
setup(a, { emit: A }) {
const e = p({ margin: "8px 10px 8px 0px" }), t = p({
margin: "6px",
borderRadius: "4px"
}), o = p(!1), n = A, s = () => {
n("joinGroupCall"), o.value = !1;
}, r = () => {
o.value = !o.value;
};
return (c, M) => (d(), y("div", AM, [
L("div", {
class: "top",
onClick: r
}, [
L("div", eM, [
C(LA, {
class: "call-icon",
src: l(ro),
width: "16px",
height: "16px",
customStyle: l(e)
}, null, 8, ["src", "customStyle"]),
L("span", tM, W(a.userListInfo.length) + " " + W(l(v)("people on the call")), 1)
]),
C(LA, {
src: l($u),
width: "9px",
height: "9px"
}, null, 8, ["src"])
]),
sA(L("div", aM, [
L("div", oM, [
L("div", lM, [
(d(!0), y(RA, null, ce(a.userListInfo, (N) => (d(), U(LA, {
src: N == null ? void 0 : N.avatar,
customStyle: l(t),
defaultSrc: l(QA),
fit: "cover",
width: "50px",
height: "50px"
}, null, 8, ["src", "customStyle", "defaultSrc"]))), 256))
]),
L("div", {
class: "btn",
onClick: pe(s, ["stop"])
}, W(l(v)("join")), 1)
])
], 512), [
[cA, l(o)]
])
]));
}
});
const iM = /* @__PURE__ */ f({
__name: "JoinGroupCard",
setup(a) {
const A = p(V.isPC), e = p(null), { groupId: t, roomId: o, roomIdType: n, callMediaType: s, groupCallMembers: r, callStatus: c } = G(Gl()), M = S(() => t && (c == null ? void 0 : c.value) === P.IDLE && r.value.length), N = async () => {
if (r.value.length > 9) {
e.value.show({
message: "Supports a maximum of 9 people for simultaneous calls",
type: "success"
});
return;
}
const T = {
type: s.value,
groupID: t.value,
roomID: n.value === 1 ? Number(o.value) : 0,
strRoomID: String(o.value)
};
try {
await Q.joinInGroupCall(T);
} catch (I) {
console.error(`${i.PREFIX}joinInGroupCall fail: ${I}`);
}
};
return (T, I) => sA((d(), y("div", null, [
l(A) ? (d(), U(_u, {
key: 0,
userListInfo: l(r),
onJoinGroupCall: N
}, null, 8, ["userListInfo"])) : (d(), U(nM, {
key: 1,
userListInfo: l(r),
onJoinGroupCall: N
}, null, 8, ["userListInfo"])),
C(to, {
ref_key: "message",
ref: e
}, null, 512)
], 512)), [
[cA, l(M)]
]);
}
}), sM = (a) => (a.component("TUICallKit", { server: Q }), Q.bindTUICore(a), it), cM = (a) => {
a.component("TUICallKit", it).component("JoinGroupCard", iM), console.log("TUICallKit&mini installed", a);
};
it.plugin = sM;
it.install = cM;
const IM = {
AUDIO_CALL: 1,
VIDEO_CALL: 2
}, NM = "3.3.7";
export {
_ as CallMediaType,
IA as CallRole,
_A as FeatureButton,
iM as JoinGroupCard,
Xe as LayoutMode,
i as NAME,
jA as STATUS,
u as StoreName,
it as TUICallKit,
Q as TUICallKitServer,
IM as TUICallType,
V as TUIGlobal,
g as TUIStore,
NM as Version,
fe as VideoDisplayMode,
ve as VideoResolution,
cM as install,
sM as plugin,
v as t,
YA as uiDesign
};