From f1e388ce8990ee7411936d4e2d12139a5eb1aab1 Mon Sep 17 00:00:00 2001 From: "LAPTOP-SB56SG4Q\\86185" Date: Mon, 11 Oct 2021 16:53:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=BC=80=E6=BA=90=E6=9D=90?= =?UTF-8?q?=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- JSD-8380-需求确认书V1.docx | Bin 0 -> 61826 bytes README.md | 7 +- crc.properties | 5 + plugin.xml | 18 ++ readme.txt | 6 + .../com/fr/plugin/crc/sso/CommonUtils.java | 132 +++++++++++++ .../fr/plugin/crc/sso/PluginConstants.java | 11 ++ .../java/com/fr/plugin/crc/sso/RIGFilter.java | 173 ++++++++++++++++++ .../java/com/fr/plugin/crc/sso/SsoFilter.java | 143 +++++++++++++++ src/main/resources/com/fr/plugin/crc-sso.html | 34 ++++ src/main/resources/com/fr/plugin/index.js | 24 +++ .../resources/com/fr/plugin/write-cookie.html | 15 ++ src/main/resources/crc.properties | 5 + 13 files changed, 571 insertions(+), 2 deletions(-) create mode 100644 JSD-8380-需求确认书V1.docx create mode 100644 crc.properties create mode 100644 plugin.xml create mode 100644 readme.txt create mode 100644 src/main/java/com/fr/plugin/crc/sso/CommonUtils.java create mode 100644 src/main/java/com/fr/plugin/crc/sso/PluginConstants.java create mode 100644 src/main/java/com/fr/plugin/crc/sso/RIGFilter.java create mode 100644 src/main/java/com/fr/plugin/crc/sso/SsoFilter.java create mode 100644 src/main/resources/com/fr/plugin/crc-sso.html create mode 100644 src/main/resources/com/fr/plugin/index.js create mode 100644 src/main/resources/com/fr/plugin/write-cookie.html create mode 100644 src/main/resources/crc.properties diff --git a/JSD-8380-需求确认书V1.docx b/JSD-8380-需求确认书V1.docx new file mode 100644 index 0000000000000000000000000000000000000000..3a0e24e2e24388edfa5c767b62f58806e79046bf GIT binary patch literal 61826 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 W8E^mqc##2okU{|gN$x&>_kRFip62ub literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 74f25fc..fc14871 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ -# open-JSD-8380 +# open-JSD-8380 单点登录 -JSD-8380 \ No newline at end of file +JSD-8380 任务开源材料\ +免责说明:该源码为第三方爱好者提供,不保证源码和方案的可靠性,也不提供任何形式的源码教学指导和协助!\ +仅作为开发者学习参考使用!禁止用于任何商业用途!\ +为保护开发者隐私,开发者信息已隐去!若原开发者希望公开自己的信息,可联系hugh处理。 \ No newline at end of file diff --git a/crc.properties b/crc.properties new file mode 100644 index 0000000..74f62f8 --- /dev/null +++ b/crc.properties @@ -0,0 +1,5 @@ +env=uat +devUser=1 +isLocal=true +appId=xxxxxxxxxxxxxxxx +appSecret=xxxxxxxxxxxxxxxxxxx \ No newline at end of file diff --git a/plugin.xml b/plugin.xml new file mode 100644 index 0000000..90bc8e4 --- /dev/null +++ b/plugin.xml @@ -0,0 +1,18 @@ + + + com.fr.plugin.crc.sso + + yes + 1.17 + 10.0 + 2018-07-31 + fr.open + + + + + + + + + \ No newline at end of file diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..e78a7af --- /dev/null +++ b/readme.txt @@ -0,0 +1,6 @@ +此次完成功能如下 + a、单点登录 + +1、将压缩文件解压后的crc.properties配置文件拷贝至 %部署路径%/WEB-INF/resources, 并修改相应的属性配置 +2、安装本插件,插件安装见连接http://help.finereport.com/doc-view-2198.html +3、进入系统测试单点登录,访问地址为http://ip:port/webroot/decision/crc/sso \ No newline at end of file diff --git a/src/main/java/com/fr/plugin/crc/sso/CommonUtils.java b/src/main/java/com/fr/plugin/crc/sso/CommonUtils.java new file mode 100644 index 0000000..ddbf3fe --- /dev/null +++ b/src/main/java/com/fr/plugin/crc/sso/CommonUtils.java @@ -0,0 +1,132 @@ +package com.fr.plugin.crc.sso; + +import com.fr.data.NetworkHelper; +import com.fr.decision.authority.data.User; +import com.fr.decision.mobile.terminal.TerminalHandler; +import com.fr.decision.webservice.utils.DecisionServiceConstants; +import com.fr.decision.webservice.utils.DecisionStatusService; +import com.fr.decision.webservice.v10.login.LoginService; +import com.fr.decision.webservice.v10.login.TokenResource; +import com.fr.decision.webservice.v10.user.UserService; +import com.fr.log.FineLoggerFactory; +import com.fr.stable.StringUtils; +import com.fr.stable.web.Device; +import com.fr.web.utils.WebUtils; + +import javax.servlet.FilterChain; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Map; +import java.util.Properties; + +/** + * @author fr.open + * @since 2021/7/29 + */ +public class CommonUtils { + + public static String getProperty(Properties props, String key, String defaultValue, boolean allowBlank) { + String value = props.getProperty(key); + if (StringUtils.isNotBlank(value)) { + return value; + } else { + if (allowBlank) { + FineLoggerFactory.getLogger().warn("Property[" + key + "] value is blank."); + return defaultValue; + } else { + throw new IllegalArgumentException("Property[" + key + "] cann't be blank."); + } + } + } + + public static String getProperty(Properties props, String key, boolean allowBlank) { + return getProperty(props, key, null, allowBlank); + } + + public static String getProperty(Properties props, String key) { + return getProperty(props, key, null, true); + } + + public static boolean isLogin(HttpServletRequest request) { + String oldToken = TokenResource.COOKIE.getToken(request); + return oldToken != null && checkTokenValid(request, (String) oldToken); + } + + private static boolean checkTokenValid(HttpServletRequest req, String token) { + try { + Device device = NetworkHelper.getDevice(req); + LoginService.getInstance().loginStatusValid(token, TerminalHandler.getTerminal(req, device)); + return true; + } catch (Exception ignore) { + } + return false; + } + + /** + * 跳转到过滤器链中的下一个过滤器 + * + * @param request + * @param response + * @param chain + */ + public static void next(HttpServletRequest request, HttpServletResponse response, FilterChain chain) { + try { + chain.doFilter(request, response); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public static void login(String username, HttpServletRequest request, HttpServletResponse response) { + try { + User user = UserService.getInstance().getUserByUserName(username); + if (user == null) { + throw new RuntimeException("系统未授权, 当前用户是\"" + username + "\""); + } + String token = LoginService.getInstance().login(request, response, username); + request.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME, token); + } catch (Exception e) { + FineLoggerFactory.getLogger().error("sso >> Failed to login with[" + username + "]", e); + throw new RuntimeException("用户\"" + username +"\"登录失败"); + } + } + + public static boolean isMobileDevice(HttpServletRequest request) { + if (WebUtils.getDevice(request).isMobile()) { + FineLoggerFactory.getLogger().info("current request is is mobile request ,url is {}", request.getRequestURI()); + return true; + } + String requestHeader = request.getHeader("user-agent"); + String[] deviceArray = new String[]{"android", "iphone", "ipad", "ios", "windows phone", "wechat"}; + if (requestHeader == null) { + return false; + } + requestHeader = requestHeader.toLowerCase(); + for (int i = 0; i < deviceArray.length; i++) { + if (requestHeader.toLowerCase().contains(deviceArray[i])) { + FineLoggerFactory.getLogger().info("current request:{} is mobile request!", request.getRequestURI()); + return true; + } + } + String op = WebUtils.getHTTPRequestParameter(request, "op"); + return StringUtils.isNotBlank(op) && StringUtils.equals("h5",op); + } + + public static void cacheParams(String key, Map values) { + try { + DecisionStatusService.originUrlStatusService().put(key, values); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public static String getCachedParam(String key, String name) { + try { + Map values = DecisionStatusService.originUrlStatusService().get(key); + return values.get(name); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + +} diff --git a/src/main/java/com/fr/plugin/crc/sso/PluginConstants.java b/src/main/java/com/fr/plugin/crc/sso/PluginConstants.java new file mode 100644 index 0000000..9fa56e9 --- /dev/null +++ b/src/main/java/com/fr/plugin/crc/sso/PluginConstants.java @@ -0,0 +1,11 @@ +package com.fr.plugin.crc.sso; + +/** + * @Author fr.open + * @Date 2021/9/24 + * @Description + **/ +public class PluginConstants { + + public static final String PLUGIN_ID = "com.fr.plugin.crc.sso"; +} diff --git a/src/main/java/com/fr/plugin/crc/sso/RIGFilter.java b/src/main/java/com/fr/plugin/crc/sso/RIGFilter.java new file mode 100644 index 0000000..c1277db --- /dev/null +++ b/src/main/java/com/fr/plugin/crc/sso/RIGFilter.java @@ -0,0 +1,173 @@ +package com.fr.plugin.crc.sso; + +import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider; +import com.fr.decision.webservice.utils.WebServiceUtils; +import com.fr.general.PropertiesUtils; +import com.fr.general.http.HttpToolbox; +import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.json.JSONObject; +import com.fr.locale.InterProviderFactory; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.context.PluginContexts; +import com.fr.plugin.transform.FunctionRecorder; +import com.fr.stable.StringUtils; +import com.fr.stable.fun.Authorize; +import com.fr.third.org.apache.commons.codec.binary.Base64; +import com.fr.web.utils.WebUtils; + +import javax.servlet.FilterChain; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; +import java.util.stream.Stream; + +import static com.fr.plugin.crc.sso.CommonUtils.*; + +/** + * @author fr.open + * @since 2021/9/2 + */ +@FunctionRecorder +@Authorize(callSignKey = PluginConstants.PLUGIN_ID) +public class RIGFilter extends AbstractGlobalRequestFilterProvider { + + private final static String[] NOT_FILTER = { + "/decision/file", + "/decision/resources", + "/system", + "/materials.min.js.map", + "/remote", + "/login", + "/url/mobile", + "/crc/sso", + "/login/config" + }; + + private String apiLogin; + + private String apiGetToken; + + private String clientId; + + private String clientSecret; + + private String redirectURI; + + private void initParams() { + Properties props = PropertiesUtils.getProperties("crc"); + apiLogin = getProperty(props, "rig.api.login", false); + apiGetToken = getProperty(props, "rig.api.get-token", false); + clientId = getProperty(props, "rig.api.client_id", false); + clientSecret = getProperty(props, "rig.api.client_secret", false); + redirectURI = getProperty(props, "rig.api.redirect_uri", false); + } + + @Override + public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) { + if (isAccept(request)) { + next(request, response, chain); + return; + } + try { + initParams(); + String ticket = request.getParameter("ticket"); + if (StringUtils.isBlank(ticket)) { + jumpAuthorize(request, response); + return; + } + String[] splitted = ticket.split("\\."); + String code = splitted[splitted.length - 1]; + login(getUsername(getToken(code, response)), request, response); + next(request, response, chain); + } catch (Exception e) { + FineLoggerFactory.getLogger().error("RIG sso >>> 处理单点登陆时发生错误", e); + setError(response, e.getMessage()); + } + } + + private String getUsername(String token) { + try { + FineLoggerFactory.getLogger().info("RIG sso >>> 获取到的token值为 ==> \"{}\"", token); + String res = new String(Base64.decodeBase64(token.split("\\.")[1])); + FineLoggerFactory.getLogger().info("RIG sso >>> Base64 decode 后的token值为 ==> \"{}\"", res); + JSONObject body = new JSONObject(res); + if (body.has("user_name")) { + return body.getString("user_name"); + } + throw new RuntimeException("解析token获取用户名失败"); + } catch (Exception e) { + throw new RuntimeException("获取token失败, " + e.getMessage()); + } + } + + private String getToken(String code, HttpServletResponse response) throws IOException { + String api = String.format("%s?grant_type=authorization_code&client_id=%s&client_secret=%s&code=%s", apiGetToken, clientId, clientSecret, code); + FineLoggerFactory.getLogger().info("RIG sso >>> 获取 token 请求地址 ==> \"{}\"", api); + String res = HttpToolbox.post(api, Collections.emptyMap()); + JSONObject body = new JSONObject(res); + if (body.has("refresh_token")) { + Cookie c = new Cookie("RIG_REFRESH_TOKEN", body.getString("refresh_token")); + c.setPath("/"); + response.addCookie(c); + } + if (body.has("access_token")) { + Cookie c = new Cookie("RIG_ACCESS_TOKEN", body.getString("access_token")); + c.setPath("/"); + response.addCookie(c); + return body.getString("access_token"); + } + throw new RuntimeException("获取 token 接口请求失败, " + res); + } + + private void jumpAuthorize(HttpServletRequest request, HttpServletResponse response) throws IOException { + String login = String.format("%s?service=%s", apiLogin, redirectURI); + FineLoggerFactory.getLogger().info("RIG sso >>> 跳转到登陆页面 ==> \"{}\"", login); + response.sendRedirect(login); + } + + @Override + public String filterName() { + return "rigFilter"; + } + + @Override + @Focus(id = PluginConstants.PLUGIN_ID, text = "单点登录", source = Original.PLUGIN) + public String[] urlPatterns() { + if(!PluginContexts.currentContext().isAvailable()){ + return new String[0]; + } + return new String[]{"/*"}; + } + + public boolean isAccept(HttpServletRequest request) { + String url = request.getRequestURL().toString(); + if (Stream.of(NOT_FILTER).anyMatch(url::contains)) { + return true; + } + return isLogin(request); + } + + private void setError(HttpServletResponse res, String reason) { + try { + PrintWriter printWriter = WebUtils.createPrintWriter(res); + Map map = new HashMap<>(); + map.put("result", InterProviderFactory.getProvider().getLocText("Fine-Engine_Error_Page_Result")); + map.put("reason", reason); + map.put("solution", InterProviderFactory.getProvider().getLocText("Fine-Engine_Please_Contact_Platform_Admin")); + String page = WebServiceUtils.parseWebPageResourceSafe("com/fr/web/controller/decision/entrance/resources/unavailable.html", map); + printWriter.write(page); + printWriter.flush(); + printWriter.close(); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/fr/plugin/crc/sso/SsoFilter.java b/src/main/java/com/fr/plugin/crc/sso/SsoFilter.java new file mode 100644 index 0000000..3560f91 --- /dev/null +++ b/src/main/java/com/fr/plugin/crc/sso/SsoFilter.java @@ -0,0 +1,143 @@ +package com.fr.plugin.crc.sso; + +import com.fr.base.TemplateUtils; +import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider; +import com.fr.decision.webservice.utils.WebServiceUtils; +import com.fr.general.PropertiesUtils; +import com.fr.intelli.record.Focus; +import com.fr.intelli.record.Original; +import com.fr.locale.InterProviderFactory; +import com.fr.log.FineLoggerFactory; +import com.fr.plugin.context.PluginContexts; +import com.fr.plugin.transform.FunctionRecorder; +import com.fr.stable.StringUtils; +import com.fr.stable.fun.Authorize; +import com.fr.web.utils.WebUtils; + +import javax.servlet.FilterChain; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; +import java.util.stream.Stream; + +import static com.fr.plugin.crc.sso.CommonUtils.*; + +/** + * @author fr.open + * @since 2021/7/29 + */ +@FunctionRecorder +@Authorize(callSignKey = PluginConstants.PLUGIN_ID) +public class SsoFilter extends AbstractGlobalRequestFilterProvider { + + private static String[] NOT_FILTER = { + "/decision/file", + "/decision/resources", + "/system", + "/materials.min.js.map", + "/remote", + "/login", + "/url/mobile", + "/login/config" + }; + + private final String env; + + private final String devUser; + + private final boolean isLocal; + + private final String appId; + + private final String appSecret; + + public SsoFilter() { + Properties props = PropertiesUtils.getProperties("crc"); + this.env = getProperty(props, "env", true); + this.devUser = getProperty(props, "devUser", true); + this.isLocal = Boolean.parseBoolean(getProperty(props, "isLocal", true)); + this.appId = getProperty(props, "appId", true); + this.appSecret = getProperty(props, "appSecret", true); + } + + + @Override + public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) { + if (request.getRequestURI().endsWith("/crc/sso")) { + FineLoggerFactory.getLogger().info("sso >> 进入Filter, 当前URL为: \"{}\"", request.getRequestURI() + "?" + request.getQueryString()); + try { + String root = TemplateUtils.render("${fineServletURL}"); + if (isAccept(request)) { + FineLoggerFactory.getLogger().info("sso >> 已登录, 跳转到 ==> {}", root + "/url/mobile"); + response.sendRedirect(root + "/url/mobile"); + return; + } + + String username = request.getParameter("username"); + if (StringUtils.isBlank(username)) { + FineLoggerFactory.getLogger().info("sso >> 未获取到用户名, 跳转到 ==> crc-sso.html"); + PrintWriter writer = WebUtils.createPrintWriter(response); + Map attributes = new HashMap<>(); + attributes.put("root", root); + attributes.put("env", env); + attributes.put("devUser", devUser); + attributes.put("appId", appId); + attributes.put("appSecret", appSecret); + attributes.put("isLocal", isLocal); + String page = WebServiceUtils.parseWebPageResource("com/fr/plugin/crc-sso.html", attributes); + writer.write(page); + writer.flush(); + writer.close(); + } else { + FineLoggerFactory.getLogger().info("sso >> 获取到有用户名, 用户名为: \"{}\" 执行登录并跳转到 ==> {}", username, root + "/url/mobile"); + login(username, request, response); + response.sendRedirect(root + "/url/mobile"); + } + } catch (Exception e) { + FineLoggerFactory.getLogger().error("单点登录处理失败.", e); + setError(response, e.getMessage()); + } + } else { + next(request, response, chain); + } + + } + + @Override + public String filterName() { + return "sso"; + } + + @Override + @Focus(id = PluginConstants.PLUGIN_ID, text = "单点登录", source = Original.PLUGIN) + public String[] urlPatterns() { + if(!PluginContexts.currentContext().isAvailable()){ + return new String[0]; + } + return new String[]{"/decision/crc/sso"}; + } + + private boolean isAccept(HttpServletRequest request) { + return isLogin(request); + } + + private void setError(HttpServletResponse res, String reason) { + try { + PrintWriter printWriter = WebUtils.createPrintWriter(res); + Map map = new HashMap<>(); + map.put("result", InterProviderFactory.getProvider().getLocText("Fine-Engine_Error_Page_Result")); + map.put("reason", reason); + map.put("solution", InterProviderFactory.getProvider().getLocText("Fine-Engine_Please_Contact_Platform_Admin")); + String page = WebServiceUtils.parseWebPageResourceSafe("com/fr/web/controller/decision/entrance/resources/unavailable.html", map); + printWriter.write(page); + printWriter.flush(); + printWriter.close(); + } catch (Exception e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + } + +} diff --git a/src/main/resources/com/fr/plugin/crc-sso.html b/src/main/resources/com/fr/plugin/crc-sso.html new file mode 100644 index 0000000..2849507 --- /dev/null +++ b/src/main/resources/com/fr/plugin/crc-sso.html @@ -0,0 +1,34 @@ + + + + + 单点登录 + + + + + + \ No newline at end of file diff --git a/src/main/resources/com/fr/plugin/index.js b/src/main/resources/com/fr/plugin/index.js new file mode 100644 index 0000000..7c8f312 --- /dev/null +++ b/src/main/resources/com/fr/plugin/index.js @@ -0,0 +1,24 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).runworkHelp={})}(this,(function(exports){"use strict";var commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(e,t){return e(t={exports:{}},t.exports),t.exports}var check=function(e){return e&&e.Math==Math&&e},global_1=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof commonjsGlobal&&commonjsGlobal)||Function("return this")(),fails=function(e){try{return!!e()}catch(e){return!0}},descriptors=!fails((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),nativePropertyIsEnumerable={}.propertyIsEnumerable,getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor,NASHORN_BUG=getOwnPropertyDescriptor&&!nativePropertyIsEnumerable.call({1:2},1),f=NASHORN_BUG?function(e){var t=getOwnPropertyDescriptor(this,e);return!!t&&t.enumerable}:nativePropertyIsEnumerable,objectPropertyIsEnumerable={f:f},createPropertyDescriptor=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},toString={}.toString,classofRaw=function(e){return toString.call(e).slice(8,-1)},split="".split,indexedObject=fails((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==classofRaw(e)?split.call(e,""):Object(e)}:Object,requireObjectCoercible=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},toIndexedObject=function(e){return indexedObject(requireObjectCoercible(e))},isObject=function(e){return"object"==typeof e?null!==e:"function"==typeof e},toPrimitive=function(e,t){if(!isObject(e))return e;var r,n;if(t&&"function"==typeof(r=e.toString)&&!isObject(n=r.call(e)))return n;if("function"==typeof(r=e.valueOf)&&!isObject(n=r.call(e)))return n;if(!t&&"function"==typeof(r=e.toString)&&!isObject(n=r.call(e)))return n;throw TypeError("Can't convert object to primitive value")},hasOwnProperty={}.hasOwnProperty,has=function(e,t){return hasOwnProperty.call(e,t)},document$1=global_1.document,EXISTS=isObject(document$1)&&isObject(document$1.createElement),documentCreateElement=function(e){return EXISTS?document$1.createElement(e):{}},ie8DomDefine=!descriptors&&!fails((function(){return 7!=Object.defineProperty(documentCreateElement("div"),"a",{get:function(){return 7}}).a})),nativeGetOwnPropertyDescriptor=Object.getOwnPropertyDescriptor,f$1=descriptors?nativeGetOwnPropertyDescriptor:function(e,t){if(e=toIndexedObject(e),t=toPrimitive(t,!0),ie8DomDefine)try{return nativeGetOwnPropertyDescriptor(e,t)}catch(e){}if(has(e,t))return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(e,t),e[t])},objectGetOwnPropertyDescriptor={f:f$1},anObject=function(e){if(!isObject(e))throw TypeError(String(e)+" is not an object");return e},nativeDefineProperty=Object.defineProperty,f$2=descriptors?nativeDefineProperty:function(e,t,r){if(anObject(e),t=toPrimitive(t,!0),anObject(r),ie8DomDefine)try{return nativeDefineProperty(e,t,r)}catch(e){}if("get"in r||"set"in r)throw TypeError("Accessors not supported");return"value"in r&&(e[t]=r.value),e},objectDefineProperty={f:f$2},createNonEnumerableProperty=descriptors?function(e,t,r){return objectDefineProperty.f(e,t,createPropertyDescriptor(1,r))}:function(e,t,r){return e[t]=r,e},setGlobal=function(e,t){try{createNonEnumerableProperty(global_1,e,t)}catch(r){global_1[e]=t}return t},SHARED="__core-js_shared__",store=global_1[SHARED]||setGlobal(SHARED,{}),sharedStore=store,functionToString=Function.toString;"function"!=typeof sharedStore.inspectSource&&(sharedStore.inspectSource=function(e){return functionToString.call(e)});var inspectSource=sharedStore.inspectSource,WeakMap=global_1.WeakMap,nativeWeakMap="function"==typeof WeakMap&&/native code/.test(inspectSource(WeakMap)),shared=createCommonjsModule((function(e){(e.exports=function(e,t){return sharedStore[e]||(sharedStore[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.5",mode:"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})})),id=0,postfix=Math.random(),uid=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++id+postfix).toString(36)},keys=shared("keys"),sharedKey=function(e){return keys[e]||(keys[e]=uid(e))},hiddenKeys={},WeakMap$1=global_1.WeakMap,set,get,has$1,enforce=function(e){return has$1(e)?get(e):set(e,{})},getterFor=function(e){return function(t){var r;if(!isObject(t)||(r=get(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return r}};if(nativeWeakMap){var store$1=new WeakMap$1,wmget=store$1.get,wmhas=store$1.has,wmset=store$1.set;set=function(e,t){return wmset.call(store$1,e,t),t},get=function(e){return wmget.call(store$1,e)||{}},has$1=function(e){return wmhas.call(store$1,e)}}else{var STATE=sharedKey("state");hiddenKeys[STATE]=!0,set=function(e,t){return createNonEnumerableProperty(e,STATE,t),t},get=function(e){return has(e,STATE)?e[STATE]:{}},has$1=function(e){return has(e,STATE)}}var internalState={set:set,get:get,has:has$1,enforce:enforce,getterFor:getterFor},redefine=createCommonjsModule((function(e){var t=internalState.get,r=internalState.enforce,n=String(String).split("String");(e.exports=function(e,t,o,i){var a=!!i&&!!i.unsafe,s=!!i&&!!i.enumerable,c=!!i&&!!i.noTargetGet;"function"==typeof o&&("string"!=typeof t||has(o,"name")||createNonEnumerableProperty(o,"name",t),r(o).source=n.join("string"==typeof t?t:"")),e!==global_1?(a?!c&&e[t]&&(s=!0):delete e[t],s?e[t]=o:createNonEnumerableProperty(e,t,o)):s?e[t]=o:setGlobal(t,o)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||inspectSource(this)}))})),path=global_1,aFunction=function(e){return"function"==typeof e?e:void 0},getBuiltIn=function(e,t){return arguments.length<2?aFunction(path[e])||aFunction(global_1[e]):path[e]&&path[e][t]||global_1[e]&&global_1[e][t]},ceil=Math.ceil,floor=Math.floor,toInteger=function(e){return isNaN(e=+e)?0:(e>0?floor:ceil)(e)},min=Math.min,toLength=function(e){return e>0?min(toInteger(e),9007199254740991):0},max=Math.max,min$1=Math.min,toAbsoluteIndex=function(e,t){var r=toInteger(e);return r<0?max(r+t,0):min$1(r,t)},createMethod=function(e){return function(t,r,n){var o,i=toIndexedObject(t),a=toLength(i.length),s=toAbsoluteIndex(n,a);if(e&&r!=r){for(;a>s;)if((o=i[s++])!=o)return!0}else for(;a>s;s++)if((e||s in i)&&i[s]===r)return e||s||0;return!e&&-1}},arrayIncludes={includes:createMethod(!0),indexOf:createMethod(!1)},indexOf=arrayIncludes.indexOf,objectKeysInternal=function(e,t){var r,n=toIndexedObject(e),o=0,i=[];for(r in n)!has(hiddenKeys,r)&&has(n,r)&&i.push(r);for(;t.length>o;)has(n,r=t[o++])&&(~indexOf(i,r)||i.push(r));return i},enumBugKeys=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],hiddenKeys$1=enumBugKeys.concat("length","prototype"),f$3=Object.getOwnPropertyNames||function(e){return objectKeysInternal(e,hiddenKeys$1)},objectGetOwnPropertyNames={f:f$3},f$4=Object.getOwnPropertySymbols,objectGetOwnPropertySymbols={f:f$4},ownKeys=getBuiltIn("Reflect","ownKeys")||function(e){var t=objectGetOwnPropertyNames.f(anObject(e)),r=objectGetOwnPropertySymbols.f;return r?t.concat(r(e)):t},copyConstructorProperties=function(e,t){for(var r=ownKeys(t),n=objectDefineProperty.f,o=objectGetOwnPropertyDescriptor.f,i=0;i=74)&&(match=engineUserAgent.match(/Chrome\/(\d+)/),match&&(version=match[1])));var engineV8Version=version&&+version,SPECIES$1=wellKnownSymbol("species"),arrayMethodHasSpeciesSupport=function(e){return engineV8Version>=51||!fails((function(){var t=[];return(t.constructor={})[SPECIES$1]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},IS_CONCAT_SPREADABLE=wellKnownSymbol("isConcatSpreadable"),MAX_SAFE_INTEGER=9007199254740991,MAXIMUM_ALLOWED_INDEX_EXCEEDED="Maximum allowed index exceeded",IS_CONCAT_SPREADABLE_SUPPORT=engineV8Version>=51||!fails((function(){var e=[];return e[IS_CONCAT_SPREADABLE]=!1,e.concat()[0]!==e})),SPECIES_SUPPORT=arrayMethodHasSpeciesSupport("concat"),isConcatSpreadable=function(e){if(!isObject(e))return!1;var t=e[IS_CONCAT_SPREADABLE];return void 0!==t?!!t:isArray(e)},FORCED=!IS_CONCAT_SPREADABLE_SUPPORT||!SPECIES_SUPPORT;_export({target:"Array",proto:!0,forced:FORCED},{concat:function(e){var t,r,n,o,i,a=toObject(this),s=arraySpeciesCreate(a,0),c=0;for(t=-1,n=arguments.length;tMAX_SAFE_INTEGER)throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);for(r=0;r=MAX_SAFE_INTEGER)throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);createProperty(s,c++,i)}return s.length=c,s}});var objectKeys=Object.keys||function(e){return objectKeysInternal(e,enumBugKeys)},objectDefineProperties=descriptors?Object.defineProperties:function(e,t){anObject(e);for(var r,n=objectKeys(t),o=n.length,i=0;o>i;)objectDefineProperty.f(e,r=n[i++],t[r]);return e},html=getBuiltIn("document","documentElement"),GT=">",LT="<",PROTOTYPE="prototype",SCRIPT="script",IE_PROTO=sharedKey("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(e){return LT+SCRIPT+GT+e+LT+"/"+SCRIPT+GT},NullProtoObjectViaActiveX=function(e){e.write(scriptTag("")),e.close();var t=e.parentWindow.Object;return e=null,t},NullProtoObjectViaIFrame=function(){var e,t=documentCreateElement("iframe"),r="java"+SCRIPT+":";return t.style.display="none",html.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(scriptTag("document.F=Object")),e.close(),e.F},activeXDocument,NullProtoObject=function(){try{activeXDocument=document.domain&&new ActiveXObject("htmlfile")}catch(e){}NullProtoObject=activeXDocument?NullProtoObjectViaActiveX(activeXDocument):NullProtoObjectViaIFrame();for(var e=enumBugKeys.length;e--;)delete NullProtoObject[PROTOTYPE][enumBugKeys[e]];return NullProtoObject()};hiddenKeys[IE_PROTO]=!0;var objectCreate=Object.create||function(e,t){var r;return null!==e?(EmptyConstructor[PROTOTYPE]=anObject(e),r=new EmptyConstructor,EmptyConstructor[PROTOTYPE]=null,r[IE_PROTO]=e):r=NullProtoObject(),void 0===t?r:objectDefineProperties(r,t)},UNSCOPABLES=wellKnownSymbol("unscopables"),ArrayPrototype=Array.prototype;null==ArrayPrototype[UNSCOPABLES]&&objectDefineProperty.f(ArrayPrototype,UNSCOPABLES,{configurable:!0,value:objectCreate(null)});var addToUnscopables=function(e){ArrayPrototype[UNSCOPABLES][e]=!0},defineProperty=Object.defineProperty,cache={},thrower=function(e){throw e},arrayMethodUsesToLength=function(e,t){if(has(cache,e))return cache[e];t||(t={});var r=[][e],n=!!has(t,"ACCESSORS")&&t.ACCESSORS,o=has(t,0)?t[0]:thrower,i=has(t,1)?t[1]:void 0;return cache[e]=!!r&&!fails((function(){if(n&&!descriptors)return!0;var e={length:-1};n?defineProperty(e,1,{enumerable:!0,get:thrower}):e[1]=1,r.call(e,o,i)}))},$includes=arrayIncludes.includes,USES_TO_LENGTH=arrayMethodUsesToLength("indexOf",{ACCESSORS:!0,1:0});_export({target:"Array",proto:!0,forced:!USES_TO_LENGTH},{includes:function(e){return $includes(this,e,arguments.length>1?arguments[1]:void 0)}}),addToUnscopables("includes");var arrayMethodIsStrict=function(e,t){var r=[][e];return!!r&&fails((function(){r.call(null,t||function(){throw 1},1)}))},$indexOf=arrayIncludes.indexOf,nativeIndexOf=[].indexOf,NEGATIVE_ZERO=!!nativeIndexOf&&1/[1].indexOf(1,-0)<0,STRICT_METHOD=arrayMethodIsStrict("indexOf"),USES_TO_LENGTH$1=arrayMethodUsesToLength("indexOf",{ACCESSORS:!0,1:0});_export({target:"Array",proto:!0,forced:NEGATIVE_ZERO||!STRICT_METHOD||!USES_TO_LENGTH$1},{indexOf:function(e){return NEGATIVE_ZERO?nativeIndexOf.apply(this,arguments)||0:$indexOf(this,e,arguments.length>1?arguments[1]:void 0)}});var nativeJoin=[].join,ES3_STRINGS=indexedObject!=Object,STRICT_METHOD$1=arrayMethodIsStrict("join",",");_export({target:"Array",proto:!0,forced:ES3_STRINGS||!STRICT_METHOD$1},{join:function(e){return nativeJoin.call(toIndexedObject(this),void 0===e?",":e)}});var DatePrototype=Date.prototype,INVALID_DATE="Invalid Date",TO_STRING="toString",nativeDateToString=DatePrototype[TO_STRING],getTime=DatePrototype.getTime;new Date(NaN)+""!=INVALID_DATE&&redefine(DatePrototype,TO_STRING,(function(){var e=getTime.call(this);return e==e?nativeDateToString.call(this):INVALID_DATE}));var nativeAssign=Object.assign,defineProperty$1=Object.defineProperty,objectAssign=!nativeAssign||fails((function(){if(descriptors&&1!==nativeAssign({b:1},nativeAssign(defineProperty$1({},"a",{enumerable:!0,get:function(){defineProperty$1(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol();return e[r]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=nativeAssign({},e)[r]||"abcdefghijklmnopqrst"!=objectKeys(nativeAssign({},t)).join("")}))?function(e,t){for(var r=toObject(e),n=arguments.length,o=1,i=objectGetOwnPropertySymbols.f,a=objectPropertyIsEnumerable.f;n>o;)for(var s,c=indexedObject(arguments[o++]),u=i?objectKeys(c).concat(i(c)):objectKeys(c),l=u.length,p=0;l>p;)s=u[p++],descriptors&&!a.call(c,s)||(r[s]=c[s]);return r}:nativeAssign;_export({target:"Object",stat:!0,forced:Object.assign!==objectAssign},{assign:objectAssign});var TO_STRING_TAG=wellKnownSymbol("toStringTag"),test={};test[TO_STRING_TAG]="z";var toStringTagSupport="[object z]"===String(test),TO_STRING_TAG$1=wellKnownSymbol("toStringTag"),CORRECT_ARGUMENTS="Arguments"==classofRaw(function(){return arguments}()),tryGet=function(e,t){try{return e[t]}catch(e){}},classof=toStringTagSupport?classofRaw:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=tryGet(t=Object(e),TO_STRING_TAG$1))?r:CORRECT_ARGUMENTS?classofRaw(t):"Object"==(n=classofRaw(t))&&"function"==typeof t.callee?"Arguments":n},objectToString=toStringTagSupport?{}.toString:function(){return"[object "+classof(this)+"]"};toStringTagSupport||redefine(Object.prototype,"toString",objectToString,{unsafe:!0});var nativePromiseConstructor=global_1.Promise,redefineAll=function(e,t,r){for(var n in t)redefine(e,n,t[n],r);return e},defineProperty$2=objectDefineProperty.f,TO_STRING_TAG$2=wellKnownSymbol("toStringTag"),setToStringTag=function(e,t,r){e&&!has(e=r?e:e.prototype,TO_STRING_TAG$2)&&defineProperty$2(e,TO_STRING_TAG$2,{configurable:!0,value:t})},SPECIES$2=wellKnownSymbol("species"),setSpecies=function(e){var t=getBuiltIn(e),r=objectDefineProperty.f;descriptors&&t&&!t[SPECIES$2]&&r(t,SPECIES$2,{configurable:!0,get:function(){return this}})},aFunction$1=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e},anInstance=function(e,t,r){if(!(e instanceof t))throw TypeError("Incorrect "+(r?r+" ":"")+"invocation");return e},iterators={},ITERATOR=wellKnownSymbol("iterator"),ArrayPrototype$1=Array.prototype,isArrayIteratorMethod=function(e){return void 0!==e&&(iterators.Array===e||ArrayPrototype$1[ITERATOR]===e)},functionBindContext=function(e,t,r){if(aFunction$1(e),void 0===t)return e;switch(r){case 0:return function(){return e.call(t)};case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}},ITERATOR$1=wellKnownSymbol("iterator"),getIteratorMethod=function(e){if(null!=e)return e[ITERATOR$1]||e["@@iterator"]||iterators[classof(e)]},callWithSafeIterationClosing=function(e,t,r,n){try{return n?t(anObject(r)[0],r[1]):t(r)}catch(t){var o=e.return;throw void 0!==o&&anObject(o.call(e)),t}},iterate_1=createCommonjsModule((function(e){var t=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,r,n,o,i){var a,s,c,u,l,p,f,d=functionBindContext(r,n,o?2:1);if(i)a=e;else{if("function"!=typeof(s=getIteratorMethod(e)))throw TypeError("Target is not iterable");if(isArrayIteratorMethod(s)){for(c=0,u=toLength(e.length);u>c;c++)if((l=o?d(anObject(f=e[c])[0],f[1]):d(e[c]))&&l instanceof t)return l;return new t(!1)}a=s.call(e)}for(p=a.next;!(f=p.call(a)).done;)if("object"==typeof(l=callWithSafeIterationClosing(a,d,f.value,o))&&l&&l instanceof t)return l;return new t(!1)}).stop=function(e){return new t(!0,e)}})),ITERATOR$2=wellKnownSymbol("iterator"),SAFE_CLOSING=!1;try{var called=0,iteratorWithReturn={next:function(){return{done:!!called++}},return:function(){SAFE_CLOSING=!0}};iteratorWithReturn[ITERATOR$2]=function(){return this},Array.from(iteratorWithReturn,(function(){throw 2}))}catch(e){}var checkCorrectnessOfIteration=function(e,t){if(!t&&!SAFE_CLOSING)return!1;var r=!1;try{var n={};n[ITERATOR$2]=function(){return{next:function(){return{done:r=!0}}}},e(n)}catch(e){}return r},SPECIES$3=wellKnownSymbol("species"),speciesConstructor=function(e,t){var r,n=anObject(e).constructor;return void 0===n||null==(r=anObject(n)[SPECIES$3])?t:aFunction$1(r)},engineIsIos=/(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent),location$1=global_1.location,set$1=global_1.setImmediate,clear=global_1.clearImmediate,process$2=global_1.process,MessageChannel=global_1.MessageChannel,Dispatch=global_1.Dispatch,counter=0,queue={},ONREADYSTATECHANGE="onreadystatechange",defer,channel,port,run=function(e){if(queue.hasOwnProperty(e)){var t=queue[e];delete queue[e],t()}},runner=function(e){return function(){run(e)}},listener=function(e){run(e.data)},post=function(e){global_1.postMessage(e+"",location$1.protocol+"//"+location$1.host)};set$1&&clear||(set$1=function(e){for(var t=[],r=1;arguments.length>r;)t.push(arguments[r++]);return queue[++counter]=function(){("function"==typeof e?e:Function(e)).apply(void 0,t)},defer(counter),counter},clear=function(e){delete queue[e]},"process"==classofRaw(process$2)?defer=function(e){process$2.nextTick(runner(e))}:Dispatch&&Dispatch.now?defer=function(e){Dispatch.now(runner(e))}:MessageChannel&&!engineIsIos?(channel=new MessageChannel,port=channel.port2,channel.port1.onmessage=listener,defer=functionBindContext(port.postMessage,port,1)):!global_1.addEventListener||"function"!=typeof postMessage||global_1.importScripts||fails(post)||"file:"===location$1.protocol?defer=ONREADYSTATECHANGE in documentCreateElement("script")?function(e){html.appendChild(documentCreateElement("script"))[ONREADYSTATECHANGE]=function(){html.removeChild(this),run(e)}}:function(e){setTimeout(runner(e),0)}:(defer=post,global_1.addEventListener("message",listener,!1)));var task={set:set$1,clear:clear},getOwnPropertyDescriptor$2=objectGetOwnPropertyDescriptor.f,macrotask=task.set,MutationObserver=global_1.MutationObserver||global_1.WebKitMutationObserver,process$3=global_1.process,Promise$1=global_1.Promise,IS_NODE="process"==classofRaw(process$3),queueMicrotaskDescriptor=getOwnPropertyDescriptor$2(global_1,"queueMicrotask"),queueMicrotask=queueMicrotaskDescriptor&&queueMicrotaskDescriptor.value,flush,head,last,notify,toggle,node,promise,then;queueMicrotask||(flush=function(){var e,t;for(IS_NODE&&(e=process$3.domain)&&e.exit();head;){t=head.fn,head=head.next;try{t()}catch(e){throw head?notify():last=void 0,e}}last=void 0,e&&e.enter()},IS_NODE?notify=function(){process$3.nextTick(flush)}:MutationObserver&&!engineIsIos?(toggle=!0,node=document.createTextNode(""),new MutationObserver(flush).observe(node,{characterData:!0}),notify=function(){node.data=toggle=!toggle}):Promise$1&&Promise$1.resolve?(promise=Promise$1.resolve(void 0),then=promise.then,notify=function(){then.call(promise,flush)}):notify=function(){macrotask.call(global_1,flush)});var microtask=queueMicrotask||function(e){var t={fn:e,next:void 0};last&&(last.next=t),head||(head=t,notify()),last=t},PromiseCapability=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw TypeError("Bad Promise constructor");t=e,r=n})),this.resolve=aFunction$1(t),this.reject=aFunction$1(r)},f$5=function(e){return new PromiseCapability(e)},newPromiseCapability={f:f$5},promiseResolve=function(e,t){if(anObject(e),isObject(t)&&t.constructor===e)return t;var r=newPromiseCapability.f(e);return(0,r.resolve)(t),r.promise},hostReportErrors=function(e,t){var r=global_1.console;r&&r.error&&(1===arguments.length?r.error(e):r.error(e,t))},perform=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},task$1=task.set,SPECIES$4=wellKnownSymbol("species"),PROMISE="Promise",getInternalState=internalState.get,setInternalState=internalState.set,getInternalPromiseState=internalState.getterFor(PROMISE),PromiseConstructor=nativePromiseConstructor,TypeError$1=global_1.TypeError,document$2=global_1.document,process$4=global_1.process,$fetch=getBuiltIn("fetch"),newPromiseCapability$1=newPromiseCapability.f,newGenericPromiseCapability=newPromiseCapability$1,IS_NODE$1="process"==classofRaw(process$4),DISPATCH_EVENT=!!(document$2&&document$2.createEvent&&global_1.dispatchEvent),UNHANDLED_REJECTION="unhandledrejection",REJECTION_HANDLED="rejectionhandled",PENDING=0,FULFILLED=1,REJECTED=2,HANDLED=1,UNHANDLED=2,Internal,OwnPromiseCapability,PromiseWrapper,nativeThen,FORCED$1=isForced_1(PROMISE,(function(){if(!(inspectSource(PromiseConstructor)!==String(PromiseConstructor))){if(66===engineV8Version)return!0;if(!IS_NODE$1&&"function"!=typeof PromiseRejectionEvent)return!0}if(engineV8Version>=51&&/native code/.test(PromiseConstructor))return!1;var e=PromiseConstructor.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[SPECIES$4]=t,!(e.then((function(){}))instanceof t)})),INCORRECT_ITERATION=FORCED$1||!checkCorrectnessOfIteration((function(e){PromiseConstructor.all(e).catch((function(){}))})),isThenable=function(e){var t;return!(!isObject(e)||"function"!=typeof(t=e.then))&&t},notify$1=function(e,t,r){if(!t.notified){t.notified=!0;var n=t.reactions;microtask((function(){for(var o=t.value,i=t.state==FULFILLED,a=0;n.length>a;){var s,c,u,l=n[a++],p=i?l.ok:l.fail,f=l.resolve,d=l.reject,h=l.domain;try{p?(i||(t.rejection===UNHANDLED&&onHandleUnhandled(e,t),t.rejection=HANDLED),!0===p?s=o:(h&&h.enter(),s=p(o),h&&(h.exit(),u=!0)),s===l.promise?d(TypeError$1("Promise-chain cycle")):(c=isThenable(s))?c.call(s,f,d):f(s)):d(o)}catch(e){h&&!u&&h.exit(),d(e)}}t.reactions=[],t.notified=!1,r&&!t.rejection&&onUnhandled(e,t)}))}},dispatchEvent=function(e,t,r){var n,o;DISPATCH_EVENT?((n=document$2.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),global_1.dispatchEvent(n)):n={promise:t,reason:r},(o=global_1["on"+e])?o(n):e===UNHANDLED_REJECTION&&hostReportErrors("Unhandled promise rejection",r)},onUnhandled=function(e,t){task$1.call(global_1,(function(){var r,n=t.value;if(isUnhandled(t)&&(r=perform((function(){IS_NODE$1?process$4.emit("unhandledRejection",n,e):dispatchEvent(UNHANDLED_REJECTION,e,n)})),t.rejection=IS_NODE$1||isUnhandled(t)?UNHANDLED:HANDLED,r.error))throw r.value}))},isUnhandled=function(e){return e.rejection!==HANDLED&&!e.parent},onHandleUnhandled=function(e,t){task$1.call(global_1,(function(){IS_NODE$1?process$4.emit("rejectionHandled",e):dispatchEvent(REJECTION_HANDLED,e,t.value)}))},bind=function(e,t,r,n){return function(o){e(t,r,o,n)}},internalReject=function(e,t,r,n){t.done||(t.done=!0,n&&(t=n),t.value=r,t.state=REJECTED,notify$1(e,t,!0))},internalResolve=function(e,t,r,n){if(!t.done){t.done=!0,n&&(t=n);try{if(e===r)throw TypeError$1("Promise can't be resolved itself");var o=isThenable(r);o?microtask((function(){var n={done:!1};try{o.call(r,bind(internalResolve,e,n,t),bind(internalReject,e,n,t))}catch(r){internalReject(e,n,r,t)}})):(t.value=r,t.state=FULFILLED,notify$1(e,t,!1))}catch(r){internalReject(e,{done:!1},r,t)}}};FORCED$1&&(PromiseConstructor=function(e){anInstance(this,PromiseConstructor,PROMISE),aFunction$1(e),Internal.call(this);var t=getInternalState(this);try{e(bind(internalResolve,this,t),bind(internalReject,this,t))}catch(e){internalReject(this,t,e)}},Internal=function(e){setInternalState(this,{type:PROMISE,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:PENDING,value:void 0})},Internal.prototype=redefineAll(PromiseConstructor.prototype,{then:function(e,t){var r=getInternalPromiseState(this),n=newPromiseCapability$1(speciesConstructor(this,PromiseConstructor));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=IS_NODE$1?process$4.domain:void 0,r.parent=!0,r.reactions.push(n),r.state!=PENDING&¬ify$1(this,r,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),OwnPromiseCapability=function(){var e=new Internal,t=getInternalState(e);this.promise=e,this.resolve=bind(internalResolve,e,t),this.reject=bind(internalReject,e,t)},newPromiseCapability.f=newPromiseCapability$1=function(e){return e===PromiseConstructor||e===PromiseWrapper?new OwnPromiseCapability(e):newGenericPromiseCapability(e)},"function"==typeof nativePromiseConstructor&&(nativeThen=nativePromiseConstructor.prototype.then,redefine(nativePromiseConstructor.prototype,"then",(function(e,t){var r=this;return new PromiseConstructor((function(e,t){nativeThen.call(r,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof $fetch&&_export({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return promiseResolve(PromiseConstructor,$fetch.apply(global_1,arguments))}}))),_export({global:!0,wrap:!0,forced:FORCED$1},{Promise:PromiseConstructor}),setToStringTag(PromiseConstructor,PROMISE,!1),setSpecies(PROMISE),PromiseWrapper=getBuiltIn(PROMISE),_export({target:PROMISE,stat:!0,forced:FORCED$1},{reject:function(e){var t=newPromiseCapability$1(this);return t.reject.call(void 0,e),t.promise}}),_export({target:PROMISE,stat:!0,forced:FORCED$1},{resolve:function(e){return promiseResolve(this,e)}}),_export({target:PROMISE,stat:!0,forced:INCORRECT_ITERATION},{all:function(e){var t=this,r=newPromiseCapability$1(t),n=r.resolve,o=r.reject,i=perform((function(){var r=aFunction$1(t.resolve),i=[],a=0,s=1;iterate_1(e,(function(e){var c=a++,u=!1;i.push(void 0),s++,r.call(t,e).then((function(e){u||(u=!0,i[c]=e,--s||n(i))}),o)})),--s||n(i)}));return i.error&&o(i.value),r.promise},race:function(e){var t=this,r=newPromiseCapability$1(t),n=r.reject,o=perform((function(){var o=aFunction$1(t.resolve);iterate_1(e,(function(e){o.call(t,e).then(r.resolve,n)}))}));return o.error&&n(o.value),r.promise}});var regexpFlags=function(){var e=anObject(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t};function RE(e,t){return RegExp(e,t)}var UNSUPPORTED_Y=fails((function(){var e=RE("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),BROKEN_CARET=fails((function(){var e=RE("^r","gy");return e.lastIndex=2,null!=e.exec("str")})),regexpStickyHelpers={UNSUPPORTED_Y:UNSUPPORTED_Y,BROKEN_CARET:BROKEN_CARET},nativeExec=RegExp.prototype.exec,nativeReplace=String.prototype.replace,patchedExec=nativeExec,UPDATES_LAST_INDEX_WRONG=function(){var e=/a/,t=/b*/g;return nativeExec.call(e,"a"),nativeExec.call(t,"a"),0!==e.lastIndex||0!==t.lastIndex}(),UNSUPPORTED_Y$1=regexpStickyHelpers.UNSUPPORTED_Y||regexpStickyHelpers.BROKEN_CARET,NPCG_INCLUDED=void 0!==/()??/.exec("")[1],PATCH=UPDATES_LAST_INDEX_WRONG||NPCG_INCLUDED||UNSUPPORTED_Y$1;PATCH&&(patchedExec=function(e){var t,r,n,o,i=this,a=UNSUPPORTED_Y$1&&i.sticky,s=regexpFlags.call(i),c=i.source,u=0,l=e;return a&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),l=String(e).slice(i.lastIndex),i.lastIndex>0&&(!i.multiline||i.multiline&&"\n"!==e[i.lastIndex-1])&&(c="(?: "+c+")",l=" "+l,u++),r=new RegExp("^(?:"+c+")",s)),NPCG_INCLUDED&&(r=new RegExp("^"+c+"$(?!\\s)",s)),UPDATES_LAST_INDEX_WRONG&&(t=i.lastIndex),n=nativeExec.call(a?r:i,l),a?n?(n.input=n.input.slice(u),n[0]=n[0].slice(u),n.index=i.lastIndex,i.lastIndex+=n[0].length):i.lastIndex=0:UPDATES_LAST_INDEX_WRONG&&n&&(i.lastIndex=i.global?n.index+n[0].length:t),NPCG_INCLUDED&&n&&n.length>1&&nativeReplace.call(n[0],r,(function(){for(o=1;o")})),REPLACE_KEEPS_$0="$0"==="a".replace(/./,"$0"),REPLACE=wellKnownSymbol("replace"),REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE=!!/./[REPLACE]&&""===/./[REPLACE]("a","$0"),SPLIT_WORKS_WITH_OVERWRITTEN_EXEC=!fails((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var r="ab".split(e);return 2!==r.length||"a"!==r[0]||"b"!==r[1]})),fixRegexpWellKnownSymbolLogic=function(e,t,r,n){var o=wellKnownSymbol(e),i=!fails((function(){var t={};return t[o]=function(){return 7},7!=""[e](t)})),a=i&&!fails((function(){var t=!1,r=/a/;return"split"===e&&((r={}).constructor={},r.constructor[SPECIES$5]=function(){return r},r.flags="",r[o]=/./[o]),r.exec=function(){return t=!0,null},r[o](""),!t}));if(!i||!a||"replace"===e&&(!REPLACE_SUPPORTS_NAMED_GROUPS||!REPLACE_KEEPS_$0||REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE)||"split"===e&&!SPLIT_WORKS_WITH_OVERWRITTEN_EXEC){var s=/./[o],c=r(o,""[e],(function(e,t,r,n,o){return t.exec===regexpExec?i&&!o?{done:!0,value:s.call(t,r,n)}:{done:!0,value:e.call(r,t,n)}:{done:!1}}),{REPLACE_KEEPS_$0:REPLACE_KEEPS_$0,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE}),u=c[0],l=c[1];redefine(String.prototype,e,u),redefine(RegExp.prototype,o,2==t?function(e,t){return l.call(e,this,t)}:function(e){return l.call(e,this)})}n&&createNonEnumerableProperty(RegExp.prototype[o],"sham",!0)},createMethod$1=function(e){return function(t,r){var n,o,i=String(requireObjectCoercible(t)),a=toInteger(r),s=i.length;return a<0||a>=s?e?"":void 0:(n=i.charCodeAt(a))<55296||n>56319||a+1===s||(o=i.charCodeAt(a+1))<56320||o>57343?e?i.charAt(a):n:e?i.slice(a,a+2):o-56320+(n-55296<<10)+65536}},stringMultibyte={codeAt:createMethod$1(!1),charAt:createMethod$1(!0)},charAt=stringMultibyte.charAt,advanceStringIndex=function(e,t,r){return t+(r?charAt(e,t).length:1)},regexpExecAbstract=function(e,t){var r=e.exec;if("function"==typeof r){var n=r.call(e,t);if("object"!=typeof n)throw TypeError("RegExp exec method returned something other than an Object or null");return n}if("RegExp"!==classofRaw(e))throw TypeError("RegExp#exec called on incompatible receiver");return regexpExec.call(e,t)},max$1=Math.max,min$2=Math.min,floor$1=Math.floor,SUBSTITUTION_SYMBOLS=/\$([$&'`]|\d\d?|<[^>]*>)/g,SUBSTITUTION_SYMBOLS_NO_NAMED=/\$([$&'`]|\d\d?)/g,maybeToString=function(e){return void 0===e?e:String(e)};fixRegexpWellKnownSymbolLogic("replace",2,(function(e,t,r,n){var o=n.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,i=n.REPLACE_KEEPS_$0,a=o?"$":"$0";return[function(r,n){var o=requireObjectCoercible(this),i=null==r?void 0:r[e];return void 0!==i?i.call(r,o,n):t.call(String(o),r,n)},function(e,n){if(!o&&i||"string"==typeof n&&-1===n.indexOf(a)){var c=r(t,e,this,n);if(c.done)return c.value}var u=anObject(e),l=String(this),p="function"==typeof n;p||(n=String(n));var f=u.global;if(f){var d=u.unicode;u.lastIndex=0}for(var h=[];;){var y=regexpExecAbstract(u,l);if(null===y)break;if(h.push(y),!f)break;""===String(y[0])&&(u.lastIndex=advanceStringIndex(l,toLength(u.lastIndex),d))}for(var g="",v=0,b=0;b=v&&(g+=l.slice(v,m)+P,v=m+S.length)}return g+l.slice(v)}];function s(e,r,n,o,i,a){var s=n+e.length,c=o.length,u=SUBSTITUTION_SYMBOLS_NO_NAMED;return void 0!==i&&(i=toObject(i),u=SUBSTITUTION_SYMBOLS),t.call(a,u,(function(t,a){var u;switch(a.charAt(0)){case"$":return"$";case"&":return e;case"`":return r.slice(0,n);case"'":return r.slice(s);case"<":u=i[a.slice(1,-1)];break;default:var l=+a;if(0===l)return t;if(l>c){var p=floor$1(l/10);return 0===p?t:p<=c?void 0===o[p-1]?a.charAt(1):o[p-1]+a.charAt(1):t}u=o[l-1]}return void 0===u?"":u}))}}));var runtime=createCommonjsModule((function(e){!function(t){var r,n=Object.prototype,o=n.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag",u=t.regeneratorRuntime;if(u)e.exports=u;else{(u=t.regeneratorRuntime=e.exports).wrap=S;var l="suspendedStart",p="suspendedYield",f="executing",d="completed",h={},y={};y[a]=function(){return this};var g=Object.getPrototypeOf,v=g&&g(g(x([])));v&&v!==n&&o.call(v,a)&&(y=v);var b=T.prototype=E.prototype=Object.create(y);_.prototype=b.constructor=T,T.constructor=_,T[c]=_.displayName="GeneratorFunction",u.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===_||"GeneratorFunction"===(t.displayName||t.name))},u.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,T):(e.__proto__=T,c in e||(e[c]="GeneratorFunction")),e.prototype=Object.create(b),e},u.awrap=function(e){return{__await:e}},O(P.prototype),P.prototype[s]=function(){return this},u.AsyncIterator=P,u.async=function(e,t,r,n){var o=new P(S(e,t,r,n));return u.isGeneratorFunction(t)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},O(b),b[c]="Generator",b[a]=function(){return this},b.toString=function(){return"[object Generator]"},u.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},u.values=x,w.prototype={constructor:w,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=r,this.done=!1,this.delegate=null,this.method="next",this.arg=r,this.tryEntries.forEach(R),!e)for(var t in this)"t"===t.charAt(0)&&o.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=r)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(n,o){return s.type="throw",s.arg=e,t.next=n,o&&(t.method="next",t.arg=r),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],s=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var c=o.call(a,"catchLoc"),u=o.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),R(r),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;R(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:x(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=r),h}}}function S(e,t,r,n){var o=t&&t.prototype instanceof E?t:E,i=Object.create(o.prototype),a=new w(n||[]);return i._invoke=function(e,t,r){var n=l;return function(o,i){if(n===f)throw new Error("Generator is already running");if(n===d){if("throw"===o)throw i;return C()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=I(a,r);if(s){if(s===h)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===l)throw n=d,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=f;var c=m(e,t,r);if("normal"===c.type){if(n=r.done?d:p,c.arg===h)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n=d,r.method="throw",r.arg=c.arg)}}}(e,r,a),i}function m(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function E(){}function _(){}function T(){}function O(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function P(e){var t;this._invoke=function(r,n){function i(){return new Promise((function(t,i){!function t(r,n,i,a){var s=m(e[r],e,n);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&o.call(u,"__await")?Promise.resolve(u.__await).then((function(e){t("next",e,i,a)}),(function(e){t("throw",e,i,a)})):Promise.resolve(u).then((function(e){c.value=e,i(c)}),a)}a(s.arg)}(r,n,t,i)}))}return t=t?t.then(i,i):i()}}function I(e,t){var n=e.iterator[t.method];if(n===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=r,I(e,t),"throw"===t.method))return h;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var o=m(n,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,h;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=r),t.delegate=null,h):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,h)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function R(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function w(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function x(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++ne.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)return;o[t]="set-cookie"===t?(o[t]?o[t]:[]).concat([r]):o[t]?o[t]+", "+r:r}})),o):o},isURLSameOrigin=utils.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function n(e){var n=e;return t&&(r.setAttribute("href",n),n=r.href),r.setAttribute("href",n),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=n(window.location.href),function(t){var r=utils.isString(t)?n(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},cookies=utils.isStandardBrowserEnv()?{write:function(e,t,r,n,o,i){var a=[];a.push(e+"="+encodeURIComponent(t)),utils.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),utils.isString(n)&&a.push("path="+n),utils.isString(o)&&a.push("domain="+o),!0===i&&a.push("secure"),document.cookie=a.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},xhr=function(e){return new Promise((function(t,r){var n=e.data,o=e.headers;utils.isFormData(n)&&delete o["Content-Type"];var i=new XMLHttpRequest;if(e.auth){var a=e.auth.username||"",s=e.auth.password||"";o.Authorization="Basic "+btoa(a+":"+s)}var c=buildFullPath(e.baseURL,e.url);if(i.open(e.method.toUpperCase(),buildURL(c,e.params,e.paramsSerializer),!0),i.timeout=e.timeout,i.onreadystatechange=function(){if(i&&4===i.readyState&&(0!==i.status||i.responseURL&&0===i.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in i?parseHeaders(i.getAllResponseHeaders()):null,o={data:e.responseType&&"text"!==e.responseType?i.response:i.responseText,status:i.status,statusText:i.statusText,headers:n,config:e,request:i};settle(t,r,o),i=null}},i.onabort=function(){i&&(r(createError("Request aborted",e,"ECONNABORTED",i)),i=null)},i.onerror=function(){r(createError("Network Error",e,null,i)),i=null},i.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(createError(t,e,"ECONNABORTED",i)),i=null},utils.isStandardBrowserEnv()){var u=cookies,l=(e.withCredentials||isURLSameOrigin(c))&&e.xsrfCookieName?u.read(e.xsrfCookieName):void 0;l&&(o[e.xsrfHeaderName]=l)}if("setRequestHeader"in i&&utils.forEach(o,(function(e,t){void 0===n&&"content-type"===t.toLowerCase()?delete o[t]:i.setRequestHeader(t,e)})),utils.isUndefined(e.withCredentials)||(i.withCredentials=!!e.withCredentials),e.responseType)try{i.responseType=e.responseType}catch(t){if("json"!==e.responseType)throw t}"function"==typeof e.onDownloadProgress&&i.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&i.upload&&i.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){i&&(i.abort(),r(e),i=null)})),void 0===n&&(n=null),i.send(n)}))},DEFAULT_CONTENT_TYPE={"Content-Type":"application/x-www-form-urlencoded"};function setContentTypeIfUnset(e,t){!utils.isUndefined(e)&&utils.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}function getDefaultAdapter(){var e;return"undefined"!=typeof XMLHttpRequest?e=xhr:"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process)&&(e=xhr),e}var defaults={adapter:getDefaultAdapter(),transformRequest:[function(e,t){return normalizeHeaderName(t,"Accept"),normalizeHeaderName(t,"Content-Type"),utils.isFormData(e)||utils.isArrayBuffer(e)||utils.isBuffer(e)||utils.isStream(e)||utils.isFile(e)||utils.isBlob(e)?e:utils.isArrayBufferView(e)?e.buffer:utils.isURLSearchParams(e)?(setContentTypeIfUnset(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):utils.isObject(e)?(setContentTypeIfUnset(t,"application/json;charset=utf-8"),JSON.stringify(e)):e}],transformResponse:[function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(e){}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};utils.forEach(["delete","get","head"],(function(e){defaults.headers[e]={}})),utils.forEach(["post","put","patch"],(function(e){defaults.headers[e]=utils.merge(DEFAULT_CONTENT_TYPE)}));var defaults_1=defaults;function throwIfCancellationRequested(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var dispatchRequest=function(e){return throwIfCancellationRequested(e),e.headers=e.headers||{},e.data=transformData(e.data,e.headers,e.transformRequest),e.headers=utils.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),utils.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||defaults_1.adapter)(e).then((function(t){return throwIfCancellationRequested(e),t.data=transformData(t.data,t.headers,e.transformResponse),t}),(function(t){return isCancel(t)||(throwIfCancellationRequested(e),t&&t.response&&(t.response.data=transformData(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},mergeConfig=function(e,t){t=t||{};var r={},n=["url","method","params","data"],o=["headers","auth","proxy"],i=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];utils.forEach(n,(function(e){void 0!==t[e]&&(r[e]=t[e])})),utils.forEach(o,(function(n){utils.isObject(t[n])?r[n]=utils.deepMerge(e[n],t[n]):void 0!==t[n]?r[n]=t[n]:utils.isObject(e[n])?r[n]=utils.deepMerge(e[n]):void 0!==e[n]&&(r[n]=e[n])})),utils.forEach(i,(function(n){void 0!==t[n]?r[n]=t[n]:void 0!==e[n]&&(r[n]=e[n])}));var a=n.concat(o).concat(i),s=Object.keys(t).filter((function(e){return-1===a.indexOf(e)}));return utils.forEach(s,(function(n){void 0!==t[n]?r[n]=t[n]:void 0!==e[n]&&(r[n]=e[n])})),r};function Axios(e){this.defaults=e,this.interceptors={request:new InterceptorManager_1,response:new InterceptorManager_1}}Axios.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=mergeConfig(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=[dispatchRequest,void 0],r=Promise.resolve(e);for(this.interceptors.request.forEach((function(e){t.unshift(e.fulfilled,e.rejected)})),this.interceptors.response.forEach((function(e){t.push(e.fulfilled,e.rejected)}));t.length;)r=r.then(t.shift(),t.shift());return r},Axios.prototype.getUri=function(e){return e=mergeConfig(this.defaults,e),buildURL(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},utils.forEach(["delete","get","head","options"],(function(e){Axios.prototype[e]=function(t,r){return this.request(utils.merge(r||{},{method:e,url:t}))}})),utils.forEach(["post","put","patch"],(function(e){Axios.prototype[e]=function(t,r,n){return this.request(utils.merge(n||{},{method:e,url:t,data:r}))}}));var Axios_1=Axios;function Cancel(e){this.message=e}Cancel.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},Cancel.prototype.__CANCEL__=!0;var Cancel_1=Cancel;function CancelToken(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new Cancel_1(e),t(r.reason))}))}CancelToken.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},CancelToken.source=function(){var e;return{token:new CancelToken((function(t){e=t})),cancel:e}};var CancelToken_1=CancelToken,spread=function(e){return function(t){return e.apply(null,t)}};function createInstance(e){var t=new Axios_1(e),r=bind$1(Axios_1.prototype.request,t);return utils.extend(r,Axios_1.prototype,t),utils.extend(r,t),r}var axios=createInstance(defaults_1);axios.Axios=Axios_1,axios.create=function(e){return createInstance(mergeConfig(axios.defaults,e))},axios.Cancel=Cancel_1,axios.CancelToken=CancelToken_1,axios.isCancel=isCancel,axios.all=function(e){return Promise.all(e)},axios.spread=spread;var axios_1=axios,default_1=axios;axios_1.default=default_1;var axios$1=axios_1;function request(e){var t=e.url,r=e.headers,n=void 0===r?{}:r,o=e.data,i=void 0===o?"":o,a=e.responseType,s=void 0===a?"json":a,c=e.timeout,u=void 0===c?3e4:c,l=e.method,p=void 0===l?"POST":l,f=e.params,d=void 0===f?{}:f;return axios$1(Object.assign(Object.assign({},e),{url:t,headers:Object.assign({"content-type":"application/json;charset=UTF-8"},n),data:i,responseType:s,timeout:u,method:p,params:d}))}var createMethod$2=function(e){return function(t,r,n,o){aFunction$1(r);var i=toObject(t),a=indexedObject(i),s=toLength(i.length),c=e?s-1:0,u=e?-1:1;if(n<2)for(;;){if(c in a){o=a[c],c+=u;break}if(c+=u,e?c<0:s<=c)throw TypeError("Reduce of empty array with no initial value")}for(;e?c>=0:s>c;c+=u)c in a&&(o=r(o,a[c],c,i));return o}},arrayReduce={left:createMethod$2(!1),right:createMethod$2(!0)},$reduce=arrayReduce.left,STRICT_METHOD$2=arrayMethodIsStrict("reduce"),USES_TO_LENGTH$2=arrayMethodUsesToLength("reduce",{1:0});_export({target:"Array",proto:!0,forced:!STRICT_METHOD$2||!USES_TO_LENGTH$2},{reduce:function(e){return $reduce(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}});var MATCH=wellKnownSymbol("match"),isRegexp=function(e){var t;return isObject(e)&&(void 0!==(t=e[MATCH])?!!t:"RegExp"==classofRaw(e))},arrayPush=[].push,min$3=Math.min,MAX_UINT32=4294967295,SUPPORTS_Y=!fails((function(){return!RegExp(MAX_UINT32,"y")}));fixRegexpWellKnownSymbolLogic("split",2,(function(e,t,r){var n;return n="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,r){var n=String(requireObjectCoercible(this)),o=void 0===r?MAX_UINT32:r>>>0;if(0===o)return[];if(void 0===e)return[n];if(!isRegexp(e))return t.call(n,e,o);for(var i,a,s,c=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),l=0,p=new RegExp(e.source,u+"g");(i=regexpExec.call(p,n))&&!((a=p.lastIndex)>l&&(c.push(n.slice(l,i.index)),i.length>1&&i.index=o));)p.lastIndex===i.index&&p.lastIndex++;return l===n.length?!s&&p.test("")||c.push(""):c.push(n.slice(l)),c.length>o?c.slice(0,o):c}:"0".split(void 0,0).length?function(e,r){return void 0===e&&0===r?[]:t.call(this,e,r)}:t,[function(t,r){var o=requireObjectCoercible(this),i=null==t?void 0:t[e];return void 0!==i?i.call(t,o,r):n.call(String(o),t,r)},function(e,o){var i=r(n,e,this,o,n!==t);if(i.done)return i.value;var a=anObject(e),s=String(this),c=speciesConstructor(a,RegExp),u=a.unicode,l=(a.ignoreCase?"i":"")+(a.multiline?"m":"")+(a.unicode?"u":"")+(SUPPORTS_Y?"y":"g"),p=new c(SUPPORTS_Y?a:"^(?:"+a.source+")",l),f=void 0===o?MAX_UINT32:o>>>0;if(0===f)return[];if(0===s.length)return null===regexpExecAbstract(p,s)?[s]:[];for(var d=0,h=0,y=[];h/",production:"https://ssdp.crc.com.cn/ssdp/app//"},cls:{test:"https://ssdpuat.crc.com.cn:8443/ssdp/cls/rf/",production:"https://ssdp.crc.com.cn/ssdp/cls/rf/",runwork:{sit:{App_Sub_ID:"0000000303DM",App_Token:"6debaf0da23340daaac8659144ebed7a",Partner_ID:"00000000",Sys_ID:"00000003"},uat:{App_Sub_ID:"0000000309OK",App_Token:"5643f1d9d86c43c9ae72069c243dbf86",Partner_ID:"00000000",Sys_ID:"00000003"},production:{App_Sub_ID:"0000000401RH",App_Token:"2bbc84f3bde54df488b4b0133989956c",Partner_ID:"00000000",Sys_ID:"00000004"}}},dtgw:{test:"https://dtgw-uat.crcloud.com/dtgw/api/",production:"https://dtgw-ps.crcloud.com/dtgw/api/",runwork:{sit:{"s-crc-app-id":"10012","s-crc-token":"0ed1fe39709f4c9f9e7fe8071fb8f4f1","s-crc-tpl-code":"EMAP_FILE_DOWN"},uat:{"s-crc-app-id":"10013","s-crc-token":"616451486c7c4b46b21c24d35f1f6f9b","s-crc-tpl-code":"EMAP_FILE_DOWN"},production:{"s-crc-app-id":"10012","s-crc-token":"e893a9d21a2a4fe5a50833de3b99f8e1","s-crc-tpl-code":"EMAP_FILE_DOWN"}}},api:{sit:{hrInfo:{api:"crc.rgz.lark0sit.users.getUserInfo",version:"1.0"},avatar:{api:"crc.rgz.lark0sit.getEmpImage",version:"1.0"},gettoken:{api:"crc.rgz.lark0sit.lark.gettoken",version:"1.0"},ticket:{api:"crc.rgz.lark0sit.jsapi.ticket",version:"1.0"}},uat:{hrInfo:{api:"crc.rgz.run3uat.users.getUserInfo",version:"1.0"},avatar:{api:"crc.rgz.run3uat.getEmpImage",version:"1.0"},gettoken:{api:"crc.rgz.run3uat.lark.gettoken",version:"1.0"},ticket:{api:"crc.rgz.run3uat.jsapi.ticket",version:"1.0"}},test:{gettoken:{api:"crc.rgz.lark0sit.lark.gettoken",version:"1.0"},ticket:{api:"crc.rgz.lark0sit.jsapi.ticket",version:"1.0"}},production:{ssdpPostToken:{api:"crc.ssdp.public.apptoken",version:"1.0"},gettoken:{api:"crc.rgz.app.lark.gettoken",version:"1.0"},ticket:{api:"crc.rgz.app.jsapi.ticket",version:"1.0"},hrInfo:{api:"crc.rgz.app.users.getUserInfo",version:"1.0"},avatar:{api:"crc.rgz.app.getEmpImage",version:"1.0"}}}},h5DB=[{name:"ssdpPostToken",store:{keyPath:"id",autoIncrement:!1},index:["token","expires"]},{name:"sys",store:{keyPath:"id",autoIncrement:!1},index:["appVersion","deviceID","system","platform"]},{name:"user",store:{keyPath:"id",autoIncrement:!1},index:["App_Sub_ID","App_Token","App_key","Partner_ID","external_token","open_id"]},{name:"hrInfo",store:{keyPath:"id",autoIncrement:!1},index:["jobCodeDescr","fullPath","businessUnit","gender","avatarUrl","fullDescPath","deptId","employeeId","birthDate","nameFormal","join_time","nameAc","deptDesc","userType","email","seniorityPayDtMap","businessUnitDesc","expires","mobilePhoneNumber","businessUnitDescShort"]},{name:"avatar",store:{keyPath:"id",autoIncrement:!1},index:["imageUrl","expires"]}],cacheKeys={localStorage:{feishu:{tenantAccessToken:"FS_TenantAccessToken",ticket:"FS_Ticket"}},indexeddb:{name:"runworkH5",version:3,store:{sys:"sys",user:"user",hrInfo:"hrInfo",avatar:"avatar",postToken:"ssdpPostToken"}}},constant={ssdp:ssdp,h5DB:h5DB,cacheKeys:cacheKeys};function getConstant(e){return e.split(".").reduce((function(e,t){return e[t]}),constant)}var aPossiblePrototype=function(e){if(!isObject(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e},objectSetPrototypeOf=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return anObject(r),aPossiblePrototype(n),t?e.call(r,n):r.__proto__=n,r}}():void 0),inheritIfRequired=function(e,t,r){var n,o;return objectSetPrototypeOf&&"function"==typeof(n=t.constructor)&&n!==r&&isObject(o=n.prototype)&&o!==r.prototype&&objectSetPrototypeOf(e,o),e},defineProperty$3=objectDefineProperty.f,getOwnPropertyNames=objectGetOwnPropertyNames.f,setInternalState$1=internalState.set,MATCH$1=wellKnownSymbol("match"),NativeRegExp=global_1.RegExp,RegExpPrototype=NativeRegExp.prototype,re1=/a/g,re2=/a/g,CORRECT_NEW=new NativeRegExp(re1)!==re1,UNSUPPORTED_Y$2=regexpStickyHelpers.UNSUPPORTED_Y,FORCED$2=descriptors&&isForced_1("RegExp",!CORRECT_NEW||UNSUPPORTED_Y$2||fails((function(){return re2[MATCH$1]=!1,NativeRegExp(re1)!=re1||NativeRegExp(re2)==re2||"/a/i"!=NativeRegExp(re1,"i")})));if(FORCED$2){for(var RegExpWrapper=function(e,t){var r,n=this instanceof RegExpWrapper,o=isRegexp(e),i=void 0===t;if(!n&&o&&e.constructor===RegExpWrapper&&i)return e;CORRECT_NEW?o&&!i&&(e=e.source):e instanceof RegExpWrapper&&(i&&(t=regexpFlags.call(e)),e=e.source),UNSUPPORTED_Y$2&&(r=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var a=inheritIfRequired(CORRECT_NEW?new NativeRegExp(e,t):NativeRegExp(e,t),n?this:RegExpPrototype,RegExpWrapper);return UNSUPPORTED_Y$2&&r&&setInternalState$1(a,{sticky:r}),a},proxy=function(e){e in RegExpWrapper||defineProperty$3(RegExpWrapper,e,{configurable:!0,get:function(){return NativeRegExp[e]},set:function(t){NativeRegExp[e]=t}})},keys$1=getOwnPropertyNames(NativeRegExp),index=0;keys$1.length>index;)proxy(keys$1[index++]);RegExpPrototype.constructor=RegExpWrapper,RegExpWrapper.prototype=RegExpPrototype,redefine(global_1,"RegExp",RegExpWrapper)}setSpecies("RegExp");var TO_STRING$1="toString",RegExpPrototype$1=RegExp.prototype,nativeToString=RegExpPrototype$1[TO_STRING$1],NOT_GENERIC=fails((function(){return"/a/b"!=nativeToString.call({source:"a",flags:"b"})})),INCORRECT_NAME=nativeToString.name!=TO_STRING$1;function getTimeStamp(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new Date,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"yyyy-MM-dd hh:mm:ss:S",r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};for(var o in/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length))),n)new RegExp("("+o+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?n[o]:("00"+n[o]).substr((""+n[o]).length)));var i=-e.getTimezoneOffset()/60,a=i>=0?"+":"-";i=Math.abs(i);var s="".concat(a).concat(i<10?"0".concat(i):i,"00");return"".concat(t).concat(r?s:"")}(NOT_GENERIC||INCORRECT_NAME)&&redefine(RegExp.prototype,TO_STRING$1,(function(){var e=anObject(this),t=String(e.source),r=e.flags;return"/"+t+"/"+String(void 0===r&&e instanceof RegExp&&!("flags"in RegExpPrototype$1)?regexpFlags.call(e):r)}),{unsafe:!0});var base64encodechars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",base64decodechars=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1),base64encode=function(){var e,t,r,n,o,i,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";for(r=a.length,t=0,e="";t>2),e+=base64encodechars.charAt((3&n)<<4),e+="==";break}if(o=a.charCodeAt(t++),t==r){e+=base64encodechars.charAt(n>>2),e+=base64encodechars.charAt((3&n)<<4|(240&o)>>4),e+=base64encodechars.charAt((15&o)<<2),e+="=";break}i=a.charCodeAt(t++),e+=base64encodechars.charAt(n>>2),e+=base64encodechars.charAt((3&n)<<4|(240&o)>>4),e+=base64encodechars.charAt((15&o)<<2|(192&i)>>6),e+=base64encodechars.charAt(63&i)}return e},base64decode=function(){var e,t,r,n,o,i,a,s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";for(i=s.length,o=0,a="";o>4);do{if(61==(r=255&s.charCodeAt(o++)))return a;r=base64decodechars[r]}while(o>2);do{if(61==(n=255&s.charCodeAt(o++)))return a;n=base64decodechars[n]}while(o0&&void 0!==arguments[0]?arguments[0]:"";for(e="",r=o.length,t=0;t=1&&n<=127?e+=o.charAt(t):n>2047?(e+=String.fromCharCode(224|n>>12&15),e+=String.fromCharCode(128|n>>6&63),e+=String.fromCharCode(128|n>>0&63)):(e+=String.fromCharCode(192|n>>6&31),e+=String.fromCharCode(128|n>>0&63));return e},utf8to16=function(){var e,t,r,n,o,i,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";for(e="",r=a.length,t=0;t>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:e+=a.charAt(t-1);break;case 12:case 13:o=a.charCodeAt(t++),e+=String.fromCharCode((31&n)<<6|63&o);break;case 14:o=a.charCodeAt(t++),i=a.charCodeAt(t++),e+=String.fromCharCode((15&n)<<12|(63&o)<<6|(63&i)<<0)}return e},base64={encode:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return base64encode(utf16to8(e))},decode:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return utf8to16(base64decode(e))}};function staticJsBridge(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return console.log("获取登录参数",e),new Promise((function(r,n){window._LarkPassportJsBridge.invoke(e,t,{onSuccess:function(e){console.log("获取登录参数完成",e),r(e)},onFail:function(e){console.error("获取登录参数失败",e),n(e)}})}))}function jssdk(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new Promise((function(r,n){window.h5sdk.ready((function(){var o=e.split(".").reduce((function(e,t){return e[t]||{}}),window.h5sdk);"function"!=typeof o&&n(),o.call(window.h5sdk,Object.assign({onSuccess:function(e){r(e)},onFail:function(t){errorHandle(e),console.error("调用原生方法失败:"+e,t),n(t)}},t))})).catch((function(e){return console.error("h5sdk.ready error",e),Promise.reject(e)}))}))}function errorHandle(e){switch(e){case"biz.user.getUserInfoEx":navigator.userAgent.match(/android/i)?alert("认证信息失效,请重新登录"):jssdk("device.notification.confirm",{title:"温馨提示",message:"认证信息失效,请重新登录",buttonLabels:["好的"]}).then((function(){jssdk("biz.navigation.close")}))}}fixRegexpWellKnownSymbolLogic("match",1,(function(e,t,r){return[function(t){var r=requireObjectCoercible(this),n=null==t?void 0:t[e];return void 0!==n?n.call(t,r):new RegExp(t)[e](String(r))},function(e){var n=r(t,e,this);if(n.done)return n.value;var o=anObject(e),i=String(this);if(!o.global)return regexpExecAbstract(o,i);var a=o.unicode;o.lastIndex=0;for(var s,c=[],u=0;null!==(s=regexpExecAbstract(o,i));){var l=String(s[0]);c[u]=l,""===l&&(o.lastIndex=advanceStringIndex(i,toLength(o.lastIndex),a)),u++}return 0===u?null:c}]}));var push=[].push,createMethod$3=function(e){var t=1==e,r=2==e,n=3==e,o=4==e,i=6==e,a=5==e||i;return function(s,c,u,l){for(var p,f,d=toObject(s),h=indexedObject(d),y=functionBindContext(c,u,3),g=toLength(h.length),v=0,b=l||arraySpeciesCreate,S=t?b(s,g):r?b(s,0):void 0;g>v;v++)if((a||v in h)&&(f=y(p=h[v],v,d),e))if(t)S[v]=f;else if(f)switch(e){case 3:return!0;case 5:return p;case 6:return v;case 2:push.call(S,p)}else if(o)return!1;return i?-1:n||o?o:S}},arrayIteration={forEach:createMethod$3(0),map:createMethod$3(1),filter:createMethod$3(2),some:createMethod$3(3),every:createMethod$3(4),find:createMethod$3(5),findIndex:createMethod$3(6)},$some=arrayIteration.some,STRICT_METHOD$3=arrayMethodIsStrict("some"),USES_TO_LENGTH$3=arrayMethodUsesToLength("some");_export({target:"Array",proto:!0,forced:!STRICT_METHOD$3||!USES_TO_LENGTH$3},{some:function(e){return $some(this,e,arguments.length>1?arguments[1]:void 0)}});var isIphonex=function(){if("undefined"!=typeof window&&window){if(!/iphone/gi.test(window.navigator.userAgent))return!1;var e=window,t=e.devicePixelRatio,r=e.screen,n=r.width,o=r.height;return[{devicePixelRatio:3,width:375,height:812},{devicePixelRatio:3,width:414,height:896},{devicePixelRatio:2,width:414,height:896}].some((function(e){return e.devicePixelRatio===t&&e.width===n&&e.height===o}))}return!1};function logger(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"info";"[object Array]"!==Object.prototype.toString.call(e)&&(e=[e]),(t=console)[r].apply(t,["runwork-help2.0"].concat(_toConsumableArray(e)))}var $map=arrayIteration.map,HAS_SPECIES_SUPPORT=arrayMethodHasSpeciesSupport("map"),USES_TO_LENGTH$4=arrayMethodUsesToLength("map");_export({target:"Array",proto:!0,forced:!HAS_SPECIES_SUPPORT||!USES_TO_LENGTH$4},{map:function(e){return $map(this,e,arguments.length>1?arguments[1]:void 0)}});var test$1=[],nativeSort=test$1.sort,FAILS_ON_UNDEFINED=fails((function(){test$1.sort(void 0)})),FAILS_ON_NULL=fails((function(){test$1.sort(null)})),STRICT_METHOD$4=arrayMethodIsStrict("sort"),FORCED$3=FAILS_ON_UNDEFINED||!FAILS_ON_NULL||!STRICT_METHOD$4;_export({target:"Array",proto:!0,forced:FORCED$3},{sort:function(e){return void 0===e?nativeSort.call(toObject(this)):nativeSort.call(toObject(this),aFunction$1(e))}});var md5=createCommonjsModule((function(e){!function(t){function r(e,t){var r=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(r>>16)<<16|65535&r}function n(e,t,n,o,i,a){return r((s=r(r(t,e),r(o,a)))<<(c=i)|s>>>32-c,n);var s,c}function o(e,t,r,o,i,a,s){return n(t&r|~t&o,e,t,i,a,s)}function i(e,t,r,o,i,a,s){return n(t&o|r&~o,e,t,i,a,s)}function a(e,t,r,o,i,a,s){return n(t^r^o,e,t,i,a,s)}function s(e,t,r,o,i,a,s){return n(r^(t|~o),e,t,i,a,s)}function c(e,t){var n,c,u,l,p;e[t>>5]|=128<>>9<<4)]=t;var f=1732584193,d=-271733879,h=-1732584194,y=271733878;for(n=0;n>5]>>>t%32&255);return r}function l(e){var t,r=[];for(r[(e.length>>2)-1]=void 0,t=0;t>5]|=(255&e.charCodeAt(t/8))<>>4&15)+"0123456789abcdef".charAt(15&t);return n}function f(e){return unescape(encodeURIComponent(e))}function d(e){return function(e){return u(c(l(e),8*e.length))}(f(e))}function h(e,t){return function(e,t){var r,n,o=l(e),i=[],a=[];for(i[15]=a[15]=void 0,o.length>16&&(o=c(o,8*e.length)),r=0;r<16;r+=1)i[r]=909522486^o[r],a[r]=1549556828^o[r];return n=c(i.concat(l(t)),512+8*t.length),u(c(a.concat(n),640))}(f(e),f(t))}function y(e,t,r){return t?r?h(t,e):p(h(t,e)):r?d(e):p(d(e))}e.exports?e.exports=y:t.md5=y}(commonjsGlobal)}));function generateSysSign(e){var t=e.App_Sub_ID,r=e.App_Token,n=e.User_Token,o=void 0===n?"":n,i=e.Api_ID,a=e.Api_Version,s=e.Time_Stamp,c=e.Partner_ID,u=e.REQUEST_DATA,l=e.App_ID,p=e.App_Version,f=e.Divice_ID,d=e.Divice_Version,h=e.OS_Version,y=e.App_key,g=[["App_Sub_ID",t],["App_Token",r],["User_Token",o],["Api_ID",i],["Api_Version",a],["Time_Stamp",s],["Partner_ID",c],["REQUEST_DATA","string"==typeof u?u:JSON.stringify(u)],["App_ID",l],["App_Version",p],["Divice_ID",f],["Divice_Version",d],["OS_Version",h]];return g.sort(),console.log("签名参数",g),md5("".concat(g.map((function(e){return e.join("=")})).join("&"),"&").concat(y)).toUpperCase()}var SSDPConfigMode=function e(t){var r=t.App_Sub_ID,n=t.App_Token,o=t.App_ID,i=t.App_key,a=t.App_Version,s=t.Divice_ID,c=t.Divice_Version,u=t.OS_Version,l=t.Partner_ID,p=t.User_Token;_classCallCheck(this,e),this.App_Sub_ID=r,this.App_Token=n,this.App_ID=o,this.App_key=i,this.App_Version=a,this.Divice_ID=s,this.Divice_Version=c,this.OS_Version=u,this.Partner_ID=l,this.User_Token=p||""},nativeGetOwnPropertyNames=objectGetOwnPropertyNames.f,toString$2={}.toString,windowNames="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],getWindowNames=function(e){try{return nativeGetOwnPropertyNames(e)}catch(e){return windowNames.slice()}},f$6=function(e){return windowNames&&"[object Window]"==toString$2.call(e)?getWindowNames(e):nativeGetOwnPropertyNames(toIndexedObject(e))},objectGetOwnPropertyNamesExternal={f:f$6},f$7=wellKnownSymbol,wellKnownSymbolWrapped={f:f$7},defineProperty$4=objectDefineProperty.f,defineWellKnownSymbol=function(e){var t=path.Symbol||(path.Symbol={});has(t,e)||defineProperty$4(t,e,{value:wellKnownSymbolWrapped.f(e)})},$forEach=arrayIteration.forEach,HIDDEN=sharedKey("hidden"),SYMBOL="Symbol",PROTOTYPE$1="prototype",TO_PRIMITIVE=wellKnownSymbol("toPrimitive"),setInternalState$2=internalState.set,getInternalState$1=internalState.getterFor(SYMBOL),ObjectPrototype=Object[PROTOTYPE$1],$Symbol=global_1.Symbol,$stringify=getBuiltIn("JSON","stringify"),nativeGetOwnPropertyDescriptor$1=objectGetOwnPropertyDescriptor.f,nativeDefineProperty$1=objectDefineProperty.f,nativeGetOwnPropertyNames$1=objectGetOwnPropertyNamesExternal.f,nativePropertyIsEnumerable$1=objectPropertyIsEnumerable.f,AllSymbols=shared("symbols"),ObjectPrototypeSymbols=shared("op-symbols"),StringToSymbolRegistry=shared("string-to-symbol-registry"),SymbolToStringRegistry=shared("symbol-to-string-registry"),WellKnownSymbolsStore$1=shared("wks"),QObject=global_1.QObject,USE_SETTER=!QObject||!QObject[PROTOTYPE$1]||!QObject[PROTOTYPE$1].findChild,setSymbolDescriptor=descriptors&&fails((function(){return 7!=objectCreate(nativeDefineProperty$1({},"a",{get:function(){return nativeDefineProperty$1(this,"a",{value:7}).a}})).a}))?function(e,t,r){var n=nativeGetOwnPropertyDescriptor$1(ObjectPrototype,t);n&&delete ObjectPrototype[t],nativeDefineProperty$1(e,t,r),n&&e!==ObjectPrototype&&nativeDefineProperty$1(ObjectPrototype,t,n)}:nativeDefineProperty$1,wrap=function(e,t){var r=AllSymbols[e]=objectCreate($Symbol[PROTOTYPE$1]);return setInternalState$2(r,{type:SYMBOL,tag:e,description:t}),descriptors||(r.description=t),r},isSymbol=useSymbolAsUid?function(e){return"symbol"==typeof e}:function(e){return Object(e)instanceof $Symbol},$defineProperty=function(e,t,r){e===ObjectPrototype&&$defineProperty(ObjectPrototypeSymbols,t,r),anObject(e);var n=toPrimitive(t,!0);return anObject(r),has(AllSymbols,n)?(r.enumerable?(has(e,HIDDEN)&&e[HIDDEN][n]&&(e[HIDDEN][n]=!1),r=objectCreate(r,{enumerable:createPropertyDescriptor(0,!1)})):(has(e,HIDDEN)||nativeDefineProperty$1(e,HIDDEN,createPropertyDescriptor(1,{})),e[HIDDEN][n]=!0),setSymbolDescriptor(e,n,r)):nativeDefineProperty$1(e,n,r)},$defineProperties=function(e,t){anObject(e);var r=toIndexedObject(t),n=objectKeys(r).concat($getOwnPropertySymbols(r));return $forEach(n,(function(t){descriptors&&!$propertyIsEnumerable.call(r,t)||$defineProperty(e,t,r[t])})),e},$create=function(e,t){return void 0===t?objectCreate(e):$defineProperties(objectCreate(e),t)},$propertyIsEnumerable=function(e){var t=toPrimitive(e,!0),r=nativePropertyIsEnumerable$1.call(this,t);return!(this===ObjectPrototype&&has(AllSymbols,t)&&!has(ObjectPrototypeSymbols,t))&&(!(r||!has(this,t)||!has(AllSymbols,t)||has(this,HIDDEN)&&this[HIDDEN][t])||r)},$getOwnPropertyDescriptor=function(e,t){var r=toIndexedObject(e),n=toPrimitive(t,!0);if(r!==ObjectPrototype||!has(AllSymbols,n)||has(ObjectPrototypeSymbols,n)){var o=nativeGetOwnPropertyDescriptor$1(r,n);return!o||!has(AllSymbols,n)||has(r,HIDDEN)&&r[HIDDEN][n]||(o.enumerable=!0),o}},$getOwnPropertyNames=function(e){var t=nativeGetOwnPropertyNames$1(toIndexedObject(e)),r=[];return $forEach(t,(function(e){has(AllSymbols,e)||has(hiddenKeys,e)||r.push(e)})),r},$getOwnPropertySymbols=function(e){var t=e===ObjectPrototype,r=nativeGetOwnPropertyNames$1(t?ObjectPrototypeSymbols:toIndexedObject(e)),n=[];return $forEach(r,(function(e){!has(AllSymbols,e)||t&&!has(ObjectPrototype,e)||n.push(AllSymbols[e])})),n};if(nativeSymbol||($Symbol=function(){if(this instanceof $Symbol)throw TypeError("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?String(arguments[0]):void 0,t=uid(e),r=function(e){this===ObjectPrototype&&r.call(ObjectPrototypeSymbols,e),has(this,HIDDEN)&&has(this[HIDDEN],t)&&(this[HIDDEN][t]=!1),setSymbolDescriptor(this,t,createPropertyDescriptor(1,e))};return descriptors&&USE_SETTER&&setSymbolDescriptor(ObjectPrototype,t,{configurable:!0,set:r}),wrap(t,e)},redefine($Symbol[PROTOTYPE$1],"toString",(function(){return getInternalState$1(this).tag})),redefine($Symbol,"withoutSetter",(function(e){return wrap(uid(e),e)})),objectPropertyIsEnumerable.f=$propertyIsEnumerable,objectDefineProperty.f=$defineProperty,objectGetOwnPropertyDescriptor.f=$getOwnPropertyDescriptor,objectGetOwnPropertyNames.f=objectGetOwnPropertyNamesExternal.f=$getOwnPropertyNames,objectGetOwnPropertySymbols.f=$getOwnPropertySymbols,wellKnownSymbolWrapped.f=function(e){return wrap(wellKnownSymbol(e),e)},descriptors&&(nativeDefineProperty$1($Symbol[PROTOTYPE$1],"description",{configurable:!0,get:function(){return getInternalState$1(this).description}}),redefine(ObjectPrototype,"propertyIsEnumerable",$propertyIsEnumerable,{unsafe:!0}))),_export({global:!0,wrap:!0,forced:!nativeSymbol,sham:!nativeSymbol},{Symbol:$Symbol}),$forEach(objectKeys(WellKnownSymbolsStore$1),(function(e){defineWellKnownSymbol(e)})),_export({target:SYMBOL,stat:!0,forced:!nativeSymbol},{for:function(e){var t=String(e);if(has(StringToSymbolRegistry,t))return StringToSymbolRegistry[t];var r=$Symbol(t);return StringToSymbolRegistry[t]=r,SymbolToStringRegistry[r]=t,r},keyFor:function(e){if(!isSymbol(e))throw TypeError(e+" is not a symbol");if(has(SymbolToStringRegistry,e))return SymbolToStringRegistry[e]},useSetter:function(){USE_SETTER=!0},useSimple:function(){USE_SETTER=!1}}),_export({target:"Object",stat:!0,forced:!nativeSymbol,sham:!descriptors},{create:$create,defineProperty:$defineProperty,defineProperties:$defineProperties,getOwnPropertyDescriptor:$getOwnPropertyDescriptor}),_export({target:"Object",stat:!0,forced:!nativeSymbol},{getOwnPropertyNames:$getOwnPropertyNames,getOwnPropertySymbols:$getOwnPropertySymbols}),_export({target:"Object",stat:!0,forced:fails((function(){objectGetOwnPropertySymbols.f(1)}))},{getOwnPropertySymbols:function(e){return objectGetOwnPropertySymbols.f(toObject(e))}}),$stringify){var FORCED_JSON_STRINGIFY=!nativeSymbol||fails((function(){var e=$Symbol();return"[null]"!=$stringify([e])||"{}"!=$stringify({a:e})||"{}"!=$stringify(Object(e))}));_export({target:"JSON",stat:!0,forced:FORCED_JSON_STRINGIFY},{stringify:function(e,t,r){for(var n,o=[e],i=1;arguments.length>i;)o.push(arguments[i++]);if(n=t,(isObject(t)||void 0!==e)&&!isSymbol(e))return isArray(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!isSymbol(t))return t}),o[1]=t,$stringify.apply(null,o)}})}$Symbol[PROTOTYPE$1][TO_PRIMITIVE]||createNonEnumerableProperty($Symbol[PROTOTYPE$1],TO_PRIMITIVE,$Symbol[PROTOTYPE$1].valueOf),setToStringTag($Symbol,SYMBOL),hiddenKeys[HIDDEN]=!0;var defineProperty$5=objectDefineProperty.f,NativeSymbol=global_1.Symbol;if(descriptors&&"function"==typeof NativeSymbol&&(!("description"in NativeSymbol.prototype)||void 0!==NativeSymbol().description)){var EmptyStringDescriptionStore={},SymbolWrapper=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:String(arguments[0]),t=this instanceof SymbolWrapper?new NativeSymbol(e):void 0===e?NativeSymbol():NativeSymbol(e);return""===e&&(EmptyStringDescriptionStore[t]=!0),t};copyConstructorProperties(SymbolWrapper,NativeSymbol);var symbolPrototype=SymbolWrapper.prototype=NativeSymbol.prototype;symbolPrototype.constructor=SymbolWrapper;var symbolToString=symbolPrototype.toString,native="Symbol(test)"==String(NativeSymbol("test")),regexp=/^Symbol\((.*)\)[^)]+$/;defineProperty$5(symbolPrototype,"description",{configurable:!0,get:function(){var e=isObject(this)?this.valueOf():this,t=symbolToString.call(e);if(has(EmptyStringDescriptionStore,e))return"";var r=native?t.slice(7,-1):t.replace(regexp,"$1");return""===r?void 0:r}}),_export({global:!0,forced:!0},{Symbol:SymbolWrapper})}defineWellKnownSymbol("iterator");var correctPrototypeGetter=!fails((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),IE_PROTO$1=sharedKey("IE_PROTO"),ObjectPrototype$1=Object.prototype,objectGetPrototypeOf=correctPrototypeGetter?Object.getPrototypeOf:function(e){return e=toObject(e),has(e,IE_PROTO$1)?e[IE_PROTO$1]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?ObjectPrototype$1:null},ITERATOR$3=wellKnownSymbol("iterator"),BUGGY_SAFARI_ITERATORS=!1,returnThis=function(){return this},IteratorPrototype,PrototypeOfArrayIteratorPrototype,arrayIterator;[].keys&&(arrayIterator=[].keys(),"next"in arrayIterator?(PrototypeOfArrayIteratorPrototype=objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator)),PrototypeOfArrayIteratorPrototype!==Object.prototype&&(IteratorPrototype=PrototypeOfArrayIteratorPrototype)):BUGGY_SAFARI_ITERATORS=!0),null==IteratorPrototype&&(IteratorPrototype={}),has(IteratorPrototype,ITERATOR$3)||createNonEnumerableProperty(IteratorPrototype,ITERATOR$3,returnThis);var iteratorsCore={IteratorPrototype:IteratorPrototype,BUGGY_SAFARI_ITERATORS:BUGGY_SAFARI_ITERATORS},IteratorPrototype$1=iteratorsCore.IteratorPrototype,returnThis$1=function(){return this},createIteratorConstructor=function(e,t,r){var n=t+" Iterator";return e.prototype=objectCreate(IteratorPrototype$1,{next:createPropertyDescriptor(1,r)}),setToStringTag(e,n,!1),iterators[n]=returnThis$1,e},IteratorPrototype$2=iteratorsCore.IteratorPrototype,BUGGY_SAFARI_ITERATORS$1=iteratorsCore.BUGGY_SAFARI_ITERATORS,ITERATOR$4=wellKnownSymbol("iterator"),KEYS="keys",VALUES="values",ENTRIES="entries",returnThis$2=function(){return this},defineIterator=function(e,t,r,n,o,i,a){createIteratorConstructor(r,t,n);var s,c,u,l=function(e){if(e===o&&y)return y;if(!BUGGY_SAFARI_ITERATORS$1&&e in d)return d[e];switch(e){case KEYS:case VALUES:case ENTRIES:return function(){return new r(this,e)}}return function(){return new r(this)}},p=t+" Iterator",f=!1,d=e.prototype,h=d[ITERATOR$4]||d["@@iterator"]||o&&d[o],y=!BUGGY_SAFARI_ITERATORS$1&&h||l(o),g="Array"==t&&d.entries||h;if(g&&(s=objectGetPrototypeOf(g.call(new e)),IteratorPrototype$2!==Object.prototype&&s.next&&(objectGetPrototypeOf(s)!==IteratorPrototype$2&&(objectSetPrototypeOf?objectSetPrototypeOf(s,IteratorPrototype$2):"function"!=typeof s[ITERATOR$4]&&createNonEnumerableProperty(s,ITERATOR$4,returnThis$2)),setToStringTag(s,p,!0))),o==VALUES&&h&&h.name!==VALUES&&(f=!0,y=function(){return h.call(this)}),d[ITERATOR$4]!==y&&createNonEnumerableProperty(d,ITERATOR$4,y),iterators[t]=y,o)if(c={values:l(VALUES),keys:i?y:l(KEYS),entries:l(ENTRIES)},a)for(u in c)!BUGGY_SAFARI_ITERATORS$1&&!f&&u in d||redefine(d,u,c[u]);else _export({target:t,proto:!0,forced:BUGGY_SAFARI_ITERATORS$1||f},c);return c},ARRAY_ITERATOR="Array Iterator",setInternalState$3=internalState.set,getInternalState$2=internalState.getterFor(ARRAY_ITERATOR),es_array_iterator=defineIterator(Array,"Array",(function(e,t){setInternalState$3(this,{type:ARRAY_ITERATOR,target:toIndexedObject(e),index:0,kind:t})}),(function(){var e=getInternalState$2(this),t=e.target,r=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==r?{value:n,done:!1}:"values"==r?{value:t[n],done:!1}:{value:[n,t[n]],done:!1}}),"values");iterators.Arguments=iterators.Array,addToUnscopables("keys"),addToUnscopables("values"),addToUnscopables("entries");var defineProperty$6=objectDefineProperty.f,FunctionPrototype=Function.prototype,FunctionPrototypeToString=FunctionPrototype.toString,nameRE=/^\s*function ([^ (]*)/,NAME="name";!descriptors||NAME in FunctionPrototype||defineProperty$6(FunctionPrototype,NAME,{configurable:!0,get:function(){try{return FunctionPrototypeToString.call(this).match(nameRE)[1]}catch(e){return""}}});var charAt$1=stringMultibyte.charAt,STRING_ITERATOR="String Iterator",setInternalState$4=internalState.set,getInternalState$3=internalState.getterFor(STRING_ITERATOR);defineIterator(String,"String",(function(e){setInternalState$4(this,{type:STRING_ITERATOR,string:String(e),index:0})}),(function(){var e,t=getInternalState$3(this),r=t.string,n=t.index;return n>=r.length?{value:void 0,done:!0}:(e=charAt$1(r,n),t.index+=e.length,{value:e,done:!1})}));var domIterables={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},ITERATOR$5=wellKnownSymbol("iterator"),TO_STRING_TAG$3=wellKnownSymbol("toStringTag"),ArrayValues=es_array_iterator.values;for(var COLLECTION_NAME in domIterables){var Collection=global_1[COLLECTION_NAME],CollectionPrototype=Collection&&Collection.prototype;if(CollectionPrototype){if(CollectionPrototype[ITERATOR$5]!==ArrayValues)try{createNonEnumerableProperty(CollectionPrototype,ITERATOR$5,ArrayValues)}catch(e){CollectionPrototype[ITERATOR$5]=ArrayValues}if(CollectionPrototype[TO_STRING_TAG$3]||createNonEnumerableProperty(CollectionPrototype,TO_STRING_TAG$3,COLLECTION_NAME),domIterables[COLLECTION_NAME])for(var METHOD_NAME in es_array_iterator)if(CollectionPrototype[METHOD_NAME]!==es_array_iterator[METHOD_NAME])try{createNonEnumerableProperty(CollectionPrototype,METHOD_NAME,es_array_iterator[METHOD_NAME])}catch(e){CollectionPrototype[METHOD_NAME]=es_array_iterator[METHOD_NAME]}}}var slice=[].slice,MSIE=/MSIE .\./.test(engineUserAgent),wrap$1=function(e){return function(t,r){var n=arguments.length>2,o=n?slice.call(arguments,2):void 0;return e(n?function(){("function"==typeof t?t:Function(t)).apply(this,o)}:t,r)}};_export({global:!0,bind:!0,forced:MSIE},{setTimeout:wrap$1(global_1.setTimeout),setInterval:wrap$1(global_1.setInterval)});var IndexedDB=function(){function e(t){var r=t.dbname,n=void 0===r?"":r,o=t.onupgradeneeded,i=void 0===o?void 0:o,a=t.version,s=void 0===a?1:a;_classCallCheck(this,e),this.dbname=n,this.version=s,this.onupgradeneeded=i,this.init()}return _createClass(e,[{key:"init",value:function(){var e=this;if(!("indexedDB"in window))throw this.error="当前环境不支持 indexedDB",Error(this.error);return new Promise((function(t,r){e.DBRequestLink=window.indexedDB.open(e.dbname,e.version),e.DBRequestLink.onsuccess=function(r){e.DBInstance=r.target.result,e.isReady=!0,t(r)},e.DBRequestLink.onerror=function(t){console.error("indexedDB open error",t),e.error=t,r(t)},e.DBRequestLink.onupgradeneeded=e.onupgradeneeded}))}},{key:"initReady",value:function(){var e=this;return this.isReady?Promise.resolve(this.DBInstance):this.error?Promise.reject(this.error):new Promise((function(t,r){var n=0,o=setInterval((function(){e.isReady||n>=50?(clearInterval(o),e.isReady?t(e.DBInstance):r("IndexedDB init time out")):e.error&&(r(e.error),clearInterval(o)),n++}),300)}))}}]),e}();function get$1(e,t){return new Promise((function(r,n){var o=e[t?"get":"getAll"](t);o.onsuccess=function(e){r(e.target.result)},o.onerror=function(e){n(e)}}))}function put(e,t){return new Promise((function(r,n){var o=e.put(t);o.onsuccess=function(e){r(e)},o.onerror=function(e){n(e)}}))}var SSDPDtgw=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"test";_classCallCheck(this,e),this.env=t,this.url=getConstant("ssdp.dtgw.".concat(this.getEnv()))}return _createClass(e,[{key:"request",value:function(e){var t=e.code,r=e.data,n=e.headers,o=e.responseType,i=void 0===o?"json":o,a=e.timeout,s=e.method,c=void 0===s?"post":s,u=e.params,l=e.onUploadProgress,p=e.onDownloadProgress;return request({url:this.url,data:r,method:c,params:u,headers:Object.assign(Object.assign({"s-crc-ds-codes":t},this.getRunworkStaticKeys()),n),timeout:a,onUploadProgress:l,onDownloadProgress:p,responseType:i})}},{key:"getRunworkStaticKeys",value:function(){return getConstant("ssdp.dtgw.runwork.".concat(this.env))}},{key:"getEnv",value:function(){switch(this.env){case"production":return"production";default:return"test"}}},{key:"generateUrlParam",value:function(e){return""}}]),e}(),FAILS_ON_PRIMITIVES=fails((function(){objectKeys(1)}));_export({target:"Object",stat:!0,forced:FAILS_ON_PRIMITIVES},{keys:function(e){return objectKeys(toObject(e))}});var SSDPCls=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"sit",r=arguments.length>1?arguments[1]:void 0;_classCallCheck(this,e),this.url=getConstant("ssdp.cls.".concat("production"===t?"production":"test")),this.env=t,this.commonParam=r?Object.assign({},r):Object.assign({},getConstant("ssdp.cls.runwork.".concat(this.env)))}return _createClass(e,[{key:"request",value:function(e){var t=e.api,r=void 0===t?"":t,n=e.version,o=void 0===n?"":n,i=e.data,a=void 0===i?"":i,s=e.params,c=void 0===s?{}:s,u=e.headers,l=void 0===u?{}:u,p=e.method,f=void 0===p?"GET":p;return request({url:"".concat(this.url,"?ssdp=").concat(this.generateUrlParam(Object.assign({Api_ID:r,Api_Version:o,Sign:"NO_SIGN",User_Token:"null",Time_Stamp:getTimeStamp()},this.commonParam))),method:f,params:c,headers:Object.assign({},l),data:a})}},{key:"generateUrlParam",value:function(e){return base64.encode(Object.keys(e).map((function(t){return"".concat(t,"=").concat(e[t])})).join("&"))}},{key:"setSysOption",value:function(e){var t=e.App_Sub_ID,r=e.App_Token,n=e.Partner_ID,o=e.Sys_ID;this.App_Sub_ID=t,this.App_Token=r,this.Partner_ID=n,this.Sys_ID=o}}]),e}(),Factory=function e(){_classCallCheck(this,e)};function getIndexedDB(){return Factory.indexedDB?Factory.indexedDB:(console.info("实例化 indexedDB"),Factory.indexedDB=new IndexedDB({dbname:getConstant("cacheKeys.indexeddb.name"),version:getConstant("cacheKeys.indexeddb.version"),onupgradeneeded:function(e){console.info("indexedDB onupgradeneeded");var t=e.target.result,r=getConstant("h5DB"),n=!0,o=!1,i=void 0;try{for(var a,s=r[Symbol.iterator]();!(n=(a=s.next()).done);n=!0){var c=a.value,u=c.name,l=c.store,p=c.index;t.objectStoreNames.contains(u)&&t.deleteObjectStore(u);var f=t.createObjectStore(u,l),d=!0,h=!1,y=void 0;try{for(var g,v=p[Symbol.iterator]();!(d=(g=v.next()).done);d=!0){var b=g.value;f.createIndex(b,b)}}catch(e){h=!0,y=e}finally{try{d||null==v.return||v.return()}finally{if(h)throw y}}}}catch(e){o=!0,i=e}finally{try{n||null==s.return||s.return()}finally{if(o)throw i}}}}),Factory.indexedDB)}function getSsdpCls(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"sit";return Factory.ssdpCls||(Factory.ssdpCls=new SSDPCls(e)),Factory.ssdpCls}function getSsdpDtgw(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"test";return Factory.ssdpDtgw||(Factory.ssdpDtgw=new SSDPDtgw(e)),Factory.ssdpDtgw}Factory.getIndexedDB=getIndexedDB,Factory.getSsdpCls=getSsdpCls,Factory.getSsdpDtgw=getSsdpDtgw;var SSDPApp=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"test",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];_classCallCheck(this,e),this.CacheDBKey=getConstant("cacheKeys.indexeddb.store.postToken"),this.isLogin=!1,this.config=new SSDPConfigMode(t),this.isLogin=n,this.url=getConstant("ssdp.app.".concat(r)),this.env=r,this.CacheStoreKey="PostToken_".concat(this.env)}return _createClass(e,[{key:"init",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getAccessToken();case 2:this.postToken=e.sent;case 3:case"end":return e.stop()}}),e,this)})))}},{key:"getPostToken",value:function(){return this.postToken}},{key:"request",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function r(){var n,o,i,a,s,c,u,l,p,f,d,h,y,g,v,b,S,m,E,_,T,O;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return n=e.api,o=void 0===n?"":n,i=e.version,a=void 0===i?"1.0":i,s=e.data,c=void 0===s?"":s,u=e.params,l=void 0===u?{}:u,p=e.headers,f=void 0===p?{}:p,d=e.isFormatData,h=void 0===d||d,y=e.type,g=void 0===y?"rs":y,v=e.method,b=void 0===v?"POST":v,S=e.uri,"get"===b.toLowerCase()&&(m=this.getApiAttrs(o,a)),r.next=4,request(Object.assign(Object.assign({},e),{url:"".concat(this.url.replace("",g)).concat(S||"","?ssdp=").concat(this.generateUrlParam("post"===b.toLowerCase()?{Api_ID:o,Api_Version:a,App_Sub_ID:this.config.App_Sub_ID}:Object.assign(Object.assign({},m),{Sign:generateSysSign(Object.assign(Object.assign({},m),{REQUEST_DATA:c}))}))),params:l,method:b,headers:Object.assign({},f),data:"post"===b.toLowerCase()?this.generateCommonParam(o,a,c):void 0}));case 4:if(E=r.sent,!1!==h){r.next=7;break}return r.abrupt("return",E);case 7:if(_=E.data.RESPONSE,T=_.RETURN_CODE,O=_.RETURN_DESC,!((["E0MI0006","E0MI0003"].includes(T)||"string"==typeof O&&~O.toLocaleLowerCase().indexOf("app_token"))&&t<=3)){r.next=13;break}return r.next=11,this.getAccessTokenByPost();case 11:return this.postToken=r.sent,r.abrupt("return",this.request({api:o,version:a,data:c,headers:f},++t));case 13:return r.abrupt("return",E);case 14:case"end":return r.stop()}}),r,this)})))}},{key:"generateCommonParam",value:function(e,t,r,n){var o=this.getApiAttrs(e,t,n);if(o=Object.assign(Object.assign({},o),{Sign:generateSysSign(Object.assign(Object.assign({},o),{REQUEST_DATA:r,App_key:this.config.App_key}))}),this.isLogin&&"crc.ssdp.public.apptoken"!==o.Api_ID){var i=r.BUS_DATA;(i=JSON.parse(base64.decode(i))).appToken=o.App_Token,r={BUS_DATA:base64.encode(JSON.stringify(i))}}return JSON.stringify({REQUEST:{REQUEST_DATA:r,API_ATTRS:o}})}},{key:"getApiAttrs",value:function(e,t,r){return Object.assign(Object.assign({},this.config),{App_key:void 0,App_Token:r||this.postToken,Time_Stamp:getTimeStamp(),Api_ID:e,Api_Version:t})}},{key:"generateUrlParam",value:function(e){var t=[];for(var r in e){var n=e[r];n&&t.push("".concat(r,"=").concat(n))}return base64.encode(t.join("&"))}},{key:"getAccessToken",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.getAccessTokenByCache();case 2:if(!(t=e.sent)){e.next=5;break}return e.abrupt("return",Promise.resolve(t));case 5:return e.abrupt("return",this.getAccessTokenByPost());case 6:case"end":return e.stop()}}),e,this)})))}},{key:"getAccessTokenByPost",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t,r,n,o,i,a,s;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,request({url:this.generateUrlByAccessToken(),data:this.generateCommonParam("crc.ssdp.public.apptoken","1.0",{App_Type:"",App_key:this.config.App_key,Remarks:"",Scope:""},this.config.App_Token)});case 2:if(t=e.sent,r=t.data,n=r.RESPONSE,o=n.RETURN_DATA,"S"===(i=n.RETURN_CODE).charAt(0)||"MS000A000"===i){e.next=7;break}return e.abrupt("return",Promise.reject(r.RESPONSE));case 7:if(a=o.App_Token,s=o.Token_Expires,!this.isLogin){e.next=10;break}return e.abrupt("return",a);case 10:return this.setPostTokenCache({token:a,expires:(new Date).getTime()+1e3*s}),e.abrupt("return",a);case 12:case"end":return e.stop()}}),e,this)})))}},{key:"getAccessTokenByCache",value:function(){var t=this;if(this.isLogin)return Promise.resolve();if(!e.isIndexedDB){var r=localStorage.getItem(this.CacheDBKey),n="string"==typeof r?JSON.parse(r):void 0;return void 0!==r&&this.checkPostTokenExpires(n.expires)?n.value:void 0}return Factory.getIndexedDB().initReady().then((function(e){return get$1(e.transaction(t.CacheDBKey,"readwrite").objectStore(t.CacheDBKey),t.CacheStoreKey)})).then((function(e){var r=e||{},n=r.token,o=r.expires;return Promise.resolve(n&&t.checkPostTokenExpires(o)?n:void 0)})).catch((function(e){return logger(["getAccessTokenByCache",e],"warn"),Promise.resolve()}))}},{key:"setPostTokenCache",value:function(t){var r=this,n=t.expires,o=t.token;e.isIndexedDB?Factory.getIndexedDB().initReady().then((function(e){return put(e.transaction(r.CacheDBKey,"readwrite").objectStore(r.CacheDBKey),{id:r.CacheStoreKey,token:o,expires:n})})).catch((function(e){logger(["更新IndexedDB【setPostToken】失败",e],"warn")})):localStorage.setItem(this.CacheDBKey,JSON.stringify({expires:n,value:o}))}},{key:"checkPostTokenExpires",value:function(e){return e-(new Date).getTime()>3e5}},{key:"generateUrlByAccessToken",value:function(){var e=getConstant("ssdp.api.production.ssdpPostToken"),t=e.api,r=e.version;return"".concat(this.url.replace("","rs"),"?ssdp=").concat(this.generateUrlParam({Api_ID:t,Api_Version:r,App_Sub_ID:this.config.App_Sub_ID}))}},{key:"setUserToken",value:function(e){this.config.User_Token=e}}]),e}();SSDPApp.isIndexedDB="indexedDB"in window;var $findIndex=arrayIteration.findIndex,FIND_INDEX="findIndex",SKIPS_HOLES=!0,USES_TO_LENGTH$5=arrayMethodUsesToLength(FIND_INDEX);FIND_INDEX in[]&&Array(1)[FIND_INDEX]((function(){SKIPS_HOLES=!1})),_export({target:"Array",proto:!0,forced:SKIPS_HOLES||!USES_TO_LENGTH$5},{findIndex:function(e){return $findIndex(this,e,arguments.length>1?arguments[1]:void 0)}}),addToUnscopables(FIND_INDEX);var HAS_SPECIES_SUPPORT$1=arrayMethodHasSpeciesSupport("slice"),USES_TO_LENGTH$6=arrayMethodUsesToLength("slice",{ACCESSORS:!0,0:0,1:2}),SPECIES$6=wellKnownSymbol("species"),nativeSlice=[].slice,max$2=Math.max;_export({target:"Array",proto:!0,forced:!HAS_SPECIES_SUPPORT$1||!USES_TO_LENGTH$6},{slice:function(e,t){var r,n,o,i=toIndexedObject(this),a=toLength(i.length),s=toAbsoluteIndex(e,a),c=toAbsoluteIndex(void 0===t?a:t,a);if(isArray(i)&&("function"!=typeof(r=i.constructor)||r!==Array&&!isArray(r.prototype)?isObject(r)&&null===(r=r[SPECIES$6])&&(r=void 0):r=void 0,r===Array||void 0===r))return nativeSlice.call(i,s,c);for(n=new(void 0===r?Array:r)(max$2(c-s,0)),o=0;s1?arguments[1]:void 0)}});var RunworkH5Mode=function e(t){var r=t.isLocal,n=void 0!==r&&r,o=t.devUser,i=t.env,a=void 0===i?"sit":i,s=t.jsApiList,c=void 0===s?[]:s,u=t.log,l=void 0!==u&&u,p=t.appId,f=t.appSecret,d=t.isLogin,h=void 0!==d&&d,y=t.isHrInfo,g=void 0===y||y,v=t.isAvatar,b=void 0!==v&&v,S=t.isPrivate,m=void 0!==S&&S,E=t.isHrInfoCache,_=void 0===E||E;_classCallCheck(this,e),this.env="sit",this.jsApiList=[],this.domain=["https://runwork-h5.crc.com.cn","https://runwork-h5-uat.crc.com.cn"],this.isLocal=n,this.devUser=o,this.env=a,RunWorkH5.env=this.env,this.log=l,this.appId=p,this.appSecret=f,this.isLogin=h,this.isHrInfo=g,this.isAvatar=b,this.isPrivate=m,this.isHrInfoCache=_,this.jsApiList=["device.base.getSystemInfo","biz.user.getUserInfoEx","biz.util.openDocument","biz.user.getUserInfo"].concat(c)};function getTenantAccessToken(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function o(){var i,a,s,c,u,l,p,f,d,h,y;return regeneratorRuntime.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(i="".concat(getConstant("cacheKeys.localStorage.feishu.tenantAccessToken"),"_").concat(e),!0===r&&(logger("清空【TenantAccessToken】缓存"),localStorage.setItem(i,"")),a=localStorage.getItem(i),s=a?JSON.parse(a):void 0,!((c="object"===_typeof(s)?s.expire-(new Date).getTime():-1)>9e4)){o.next=8;break}return logger(["从缓存获取【TenantAccessToken】",c]),o.abrupt("return",s.value);case 8:return u=getConstant("ssdp.api.".concat(RunWorkH5.env,".gettoken")),l=u.api,p=u.version,console.info("TenantAccessToken",n,n||(RunWorkH5.isPrivate?"2.0":p)),o.next=12,RunWorkH5.ssdpCls.request({method:"POST",api:l,version:n||(RunWorkH5.isPrivate?"2.0":p),headers:{"Access-Control-Expose-Headers":"RETURN_CODE"},data:JSON.stringify({app_id:e,app_secret:t})});case 12:return f=o.sent,d=f.data,f.headers,h=d.tenant_access_token,d.code,d.msg,y=d.expire,localStorage.setItem(i,JSON.stringify({expire:(new Date).getTime()+1e3*y,value:h})),o.abrupt("return",h);case 18:case"end":return o.stop()}}),o)})))}function getTicket(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function o(){var i,a,s,c,u,l,p,f,d,h,y,g;return regeneratorRuntime.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:if(i="".concat(getConstant("cacheKeys.localStorage.feishu.ticket"),"_").concat(e),!0===r&&(logger("清空【Ticket】缓存"),localStorage.setItem(i,"")),a=localStorage.getItem(i),s=a?JSON.parse(a):void 0,!((c="object"===_typeof(s)?s.expire-(new Date).getTime():-1)>9e4)){o.next=8;break}return logger(["从缓存获取【Ticket】",c,s.value]),o.abrupt("return",s.value);case 8:return u=getConstant("ssdp.api.".concat(RunWorkH5.env,".ticket")),l=u.api,p=u.version,o.next=11,RunWorkH5.ssdpCls.request({method:"POST",api:l,version:n||(RunWorkH5.isPrivate?"2.0":p),headers:{Authorization:"Bearer ".concat(t)},data:JSON.stringify({})});case 11:if(f=o.sent,d=f.data){o.next=15;break}return o.abrupt("return",Promise.reject("get ticket error"));case 15:return d.code,d.msg,h=d.data,y=h.ticket,g=h.expire_in,localStorage.setItem(i,JSON.stringify({expire:(new Date).getTime()+1e3*g,value:y})),o.abrupt("return",y);case 19:case"end":return o.stop()}}),o)})))}var sameValue=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};fixRegexpWellKnownSymbolLogic("search",1,(function(e,t,r){return[function(t){var r=requireObjectCoercible(this),n=null==t?void 0:t[e];return void 0!==n?n.call(t,r):new RegExp(t)[e](String(r))},function(e){var n=r(t,e,this);if(n.done)return n.value;var o=anObject(e),i=String(this),a=o.lastIndex;sameValue(a,0)||(o.lastIndex=0);var s=regexpExecAbstract(o,i);return sameValue(o.lastIndex,a)||(o.lastIndex=a),null===s?-1:s.index}]}));var sha1=createCommonjsModule((function(module){ +/* + * [js-sha1]{@link https://github.com/emn178/js-sha1} + * + * @version 0.6.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ +!function(){var root="object"==typeof window?window:{},NODE_JS=!root.JS_SHA1_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;NODE_JS&&(root=commonjsGlobal);var COMMON_JS=!root.JS_SHA1_NO_COMMON_JS&&module.exports,HEX_CHARS="0123456789abcdef".split(""),EXTRA=[-2147483648,8388608,32768,128],SHIFT=[24,16,8,0],OUTPUT_TYPES=["hex","array","digest","arrayBuffer"],blocks=[],createOutputMethod=function(e){return function(t){return new Sha1(!0).update(t)[e]()}},createMethod=function(){var e=createOutputMethod("hex");NODE_JS&&(e=nodeWrap(e)),e.create=function(){return new Sha1},e.update=function(t){return e.create().update(t)};for(var t=0;t>2]|=e[o]<>2]|=r<>2]|=(192|r>>6)<>2]|=(128|63&r)<=57344?(a[n>>2]|=(224|r>>12)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<>2]|=(240|r>>18)<>2]|=(128|r>>12&63)<>2]|=(128|r>>6&63)<>2]|=(128|63&r)<=64?(this.block=a[16],this.start=n-64,this.hash(),this.hashed=!0):this.start=n}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Sha1.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex;e[16]=this.block,e[t>>2]|=EXTRA[3&t],this.block=e[16],t>=56&&(this.hashed||this.hash(),e[0]=this.block,e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.hBytes<<3|this.bytes>>>29,e[15]=this.bytes<<3,this.hash()}},Sha1.prototype.hash=function(){var e,t,r=this.h0,n=this.h1,o=this.h2,i=this.h3,a=this.h4,s=this.blocks;for(e=16;e<80;++e)t=s[e-3]^s[e-8]^s[e-14]^s[e-16],s[e]=t<<1|t>>>31;for(e=0;e<20;e+=5)r=(t=(n=(t=(o=(t=(i=(t=(a=(t=r<<5|r>>>27)+(n&o|~n&i)+a+1518500249+s[e]<<0)<<5|a>>>27)+(r&(n=n<<30|n>>>2)|~r&o)+i+1518500249+s[e+1]<<0)<<5|i>>>27)+(a&(r=r<<30|r>>>2)|~a&n)+o+1518500249+s[e+2]<<0)<<5|o>>>27)+(i&(a=a<<30|a>>>2)|~i&r)+n+1518500249+s[e+3]<<0)<<5|n>>>27)+(o&(i=i<<30|i>>>2)|~o&a)+r+1518500249+s[e+4]<<0,o=o<<30|o>>>2;for(;e<40;e+=5)r=(t=(n=(t=(o=(t=(i=(t=(a=(t=r<<5|r>>>27)+(n^o^i)+a+1859775393+s[e]<<0)<<5|a>>>27)+(r^(n=n<<30|n>>>2)^o)+i+1859775393+s[e+1]<<0)<<5|i>>>27)+(a^(r=r<<30|r>>>2)^n)+o+1859775393+s[e+2]<<0)<<5|o>>>27)+(i^(a=a<<30|a>>>2)^r)+n+1859775393+s[e+3]<<0)<<5|n>>>27)+(o^(i=i<<30|i>>>2)^a)+r+1859775393+s[e+4]<<0,o=o<<30|o>>>2;for(;e<60;e+=5)r=(t=(n=(t=(o=(t=(i=(t=(a=(t=r<<5|r>>>27)+(n&o|n&i|o&i)+a-1894007588+s[e]<<0)<<5|a>>>27)+(r&(n=n<<30|n>>>2)|r&o|n&o)+i-1894007588+s[e+1]<<0)<<5|i>>>27)+(a&(r=r<<30|r>>>2)|a&n|r&n)+o-1894007588+s[e+2]<<0)<<5|o>>>27)+(i&(a=a<<30|a>>>2)|i&r|a&r)+n-1894007588+s[e+3]<<0)<<5|n>>>27)+(o&(i=i<<30|i>>>2)|o&a|i&a)+r-1894007588+s[e+4]<<0,o=o<<30|o>>>2;for(;e<80;e+=5)r=(t=(n=(t=(o=(t=(i=(t=(a=(t=r<<5|r>>>27)+(n^o^i)+a-899497514+s[e]<<0)<<5|a>>>27)+(r^(n=n<<30|n>>>2)^o)+i-899497514+s[e+1]<<0)<<5|i>>>27)+(a^(r=r<<30|r>>>2)^n)+o-899497514+s[e+2]<<0)<<5|o>>>27)+(i^(a=a<<30|a>>>2)^r)+n-899497514+s[e+3]<<0)<<5|n>>>27)+(o^(i=i<<30|i>>>2)^a)+r-899497514+s[e+4]<<0,o=o<<30|o>>>2;this.h0=this.h0+r<<0,this.h1=this.h1+n<<0,this.h2=this.h2+o<<0,this.h3=this.h3+i<<0,this.h4=this.h4+a<<0},Sha1.prototype.hex=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3,o=this.h4;return HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[15&r]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]+HEX_CHARS[o>>28&15]+HEX_CHARS[o>>24&15]+HEX_CHARS[o>>20&15]+HEX_CHARS[o>>16&15]+HEX_CHARS[o>>12&15]+HEX_CHARS[o>>8&15]+HEX_CHARS[o>>4&15]+HEX_CHARS[15&o]},Sha1.prototype.toString=Sha1.prototype.hex,Sha1.prototype.digest=function(){this.finalize();var e=this.h0,t=this.h1,r=this.h2,n=this.h3,o=this.h4;return[e>>24&255,e>>16&255,e>>8&255,255&e,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24&255,r>>16&255,r>>8&255,255&r,n>>24&255,n>>16&255,n>>8&255,255&n,o>>24&255,o>>16&255,o>>8&255,255&o]},Sha1.prototype.array=Sha1.prototype.digest,Sha1.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(20),t=new DataView(e);return t.setUint32(0,this.h0),t.setUint32(4,this.h1),t.setUint32(8,this.h2),t.setUint32(12,this.h3),t.setUint32(16,this.h4),e};var exports=createMethod();COMMON_JS?module.exports=exports:root.sha1=exports}()}));function generateFeishuSignature(e,t,r,n){var o={jsapi_ticket:e,noncestr:t,timestamp:r,url:n||"".concat(location.origin).concat(location.pathname).concat(location.search)},i=Object.keys(o).map((function(e){return"".concat(e,"=").concat(o[e])})).join("&");return logger(["签名参数",i]),sha1(i)}function identity(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){},o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"",a=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0;return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function s(){var c,u,l,p,f;return regeneratorRuntime.wrap((function(s){for(;;)switch(s.prev=s.next){case 0:return s.prev=0,s.next=3,getTenantAccessToken(e,t,a>0,o);case 3:return c=s.sent,s.next=6,getTicket(e,c,a>0,o);case 6:return u=s.sent,l=(new Date).getTime(),p=base64.encode("".concat(e).concat(l)),f=generateFeishuSignature(u,p,l,i),console.log("signature",f),s.next=13,callFeishuIdentity({appId:e,timestamp:l,nonceStr:p,signature:f,jsApiList:r});case 13:return"function"==typeof n&&n({success:!0}),s.abrupt("return",!0);case 17:if(s.prev=17,s.t0=s.catch(0),!(a<3)){s.next=21;break}return s.abrupt("return",identity(e,t,r,n,o,i,++a));case 21:return"function"==typeof n&&n({success:!1,error:s.t0}),s.abrupt("return",Promise.reject(s.t0));case 23:case"end":return s.stop()}}),s,null,[[0,17]])})))}function callFeishuIdentity(e){return console.info("config",e),new Promise((function(t,r){window.h5sdk.ready((function(){window.h5sdk.config(e).then((function(){console.info("jssdk identity success",e.jsApiList),t(!0)})).catch((function(e){console.error("identity error",e),r(e)}))}))}))}function browseFile(e){var t=e.fileType,r=void 0===t?"":t,n=e.data,o=void 0===n?{}:n,i=e.headers,a=void 0===i?{}:i,s=e.code,c=void 0===s?"":s,u=e.onProgress;return a=Object.assign(Object.assign({"content-type":"application/json;charset=UTF-8","s-crc-ds-codes":c},RunWorkH5.ssdpDtgw.getRunworkStaticKeys()),a),["jpg","jpeg","png","gif"].includes(r.toLowerCase())?RunWorkH5.ssdpDtgw.request({code:c,headers:a,responseType:"blob",onDownloadProgress:u,data:o}).then((function(e){return e})).catch((function(e){return console.error(e),Promise.reject(e)})):openDocument({fileType:r,data:o,headers:a,onDownloadProgress:u})}function openDocument(e){var t=e.fileType,r=e.data,n=void 0===r?{}:r,o=e.headers,i=e.onDownloadProgress;return jssdk("biz.util.openDocument",{method:"POST",fileType:t,body:"object"===_typeof(n)?JSON.stringify(n):n,header:o,url:RunWorkH5.ssdpDtgw.url,onProgress:i}).then((function(){return!0})).catch((function(e){return console.error(e),Promise.reject(e)}))}var sitMockData={user:{open_id:"",external_token:"local",App_Sub_ID:"0000000303DM",App_Token:"6debaf0da23340daaac8659144ebed7a",App_key:"a59eacd0661d4ebb8a2b86aa02d2335f",Partner_ID:"00000000"},sys:{appVersion:"0.0.1",deviceID:"1A283E7B-F167-41E3-8974-493D57B74581",system:"local",platform:"local"}},uatMockData={user:{open_id:"",external_token:"local",App_Sub_ID:"0000000309OK",App_Token:"5643f1d9d86c43c9ae72069c243dbf86",App_key:"52e219166c7c41a68b490ac4efc22fa2",Partner_ID:"00000000"},sys:{appVersion:"1.0.0",deviceID:"1A283E7B-F167-41E3-8974-493D57B74581",system:"local",platform:"local"}},productionMockData={user:{open_id:"",external_token:void 0,App_Sub_ID:"0000000401RH",App_Token:"2bbc84f3bde54df488b4b0133989956c",App_key:"8c33a5babafd4f1197a6880a960ab91b",Partner_ID:"00000000"},sys:{appVersion:"0.0.1",deviceID:"1A283E7B-F167-41E3-8974-493D57B74581",system:"local",platform:"local"}};function mock(e){switch(e){case"sit":return sitMockData;case"uat":return uatMockData;case"production":return productionMockData;default:return{}}}var HrInfoMode=function e(t){var r=t.jobCodeDescr,n=t.fullPath,o=t.businessUnit,i=t.gender,a=t.avatarUrl,s=t.fullDescPath,c=t.deptId,u=t.employeeId,l=t.birthDate,p=t.nameFormal,f=t.join_time,d=t.nameAc,h=t.deptDesc,y=t.userType,g=t.email,v=t.seniorityPayDtMap,b=t.businessUnitDesc,S=t.mobilePhoneNumber,m=t.businessUnitDescShort;_classCallCheck(this,e),this.jobCodeDescr=r,this.fullPath=n,this.businessUnit=o,this.gender=i,this.avatarUrl=a,this.fullDescPath=s,this.deptId=c,this.employeeId=u,this.birthDate=l,this.nameFormal=p,this.join_time=f,this.nameAc=d,this.deptDesc=h,this.userType=y,this.email=g,this.seniorityPayDtMap=v,this.businessUnitDesc=b,this.mobilePhoneNumber=S,this.businessUnitDescShort=m},RunWorkH5=function(e){function t(e){var r;return _classCallCheck(this,t),(r=_possibleConstructorReturn(this,_getPrototypeOf(t).call(this,e))).ready=!1,r.isJssdkReady=!1,r.browseFile=browseFile,t.ssdpCls=Factory.getSsdpCls(t.env),t.ssdpDtgw=Factory.getSsdpDtgw(t.env),t.isPrivate=e.isPrivate,r.ssdpRequestCls=t.ssdpCls.request.bind(t.ssdpCls),r.ssdpRequestDtgw=t.ssdpDtgw.request.bind(t.ssdpDtgw),logger("是否支持IndexedDB:".concat(t.isIndexedDB)),r.init().then((function(e){var t=e.ldap,n=e.hrInfo;logger(["初始化完成",t,n]),r.ready=!0,r.ldap=t,n&&(r.hrInfo=new HrInfoMode(n))})).catch((function(e){r.ready=!1,r.error=e,logger(r.error,"error")})),r}return _inherits(t,e),_createClass(t,[{key:"init",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var r,n,o,i,a,s,c,u,l,p,f,d,h,y,g,v,b;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.checkOption()){e.next=2;break}return e.abrupt("return",Promise.reject(this.error));case 2:return e.next=4,this.getBaseInfoByNative();case 4:return r=e.sent,n=_slicedToArray(r,2),o=n[0],i=n[1],logger(["getBaseInfoByNative",o,i],"info"),a=i.App_Sub_ID,s=i.App_Token,c=i.App_key,u=i.Partner_ID,l=i.external_token,p=i.open_id,f=o.appVersion,d=o.deviceID,h=o.system,y=o.platform,this.ssdpApp=new SSDPApp({App_ID:"002601",App_Sub_ID:a,App_Token:s,App_key:c,App_Version:f,Partner_ID:u,Divice_ID:d,Divice_Version:h,OS_Version:y,User_Token:l},t.getEnv(),this.isLogin),e.next=14,this.ssdpApp.init();case 14:if(logger(["ssdpApp 初始化完成"]),!this.isHrInfo||this.isLogin){e.next=20;break}return logger(["获取用户Hr信息"]),e.next=19,this.getHrInfo(p);case 19:g=e.sent;case 20:return this.isLogin&&(v=getConstant("cacheKeys.indexeddb.name"),(b=window.indexedDB.deleteDatabase(v)).onerror=function(e){logger(["删除数据库失败:".concat(v),e],"error")},b.onsuccess=function(){logger("删除数据库完成:".concat(v),"info")}),e.abrupt("return",{ldap:p,hrInfo:g});case 22:case"end":return e.stop()}}),e,this)})))}},{key:"initReady",value:function(){var e=this;return this.ready?Promise.resolve():this.error?Promise.reject(this.error):new Promise((function(t,r){var n=0,o=setInterval((function(){e.error&&(logger(["初始化失败",e.error],"error"),clearInterval(o),r(e.error)),(e.ready||n>=100)&&(logger(["初始化结束",e.ready,e.error]),clearInterval(o),!e.ready&&logger("初始化超时","error"),e.ready?t():r("初始化超时,请稍后重试")),n++}),300)}))}},{key:"jssdkReady",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var t=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.isJssdkReady){e.next=4;break}return e.abrupt("return",!0);case 4:if(!this.jssdkIdentityError){e.next=7;break}return logger(["jssdk鉴权失败",this.jssdkIdentityError],"error"),e.abrupt("return",Promise.reject(this.jssdkIdentityError));case 7:return e.abrupt("return",new Promise((function(e,r){var n=0,o=setInterval((function(){t.jssdkIdentityError&&(clearInterval(o),r(t.jssdkIdentityError)),(t.isJssdkReady||n>=50)&&(clearInterval(o),logger(["jssdk鉴权结束",t.isJssdkReady]),t.isJssdkReady?e():r("jssdk鉴权超时")),n++}),300)})));case 8:case"end":return e.stop()}}),e,this)})))}},{key:"ssdpRequestApp",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function r(){var n,o,i,a,s,c,u,l,p,f,d,h,y,g,v,b,S,m,E,_,T,O;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return n=e.api,o=e.version,i=e.data,a=void 0===i?{}:i,s=e.headers,c=e.isFormatData,u=void 0===c||c,l=e.type,p=void 0===l?"rs":l,f=e.method,d=void 0===f?"POST":f,h=e.params,y=void 0===h?{}:h,r.next=3,this.ssdpApp.request(Object.assign(Object.assign({},e),{api:n,version:o,data:a,headers:s,isFormatData:u,method:d,type:p,params:y}));case 3:if(g=r.sent,v=g.data,!1!==u){r.next=7;break}return r.abrupt("return",v);case 7:if(b=v.RESPONSE,S=b.RETURN_CODE,m=b.RETURN_DESC,E=b.RETURN_DATA,!(("E0MI0007"===S||"string"==typeof m&&~m.indexOf("User_Token"))&&t<=3)){r.next=16;break}return r.next=11,this.getUserInfoEx();case 11:return _=r.sent,T=_.external_token,logger(["ssdpRequestApp请求失败,尝试重新请求",S,m,T,t]),this.ssdpApp.setUserToken(T),r.abrupt("return",this.ssdpRequestApp(e,++t));case 16:return O="S"===S.charAt(0)||"MS000A000"===S?"resolve":"reject",r.abrupt("return",Promise[O]({RETURN_CODE:S,RETURN_DESC:m,RETURN_DATA:E}));case 18:case"end":return r.stop()}}),r,this)})))}},{key:"getBaseInfoByNative",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var r,n,o,i,a,s,c,u,l=this;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.isLocal){e.next=4;break}return r=mock(t.env),n=r.sys,(o=r.user).open_id=this.devUser,e.abrupt("return",Promise.resolve([n,o]));case 4:if(!this.isLogin){e.next=6;break}return e.abrupt("return",Promise.all([staticJsBridge("device.base.getSystemInfo",{}),staticJsBridge("biz.account.ka_info",{})]));case 6:return e.next=8,this.getBaseInfoByCache();case 8:if(i=e.sent,a=i.sys,s=i.user,c=[],u=!a||!s,logger(["从缓存中获取基础信息",a,s]),logger(["是否启用异步鉴权",!u]),!u){e.next=20;break}return e.next=18,identity(this.appId,this.appSecret,this.jsApiList);case 18:e.next=21;break;case 20:identity(this.appId,this.appSecret,this.jsApiList,(function(e){var t=e.success,r=e.error;l.isJssdkReady=t,l.jssdkIdentityError=r}));case 21:return this.isJssdkReady=!0,c.push(a?Promise.resolve(a):this.getSystemInfo()),c.push(s?Promise.resolve(s):this.getUserInfoEx()),logger(["调用原生获取基本参数",c]),e.abrupt("return",Promise.all(c));case 26:case"end":return e.stop()}}),e,this)})))}},{key:"getSystemInfo",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var r,n,o,i,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,jssdk("device.base.getSystemInfo");case 2:if(r=e.sent,t.isIndexedDB){e.next=5;break}return e.abrupt("return",r);case 5:return e.prev=5,e.next=8,Factory.getIndexedDB().initReady();case 8:n=e.sent,o=getConstant("cacheKeys.indexeddb.store.sys"),i=n.transaction(o,"readwrite"),a=i.objectStore(o),logger(["getSystemInfo",r]),put(a,Object.assign(Object.assign({},r),{id:o})),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(5),logger(["更新IndexedDB【sys】失败",e.t0],"warn");case 19:return e.abrupt("return",r);case 20:case"end":return e.stop()}}),e,null,[[5,16]])})))}},{key:"getUserInfoEx",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var r,n,o,i,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,jssdk("biz.user.getUserInfoEx");case 2:if(r=e.sent,t.isIndexedDB){e.next=5;break}return e.abrupt("return",r);case 5:return e.prev=5,e.next=8,Factory.getIndexedDB().initReady();case 8:n=e.sent,o=getConstant("cacheKeys.indexeddb.store.user"),i=n.transaction(o,"readwrite"),a=i.objectStore(o),logger(["getUserInfoEx",r]),put(a,Object.assign(Object.assign({},r),{id:o})),e.next=19;break;case 16:e.prev=16,e.t0=e.catch(5),logger(["更新IndexedDB【UserInfoEx】失败",e.t0],"warn");case 19:return e.abrupt("return",r);case 20:case"end":return e.stop()}}),e,null,[[5,16]])})))}},{key:"getBaseInfoByCache",value:function(){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function e(){var r,n,o,i,a,s,c,u,l,p;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.isIndexedDB&&this.domain.includes(location.origin)&&navigator.userAgent.match(/iPhone/i)){e.next=3;break}return logger(["不启用缓存中获取基础信息"],"warn"),e.abrupt("return",Promise.resolve({}));case 3:return e.prev=3,r=getConstant("cacheKeys.indexeddb.store.sys"),n=getConstant("cacheKeys.indexeddb.store.user"),e.next=8,Factory.getIndexedDB().initReady();case 8:return o=e.sent,i=o.transaction([r,n],"readwrite"),a=i.objectStore(r),s=i.objectStore(n),e.next=14,Promise.all([get$1(a,r),get$1(s,n)]);case 14:return c=e.sent,u=_slicedToArray(c,2),l=u[0],p=u[1],e.abrupt("return",{sys:l,user:p});case 21:return e.prev=21,e.t0=e.catch(3),e.abrupt("return",Promise.resolve({}));case 24:case"end":return e.stop()}}),e,this,[[3,21]])})))}},{key:"getHrInfo",value:function(e){return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function r(){var n,o,i,a,s,c,u,l;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.getHrInfoByCache(e);case 2:if(logger(["getHrInfoByCache",n=r.sent]),!n){r.next=6;break}return r.abrupt("return",new HrInfoMode(n));case 6:return r.next=8,this.ssdpRequestApp(Object.assign(Object.assign({},getConstant("ssdp.api.".concat(t.env,".hrInfo"))),{data:{BUS_DATA:base64.encode(JSON.stringify({ldap:e,isRequireAvatar:!0===this.isAvatar?"1":"0"}))}}));case 8:if(o=r.sent,i=o.RETURN_DATA,(a=new HrInfoMode(JSON.parse(base64.decode(i)))).employeeId){r.next=13;break}return r.abrupt("return",a);case 13:return r.prev=13,r.next=16,Factory.getIndexedDB().initReady();case 16:s=r.sent,c=getConstant("cacheKeys.indexeddb.store.hrInfo"),u=s.transaction(c,"readwrite"),l=u.objectStore(c),e&&(logger(["更新 HrInfo",a]),put(l,Object.assign(Object.assign({},a),{id:e,expires:(new Date).getTime()+864e5}))),r.next=26;break;case 23:r.prev=23,r.t0=r.catch(13),logger(["更新IndexedDB【hrInfo】失败",r.t0],"warn");case 26:return r.abrupt("return",a);case 27:case"end":return r.stop()}}),r,this,[[13,23]])})))}},{key:"getHrInfoByCache",value:function(e){if(logger(["从缓存中获取Hr信息"]),!t.isIndexedDB||!1===this.isHrInfoCache)return Promise.resolve();var r=getConstant("cacheKeys.indexeddb.store.hrInfo");return logger(["从缓存中获取Hr信息 storeKey",r]),Factory.getIndexedDB().initReady().then((function(t){logger(["从缓存中获取Hr信息 db",t]);var n=t.transaction(r,"readwrite");logger(["从缓存中获取Hr信息 transaction",n]);var o=n.objectStore(r);return logger(["从缓存中获取Hr信息 store",o]),get$1(o,e)})).then((function(e){if(logger(["从缓存中获取Hr信息 res",e]),!e)return Promise.resolve();var t=e.expires-(new Date).getTime();return logger(["HrInfo 缓存有效期",t/1e3/60/60]),Promise.resolve(t>0?e:void 0)})).catch((function(e){return logger(["获取IndexedDB【getHrInfoByCache】失败",e],"warn"),Promise.resolve()}))}},{key:"getAvatarByUserId",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10;return __awaiter(this,void 0,void 0,regeneratorRuntime.mark((function n(){var o,i,a,s,c,u,l,p,f,d,h,y,g,v;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,this.getAvatarByCache(e);case 2:if(o=n.sent,i=o.includes,0!==o.exclusion.length){n.next=7;break}return n.abrupt("return",i);case 7:for(a=Math.ceil(e.length/r),s=[],c=1;c<=a;c++)u=(c-1)*r,s.push(this.ssdpRequestApp(Object.assign(Object.assign({},getConstant("ssdp.api.".concat(t.env,".avatar"))),{data:{BUS_DATA:base64.encode(JSON.stringify({ldap:e.slice(u,u+r)}))}})));return n.next=12,Promise.all(s);case 12:for(l=n.sent,p=[],f=!0,d=!1,h=void 0,n.prev=17,y=l[Symbol.iterator]();!(f=(g=y.next()).done);f=!0)v=g.value,p=p.concat(JSON.parse(base64.decode(v.RETURN_DATA)));n.next=25;break;case 21:n.prev=21,n.t0=n.catch(17),d=!0,h=n.t0;case 25:n.prev=25,n.prev=26,f||null==y.return||y.return();case 28:if(n.prev=28,!d){n.next=31;break}throw h;case 31:return n.finish(28);case 32:return n.finish(25);case 33:return this.addAvatarCache(p),n.abrupt("return",i.concat(p));case 35:case"end":return n.stop()}}),n,this,[[17,21,25,33],[26,,28,32]])})))}},{key:"addAvatarCache",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=getConstant("cacheKeys.indexeddb.store.avatar");Factory.getIndexedDB().initReady().then((function(r){for(var n=r.transaction(t,"readwrite").objectStore(t),o=0;o0&&void 0!==arguments[0]?arguments[0]:[],t=getConstant("cacheKeys.indexeddb.store.avatar");return Factory.getIndexedDB().initReady().then((function(e){return get$1(e.transaction(t,"readwrite").objectStore(t))})).then((function(t){if(!t)return Promise.resolve({exclusion:[]});for(var r=[],n=[],o=function(o){var i=e[o],a=t.findIndex((function(e){return e.id===i})),s=~a?t[a]:void 0;s&&s.expires-(new Date).getTime()>0?r.push({imageUrl:s.imageUrl,account:s.id}):n.push(i)},i=0;i + + + + 单点登录-回填cookie + + + + \ No newline at end of file diff --git a/src/main/resources/crc.properties b/src/main/resources/crc.properties new file mode 100644 index 0000000..74f62f8 --- /dev/null +++ b/src/main/resources/crc.properties @@ -0,0 +1,5 @@ +env=uat +devUser=1 +isLocal=true +appId=xxxxxxxxxxxxxxxx +appSecret=xxxxxxxxxxxxxxxxxxx \ No newline at end of file